From b720b5a60947df2bfdc8d9811bf2592f69bc5dac Mon Sep 17 00:00:00 2001 From: JiuqingSong Date: Fri, 8 Sep 2023 20:54:31 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20f3f68?= =?UTF-8?q?3159d616fe4ae22207ad5cfa05ed0491956=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coverage/index.html | 342 +- coverage/lcov.info | 19117 ++++++++-------- .../context/createDomToModelContext.ts.html | 12 +- .../context/defaultProcessors.ts.html | 2 +- .../lib/domToModel/context/index.html | 2 +- .../lib/domToModel/domToContentModel.ts.html | 12 +- .../lib/domToModel/index.html | 2 +- .../processors/blockProcessor.ts.html | 26 +- .../domToModel/processors/brProcessor.ts.html | 8 +- .../processors/childProcessor.ts.html | 36 +- .../processors/codeProcessor.ts.html | 2 +- .../processors/delimiterProcessor.ts.html | 2 +- .../processors/elementProcessor.ts.html | 12 +- .../processors/entityProcessor.ts.html | 2 +- .../processors/fontProcessor.ts.html | 2 +- .../formatContainerProcessor.ts.html | 34 +- .../processors/generalProcessor.ts.html | 2 +- .../processors/headingProcessor.ts.html | 2 +- .../domToModel/processors/hrProcessor.ts.html | 2 +- .../processors/imageProcessor.ts.html | 34 +- .../lib/domToModel/processors/index.html | 2 +- .../processors/knownElementProcessor.ts.html | 60 +- .../processors/linkProcessor.ts.html | 2 +- .../processors/listItemProcessor.ts.html | 2 +- .../processors/listProcessor.ts.html | 2 +- .../domToModel/processors/pProcessor.ts.html | 16 +- .../processors/tableProcessor.ts.html | 164 +- .../processors/textProcessor.ts.html | 34 +- .../utils/addSelectionMarker.ts.html | 8 +- .../domToModel/utils/areSameFormats.ts.html | 10 +- .../utils/getBoundingClientRect.ts.html | 4 +- .../domToModel/utils/getDefaultStyle.ts.html | 6 +- .../utils/getRegularSelectionOffsets.ts.html | 10 +- .../lib/domToModel/utils/index.html | 2 +- .../domToModel/utils/isBlockElement.ts.html | 6 +- .../lib/domToModel/utils/parseFormat.ts.html | 8 +- .../lib/domToModel/utils/stackFormat.ts.html | 56 +- .../lib/domUtils/index.html | 2 +- .../lib/domUtils/isNodeOfType.ts.html | 4 +- .../lib/domUtils/metadata/index.html | 2 +- .../metadata/updateListMetadata.ts.html | 4 +- .../domUtils/metadata/updateMetadata.ts.html | 26 +- .../block/directionFormatHandler.ts.html | 12 +- .../block/displayFormatHandler.ts.html | 12 +- .../block/htmlAlignFormatHandler.ts.html | 12 +- .../lib/formatHandlers/block/index.html | 2 +- .../block/lineHeightFormatHandler.ts.html | 12 +- .../block/marginFormatHandler.ts.html | 26 +- .../block/paddingFormatHandler.ts.html | 18 +- .../block/textAlignFormatHandler.ts.html | 24 +- .../block/whiteSpaceFormatHandler.ts.html | 14 +- .../backgroundColorFormatHandler.ts.html | 12 +- .../common/borderBoxFormatHandler.ts.html | 6 +- .../common/borderFormatHandler.ts.html | 24 +- .../common/boxShadowFormatHandler.ts.html | 6 +- .../common/datasetFormatHandler.ts.html | 12 +- .../common/floatFormatHandler.ts.html | 8 +- .../common/idFormatHandler.ts.html | 6 +- .../lib/formatHandlers/common/index.html | 10 +- .../common/sizeFormatHandler.ts.html | 56 +- .../common/verticalAlignFormatHandler.ts.html | 22 +- .../common/wordBreakFormatHandler.ts.html | 8 +- .../defaultFormatHandlers.ts.html | 30 +- .../lib/formatHandlers/index.html | 2 +- .../lib/formatHandlers/list/index.html | 2 +- .../listItemMetadataFormatHandler.ts.html | 2 +- .../list/listItemThreadFormatHandler.ts.html | 2 +- .../listLevelMetadataFormatHandler.ts.html | 8 +- .../list/listLevelThreadFormatHandler.ts.html | 20 +- .../listStylePositionFormatHandler.ts.html | 4 +- .../segment/boldFormatHandler.ts.html | 26 +- .../segment/fontFamilyFormatHandler.ts.html | 12 +- .../segment/fontSizeFormatHandler.ts.html | 26 +- .../lib/formatHandlers/segment/index.html | 2 +- .../segment/italicFormatHandler.ts.html | 18 +- .../letterSpacingFormatHandler.ts.html | 12 +- .../segment/linkFormatHandler.ts.html | 16 +- .../segment/strikeFormatHandler.ts.html | 8 +- .../superOrSubScriptFormatHandler.ts.html | 12 +- .../segment/textColorFormatHandler.ts.html | 14 +- .../segment/underlineFormatHandler.ts.html | 16 +- .../lib/formatHandlers/table/index.html | 2 +- .../table/tableLayoutFormatHandler.ts.html | 12 +- .../table/tableSpacingFormatHandler.ts.html | 14 +- .../textColorOnTableCellFormatHandler.ts.html | 6 +- .../lib/formatHandlers/utils/color.ts.html | 26 +- .../utils/defaultStyles.ts.html | 2 +- .../lib/formatHandlers/utils/dir.ts.html | 8 +- .../lib/formatHandlers/utils/index.html | 2 +- .../utils/parseValueWithUnit.ts.html | 26 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 30 +- .../lib/modelApi/block/index.html | 2 +- .../block/setParagraphNotImplicit.ts.html | 4 +- .../lib/modelApi/common/addBlock.ts.html | 4 +- .../lib/modelApi/common/addDecorators.ts.html | 10 +- .../lib/modelApi/common/addSegment.ts.html | 24 +- .../lib/modelApi/common/hasSpacesOnly.ts.html | 4 +- .../lib/modelApi/common/index.html | 10 +- .../lib/modelApi/common/isEmpty.ts.html | 22 +- .../modelApi/common/isGeneralSegment.ts.html | 2 +- .../common/isWhiteSpacePreserved.ts.html | 4 +- .../common/normalizeContentModel.ts.html | 32 +- .../common/normalizeParagraph.ts.html | 30 +- .../modelApi/common/normalizeSegment.ts.html | 66 +- .../lib/modelApi/common/unwrapBlock.ts.html | 2 +- .../lib/modelApi/creators/createBr.ts.html | 4 +- .../createContentModelDocument.ts.html | 10 +- .../modelApi/creators/createDivider.ts.html | 2 +- .../modelApi/creators/createEntity.ts.html | 4 +- .../creators/createFormatContainer.ts.html | 4 +- .../creators/createGeneralBlock.ts.html | 2 +- .../creators/createGeneralSegment.ts.html | 2 +- .../lib/modelApi/creators/createImage.ts.html | 4 +- .../modelApi/creators/createListItem.ts.html | 6 +- .../modelApi/creators/createListLevel.ts.html | 4 +- .../modelApi/creators/createParagraph.ts.html | 18 +- .../creators/createParagraphDecorator.ts.html | 4 +- .../creators/createSelectionMarker.ts.html | 4 +- .../lib/modelApi/creators/createTable.ts.html | 10 +- .../modelApi/creators/createTableCell.ts.html | 8 +- .../lib/modelApi/creators/createText.ts.html | 4 +- .../lib/modelApi/creators/index.html | 2 +- .../lib/modelToDom/contentModelToDom.ts.html | 58 +- .../context/createModelToDomContext.ts.html | 6 +- .../defaultContentModelHandlers.ts.html | 2 +- .../lib/modelToDom/context/index.html | 2 +- .../modelToDom/handlers/handleBlock.ts.html | 24 +- .../handlers/handleBlockGroupChildren.ts.html | 28 +- .../lib/modelToDom/handlers/handleBr.ts.html | 12 +- .../modelToDom/handlers/handleDivider.ts.html | 2 +- .../modelToDom/handlers/handleEntity.ts.html | 2 +- .../handlers/handleFormatContainer.ts.html | 34 +- .../handlers/handleGeneralModel.ts.html | 2 +- .../modelToDom/handlers/handleImage.ts.html | 64 +- .../modelToDom/handlers/handleList.ts.html | 48 +- .../handlers/handleListItem.ts.html | 2 +- .../handlers/handleParagraph.ts.html | 66 +- .../modelToDom/handlers/handleSegment.ts.html | 26 +- .../handlers/handleSegmentDecorator.ts.html | 22 +- .../modelToDom/handlers/handleTable.ts.html | 110 +- .../modelToDom/handlers/handleText.ts.html | 12 +- .../lib/modelToDom/handlers/index.html | 30 +- .../lib/modelToDom/index.html | 30 +- .../lib/modelToDom/optimizers/index.html | 2 +- .../modelToDom/optimizers/mergeNode.ts.html | 30 +- .../modelToDom/optimizers/optimize.ts.html | 12 +- .../optimizers/removeUnnecessarySpan.ts.html | 24 +- .../lib/modelToDom/utils/applyFormat.ts.html | 6 +- .../utils/handleSegmentCommon.ts.html | 14 +- .../lib/modelToDom/utils/index.html | 2 +- .../utils/reuseCachedElement.ts.html | 2 +- .../lib/modelToDom/utils/stackFormat.ts.html | 18 +- .../lib/domToModel/processors/index.html | 2 +- .../processors/tablePreProcessor.ts.html | 2 +- .../lib/domUtils/borderValues.ts.html | 2 +- .../lib/domUtils/index.html | 2 +- .../lib/domUtils/metadata/index.html | 2 +- .../metadata/updateImageMetadata.ts.html | 2 +- .../metadata/updateTableCellMetadata.ts.html | 2 +- .../metadata/updateTableMetadata.ts.html | 2 +- .../lib/domUtils/stringUtil.ts.html | 2 +- .../lib/editor/ContentModelEditor.ts.html | 26 +- .../editor/coreApi/createContentModel.ts.html | 14 +- .../coreApi/createEditorContext.ts.html | 24 +- .../coreApi/getSelectionRangeEx.ts.html | 6 +- .../lib/editor/coreApi/index.html | 2 +- .../editor/coreApi/setContentModel.ts.html | 12 +- .../editor/coreApi/switchShadowEdit.ts.html | 2 +- .../ContentModelCopyPastePlugin.ts.html | 168 +- .../ContentModelTypeInContainerPlugin.ts.html | 2 +- .../lib/editor/corePlugins/index.html | 42 +- .../createContentModelEditorCore.ts.html | 50 +- .../lib/editor/index.html | 2 +- .../lib/editor/isContentModelEditor.ts.html | 2 +- .../plugins/ContentModelEditPlugin.ts.html | 22 +- .../plugins/ContentModelFormatPlugin.ts.html | 16 +- .../ContentModelPastePlugin.ts.html | 44 +- .../plugins/PastePlugin/Excel/index.html | 10 +- .../processPastedContentFromExcel.ts.html | 48 +- .../plugins/PastePlugin/PowerPoint/index.html | 2 +- ...processPastedContentFromPowerPoint.ts.html | 2 +- .../PastePlugin/WacComponents/index.html | 2 +- .../processPastedContentWacComponents.ts.html | 50 +- .../PastePlugin/WordDesktop/index.html | 38 +- ...rocessPastedContentFromWordDesktop.ts.html | 58 +- .../WordDesktop/processWordComments.ts.html | 4 +- .../WordDesktop/processWordLists.ts.html | 26 +- .../lib/editor/plugins/PastePlugin/index.html | 2 +- .../PastePlugin/utils/addParser.ts.html | 12 +- .../utils/deprecatedColorParser.ts.html | 16 +- .../plugins/PastePlugin/utils/index.html | 2 +- .../PastePlugin/utils/linkParser.ts.html | 2 +- .../PastePlugin/utils/setProcessor.ts.html | 8 +- .../lib/editor/plugins/index.html | 2 +- .../utils/handleKeyboardEventCommon.ts.html | 2 +- .../lib/editor/utils/index.html | 2 +- .../block/getLeafSiblingBlock.ts.html | 2 +- .../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/cloneModel.ts.html | 267 +- .../getClosestAncestorBlockGroupIndex.ts.html | 14 +- .../lib/modelApi/common/index.html | 52 +- .../common/isBlockGroupOfType.ts.html | 2 +- .../lib/modelApi/common/mergeModel.ts.html | 151 +- .../common/retrieveModelFormatState.ts.html | 2 +- .../lib/modelApi/common/wrapBlock.ts.html | 2 +- .../lib/modelApi/edit/deleteSelection.ts.html | 16 +- .../deleteAllSegmentBefore.ts.html | 2 +- .../deleteCollapsedSelection.ts.html | 2 +- .../deleteSteps/deleteWordSelection.ts.html | 2 +- .../lib/modelApi/edit/deleteSteps/index.html | 2 +- .../lib/modelApi/edit/index.html | 2 +- .../edit/utils/createInsertPoint.ts.html | 4 +- .../modelApi/edit/utils/deleteBlock.ts.html | 2 +- .../utils/deleteExpandedSelection.ts.html | 50 +- .../modelApi/edit/utils/deleteSegment.ts.html | 62 +- .../edit/utils/deleteSingleChar.ts.html | 2 +- .../lib/modelApi/edit/utils/index.html | 30 +- .../lib/modelApi/entity/index.html | 2 +- .../modelApi/entity/insertEntityModel.ts.html | 2 +- .../lib/modelApi/format/index.html | 2 +- .../lib/modelApi/format/pendingFormat.ts.html | 18 +- .../image/applyImageBorderFormat.ts.html | 2 +- .../lib/modelApi/image/index.html | 2 +- .../list/findListItemsInSameThread.ts.html | 2 +- .../lib/modelApi/list/index.html | 2 +- .../lib/modelApi/list/setListType.ts.html | 2 +- .../selection/adjustSegmentSelection.ts.html | 2 +- .../selection/adjustWordSelection.ts.html | 2 +- .../selection/collapseTableSelection.ts.html | 2 +- .../selection/collectSelections.ts.html | 2 +- .../selection/getSelectionRootNode.ts.html | 2 +- .../lib/modelApi/selection/index.html | 2 +- .../selection/iterateSelections.ts.html | 56 +- .../modelApi/selection/setSelection.ts.html | 2 +- .../lib/modelApi/table/alignTable.ts.html | 2 +- .../lib/modelApi/table/alignTableCell.ts.html | 2 +- .../modelApi/table/applyTableFormat.ts.html | 2 +- .../lib/modelApi/table/canMergeCells.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 +- .../modelApi/table/getSelectedCells.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 +- .../lib/modelApi/table/normalizeTable.ts.html | 2 +- .../table/setTableCellBackgroundColor.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 +- .../editing/handleKeyDownEvent.ts.html | 2 +- .../lib/publicApi/editing/index.html | 2 +- .../lib/publicApi/entity/index.html | 6 +- .../lib/publicApi/entity/insertEntity.ts.html | 21 +- .../format/applyPendingFormat.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 +- .../selection/getSelectedSegments.ts.html | 2 +- .../selection/hasSelectionInBlock.ts.html | 2 +- .../hasSelectionInBlockGroup.ts.html | 2 +- .../selection/hasSelectionInSegment.ts.html | 2 +- .../lib/publicApi/selection/index.html | 2 +- .../lib/publicApi/table/index.html | 2 +- .../publicApi/table/setTableCellShade.ts.html | 2 +- .../utils/formatImageWithContentModel.ts.html | 2 +- .../formatParagraphWithContentModel.ts.html | 2 +- .../formatSegmentWithContentModel.ts.html | 2 +- .../utils/formatWithContentModel.ts.html | 98 +- .../lib/publicApi/utils/index.html | 44 +- .../lib/publicApi/utils/paste.ts.html | 96 +- .../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/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 +- .../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 | 18 +- .../lib/coreApi/getContent.ts.html | 44 +- .../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 | 68 +- .../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 | 16 +- .../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 | 76 +- .../lib/corePlugins/ImageSelection.ts.html | 14 +- .../lib/corePlugins/LifecyclePlugin.ts.html | 126 +- .../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 | 46 +- .../utils/forEachSelectedCell.ts.html | 2 +- .../lib/corePlugins/utils/index.html | 2 +- .../utils/inlineEntityOnPluginEvent.ts.html | 2 +- .../utils/removeCellsOutsideSelection.ts.html | 2 +- .../lib/editor/DarkColorHandlerImpl.ts.html | 56 +- .../lib/editor/Editor.ts.html | 6 +- .../lib/editor/EditorBase.ts.html | 311 +- .../lib/editor/createEditorCore.ts.html | 30 +- .../lib/editor/index.html | 38 +- .../lib/editor/isFeatureEnabled.ts.html | 4 +- .../roosterjs-editor-core/lib/index.html | 2 +- .../roosterjs-editor-core/lib/index.ts.html | 8 +- .../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 | 12 +- .../lib/clipboard/handleImagePaste.ts.html | 2 +- .../lib/clipboard/handleTextPaste.ts.html | 2 +- .../lib/clipboard/index.html | 2 +- .../retrieveMetadataFromClipboard.ts.html | 68 +- .../clipboard/sanitizePasteContent.ts.html | 10 +- .../lib/contentTraverser/BodyScoper.ts.html | 10 +- .../contentTraverser/ContentTraverser.ts.html | 90 +- .../PositionContentSearcher.ts.html | 76 +- .../SelectionBlockScoper.ts.html | 24 +- .../contentTraverser/SelectionScoper.ts.html | 62 +- .../lib/contentTraverser/index.html | 2 +- .../lib/delimiter/addDelimiters.ts.html | 2 +- .../delimiter/getDelimiterFromElement.ts.html | 8 +- .../lib/delimiter/index.html | 2 +- .../lib/edit/adjustInsertPosition.ts.html | 132 +- .../lib/edit/deleteSelectedContent.ts.html | 2 +- .../lib/edit/getTextContent.ts.html | 2 +- .../roosterjs-editor-dom/lib/edit/index.html | 38 +- .../lib/entity/commitEntity.ts.html | 10 +- .../lib/entity/entityPlaceholderUtils.ts.html | 42 +- .../lib/entity/getEntityFromElement.ts.html | 22 +- .../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 | 212 +- .../chainSanitizerCallback.ts.html | 6 +- .../lib/htmlSanitizer/cloneObject.ts.html | 6 +- .../createDefaultHtmlSanitizerOptions.ts.html | 4 +- .../htmlSanitizer/getAllowedValues.ts.html | 40 +- .../getInheritableStyles.ts.html | 14 +- .../getPredefinedCssForElement.ts.html | 6 +- .../lib/htmlSanitizer/index.html | 2 +- .../htmlSanitizer/processCssVariable.ts.html | 4 +- .../roosterjs-editor-dom/lib/index.html | 10 +- .../roosterjs-editor-dom/lib/index.ts.html | 138 +- .../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 | 78 +- .../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 | 14 +- .../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 | 8 +- .../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 | 34 +- .../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 | 2 +- .../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 | 4 +- .../lib/utils/moveChildNodes.ts.html | 12 +- .../lib/utils/normalizeRect.ts.html | 2 +- .../lib/utils/parseColor.ts.html | 2 +- .../lib/utils/queryElements.ts.html | 46 +- .../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/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 +- .../lib/pluginUtils/index.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 | 8 +- .../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 | 56 +- .../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 | 10 +- .../tryToConvertGifToPng.ts.html | 2 +- .../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 | 30 +- .../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 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 2 +- .../lib/browser/index.html | 2 +- .../lib/browser/index.ts.html | 2 +- .../lib/compatibleEnum/Alignment.ts.html | 2 +- .../lib/compatibleEnum/BulletListType.ts.html | 2 +- .../lib/compatibleEnum/Capitalization.ts.html | 2 +- .../lib/compatibleEnum/ChangeSource.ts.html | 2 +- .../compatibleEnum/ClearFormatMode.ts.html | 2 +- .../ColorTransformDirection.ts.html | 2 +- .../compatibleEnum/ContentPosition.ts.html | 2 +- .../lib/compatibleEnum/ContentType.ts.html | 2 +- .../DarkModeDatasetNames.ts.html | 2 +- .../lib/compatibleEnum/DefinitionType.ts.html | 2 +- .../compatibleEnum/DelimiterClasses.ts.html | 2 +- .../lib/compatibleEnum/Direction.ts.html | 2 +- .../compatibleEnum/DocumentCommand.ts.html | 2 +- .../compatibleEnum/DocumentPosition.ts.html | 2 +- .../lib/compatibleEnum/EntityClasses.ts.html | 2 +- .../compatibleEnum/EntityOperation.ts.html | 2 +- .../ExperimentalFeatures.ts.html | 2 +- .../lib/compatibleEnum/FontSizeChange.ts.html | 2 +- .../lib/compatibleEnum/GetContentMode.ts.html | 2 +- .../compatibleEnum/ImageEditOperation.ts.html | 2 +- .../lib/compatibleEnum/Indentation.ts.html | 2 +- .../lib/compatibleEnum/Keys.ts.html | 2 +- .../KnownCreateElementDataIndex.ts.html | 2 +- .../KnownPasteSourceType.ts.html | 2 +- .../lib/compatibleEnum/ListType.ts.html | 2 +- .../lib/compatibleEnum/NodeType.ts.html | 2 +- .../compatibleEnum/NumberingListType.ts.html | 2 +- .../lib/compatibleEnum/PasteType.ts.html | 2 +- .../compatibleEnum/PluginEventType.ts.html | 2 +- .../lib/compatibleEnum/PositionType.ts.html | 2 +- .../lib/compatibleEnum/QueryScope.ts.html | 2 +- .../lib/compatibleEnum/RegionType.ts.html | 2 +- .../SelectionRangeTypes.ts.html | 2 +- .../compatibleEnum/TableBorderFormat.ts.html | 2 +- .../lib/compatibleEnum/TableOperation.ts.html | 2 +- .../lib/compatibleEnum/index.html | 2 +- .../lib/compatibleEnum/index.ts.html | 2 +- .../lib/compatibleTypes.ts.html | 2 +- .../lib/corePluginState/index.html | 2 +- .../lib/corePluginState/index.ts.html | 2 +- .../lib/enum/Alignment.ts.html | 2 +- .../lib/enum/BulletListType.ts.html | 2 +- .../lib/enum/Capitalization.ts.html | 2 +- .../lib/enum/ChangeSource.ts.html | 2 +- .../lib/enum/ClearFormatMode.ts.html | 2 +- .../lib/enum/ColorTransformDirection.ts.html | 2 +- .../lib/enum/ContentPosition.ts.html | 2 +- .../lib/enum/ContentType.ts.html | 2 +- .../lib/enum/DarkModeDatasetNames.ts.html | 2 +- .../lib/enum/DefinitionType.ts.html | 2 +- .../lib/enum/DelimiterClasses.ts.html | 2 +- .../lib/enum/Direction.ts.html | 2 +- .../lib/enum/DocumentCommand.ts.html | 2 +- .../lib/enum/DocumentPosition.ts.html | 2 +- .../lib/enum/EntityClasses.ts.html | 2 +- .../lib/enum/EntityOperation.ts.html | 2 +- .../lib/enum/ExperimentalFeatures.ts.html | 2 +- .../lib/enum/FontSizeChange.ts.html | 2 +- .../lib/enum/GetContentMode.ts.html | 2 +- .../lib/enum/ImageEditOperation.ts.html | 2 +- .../lib/enum/Indentation.ts.html | 2 +- .../lib/enum/Keys.ts.html | 2 +- .../enum/KnownCreateElementDataIndex.ts.html | 2 +- .../lib/enum/KnownPasteSourceType.ts.html | 2 +- .../lib/enum/ListType.ts.html | 2 +- .../lib/enum/NodeType.ts.html | 2 +- .../lib/enum/NumberingListType.ts.html | 2 +- .../lib/enum/PasteType.ts.html | 2 +- .../lib/enum/PluginEventType.ts.html | 2 +- .../lib/enum/PositionType.ts.html | 2 +- .../lib/enum/QueryScope.ts.html | 2 +- .../lib/enum/RegionType.ts.html | 2 +- .../lib/enum/SelectionRangeTypes.ts.html | 2 +- .../lib/enum/TableBorderFormat.ts.html | 2 +- .../lib/enum/TableOperation.ts.html | 2 +- .../lib/enum/index.html | 2 +- .../lib/enum/index.ts.html | 2 +- .../lib/event/index.html | 2 +- .../lib/event/index.ts.html | 2 +- .../roosterjs-editor-types/lib/index.html | 2 +- .../roosterjs-editor-types/lib/index.ts.html | 2 +- .../lib/interface/index.html | 2 +- .../lib/interface/index.ts.html | 2 +- .../lib/type/index.html | 2 +- .../lib/type/index.ts.html | 2 +- .../roosterjs/lib/createEditor.ts.html | 2 +- coverage/packages/roosterjs/lib/index.html | 2 +- coverage/packages/roosterjs/lib/index.ts.html | 2 +- docs/assets/js/search.js | 2 +- ...el_editor.contentmodelcopypasteplugin.html | 10 +- ...ntent_model_editor.contentmodeleditor.html | 146 +- ...t_model_editor.contentmodeleditplugin.html | 8 +- ...model_editor.contentmodelformatplugin.html | 8 +- ..._model_editor.contentmodelpasteplugin.html | 10 +- ...tor.contentmodeltypeincontainerplugin.html | 6 +- .../classes/roosterjs_editor_core.editor.html | 138 +- .../roosterjs_editor_core.editorbase.html | 138 +- ...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 | 30 +- .../roosterjs_editor_dom.vlistchain.html | 8 +- .../roosterjs_editor_dom.vlistitem.html | 36 +- docs/classes/roosterjs_editor_dom.vtable.html | 38 +- .../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 | 24 +- .../roosterjs_editor_plugins.imageresize.html | 28 +- .../roosterjs_editor_plugins.paste.html | 10 +- ...roosterjs_editor_plugins.pickerplugin.html | 12 +- ...rjs_editor_plugins.tablecellselection.html | 10 +- .../roosterjs_editor_plugins.tableresize.html | 10 +- .../roosterjs_editor_plugins.watermark.html | 10 +- .../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 +- ...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 +- ...osterjs_content_model_dom.nodetypemap.html | 16 +- ...roosterjs_content_model_editor.border.html | 6 +- ...ompatiblecontentmodelbeforepasteevent.html | 22 +- ...l_editor.contentmodelbeforepasteevent.html | 22 +- ...itor.contentmodelbeforepasteeventdata.html | 18 +- ...t_model_editor.contentmodelcoreapimap.html | 48 +- ...t_model_editor.contentmodeleditorcore.html | 32 +- ...odel_editor.contentmodeleditoroptions.html | 44 +- ..._model_editor.contentmodelformatstate.html | 74 +- ...js_content_model_editor.deletedentity.html | 4 +- ..._editor.formatwithcontentmodelcontext.html | 25 +- ..._editor.formatwithcontentmodeloptions.html | 12 +- ...tent_model_editor.icontentmodeleditor.html | 168 +- ...content_model_editor.imageformatstate.html | 10 +- ...tent_model_editor.insertentityoptions.html | 8 +- ...erjs_content_model_editor.insertpoint.html | 8 +- ...nt_model_editor.tableselectioncontext.html | 8 +- ...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 | 20 +- ...del_types.contentmodelformatcontainer.html | 14 +- ...ent_model_types.contentmodelformatmap.html | 42 +- ..._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 +- ...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.domtomodelcontext.html | 40 +- ...odel_types.domtomodeldecoratorcontext.html | 6 +- ...t_model_types.domtomodelformatcontext.html | 6 +- ...tent_model_types.domtomodellistformat.html | 6 +- ..._content_model_types.domtomodeloption.html | 8 +- ...odel_types.domtomodelselectioncontext.html | 4 +- ...ontent_model_types.domtomodelsettings.html | 10 +- ...rjs_content_model_types.editorcontext.html | 14 +- ...tent_model_types.formathandlertypemap.html | 68 +- ...l_types.modeltodomblockandsegmentnode.html | 4 +- ...content_model_types.modeltodomcontext.html | 36 +- ...t_model_types.modeltodomformatcontext.html | 4 +- ..._model_types.modeltodomimageselection.html | 2 +- ...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 +- ..._model_types.modeltodomtableselection.html | 6 +- ...sterjs_content_model_types.selectable.html | 2 +- ...rjs_editor_plugins.contextmenuoptions.html | 6 +- ...rjs_editor_plugins.onshowresizehandle.html | 2 +- ...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 | 4 +- ...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 | 14 +- ...oosterjs_editor_types.edgelinkpreview.html | 10 +- ...roosterjs_editor_types.editimageevent.html | 12 +- ...terjs_editor_types.editimageeventdata.html | 8 +- .../roosterjs_editor_types.editorcore.html | 20 +- .../roosterjs_editor_types.editoroptions.html | 40 +- .../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 | 70 +- ...ditor_types.genericcontenteditfeature.html | 8 +- ...rjs_editor_types.htmlsanitizeroptions.html | 22 +- ...sterjs_editor_types.icontenttraverser.html | 12 +- .../roosterjs_editor_types.ieditor.html | 160 +- ...rjs_editor_types.imagecontentmetadata.html | 6 +- ...osterjs_editor_types.imageeditoptions.html | 22 +- ...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 | 22 +- ...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 | 16 +- .../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.ribbonprops.html | 6 +- .../roosterjs_react.roosterprops.html | 44 +- .../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.html | 2 +- docs/modules/roosterjs_content_model_dom.html | 90 +- .../roosterjs_content_model_editor.html | 124 +- .../roosterjs_content_model_types.html | 144 +- docs/modules/roosterjs_editor_api.html | 86 +- docs/modules/roosterjs_editor_core.html | 4 +- docs/modules/roosterjs_editor_dom.html | 274 +- docs/modules/roosterjs_editor_plugins.html | 14 +- docs/modules/roosterjs_editor_types.html | 118 +- docs/modules/roosterjs_react.html | 144 +- rooster-content-model-min.js | 2 +- rooster-content-model-min.js.map | 2 +- rooster-min.js | 2 +- rooster-min.js.map | 2 +- 1147 files changed, 18768 insertions(+), 18410 deletions(-) diff --git a/coverage/index.html b/coverage/index.html index 0cf352e5759..a0a5096057d 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -23,30 +23,30 @@

All files

- 87.67% + 88.52% Statements - 15170/17303 + 15343/17333
- 75.04% + 75.86% Branches - 10383/13836 + 10507/13851
- 84.31% + 85.01% Functions - 2499/2964 + 2523/2968
- 87.4% + 88.26% Lines - 14297/16359 + 14463/16387
@@ -214,8 +214,8 @@

All files

100% 97/97 - 96.84% - 92/95 + 95.79% + 91/95 100% 25/25 100% @@ -304,8 +304,8 @@

All files

98.78% 162/164 - 94.78% - 127/134 + 95.52% + 128/134 100% 30/30 98.73% @@ -329,17 +329,17 @@

All files

packages-content-model/roosterjs-content-model-dom/lib/modelToDom - -
+ +
- 86.21% - 25/29 - 69.05% - 29/42 + 82.76% + 24/29 + 66.67% + 28/42 100% 3/3 - 85.71% - 24/28 + 82.14% + 23/28 @@ -359,17 +359,17 @@

All files

packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers - -
+ +
- 97.11% - 370/381 - 92.83% - 285/307 + 96.59% + 368/381 + 91.53% + 281/307 100% 26/26 - 96.95% - 350/361 + 96.4% + 348/361 @@ -478,18 +478,18 @@

All files

- packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins - -
+ packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins + +
- 79.46% - 89/112 - 54.84% - 34/62 - 63.33% - 19/30 - 79.63% - 86/108 + 80.51% + 95/118 + 58.57% + 41/70 + 64.52% + 20/31 + 80.53% + 91/113 @@ -529,8 +529,8 @@

All files

100% 35/35 - 93.94% - 31/33 + 87.88% + 29/33 100% 4/4 100% @@ -569,17 +569,17 @@

All files

packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop - -
+ +
- 99.11% - 111/112 - 92.55% - 87/94 - 100% - 16/16 - 99.1% - 110/111 + 95.54% + 107/112 + 91.49% + 86/94 + 87.5% + 14/16 + 95.5% + 106/111 @@ -629,17 +629,17 @@

All files

packages-content-model/roosterjs-content-model-editor/lib/modelApi/common - +
+ 98.42% + 436/443 + 89.79% + 343/382 + 98.73% + 78/79 98.35% - 417/424 - 89.92% - 339/377 - 98.72% - 77/78 - 98.27% - 398/405 + 416/423 @@ -674,17 +674,17 @@

All files

packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils - -
+ +
- 91.94% - 114/124 - 75.93% - 82/108 + 95.97% + 119/124 + 81.48% + 88/108 100% 8/8 - 91.94% - 114/124 + 95.97% + 119/124 @@ -815,7 +815,7 @@

All files

100% 28/28 100% - 20/20 + 18/18 100% 2/2 100% @@ -929,17 +929,17 @@

All files

packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils - -
+ +
- 97.06% - 132/136 - 88.79% - 95/107 - 95.45% - 21/22 - 97.6% - 122/125 + 96.43% + 135/140 + 87.16% + 95/109 + 95.83% + 23/24 + 96.9% + 125/129 @@ -989,17 +989,17 @@

All files

packages/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 @@ -1019,17 +1019,17 @@

All files

packages/roosterjs-editor-api/lib/utils - -
+ +
- 88.51% - 154/174 - 70.47% - 105/149 - 87.1% - 27/31 - 88.89% - 152/171 + 93.68% + 163/174 + 74.5% + 111/149 + 96.77% + 30/31 + 94.15% + 161/171 @@ -1049,17 +1049,17 @@

All files

packages/roosterjs-editor-core/lib/coreApi - -
+ +
- 95.04% - 690/726 - 86.92% - 638/734 - 93.88% - 92/98 - 95.03% - 650/684 + 96.28% + 699/726 + 87.6% + 643/734 + 94.9% + 93/98 + 96.35% + 659/684 @@ -1084,8 +1084,8 @@

All files

85.52% 709/829 - 69.37% - 573/826 + 69.25% + 572/826 86.21% 150/174 85.19% @@ -1109,17 +1109,17 @@

All files

packages/roosterjs-editor-core/lib/editor - +
- 85.46% - 341/399 - 74.84% - 232/310 - 82% - 82/100 - 84.7% - 321/379 + 85.75% + 343/400 + 74.36% + 232/312 + 83% + 83/100 + 85% + 323/380 @@ -1131,8 +1131,8 @@

All files

242/242 100% 0/0 - 78.79% - 104/132 + 80.3% + 106/132 100% 130/130 @@ -1199,17 +1199,17 @@

All files

packages/roosterjs-editor-dom/lib/edit - -
+ +
- 72.77% - 139/191 - 54.17% - 91/168 - 84.21% - 16/19 - 72.19% - 135/187 + 73.82% + 141/191 + 60.71% + 102/168 + 89.47% + 17/19 + 73.26% + 137/187 @@ -1294,8 +1294,8 @@

All files

94.54% 554/586 - 83.9% - 344/410 + 84.39% + 346/410 91.49% 86/94 95.14% @@ -1394,17 +1394,17 @@

All files

packages/roosterjs-editor-dom/lib/table - -
+ +
- 70.67% - 441/624 - 59.53% - 331/556 - 88.31% - 68/77 - 70.81% - 410/579 + 75.96% + 474/624 + 63.49% + 353/556 + 89.61% + 69/77 + 76.17% + 441/579 @@ -1484,17 +1484,17 @@

All files

packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features - -
+ +
- 67.37% - 545/809 - 57.38% - 490/854 - 67.48% - 110/163 - 66.92% - 526/786 + 73.55% + 595/809 + 61.01% + 521/854 + 71.78% + 117/163 + 73.03% + 574/786 @@ -1574,17 +1574,17 @@

All files

packages/roosterjs-editor-plugins/lib/plugins/ImageEdit - +
- 89.7% - 270/301 + 89.04% + 268/301 68.16% 167/245 - 82.61% - 38/46 - 89.08% - 253/284 + 78.26% + 36/46 + 88.38% + 251/284 @@ -1624,8 +1624,8 @@

All files

91.13% 113/124 - 81.08% - 60/74 + 78.38% + 58/74 89.47% 17/19 90.76% @@ -1799,17 +1799,17 @@

All files

packages/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 @@ -2105,7 +2105,7 @@

All files

diff --git a/coverage/lcov.info b/coverage/lcov.info index c097ac79792..caee9fb26a9 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -47,13 +47,13 @@ FN:51,(anonymous_43) FN:53,(anonymous_44) FNF:45 FNH:43 -FNDA:125,(anonymous_0) -FNDA:102,(anonymous_1) +FNDA:114,(anonymous_0) +FNDA:97,(anonymous_1) FNDA:0,(anonymous_2) FNDA:0,(anonymous_3) FNDA:10,(anonymous_4) FNDA:1,(anonymous_5) -FNDA:16,(anonymous_6) +FNDA:13,(anonymous_6) FNDA:10,(anonymous_7) FNDA:63,(anonymous_8) FNDA:9,(anonymous_9) @@ -61,80 +61,80 @@ FNDA:168,(anonymous_10) FNDA:8,(anonymous_11) FNDA:5,(anonymous_12) FNDA:1,(anonymous_13) -FNDA:83,(anonymous_14) +FNDA:84,(anonymous_14) FNDA:146,(anonymous_15) FNDA:72,(anonymous_16) -FNDA:974,(anonymous_17) -FNDA:260,(anonymous_18) +FNDA:967,(anonymous_17) +FNDA:261,(anonymous_18) FNDA:190,(anonymous_19) FNDA:723,(anonymous_20) -FNDA:576,(anonymous_21) +FNDA:577,(anonymous_21) FNDA:43,(anonymous_22) -FNDA:612,(anonymous_23) +FNDA:614,(anonymous_23) FNDA:3,(anonymous_24) FNDA:19,(anonymous_25) FNDA:8,(anonymous_26) -FNDA:23,(anonymous_27) +FNDA:29,(anonymous_27) FNDA:41,(anonymous_28) FNDA:140,(anonymous_29) FNDA:39,(anonymous_30) FNDA:7,(anonymous_31) FNDA:26,(anonymous_32) -FNDA:94,(anonymous_33) +FNDA:95,(anonymous_33) FNDA:119,(anonymous_34) FNDA:3,(anonymous_35) FNDA:117,(anonymous_36) -FNDA:69,(anonymous_37) +FNDA:70,(anonymous_37) FNDA:22,(anonymous_38) -FNDA:132,(anonymous_39) +FNDA:134,(anonymous_39) FNDA:52,(anonymous_40) -FNDA:447,(anonymous_41) -FNDA:55,(anonymous_42) +FNDA:441,(anonymous_41) +FNDA:40,(anonymous_42) FNDA:4,(anonymous_43) FNDA:18,(anonymous_44) -DA:1,126 -DA:2,103 +DA:1,115 +DA:2,98 DA:4,1 DA:5,1 DA:6,1 DA:7,11 DA:9,2 -DA:10,17 +DA:10,14 DA:11,11 DA:12,64 DA:13,10 DA:15,169 DA:16,6 DA:17,2 -DA:19,84 +DA:19,85 DA:20,147 DA:21,73 -DA:22,975 -DA:23,261 +DA:22,968 +DA:23,262 DA:24,191 DA:25,724 -DA:26,577 +DA:26,578 DA:27,44 -DA:28,613 +DA:28,615 DA:29,4 DA:30,20 DA:31,9 -DA:32,24 +DA:32,30 DA:33,42 DA:34,141 DA:36,40 DA:37,8 DA:38,27 -DA:39,95 +DA:39,96 DA:40,120 DA:41,4 DA:42,118 -DA:43,70 +DA:43,71 DA:44,23 -DA:46,133 +DA:46,135 DA:48,53 -DA:49,448 -DA:50,56 +DA:49,442 +DA:50,41 DA:51,5 DA:53,19 LF:45 @@ -147,22 +147,22 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToConten FN:19,domToContentModel FNF:1 FNH:1 -FNDA:147,domToContentModel +FNDA:136,domToContentModel DA:1,1 DA:2,1 DA:3,1 DA:19,1 -DA:25,147 -DA:26,147 -DA:28,147 -DA:30,147 -DA:32,147 +DA:25,136 +DA:26,136 +DA:28,136 +DA:30,136 +DA:32,136 LF:9 LH:9 -BRDA:25,0,0,92 -BRDA:25,0,1,55 -BRDA:25,1,0,147 -BRDA:25,1,1,147 +BRDA:25,0,0,86 +BRDA:25,0,1,50 +BRDA:25,1,0,136 +BRDA:25,1,1,136 BRF:4 BRH:4 end_of_record @@ -171,47 +171,47 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/cre FN:13,createDomToModelContext FNF:1 FNH:1 -FNDA:613,createDomToModelContext +FNDA:601,createDomToModelContext DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:18,613 -DA:60,613 +DA:18,601 +DA:60,601 DA:61,0 -DA:64,613 -DA:65,27 -DA:68,613 +DA:64,601 +DA:65,22 +DA:68,601 LF:10 LH:9 -BRDA:43,0,0,613 -BRDA:43,0,1,441 -BRDA:43,1,0,410 -BRDA:43,1,1,203 -BRDA:43,2,0,613 -BRDA:43,2,1,613 -BRDA:48,3,0,613 -BRDA:48,3,1,608 -BRDA:48,4,0,410 -BRDA:48,4,1,203 -BRDA:48,5,0,613 -BRDA:48,5,1,613 -BRDA:52,6,0,410 -BRDA:52,6,1,203 -BRDA:52,7,0,613 -BRDA:52,7,1,613 -BRDA:53,8,0,410 -BRDA:53,8,1,203 -BRDA:53,9,0,613 -BRDA:53,9,1,613 +BRDA:43,0,0,601 +BRDA:43,0,1,438 +BRDA:43,1,0,409 +BRDA:43,1,1,192 +BRDA:43,2,0,601 +BRDA:43,2,1,601 +BRDA:48,3,0,601 +BRDA:48,3,1,596 +BRDA:48,4,0,409 +BRDA:48,4,1,192 +BRDA:48,5,0,601 +BRDA:48,5,1,601 +BRDA:52,6,0,409 +BRDA:52,6,1,192 +BRDA:52,7,0,601 +BRDA:52,7,1,601 +BRDA:53,8,0,409 +BRDA:53,8,1,192 +BRDA:53,9,0,601 +BRDA:53,9,1,601 BRDA:60,10,0,0 -BRDA:60,10,1,613 -BRDA:60,11,0,557 -BRDA:60,11,1,56 -BRDA:60,12,0,613 -BRDA:60,12,1,613 -BRDA:64,13,0,27 -BRDA:64,13,1,586 +BRDA:60,10,1,601 +BRDA:60,11,0,550 +BRDA:60,11,1,51 +BRDA:60,12,0,601 +BRDA:60,12,1,601 +BRDA:64,13,0,22 +BRDA:64,13,1,579 BRF:28 BRH:27 end_of_record @@ -250,33 +250,33 @@ FN:16,blockProcessor FN:31,(anonymous_1) FNF:2 FNH:2 -FNDA:207,blockProcessor -FNDA:828,(anonymous_1) +FNDA:171,blockProcessor +FNDA:684,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:11,1 DA:16,1 -DA:22,207 -DA:23,207 -DA:25,207 -DA:27,207 -DA:29,207 -DA:31,207 -DA:32,828 -DA:33,151 -DA:37,207 -DA:38,203 -DA:45,203 -DA:48,207 +DA:22,171 +DA:23,171 +DA:25,171 +DA:27,171 +DA:29,171 +DA:31,171 +DA:32,684 +DA:33,51 +DA:37,171 +DA:38,167 +DA:45,167 +DA:48,171 LF:18 LH:18 -BRDA:22,0,0,77 -BRDA:22,0,1,130 -BRDA:32,1,0,151 -BRDA:32,1,1,677 -BRDA:37,2,0,203 +BRDA:22,0,0,58 +BRDA:22,0,1,113 +BRDA:32,1,0,51 +BRDA:32,1,1,633 +BRDA:37,2,0,167 BRDA:37,2,1,4 BRF:6 BRH:6 @@ -286,18 +286,18 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/ FN:8,(anonymous_0) FNF:1 FNH:1 -FNDA:31,(anonymous_0) +FNDA:23,(anonymous_0) DA:1,1 DA:2,1 DA:8,1 -DA:9,31 -DA:11,31 +DA:9,23 +DA:11,23 DA:12,0 -DA:15,31 +DA:15,23 LF:7 LH:6 BRDA:11,0,0,0 -BRDA:11,0,1,31 +BRDA:11,0,1,23 BRF:2 BRH:1 end_of_record @@ -308,53 +308,53 @@ FN:43,processChildNode FN:63,handleRegularSelection FNF:3 FNH:3 -FNDA:940,(anonymous_0) -FNDA:1205,processChildNode -FNDA:2138,handleRegularSelection +FNDA:817,(anonymous_0) +FNDA:1013,processChildNode +FNDA:1823,handleRegularSelection DA:1,1 DA:2,1 DA:3,1 DA:17,1 -DA:22,940 -DA:23,940 -DA:25,940 -DA:26,1195 -DA:28,1195 -DA:30,1195 -DA:33,940 +DA:22,817 +DA:23,817 +DA:25,817 +DA:26,1003 +DA:28,1003 +DA:30,1003 +DA:33,817 DA:43,1 -DA:48,1205 -DA:49,791 -DA:50,414 -DA:51,386 +DA:48,1013 +DA:49,652 +DA:50,361 +DA:51,333 DA:63,1 -DA:70,2138 -DA:71,29 -DA:73,29 -DA:76,2138 -DA:77,27 +DA:70,1823 +DA:71,24 +DA:73,24 +DA:76,1823 +DA:77,22 DA:78,2 -DA:80,27 +DA:80,22 LF:24 LH:24 -BRDA:48,0,0,791 -BRDA:48,0,1,414 -BRDA:48,1,0,1205 -BRDA:48,1,1,791 -BRDA:50,2,0,386 +BRDA:48,0,0,652 +BRDA:48,0,1,361 +BRDA:48,1,0,1013 +BRDA:48,1,1,652 +BRDA:50,2,0,333 BRDA:50,2,1,28 -BRDA:70,3,0,29 -BRDA:70,3,1,2109 -BRDA:76,4,0,27 -BRDA:76,4,1,2111 -BRDA:76,5,0,2138 -BRDA:76,5,1,27 +BRDA:70,3,0,24 +BRDA:70,3,1,1799 +BRDA:76,4,0,22 +BRDA:76,4,1,1801 +BRDA:76,5,0,1823 +BRDA:76,5,1,22 BRDA:76,6,0,0 -BRDA:76,6,1,27 -BRDA:76,7,0,27 -BRDA:76,7,1,27 +BRDA:76,6,1,22 +BRDA:76,7,0,22 +BRDA:76,7,1,22 BRDA:77,8,0,2 -BRDA:77,8,1,25 +BRDA:77,8,1,20 BRF:18 BRH:17 end_of_record @@ -406,31 +406,31 @@ FN:24,tryGetProcessorForEntity FN:31,tryGetProcessorForDelimiter FNF:3 FNH:3 -FNDA:659,(anonymous_0) -FNDA:659,tryGetProcessorForEntity -FNDA:657,tryGetProcessorForDelimiter +FNDA:541,(anonymous_0) +FNDA:541,tryGetProcessorForEntity +FNDA:539,tryGetProcessorForDelimiter DA:1,1 DA:14,1 -DA:15,659 -DA:16,659 -DA:21,659 -DA:25,659 -DA:32,657 +DA:15,541 +DA:16,541 +DA:21,541 +DA:25,541 +DA:32,539 LF:7 LH:7 -BRDA:16,0,0,659 -BRDA:16,0,1,657 -BRDA:16,0,2,656 -BRDA:16,0,3,12 -BRDA:16,0,4,10 +BRDA:16,0,0,541 +BRDA:16,0,1,539 +BRDA:16,0,2,538 +BRDA:16,0,3,6 +BRDA:16,0,4,4 BRDA:16,0,5,2 BRDA:27,1,0,2 -BRDA:27,1,1,657 -BRDA:25,2,0,659 -BRDA:25,2,1,277 -BRDA:25,2,2,658 +BRDA:27,1,1,539 +BRDA:25,2,0,541 +BRDA:25,2,1,185 +BRDA:25,2,2,540 BRDA:32,3,0,1 -BRDA:32,3,1,656 +BRDA:32,3,1,538 BRF:13 BRH:13 end_of_record @@ -537,10 +537,10 @@ FN:54,(anonymous_2) FN:86,shouldFallbackToParagraph FNF:4 FNH:4 -FNDA:45,(anonymous_0) -FNDA:45,(anonymous_1) -FNDA:180,(anonymous_2) -FNDA:45,shouldFallbackToParagraph +FNDA:39,(anonymous_0) +FNDA:39,(anonymous_1) +FNDA:156,(anonymous_2) +FNDA:39,shouldFallbackToParagraph DA:1,1 DA:2,1 DA:3,1 @@ -550,44 +550,44 @@ DA:6,1 DA:7,1 DA:20,1 DA:30,1 -DA:35,45 -DA:36,45 -DA:37,45 -DA:39,45 -DA:43,45 -DA:46,45 -DA:49,45 -DA:54,45 -DA:55,180 -DA:58,45 -DA:60,45 +DA:35,39 +DA:36,39 +DA:37,39 +DA:39,39 +DA:43,39 +DA:46,39 +DA:49,39 +DA:54,39 +DA:55,156 +DA:58,39 +DA:60,39 DA:61,2 -DA:64,45 +DA:64,39 DA:67,6 DA:69,6 DA:70,1 DA:75,6 DA:76,6 DA:77,6 -DA:79,39 -DA:83,45 -DA:87,45 -DA:89,45 +DA:79,33 +DA:83,39 +DA:87,39 +DA:89,39 LF:32 LH:32 -BRDA:47,0,0,43 +BRDA:47,0,0,37 BRDA:47,0,1,2 BRDA:60,1,0,2 -BRDA:60,1,1,43 -BRDA:60,2,0,45 -BRDA:60,2,1,8 +BRDA:60,1,1,37 +BRDA:60,2,0,39 +BRDA:60,2,1,7 BRDA:64,3,0,6 -BRDA:64,3,1,39 +BRDA:64,3,1,33 BRDA:69,4,0,1 BRDA:69,4,1,5 -BRDA:90,5,0,45 -BRDA:90,5,1,30 -BRDA:90,5,2,9 +BRDA:90,5,0,39 +BRDA:90,5,1,24 +BRDA:90,5,2,8 BRDA:90,5,3,6 BRF:14 BRH:14 @@ -715,50 +715,50 @@ FN:12,(anonymous_0) FN:13,(anonymous_1) FNF:2 FNH:2 -FNDA:16,(anonymous_0) -FNDA:16,(anonymous_1) +FNDA:13,(anonymous_0) +FNDA:13,(anonymous_1) DA:1,1 DA:2,1 DA:4,1 DA:5,1 DA:7,1 DA:12,1 -DA:13,16 -DA:14,16 -DA:16,16 -DA:17,16 -DA:18,16 -DA:20,16 -DA:21,16 -DA:22,16 -DA:24,16 -DA:25,16 -DA:27,16 -DA:28,2 -DA:30,16 +DA:13,13 +DA:14,13 +DA:16,13 +DA:17,13 +DA:18,13 +DA:20,13 +DA:21,13 +DA:22,13 +DA:24,13 +DA:25,13 +DA:27,13 +DA:28,1 +DA:30,13 DA:31,0 -DA:33,16 +DA:33,13 DA:34,1 -DA:36,16 +DA:36,13 DA:40,2 DA:41,2 -DA:44,16 +DA:44,13 LF:26 LH:25 -BRDA:27,0,0,2 -BRDA:27,0,1,14 +BRDA:27,0,0,1 +BRDA:27,0,1,12 BRDA:30,1,0,0 -BRDA:30,1,1,16 +BRDA:30,1,1,13 BRDA:33,2,0,1 -BRDA:33,2,1,15 +BRDA:33,2,1,12 BRDA:36,3,0,2 -BRDA:36,3,1,14 -BRDA:37,4,0,16 +BRDA:36,3,1,11 +BRDA:37,4,0,13 BRDA:37,4,1,2 -BRDA:37,5,0,13 -BRDA:37,5,1,3 -BRDA:37,6,0,16 -BRDA:37,6,1,16 +BRDA:37,5,0,11 +BRDA:37,5,1,2 +BRDA:37,6,0,13 +BRDA:37,6,1,13 BRF:14 BRH:13 end_of_record @@ -771,11 +771,11 @@ FN:97,shouldUseFormatContainer FN:117,(anonymous_4) FNF:5 FNH:5 -FNDA:329,(anonymous_0) -FNDA:124,(anonymous_1) -FNDA:175,(anonymous_2) -FNDA:156,shouldUseFormatContainer -FNDA:2108,(anonymous_4) +FNDA:250,(anonymous_0) +FNDA:107,(anonymous_1) +FNDA:119,(anonymous_2) +FNDA:133,shouldUseFormatContainer +FNDA:1815,(anonymous_4) DA:1,1 DA:2,1 DA:3,1 @@ -788,75 +788,75 @@ DA:15,1 DA:33,1 DA:34,1 DA:39,1 -DA:40,329 -DA:42,329 -DA:46,30 -DA:47,299 -DA:48,124 -DA:49,124 -DA:51,124 -DA:52,124 -DA:54,124 -DA:55,124 -DA:57,124 -DA:60,124 -DA:61,121 -DA:72,175 -DA:80,175 -DA:82,175 +DA:40,250 +DA:42,250 +DA:46,24 +DA:47,226 +DA:48,107 +DA:49,107 +DA:51,107 +DA:52,107 +DA:54,107 +DA:55,107 +DA:57,107 +DA:60,107 +DA:61,104 +DA:72,119 +DA:80,119 +DA:82,119 DA:83,1 -DA:91,175 -DA:99,156 +DA:91,119 +DA:99,133 DA:100,4 -DA:103,152 -DA:104,152 -DA:106,152 -DA:109,152 -DA:110,7 -DA:115,145 -DA:117,2108 -DA:120,18 -DA:124,127 +DA:103,129 +DA:104,129 +DA:106,129 +DA:109,129 +DA:110,6 +DA:115,123 +DA:117,1815 +DA:120,13 +DA:124,110 DA:125,0 -DA:129,127 +DA:129,110 DA:130,5 -DA:133,122 +DA:133,105 LF:45 LH:44 -BRDA:42,0,0,30 -BRDA:42,0,1,299 -BRDA:43,1,0,329 -BRDA:43,1,1,176 -BRDA:43,1,2,156 -BRDA:47,2,0,124 -BRDA:47,2,1,175 +BRDA:42,0,0,24 +BRDA:42,0,1,226 +BRDA:43,1,0,250 +BRDA:43,1,1,120 +BRDA:43,1,2,133 +BRDA:47,2,0,107 +BRDA:47,2,1,119 BRDA:48,3,0,0 -BRDA:48,3,1,124 -BRDA:60,4,0,121 +BRDA:48,3,1,107 +BRDA:60,4,0,104 BRDA:60,4,1,3 -BRDA:60,5,0,124 -BRDA:60,5,1,124 +BRDA:60,5,0,107 +BRDA:60,5,1,107 BRDA:82,6,0,1 -BRDA:82,6,1,174 -BRDA:82,7,0,175 +BRDA:82,6,1,118 +BRDA:82,7,0,119 BRDA:82,7,1,14 BRDA:99,8,0,4 -BRDA:99,8,1,152 -BRDA:109,9,0,7 -BRDA:109,9,1,145 -BRDA:109,10,0,152 -BRDA:109,10,1,7 -BRDA:115,11,0,18 -BRDA:115,11,1,127 -BRDA:117,12,0,2108 -BRDA:117,12,1,1976 -BRDA:117,12,2,1974 +BRDA:99,8,1,129 +BRDA:109,9,0,6 +BRDA:109,9,1,123 +BRDA:109,10,0,129 +BRDA:109,10,1,6 +BRDA:115,11,0,13 +BRDA:115,11,1,110 +BRDA:117,12,0,1815 +BRDA:117,12,1,1776 +BRDA:117,12,2,1774 BRDA:124,13,0,0 -BRDA:124,13,1,127 -BRDA:124,14,0,127 -BRDA:124,14,1,127 +BRDA:124,13,1,110 +BRDA:124,14,0,110 +BRDA:124,14,1,110 BRDA:129,15,0,5 -BRDA:129,15,1,122 +BRDA:129,15,1,105 BRF:34 BRH:32 end_of_record @@ -999,8 +999,8 @@ FN:12,(anonymous_0) FN:16,(anonymous_1) FNF:2 FNH:2 -FNDA:69,(anonymous_0) -FNDA:69,(anonymous_1) +FNDA:50,(anonymous_0) +FNDA:50,(anonymous_1) DA:1,1 DA:2,1 DA:4,1 @@ -1008,13 +1008,13 @@ DA:5,1 DA:6,1 DA:7,1 DA:12,1 -DA:13,69 -DA:17,69 -DA:19,69 -DA:21,69 -DA:22,69 -DA:24,69 -DA:28,69 +DA:13,50 +DA:17,50 +DA:19,50 +DA:21,50 +DA:22,50 +DA:24,50 +DA:28,50 LF:14 LH:14 BRF:0 @@ -1030,12 +1030,12 @@ FN:260,(anonymous_6) FN:269,calcSizes FNF:6 FNH:6 -FNDA:44,(anonymous_0) -FNDA:44,(anonymous_1) -FNDA:50,(anonymous_3) -FNDA:68,(anonymous_5) -FNDA:50,(anonymous_6) -FNDA:88,calcSizes +FNDA:41,(anonymous_0) +FNDA:41,(anonymous_1) +FNDA:45,(anonymous_3) +FNDA:60,(anonymous_5) +FNDA:45,(anonymous_6) +FNDA:82,calcSizes DA:1,1 DA:2,1 DA:3,1 @@ -1044,119 +1044,119 @@ DA:5,1 DA:6,1 DA:8,1 DA:32,1 -DA:37,44 -DA:41,44 -DA:43,44 -DA:45,44 -DA:48,44 -DA:49,44 -DA:51,44 -DA:55,44 +DA:37,41 +DA:41,41 +DA:43,41 +DA:45,41 +DA:48,41 +DA:49,41 +DA:51,41 +DA:55,41 DA:56,0 -DA:59,44 -DA:60,44 -DA:61,44 -DA:67,44 -DA:68,44 -DA:70,44 -DA:71,44 -DA:72,44 -DA:74,50 -DA:75,50 -DA:76,50 -DA:78,50 -DA:80,50 -DA:81,36 +DA:59,41 +DA:60,41 +DA:61,41 +DA:67,41 +DA:68,41 +DA:70,41 +DA:71,41 +DA:72,41 +DA:74,45 +DA:75,45 +DA:76,45 +DA:78,45 +DA:80,45 +DA:81,31 DA:82,14 DA:83,0 -DA:86,50 -DA:88,50 -DA:89,50 -DA:90,50 -DA:92,50 -DA:97,36 -DA:103,36 -DA:111,50 -DA:112,50 -DA:119,50 -DA:120,136 -DA:124,68 -DA:126,68 -DA:127,68 -DA:128,68 -DA:129,68 -DA:130,68 -DA:131,68 -DA:133,68 -DA:134,66 -DA:136,66 +DA:86,45 +DA:88,45 +DA:89,45 +DA:90,45 +DA:92,45 +DA:97,31 +DA:103,31 +DA:111,45 +DA:112,45 +DA:119,45 +DA:120,120 +DA:124,60 +DA:126,60 +DA:127,60 +DA:128,60 +DA:129,60 +DA:130,60 +DA:131,60 +DA:133,60 +DA:134,58 +DA:136,58 DA:137,31 DA:138,28 DA:142,31 DA:143,27 -DA:149,68 -DA:153,68 -DA:159,68 -DA:166,68 -DA:169,68 -DA:171,68 -DA:177,68 -DA:183,68 -DA:185,68 -DA:186,68 -DA:190,73 -DA:191,75 -DA:192,75 -DA:199,75 -DA:201,75 -DA:203,75 -DA:204,75 -DA:207,75 -DA:208,68 +DA:149,60 +DA:153,60 +DA:159,60 +DA:166,60 +DA:169,60 +DA:171,60 +DA:177,60 +DA:183,60 +DA:185,60 +DA:186,60 +DA:190,63 +DA:191,65 +DA:192,65 +DA:199,65 +DA:201,65 +DA:203,65 +DA:204,65 +DA:207,65 +DA:208,60 DA:209,0 -DA:212,68 -DA:214,68 -DA:215,68 -DA:217,68 -DA:218,68 -DA:220,68 -DA:221,68 -DA:225,75 -DA:227,75 +DA:212,60 +DA:214,60 +DA:215,60 +DA:217,60 +DA:218,60 +DA:220,60 +DA:221,60 +DA:225,65 +DA:227,65 DA:235,2 -DA:244,50 -DA:245,75 +DA:244,45 +DA:245,65 DA:246,0 -DA:256,44 -DA:258,44 -DA:260,44 -DA:261,50 +DA:256,41 +DA:258,41 +DA:260,41 +DA:261,45 DA:262,27 -DA:270,88 -DA:271,88 -DA:273,88 +DA:270,82 +DA:271,82 +DA:273,82 DA:274,58 DA:275,3 DA:277,55 DA:278,55 -DA:282,88 +DA:282,82 LF:104 LH:100 BRDA:46,0,0,1 -BRDA:46,0,1,43 -BRDA:45,1,0,42 +BRDA:46,0,1,40 +BRDA:45,1,0,39 BRDA:45,1,1,2 -BRDA:45,2,0,44 -BRDA:45,2,1,44 -BRDA:48,3,0,43 +BRDA:45,2,0,41 +BRDA:45,2,1,41 +BRDA:48,3,0,40 BRDA:48,3,1,1 -BRDA:48,4,0,44 +BRDA:48,4,0,41 BRDA:48,4,1,1 -BRDA:49,5,0,43 +BRDA:49,5,0,40 BRDA:49,5,1,1 -BRDA:49,6,0,44 +BRDA:49,6,0,41 BRDA:49,6,1,1 -BRDA:51,7,0,44 +BRDA:51,7,0,41 BRDA:51,7,1,1 BRDA:51,7,2,1 BRDA:52,8,0,0 @@ -1168,56 +1168,56 @@ BRDA:53,10,1,1 BRDA:53,11,0,1 BRDA:53,11,1,1 BRDA:55,12,0,0 -BRDA:55,12,1,44 -BRDA:72,13,0,44 -BRDA:72,13,1,43 -BRDA:80,14,0,36 +BRDA:55,12,1,41 +BRDA:72,13,0,41 +BRDA:72,13,1,40 +BRDA:80,14,0,31 BRDA:80,14,1,14 BRDA:82,15,0,0 BRDA:82,15,1,14 BRDA:90,16,0,5 -BRDA:90,16,1,45 -BRDA:90,17,0,50 -BRDA:90,17,1,50 -BRDA:92,18,0,36 +BRDA:90,16,1,40 +BRDA:90,17,0,45 +BRDA:90,17,1,45 +BRDA:92,18,0,31 BRDA:92,18,1,14 -BRDA:93,19,0,50 -BRDA:93,19,1,45 +BRDA:93,19,0,45 +BRDA:93,19,1,40 BRDA:93,19,2,9 BRDA:93,19,3,9 -BRDA:133,20,0,66 +BRDA:133,20,0,58 BRDA:133,20,1,2 -BRDA:133,21,0,68 +BRDA:133,21,0,60 BRDA:133,21,1,5 BRDA:136,22,0,31 -BRDA:136,22,1,35 -BRDA:136,23,0,66 -BRDA:136,23,1,35 +BRDA:136,22,1,27 +BRDA:136,23,0,58 +BRDA:136,23,1,27 BRDA:137,24,0,28 BRDA:137,24,1,3 BRDA:142,25,0,27 BRDA:142,25,1,4 -BRDA:191,26,0,75 -BRDA:191,26,1,69 -BRDA:203,27,0,75 +BRDA:191,26,0,65 +BRDA:191,26,1,61 +BRDA:203,27,0,65 BRDA:203,27,1,0 -BRDA:207,28,0,68 -BRDA:207,28,1,7 +BRDA:207,28,0,60 +BRDA:207,28,1,5 BRDA:208,29,0,0 -BRDA:208,29,1,68 +BRDA:208,29,1,60 BRDA:227,30,0,2 -BRDA:227,30,1,73 -BRDA:228,31,0,75 +BRDA:227,30,1,63 +BRDA:228,31,0,65 BRDA:228,31,1,0 -BRDA:228,31,2,75 +BRDA:228,31,2,65 BRDA:228,31,3,4 BRDA:228,31,4,4 BRDA:228,31,5,4 BRDA:228,31,6,2 BRDA:245,32,0,0 -BRDA:245,32,1,75 +BRDA:245,32,1,65 BRDA:261,33,0,27 -BRDA:261,33,1,23 +BRDA:261,33,1,18 BRDA:274,34,0,3 BRDA:274,34,1,55 BRF:78 @@ -1229,8 +1229,8 @@ FN:17,(anonymous_0) FN:52,addTextSegment FNF:2 FNH:2 -FNDA:401,(anonymous_0) -FNDA:412,addTextSegment +FNDA:348,(anonymous_0) +FNDA:359,addTextSegment DA:1,1 DA:2,1 DA:3,1 @@ -1239,94 +1239,94 @@ DA:5,1 DA:6,1 DA:7,1 DA:17,1 -DA:22,401 -DA:23,401 -DA:25,401 +DA:22,348 +DA:23,348 +DA:25,348 DA:26,5 DA:27,5 DA:29,5 DA:31,5 DA:32,5 -DA:35,401 +DA:35,348 DA:36,6 DA:38,6 DA:39,4 DA:42,6 DA:43,6 -DA:46,401 +DA:46,348 DA:50,1 -DA:53,412 -DA:54,409 -DA:55,409 -DA:56,409 -DA:58,409 -DA:65,26 -DA:66,383 -DA:71,366 -DA:73,366 +DA:53,359 +DA:54,356 +DA:55,356 +DA:56,356 +DA:58,356 +DA:65,14 +DA:66,342 +DA:71,334 +DA:73,334 DA:74,9 -DA:77,366 -DA:79,366 +DA:77,334 +DA:79,334 LF:36 LH:36 -BRDA:22,0,0,401 +BRDA:22,0,0,348 BRDA:22,0,1,1 BRDA:25,1,0,5 -BRDA:25,1,1,396 +BRDA:25,1,1,343 BRDA:35,2,0,6 -BRDA:35,2,1,395 +BRDA:35,2,1,342 BRDA:38,3,0,4 BRDA:38,3,1,2 BRDA:38,4,0,6 BRDA:38,4,1,6 -BRDA:53,5,0,409 +BRDA:53,5,0,356 BRDA:53,5,1,3 -BRDA:55,6,0,205 -BRDA:55,6,1,204 -BRDA:55,7,0,200 -BRDA:55,7,1,209 -BRDA:55,8,0,409 -BRDA:55,8,1,409 -BRDA:56,9,0,204 -BRDA:56,9,1,205 -BRDA:56,10,0,409 -BRDA:56,10,1,205 -BRDA:58,11,0,26 -BRDA:58,11,1,383 -BRDA:59,12,0,409 -BRDA:59,12,1,49 -BRDA:59,12,2,42 -BRDA:59,12,3,31 -BRDA:59,12,4,28 -BRDA:59,13,0,341 -BRDA:59,13,1,68 -BRDA:59,14,0,409 -BRDA:59,14,1,409 -BRDA:62,15,0,31 -BRDA:62,15,1,30 -BRDA:62,16,0,31 +BRDA:55,6,0,158 +BRDA:55,6,1,198 +BRDA:55,7,0,195 +BRDA:55,7,1,161 +BRDA:55,8,0,356 +BRDA:55,8,1,356 +BRDA:56,9,0,198 +BRDA:56,9,1,158 +BRDA:56,10,0,356 +BRDA:56,10,1,158 +BRDA:58,11,0,14 +BRDA:58,11,1,342 +BRDA:59,12,0,356 +BRDA:59,12,1,30 +BRDA:59,12,2,23 +BRDA:59,12,3,19 +BRDA:59,12,4,16 +BRDA:59,13,0,311 +BRDA:59,13,1,45 +BRDA:59,14,0,356 +BRDA:59,14,1,356 +BRDA:62,15,0,19 +BRDA:62,15,1,18 +BRDA:62,16,0,19 BRDA:62,16,1,0 -BRDA:63,17,0,28 -BRDA:63,17,1,27 -BRDA:63,18,0,28 +BRDA:63,17,0,16 +BRDA:63,17,1,15 +BRDA:63,18,0,16 BRDA:63,18,1,0 -BRDA:66,19,0,366 -BRDA:66,19,1,17 -BRDA:67,20,0,383 -BRDA:67,20,1,18 -BRDA:67,20,2,18 -BRDA:68,21,0,6 -BRDA:68,21,1,12 -BRDA:68,22,0,18 -BRDA:68,22,1,12 -BRDA:69,23,0,18 -BRDA:69,23,1,17 -BRDA:69,24,0,6 -BRDA:69,24,1,12 -BRDA:69,25,0,18 -BRDA:69,25,1,12 +BRDA:66,19,0,334 +BRDA:66,19,1,8 +BRDA:67,20,0,342 +BRDA:67,20,1,9 +BRDA:67,20,2,9 +BRDA:68,21,0,2 +BRDA:68,21,1,7 +BRDA:68,22,0,9 +BRDA:68,22,1,7 +BRDA:69,23,0,9 +BRDA:69,23,1,8 +BRDA:69,24,0,2 +BRDA:69,24,1,7 +BRDA:69,25,0,9 +BRDA:69,25,1,7 BRDA:73,26,0,9 -BRDA:73,26,1,357 +BRDA:73,26,1,325 BRF:58 BRH:56 end_of_record @@ -1335,14 +1335,14 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSe FN:9,addSelectionMarker FNF:1 FNH:1 -FNDA:44,addSelectionMarker +FNDA:39,addSelectionMarker DA:1,1 DA:2,1 DA:4,1 DA:9,1 -DA:10,44 -DA:12,44 -DA:14,44 +DA:10,39 +DA:12,39 +DA:14,39 LF:7 LH:7 BRF:0 @@ -1354,21 +1354,21 @@ FN:9,areSameFormats FN:16,(anonymous_1) FNF:2 FNH:2 -FNDA:118,areSameFormats -FNDA:114,(anonymous_1) +FNDA:75,areSameFormats +FNDA:33,(anonymous_1) DA:2,1 DA:9,1 -DA:10,118 +DA:10,75 DA:11,1 -DA:13,117 -DA:14,117 -DA:16,117 +DA:13,74 +DA:14,74 +DA:16,74 LF:7 LH:7 BRDA:10,0,0,1 -BRDA:10,0,1,117 -BRDA:16,1,0,117 -BRDA:16,1,1,104 +BRDA:10,0,1,74 +BRDA:16,1,0,74 +BRDA:16,1,1,61 BRF:4 BRH:4 end_of_record @@ -1377,9 +1377,9 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBo FN:4,getBoundingClientRect FNF:1 FNH:1 -FNDA:35,getBoundingClientRect +FNDA:27,getBoundingClientRect DA:4,1 -DA:5,35 +DA:5,27 LF:2 LH:2 BRF:0 @@ -1390,14 +1390,14 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDe FN:10,getDefaultStyle FNF:1 FNH:1 -FNDA:3272,getDefaultStyle +FNDA:2886,getDefaultStyle DA:10,1 -DA:14,3272 -DA:16,3272 +DA:14,2886 +DA:16,2886 LF:3 LH:3 -BRDA:16,0,0,3272 -BRDA:16,0,1,729 +BRDA:16,0,0,2886 +BRDA:16,0,1,575 BRF:2 BRH:2 end_of_record @@ -1406,32 +1406,32 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRe FN:11,getRegularSelectionOffsets FNF:1 FNH:1 -FNDA:1355,getRegularSelectionOffsets +FNDA:1179,getRegularSelectionOffsets DA:11,1 -DA:16,1355 -DA:18,1355 -DA:19,1355 -DA:21,1355 +DA:16,1179 +DA:18,1179 +DA:19,1179 +DA:21,1179 LF:5 LH:5 -BRDA:16,0,0,120 -BRDA:16,0,1,1235 -BRDA:16,1,0,1235 -BRDA:16,1,1,120 -BRDA:16,2,0,1355 -BRDA:16,2,1,1355 -BRDA:18,3,0,34 -BRDA:18,3,1,1321 -BRDA:18,4,0,1238 -BRDA:18,4,1,117 -BRDA:18,5,0,1355 -BRDA:18,5,1,120 -BRDA:19,6,0,33 -BRDA:19,6,1,1322 -BRDA:19,7,0,1238 -BRDA:19,7,1,117 -BRDA:19,8,0,1355 -BRDA:19,8,1,120 +BRDA:16,0,0,110 +BRDA:16,0,1,1069 +BRDA:16,1,0,1069 +BRDA:16,1,1,110 +BRDA:16,2,0,1179 +BRDA:16,2,1,1179 +BRDA:18,3,0,29 +BRDA:18,3,1,1150 +BRDA:18,4,0,1072 +BRDA:18,4,1,107 +BRDA:18,5,0,1179 +BRDA:18,5,1,110 +BRDA:19,6,0,28 +BRDA:19,6,1,1151 +BRDA:19,7,0,1072 +BRDA:19,7,1,107 +BRDA:19,8,0,1179 +BRDA:19,8,1,110 BRF:18 BRH:18 end_of_record @@ -1440,17 +1440,17 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlo FN:12,isBlockElement FNF:1 FNH:1 -FNDA:375,isBlockElement +FNDA:296,isBlockElement DA:2,1 DA:4,1 DA:12,1 -DA:13,375 -DA:15,375 +DA:13,296 +DA:15,296 LF:5 LH:5 -BRDA:13,0,0,375 -BRDA:13,0,1,359 -BRDA:13,0,2,189 +BRDA:13,0,0,296 +BRDA:13,0,1,281 +BRDA:13,0,2,133 BRF:3 BRH:3 end_of_record @@ -1460,19 +1460,19 @@ FN:15,parseFormat FN:23,(anonymous_1) FNF:2 FNH:2 -FNDA:2713,parseFormat -FNDA:16840,(anonymous_1) +FNDA:2434,parseFormat +FNDA:14795,(anonymous_1) DA:1,1 DA:15,1 -DA:21,2713 -DA:23,2713 -DA:24,16840 +DA:21,2434 +DA:23,2434 +DA:24,14795 LF:5 LH:5 BRDA:24,0,0,11 -BRDA:24,0,1,16829 -BRDA:24,1,0,16840 -BRDA:24,1,1,16829 +BRDA:24,0,1,14784 +BRDA:24,1,0,14795 +BRDA:24,1,1,14784 BRF:4 BRH:4 end_of_record @@ -1486,69 +1486,69 @@ FN:132,stackFormatInternal FN:146,(anonymous_5) FNF:6 FNH:6 -FNDA:880,stackFormat -FNDA:880,stackLinkInternal -FNDA:880,stackCodeInternal -FNDA:880,stackDecoratorInternal -FNDA:1760,stackFormatInternal -FNDA:1494,(anonymous_5) +FNDA:763,stackFormat +FNDA:763,stackLinkInternal +FNDA:763,stackCodeInternal +FNDA:763,stackDecoratorInternal +FNDA:1526,stackFormatInternal +FNDA:374,(anonymous_5) DA:1,1 DA:30,1 DA:31,1 DA:41,1 -DA:52,4400 -DA:53,4400 -DA:55,880 -DA:56,880 -DA:57,880 -DA:58,880 -DA:59,880 -DA:60,880 -DA:62,880 -DA:64,880 -DA:65,880 -DA:66,880 -DA:67,880 -DA:68,880 -DA:76,880 +DA:52,3815 +DA:53,3815 +DA:55,763 +DA:56,763 +DA:57,763 +DA:58,763 +DA:59,763 +DA:60,763 +DA:62,763 +DA:64,763 +DA:65,763 +DA:66,763 +DA:67,763 +DA:68,763 +DA:76,763 DA:78,18 DA:86,13 -DA:93,849 -DA:101,880 +DA:93,732 +DA:101,763 DA:103,5 DA:109,0 -DA:113,875 -DA:121,880 -DA:123,76 -DA:128,804 -DA:136,1760 +DA:113,758 +DA:121,763 +DA:123,57 +DA:128,706 +DA:136,1526 DA:138,44 -DA:141,193 -DA:144,1523 -DA:146,1523 -DA:147,1494 +DA:141,190 +DA:144,1292 +DA:146,1292 +DA:147,374 DA:154,8 -DA:158,1523 +DA:158,1292 LF:37 LH:36 BRDA:77,0,0,18 BRDA:77,0,1,13 -BRDA:77,0,2,176 -BRDA:77,0,3,849 +BRDA:77,0,2,120 +BRDA:77,0,3,732 BRDA:102,1,0,5 BRDA:102,1,1,0 -BRDA:102,1,2,875 -BRDA:122,2,0,76 -BRDA:122,2,1,804 +BRDA:102,1,2,758 +BRDA:122,2,0,57 +BRDA:122,2,1,706 BRDA:137,3,0,44 -BRDA:137,3,1,193 -BRDA:137,3,2,1523 +BRDA:137,3,1,190 +BRDA:137,3,2,1292 BRDA:147,4,0,8 -BRDA:147,4,1,1486 -BRDA:148,5,0,1494 -BRDA:148,5,1,267 -BRDA:148,5,2,1491 -BRDA:148,5,3,19 +BRDA:147,4,1,366 +BRDA:148,5,0,374 +BRDA:148,5,1,87 +BRDA:148,5,2,371 +BRDA:148,5,3,16 BRF:18 BRH:17 end_of_record @@ -1557,13 +1557,13 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType. FN:52,isNodeOfType FNF:1 FNH:1 -FNDA:3162,isNodeOfType +FNDA:2691,isNodeOfType DA:52,1 -DA:56,3162 +DA:56,2691 LF:2 LH:2 -BRDA:56,0,0,3162 -BRDA:56,0,1,3162 +BRDA:56,0,0,2691 +BRDA:56,0,1,2691 BRF:2 BRH:2 end_of_record @@ -1572,12 +1572,12 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/upda FN:30,updateListMetadata FNF:1 FNH:1 -FNDA:366,updateListMetadata +FNDA:362,updateListMetadata DA:3,1 DA:4,1 DA:6,1 DA:30,1 -DA:34,366 +DA:34,362 LF:5 LH:5 BRF:0 @@ -1589,40 +1589,40 @@ FN:14,updateMetadata FN:47,hasMetadata FNF:2 FNH:2 -FNDA:542,updateMetadata +FNDA:538,updateMetadata FNDA:14,hasMetadata DA:3,1 DA:5,1 DA:14,1 -DA:19,542 -DA:20,542 -DA:22,542 -DA:23,542 -DA:26,542 +DA:19,538 +DA:20,538 +DA:22,538 +DA:23,538 +DA:26,538 DA:27,9 -DA:30,542 -DA:31,534 -DA:33,534 -DA:34,453 -DA:35,81 -DA:36,76 -DA:40,542 +DA:30,538 +DA:31,530 +DA:33,530 +DA:34,452 +DA:35,78 +DA:36,73 +DA:40,538 DA:47,1 DA:48,14 LF:18 LH:18 BRDA:26,0,0,9 -BRDA:26,0,1,533 -BRDA:26,1,0,542 -BRDA:26,1,1,537 -BRDA:30,2,0,534 +BRDA:26,0,1,529 +BRDA:26,1,0,538 +BRDA:26,1,1,533 +BRDA:30,2,0,530 BRDA:30,2,1,8 -BRDA:33,3,0,453 -BRDA:33,3,1,81 -BRDA:35,4,0,76 +BRDA:33,3,0,452 +BRDA:33,3,1,78 +BRDA:35,4,0,73 BRDA:35,4,1,5 -BRDA:35,5,0,81 -BRDA:35,5,1,79 +BRDA:35,5,0,78 +BRDA:35,5,1,76 BRF:12 BRH:12 end_of_record @@ -1640,12 +1640,12 @@ FNF:8 FNH:8 FNDA:34,(anonymous_0) FNDA:34,(anonymous_1) -FNDA:615,getFormatParsers -FNDA:12915,(anonymous_3) -FNDA:75030,(anonymous_4) -FNDA:432,getFormatAppliers -FNDA:9072,(anonymous_6) -FNDA:52704,(anonymous_7) +FNDA:603,getFormatParsers +FNDA:12663,(anonymous_3) +FNDA:73566,(anonymous_4) +FNDA:421,getFormatAppliers +FNDA:8841,(anonymous_6) +FNDA:51362,(anonymous_7) DA:1,1 DA:2,1 DA:3,1 @@ -1694,39 +1694,39 @@ DA:214,1 DA:216,34 DA:217,34 DA:225,1 -DA:226,1219 -DA:227,1146 -DA:229,615 -DA:230,12915 -DA:233,75030 -DA:239,12915 -DA:241,12915 +DA:226,1195 +DA:227,1128 +DA:229,603 +DA:230,12663 +DA:233,73566 +DA:239,12663 +DA:241,12663 DA:248,1 -DA:249,848 -DA:250,863 -DA:252,432 -DA:253,9072 -DA:256,52704 -DA:262,9072 -DA:264,9072 +DA:249,826 +DA:250,841 +DA:252,421 +DA:253,8841 +DA:256,51362 +DA:262,8841 +DA:264,8841 LF:63 LH:63 -BRDA:226,0,0,604 +BRDA:226,0,0,592 BRDA:226,0,1,11 -BRDA:227,1,0,531 -BRDA:227,1,1,84 -BRDA:234,2,0,75016 +BRDA:227,1,0,525 +BRDA:227,1,1,78 +BRDA:234,2,0,73552 BRDA:234,2,1,14 -BRDA:237,3,0,12915 -BRDA:237,3,1,12624 -BRDA:249,4,0,416 +BRDA:237,3,0,12663 +BRDA:237,3,1,12398 +BRDA:249,4,0,405 BRDA:249,4,1,16 -BRDA:250,5,0,431 +BRDA:250,5,0,420 BRDA:250,5,1,1 -BRDA:257,6,0,52675 +BRDA:257,6,0,51333 BRDA:257,6,1,29 -BRDA:260,7,0,9072 -BRDA:260,7,1,9071 +BRDA:260,7,0,8841 +BRDA:260,7,1,8840 BRF:16 BRH:16 end_of_record @@ -1736,25 +1736,25 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:2141,(anonymous_0) -FNDA:629,(anonymous_1) +FNDA:1956,(anonymous_0) +FNDA:591,(anonymous_1) DA:7,1 -DA:9,2141 -DA:11,2141 -DA:12,75 -DA:16,629 -DA:17,30 +DA:9,1956 +DA:11,1956 +DA:12,36 +DA:16,591 +DA:17,13 LF:6 LH:6 -BRDA:9,0,0,2141 -BRDA:9,0,1,2078 -BRDA:9,0,2,2066 -BRDA:11,1,0,75 -BRDA:11,1,1,2066 +BRDA:9,0,0,1956 +BRDA:9,0,1,1932 +BRDA:9,0,2,1920 +BRDA:11,1,0,36 +BRDA:11,1,1,1920 BRDA:12,2,0,18 -BRDA:12,2,1,57 -BRDA:16,3,0,30 -BRDA:16,3,1,599 +BRDA:12,2,1,18 +BRDA:16,3,0,13 +BRDA:16,3,1,578 BRF:9 BRH:9 end_of_record @@ -1764,20 +1764,20 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:338,(anonymous_0) -FNDA:314,(anonymous_1) +FNDA:290,(anonymous_0) +FNDA:272,(anonymous_1) DA:7,1 -DA:9,338 -DA:11,338 -DA:12,15 -DA:16,314 -DA:17,13 +DA:9,290 +DA:11,290 +DA:12,14 +DA:16,272 +DA:17,11 LF:6 LH:6 -BRDA:11,0,0,15 -BRDA:11,0,1,323 -BRDA:16,1,0,13 -BRDA:16,1,1,301 +BRDA:11,0,0,14 +BRDA:11,0,1,276 +BRDA:16,1,0,11 +BRDA:16,1,1,261 BRF:4 BRH:4 end_of_record @@ -1787,28 +1787,28 @@ FN:12,(anonymous_0) FN:23,(anonymous_1) FNF:2 FNH:2 -FNDA:378,(anonymous_0) -FNDA:325,(anonymous_1) +FNDA:325,(anonymous_0) +FNDA:279,(anonymous_1) DA:1,1 DA:3,1 DA:9,1 -DA:13,378 -DA:15,378 -DA:17,378 +DA:13,325 +DA:15,325 +DA:17,325 DA:18,21 DA:19,21 DA:20,21 -DA:24,325 -DA:26,325 +DA:24,279 +DA:26,279 DA:27,8 LF:12 LH:12 BRDA:17,0,0,21 -BRDA:17,0,1,357 +BRDA:17,0,1,304 BRDA:24,1,0,1 -BRDA:24,1,1,324 +BRDA:24,1,1,278 BRDA:26,2,0,8 -BRDA:26,2,1,317 +BRDA:26,2,1,271 BRF:6 BRH:6 end_of_record @@ -1818,24 +1818,24 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:1045,(anonymous_0) -FNDA:993,(anonymous_1) +FNDA:920,(anonymous_0) +FNDA:918,(anonymous_1) DA:7,1 -DA:9,1045 -DA:11,1045 -DA:12,59 -DA:16,993 -DA:17,41 +DA:9,920 +DA:11,920 +DA:12,23 +DA:16,918 +DA:17,12 LF:6 LH:6 -BRDA:9,0,0,1045 -BRDA:9,0,1,986 -BRDA:11,1,0,59 -BRDA:11,1,1,986 -BRDA:11,2,0,1045 -BRDA:11,2,1,59 -BRDA:16,3,0,41 -BRDA:16,3,1,952 +BRDA:9,0,0,920 +BRDA:9,0,1,897 +BRDA:11,1,0,23 +BRDA:11,1,1,897 +BRDA:11,2,0,920 +BRDA:11,2,1,23 +BRDA:16,3,0,12 +BRDA:16,3,1,906 BRF:8 BRH:8 end_of_record @@ -1847,43 +1847,43 @@ FN:39,(anonymous_2) FN:40,(anonymous_3) FNF:4 FNH:4 -FNDA:602,(anonymous_0) -FNDA:2408,(anonymous_1) -FNDA:545,(anonymous_2) -FNDA:2180,(anonymous_3) +FNDA:554,(anonymous_0) +FNDA:2216,(anonymous_1) +FNDA:499,(anonymous_2) +FNDA:1996,(anonymous_3) DA:3,1 DA:5,1 DA:15,1 -DA:17,602 -DA:18,2408 -DA:20,2408 -DA:21,539 -DA:24,338 -DA:25,338 -DA:29,201 -DA:34,201 -DA:40,545 -DA:41,2180 -DA:43,2180 -DA:44,364 +DA:17,554 +DA:18,2216 +DA:20,2216 +DA:21,393 +DA:24,260 +DA:25,260 +DA:29,133 +DA:34,133 +DA:40,499 +DA:41,1996 +DA:43,1996 +DA:44,254 LF:15 LH:15 -BRDA:18,0,0,2408 -BRDA:18,0,1,2048 -BRDA:20,1,0,539 -BRDA:20,1,1,1869 -BRDA:22,2,0,171 -BRDA:22,2,1,338 -BRDA:22,2,2,109 -BRDA:22,2,3,201 -BRDA:30,3,0,32 -BRDA:30,3,1,169 -BRDA:30,4,0,32 +BRDA:18,0,0,2216 +BRDA:18,0,1,1994 +BRDA:20,1,0,393 +BRDA:20,1,1,1823 +BRDA:22,2,0,132 +BRDA:22,2,1,260 +BRDA:22,2,2,75 +BRDA:22,2,3,133 +BRDA:30,3,0,8 +BRDA:30,3,1,125 +BRDA:30,4,0,8 BRDA:30,4,1,0 -BRDA:43,5,0,364 -BRDA:43,5,1,1816 -BRDA:44,6,0,364 -BRDA:44,6,1,33 +BRDA:43,5,0,254 +BRDA:43,5,1,1742 +BRDA:44,6,0,254 +BRDA:44,6,1,31 BRF:16 BRH:15 end_of_record @@ -1895,26 +1895,26 @@ FN:24,(anonymous_2) FN:25,(anonymous_3) FNF:4 FNH:4 -FNDA:491,(anonymous_0) -FNDA:1964,(anonymous_1) -FNDA:445,(anonymous_2) -FNDA:1780,(anonymous_3) +FNDA:438,(anonymous_0) +FNDA:1752,(anonymous_1) +FNDA:394,(anonymous_2) +FNDA:1576,(anonymous_3) DA:4,1 DA:14,1 -DA:16,491 -DA:17,1964 -DA:19,1964 -DA:20,186 -DA:25,445 -DA:26,1780 -DA:27,1780 -DA:28,159 +DA:16,438 +DA:17,1752 +DA:19,1752 +DA:20,32 +DA:25,394 +DA:26,1576 +DA:27,1576 +DA:28,29 LF:10 LH:10 -BRDA:19,0,0,186 -BRDA:19,0,1,1778 -BRDA:27,1,0,159 -BRDA:27,1,1,1621 +BRDA:19,0,0,32 +BRDA:19,0,1,1720 +BRDA:27,1,0,29 +BRDA:27,1,1,1547 BRF:4 BRH:4 end_of_record @@ -1924,33 +1924,33 @@ FN:10,(anonymous_0) FN:29,(anonymous_1) FNF:2 FNH:2 -FNDA:896,(anonymous_0) -FNDA:672,(anonymous_1) +FNDA:830,(anonymous_0) +FNDA:633,(anonymous_1) DA:1,1 DA:3,1 DA:9,1 -DA:11,896 -DA:13,896 -DA:15,896 +DA:11,830 +DA:13,830 +DA:15,830 DA:22,0 -DA:25,896 -DA:26,37 -DA:30,672 -DA:32,672 -DA:33,44 -DA:34,44 -DA:36,44 +DA:25,830 +DA:26,24 +DA:30,633 +DA:32,633 +DA:33,27 +DA:34,27 +DA:36,27 DA:37,5 DA:38,5 DA:39,5 -DA:41,39 +DA:41,22 LF:18 LH:17 -BRDA:13,0,0,896 -BRDA:13,0,1,859 +BRDA:13,0,0,830 +BRDA:13,0,1,806 BRDA:15,1,0,0 -BRDA:15,1,1,896 -BRDA:16,2,0,896 +BRDA:15,1,1,830 +BRDA:16,2,0,830 BRDA:16,2,1,234 BRDA:16,2,2,0 BRDA:16,2,3,0 @@ -1958,19 +1958,19 @@ BRDA:17,3,0,23 BRDA:17,3,1,211 BRDA:17,4,0,234 BRDA:17,4,1,211 -BRDA:25,5,0,37 -BRDA:25,5,1,859 +BRDA:25,5,0,24 +BRDA:25,5,1,806 BRDA:30,6,0,3 -BRDA:30,6,1,669 -BRDA:32,7,0,44 -BRDA:32,7,1,628 +BRDA:30,6,1,630 +BRDA:32,7,0,27 +BRDA:32,7,1,606 BRDA:34,8,0,10 -BRDA:34,8,1,34 -BRDA:34,9,0,44 -BRDA:34,9,1,34 +BRDA:34,8,1,17 +BRDA:34,9,0,27 +BRDA:34,9,1,17 BRDA:36,10,0,5 -BRDA:36,10,1,39 -BRDA:36,11,0,44 +BRDA:36,10,1,22 +BRDA:36,11,0,27 BRDA:36,11,1,8 BRDA:36,11,2,5 BRDA:36,11,3,0 @@ -1983,24 +1983,24 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:600,(anonymous_0) -FNDA:395,(anonymous_1) +FNDA:534,(anonymous_0) +FNDA:361,(anonymous_1) DA:7,1 -DA:9,600 -DA:11,600 -DA:12,39 -DA:16,395 -DA:17,395 -DA:18,41 +DA:9,534 +DA:11,534 +DA:12,23 +DA:16,361 +DA:17,361 +DA:18,20 LF:7 LH:7 -BRDA:9,0,0,600 -BRDA:9,0,1,568 -BRDA:11,1,0,39 -BRDA:11,1,1,561 -BRDA:17,2,0,41 -BRDA:17,2,1,354 -BRDA:18,3,0,41 +BRDA:9,0,0,534 +BRDA:9,0,1,518 +BRDA:11,1,0,23 +BRDA:11,1,1,511 +BRDA:17,2,0,20 +BRDA:17,2,1,341 +BRDA:18,3,0,20 BRDA:18,3,1,0 BRF:8 BRH:7 @@ -2011,23 +2011,23 @@ FN:9,(anonymous_0) FN:22,(anonymous_1) FNF:2 FNH:2 -FNDA:948,(anonymous_0) -FNDA:1003,(anonymous_1) +FNDA:826,(anonymous_0) +FNDA:906,(anonymous_1) DA:3,1 DA:8,1 -DA:11,948 -DA:18,948 -DA:19,38 -DA:23,1003 -DA:24,39 +DA:11,826 +DA:18,826 +DA:19,19 +DA:23,906 +DA:24,19 LF:7 LH:7 -BRDA:11,0,0,948 -BRDA:11,0,1,910 -BRDA:18,1,0,38 -BRDA:18,1,1,910 -BRDA:23,2,0,39 -BRDA:23,2,1,964 +BRDA:11,0,0,826 +BRDA:11,0,1,807 +BRDA:18,1,0,19 +BRDA:18,1,1,807 +BRDA:23,2,0,19 +BRDA:23,2,1,887 BRF:6 BRH:6 end_of_record @@ -2037,23 +2037,23 @@ FN:8,(anonymous_0) FN:13,(anonymous_1) FNF:2 FNH:2 -FNDA:127,(anonymous_0) -FNDA:122,(anonymous_1) +FNDA:113,(anonymous_0) +FNDA:108,(anonymous_1) DA:7,1 -DA:9,127 +DA:9,113 DA:10,3 -DA:14,122 +DA:14,108 DA:15,3 LF:5 LH:5 BRDA:9,0,0,3 -BRDA:9,0,1,124 +BRDA:9,0,1,110 BRDA:9,1,0,0 -BRDA:9,1,1,127 -BRDA:9,2,0,127 -BRDA:9,2,1,127 +BRDA:9,1,1,113 +BRDA:9,2,0,113 +BRDA:9,2,1,113 BRDA:14,3,0,3 -BRDA:14,3,1,119 +BRDA:14,3,1,105 BRF:8 BRH:7 end_of_record @@ -2065,30 +2065,30 @@ FN:28,(anonymous_2) FN:29,(anonymous_3) FNF:4 FNH:4 -FNDA:404,(anonymous_0) -FNDA:2020,(anonymous_1) -FNDA:372,(anonymous_2) -FNDA:1860,(anonymous_3) +FNDA:347,(anonymous_0) +FNDA:1735,(anonymous_1) +FNDA:321,(anonymous_2) +FNDA:1605,(anonymous_3) DA:7,1 DA:18,1 -DA:20,404 -DA:21,2020 -DA:23,2020 -DA:24,80 -DA:29,372 -DA:30,1860 -DA:32,1860 -DA:33,60 +DA:20,347 +DA:21,1735 +DA:23,1735 +DA:24,36 +DA:29,321 +DA:30,1605 +DA:32,1605 +DA:33,28 LF:10 LH:10 -BRDA:23,0,0,80 -BRDA:23,0,1,1940 -BRDA:24,1,0,25 -BRDA:24,1,1,55 -BRDA:32,2,0,60 -BRDA:32,2,1,1800 +BRDA:23,0,0,36 +BRDA:23,0,1,1699 +BRDA:24,1,0,0 +BRDA:24,1,1,36 +BRDA:32,2,0,28 +BRDA:32,2,1,1577 BRF:6 -BRH:6 +BRH:5 end_of_record TN: SF:packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts @@ -2096,23 +2096,23 @@ FN:8,(anonymous_0) FN:13,(anonymous_1) FNF:2 FNH:2 -FNDA:18,(anonymous_0) -FNDA:18,(anonymous_1) +FNDA:15,(anonymous_0) +FNDA:15,(anonymous_1) DA:7,1 -DA:9,18 +DA:9,15 DA:10,1 -DA:14,18 +DA:14,15 DA:15,1 LF:5 LH:5 BRDA:9,0,0,1 -BRDA:9,0,1,17 +BRDA:9,0,1,14 BRDA:9,1,0,0 -BRDA:9,1,1,18 -BRDA:9,2,0,18 -BRDA:9,2,1,18 +BRDA:9,1,1,15 +BRDA:9,2,0,15 +BRDA:9,2,1,15 BRDA:14,3,0,1 -BRDA:14,3,1,17 +BRDA:14,3,1,14 BRF:8 BRH:7 end_of_record @@ -2124,20 +2124,20 @@ FN:17,(anonymous_2) FN:18,(anonymous_3) FNF:4 FNH:4 -FNDA:255,(anonymous_0) -FNDA:23,(anonymous_1) -FNDA:259,(anonymous_2) -FNDA:28,(anonymous_3) +FNDA:241,(anonymous_0) +FNDA:17,(anonymous_1) +FNDA:240,(anonymous_2) +FNDA:19,(anonymous_3) DA:3,1 DA:8,1 -DA:10,255 -DA:12,255 -DA:13,23 -DA:18,259 -DA:19,28 +DA:10,241 +DA:12,241 +DA:13,17 +DA:18,240 +DA:19,19 LF:7 LH:7 -BRDA:13,0,0,23 +BRDA:13,0,0,17 BRDA:13,0,1,0 BRF:2 BRH:1 @@ -2148,22 +2148,22 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:19,(anonymous_0) -FNDA:18,(anonymous_1) +FNDA:16,(anonymous_0) +FNDA:15,(anonymous_1) DA:7,1 -DA:9,19 -DA:11,19 +DA:9,16 +DA:11,16 DA:12,2 -DA:16,18 +DA:16,15 DA:17,1 LF:6 LH:6 -BRDA:9,0,0,19 -BRDA:9,0,1,18 +BRDA:9,0,0,16 +BRDA:9,0,1,15 BRDA:11,1,0,2 -BRDA:11,1,1,17 +BRDA:11,1,1,14 BRDA:16,2,0,1 -BRDA:16,2,1,17 +BRDA:16,2,1,14 BRF:6 BRH:6 end_of_record @@ -2173,19 +2173,19 @@ FN:8,(anonymous_0) FN:13,(anonymous_1) FNF:2 FNH:2 -FNDA:61,(anonymous_0) -FNDA:57,(anonymous_1) +FNDA:55,(anonymous_0) +FNDA:51,(anonymous_1) DA:7,1 -DA:9,61 +DA:9,55 DA:10,4 -DA:14,57 +DA:14,51 DA:15,3 LF:5 LH:5 BRDA:9,0,0,4 -BRDA:9,0,1,57 +BRDA:9,0,1,51 BRDA:14,1,0,3 -BRDA:14,1,1,54 +BRDA:14,1,1,48 BRF:4 BRH:4 end_of_record @@ -2196,81 +2196,81 @@ FN:37,(anonymous_1) FN:59,tryParseSize FNF:3 FNH:3 -FNDA:405,(anonymous_0) -FNDA:374,(anonymous_1) -FNDA:784,tryParseSize +FNDA:349,(anonymous_0) +FNDA:324,(anonymous_1) +FNDA:685,tryParseSize DA:4,1 DA:9,1 -DA:11,405 -DA:12,405 -DA:13,405 -DA:14,405 -DA:15,405 -DA:16,405 -DA:18,405 -DA:19,23 -DA:21,405 -DA:22,7 -DA:24,405 -DA:25,5 -DA:27,405 +DA:11,349 +DA:12,349 +DA:13,349 +DA:14,349 +DA:15,349 +DA:16,349 +DA:18,349 +DA:19,12 +DA:21,349 +DA:22,5 +DA:24,349 +DA:25,3 +DA:27,349 DA:28,1 -DA:30,405 +DA:30,349 DA:31,1 -DA:33,405 +DA:33,349 DA:34,1 -DA:38,374 -DA:39,21 -DA:41,374 -DA:42,6 -DA:44,374 -DA:45,2 -DA:47,374 +DA:38,324 +DA:39,9 +DA:41,324 +DA:42,3 +DA:44,324 +DA:45,1 +DA:47,324 DA:48,1 -DA:50,374 +DA:50,324 DA:51,1 -DA:53,374 +DA:53,324 DA:54,1 -DA:60,784 -DA:61,784 -DA:63,784 +DA:60,685 +DA:61,685 +DA:63,685 LF:35 LH:35 -BRDA:11,0,0,405 -BRDA:11,0,1,384 -BRDA:12,1,0,405 -BRDA:12,1,1,400 -BRDA:18,2,0,23 -BRDA:18,2,1,382 -BRDA:21,3,0,7 -BRDA:21,3,1,398 -BRDA:24,4,0,5 -BRDA:24,4,1,400 +BRDA:11,0,0,349 +BRDA:11,0,1,339 +BRDA:12,1,0,349 +BRDA:12,1,1,346 +BRDA:18,2,0,12 +BRDA:18,2,1,337 +BRDA:21,3,0,5 +BRDA:21,3,1,344 +BRDA:24,4,0,3 +BRDA:24,4,1,346 BRDA:27,5,0,1 -BRDA:27,5,1,404 +BRDA:27,5,1,348 BRDA:30,6,0,1 -BRDA:30,6,1,404 +BRDA:30,6,1,348 BRDA:33,7,0,1 -BRDA:33,7,1,404 -BRDA:38,8,0,21 -BRDA:38,8,1,353 -BRDA:41,9,0,6 -BRDA:41,9,1,368 -BRDA:44,10,0,2 -BRDA:44,10,1,372 +BRDA:33,7,1,348 +BRDA:38,8,0,9 +BRDA:38,8,1,315 +BRDA:41,9,0,3 +BRDA:41,9,1,321 +BRDA:44,10,0,1 +BRDA:44,10,1,323 BRDA:47,11,0,1 -BRDA:47,11,1,373 +BRDA:47,11,1,323 BRDA:50,12,0,1 -BRDA:50,12,1,373 +BRDA:50,12,1,323 BRDA:53,13,0,1 -BRDA:53,13,1,373 -BRDA:61,14,0,784 -BRDA:61,14,1,780 +BRDA:53,13,1,323 +BRDA:61,14,0,685 +BRDA:61,14,1,681 BRDA:64,15,0,2 -BRDA:64,15,1,782 -BRDA:63,16,0,784 +BRDA:64,15,1,683 +BRDA:63,16,0,685 BRDA:63,16,1,4 -BRDA:66,17,0,780 +BRDA:66,17,0,681 BRDA:66,17,1,2 BRF:36 BRH:36 @@ -2281,34 +2281,34 @@ FN:8,(anonymous_0) FN:31,(anonymous_1) FNF:2 FNH:2 -FNDA:95,(anonymous_0) -FNDA:86,(anonymous_1) +FNDA:84,(anonymous_0) +FNDA:75,(anonymous_1) DA:7,1 -DA:9,95 -DA:11,95 -DA:19,15 -DA:20,15 -DA:23,5 -DA:24,5 -DA:27,4 -DA:28,4 -DA:32,86 -DA:33,16 +DA:9,84 +DA:11,84 +DA:19,11 +DA:20,11 +DA:23,3 +DA:24,3 +DA:27,1 +DA:28,1 +DA:32,75 +DA:33,7 LF:11 LH:11 -BRDA:9,0,0,95 -BRDA:9,0,1,74 -BRDA:12,1,0,2 -BRDA:12,1,1,3 -BRDA:12,1,2,4 -BRDA:12,1,3,5 -BRDA:12,1,4,6 -BRDA:12,1,5,7 -BRDA:12,1,6,15 -BRDA:12,1,7,5 -BRDA:12,1,8,4 -BRDA:32,2,0,16 -BRDA:32,2,1,70 +BRDA:9,0,0,84 +BRDA:9,0,1,70 +BRDA:12,1,0,1 +BRDA:12,1,1,2 +BRDA:12,1,2,3 +BRDA:12,1,3,4 +BRDA:12,1,4,5 +BRDA:12,1,5,6 +BRDA:12,1,6,11 +BRDA:12,1,7,3 +BRDA:12,1,8,1 +BRDA:32,2,0,7 +BRDA:32,2,1,68 BRF:13 BRH:13 end_of_record @@ -2318,22 +2318,22 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:69,(anonymous_0) -FNDA:68,(anonymous_1) +FNDA:61,(anonymous_0) +FNDA:60,(anonymous_1) DA:7,1 -DA:9,69 -DA:11,69 +DA:9,61 +DA:11,61 DA:12,1 -DA:16,68 +DA:16,60 DA:17,2 LF:6 LH:6 -BRDA:9,0,0,69 -BRDA:9,0,1,68 +BRDA:9,0,0,61 +BRDA:9,0,1,60 BRDA:11,1,0,1 -BRDA:11,1,1,68 +BRDA:11,1,1,60 BRDA:16,2,0,2 -BRDA:16,2,1,66 +BRDA:16,2,1,58 BRF:6 BRH:6 end_of_record @@ -2497,7 +2497,7 @@ FN:95,(anonymous_3) FNF:4 FNH:4 FNDA:122,(anonymous_0) -FNDA:118,(anonymous_1) +FNDA:114,(anonymous_1) FNDA:12,getKeyFromValue FNDA:218,(anonymous_3) DA:3,1 @@ -2514,9 +2514,9 @@ DA:68,10 DA:70,3 DA:71,2 DA:72,2 -DA:78,118 -DA:80,118 -DA:84,118 +DA:78,114 +DA:80,114 +DA:84,114 DA:85,5 DA:95,218 DA:98,12 @@ -2539,12 +2539,12 @@ BRDA:70,6,0,3 BRDA:70,6,1,2 BRDA:73,7,0,0 BRDA:73,7,1,2 -BRDA:81,8,0,45 +BRDA:81,8,0,41 BRDA:81,8,1,73 BRDA:84,9,0,5 -BRDA:84,9,1,113 -BRDA:84,10,0,118 -BRDA:84,10,1,10 +BRDA:84,9,1,109 +BRDA:84,10,0,114 +BRDA:84,10,1,8 BRDA:95,11,0,0 BRDA:95,11,1,12 BRF:25 @@ -2557,7 +2557,7 @@ FN:25,(anonymous_1) FNF:2 FNH:2 FNDA:136,(anonymous_0) -FNDA:114,(anonymous_1) +FNDA:110,(anonymous_1) DA:3,1 DA:8,1 DA:10,136 @@ -2567,17 +2567,17 @@ DA:13,49 DA:15,49 DA:19,4 DA:22,49 -DA:27,114 -DA:28,114 -DA:29,114 -DA:31,114 -DA:32,39 -DA:34,39 +DA:27,110 +DA:28,110 +DA:29,110 +DA:31,110 +DA:32,35 +DA:34,35 DA:35,4 -DA:36,35 -DA:37,31 -DA:40,39 -DA:41,39 +DA:36,31 +DA:37,29 +DA:40,35 +DA:41,35 LF:20 LH:20 BRDA:10,0,0,49 @@ -2586,14 +2586,14 @@ BRDA:15,1,0,4 BRDA:15,1,1,45 BRDA:16,2,0,49 BRDA:16,2,1,7 -BRDA:31,3,0,39 +BRDA:31,3,0,35 BRDA:31,3,1,75 -BRDA:31,4,0,114 -BRDA:31,4,1,113 +BRDA:31,4,0,110 +BRDA:31,4,1,109 BRDA:34,5,0,4 -BRDA:34,5,1,35 -BRDA:36,6,0,31 -BRDA:36,6,1,4 +BRDA:34,5,1,31 +BRDA:36,6,0,29 +BRDA:36,6,1,2 BRF:14 BRH:14 end_of_record @@ -2604,19 +2604,19 @@ FN:15,(anonymous_1) FNF:2 FNH:2 FNDA:137,(anonymous_0) -FNDA:117,(anonymous_1) +FNDA:113,(anonymous_1) DA:7,1 DA:9,137 DA:11,137 DA:12,2 -DA:16,117 +DA:16,113 DA:17,1 LF:6 LH:6 BRDA:11,0,0,2 BRDA:11,0,1,135 BRDA:16,1,0,1 -BRDA:16,1,1,116 +BRDA:16,1,1,112 BRF:4 BRH:4 end_of_record @@ -2626,40 +2626,40 @@ FN:9,(anonymous_0) FN:16,(anonymous_1) FNF:2 FNH:2 -FNDA:935,(anonymous_0) -FNDA:669,(anonymous_1) +FNDA:813,(anonymous_0) +FNDA:599,(anonymous_1) DA:3,1 DA:8,1 -DA:10,935 -DA:12,935 -DA:13,99 -DA:17,669 -DA:18,573 -DA:21,96 -DA:23,96 -DA:27,33 -DA:28,25 -DA:29,25 -DA:30,25 -DA:32,8 +DA:10,813 +DA:12,813 +DA:13,79 +DA:17,599 +DA:18,545 +DA:21,54 +DA:23,54 +DA:27,26 +DA:28,21 +DA:29,21 +DA:30,21 +DA:32,5 LF:14 LH:14 -BRDA:10,0,0,935 -BRDA:10,0,1,860 -BRDA:12,1,0,99 -BRDA:12,1,1,836 -BRDA:17,2,0,573 -BRDA:17,2,1,96 -BRDA:23,3,0,33 -BRDA:23,3,1,63 -BRDA:24,4,0,96 -BRDA:24,4,1,52 -BRDA:24,4,2,89 -BRDA:24,4,3,44 -BRDA:24,4,4,44 -BRDA:27,5,0,25 -BRDA:27,5,1,8 -BRDA:32,6,0,8 +BRDA:10,0,0,813 +BRDA:10,0,1,758 +BRDA:12,1,0,79 +BRDA:12,1,1,734 +BRDA:17,2,0,545 +BRDA:17,2,1,54 +BRDA:23,3,0,26 +BRDA:23,3,1,28 +BRDA:24,4,0,54 +BRDA:24,4,1,25 +BRDA:24,4,2,51 +BRDA:24,4,3,29 +BRDA:24,4,4,29 +BRDA:27,5,0,21 +BRDA:27,5,1,5 +BRDA:32,6,0,5 BRDA:32,6,1,0 BRF:17 BRH:16 @@ -2670,26 +2670,26 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:894,(anonymous_0) -FNDA:674,(anonymous_1) +FNDA:772,(anonymous_0) +FNDA:604,(anonymous_1) DA:7,1 -DA:9,894 -DA:11,894 -DA:12,98 -DA:16,674 -DA:17,56 +DA:9,772 +DA:11,772 +DA:12,60 +DA:16,604 +DA:17,24 LF:6 LH:6 -BRDA:9,0,0,894 -BRDA:9,0,1,802 -BRDA:11,1,0,98 -BRDA:11,1,1,796 -BRDA:11,2,0,894 -BRDA:11,2,1,99 -BRDA:16,3,0,56 -BRDA:16,3,1,618 -BRDA:16,4,0,674 -BRDA:16,4,1,70 +BRDA:9,0,0,772 +BRDA:9,0,1,718 +BRDA:11,1,0,60 +BRDA:11,1,1,712 +BRDA:11,2,0,772 +BRDA:11,2,1,61 +BRDA:16,3,0,24 +BRDA:16,3,1,580 +BRDA:16,4,0,604 +BRDA:16,4,1,38 BRF:10 BRH:10 end_of_record @@ -2700,26 +2700,26 @@ FN:24,(anonymous_1) FN:43,normalizeFontSize FNF:3 FNH:3 -FNDA:907,(anonymous_0) -FNDA:667,(anonymous_1) -FNDA:92,normalizeFontSize +FNDA:785,(anonymous_0) +FNDA:597,(anonymous_1) +FNDA:54,normalizeFontSize DA:3,1 DA:4,1 DA:9,1 -DA:11,907 -DA:12,907 -DA:16,907 -DA:17,102 -DA:18,92 +DA:11,785 +DA:12,785 +DA:16,785 +DA:17,64 +DA:18,54 DA:19,10 DA:20,10 -DA:25,667 -DA:26,63 +DA:25,597 +DA:26,31 DA:32,1 -DA:44,92 -DA:46,92 +DA:44,54 +DA:46,54 DA:47,8 -DA:48,84 +DA:48,46 DA:54,8 DA:55,4 DA:57,4 @@ -2728,36 +2728,36 @@ DA:60,4 DA:62,1 DA:64,1 DA:66,2 -DA:70,76 +DA:70,38 DA:71,0 -DA:73,76 +DA:73,38 LF:28 LH:27 -BRDA:11,0,0,907 -BRDA:11,0,1,814 -BRDA:12,1,0,907 -BRDA:12,1,1,883 -BRDA:16,2,0,102 -BRDA:16,2,1,805 -BRDA:16,3,0,907 -BRDA:16,3,1,106 -BRDA:16,3,2,102 -BRDA:17,4,0,92 +BRDA:11,0,0,785 +BRDA:11,0,1,730 +BRDA:12,1,0,785 +BRDA:12,1,1,780 +BRDA:16,2,0,64 +BRDA:16,2,1,721 +BRDA:16,3,0,785 +BRDA:16,3,1,68 +BRDA:16,3,2,64 +BRDA:17,4,0,54 BRDA:17,4,1,10 BRDA:19,5,0,10 BRDA:19,5,1,0 -BRDA:25,6,0,63 -BRDA:25,6,1,604 -BRDA:25,7,0,667 -BRDA:25,7,1,72 +BRDA:25,6,0,31 +BRDA:25,6,1,566 +BRDA:25,7,0,597 +BRDA:25,7,1,40 BRDA:46,8,0,8 -BRDA:46,8,1,84 +BRDA:46,8,1,46 BRDA:48,9,0,8 -BRDA:48,9,1,76 -BRDA:49,10,0,84 -BRDA:49,10,1,82 -BRDA:49,10,2,80 -BRDA:49,10,3,78 +BRDA:48,9,1,38 +BRDA:49,10,0,46 +BRDA:49,10,1,44 +BRDA:49,10,2,42 +BRDA:49,10,3,40 BRDA:54,11,0,4 BRDA:54,11,1,4 BRDA:59,12,0,4 @@ -2766,10 +2766,10 @@ BRDA:61,13,0,1 BRDA:61,13,1,1 BRDA:61,13,2,2 BRDA:70,14,0,0 -BRDA:70,14,1,76 -BRDA:70,15,0,76 -BRDA:70,15,1,76 -BRDA:70,15,2,76 +BRDA:70,14,1,38 +BRDA:70,15,0,38 +BRDA:70,15,1,38 +BRDA:70,15,2,38 BRF:37 BRH:34 end_of_record @@ -2779,19 +2779,19 @@ FN:9,(anonymous_0) FN:18,(anonymous_1) FNF:2 FNH:2 -FNDA:902,(anonymous_0) -FNDA:666,(anonymous_1) +FNDA:780,(anonymous_0) +FNDA:596,(anonymous_1) DA:3,1 DA:8,1 -DA:10,902 -DA:12,902 +DA:10,780 +DA:12,780 DA:13,10 -DA:14,892 -DA:15,29 -DA:19,666 -DA:20,612 -DA:23,54 -DA:25,54 +DA:14,770 +DA:15,13 +DA:19,596 +DA:20,584 +DA:23,12 +DA:25,12 DA:26,4 DA:27,4 DA:28,4 @@ -2799,20 +2799,20 @@ DA:29,4 DA:31,0 LF:16 LH:15 -BRDA:10,0,0,902 -BRDA:10,0,1,867 +BRDA:10,0,0,780 +BRDA:10,0,1,761 BRDA:12,1,0,10 -BRDA:12,1,1,892 -BRDA:12,2,0,902 -BRDA:12,2,1,896 -BRDA:14,3,0,29 -BRDA:14,3,1,863 -BRDA:14,4,0,892 -BRDA:14,4,1,888 -BRDA:19,5,0,612 -BRDA:19,5,1,54 +BRDA:12,1,1,770 +BRDA:12,2,0,780 +BRDA:12,2,1,774 +BRDA:14,3,0,13 +BRDA:14,3,1,757 +BRDA:14,4,0,770 +BRDA:14,4,1,766 +BRDA:19,5,0,584 +BRDA:19,5,1,12 BRDA:25,6,0,4 -BRDA:25,6,1,50 +BRDA:25,6,1,8 BRDA:26,7,0,4 BRDA:26,7,1,0 BRF:16 @@ -2824,22 +2824,22 @@ FN:8,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:887,(anonymous_0) -FNDA:664,(anonymous_1) +FNDA:765,(anonymous_0) +FNDA:594,(anonymous_1) DA:7,1 -DA:9,887 -DA:11,887 -DA:12,6 -DA:16,664 -DA:17,33 +DA:9,765 +DA:11,765 +DA:12,4 +DA:16,594 +DA:17,5 LF:6 LH:6 -BRDA:9,0,0,887 -BRDA:9,0,1,881 -BRDA:11,1,0,6 -BRDA:11,1,1,881 -BRDA:16,2,0,33 -BRDA:16,2,1,631 +BRDA:9,0,0,765 +BRDA:9,0,1,761 +BRDA:11,1,0,4 +BRDA:11,1,1,761 +BRDA:16,2,0,5 +BRDA:16,2,1,589 BRF:6 BRH:6 end_of_record @@ -2850,7 +2850,7 @@ FN:48,(anonymous_1) FNF:2 FNH:2 FNDA:22,(anonymous_0) -FNDA:34,(anonymous_1) +FNDA:33,(anonymous_1) DA:3,1 DA:8,1 DA:10,22 @@ -2875,19 +2875,19 @@ DA:39,21 DA:40,1 DA:43,21 DA:44,1 -DA:49,34 -DA:50,33 -DA:52,33 +DA:49,33 +DA:50,32 +DA:52,32 DA:53,1 -DA:56,33 +DA:56,32 DA:57,1 -DA:60,33 +DA:60,32 DA:61,1 -DA:64,33 +DA:64,32 DA:65,1 -DA:68,33 +DA:68,32 DA:69,2 -DA:72,33 +DA:72,32 DA:73,1 LF:38 LH:38 @@ -2907,22 +2907,22 @@ BRDA:39,6,0,1 BRDA:39,6,1,20 BRDA:43,7,0,1 BRDA:43,7,1,20 -BRDA:49,8,0,33 +BRDA:49,8,0,32 BRDA:49,8,1,1 -BRDA:49,9,0,34 -BRDA:49,9,1,33 +BRDA:49,9,0,33 +BRDA:49,9,1,32 BRDA:52,10,0,1 -BRDA:52,10,1,32 +BRDA:52,10,1,31 BRDA:56,11,0,1 -BRDA:56,11,1,32 +BRDA:56,11,1,31 BRDA:60,12,0,1 -BRDA:60,12,1,32 +BRDA:60,12,1,31 BRDA:64,13,0,1 -BRDA:64,13,1,32 +BRDA:64,13,1,31 BRDA:68,14,0,2 -BRDA:68,14,1,31 +BRDA:68,14,1,30 BRDA:72,15,0,1 -BRDA:72,15,1,32 +BRDA:72,15,1,31 BRF:32 BRH:32 end_of_record @@ -2932,29 +2932,29 @@ FN:9,(anonymous_0) FN:16,(anonymous_1) FNF:2 FNH:2 -FNDA:896,(anonymous_0) -FNDA:666,(anonymous_1) +FNDA:774,(anonymous_0) +FNDA:596,(anonymous_1) DA:2,1 DA:8,1 -DA:10,896 -DA:12,896 +DA:10,774 +DA:12,774 DA:13,8 -DA:17,666 +DA:17,596 DA:18,5 DA:19,5 DA:20,5 LF:9 LH:9 -BRDA:10,0,0,896 -BRDA:10,0,1,883 +BRDA:10,0,0,774 +BRDA:10,0,1,763 BRDA:12,1,0,8 -BRDA:12,1,1,888 -BRDA:12,2,0,878 -BRDA:12,2,1,18 -BRDA:12,3,0,896 -BRDA:12,3,1,896 +BRDA:12,1,1,766 +BRDA:12,2,0,758 +BRDA:12,2,1,16 +BRDA:12,3,0,774 +BRDA:12,3,1,774 BRDA:17,4,0,5 -BRDA:17,4,1,661 +BRDA:17,4,1,591 BRF:10 BRH:10 end_of_record @@ -2966,17 +2966,17 @@ FN:26,(anonymous_2) FN:42,isSuperOrSubScript FNF:4 FNH:4 -FNDA:894,(anonymous_0) -FNDA:666,(anonymous_1) +FNDA:772,(anonymous_0) +FNDA:596,(anonymous_1) FNDA:6,(anonymous_2) -FNDA:1000,isSuperOrSubScript +FNDA:840,isSuperOrSubScript DA:2,1 DA:8,1 -DA:10,894 -DA:11,894 -DA:13,894 +DA:10,772 +DA:11,772 +DA:13,772 DA:14,10 -DA:22,666 +DA:22,596 DA:23,5 DA:27,6 DA:29,6 @@ -2984,26 +2984,26 @@ DA:30,6 DA:31,6 DA:32,6 DA:42,1 -DA:46,1000 +DA:46,840 LF:15 LH:15 -BRDA:10,0,0,894 -BRDA:10,0,1,865 -BRDA:11,1,0,894 -BRDA:11,1,1,815 +BRDA:10,0,0,772 +BRDA:10,0,1,762 +BRDA:11,1,0,772 +BRDA:11,1,1,731 BRDA:13,2,0,10 -BRDA:13,2,1,884 +BRDA:13,2,1,762 BRDA:14,3,0,10 BRDA:14,3,1,8 BRDA:22,4,0,5 -BRDA:22,4,1,661 +BRDA:22,4,1,591 BRDA:27,5,0,3 BRDA:27,5,1,3 BRDA:27,6,0,3 BRDA:27,6,1,0 BRDA:29,7,0,6 BRDA:29,7,1,0 -BRDA:46,8,0,1000 +BRDA:46,8,0,840 BRDA:46,8,1,16 BRDA:46,8,2,7 BRF:19 @@ -3015,28 +3015,28 @@ FN:9,(anonymous_0) FN:22,(anonymous_1) FNF:2 FNH:2 -FNDA:937,(anonymous_0) -FNDA:765,(anonymous_1) +FNDA:815,(anonymous_0) +FNDA:686,(anonymous_1) DA:2,1 DA:8,1 -DA:11,937 -DA:18,937 -DA:19,66 -DA:23,765 -DA:25,765 -DA:26,59 +DA:11,815 +DA:18,815 +DA:19,30 +DA:23,686 +DA:25,686 +DA:26,29 LF:8 LH:8 -BRDA:11,0,0,937 -BRDA:11,0,1,871 -BRDA:18,1,0,66 -BRDA:18,1,1,871 -BRDA:18,2,0,937 -BRDA:18,2,1,66 -BRDA:25,3,0,59 -BRDA:25,3,1,706 -BRDA:25,4,0,765 -BRDA:25,4,1,59 +BRDA:11,0,0,815 +BRDA:11,0,1,785 +BRDA:18,1,0,30 +BRDA:18,1,1,785 +BRDA:18,2,0,815 +BRDA:18,2,1,30 +BRDA:25,3,0,29 +BRDA:25,3,1,657 +BRDA:25,4,0,686 +BRDA:25,4,1,29 BRF:10 BRH:10 end_of_record @@ -3046,19 +3046,19 @@ FN:9,(anonymous_0) FN:18,(anonymous_1) FNF:2 FNH:2 -FNDA:916,(anonymous_0) -FNDA:700,(anonymous_1) +FNDA:794,(anonymous_0) +FNDA:629,(anonymous_1) DA:2,1 DA:8,1 -DA:10,916 -DA:12,916 +DA:10,794 +DA:12,794 DA:13,9 -DA:14,907 +DA:14,785 DA:15,0 -DA:19,700 -DA:20,663 -DA:23,37 -DA:25,37 +DA:19,629 +DA:20,593 +DA:23,36 +DA:25,36 DA:26,7 DA:27,6 DA:28,6 @@ -3066,22 +3066,22 @@ DA:29,6 DA:31,1 LF:16 LH:15 -BRDA:10,0,0,916 -BRDA:10,0,1,902 +BRDA:10,0,0,794 +BRDA:10,0,1,782 BRDA:12,1,0,9 -BRDA:12,1,1,907 -BRDA:12,2,0,897 -BRDA:12,2,1,19 -BRDA:12,3,0,916 -BRDA:12,3,1,916 +BRDA:12,1,1,785 +BRDA:12,2,0,777 +BRDA:12,2,1,17 +BRDA:12,3,0,794 +BRDA:12,3,1,794 BRDA:14,4,0,0 -BRDA:14,4,1,907 -BRDA:14,5,0,907 +BRDA:14,4,1,785 +BRDA:14,5,0,785 BRDA:14,5,1,41 -BRDA:19,6,0,663 -BRDA:19,6,1,37 +BRDA:19,6,0,593 +BRDA:19,6,1,36 BRDA:25,7,0,7 -BRDA:25,7,1,30 +BRDA:25,7,1,29 BRDA:26,8,0,6 BRDA:26,8,1,1 BRF:18 @@ -3093,22 +3093,22 @@ FN:8,(anonymous_0) FN:14,(anonymous_1) FNF:2 FNH:2 -FNDA:47,(anonymous_0) -FNDA:41,(anonymous_1) +FNDA:44,(anonymous_0) +FNDA:38,(anonymous_1) DA:7,1 -DA:9,47 -DA:10,47 -DA:11,4 -DA:15,41 -DA:16,3 +DA:9,44 +DA:10,44 +DA:11,3 +DA:15,38 +DA:16,2 LF:6 LH:6 -BRDA:10,0,0,4 -BRDA:10,0,1,43 -BRDA:10,1,0,47 -BRDA:10,1,1,5 -BRDA:15,2,0,3 -BRDA:15,2,1,38 +BRDA:10,0,0,3 +BRDA:10,0,1,41 +BRDA:10,1,0,44 +BRDA:10,1,1,4 +BRDA:15,2,0,2 +BRDA:15,2,1,36 BRF:6 BRH:6 end_of_record @@ -3118,21 +3118,21 @@ FN:10,(anonymous_0) FN:15,(anonymous_1) FNF:2 FNH:2 -FNDA:113,(anonymous_0) -FNDA:41,(anonymous_1) +FNDA:102,(anonymous_0) +FNDA:38,(anonymous_1) DA:4,1 DA:9,1 -DA:11,113 -DA:12,7 -DA:16,41 -DA:17,7 -DA:18,7 -DA:19,7 +DA:11,102 +DA:12,4 +DA:16,38 +DA:17,4 +DA:18,4 +DA:19,4 LF:8 LH:8 -BRDA:11,0,0,7 -BRDA:11,0,1,106 -BRDA:16,1,0,7 +BRDA:11,0,0,4 +BRDA:11,0,1,98 +BRDA:16,1,0,4 BRDA:16,1,1,34 BRF:4 BRH:4 @@ -3143,15 +3143,15 @@ FN:8,(anonymous_0) FN:16,(anonymous_1) FNF:2 FNH:1 -FNDA:70,(anonymous_0) +FNDA:62,(anonymous_0) FNDA:0,(anonymous_1) DA:7,1 -DA:9,70 -DA:13,7 +DA:9,62 +DA:13,5 LF:3 LH:3 -BRDA:9,0,0,7 -BRDA:9,0,1,63 +BRDA:9,0,0,5 +BRDA:9,0,1,57 BRF:2 BRH:2 end_of_record @@ -3162,51 +3162,51 @@ FN:67,setColor FN:92,tryGetFontColor FNF:3 FNH:3 -FNDA:1892,getColor -FNDA:102,setColor -FNDA:273,tryGetFontColor +FNDA:1648,getColor +FNDA:51,setColor +FNDA:261,tryGetFontColor DA:2,1 DA:7,1 DA:36,1 -DA:44,1892 -DA:45,1892 -DA:53,1892 -DA:54,42 -DA:57,1892 -DA:58,273 -DA:61,1892 +DA:44,1648 +DA:45,1648 +DA:53,1648 +DA:54,28 +DA:57,1648 +DA:58,261 +DA:61,1648 DA:67,1 -DA:74,102 -DA:78,102 -DA:79,39 -DA:81,63 -DA:100,273 +DA:74,51 +DA:78,51 +DA:79,19 +DA:81,32 +DA:100,261 LF:16 LH:16 -BRDA:44,0,0,1892 +BRDA:44,0,0,1648 BRDA:44,0,1,0 -BRDA:46,1,0,1892 -BRDA:46,1,1,273 -BRDA:46,1,2,1891 -BRDA:46,1,3,1746 -BRDA:46,1,4,1741 -BRDA:48,2,0,948 -BRDA:48,2,1,943 -BRDA:49,3,0,888 -BRDA:49,3,1,858 -BRDA:53,4,0,42 -BRDA:53,4,1,1850 -BRDA:53,5,0,1892 -BRDA:53,5,1,151 -BRDA:57,6,0,273 -BRDA:57,6,1,1619 -BRDA:75,7,0,53 -BRDA:75,7,1,49 -BRDA:78,8,0,39 -BRDA:78,8,1,63 +BRDA:46,1,0,1648 +BRDA:46,1,1,261 +BRDA:46,1,2,1647 +BRDA:46,1,3,1571 +BRDA:46,1,4,1566 +BRDA:48,2,0,826 +BRDA:48,2,1,821 +BRDA:49,3,0,786 +BRDA:49,3,1,785 +BRDA:53,4,0,28 +BRDA:53,4,1,1620 +BRDA:53,5,0,1648 +BRDA:53,5,1,82 +BRDA:57,6,0,261 +BRDA:57,6,1,1387 +BRDA:75,7,0,50 +BRDA:75,7,1,1 +BRDA:78,8,0,19 +BRDA:78,8,1,32 BRDA:104,9,0,1 -BRDA:104,9,1,272 -BRDA:100,10,0,273 +BRDA:104,9,1,260 +BRDA:100,10,0,261 BRDA:100,10,1,1 BRDA:100,10,2,1 BRDA:100,10,3,1 @@ -3240,28 +3240,28 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/d FN:30,calcAlign FNF:1 FNH:1 -FNDA:58,calcAlign +FNDA:45,calcAlign DA:4,1 DA:30,1 -DA:31,58 +DA:31,45 DA:33,12 -DA:36,25 +DA:36,13 DA:39,7 -DA:43,12 +DA:43,11 DA:47,2 DA:50,0 LF:9 LH:8 BRDA:32,0,0,12 -BRDA:32,0,1,25 +BRDA:32,0,1,13 BRDA:32,0,2,7 -BRDA:32,0,3,8 -BRDA:32,0,4,12 +BRDA:32,0,3,7 +BRDA:32,0,4,11 BRDA:32,0,5,2 BRDA:32,0,6,2 BRDA:32,0,7,0 BRDA:36,1,0,2 -BRDA:36,1,1,23 +BRDA:36,1,1,11 BRDA:39,2,0,3 BRDA:39,2,1,4 BRF:12 @@ -3275,23 +3275,23 @@ FN:66,ptToPx FN:70,pxToPt FNF:4 FNH:4 -FNDA:192,parseValueWithUnit +FNDA:140,parseValueWithUnit FNDA:26,getFontSize FNDA:52,ptToPx FNDA:25,pxToPt DA:1,1 DA:3,1 DA:11,1 -DA:12,201 -DA:14,353 -DA:16,192 -DA:17,192 -DA:19,192 -DA:20,171 -DA:21,171 -DA:23,171 -DA:25,97 -DA:26,97 +DA:12,149 +DA:14,249 +DA:16,140 +DA:17,140 +DA:19,140 +DA:20,119 +DA:21,119 +DA:23,119 +DA:25,45 +DA:26,45 DA:28,40 DA:29,40 DA:31,9 @@ -3301,9 +3301,9 @@ DA:35,8 DA:37,9 DA:38,9 DA:41,8 -DA:45,192 +DA:45,140 DA:46,25 -DA:49,192 +DA:49,140 DA:53,26 DA:54,0 DA:55,26 @@ -3317,21 +3317,21 @@ DA:71,25 LF:35 LH:34 BRDA:12,0,0,9 -BRDA:12,0,1,183 -BRDA:14,1,0,161 +BRDA:12,0,1,131 +BRDA:14,1,0,109 BRDA:14,1,1,31 -BRDA:19,2,0,171 +BRDA:19,2,0,119 BRDA:19,2,1,21 -BRDA:24,3,0,97 +BRDA:24,3,0,45 BRDA:24,3,1,40 BRDA:24,3,2,9 BRDA:24,3,3,8 BRDA:24,3,4,9 BRDA:24,3,5,8 BRDA:45,4,0,25 -BRDA:45,4,1,167 -BRDA:45,5,0,192 -BRDA:45,5,1,87 +BRDA:45,4,1,115 +BRDA:45,5,0,140 +BRDA:45,5,1,83 BRDA:53,6,0,0 BRDA:53,6,1,26 BRDA:55,7,0,14 @@ -3344,16 +3344,16 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setPara FN:7,setParagraphNotImplicit FNF:1 FNH:1 -FNDA:152,setParagraphNotImplicit +FNDA:154,setParagraphNotImplicit DA:7,1 -DA:8,152 +DA:8,154 DA:9,46 LF:3 LH:3 BRDA:8,0,0,46 -BRDA:8,0,1,106 -BRDA:8,1,0,152 -BRDA:8,1,1,150 +BRDA:8,0,1,108 +BRDA:8,1,0,154 +BRDA:8,1,1,152 BRF:4 BRH:4 end_of_record @@ -3362,9 +3362,9 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlo FN:8,addBlock FNF:1 FNH:1 -FNDA:922,addBlock +FNDA:831,addBlock DA:8,1 -DA:9,922 +DA:9,831 LF:2 LH:2 BRF:0 @@ -3377,24 +3377,24 @@ FN:25,addCode FN:36,addDecorators FNF:3 FNH:3 -FNDA:461,addLink -FNDA:441,addCode -FNDA:432,addDecorators +FNDA:421,addLink +FNDA:401,addCode +FNDA:392,addDecorators DA:11,1 -DA:12,461 +DA:12,421 DA:13,53 DA:25,1 -DA:26,441 +DA:26,401 DA:27,13 DA:36,1 -DA:37,432 -DA:38,432 +DA:37,392 +DA:38,392 LF:9 LH:9 BRDA:12,0,0,53 -BRDA:12,0,1,408 +BRDA:12,0,1,368 BRDA:26,1,0,13 -BRDA:26,1,1,428 +BRDA:26,1,1,388 BRF:4 BRH:4 end_of_record @@ -3403,39 +3403,39 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSeg FN:16,addSegment FNF:1 FNH:1 -FNDA:587,addSegment +FNDA:539,addSegment DA:1,1 DA:2,1 DA:16,1 -DA:21,587 -DA:24,587 -DA:25,264 -DA:27,323 -DA:28,323 -DA:31,587 -DA:33,587 -DA:34,77 -DA:35,70 -DA:38,510 +DA:21,539 +DA:24,539 +DA:25,220 +DA:27,319 +DA:28,319 +DA:31,539 +DA:33,539 +DA:34,72 +DA:35,65 +DA:38,467 DA:39,5 -DA:42,510 +DA:42,467 LF:15 LH:15 -BRDA:24,0,0,264 -BRDA:24,0,1,323 -BRDA:24,1,0,319 -BRDA:24,1,1,268 -BRDA:24,2,0,587 -BRDA:24,2,1,587 -BRDA:33,3,0,77 -BRDA:33,3,1,510 -BRDA:34,4,0,70 +BRDA:24,0,0,220 +BRDA:24,0,1,319 +BRDA:24,1,0,315 +BRDA:24,1,1,224 +BRDA:24,2,0,539 +BRDA:24,2,1,539 +BRDA:33,3,0,72 +BRDA:33,3,1,467 +BRDA:34,4,0,65 BRDA:34,4,1,7 -BRDA:34,5,0,77 -BRDA:34,5,1,18 +BRDA:34,5,0,72 +BRDA:34,5,1,17 BRDA:38,6,0,5 -BRDA:38,6,1,505 -BRDA:38,7,0,510 +BRDA:38,6,1,462 +BRDA:38,7,0,467 BRDA:38,7,1,66 BRDA:38,8,0,47 BRDA:38,8,1,19 @@ -3449,10 +3449,10 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpa FN:10,hasSpacesOnly FNF:1 FNH:1 -FNDA:807,hasSpacesOnly +FNDA:749,hasSpacesOnly DA:3,1 DA:10,1 -DA:11,807 +DA:11,749 LF:3 LH:3 BRF:0 @@ -3470,32 +3470,32 @@ FN:90,isBlock FN:96,isBlockGroup FNF:8 FNH:8 -FNDA:1109,isBlockEmpty -FNDA:78,(anonymous_1) -FNDA:207,isBlockGroupEmpty -FNDA:632,isSegmentEmpty +FNDA:1000,isBlockEmpty +FNDA:70,(anonymous_1) +FNDA:195,isBlockGroupEmpty +FNDA:573,isSegmentEmpty FNDA:23,isEmpty FNDA:6,isSegment FNDA:13,isBlock FNDA:23,isBlockGroup DA:10,1 -DA:11,1109 -DA:13,859 -DA:16,78 -DA:19,169 +DA:11,1000 +DA:13,764 +DA:16,70 +DA:19,163 DA:22,2 DA:25,2 DA:32,1 -DA:33,207 -DA:36,61 +DA:33,195 +DA:36,49 DA:39,134 DA:44,12 DA:47,0 DA:54,1 -DA:55,632 -DA:57,443 -DA:60,19 -DA:63,170 +DA:55,573 +DA:57,403 +DA:60,15 +DA:63,155 DA:70,1 DA:73,23 DA:74,10 @@ -3509,22 +3509,22 @@ DA:93,13 DA:99,23 LF:29 LH:27 -BRDA:12,0,0,859 -BRDA:12,0,1,77 -BRDA:12,0,2,169 +BRDA:12,0,0,764 +BRDA:12,0,1,69 +BRDA:12,0,2,163 BRDA:12,0,3,2 BRDA:12,0,4,2 -BRDA:34,1,0,61 +BRDA:34,1,0,49 BRDA:34,1,1,134 BRDA:34,1,2,3 BRDA:34,1,3,11 BRDA:34,1,4,12 BRDA:34,1,5,0 -BRDA:36,2,0,37 +BRDA:36,2,0,25 BRDA:36,2,1,24 -BRDA:56,3,0,443 -BRDA:56,3,1,19 -BRDA:56,3,2,170 +BRDA:56,3,0,403 +BRDA:56,3,1,15 +BRDA:56,3,2,155 BRDA:73,4,0,10 BRDA:73,4,1,13 BRDA:75,5,0,7 @@ -3554,15 +3554,15 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhit FN:10,isWhiteSpacePreserved FNF:1 FNH:1 -FNDA:780,isWhiteSpacePreserved +FNDA:686,isWhiteSpacePreserved DA:4,1 DA:10,1 -DA:11,780 +DA:11,686 LF:3 LH:3 -BRDA:12,0,0,780 -BRDA:12,0,1,99 -BRDA:12,0,2,744 +BRDA:12,0,0,686 +BRDA:12,0,1,42 +BRDA:12,0,2,662 BRF:3 BRH:3 end_of_record @@ -3571,41 +3571,41 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normal FN:15,normalizeContentModel FNF:1 FNH:1 -FNDA:509,normalizeContentModel +FNDA:475,normalizeContentModel DA:2,1 DA:3,1 DA:4,1 DA:15,1 -DA:16,509 -DA:17,907 -DA:19,907 -DA:21,169 +DA:16,475 +DA:17,801 +DA:19,801 +DA:21,163 DA:22,2 DA:23,2 -DA:25,167 -DA:27,169 -DA:29,704 -DA:30,704 -DA:32,31 -DA:33,44 -DA:34,91 -DA:35,91 -DA:39,31 -DA:42,907 -DA:43,275 +DA:25,161 +DA:27,163 +DA:29,609 +DA:30,609 +DA:32,26 +DA:33,37 +DA:34,77 +DA:35,77 +DA:39,26 +DA:42,801 +DA:43,218 LF:21 LH:21 -BRDA:20,0,0,169 -BRDA:20,0,1,704 -BRDA:20,0,2,31 +BRDA:20,0,0,163 +BRDA:20,0,1,609 +BRDA:20,0,2,26 BRDA:21,1,0,2 -BRDA:21,1,1,167 -BRDA:21,2,0,169 +BRDA:21,1,1,161 +BRDA:21,2,0,163 BRDA:21,2,1,132 -BRDA:34,3,0,91 +BRDA:34,3,0,77 BRDA:34,3,1,0 -BRDA:42,4,0,275 -BRDA:42,4,1,632 +BRDA:42,4,0,218 +BRDA:42,4,1,583 BRF:11 BRH:10 end_of_record @@ -3616,53 +3616,53 @@ FN:23,(anonymous_1) FN:43,removeEmptySegments FNF:3 FNH:3 -FNDA:704,normalizeParagraph -FNDA:118,(anonymous_1) -FNDA:704,removeEmptySegments +FNDA:609,normalizeParagraph +FNDA:104,(anonymous_1) +FNDA:609,removeEmptySegments DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:10,1 -DA:11,704 -DA:13,704 -DA:14,253 -DA:15,253 -DA:17,253 +DA:11,609 +DA:13,609 +DA:14,221 +DA:15,221 +DA:17,221 DA:21,9 -DA:22,244 -DA:23,118 -DA:27,47 -DA:31,14 -DA:36,704 -DA:37,673 -DA:40,704 -DA:44,704 -DA:45,626 +DA:22,212 +DA:23,104 +DA:27,40 +DA:31,12 +DA:36,609 +DA:37,590 +DA:40,609 +DA:44,609 +DA:45,567 DA:46,6 LF:21 LH:21 -BRDA:13,0,0,253 -BRDA:13,0,1,451 -BRDA:13,1,0,704 -BRDA:13,1,1,324 +BRDA:13,0,0,221 +BRDA:13,0,1,388 +BRDA:13,1,0,609 +BRDA:13,1,1,277 BRDA:17,2,0,9 -BRDA:17,2,1,244 -BRDA:18,3,0,253 -BRDA:18,3,1,36 -BRDA:18,3,2,28 -BRDA:22,4,0,47 -BRDA:22,4,1,197 -BRDA:22,5,0,244 -BRDA:22,5,1,111 -BRDA:27,6,0,14 -BRDA:27,6,1,33 -BRDA:28,7,0,47 -BRDA:28,7,1,16 -BRDA:36,8,0,673 -BRDA:36,8,1,31 +BRDA:17,2,1,212 +BRDA:18,3,0,221 +BRDA:18,3,1,35 +BRDA:18,3,2,27 +BRDA:22,4,0,40 +BRDA:22,4,1,172 +BRDA:22,5,0,212 +BRDA:22,5,1,97 +BRDA:27,6,0,12 +BRDA:27,6,1,28 +BRDA:28,7,0,40 +BRDA:28,7,1,14 +BRDA:36,8,0,590 +BRDA:36,8,1,19 BRDA:45,9,0,6 -BRDA:45,9,1,620 +BRDA:45,9,1,561 BRF:21 BRH:21 end_of_record @@ -3679,26 +3679,26 @@ FN:131,(anonymous_7) FN:148,normalizeLastTextSegment FNF:9 FNH:9 -FNDA:673,normalizeAllSegments -FNDA:579,(anonymous_1) +FNDA:590,normalizeAllSegments +FNDA:547,(anonymous_1) FNDA:22,normalizeSingleSegment FNDA:8,createNormalizeSegmentContext -FNDA:758,resetNormalizeSegmentContext -FNDA:609,normalizeSegment -FNDA:728,normalizeTextSegments -FNDA:397,(anonymous_7) -FNDA:728,normalizeLastTextSegment +FNDA:670,resetNormalizeSegmentContext +FNDA:577,normalizeSegment +FNDA:640,normalizeTextSegments +FNDA:380,(anonymous_7) +FNDA:640,normalizeLastTextSegment DA:1,1 DA:8,1 DA:9,1 DA:10,1 DA:11,1 DA:16,1 -DA:17,673 -DA:19,673 -DA:20,579 -DA:23,673 -DA:24,673 +DA:17,590 +DA:19,590 +DA:20,547 +DA:23,590 +DA:24,590 DA:32,1 DA:34,44 DA:36,22 @@ -3706,76 +3706,76 @@ DA:38,22 DA:39,22 DA:56,1 DA:57,8 -DA:63,758 +DA:63,670 DA:75,1 -DA:76,609 -DA:78,55 -DA:79,55 -DA:82,55 -DA:83,55 -DA:91,21 -DA:92,21 -DA:93,21 -DA:96,424 -DA:97,424 -DA:98,424 -DA:100,424 -DA:101,424 -DA:103,424 -DA:104,417 +DA:76,577 +DA:78,50 +DA:79,50 +DA:82,50 +DA:83,50 +DA:91,19 +DA:92,19 +DA:93,19 +DA:96,407 +DA:97,407 +DA:98,407 +DA:100,407 +DA:101,407 +DA:103,407 +DA:104,400 DA:106,37 -DA:112,417 +DA:112,400 DA:114,44 -DA:121,424 -DA:123,424 -DA:131,728 -DA:134,397 -DA:135,51 -DA:137,51 +DA:121,407 +DA:123,407 +DA:131,640 +DA:134,380 +DA:135,52 +DA:137,52 DA:142,3 -DA:152,728 +DA:152,640 DA:154,30 LF:47 LH:47 BRDA:34,0,0,22 BRDA:34,0,1,0 -BRDA:63,1,0,55 -BRDA:63,1,1,703 -BRDA:63,2,0,758 -BRDA:63,2,1,758 -BRDA:77,3,0,55 -BRDA:77,3,1,0 -BRDA:77,3,2,1 -BRDA:77,3,3,21 -BRDA:77,3,4,424 -BRDA:103,4,0,417 +BRDA:63,1,0,50 +BRDA:63,1,1,620 +BRDA:63,2,0,670 +BRDA:63,2,1,670 +BRDA:77,3,0,50 +BRDA:77,3,1,2 +BRDA:77,3,2,3 +BRDA:77,3,3,19 +BRDA:77,3,4,407 +BRDA:103,4,0,400 BRDA:103,4,1,7 BRDA:104,5,0,37 -BRDA:104,5,1,380 +BRDA:104,5,1,363 BRDA:108,6,0,33 BRDA:108,6,1,4 BRDA:112,7,0,44 -BRDA:112,7,1,373 +BRDA:112,7,1,356 BRDA:116,8,0,38 BRDA:116,8,1,6 -BRDA:134,9,0,51 -BRDA:134,9,1,346 +BRDA:134,9,0,52 +BRDA:134,9,1,328 BRDA:137,10,0,3 -BRDA:137,10,1,48 -BRDA:138,11,0,51 +BRDA:137,10,1,49 +BRDA:138,11,0,52 BRDA:138,11,1,4 BRDA:138,11,2,4 BRDA:152,12,0,30 -BRDA:152,12,1,698 -BRDA:152,13,0,728 -BRDA:152,13,1,346 -BRDA:152,13,2,346 +BRDA:152,12,1,610 +BRDA:152,13,0,640 +BRDA:152,13,1,329 +BRDA:152,13,2,328 BRDA:152,14,0,0 -BRDA:152,14,1,346 -BRDA:152,15,0,346 -BRDA:152,15,1,346 +BRDA:152,14,1,328 +BRDA:152,15,0,328 +BRDA:152,15,1,328 BRF:37 -BRH:34 +BRH:35 end_of_record TN: SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts @@ -3813,13 +3813,13 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:7,createBr FNF:1 FNH:1 -FNDA:135,createBr +FNDA:128,createBr DA:7,1 -DA:8,135 +DA:8,128 LF:2 LH:2 -BRDA:10,0,0,50 -BRDA:10,0,1,85 +BRDA:10,0,0,42 +BRDA:10,0,1,86 BRF:2 BRH:2 end_of_record @@ -3828,16 +3828,16 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:7,createContentModelDocument FNF:1 FNH:1 -FNDA:978,createContentModelDocument +FNDA:969,createContentModelDocument DA:7,1 -DA:10,978 -DA:15,978 -DA:16,57 -DA:19,978 +DA:10,969 +DA:15,969 +DA:16,52 +DA:19,969 LF:5 LH:5 -BRDA:15,0,0,57 -BRDA:15,0,1,921 +BRDA:15,0,0,52 +BRDA:15,0,1,917 BRF:2 BRH:2 end_of_record @@ -3861,9 +3861,9 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:11,createEntity FNF:1 FNH:1 -FNDA:32,createEntity +FNDA:38,createEntity DA:11,1 -DA:18,32 +DA:18,38 LF:2 LH:2 BRF:0 @@ -3874,12 +3874,12 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:11,createFormatContainer FNF:1 FNH:1 -FNDA:128,createFormatContainer +FNDA:122,createFormatContainer DA:11,1 -DA:15,128 +DA:15,122 LF:2 LH:2 -BRDA:20,0,0,128 +BRDA:20,0,0,122 BRDA:20,0,1,52 BRF:2 BRH:2 @@ -3917,12 +3917,12 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:8,createImage FNF:1 FNH:1 -FNDA:63,createImage +FNDA:60,createImage DA:8,1 -DA:9,63 +DA:9,60 LF:2 LH:2 -BRDA:12,0,0,25 +BRDA:12,0,0,22 BRDA:12,0,1,38 BRF:2 BRH:2 @@ -3933,16 +3933,16 @@ FN:14,createListItem FN:23,(anonymous_1) FNF:2 FNH:2 -FNDA:298,createListItem -FNDA:364,(anonymous_1) +FNDA:295,createListItem +FNDA:359,(anonymous_1) DA:1,1 DA:2,1 DA:14,1 -DA:18,298 -DA:23,364 +DA:18,295 +DA:23,359 LF:5 LH:5 -BRDA:23,0,0,298 +BRDA:23,0,0,295 BRDA:23,0,1,0 BRF:2 BRH:1 @@ -3952,9 +3952,9 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:13,createListLevel FNF:1 FNH:1 -FNDA:661,createListLevel +FNDA:651,createListLevel DA:13,1 -DA:18,661 +DA:18,651 LF:2 LH:2 BRF:0 @@ -3965,28 +3965,28 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:15,createParagraph FNF:1 FNH:1 -FNDA:1799,createParagraph +FNDA:1710,createParagraph DA:15,1 -DA:21,1799 -DA:27,1799 -DA:28,93 -DA:31,1799 -DA:32,804 -DA:35,1799 -DA:36,80 -DA:42,1799 +DA:21,1710 +DA:27,1710 +DA:28,75 +DA:31,1710 +DA:32,755 +DA:35,1710 +DA:36,61 +DA:42,1710 LF:9 LH:9 -BRDA:24,0,0,821 -BRDA:24,0,1,978 -BRDA:27,1,0,93 -BRDA:27,1,1,1706 -BRDA:27,2,0,1799 -BRDA:27,2,1,257 -BRDA:31,3,0,804 -BRDA:31,3,1,995 -BRDA:35,4,0,80 -BRDA:35,4,1,1719 +BRDA:24,0,0,735 +BRDA:24,0,1,975 +BRDA:27,1,0,75 +BRDA:27,1,1,1635 +BRDA:27,2,0,1710 +BRDA:27,2,1,217 +BRDA:31,3,0,755 +BRDA:31,3,1,955 +BRDA:35,4,0,61 +BRDA:35,4,1,1649 BRF:10 BRH:10 end_of_record @@ -3995,13 +3995,13 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:11,createParagraphDecorator FNF:1 FNH:1 -FNDA:80,createParagraphDecorator +FNDA:61,createParagraphDecorator DA:11,1 -DA:15,80 +DA:15,61 LF:2 LH:2 -BRDA:17,0,0,80 -BRDA:17,0,1,72 +BRDA:17,0,0,61 +BRDA:17,0,1,53 BRF:2 BRH:2 end_of_record @@ -4010,13 +4010,13 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:10,createSelectionMarker FNF:1 FNH:1 -FNDA:622,createSelectionMarker +FNDA:615,createSelectionMarker DA:10,1 -DA:13,622 +DA:13,615 LF:2 LH:2 -BRDA:16,0,0,316 -BRDA:16,0,1,306 +BRDA:16,0,0,312 +BRDA:16,0,1,303 BRF:2 BRH:2 end_of_record @@ -4025,15 +4025,15 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:12,createTable FNF:1 FNH:1 -FNDA:249,createTable +FNDA:246,createTable DA:12,1 -DA:13,249 -DA:15,249 -DA:16,381 -DA:23,249 +DA:13,246 +DA:15,246 +DA:16,376 +DA:23,246 LF:5 LH:5 -BRDA:26,0,0,249 +BRDA:26,0,0,246 BRDA:26,0,1,199 BRF:2 BRH:2 @@ -4043,18 +4043,18 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:10,createTableCell FNF:1 FNH:1 -FNDA:872,createTableCell +FNDA:862,createTableCell DA:10,1 -DA:17,872 -DA:19,872 -DA:20,872 +DA:17,862 +DA:19,862 +DA:20,862 LF:4 LH:4 BRDA:17,0,0,138 -BRDA:17,0,1,734 +BRDA:17,0,1,724 BRDA:19,1,0,138 -BRDA:19,1,1,734 -BRDA:23,2,0,490 +BRDA:19,1,1,724 +BRDA:23,2,0,480 BRDA:23,2,1,382 BRF:6 BRH:6 @@ -4064,13 +4064,13 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/crea FN:8,createText FNF:1 FNH:1 -FNDA:1002,createText +FNDA:971,createText DA:8,1 -DA:9,1002 +DA:9,971 LF:2 LH:2 -BRDA:12,0,0,451 -BRDA:12,0,1,551 +BRDA:12,0,0,419 +BRDA:12,0,1,552 BRF:2 BRH:2 end_of_record @@ -4081,104 +4081,104 @@ FN:50,extractSelectionRange FN:94,calcPosition FNF:3 FNH:3 -FNDA:119,contentModelToDom -FNDA:119,extractSelectionRange -FNDA:44,calcPosition +FNDA:113,contentModelToDom +FNDA:113,extractSelectionRange +FNDA:36,calcPosition DA:1,1 DA:2,1 DA:3,1 DA:32,1 -DA:39,119 -DA:41,119 -DA:43,119 -DA:45,119 -DA:47,119 -DA:52,119 -DA:55,357 -DA:60,119 +DA:39,113 +DA:41,113 +DA:43,113 +DA:45,113 +DA:47,113 +DA:52,113 +DA:55,339 +DA:60,113 DA:61,0 -DA:67,119 -DA:71,22 -DA:73,22 -DA:78,97 +DA:67,113 +DA:71,18 +DA:73,18 +DA:78,95 DA:79,0 -DA:90,97 -DA:97,44 -DA:98,44 +DA:90,95 +DA:97,36 +DA:98,36 DA:99,0 -DA:100,44 -DA:101,42 -DA:103,2 -DA:112,44 +DA:100,36 +DA:101,36 +DA:103,0 +DA:112,36 DA:113,0 -DA:116,44 +DA:116,36 LF:28 -LH:24 +LH:23 BRDA:60,0,0,0 -BRDA:60,0,1,119 -BRDA:60,1,0,119 +BRDA:60,0,1,113 +BRDA:60,1,0,113 BRDA:60,1,1,0 -BRDA:60,2,0,119 -BRDA:60,2,1,119 -BRDA:67,3,0,22 -BRDA:67,3,1,97 -BRDA:68,4,0,119 -BRDA:68,4,1,22 -BRDA:68,5,0,119 -BRDA:68,5,1,22 -BRDA:69,6,0,22 -BRDA:69,6,1,22 +BRDA:60,2,0,113 +BRDA:60,2,1,113 +BRDA:67,3,0,18 +BRDA:67,3,1,95 +BRDA:68,4,0,113 +BRDA:68,4,1,18 +BRDA:68,5,0,113 +BRDA:68,5,1,18 +BRDA:69,6,0,18 +BRDA:69,6,1,18 BRDA:78,7,0,0 -BRDA:78,7,1,97 -BRDA:78,8,0,97 +BRDA:78,7,1,95 +BRDA:78,8,0,95 BRDA:78,8,1,0 -BRDA:78,9,0,97 -BRDA:78,9,1,97 -BRDA:97,10,0,44 +BRDA:78,9,0,95 +BRDA:78,9,1,95 +BRDA:97,10,0,36 BRDA:97,10,1,0 BRDA:98,11,0,0 -BRDA:98,11,1,44 -BRDA:100,12,0,42 -BRDA:100,12,1,2 -BRDA:101,13,0,42 -BRDA:101,13,1,18 +BRDA:98,11,1,36 +BRDA:100,12,0,36 +BRDA:100,12,1,0 +BRDA:101,13,0,36 +BRDA:101,13,1,16 BRDA:101,14,0,0 -BRDA:101,14,1,42 -BRDA:101,15,0,42 -BRDA:101,15,1,42 +BRDA:101,14,1,36 +BRDA:101,15,0,36 +BRDA:101,15,1,36 BRDA:112,16,0,0 -BRDA:112,16,1,44 +BRDA:112,16,1,36 BRDA:112,17,0,0 -BRDA:112,17,1,44 -BRDA:112,18,0,44 -BRDA:112,18,1,44 +BRDA:112,17,1,36 +BRDA:112,18,0,36 +BRDA:112,18,1,36 BRDA:113,19,0,0 BRDA:113,19,1,0 BRDA:113,20,0,0 BRDA:113,20,1,0 BRF:42 -BRH:29 +BRH:28 end_of_record TN: SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts FN:14,createModelToDomContext FNF:1 FNH:1 -FNDA:430,createModelToDomContext +FNDA:419,createModelToDomContext DA:1,1 DA:2,1 DA:4,1 DA:14,1 -DA:18,430 -DA:20,430 +DA:18,419 +DA:20,419 LF:6 LH:6 -BRDA:18,0,0,430 -BRDA:18,0,1,252 -BRDA:40,1,0,430 -BRDA:40,1,1,354 -BRDA:44,2,0,430 -BRDA:44,2,1,429 +BRDA:18,0,0,419 +BRDA:18,0,1,248 +BRDA:40,1,0,419 +BRDA:40,1,1,344 +BRDA:44,2,0,419 +BRDA:44,2,1,418 BRF:6 BRH:6 end_of_record @@ -4212,36 +4212,36 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:474,(anonymous_0) +FNDA:441,(anonymous_0) DA:10,1 -DA:17,474 -DA:19,474 -DA:21,17 -DA:22,17 -DA:24,292 -DA:25,292 +DA:17,441 +DA:19,441 +DA:21,14 +DA:22,14 +DA:24,268 +DA:25,268 DA:27,3 DA:28,3 DA:30,2 DA:31,2 -DA:33,160 +DA:33,154 DA:35,15 DA:36,15 -DA:39,28 -DA:40,28 +DA:39,22 +DA:40,22 DA:43,117 DA:44,117 -DA:47,160 -DA:50,474 +DA:47,154 +DA:50,441 LF:20 LH:20 -BRDA:20,0,0,17 -BRDA:20,0,1,292 +BRDA:20,0,0,14 +BRDA:20,0,1,268 BRDA:20,0,2,3 BRDA:20,0,3,2 -BRDA:20,0,4,160 +BRDA:20,0,4,154 BRDA:34,1,0,15 -BRDA:34,1,1,28 +BRDA:34,1,1,22 BRDA:34,1,2,117 BRF:8 BRH:8 @@ -4252,33 +4252,33 @@ FN:10,(anonymous_0) FN:21,(anonymous_1) FNF:2 FNH:2 -FNDA:358,(anonymous_0) -FNDA:460,(anonymous_1) +FNDA:338,(anonymous_0) +FNDA:427,(anonymous_1) DA:10,1 -DA:16,358 -DA:17,358 -DA:18,358 -DA:20,358 -DA:21,358 -DA:26,460 -DA:31,379 -DA:34,460 -DA:38,358 -DA:39,24 -DA:41,24 -DA:42,24 -DA:45,358 +DA:16,338 +DA:17,338 +DA:18,338 +DA:20,338 +DA:21,338 +DA:26,427 +DA:31,346 +DA:34,427 +DA:38,338 +DA:39,20 +DA:41,20 +DA:42,20 +DA:45,338 LF:14 LH:14 -BRDA:26,0,0,379 +BRDA:26,0,0,346 BRDA:26,0,1,81 -BRDA:27,1,0,460 -BRDA:27,1,1,151 +BRDA:27,1,0,427 +BRDA:27,1,1,138 BRDA:27,1,2,94 BRDA:41,2,0,0 -BRDA:41,2,1,24 -BRDA:41,3,0,24 -BRDA:41,3,1,24 +BRDA:41,2,1,20 +BRDA:41,3,0,20 +BRDA:41,3,1,20 BRF:9 BRH:8 end_of_record @@ -4287,14 +4287,14 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:11,(anonymous_0) FNF:1 FNH:1 -FNDA:19,(anonymous_0) +FNDA:14,(anonymous_0) DA:1,1 DA:11,1 -DA:17,19 -DA:18,19 -DA:19,19 -DA:20,19 -DA:22,19 +DA:17,14 +DA:18,14 +DA:19,14 +DA:20,14 +DA:22,14 LF:7 LH:7 BRF:0 @@ -4408,53 +4408,53 @@ FN:37,(anonymous_1) FN:50,(anonymous_2) FNF:3 FNH:3 -FNDA:30,(anonymous_0) -FNDA:27,(anonymous_1) +FNDA:24,(anonymous_0) +FNDA:21,(anonymous_1) FNDA:6,(anonymous_2) DA:1,1 DA:2,1 DA:4,1 DA:5,1 DA:15,1 -DA:22,30 -DA:24,30 +DA:22,24 +DA:24,24 DA:25,2 DA:27,2 -DA:28,28 -DA:29,27 -DA:31,27 +DA:28,22 +DA:29,21 +DA:31,21 DA:32,9 -DA:35,27 -DA:37,27 -DA:38,27 -DA:39,27 -DA:46,27 -DA:49,27 +DA:35,21 +DA:37,21 +DA:38,21 +DA:39,21 +DA:46,21 +DA:49,21 DA:50,6 DA:51,6 -DA:54,21 -DA:57,27 -DA:60,30 -DA:61,29 -DA:64,30 +DA:54,15 +DA:57,21 +DA:60,24 +DA:61,23 +DA:64,24 LF:26 LH:26 BRDA:22,0,0,12 -BRDA:22,0,1,18 +BRDA:22,0,1,12 BRDA:24,1,0,2 -BRDA:24,1,1,28 -BRDA:28,2,0,27 +BRDA:24,1,1,22 +BRDA:28,2,0,21 BRDA:28,2,1,1 BRDA:31,3,0,9 -BRDA:31,3,1,18 +BRDA:31,3,1,12 BRDA:49,4,0,6 -BRDA:49,4,1,21 -BRDA:60,5,0,29 +BRDA:49,4,1,15 +BRDA:60,5,0,23 BRDA:60,5,1,1 -BRDA:61,6,0,28 +BRDA:61,6,0,22 BRDA:61,6,1,1 -BRDA:61,7,0,29 -BRDA:61,7,1,29 +BRDA:61,7,0,23 +BRDA:61,7,1,23 BRF:16 BRH:16 end_of_record @@ -4504,50 +4504,50 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:13,(anonymous_0) FNF:1 FNH:1 -FNDA:16,(anonymous_0) +FNDA:13,(anonymous_0) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:19,16 -DA:20,16 -DA:22,16 -DA:23,16 -DA:25,16 -DA:27,16 -DA:28,2 -DA:31,16 +DA:19,13 +DA:20,13 +DA:22,13 +DA:23,13 +DA:25,13 +DA:27,13 +DA:28,1 +DA:31,13 DA:32,1 -DA:35,16 -DA:36,16 -DA:38,16 -DA:39,16 -DA:40,16 -DA:42,16 -DA:43,2 -DA:46,16 -DA:47,2 -DA:50,16 +DA:35,13 +DA:36,13 +DA:38,13 +DA:39,13 +DA:40,13 +DA:42,13 +DA:43,0 +DA:46,13 +DA:47,0 +DA:50,13 DA:51,1 -DA:56,16 +DA:56,13 LF:25 -LH:25 -BRDA:27,0,0,2 -BRDA:27,0,1,14 +LH:23 +BRDA:27,0,0,1 +BRDA:27,0,1,12 BRDA:31,1,0,1 -BRDA:31,1,1,15 -BRDA:39,2,0,2 -BRDA:39,2,1,14 -BRDA:40,3,0,2 -BRDA:40,3,1,14 -BRDA:42,4,0,2 -BRDA:42,4,1,14 -BRDA:46,5,0,2 -BRDA:46,5,1,14 +BRDA:31,1,1,12 +BRDA:39,2,0,0 +BRDA:39,2,1,13 +BRDA:40,3,0,0 +BRDA:40,3,1,13 +BRDA:42,4,0,0 +BRDA:42,4,1,13 +BRDA:46,5,0,0 +BRDA:46,5,1,13 BRDA:50,6,0,1 -BRDA:50,6,1,15 +BRDA:50,6,1,12 BRF:14 -BRH:14 +BRH:10 end_of_record TN: SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts @@ -4555,68 +4555,68 @@ FN:13,(anonymous_0) FN:57,(anonymous_2) FNF:2 FNH:2 -FNDA:152,(anonymous_0) -FNDA:115,(anonymous_2) +FNDA:149,(anonymous_0) +FNDA:111,(anonymous_2) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:20,152 -DA:21,152 -DA:23,152 +DA:20,149 +DA:21,149 +DA:23,149 DA:24,62 -DA:30,152 -DA:31,123 -DA:32,123 -DA:34,123 -DA:39,14 -DA:44,152 -DA:47,152 -DA:48,115 -DA:49,115 -DA:50,115 -DA:52,115 -DA:54,115 -DA:57,115 -DA:58,115 -DA:60,115 +DA:30,149 +DA:31,120 +DA:32,120 +DA:34,120 +DA:39,12 +DA:44,149 +DA:47,149 +DA:48,111 +DA:49,111 +DA:50,111 +DA:52,111 +DA:54,111 +DA:57,111 +DA:58,111 +DA:60,111 DA:65,0 -DA:68,115 -DA:70,115 -DA:72,115 -DA:74,115 -DA:77,152 +DA:68,111 +DA:70,111 +DA:72,111 +DA:74,111 +DA:77,149 LF:29 LH:28 BRDA:23,0,0,62 -BRDA:23,0,1,90 -BRDA:30,1,0,261 -BRDA:30,1,1,214 -BRDA:34,2,0,14 -BRDA:34,2,1,109 -BRDA:35,3,0,123 -BRDA:35,3,1,116 -BRDA:35,3,2,112 -BRDA:35,3,3,30 -BRDA:36,4,0,18 +BRDA:23,0,1,87 +BRDA:30,1,0,257 +BRDA:30,1,1,210 +BRDA:34,2,0,12 +BRDA:34,2,1,108 +BRDA:35,3,0,120 +BRDA:35,3,1,113 +BRDA:35,3,2,111 +BRDA:35,3,3,29 +BRDA:36,4,0,15 BRDA:36,4,1,98 -BRDA:36,5,0,116 -BRDA:36,5,1,116 -BRDA:49,6,0,115 +BRDA:36,5,0,113 +BRDA:36,5,1,113 +BRDA:49,6,0,111 BRDA:49,6,1,0 -BRDA:52,7,0,69 -BRDA:52,7,1,46 -BRDA:58,8,0,115 -BRDA:58,8,1,105 +BRDA:52,7,0,67 +BRDA:52,7,1,44 +BRDA:58,8,0,111 +BRDA:58,8,1,104 BRDA:60,9,0,0 -BRDA:60,9,1,115 -BRDA:61,10,0,115 -BRDA:61,10,1,10 -BRDA:61,10,2,3 -BRDA:74,11,0,112 +BRDA:60,9,1,111 +BRDA:61,10,0,111 +BRDA:61,10,1,7 +BRDA:61,10,2,2 +BRDA:74,11,0,108 BRDA:74,11,1,3 -BRDA:74,12,0,115 -BRDA:74,12,1,115 +BRDA:74,12,0,111 +BRDA:74,12,1,111 BRF:29 BRH:27 end_of_record @@ -4695,11 +4695,11 @@ FN:51,(anonymous_3) FN:73,(anonymous_4) FNF:5 FNH:5 -FNDA:308,(anonymous_0) -FNDA:301,(anonymous_1) -FNDA:12,(anonymous_2) -FNDA:301,(anonymous_3) -FNDA:354,(anonymous_4) +FNDA:284,(anonymous_0) +FNDA:277,(anonymous_1) +FNDA:10,(anonymous_2) +FNDA:277,(anonymous_3) +FNDA:311,(anonymous_4) DA:1,1 DA:2,1 DA:3,1 @@ -4707,91 +4707,91 @@ DA:4,1 DA:5,1 DA:12,1 DA:17,1 -DA:24,308 -DA:26,308 +DA:24,284 +DA:26,284 DA:27,7 -DA:29,301 -DA:31,301 -DA:34,12 -DA:35,301 -DA:42,301 -DA:44,301 -DA:46,301 -DA:51,301 -DA:52,301 -DA:54,301 -DA:55,301 -DA:57,301 -DA:61,10 -DA:73,301 -DA:74,354 -DA:79,301 -DA:80,156 -DA:82,156 -DA:83,156 -DA:84,156 -DA:91,145 -DA:94,301 -DA:102,301 -DA:104,301 -DA:105,156 -DA:106,60 -DA:109,145 -DA:114,308 -DA:115,308 -DA:118,308 +DA:29,277 +DA:31,277 +DA:34,10 +DA:35,277 +DA:42,277 +DA:44,277 +DA:46,277 +DA:51,277 +DA:52,277 +DA:54,277 +DA:55,277 +DA:57,277 +DA:61,9 +DA:73,277 +DA:74,311 +DA:79,277 +DA:80,133 +DA:82,133 +DA:83,133 +DA:84,133 +DA:91,144 +DA:94,277 +DA:102,277 +DA:104,277 +DA:105,133 +DA:106,49 +DA:109,144 +DA:114,284 +DA:115,284 +DA:118,284 LF:40 LH:40 -BRDA:24,0,0,71 -BRDA:24,0,1,237 +BRDA:24,0,0,60 +BRDA:24,0,1,224 BRDA:26,1,0,7 -BRDA:26,1,1,301 -BRDA:29,2,0,301 -BRDA:29,2,1,223 -BRDA:29,3,0,223 -BRDA:29,3,1,78 -BRDA:29,4,0,301 -BRDA:29,4,1,301 -BRDA:31,5,0,301 -BRDA:31,5,1,158 -BRDA:31,5,2,157 -BRDA:31,5,3,12 -BRDA:36,6,0,156 -BRDA:36,6,1,145 -BRDA:37,7,0,156 -BRDA:37,7,1,78 -BRDA:37,8,0,78 -BRDA:37,8,1,78 -BRDA:37,9,0,156 -BRDA:37,9,1,156 -BRDA:42,10,0,301 -BRDA:42,10,1,223 -BRDA:42,11,0,223 -BRDA:42,11,1,78 -BRDA:42,12,0,301 -BRDA:42,12,1,301 -BRDA:47,13,0,156 -BRDA:47,13,1,145 -BRDA:54,14,0,301 +BRDA:26,1,1,277 +BRDA:29,2,0,277 +BRDA:29,2,1,218 +BRDA:29,3,0,218 +BRDA:29,3,1,59 +BRDA:29,4,0,277 +BRDA:29,4,1,277 +BRDA:31,5,0,277 +BRDA:31,5,1,155 +BRDA:31,5,2,154 +BRDA:31,5,3,10 +BRDA:36,6,0,133 +BRDA:36,6,1,144 +BRDA:37,7,0,133 +BRDA:37,7,1,74 +BRDA:37,8,0,74 +BRDA:37,8,1,59 +BRDA:37,9,0,133 +BRDA:37,9,1,133 +BRDA:42,10,0,277 +BRDA:42,10,1,218 +BRDA:42,11,0,218 +BRDA:42,11,1,59 +BRDA:42,12,0,277 +BRDA:42,12,1,277 +BRDA:47,13,0,133 +BRDA:47,13,1,144 +BRDA:54,14,0,277 BRDA:54,14,1,0 -BRDA:57,15,0,10 -BRDA:57,15,1,291 +BRDA:57,15,0,9 +BRDA:57,15,1,268 BRDA:57,16,0,5 -BRDA:57,16,1,296 -BRDA:57,17,0,301 -BRDA:57,17,1,301 -BRDA:79,18,0,156 -BRDA:79,18,1,145 -BRDA:104,19,0,156 -BRDA:104,19,1,145 -BRDA:105,20,0,60 -BRDA:105,20,1,96 -BRDA:114,21,0,308 +BRDA:57,16,1,272 +BRDA:57,17,0,277 +BRDA:57,17,1,277 +BRDA:79,18,0,133 +BRDA:79,18,1,144 +BRDA:104,19,0,133 +BRDA:104,19,1,144 +BRDA:105,20,0,49 +BRDA:105,20,1,84 +BRDA:114,21,0,284 BRDA:114,21,1,0 -BRDA:115,22,0,305 +BRDA:115,22,0,281 BRDA:115,22,1,3 -BRDA:115,23,0,308 -BRDA:115,23,1,308 +BRDA:115,23,0,284 +BRDA:115,23,1,284 BRF:50 BRH:48 end_of_record @@ -4800,39 +4800,39 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:353,(anonymous_0) +FNDA:310,(anonymous_0) DA:10,1 -DA:16,353 -DA:19,353 -DA:20,23 -DA:25,353 -DA:27,302 -DA:28,302 -DA:31,17 -DA:32,17 -DA:35,8 -DA:36,8 +DA:16,310 +DA:19,310 +DA:20,19 +DA:25,310 +DA:27,270 +DA:28,270 +DA:31,12 +DA:32,12 +DA:35,6 +DA:36,6 DA:39,1 DA:40,1 DA:43,2 DA:44,2 -DA:49,353 -DA:50,23 +DA:49,310 +DA:50,19 LF:17 LH:17 -BRDA:19,0,0,23 -BRDA:19,0,1,330 -BRDA:19,1,0,353 -BRDA:19,1,1,23 -BRDA:26,2,0,302 -BRDA:26,2,1,17 -BRDA:26,2,2,8 +BRDA:19,0,0,19 +BRDA:19,0,1,291 +BRDA:19,1,0,310 +BRDA:19,1,1,19 +BRDA:26,2,0,270 +BRDA:26,2,1,12 +BRDA:26,2,2,6 BRDA:26,2,3,1 BRDA:26,2,4,2 -BRDA:49,3,0,23 -BRDA:49,3,1,330 -BRDA:49,4,0,353 -BRDA:49,4,1,23 +BRDA:49,3,0,19 +BRDA:49,3,1,291 +BRDA:49,4,0,310 +BRDA:49,4,1,19 BRF:13 BRH:13 end_of_record @@ -4843,23 +4843,23 @@ FN:18,(anonymous_1) FN:32,(anonymous_2) FNF:3 FNH:3 -FNDA:372,(anonymous_0) -FNDA:31,(anonymous_1) +FNDA:331,(anonymous_0) +FNDA:30,(anonymous_1) FNDA:7,(anonymous_2) DA:1,1 DA:3,1 DA:4,1 DA:9,1 -DA:15,744 -DA:17,372 -DA:18,31 -DA:19,31 -DA:21,31 -DA:22,31 -DA:24,31 -DA:25,31 -DA:27,31 -DA:31,372 +DA:15,662 +DA:17,331 +DA:18,30 +DA:19,30 +DA:21,30 +DA:22,30 +DA:24,30 +DA:25,30 +DA:27,30 +DA:31,331 DA:32,7 DA:33,7 DA:35,7 @@ -4868,14 +4868,14 @@ DA:38,7 DA:40,7 LF:20 LH:20 -BRDA:17,0,0,31 -BRDA:17,0,1,341 -BRDA:27,1,0,28 +BRDA:17,0,0,30 +BRDA:17,0,1,301 +BRDA:27,1,0,27 BRDA:27,1,1,3 -BRDA:27,2,0,31 -BRDA:27,2,1,31 +BRDA:27,2,0,30 +BRDA:27,2,1,30 BRDA:31,3,0,7 -BRDA:31,3,1,365 +BRDA:31,3,1,324 BRDA:40,4,0,6 BRDA:40,4,1,1 BRDA:40,5,0,7 @@ -4888,159 +4888,159 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:15,(anonymous_0) FNF:1 FNH:1 -FNDA:43,(anonymous_0) +FNDA:40,(anonymous_0) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:15,1 -DA:22,43 +DA:22,40 DA:24,2 -DA:27,41 -DA:29,41 +DA:27,38 +DA:29,38 DA:30,2 DA:32,2 -DA:34,39 -DA:36,39 -DA:37,26 -DA:40,39 -DA:42,39 -DA:43,39 -DA:44,39 -DA:45,39 -DA:48,41 -DA:50,41 -DA:51,41 -DA:53,41 -DA:54,55 -DA:56,55 +DA:34,36 +DA:36,36 +DA:37,24 +DA:40,36 +DA:42,36 +DA:43,36 +DA:44,36 +DA:45,36 +DA:48,38 +DA:50,38 +DA:51,38 +DA:53,38 +DA:54,50 +DA:56,50 DA:58,1 -DA:61,54 -DA:62,54 -DA:63,54 -DA:65,54 -DA:66,53 -DA:67,36 -DA:70,53 -DA:73,54 -DA:75,54 -DA:76,82 -DA:78,82 +DA:61,49 +DA:62,49 +DA:63,49 +DA:65,49 +DA:66,48 +DA:67,34 +DA:70,48 +DA:73,49 +DA:75,49 +DA:76,72 +DA:78,72 DA:79,0 DA:85,0 DA:86,0 DA:88,0 DA:89,0 -DA:93,82 -DA:95,71 -DA:98,71 -DA:100,71 -DA:101,71 -DA:102,71 -DA:103,71 -DA:105,71 +DA:93,72 +DA:95,63 +DA:98,63 +DA:100,63 +DA:101,63 +DA:102,63 +DA:103,63 +DA:105,63 DA:106,4 -DA:108,71 -DA:109,6 -DA:112,71 +DA:108,63 +DA:109,4 +DA:112,63 DA:113,4 -DA:116,71 -DA:117,6 -DA:120,71 -DA:121,67 +DA:116,63 +DA:117,4 +DA:120,63 +DA:121,59 DA:122,4 -DA:125,67 +DA:125,59 DA:126,4 -DA:130,71 -DA:131,66 -DA:132,41 -DA:135,66 -DA:136,66 -DA:137,66 -DA:138,66 -DA:141,71 -DA:143,71 -DA:148,41 +DA:130,63 +DA:131,58 +DA:132,37 +DA:135,58 +DA:136,58 +DA:137,58 +DA:138,58 +DA:141,63 +DA:143,63 +DA:148,38 LF:73 LH:68 BRDA:22,0,0,2 -BRDA:22,0,1,41 -BRDA:27,1,0,28 -BRDA:27,1,1,13 +BRDA:22,0,1,38 +BRDA:27,1,0,26 +BRDA:27,1,1,12 BRDA:29,2,0,2 -BRDA:29,2,1,39 -BRDA:36,3,0,26 -BRDA:36,3,1,13 -BRDA:48,4,0,40 +BRDA:29,2,1,36 +BRDA:36,3,0,24 +BRDA:36,3,1,12 +BRDA:48,4,0,37 BRDA:48,4,1,1 -BRDA:48,5,0,41 -BRDA:48,5,1,41 +BRDA:48,5,0,38 +BRDA:48,5,1,38 BRDA:56,6,0,1 -BRDA:56,6,1,54 -BRDA:61,7,0,54 -BRDA:61,7,1,37 -BRDA:61,7,2,53 -BRDA:65,8,0,53 +BRDA:56,6,1,49 +BRDA:61,7,0,49 +BRDA:61,7,1,35 +BRDA:61,7,2,48 +BRDA:65,8,0,48 BRDA:65,8,1,1 -BRDA:66,9,0,36 -BRDA:66,9,1,17 -BRDA:73,10,0,52 +BRDA:66,9,0,34 +BRDA:66,9,1,14 +BRDA:73,10,0,47 BRDA:73,10,1,2 -BRDA:73,11,0,54 -BRDA:73,11,1,54 +BRDA:73,11,0,49 +BRDA:73,11,1,49 BRDA:78,12,0,0 -BRDA:78,12,1,82 +BRDA:78,12,1,72 BRDA:79,13,0,0 BRDA:79,13,1,0 BRDA:85,14,0,0 BRDA:85,14,1,0 -BRDA:93,15,0,71 -BRDA:93,15,1,11 -BRDA:93,16,0,82 -BRDA:93,16,1,77 -BRDA:95,17,0,71 -BRDA:95,17,1,46 -BRDA:95,17,2,66 +BRDA:93,15,0,63 +BRDA:93,15,1,9 +BRDA:93,16,0,72 +BRDA:93,16,1,67 +BRDA:95,17,0,63 +BRDA:95,17,1,42 +BRDA:95,17,2,58 BRDA:96,18,0,2 -BRDA:96,18,1,64 -BRDA:105,19,0,56 -BRDA:105,19,1,19 -BRDA:105,20,0,75 -BRDA:105,20,1,75 -BRDA:105,21,0,55 -BRDA:105,21,1,20 -BRDA:105,22,0,75 -BRDA:105,22,1,75 -BRDA:108,23,0,52 -BRDA:108,23,1,25 -BRDA:108,24,0,77 -BRDA:108,24,1,77 +BRDA:96,18,1,56 +BRDA:105,19,0,51 +BRDA:105,19,1,16 +BRDA:105,20,0,67 +BRDA:105,20,1,67 +BRDA:105,21,0,50 +BRDA:105,21,1,17 +BRDA:105,22,0,67 +BRDA:105,22,1,67 +BRDA:108,23,0,47 +BRDA:108,23,1,20 +BRDA:108,24,0,67 +BRDA:108,24,1,67 BRDA:112,25,0,4 -BRDA:112,25,1,67 -BRDA:116,26,0,6 -BRDA:116,26,1,65 -BRDA:120,27,0,67 +BRDA:112,25,1,59 +BRDA:116,26,0,4 +BRDA:116,26,1,59 +BRDA:120,27,0,59 BRDA:120,27,1,4 -BRDA:120,28,0,71 +BRDA:120,28,0,63 BRDA:120,28,1,5 BRDA:120,28,2,2 BRDA:121,29,0,4 -BRDA:121,29,1,63 -BRDA:121,30,0,67 +BRDA:121,29,1,55 +BRDA:121,30,0,59 BRDA:121,30,1,4 BRDA:125,31,0,4 -BRDA:125,31,1,63 -BRDA:125,32,0,67 +BRDA:125,31,1,55 +BRDA:125,32,0,59 BRDA:125,32,1,4 -BRDA:130,33,0,66 +BRDA:130,33,0,58 BRDA:130,33,1,5 -BRDA:131,34,0,41 -BRDA:131,34,1,25 -BRDA:143,35,0,69 +BRDA:131,34,0,37 +BRDA:131,34,1,21 +BRDA:143,35,0,61 BRDA:143,35,1,2 -BRDA:143,36,0,71 -BRDA:143,36,1,71 +BRDA:143,36,0,63 +BRDA:143,36,1,63 BRF:77 BRH:72 end_of_record @@ -5049,14 +5049,14 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/ha FN:11,(anonymous_0) FNF:1 FNH:1 -FNDA:318,(anonymous_0) +FNDA:285,(anonymous_0) DA:1,1 DA:11,1 -DA:17,318 -DA:18,318 -DA:20,318 -DA:21,318 -DA:23,318 +DA:17,285 +DA:18,285 +DA:20,285 +DA:21,285 +DA:23,285 LF:7 LH:7 BRF:0 @@ -5068,42 +5068,42 @@ FN:9,mergeNode FN:32,hasSameAttributes FNF:2 FNH:2 -FNDA:755,mergeNode -FNDA:23,hasSameAttributes +FNDA:662,mergeNode +FNDA:8,hasSameAttributes DA:1,1 DA:4,1 DA:9,1 -DA:10,755 -DA:11,470 -DA:13,470 -DA:21,12 -DA:22,11 -DA:25,12 -DA:27,458 -DA:33,23 -DA:34,23 -DA:36,23 +DA:10,662 +DA:11,394 +DA:13,394 +DA:21,5 +DA:22,4 +DA:25,5 +DA:27,389 +DA:33,8 +DA:34,8 +DA:36,8 DA:37,0 -DA:40,23 -DA:41,22 -DA:42,11 -DA:46,12 +DA:40,8 +DA:41,7 +DA:42,3 +DA:46,5 LF:18 LH:17 -BRDA:13,0,0,12 -BRDA:13,0,1,458 -BRDA:14,1,0,470 -BRDA:14,1,1,64 -BRDA:14,1,2,40 -BRDA:14,1,3,29 -BRDA:14,1,4,24 -BRDA:14,1,5,23 +BRDA:13,0,0,5 +BRDA:13,0,1,389 +BRDA:14,1,0,394 +BRDA:14,1,1,41 +BRDA:14,1,2,22 +BRDA:14,1,3,14 +BRDA:14,1,4,9 +BRDA:14,1,5,8 BRDA:36,2,0,0 -BRDA:36,2,1,23 -BRDA:41,3,0,11 -BRDA:41,3,1,11 -BRDA:41,4,0,22 -BRDA:41,4,1,22 +BRDA:36,2,1,8 +BRDA:41,3,0,3 +BRDA:41,3,1,4 +BRDA:41,4,0,7 +BRDA:41,4,1,7 BRF:14 BRH:13 end_of_record @@ -5112,23 +5112,23 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/ FN:9,optimize FNF:1 FNH:1 -FNDA:751,optimize +FNDA:658,optimize DA:2,1 DA:3,1 DA:4,1 DA:9,1 -DA:13,751 +DA:13,658 DA:17,2 -DA:20,749 -DA:21,749 -DA:23,749 -DA:24,446 +DA:20,656 +DA:21,656 +DA:23,656 +DA:24,377 LF:10 LH:10 BRDA:13,0,0,2 -BRDA:13,0,1,749 -BRDA:14,1,0,751 -BRDA:14,1,1,437 +BRDA:13,0,1,656 +BRDA:14,1,0,658 +BRDA:14,1,1,377 BRF:4 BRH:4 end_of_record @@ -5137,27 +5137,27 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/ FN:7,removeUnnecessarySpan FNF:1 FNH:1 -FNDA:752,removeUnnecessarySpan +FNDA:659,removeUnnecessarySpan DA:1,1 DA:7,1 -DA:8,752 -DA:9,460 -DA:14,272 -DA:15,272 -DA:16,272 -DA:18,272 -DA:19,271 -DA:20,271 -DA:21,271 -DA:24,272 -DA:26,188 +DA:8,659 +DA:9,384 +DA:14,264 +DA:15,264 +DA:16,264 +DA:18,264 +DA:19,263 +DA:20,263 +DA:21,263 +DA:24,264 +DA:26,120 LF:13 LH:13 -BRDA:9,0,0,272 -BRDA:9,0,1,188 -BRDA:10,1,0,460 -BRDA:10,1,1,374 -BRDA:10,1,2,342 +BRDA:9,0,0,264 +BRDA:9,0,1,120 +BRDA:10,1,0,384 +BRDA:10,1,1,325 +BRDA:10,1,2,302 BRF:5 BRH:5 end_of_record @@ -5167,17 +5167,17 @@ FN:15,applyFormat FN:21,(anonymous_1) FNF:2 FNH:2 -FNDA:2677,applyFormat -FNDA:13435,(anonymous_1) +FNDA:2439,applyFormat +FNDA:12144,(anonymous_1) DA:15,1 -DA:21,2677 -DA:22,13435 +DA:21,2439 +DA:22,12144 LF:3 LH:3 BRDA:22,0,0,20 -BRDA:22,0,1,13415 -BRDA:22,1,0,13435 -BRDA:22,1,1,13415 +BRDA:22,0,1,12124 +BRDA:22,1,0,12144 +BRDA:22,1,1,12124 BRF:4 BRH:4 end_of_record @@ -5186,23 +5186,23 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handl FN:7,handleSegmentCommon FNF:1 FNH:1 -FNDA:361,handleSegmentCommon +FNDA:320,handleSegmentCommon DA:1,1 DA:7,1 -DA:14,361 -DA:15,360 -DA:18,361 -DA:20,361 -DA:22,361 -DA:24,361 +DA:14,320 +DA:15,319 +DA:18,320 +DA:20,320 +DA:22,320 +DA:24,320 LF:8 LH:8 -BRDA:14,0,0,360 +BRDA:14,0,0,319 BRDA:14,0,1,1 -BRDA:24,1,0,354 +BRDA:24,1,0,313 BRDA:24,1,1,7 -BRDA:24,2,0,361 -BRDA:24,2,1,361 +BRDA:24,2,0,320 +BRDA:24,2,1,320 BRF:6 BRH:6 end_of_record @@ -5263,22 +5263,22 @@ SF:packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stack FN:10,stackFormat FNF:1 FNH:1 -FNDA:531,stackFormat +FNDA:477,stackFormat DA:10,1 -DA:16,531 -DA:20,531 -DA:21,292 -DA:23,292 -DA:24,292 -DA:29,292 -DA:31,292 -DA:34,239 +DA:16,477 +DA:20,477 +DA:21,249 +DA:23,249 +DA:24,249 +DA:29,249 +DA:31,249 +DA:34,228 LF:9 LH:9 -BRDA:17,0,0,151 -BRDA:17,0,1,380 -BRDA:20,1,0,292 -BRDA:20,1,1,239 +BRDA:17,0,0,125 +BRDA:17,0,1,352 +BRDA:20,1,0,249 +BRDA:20,1,1,228 BRF:4 BRH:4 end_of_record @@ -5458,42 +5458,42 @@ FN:71,(anonymous_5) FNF:6 FNH:6 FNDA:1,(anonymous_0) -FNDA:42,ContentModelEditor -FNDA:37,(anonymous_2) -FNDA:24,(anonymous_3) -FNDA:74,(anonymous_4) -FNDA:43,(anonymous_5) +FNDA:40,ContentModelEditor +FNDA:29,(anonymous_2) +FNDA:20,(anonymous_3) +FNDA:59,(anonymous_4) +FNDA:41,(anonymous_5) DA:3,1 DA:4,1 DA:17,1 DA:18,1 -DA:25,58 -DA:26,42 +DA:25,56 +DA:26,40 DA:33,1 -DA:37,37 -DA:39,37 +DA:37,29 +DA:39,29 DA:47,1 -DA:48,24 -DA:50,24 +DA:48,20 +DA:50,20 DA:57,1 -DA:58,74 -DA:60,74 -DA:61,74 -DA:62,74 +DA:58,59 +DA:60,59 +DA:61,59 +DA:62,59 DA:71,1 -DA:72,43 -DA:74,43 +DA:72,41 +DA:74,41 DA:76,1 LF:21 LH:21 BRDA:25,0,0,16 -BRDA:25,0,1,26 -BRDA:26,1,0,42 -BRDA:26,1,1,42 -BRDA:60,2,0,74 +BRDA:25,0,1,24 +BRDA:26,1,0,40 +BRDA:26,1,1,40 +BRDA:60,2,0,59 BRDA:60,2,1,0 -BRDA:61,3,0,74 -BRDA:61,3,1,51 +BRDA:61,3,0,59 +BRDA:61,3,1,40 BRF:8 BRH:7 end_of_record @@ -5507,12 +5507,12 @@ FN:86,promoteCoreApi FN:97,getDefaultSegmentFormat FNF:6 FNH:6 -FNDA:47,(anonymous_0) -FNDA:47,promoteToContentModelEditorCore -FNDA:47,promoteDefaultFormat -FNDA:47,promoteContentModelInfo -FNDA:47,promoteCoreApi -FNDA:47,getDefaultSegmentFormat +FNDA:45,(anonymous_0) +FNDA:45,promoteToContentModelEditorCore +FNDA:45,promoteDefaultFormat +FNDA:45,promoteContentModelInfo +FNDA:45,promoteCoreApi +FNDA:45,getDefaultSegmentFormat DA:1,1 DA:2,1 DA:3,1 @@ -5525,75 +5525,75 @@ DA:13,1 DA:14,1 DA:19,1 DA:22,1 -DA:23,47 -DA:44,47 -DA:46,47 -DA:48,47 +DA:23,45 +DA:44,45 +DA:46,45 +DA:48,45 DA:56,1 -DA:60,47 -DA:62,47 -DA:63,47 -DA:64,47 -DA:68,47 -DA:69,47 -DA:76,47 -DA:78,47 -DA:79,47 -DA:80,47 -DA:87,47 -DA:88,47 -DA:89,47 -DA:90,47 -DA:91,47 -DA:92,47 -DA:93,47 -DA:94,47 -DA:98,47 -DA:100,47 +DA:60,45 +DA:62,45 +DA:63,45 +DA:64,45 +DA:68,45 +DA:69,45 +DA:76,45 +DA:78,45 +DA:79,45 +DA:80,45 +DA:87,45 +DA:88,45 +DA:89,45 +DA:90,45 +DA:91,45 +DA:92,45 +DA:93,45 +DA:94,45 +DA:98,45 +DA:100,45 LF:37 LH:37 -BRDA:26,0,0,47 +BRDA:26,0,0,45 BRDA:26,0,1,23 -BRDA:36,1,0,10 +BRDA:36,1,0,8 BRDA:36,1,1,37 -BRDA:37,2,0,10 -BRDA:37,2,1,10 -BRDA:40,3,0,47 -BRDA:40,3,1,42 -BRDA:68,4,0,47 -BRDA:68,4,1,44 -BRDA:78,5,0,47 -BRDA:78,5,1,46 -BRDA:79,6,0,47 -BRDA:79,6,1,46 -BRDA:98,7,0,47 +BRDA:37,2,0,8 +BRDA:37,2,1,8 +BRDA:40,3,0,45 +BRDA:40,3,1,40 +BRDA:68,4,0,45 +BRDA:68,4,1,42 +BRDA:78,5,0,45 +BRDA:78,5,1,44 +BRDA:79,6,0,45 +BRDA:79,6,1,44 +BRDA:98,7,0,45 BRDA:98,7,1,0 -BRDA:98,8,0,47 -BRDA:98,8,1,47 +BRDA:98,8,0,45 +BRDA:98,8,1,45 BRDA:101,9,0,2 -BRDA:101,9,1,45 -BRDA:102,10,0,47 -BRDA:102,10,1,45 -BRDA:103,11,0,47 -BRDA:103,11,1,45 -BRDA:104,12,0,47 -BRDA:104,12,1,44 -BRDA:105,13,0,47 -BRDA:105,13,1,44 -BRDA:106,14,0,47 -BRDA:106,14,1,46 -BRDA:106,14,2,45 -BRDA:106,15,0,46 +BRDA:101,9,1,43 +BRDA:102,10,0,45 +BRDA:102,10,1,43 +BRDA:103,11,0,45 +BRDA:103,11,1,43 +BRDA:104,12,0,45 +BRDA:104,12,1,42 +BRDA:105,13,0,45 +BRDA:105,13,1,42 +BRDA:106,14,0,45 +BRDA:106,14,1,44 +BRDA:106,14,2,43 +BRDA:106,15,0,44 BRDA:106,15,1,1 -BRDA:106,16,0,47 -BRDA:106,16,1,47 -BRDA:108,17,0,47 -BRDA:108,17,1,46 -BRDA:108,17,2,45 -BRDA:108,18,0,46 +BRDA:106,16,0,45 +BRDA:106,16,1,45 +BRDA:108,17,0,45 +BRDA:108,17,1,44 +BRDA:108,17,2,43 +BRDA:108,18,0,44 BRDA:108,18,1,1 -BRDA:108,19,0,47 -BRDA:108,19,1,47 +BRDA:108,19,0,45 +BRDA:108,19,1,45 BRF:42 BRH:41 end_of_record @@ -5617,35 +5617,35 @@ FN:16,(anonymous_0) FN:27,internalCreateContentModel FNF:2 FNH:2 -FNDA:45,(anonymous_0) -FNDA:33,internalCreateContentModel +FNDA:37,(anonymous_0) +FNDA:28,internalCreateContentModel DA:1,1 DA:2,1 DA:5,1 DA:16,1 -DA:17,45 -DA:19,45 +DA:17,37 +DA:19,37 DA:21,1 -DA:24,45 -DA:32,33 -DA:37,33 -DA:43,33 +DA:24,37 +DA:32,28 +DA:37,28 +DA:43,28 LF:11 LH:11 BRDA:17,0,0,0 -BRDA:17,0,1,45 +BRDA:17,0,1,37 BRDA:19,1,0,1 -BRDA:19,1,1,44 -BRDA:19,2,0,45 -BRDA:19,2,1,12 -BRDA:24,3,0,45 -BRDA:24,3,1,33 -BRDA:40,4,0,31 -BRDA:40,4,1,2 -BRDA:40,5,0,33 -BRDA:40,5,1,33 -BRDA:47,6,0,33 -BRDA:47,6,1,33 +BRDA:19,1,1,36 +BRDA:19,2,0,37 +BRDA:19,2,1,9 +BRDA:24,3,0,37 +BRDA:24,3,1,28 +BRDA:40,4,0,27 +BRDA:40,4,1,1 +BRDA:40,5,0,28 +BRDA:40,5,1,28 +BRDA:47,6,0,28 +BRDA:47,6,1,28 BRF:14 BRH:13 end_of_record @@ -5656,52 +5656,52 @@ FN:25,checkZoomScale FN:34,checkRootRtl FNF:3 FNH:3 -FNDA:53,(anonymous_0) -FNDA:53,checkZoomScale -FNDA:53,checkRootRtl +FNDA:44,(anonymous_0) +FNDA:44,checkZoomScale +FNDA:44,checkRootRtl DA:8,1 -DA:9,265 -DA:11,53 -DA:19,53 -DA:20,53 -DA:22,53 -DA:26,53 -DA:27,53 -DA:29,53 -DA:30,48 -DA:35,53 -DA:37,53 +DA:9,220 +DA:11,44 +DA:19,44 +DA:20,44 +DA:22,44 +DA:26,44 +DA:27,44 +DA:29,44 +DA:30,39 +DA:35,44 +DA:37,44 DA:38,1 LF:13 LH:13 -BRDA:26,0,0,53 +BRDA:26,0,0,44 BRDA:26,0,1,5 BRDA:26,1,0,3 -BRDA:26,1,1,50 -BRDA:26,2,0,53 -BRDA:26,2,1,53 +BRDA:26,1,1,41 +BRDA:26,2,0,44 +BRDA:26,2,1,44 BRDA:26,3,0,0 -BRDA:26,3,1,53 -BRDA:26,4,0,53 -BRDA:26,4,1,53 -BRDA:29,5,0,48 +BRDA:26,3,1,44 +BRDA:26,4,0,44 +BRDA:26,4,1,44 +BRDA:29,5,0,39 BRDA:29,5,1,5 -BRDA:29,6,0,53 -BRDA:29,6,1,48 +BRDA:29,6,0,44 +BRDA:29,6,1,39 BRDA:35,7,0,0 -BRDA:35,7,1,53 -BRDA:35,8,0,53 -BRDA:35,8,1,53 +BRDA:35,7,1,44 +BRDA:35,8,0,44 +BRDA:35,8,1,44 BRDA:35,9,0,0 -BRDA:35,9,1,53 -BRDA:35,10,0,53 -BRDA:35,10,1,53 +BRDA:35,9,1,44 +BRDA:35,10,0,44 +BRDA:35,10,1,44 BRDA:37,11,0,1 -BRDA:37,11,1,52 +BRDA:37,11,1,43 BRDA:37,12,0,4 -BRDA:37,12,1,49 -BRDA:37,13,0,53 -BRDA:37,13,1,53 +BRDA:37,12,1,40 +BRDA:37,13,0,44 +BRDA:37,13,1,44 BRF:28 BRH:25 end_of_record @@ -5710,16 +5710,16 @@ SF:packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getS FN:7,(anonymous_0) FNF:1 FNH:1 -FNDA:121,(anonymous_0) +FNDA:102,(anonymous_0) DA:7,1 -DA:8,121 -DA:10,121 +DA:8,102 +DA:10,102 LF:3 LH:3 -BRDA:10,0,0,22 -BRDA:10,0,1,99 -BRDA:10,1,0,121 -BRDA:10,1,1,121 +BRDA:10,0,0,18 +BRDA:10,0,1,84 +BRDA:10,1,0,102 +BRDA:10,1,1,102 BRF:4 BRH:4 end_of_record @@ -5728,21 +5728,21 @@ SF:packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setC FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:28,(anonymous_0) +FNDA:24,(anonymous_0) DA:1,1 DA:10,1 -DA:11,28 -DA:22,28 -DA:23,27 -DA:24,27 -DA:27,28 +DA:11,24 +DA:22,24 +DA:23,23 +DA:24,23 +DA:27,24 LF:7 LH:7 -BRDA:18,0,0,28 +BRDA:18,0,0,24 BRDA:18,0,1,5 -BRDA:22,1,0,27 +BRDA:22,1,0,23 BRDA:22,1,1,1 -BRDA:24,2,0,27 +BRDA:24,2,0,23 BRDA:24,2,1,0 BRF:6 BRH:5 @@ -5788,60 +5788,62 @@ BRH:9 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts -FN:41,(anonymous_0) -FN:49,ContentModelCopyPastePlugin -FN:168,(anonymous_2) -FN:182,(anonymous_3) -FN:54,(anonymous_4) -FN:62,(anonymous_5) -FN:65,(anonymous_6) -FN:66,(anonymous_7) -FN:67,(anonymous_8) -FN:74,(anonymous_9) -FN:85,(anonymous_10) -FN:89,(anonymous_11) -FN:99,(anonymous_12) -FN:103,(anonymous_13) -FN:106,(anonymous_14) -FN:109,(anonymous_15) -FN:139,(anonymous_16) -FN:148,(anonymous_17) -FN:191,(anonymous_18) -FN:194,(anonymous_19) -FN:204,(anonymous_20) -FN:209,(anonymous_21) -FN:218,cleanUpAndRestoreSelection -FN:225,isClipboardEvent -FN:229,selectionExToRange -FN:259,(anonymous_25) -FNF:26 -FNH:16 +FN:42,(anonymous_0) +FN:50,ContentModelCopyPastePlugin +FN:186,(anonymous_2) +FN:200,(anonymous_3) +FN:55,(anonymous_4) +FN:63,(anonymous_5) +FN:66,(anonymous_6) +FN:67,(anonymous_7) +FN:68,(anonymous_8) +FN:75,(anonymous_9) +FN:86,(anonymous_10) +FN:90,(anonymous_11) +FN:100,(anonymous_12) +FN:117,(anonymous_13) +FN:121,(anonymous_14) +FN:124,(anonymous_15) +FN:127,(anonymous_16) +FN:157,(anonymous_17) +FN:166,(anonymous_18) +FN:209,(anonymous_19) +FN:212,(anonymous_20) +FN:222,(anonymous_21) +FN:227,(anonymous_22) +FN:236,cleanUpAndRestoreSelection +FN:243,isClipboardEvent +FN:247,selectionExToRange +FN:277,(anonymous_26) +FNF:27 +FNH:17 FNDA:1,(anonymous_0) -FNDA:20,ContentModelCopyPastePlugin +FNDA:19,ContentModelCopyPastePlugin FNDA:2,(anonymous_2) FNDA:2,(anonymous_3) FNDA:0,(anonymous_4) -FNDA:20,(anonymous_5) +FNDA:19,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:4,(anonymous_7) +FNDA:5,(anonymous_7) FNDA:4,(anonymous_8) FNDA:0,(anonymous_9) -FNDA:10,(anonymous_10) -FNDA:8,(anonymous_11) -FNDA:0,(anonymous_12) +FNDA:8,(anonymous_10) +FNDA:9,(anonymous_11) +FNDA:2,(anonymous_12) FNDA:0,(anonymous_13) FNDA:0,(anonymous_14) FNDA:0,(anonymous_15) -FNDA:6,(anonymous_16) -FNDA:3,(anonymous_17) -FNDA:6,(anonymous_18) -FNDA:0,(anonymous_19) +FNDA:0,(anonymous_16) +FNDA:7,(anonymous_17) +FNDA:3,(anonymous_18) +FNDA:7,(anonymous_19) FNDA:0,(anonymous_20) FNDA:0,(anonymous_21) -FNDA:6,cleanUpAndRestoreSelection +FNDA:0,(anonymous_22) +FNDA:7,cleanUpAndRestoreSelection FNDA:2,isClipboardEvent -FNDA:6,selectionExToRange -FNDA:0,(anonymous_25) +FNDA:7,selectionExToRange +FNDA:0,(anonymous_26) DA:1,1 DA:2,1 DA:3,1 @@ -5849,167 +5851,180 @@ DA:5,1 DA:6,1 DA:8,1 DA:16,1 -DA:41,1 -DA:42,20 -DA:43,20 -DA:49,20 -DA:54,1 -DA:55,0 -DA:62,20 -DA:63,20 -DA:64,20 -DA:65,2 -DA:66,4 -DA:67,4 -DA:74,1 -DA:75,0 +DA:42,1 +DA:43,19 +DA:44,19 +DA:50,19 +DA:55,1 +DA:56,0 +DA:63,19 +DA:64,19 +DA:65,19 +DA:66,2 +DA:67,5 +DA:68,4 +DA:75,1 DA:76,0 -DA:78,0 +DA:77,0 DA:79,0 -DA:85,1 -DA:86,10 -DA:89,1 -DA:90,8 -DA:91,0 -DA:93,8 -DA:94,8 -DA:95,6 -DA:97,6 -DA:98,6 -DA:99,2 -DA:100,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:112,0 -DA:115,6 -DA:116,6 -DA:126,6 -DA:127,6 -DA:128,6 -DA:135,6 -DA:136,6 -DA:139,6 -DA:140,6 -DA:141,6 -DA:142,6 -DA:144,6 -DA:145,3 -DA:149,3 -DA:153,2 -DA:156,3 -DA:168,20 -DA:169,2 -DA:170,2 -DA:172,2 -DA:174,2 -DA:175,2 -DA:176,2 -DA:183,2 -DA:184,1 -DA:191,1 -DA:192,6 -DA:195,0 -DA:200,0 -DA:202,0 -DA:204,0 -DA:207,6 -DA:208,6 -DA:209,6 -DA:211,6 -DA:212,6 -DA:214,6 -DA:216,1 -DA:219,6 -DA:220,6 -DA:221,6 -DA:222,6 -DA:226,2 -DA:233,6 -DA:234,0 -DA:236,6 -DA:237,6 -DA:238,2 -DA:240,2 -DA:241,2 -DA:242,4 -DA:243,2 -DA:245,2 -DA:246,2 -DA:249,2 -DA:252,6 -DA:259,1 -DA:268,0 -DA:269,0 -LF:102 -LH:81 -BRDA:169,0,0,2 -BRDA:169,0,1,0 -BRDA:169,1,0,2 -BRDA:169,1,1,2 -BRDA:174,2,0,2 -BRDA:174,2,1,0 -BRDA:174,3,0,0 -BRDA:174,3,1,2 -BRDA:174,4,0,2 -BRDA:174,4,1,2 -BRDA:183,5,0,1 -BRDA:183,5,1,1 -BRDA:75,6,0,0 -BRDA:75,6,1,0 -BRDA:90,7,0,0 -BRDA:90,7,1,8 -BRDA:94,8,0,6 -BRDA:94,8,1,2 -BRDA:94,9,0,8 -BRDA:94,9,1,8 -BRDA:98,10,0,2 -BRDA:98,10,1,4 -BRDA:100,11,0,0 -BRDA:100,11,1,0 -BRDA:100,12,0,0 -BRDA:100,12,1,0 -BRDA:100,13,0,0 -BRDA:100,13,1,0 -BRDA:101,14,0,0 -BRDA:101,14,1,0 -BRDA:101,15,0,0 -BRDA:101,15,1,0 -BRDA:127,16,0,6 -BRDA:127,16,1,0 -BRDA:135,17,0,6 -BRDA:135,17,1,0 -BRDA:144,18,0,3 -BRDA:144,18,1,3 -BRDA:149,19,0,2 -BRDA:149,19,1,1 -BRDA:204,20,0,0 -BRDA:204,20,1,0 -BRDA:204,21,0,0 -BRDA:204,21,1,0 -BRDA:233,22,0,0 -BRDA:233,22,1,6 -BRDA:237,23,0,2 -BRDA:237,23,1,4 -BRDA:237,24,0,6 -BRDA:237,24,1,2 -BRDA:240,25,0,2 -BRDA:240,25,1,0 -BRDA:240,26,0,0 -BRDA:240,26,1,2 -BRDA:240,27,0,2 -BRDA:240,27,1,2 -BRDA:242,28,0,2 -BRDA:242,28,1,2 -BRDA:245,29,0,2 -BRDA:245,29,1,0 -BRDA:268,30,0,0 -BRDA:268,30,1,0 -BRF:62 -BRH:34 +DA:80,0 +DA:86,1 +DA:87,8 +DA:90,9 +DA:91,9 +DA:92,0 +DA:94,9 +DA:95,9 +DA:96,7 +DA:98,7 +DA:101,2 +DA:102,1 +DA:104,1 +DA:106,1 +DA:111,1 +DA:116,7 +DA:117,2 +DA:118,0 +DA:119,0 +DA:120,0 +DA:122,0 +DA:124,0 +DA:127,0 +DA:128,0 +DA:130,0 +DA:133,7 +DA:134,7 +DA:144,7 +DA:145,7 +DA:146,7 +DA:153,7 +DA:154,7 +DA:157,7 +DA:158,7 +DA:159,7 +DA:160,7 +DA:162,7 +DA:163,3 +DA:167,3 +DA:171,2 +DA:174,3 +DA:186,19 +DA:187,2 +DA:188,2 +DA:190,2 +DA:192,2 +DA:193,2 +DA:194,2 +DA:201,2 +DA:202,1 +DA:209,1 +DA:210,7 +DA:213,0 +DA:218,0 +DA:220,0 +DA:222,0 +DA:225,7 +DA:226,7 +DA:227,7 +DA:229,7 +DA:230,7 +DA:232,7 +DA:234,1 +DA:237,7 +DA:238,7 +DA:239,7 +DA:240,7 +DA:244,2 +DA:251,7 +DA:252,0 +DA:254,7 +DA:255,7 +DA:256,2 +DA:258,2 +DA:259,2 +DA:260,5 +DA:261,2 +DA:263,2 +DA:264,2 +DA:267,3 +DA:270,7 +DA:277,1 +DA:286,0 +DA:287,0 +LF:107 +LH:86 +BRDA:187,0,0,2 +BRDA:187,0,1,0 +BRDA:187,1,0,2 +BRDA:187,1,1,2 +BRDA:192,2,0,2 +BRDA:192,2,1,0 +BRDA:192,3,0,0 +BRDA:192,3,1,2 +BRDA:192,4,0,2 +BRDA:192,4,1,2 +BRDA:201,5,0,1 +BRDA:201,5,1,1 +BRDA:76,6,0,0 +BRDA:76,6,1,0 +BRDA:91,7,0,0 +BRDA:91,7,1,9 +BRDA:95,8,0,7 +BRDA:95,8,1,2 +BRDA:95,9,0,9 +BRDA:95,9,1,9 +BRDA:100,10,0,1 +BRDA:100,10,1,6 +BRDA:101,11,0,1 +BRDA:101,11,1,1 +BRDA:106,12,0,0 +BRDA:106,12,1,1 +BRDA:106,13,0,1 +BRDA:106,13,1,1 +BRDA:116,14,0,2 +BRDA:116,14,1,5 +BRDA:118,15,0,0 +BRDA:118,15,1,0 +BRDA:118,16,0,0 +BRDA:118,16,1,0 +BRDA:118,17,0,0 +BRDA:118,17,1,0 +BRDA:119,18,0,0 +BRDA:119,18,1,0 +BRDA:119,19,0,0 +BRDA:119,19,1,0 +BRDA:145,20,0,7 +BRDA:145,20,1,0 +BRDA:153,21,0,7 +BRDA:153,21,1,0 +BRDA:162,22,0,3 +BRDA:162,22,1,4 +BRDA:167,23,0,2 +BRDA:167,23,1,1 +BRDA:222,24,0,0 +BRDA:222,24,1,0 +BRDA:222,25,0,0 +BRDA:222,25,1,0 +BRDA:251,26,0,0 +BRDA:251,26,1,7 +BRDA:255,27,0,2 +BRDA:255,27,1,5 +BRDA:255,28,0,7 +BRDA:255,28,1,2 +BRDA:258,29,0,2 +BRDA:258,29,1,0 +BRDA:258,30,0,0 +BRDA:258,30,1,2 +BRDA:258,31,0,2 +BRDA:258,31,1,2 +BRDA:260,32,0,2 +BRDA:260,32,1,3 +BRDA:263,33,0,2 +BRDA:263,33,1,0 +BRDA:286,34,0,0 +BRDA:286,34,1,0 +BRF:70 +BRH:41 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts @@ -6019,9 +6034,9 @@ FN:20,(anonymous_3) FN:27,(anonymous_4) FNF:4 FNH:3 -FNDA:53,(anonymous_0) +FNDA:51,(anonymous_0) FNDA:0,(anonymous_2) -FNDA:42,(anonymous_3) +FNDA:40,(anonymous_3) FNDA:15,(anonymous_4) DA:6,1 DA:10,1 @@ -6052,12 +6067,12 @@ FN:222,(anonymous_13) FN:229,(anonymous_14) FNF:14 FNH:13 -FNDA:69,(anonymous_0) +FNDA:67,(anonymous_0) FNDA:0,(anonymous_2) -FNDA:58,(anonymous_3) -FNDA:300,(anonymous_4) +FNDA:56,(anonymous_3) +FNDA:286,(anonymous_4) FNDA:15,(anonymous_5) -FNDA:145,(anonymous_6) +FNDA:127,(anonymous_6) FNDA:16,(anonymous_7) FNDA:5,(anonymous_8) FNDA:5,(anonymous_9) @@ -6074,24 +6089,24 @@ DA:8,1 DA:20,1 DA:29,1 DA:37,1 -DA:38,68 -DA:39,68 +DA:38,66 +DA:39,66 DA:44,1 DA:45,0 DA:54,1 -DA:56,58 -DA:58,58 -DA:59,58 -DA:60,300 +DA:56,56 +DA:58,56 +DA:59,56 +DA:60,286 DA:69,1 DA:70,15 DA:79,1 -DA:80,145 -DA:81,145 +DA:80,127 +DA:81,127 DA:83,16 DA:84,16 -DA:89,50 -DA:90,50 +DA:89,40 +DA:90,40 DA:95,1 DA:96,16 DA:97,16 @@ -6152,12 +6167,12 @@ DA:230,3 DA:236,1 LF:84 LH:80 -BRDA:80,0,0,145 +BRDA:80,0,0,127 BRDA:80,0,1,0 BRDA:82,1,0,16 -BRDA:82,1,1,27 -BRDA:82,1,2,27 -BRDA:82,1,3,50 +BRDA:82,1,1,21 +BRDA:82,1,2,21 +BRDA:82,1,3,40 BRDA:99,2,0,1 BRDA:99,2,1,15 BRDA:99,3,0,16 @@ -6262,26 +6277,26 @@ FN:47,(anonymous_5) FN:81,(anonymous_6) FNF:6 FNH:5 -FNDA:63,(anonymous_0) +FNDA:61,(anonymous_0) FNDA:0,(anonymous_2) -FNDA:52,(anonymous_3) +FNDA:50,(anonymous_3) FNDA:25,(anonymous_4) -FNDA:137,(anonymous_5) +FNDA:119,(anonymous_5) FNDA:4,(anonymous_6) DA:1,1 DA:2,1 DA:11,1 -DA:12,62 +DA:12,60 DA:17,1 DA:18,0 DA:27,1 -DA:29,52 +DA:29,50 DA:37,1 DA:38,25 DA:47,1 -DA:48,137 +DA:48,119 DA:49,0 -DA:52,137 +DA:52,119 DA:55,4 DA:56,3 DA:59,4 @@ -6290,9 +6305,9 @@ DA:63,1 DA:66,2 DA:67,1 DA:70,2 -DA:74,30 -DA:75,29 -DA:77,30 +DA:74,24 +DA:75,23 +DA:77,24 DA:81,1 DA:82,4 DA:83,4 @@ -6301,12 +6316,12 @@ DA:87,1 LF:30 LH:28 BRDA:48,0,0,0 -BRDA:48,0,1,137 +BRDA:48,0,1,119 BRDA:53,1,0,4 BRDA:53,1,1,1 BRDA:53,1,2,2 BRDA:53,1,3,2 -BRDA:53,1,4,30 +BRDA:53,1,4,24 BRDA:55,2,0,3 BRDA:55,2,1,1 BRDA:55,3,0,4 @@ -6315,7 +6330,7 @@ BRDA:66,4,0,1 BRDA:66,4,1,1 BRDA:66,5,0,2 BRDA:66,5,1,1 -BRDA:74,6,0,29 +BRDA:74,6,0,23 BRDA:74,6,1,1 BRDA:82,7,0,4 BRDA:82,7,1,0 @@ -6338,13 +6353,13 @@ FN:134,(anonymous_8) FNF:9 FNH:7 FNDA:1,(anonymous_0) -FNDA:31,ContentModelPastePlugin +FNDA:29,ContentModelPastePlugin FNDA:0,(anonymous_2) -FNDA:30,(anonymous_3) +FNDA:28,(anonymous_3) FNDA:10,(anonymous_4) -FNDA:105,(anonymous_5) +FNDA:87,(anonymous_5) FNDA:0,(anonymous_6) -FNDA:24,sanitizeBlockStyles +FNDA:20,sanitizeBlockStyles FNDA:5,(anonymous_8) DA:1,1 DA:3,1 @@ -6356,69 +6371,69 @@ DA:10,1 DA:11,1 DA:22,1 DA:32,1 -DA:33,31 -DA:39,62 +DA:33,29 +DA:39,58 DA:44,1 DA:45,0 DA:54,1 -DA:56,30 +DA:56,28 DA:64,1 DA:65,10 DA:74,1 -DA:75,105 -DA:76,81 -DA:79,24 -DA:80,24 +DA:75,87 +DA:76,67 +DA:79,20 +DA:80,20 DA:81,0 -DA:83,24 -DA:84,24 -DA:86,4 -DA:87,4 +DA:83,20 +DA:84,20 +DA:86,2 +DA:87,2 DA:89,4 DA:90,4 -DA:93,9 -DA:95,7 -DA:97,9 +DA:93,7 +DA:95,6 +DA:97,7 DA:99,1 DA:100,1 DA:102,2 DA:103,2 -DA:106,24 -DA:107,24 -DA:108,24 -DA:109,24 -DA:111,24 +DA:106,20 +DA:107,20 +DA:108,20 +DA:109,20 +DA:111,20 DA:112,1 DA:113,1 -DA:116,24 +DA:116,20 DA:118,1 DA:124,1 DA:128,0 DA:129,0 -DA:134,24 +DA:134,20 DA:135,5 LF:51 LH:47 -BRDA:39,0,0,31 +BRDA:39,0,0,29 BRDA:39,0,1,0 -BRDA:75,1,0,81 -BRDA:75,1,1,24 -BRDA:75,2,0,105 -BRDA:75,2,1,105 +BRDA:75,1,0,67 +BRDA:75,1,1,20 +BRDA:75,2,0,87 +BRDA:75,2,1,87 BRDA:80,3,0,0 -BRDA:80,3,1,24 -BRDA:85,4,0,4 +BRDA:80,3,1,20 +BRDA:85,4,0,2 BRDA:85,4,1,4 BRDA:85,4,2,3 -BRDA:85,4,3,9 +BRDA:85,4,3,7 BRDA:85,4,4,1 BRDA:85,4,5,2 -BRDA:93,5,0,7 -BRDA:93,5,1,2 -BRDA:93,6,0,9 -BRDA:93,6,1,3 +BRDA:93,5,0,6 +BRDA:93,5,1,1 +BRDA:93,6,0,7 +BRDA:93,6,1,2 BRDA:111,7,0,1 -BRDA:111,7,1,23 +BRDA:111,7,1,19 BRDA:128,8,0,0 BRDA:128,8,1,0 BRF:22 @@ -6432,10 +6447,10 @@ FN:46,(anonymous_2) FN:61,excelHandler FNF:4 FNH:4 -FNDA:13,processPastedContentFromExcel +FNDA:12,processPastedContentFromExcel FNDA:4,(anonymous_1) -FNDA:12,(anonymous_2) -FNDA:8,excelHandler +FNDA:10,(anonymous_2) +FNDA:7,excelHandler DA:1,1 DA:3,1 DA:6,1 @@ -6444,50 +6459,50 @@ DA:8,1 DA:9,1 DA:10,1 DA:18,1 -DA:22,39 -DA:23,13 -DA:25,13 -DA:26,5 -DA:27,5 -DA:31,13 -DA:32,13 +DA:22,36 +DA:23,12 +DA:25,12 +DA:26,4 +DA:27,4 +DA:31,12 +DA:32,12 DA:33,1 DA:35,4 DA:41,1 DA:42,1 -DA:46,13 -DA:47,12 -DA:48,6 -DA:49,6 -DA:50,6 -DA:51,6 +DA:46,12 +DA:47,10 +DA:48,4 +DA:49,4 +DA:50,4 +DA:51,4 DA:61,1 -DA:62,8 -DA:63,4 -DA:64,4 -DA:65,4 -DA:67,8 -DA:68,5 -DA:69,5 -DA:70,5 -DA:73,8 +DA:62,7 +DA:63,3 +DA:64,3 +DA:65,3 +DA:67,7 +DA:68,4 +DA:69,4 +DA:70,4 +DA:73,7 LF:35 LH:35 -BRDA:23,0,0,8 +BRDA:23,0,0,7 BRDA:23,0,1,5 -BRDA:25,1,0,5 +BRDA:25,1,0,4 BRDA:25,1,1,8 -BRDA:25,2,0,13 -BRDA:25,2,1,8 +BRDA:25,2,0,12 +BRDA:25,2,1,7 BRDA:27,3,0,0 -BRDA:27,3,1,5 -BRDA:27,4,0,5 -BRDA:27,4,1,5 +BRDA:27,3,1,4 +BRDA:27,4,0,4 +BRDA:27,4,1,4 BRDA:32,5,0,1 -BRDA:32,5,1,12 -BRDA:32,6,0,13 -BRDA:32,6,1,10 -BRDA:32,6,2,8 +BRDA:32,5,1,11 +BRDA:32,6,0,12 +BRDA:32,6,1,9 +BRDA:32,6,2,7 BRDA:36,7,0,3 BRDA:36,7,1,1 BRDA:37,8,0,1 @@ -6496,18 +6511,18 @@ BRDA:41,9,0,1 BRDA:41,9,1,0 BRDA:41,10,0,1 BRDA:41,10,1,1 -BRDA:47,11,0,6 +BRDA:47,11,0,4 BRDA:47,11,1,6 -BRDA:62,12,0,4 +BRDA:62,12,0,3 BRDA:62,12,1,4 -BRDA:64,13,0,1 +BRDA:64,13,0,0 BRDA:64,13,1,3 -BRDA:67,14,0,5 +BRDA:67,14,0,4 BRDA:67,14,1,3 -BRDA:69,15,0,1 +BRDA:69,15,0,0 BRDA:69,15,1,4 BRF:33 -BRH:31 +BRH:29 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts @@ -6550,17 +6565,17 @@ FN:229,(anonymous_9) FN:260,(anonymous_10) FNF:11 FNH:11 -FNDA:187,(anonymous_0) -FNDA:500,(anonymous_1) -FNDA:2943,(anonymous_2) +FNDA:130,(anonymous_0) +FNDA:387,(anonymous_1) +FNDA:2231,(anonymous_2) FNDA:96,(anonymous_3) FNDA:90,(anonymous_4) FNDA:82,(anonymous_5) -FNDA:399,shouldClearListContext +FNDA:307,shouldClearListContext FNDA:364,(anonymous_7) -FNDA:44,processPastedContentWacComponents +FNDA:42,processPastedContentWacComponents FNDA:82,(anonymous_9) -FNDA:106,(anonymous_10) +FNDA:76,(anonymous_10) DA:1,1 DA:3,1 DA:4,1 @@ -6573,26 +6588,26 @@ DA:32,1 DA:47,1 DA:48,1 DA:54,1 -DA:58,187 -DA:59,187 +DA:58,130 +DA:59,130 DA:60,0 -DA:62,187 +DA:62,130 DA:63,0 DA:75,1 -DA:80,500 -DA:81,500 -DA:82,43 -DA:83,43 -DA:86,500 +DA:80,387 +DA:81,387 +DA:82,41 +DA:83,41 +DA:86,387 DA:87,57 DA:88,57 -DA:91,2943 -DA:92,44 -DA:93,399 +DA:91,2231 +DA:92,23 +DA:93,307 DA:94,2 DA:95,2 DA:96,2 -DA:99,399 +DA:99,307 DA:105,1 DA:110,96 DA:111,96 @@ -6615,18 +6630,18 @@ DA:151,90 DA:157,1 DA:160,82 DA:161,82 -DA:187,399 +DA:187,307 DA:189,364 DA:201,1 -DA:202,44 -DA:203,44 -DA:204,44 -DA:205,44 -DA:207,44 -DA:208,44 -DA:209,44 -DA:210,44 -DA:211,44 +DA:202,42 +DA:203,42 +DA:204,42 +DA:205,42 +DA:207,42 +DA:208,42 +DA:209,42 +DA:210,42 +DA:211,42 DA:229,1 DA:234,82 DA:235,82 @@ -6637,22 +6652,22 @@ DA:253,82 DA:254,21 DA:256,61 DA:260,1 -DA:264,106 -DA:265,3 +DA:264,76 +DA:265,2 LF:78 LH:75 BRDA:59,0,0,0 -BRDA:59,0,1,187 +BRDA:59,0,1,130 BRDA:62,1,0,0 -BRDA:62,1,1,187 -BRDA:81,2,0,43 -BRDA:81,2,1,457 +BRDA:62,1,1,130 +BRDA:81,2,0,41 +BRDA:81,2,1,346 BRDA:86,3,0,57 -BRDA:86,3,1,443 -BRDA:91,4,0,44 -BRDA:91,4,1,399 +BRDA:86,3,1,330 +BRDA:91,4,0,23 +BRDA:91,4,1,307 BRDA:93,5,0,2 -BRDA:93,5,1,397 +BRDA:93,5,1,305 BRDA:110,6,0,0 BRDA:110,6,1,96 BRDA:110,7,0,96 @@ -6674,7 +6689,7 @@ BRDA:125,14,0,6 BRDA:125,14,1,69 BRDA:147,15,0,0 BRDA:147,15,1,90 -BRDA:188,16,0,399 +BRDA:188,16,0,307 BRDA:188,16,1,132 BRDA:188,16,2,22 BRDA:240,17,0,28 @@ -6705,10 +6720,10 @@ BRDA:256,29,0,0 BRDA:256,29,1,61 BRDA:256,30,0,61 BRDA:256,30,1,61 -BRDA:264,31,0,3 -BRDA:264,31,1,103 -BRDA:264,32,0,106 -BRDA:264,32,1,5 +BRDA:264,31,0,2 +BRDA:264,31,1,74 +BRDA:264,32,0,76 +BRDA:264,32,1,4 BRF:68 BRH:59 end_of_record @@ -6722,12 +6737,12 @@ FN:65,removeNonValidLineHeight FN:82,listLevelParser FN:95,(anonymous_6) FNF:7 -FNH:7 -FNDA:22,processPastedContentFromWordDesktop -FNDA:3,(anonymous_1) -FNDA:6,(anonymous_2) -FNDA:95,(anonymous_3) -FNDA:26,removeNonValidLineHeight +FNH:5 +FNDA:20,processPastedContentFromWordDesktop +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:81,(anonymous_3) +FNDA:14,removeNonValidLineHeight FNDA:25,listLevelParser FNDA:19,(anonymous_6) DA:1,1 @@ -6738,22 +6753,22 @@ DA:6,1 DA:16,1 DA:17,1 DA:24,1 -DA:25,22 -DA:26,22 -DA:27,22 -DA:28,22 -DA:33,22 -DA:36,3 -DA:40,22 -DA:41,6 -DA:42,6 -DA:43,6 +DA:25,20 +DA:26,20 +DA:27,20 +DA:28,20 +DA:33,20 +DA:36,0 +DA:40,20 +DA:41,0 +DA:42,0 +DA:43,0 DA:51,1 -DA:56,95 -DA:58,95 -DA:61,58 -DA:73,26 -DA:78,3 +DA:56,81 +DA:58,81 +DA:61,44 +DA:73,14 +DA:78,1 DA:88,25 DA:89,5 DA:92,25 @@ -6763,18 +6778,18 @@ DA:100,5 DA:102,19 DA:103,1 LF:32 -LH:32 -BRDA:36,0,0,3 +LH:28 +BRDA:36,0,0,0 BRDA:36,0,1,0 -BRDA:58,1,0,58 +BRDA:58,1,0,44 BRDA:58,1,1,37 -BRDA:59,2,0,95 -BRDA:59,2,1,61 -BRDA:73,3,0,3 -BRDA:73,3,1,23 -BRDA:74,4,0,26 -BRDA:74,4,1,4 -BRDA:74,4,2,4 +BRDA:59,2,0,81 +BRDA:59,2,1,47 +BRDA:73,3,0,1 +BRDA:73,3,1,13 +BRDA:74,4,0,14 +BRDA:74,4,1,2 +BRDA:74,4,2,2 BRDA:88,5,0,5 BRDA:88,5,1,20 BRDA:99,6,0,5 @@ -6782,14 +6797,14 @@ BRDA:99,6,1,14 BRDA:102,7,0,1 BRDA:102,7,1,18 BRF:17 -BRH:16 +BRH:15 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts FN:15,processWordComments FNF:1 FNH:1 -FNDA:61,processWordComments +FNDA:47,processWordComments DA:1,1 DA:3,1 DA:4,1 @@ -6797,13 +6812,13 @@ DA:5,1 DA:6,1 DA:7,1 DA:15,1 -DA:16,61 +DA:16,47 LF:8 LH:8 -BRDA:17,0,0,61 -BRDA:17,0,1,60 +BRDA:17,0,0,47 +BRDA:17,0,1,46 BRDA:17,0,2,3 -BRDA:17,0,3,59 +BRDA:17,0,3,45 BRF:4 BRH:4 end_of_record @@ -6819,7 +6834,7 @@ FN:163,getFakeBulletText FN:203,isIgnoreNode FNF:8 FNH:8 -FNDA:95,processWordList +FNDA:81,processWordList FNDA:19,processAsListItem FNDA:6,startNumberOverrideParser FNDA:6,(anonymous_3) @@ -6834,18 +6849,18 @@ DA:20,1 DA:21,1 DA:22,1 DA:38,1 -DA:44,95 -DA:45,95 -DA:46,21 -DA:48,95 -DA:52,95 +DA:44,81 +DA:45,81 +DA:46,19 +DA:48,81 +DA:52,81 DA:53,15 -DA:56,80 -DA:59,80 -DA:61,80 -DA:62,80 -DA:63,45 -DA:66,80 +DA:56,66 +DA:59,66 +DA:61,66 +DA:62,66 +DA:63,31 +DA:66,66 DA:67,19 DA:69,19 DA:70,19 @@ -6861,7 +6876,7 @@ DA:89,19 DA:91,19 DA:95,17 DA:97,19 -DA:100,61 +DA:100,47 DA:110,19 DA:111,19 DA:113,19 @@ -6900,23 +6915,23 @@ DA:211,15 DA:215,33 LF:71 LH:70 -BRDA:45,0,0,21 -BRDA:45,0,1,74 -BRDA:48,1,0,95 -BRDA:48,1,1,61 +BRDA:45,0,0,19 +BRDA:45,0,1,62 +BRDA:48,1,0,81 +BRDA:48,1,1,47 BRDA:52,2,0,15 -BRDA:52,2,1,80 -BRDA:59,3,0,80 +BRDA:52,2,1,66 +BRDA:59,3,0,66 BRDA:59,3,1,19 -BRDA:61,4,0,80 -BRDA:61,4,1,61 -BRDA:62,5,0,45 +BRDA:61,4,0,66 +BRDA:61,4,1,47 +BRDA:62,5,0,31 BRDA:62,5,1,35 -BRDA:63,6,0,45 -BRDA:63,6,1,44 +BRDA:63,6,0,31 +BRDA:63,6,1,30 BRDA:66,7,0,19 -BRDA:66,7,1,61 -BRDA:66,8,0,80 +BRDA:66,7,1,47 +BRDA:66,8,0,66 BRDA:66,8,1,19 BRDA:66,8,2,19 BRDA:78,9,0,12 @@ -6981,23 +6996,23 @@ SF:packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/Past FN:11,addParser FNF:1 FNH:1 -FNDA:329,addParser +FNDA:302,addParser DA:11,1 -DA:16,329 -DA:17,88 -DA:19,329 -DA:20,322 -DA:23,329 +DA:16,302 +DA:17,82 +DA:19,302 +DA:20,296 +DA:23,302 LF:6 LH:6 -BRDA:16,0,0,88 -BRDA:16,0,1,241 -BRDA:19,1,0,322 -BRDA:19,1,1,7 +BRDA:16,0,0,82 +BRDA:16,0,1,220 +BRDA:19,1,0,296 +BRDA:19,1,1,6 BRDA:23,2,0,0 -BRDA:23,2,1,329 -BRDA:23,3,0,329 -BRDA:23,3,1,329 +BRDA:23,2,1,302 +BRDA:23,3,0,302 +BRDA:23,3,1,302 BRF:8 BRH:7 end_of_record @@ -7008,26 +7023,26 @@ FN:10,(anonymous_1) FN:15,(anonymous_2) FNF:3 FNH:3 -FNDA:35,(anonymous_0) -FNDA:175,(anonymous_1) -FNDA:975,(anonymous_2) +FNDA:29,(anonymous_0) +FNDA:145,(anonymous_1) +FNDA:644,(anonymous_2) DA:2,1 DA:7,1 -DA:10,35 -DA:11,175 -DA:12,175 -DA:13,175 -DA:15,975 -DA:17,30 -DA:18,30 +DA:10,29 +DA:11,145 +DA:12,145 +DA:13,145 +DA:15,644 +DA:17,23 +DA:18,23 LF:9 LH:9 -BRDA:13,0,0,30 -BRDA:13,0,1,145 -BRDA:14,1,0,175 -BRDA:14,1,1,54 -BRDA:15,2,0,975 -BRDA:15,2,1,30 +BRDA:13,0,0,23 +BRDA:13,0,1,122 +BRDA:14,1,0,145 +BRDA:14,1,1,39 +BRDA:15,2,0,644 +BRDA:15,2,1,23 BRF:6 BRH:6 end_of_record @@ -7066,15 +7081,15 @@ SF:packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/Past FN:6,setProcessor FNF:1 FNH:1 -FNDA:198,setProcessor +FNDA:188,setProcessor DA:6,1 -DA:11,198 -DA:12,66 -DA:15,198 +DA:11,188 +DA:12,62 +DA:15,188 LF:4 LH:4 -BRDA:11,0,0,66 -BRDA:11,0,1,132 +BRDA:11,0,0,62 +BRDA:11,0,1,126 BRF:2 BRH:2 end_of_record @@ -7598,203 +7613,213 @@ BRH:46 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts -FN:47,cloneModel -FN:60,cloneBlock -FN:83,cloneSegment -FN:103,cloneModelWithFormat -FN:111,cloneModelWithDataset -FN:117,cloneBlockBase -FN:130,cloneBlockGroupBase -FN:138,(anonymous_7) -FN:142,cloneSegmentBase -FN:165,cloneEntity -FN:182,cloneParagraph -FN:192,(anonymous_11) -FN:211,cloneTable -FN:218,(anonymous_13) -FN:225,cloneTableRow -FN:235,(anonymous_15) -FN:241,cloneTableCell -FN:261,cloneFormatContainer -FN:279,cloneListItem -FN:295,cloneListLevel -FN:300,cloneDivider -FN:316,cloneGeneralBlock -FN:333,cloneSelectionMarker -FN:337,cloneImage -FN:347,cloneGeneralSegment -FN:354,cloneText -FNF:26 -FNH:25 -FNDA:20,cloneModel -FNDA:43,cloneBlock -FNDA:30,cloneSegment -FNDA:133,cloneModelWithFormat -FNDA:19,cloneModelWithDataset -FNDA:47,cloneBlockBase -FNDA:41,cloneBlockGroupBase -FNDA:43,(anonymous_7) -FNDA:34,cloneSegmentBase -FNDA:4,cloneEntity -FNDA:20,cloneParagraph -FNDA:30,(anonymous_11) -FNDA:4,cloneTable -FNDA:4,(anonymous_13) -FNDA:4,cloneTableRow -FNDA:8,(anonymous_15) -FNDA:8,cloneTableCell +FN:56,cloneModel +FN:69,cloneBlock +FN:92,cloneSegment +FN:112,cloneModelWithFormat +FN:120,cloneModelWithDataset +FN:126,cloneBlockBase +FN:139,cloneBlockGroupBase +FN:147,(anonymous_7) +FN:151,cloneSegmentBase +FN:174,cloneEntity +FN:189,cloneParagraph +FN:199,(anonymous_11) +FN:218,cloneTable +FN:225,(anonymous_13) +FN:232,cloneTableRow +FN:242,(anonymous_15) +FN:248,cloneTableCell +FN:268,cloneFormatContainer +FN:286,cloneListItem +FN:302,cloneListLevel +FN:307,cloneDivider +FN:323,cloneGeneralBlock +FN:338,cloneSelectionMarker +FN:342,cloneImage +FN:352,cloneGeneralSegment +FN:359,cloneText +FN:376,handleCachedElement +FNF:27 +FNH:26 +FNDA:24,cloneModel +FNDA:41,cloneBlock +FNDA:22,cloneSegment +FNDA:111,cloneModelWithFormat +FNDA:16,cloneModelWithDataset +FNDA:45,cloneBlockBase +FNDA:43,cloneBlockGroupBase +FNDA:41,(anonymous_7) +FNDA:27,cloneSegmentBase +FNDA:7,cloneEntity +FNDA:17,cloneParagraph +FNDA:22,(anonymous_11) +FNDA:3,cloneTable +FNDA:3,(anonymous_13) +FNDA:3,cloneTableRow +FNDA:6,(anonymous_15) +FNDA:6,cloneTableCell FNDA:7,cloneFormatContainer FNDA:2,cloneListItem FNDA:4,cloneListLevel FNDA:6,cloneDivider FNDA:4,cloneGeneralBlock -FNDA:10,cloneSelectionMarker +FNDA:8,cloneSelectionMarker FNDA:0,cloneImage FNDA:2,cloneGeneralSegment -FNDA:15,cloneText -DA:47,1 -DA:51,20 -DA:53,20 -DA:54,6 -DA:57,20 -DA:61,43 -DA:63,11 -DA:65,7 -DA:67,2 -DA:69,2 -DA:71,0 -DA:73,6 -DA:75,2 -DA:77,20 -DA:79,4 -DA:87,30 -DA:89,3 -DA:91,2 -DA:93,2 -DA:95,0 -DA:97,8 -DA:99,15 -DA:106,133 -DA:112,19 -DA:120,47 -DA:122,47 -DA:134,82 -DA:136,41 -DA:138,43 -DA:145,136 -DA:147,34 -DA:155,34 -DA:156,2 -DA:158,34 -DA:159,3 -DA:162,34 -DA:166,16 -DA:168,4 -DA:186,100 -DA:188,20 -DA:192,30 -DA:199,20 -DA:200,11 -DA:208,20 -DA:212,12 -DA:214,4 -DA:218,4 -DA:229,12 -DA:231,4 -DA:235,8 -DA:245,40 -DA:247,8 -DA:265,14 -DA:266,7 -DA:272,7 -DA:273,0 -DA:276,7 -DA:283,4 -DA:285,2 -DA:296,4 -DA:298,4 -DA:304,18 -DA:306,6 -DA:320,4 -DA:322,4 -DA:334,10 -DA:338,0 -DA:340,0 -DA:351,2 -DA:355,15 -DA:356,15 -LF:71 -LH:66 -BRDA:51,0,0,20 -BRDA:51,0,1,7 -BRDA:53,1,0,6 -BRDA:53,1,1,14 -BRDA:62,2,0,11 -BRDA:62,2,1,6 -BRDA:62,2,2,2 -BRDA:62,2,3,20 -BRDA:62,2,4,4 -BRDA:64,3,0,7 -BRDA:64,3,1,2 -BRDA:64,3,2,2 -BRDA:88,4,0,3 -BRDA:88,4,1,2 -BRDA:88,4,2,2 -BRDA:88,4,3,0 -BRDA:88,4,4,8 -BRDA:88,4,5,15 -BRDA:155,5,0,2 -BRDA:155,5,1,32 -BRDA:158,6,0,3 -BRDA:158,6,1,31 -BRDA:171,7,0,2 -BRDA:171,7,1,2 -BRDA:190,8,0,3 -BRDA:190,8,1,17 -BRDA:193,9,0,5 -BRDA:193,9,1,15 -BRDA:199,10,0,11 -BRDA:199,10,1,9 -BRDA:216,11,0,1 -BRDA:216,11,1,3 -BRDA:234,12,0,1 -BRDA:234,12,1,3 -BRDA:249,13,0,2 -BRDA:249,13,1,6 -BRDA:267,14,0,1 -BRDA:267,14,1,6 -BRDA:272,15,0,0 -BRDA:272,15,1,7 -BRDA:310,16,0,3 -BRDA:310,16,1,3 -BRDA:325,17,0,2 -BRDA:325,17,1,2 -BRF:44 -BRH:42 +FNDA:8,cloneText +FNDA:53,handleCachedElement +DA:56,1 +DA:60,24 +DA:62,23 +DA:63,4 +DA:66,23 +DA:70,41 +DA:72,11 +DA:74,7 +DA:76,2 +DA:78,2 +DA:80,0 +DA:82,6 +DA:84,4 +DA:86,17 +DA:88,3 +DA:96,22 +DA:98,3 +DA:100,3 +DA:102,2 +DA:104,0 +DA:106,6 +DA:108,8 +DA:115,111 +DA:121,16 +DA:129,45 +DA:131,45 +DA:143,86 +DA:145,43 +DA:147,41 +DA:154,108 +DA:156,27 +DA:164,27 +DA:165,2 +DA:167,27 +DA:168,3 +DA:171,27 +DA:175,28 +DA:177,7 +DA:193,85 +DA:195,17 +DA:199,22 +DA:206,17 +DA:207,4 +DA:215,17 +DA:219,9 +DA:221,3 +DA:225,3 +DA:236,9 +DA:238,3 +DA:242,6 +DA:252,30 +DA:254,6 +DA:272,14 +DA:273,7 +DA:279,7 +DA:280,0 +DA:283,7 +DA:290,4 +DA:292,2 +DA:303,4 +DA:305,4 +DA:311,18 +DA:313,6 +DA:327,4 +DA:329,4 +DA:339,8 +DA:343,0 +DA:345,0 +DA:356,2 +DA:360,8 +DA:361,8 +DA:381,53 +DA:383,53 +DA:384,13 +DA:385,40 +DA:386,25 +DA:387,15 +DA:388,9 +DA:390,6 +DA:392,6 +DA:393,1 +DA:396,5 +LF:82 +LH:77 +BRDA:60,0,0,24 +BRDA:60,0,1,7 +BRDA:62,1,0,4 +BRDA:62,1,1,19 +BRDA:71,2,0,11 +BRDA:71,2,1,6 +BRDA:71,2,2,4 +BRDA:71,2,3,17 +BRDA:71,2,4,3 +BRDA:73,3,0,7 +BRDA:73,3,1,2 +BRDA:73,3,2,2 +BRDA:97,4,0,3 +BRDA:97,4,1,3 +BRDA:97,4,2,2 +BRDA:97,4,3,0 +BRDA:97,4,4,6 +BRDA:97,4,5,8 +BRDA:164,5,0,2 +BRDA:164,5,1,25 +BRDA:167,6,0,3 +BRDA:167,6,1,24 +BRDA:200,7,0,8 +BRDA:200,7,1,9 +BRDA:206,8,0,4 +BRDA:206,8,1,13 +BRDA:279,9,0,0 +BRDA:279,9,1,7 +BRDA:383,10,0,13 +BRDA:383,10,1,40 +BRDA:385,11,0,25 +BRDA:385,11,1,15 +BRDA:386,12,0,21 +BRDA:386,12,1,4 +BRDA:387,13,0,9 +BRDA:387,13,1,6 +BRDA:392,14,0,1 +BRDA:392,14,1,5 +BRDA:392,15,0,6 +BRDA:392,15,1,6 +BRDA:392,15,2,3 +BRF:41 +BRH:39 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts FN:17,getClosestAncestorBlockGroupIndex FNF:1 FNH:1 -FNDA:297,getClosestAncestorBlockGroupIndex +FNDA:291,getClosestAncestorBlockGroupIndex DA:17,1 -DA:20,321 -DA:22,297 -DA:23,312 -DA:25,312 +DA:20,315 +DA:22,291 +DA:23,306 +DA:25,306 DA:26,96 -DA:27,216 +DA:27,210 DA:32,3 -DA:36,198 +DA:36,192 LF:9 LH:9 BRDA:20,0,0,24 -BRDA:20,0,1,273 +BRDA:20,0,1,267 BRDA:25,1,0,96 -BRDA:25,1,1,216 +BRDA:25,1,1,210 BRDA:27,2,0,3 -BRDA:27,2,1,213 +BRDA:27,2,1,207 BRF:6 BRH:6 end_of_record @@ -7819,30 +7844,30 @@ end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts FN:62,mergeModel -FN:120,mergeParagraph -FN:145,(anonymous_2) -FN:158,mergeTable -FN:218,mergeList -FN:233,(anonymous_5) -FN:239,splitParagraph -FN:288,insertBlock -FN:299,applyDefaultFormat -FN:304,(anonymous_9) -FN:318,(anonymous_10) -FN:319,(anonymous_11) -FN:327,(anonymous_12) -FN:346,mergeSegmentFormat -FN:359,getSemanticFormat +FN:124,mergeParagraph +FN:158,(anonymous_2) +FN:171,mergeTable +FN:231,mergeList +FN:246,(anonymous_5) +FN:252,splitParagraph +FN:301,insertBlock +FN:312,applyDefaultFormat +FN:317,(anonymous_9) +FN:331,(anonymous_10) +FN:332,(anonymous_11) +FN:340,(anonymous_12) +FN:359,mergeSegmentFormat +FN:372,getSemanticFormat FNF:15 FNH:15 -FNDA:58,mergeModel -FNDA:39,mergeParagraph +FNDA:55,mergeModel +FNDA:34,mergeParagraph FNDA:7,(anonymous_2) -FNDA:6,mergeTable +FNDA:5,mergeTable FNDA:7,mergeList FNDA:2,(anonymous_5) -FNDA:29,splitParagraph -FNDA:13,insertBlock +FNDA:23,splitParagraph +FNDA:11,insertBlock FNDA:18,applyDefaultFormat FNDA:19,(anonymous_9) FNDA:1,(anonymous_10) @@ -7859,291 +7884,306 @@ DA:8,1 DA:9,1 DA:27,1 DA:62,1 -DA:69,58 -DA:71,58 -DA:72,56 +DA:69,55 +DA:71,55 +DA:72,53 DA:73,14 DA:78,14 -DA:81,56 -DA:82,63 -DA:84,63 -DA:86,39 -DA:87,39 -DA:91,3 -DA:92,3 -DA:95,11 -DA:96,6 -DA:98,5 -DA:100,11 -DA:103,10 -DA:106,3 -DA:107,3 -DA:109,7 -DA:110,7 -DA:112,10 -DA:117,58 -DA:125,78 -DA:126,39 -DA:129,39 -DA:131,39 -DA:132,39 -DA:135,39 -DA:136,8 -DA:137,8 -DA:138,2 -DA:141,2 -DA:145,2 -DA:146,7 -DA:147,4 -DA:153,39 -DA:154,9 -DA:163,6 -DA:165,6 -DA:166,12 -DA:167,4 -DA:168,7 -DA:169,13 -DA:171,13 -DA:172,2 -DA:173,6 -DA:174,6 -DA:183,13 -DA:184,2 +DA:81,53 +DA:82,56 +DA:84,56 +DA:86,34 +DA:87,34 +DA:90,2 +DA:91,2 +DA:94,1 +DA:95,1 +DA:96,1 +DA:99,9 +DA:100,5 +DA:102,4 +DA:104,9 +DA:107,10 +DA:110,3 +DA:111,3 +DA:113,7 +DA:114,7 +DA:116,10 +DA:121,55 +DA:130,68 +DA:131,34 +DA:134,34 +DA:136,34 +DA:137,34 +DA:138,49 +DA:140,49 +DA:142,49 +DA:143,2 +DA:148,34 +DA:149,3 +DA:150,3 +DA:151,2 +DA:154,2 +DA:158,2 +DA:159,7 +DA:160,4 +DA:166,34 +DA:167,5 +DA:176,5 +DA:178,5 +DA:179,12 +DA:180,4 +DA:181,7 +DA:182,13 +DA:184,13 DA:185,2 -DA:192,2 -DA:193,7 -DA:194,7 -DA:203,13 -DA:205,13 -DA:206,4 -DA:211,4 -DA:212,4 -DA:214,2 -DA:219,7 -DA:221,14 -DA:223,7 -DA:224,7 -DA:225,7 -DA:226,7 -DA:228,7 -DA:229,7 +DA:186,6 +DA:187,6 +DA:196,13 +DA:197,2 +DA:198,2 +DA:205,2 +DA:206,7 +DA:207,7 +DA:216,13 +DA:218,13 +DA:219,4 +DA:224,4 +DA:225,4 +DA:227,1 DA:232,7 -DA:233,2 -DA:234,2 -DA:240,87 -DA:241,29 -DA:242,29 -DA:243,29 -DA:249,29 -DA:250,29 -DA:253,29 -DA:254,29 -DA:257,29 -DA:262,29 -DA:264,29 -DA:265,4 -DA:266,4 -DA:268,4 -DA:269,4 -DA:271,4 -DA:272,4 -DA:275,4 -DA:276,4 +DA:234,14 +DA:236,7 +DA:237,7 +DA:238,7 +DA:239,7 +DA:241,7 +DA:242,7 +DA:245,7 +DA:246,2 +DA:247,2 +DA:253,69 +DA:254,23 +DA:255,23 +DA:256,23 +DA:262,23 +DA:263,23 +DA:266,23 +DA:267,23 +DA:270,23 +DA:275,23 +DA:277,23 +DA:278,4 DA:279,4 -DA:283,29 -DA:285,29 -DA:289,13 -DA:290,13 -DA:291,13 -DA:292,13 -DA:294,13 -DA:295,13 -DA:304,18 -DA:305,19 -DA:307,1 -DA:308,1 -DA:314,1 -DA:315,1 -DA:318,1 -DA:319,1 -DA:320,3 -DA:323,1 -DA:326,17 -DA:327,17 -DA:328,17 -DA:329,0 -DA:332,17 -DA:338,17 -DA:339,4 +DA:281,4 +DA:282,4 +DA:284,4 +DA:285,4 +DA:288,4 +DA:289,4 +DA:292,4 +DA:296,23 +DA:298,23 +DA:302,11 +DA:303,11 +DA:304,11 +DA:305,11 +DA:307,11 +DA:308,11 +DA:317,18 +DA:318,19 +DA:320,1 +DA:321,1 +DA:327,1 +DA:328,1 +DA:331,1 +DA:332,1 +DA:333,3 +DA:336,1 +DA:339,17 +DA:340,17 DA:341,17 -DA:351,18 -DA:360,5 -DA:362,15 -DA:364,5 -DA:365,3 -DA:367,5 -DA:368,3 -DA:370,5 -DA:371,3 -DA:374,5 -LF:136 -LH:135 +DA:342,0 +DA:345,17 +DA:351,17 +DA:352,4 +DA:354,17 +DA:364,18 +DA:373,5 +DA:375,15 +DA:377,5 +DA:378,3 +DA:380,5 +DA:381,3 +DA:383,5 +DA:384,3 +DA:387,5 +LF:143 +LH:142 BRDA:69,0,0,1 -BRDA:69,0,1,57 -BRDA:69,1,0,58 -BRDA:69,1,1,58 -BRDA:69,2,0,16 -BRDA:69,2,1,42 -BRDA:69,3,0,58 -BRDA:69,3,1,58 -BRDA:71,4,0,56 +BRDA:69,0,1,54 +BRDA:69,1,0,55 +BRDA:69,1,1,55 +BRDA:69,2,0,17 +BRDA:69,2,1,38 +BRDA:69,3,0,55 +BRDA:69,3,1,55 +BRDA:71,4,0,53 BRDA:71,4,1,2 BRDA:72,5,0,14 -BRDA:72,5,1,42 -BRDA:72,6,0,56 -BRDA:72,6,1,36 -BRDA:72,7,0,16 -BRDA:72,7,1,40 -BRDA:72,8,0,56 -BRDA:72,8,1,56 +BRDA:72,5,1,39 +BRDA:72,6,0,53 +BRDA:72,6,1,32 +BRDA:72,7,0,17 +BRDA:72,7,1,36 +BRDA:72,8,0,53 +BRDA:72,8,1,53 BRDA:74,9,0,14 BRDA:74,9,1,6 BRDA:78,10,0,0 BRDA:78,10,1,14 BRDA:78,11,0,14 BRDA:78,11,1,14 -BRDA:85,12,0,39 +BRDA:85,12,0,34 BRDA:85,12,1,2 -BRDA:85,12,2,3 -BRDA:85,12,3,11 +BRDA:85,12,2,1 +BRDA:85,12,3,9 BRDA:85,12,4,10 -BRDA:95,13,0,6 -BRDA:95,13,1,5 -BRDA:95,14,0,11 -BRDA:95,14,1,9 -BRDA:95,15,0,3 -BRDA:95,15,1,6 -BRDA:95,16,0,9 -BRDA:95,16,1,9 -BRDA:104,17,0,0 -BRDA:104,17,1,3 -BRDA:104,17,2,7 -BRDA:127,18,0,30 -BRDA:127,18,1,9 -BRDA:131,19,0,39 -BRDA:131,19,1,0 -BRDA:135,20,0,8 -BRDA:135,20,1,31 -BRDA:137,21,0,2 -BRDA:137,21,1,6 +BRDA:95,13,0,0 +BRDA:95,13,1,1 +BRDA:95,14,0,1 +BRDA:95,14,1,1 +BRDA:99,15,0,5 +BRDA:99,15,1,4 +BRDA:99,16,0,9 +BRDA:99,16,1,8 +BRDA:99,17,0,3 +BRDA:99,17,1,5 +BRDA:99,18,0,8 +BRDA:99,18,1,8 +BRDA:108,19,0,0 +BRDA:108,19,1,3 +BRDA:108,19,2,7 +BRDA:132,20,0,29 +BRDA:132,20,1,5 +BRDA:136,21,0,34 +BRDA:136,21,1,0 BRDA:142,22,0,2 -BRDA:142,22,1,1 -BRDA:146,23,0,4 -BRDA:146,23,1,3 -BRDA:147,24,0,0 -BRDA:147,24,1,4 -BRDA:147,25,0,4 -BRDA:147,25,1,4 -BRDA:153,26,0,9 -BRDA:153,26,1,30 -BRDA:165,27,0,4 -BRDA:165,27,1,2 -BRDA:165,28,0,6 -BRDA:165,28,1,4 -BRDA:165,28,2,4 -BRDA:171,29,0,2 -BRDA:171,29,1,11 -BRDA:171,30,0,13 -BRDA:171,30,1,7 -BRDA:173,31,0,0 -BRDA:173,31,1,6 -BRDA:173,32,0,6 -BRDA:173,32,1,6 -BRDA:177,33,0,0 -BRDA:177,33,1,6 -BRDA:177,34,0,6 -BRDA:177,34,1,6 -BRDA:178,35,0,0 -BRDA:178,35,1,6 -BRDA:178,36,0,6 -BRDA:178,36,1,6 -BRDA:183,37,0,2 -BRDA:183,37,1,11 -BRDA:183,38,0,13 -BRDA:183,38,1,7 -BRDA:184,39,0,2 -BRDA:184,39,1,0 -BRDA:193,40,0,0 -BRDA:193,40,1,7 -BRDA:193,41,0,7 -BRDA:193,41,1,7 -BRDA:198,42,0,0 -BRDA:198,42,1,7 -BRDA:198,43,0,7 -BRDA:198,43,1,7 -BRDA:205,44,0,4 -BRDA:205,44,1,9 -BRDA:205,45,0,13 -BRDA:205,45,1,7 -BRDA:226,46,0,7 -BRDA:226,46,1,5 -BRDA:228,47,0,7 -BRDA:228,47,1,0 -BRDA:232,48,0,2 -BRDA:232,48,1,5 -BRDA:233,49,0,0 -BRDA:233,49,1,2 -BRDA:233,50,0,2 -BRDA:233,50,1,2 -BRDA:249,51,0,29 -BRDA:249,51,1,0 -BRDA:253,52,0,29 -BRDA:253,52,1,0 -BRDA:264,53,0,4 -BRDA:264,53,1,25 -BRDA:265,54,0,4 -BRDA:265,54,1,0 -BRDA:266,55,0,4 -BRDA:266,55,1,0 -BRDA:268,56,0,4 -BRDA:268,56,1,0 -BRDA:268,57,0,4 -BRDA:268,57,1,4 -BRDA:271,58,0,4 -BRDA:271,58,1,0 -BRDA:275,59,0,4 -BRDA:275,59,1,0 -BRDA:290,60,0,13 -BRDA:290,60,1,0 -BRDA:294,61,0,13 -BRDA:294,61,1,0 -BRDA:306,62,0,1 -BRDA:306,62,1,1 -BRDA:306,62,2,17 -BRDA:307,63,0,1 -BRDA:307,63,1,0 -BRDA:326,64,0,17 -BRDA:326,64,1,15 -BRDA:326,65,0,15 -BRDA:326,65,1,2 -BRDA:326,66,0,17 -BRDA:326,66,1,17 -BRDA:328,67,0,0 -BRDA:328,67,1,17 -BRDA:338,68,0,4 -BRDA:338,68,1,13 -BRDA:352,69,0,13 -BRDA:352,69,1,5 -BRDA:364,70,0,3 -BRDA:364,70,1,2 -BRDA:364,71,0,5 -BRDA:364,71,1,3 -BRDA:367,72,0,3 -BRDA:367,72,1,2 -BRDA:370,73,0,3 -BRDA:370,73,1,2 -BRF:154 -BRH:131 +BRDA:142,22,1,47 +BRDA:142,23,0,49 +BRDA:142,23,1,47 +BRDA:148,24,0,3 +BRDA:148,24,1,31 +BRDA:150,25,0,2 +BRDA:150,25,1,1 +BRDA:155,26,0,2 +BRDA:155,26,1,1 +BRDA:159,27,0,4 +BRDA:159,27,1,3 +BRDA:160,28,0,0 +BRDA:160,28,1,4 +BRDA:160,29,0,4 +BRDA:160,29,1,4 +BRDA:166,30,0,5 +BRDA:166,30,1,29 +BRDA:178,31,0,4 +BRDA:178,31,1,1 +BRDA:178,32,0,5 +BRDA:178,32,1,4 +BRDA:178,32,2,4 +BRDA:184,33,0,2 +BRDA:184,33,1,11 +BRDA:184,34,0,13 +BRDA:184,34,1,7 +BRDA:186,35,0,0 +BRDA:186,35,1,6 +BRDA:186,36,0,6 +BRDA:186,36,1,6 +BRDA:190,37,0,0 +BRDA:190,37,1,6 +BRDA:190,38,0,6 +BRDA:190,38,1,6 +BRDA:191,39,0,0 +BRDA:191,39,1,6 +BRDA:191,40,0,6 +BRDA:191,40,1,6 +BRDA:196,41,0,2 +BRDA:196,41,1,11 +BRDA:196,42,0,13 +BRDA:196,42,1,7 +BRDA:197,43,0,2 +BRDA:197,43,1,0 +BRDA:206,44,0,0 +BRDA:206,44,1,7 +BRDA:206,45,0,7 +BRDA:206,45,1,7 +BRDA:211,46,0,0 +BRDA:211,46,1,7 +BRDA:211,47,0,7 +BRDA:211,47,1,7 +BRDA:218,48,0,4 +BRDA:218,48,1,9 +BRDA:218,49,0,13 +BRDA:218,49,1,7 +BRDA:239,50,0,7 +BRDA:239,50,1,5 +BRDA:241,51,0,7 +BRDA:241,51,1,0 +BRDA:245,52,0,2 +BRDA:245,52,1,5 +BRDA:246,53,0,0 +BRDA:246,53,1,2 +BRDA:246,54,0,2 +BRDA:246,54,1,2 +BRDA:262,55,0,23 +BRDA:262,55,1,0 +BRDA:266,56,0,23 +BRDA:266,56,1,0 +BRDA:277,57,0,4 +BRDA:277,57,1,19 +BRDA:278,58,0,4 +BRDA:278,58,1,0 +BRDA:279,59,0,4 +BRDA:279,59,1,0 +BRDA:281,60,0,4 +BRDA:281,60,1,0 +BRDA:281,61,0,4 +BRDA:281,61,1,4 +BRDA:284,62,0,4 +BRDA:284,62,1,0 +BRDA:288,63,0,4 +BRDA:288,63,1,0 +BRDA:303,64,0,11 +BRDA:303,64,1,0 +BRDA:307,65,0,11 +BRDA:307,65,1,0 +BRDA:319,66,0,1 +BRDA:319,66,1,1 +BRDA:319,66,2,17 +BRDA:320,67,0,1 +BRDA:320,67,1,0 +BRDA:339,68,0,17 +BRDA:339,68,1,15 +BRDA:339,69,0,15 +BRDA:339,69,1,2 +BRDA:339,70,0,17 +BRDA:339,70,1,17 +BRDA:341,71,0,0 +BRDA:341,71,1,17 +BRDA:351,72,0,4 +BRDA:351,72,1,13 +BRDA:365,73,0,13 +BRDA:365,73,1,5 +BRDA:377,74,0,3 +BRDA:377,74,1,2 +BRDA:377,75,0,5 +BRDA:377,75,1,3 +BRDA:380,76,0,3 +BRDA:380,76,1,2 +BRDA:383,77,0,3 +BRDA:383,77,1,2 +BRF:162 +BRH:138 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts @@ -8436,40 +8476,40 @@ FN:37,isValidDeleteSelectionContext FN:44,mergeParagraphAfterDelete FNF:4 FNH:4 -FNDA:207,deleteSelection +FNDA:204,deleteSelection FNDA:70,(anonymous_1) FNDA:70,isValidDeleteSelectionContext -FNDA:207,mergeParagraphAfterDelete +FNDA:204,mergeParagraphAfterDelete DA:2,1 DA:15,1 -DA:17,224 -DA:20,207 -DA:22,207 +DA:17,221 +DA:20,204 +DA:22,204 DA:23,70 DA:28,52 -DA:32,207 -DA:34,207 +DA:32,204 +DA:34,204 DA:40,70 -DA:45,828 -DA:47,207 +DA:45,816 +DA:47,204 DA:55,22 DA:56,22 LF:14 LH:14 BRDA:17,0,0,17 -BRDA:17,0,1,190 +BRDA:17,0,1,187 BRDA:23,1,0,52 BRDA:23,1,1,18 BRDA:24,2,0,70 BRDA:24,2,1,70 BRDA:24,2,2,68 BRDA:47,3,0,22 -BRDA:47,3,1,185 -BRDA:48,4,0,207 -BRDA:48,4,1,194 -BRDA:48,4,2,107 -BRDA:48,4,3,103 -BRDA:48,4,4,82 +BRDA:47,3,1,182 +BRDA:48,4,0,204 +BRDA:48,4,1,191 +BRDA:48,4,2,108 +BRDA:48,4,3,104 +BRDA:48,4,4,83 BRDA:48,4,5,22 BRF:15 BRH:15 @@ -8773,9 +8813,9 @@ SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils FN:12,createInsertPoint FNF:1 FNH:1 -FNDA:201,createInsertPoint +FNDA:198,createInsertPoint DA:12,1 -DA:18,201 +DA:18,198 LF:2 LH:2 BRF:0 @@ -8842,9 +8882,9 @@ FN:38,(anonymous_1) FN:61,(anonymous_2) FNF:3 FNH:3 -FNDA:207,deleteExpandedSelection -FNDA:209,(anonymous_1) -FNDA:185,(anonymous_2) +FNDA:204,deleteExpandedSelection +FNDA:206,(anonymous_1) +FNDA:182,(anonymous_2) DA:2,1 DA:3,1 DA:5,1 @@ -8852,25 +8892,25 @@ DA:7,1 DA:8,1 DA:15,1 DA:26,1 -DA:30,207 -DA:36,207 -DA:41,209 -DA:46,209 -DA:47,209 -DA:49,209 -DA:51,182 -DA:54,182 -DA:55,182 -DA:56,182 -DA:58,182 -DA:59,182 -DA:61,182 -DA:62,185 -DA:69,141 -DA:75,44 -DA:76,44 -DA:83,182 -DA:84,41 +DA:30,204 +DA:36,204 +DA:41,206 +DA:46,206 +DA:47,206 +DA:49,206 +DA:51,179 +DA:54,179 +DA:55,179 +DA:56,179 +DA:58,179 +DA:59,179 +DA:61,179 +DA:62,182 +DA:69,137 +DA:75,45 +DA:76,45 +DA:83,179 +DA:84,42 DA:87,27 DA:89,24 DA:91,24 @@ -8885,41 +8925,41 @@ DA:102,3 DA:104,3 DA:105,3 DA:106,3 -DA:109,209 -DA:111,53 -DA:113,53 -DA:114,53 -DA:115,53 -DA:121,207 +DA:109,206 +DA:111,54 +DA:113,54 +DA:114,54 +DA:115,54 +DA:121,204 LF:46 LH:46 -BRDA:49,0,0,182 +BRDA:49,0,0,179 BRDA:49,0,1,27 -BRDA:51,1,0,182 +BRDA:51,1,0,179 BRDA:51,1,1,0 -BRDA:51,2,0,182 -BRDA:51,2,1,182 +BRDA:51,2,0,179 +BRDA:51,2,1,179 BRDA:51,3,0,0 -BRDA:51,3,1,182 -BRDA:51,4,0,182 -BRDA:51,4,1,182 -BRDA:62,5,0,141 -BRDA:62,5,1,44 -BRDA:63,6,0,185 -BRDA:63,6,1,182 -BRDA:63,6,2,173 -BRDA:75,7,0,44 +BRDA:51,3,1,179 +BRDA:51,4,0,179 +BRDA:51,4,1,179 +BRDA:62,5,0,137 +BRDA:62,5,1,45 +BRDA:63,6,0,182 +BRDA:63,6,1,179 +BRDA:63,6,2,170 +BRDA:75,7,0,45 BRDA:75,7,1,0 -BRDA:83,8,0,41 -BRDA:83,8,1,141 +BRDA:83,8,0,42 +BRDA:83,8,1,137 BRDA:87,9,0,24 BRDA:87,9,1,3 BRDA:91,10,0,24 BRDA:91,10,1,0 BRDA:94,11,0,3 BRDA:94,11,1,0 -BRDA:109,12,0,53 -BRDA:109,12,1,156 +BRDA:109,12,0,54 +BRDA:109,12,1,152 BRF:27 BRH:22 end_of_record @@ -8929,27 +8969,27 @@ FN:11,deleteSegment FN:85,normalizePreviousSegment FNF:2 FNH:2 -FNDA:60,deleteSegment -FNDA:58,normalizePreviousSegment +FNDA:61,deleteSegment +FNDA:59,normalizePreviousSegment DA:2,1 DA:5,1 DA:6,1 DA:11,1 -DA:17,60 -DA:18,60 -DA:19,60 -DA:20,60 -DA:21,60 -DA:23,60 -DA:24,58 -DA:27,60 +DA:17,61 +DA:18,61 +DA:19,61 +DA:20,61 +DA:21,61 +DA:23,61 +DA:24,59 +DA:27,61 DA:31,7 DA:32,7 -DA:35,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:50,0 +DA:35,1 +DA:42,1 +DA:43,1 +DA:44,1 +DA:50,1 DA:53,51 DA:55,51 DA:56,38 @@ -8965,34 +9005,34 @@ DA:74,2 DA:75,2 DA:76,2 DA:80,0 -DA:86,58 -DA:88,58 +DA:86,59 +DA:88,59 DA:89,6 -DA:92,58 -DA:94,58 +DA:92,59 +DA:94,59 DA:95,22 LF:40 -LH:34 -BRDA:23,0,0,58 +LH:39 +BRDA:23,0,0,59 BRDA:23,0,1,2 BRDA:28,1,0,1 BRDA:28,1,1,5 BRDA:28,1,2,7 -BRDA:28,1,3,0 +BRDA:28,1,3,1 BRDA:28,1,4,51 BRDA:28,1,5,2 -BRDA:36,2,0,0 +BRDA:36,2,0,1 BRDA:36,2,1,0 BRDA:38,3,0,0 BRDA:38,3,1,0 BRDA:40,4,0,0 BRDA:40,4,1,0 -BRDA:42,5,0,0 +BRDA:42,5,0,1 BRDA:42,5,1,0 BRDA:44,6,0,0 -BRDA:44,6,1,0 -BRDA:44,7,0,0 -BRDA:44,7,1,0 +BRDA:44,6,1,1 +BRDA:44,7,0,1 +BRDA:44,7,1,1 BRDA:55,8,0,38 BRDA:55,8,1,13 BRDA:55,9,0,51 @@ -9005,14 +9045,14 @@ BRDA:64,12,0,3 BRDA:64,12,1,10 BRDA:74,13,0,2 BRDA:74,13,1,0 -BRDA:88,14,0,36 +BRDA:88,14,0,37 BRDA:88,14,1,28 -BRDA:88,15,0,64 -BRDA:88,15,1,64 +BRDA:88,15,0,65 +BRDA:88,15,1,65 BRDA:94,16,0,22 -BRDA:94,16,1,36 +BRDA:94,16,1,37 BRF:38 -BRH:23 +BRH:29 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts @@ -9194,10 +9234,10 @@ FNF:6 FNH:6 FNDA:20,getPendingFormat FNDA:1,setPendingFormat -FNDA:28,clearPendingFormat -FNDA:31,canApplyPendingFormat -FNDA:80,getPendingFormatHolder -FNDA:25,(anonymous_5) +FNDA:22,clearPendingFormat +FNDA:25,canApplyPendingFormat +FNDA:68,getPendingFormatHolder +FNDA:21,(anonymous_5) DA:10,1 DA:11,20 DA:21,1 @@ -9205,24 +9245,24 @@ DA:26,1 DA:28,1 DA:29,1 DA:36,1 -DA:37,28 -DA:39,28 -DA:40,28 +DA:37,22 +DA:39,22 +DA:40,22 DA:48,1 -DA:49,31 -DA:50,31 -DA:52,31 +DA:49,25 +DA:50,25 +DA:52,25 DA:53,3 DA:55,3 DA:56,1 -DA:60,31 +DA:60,25 DA:67,1 -DA:70,80 +DA:70,68 LF:20 LH:20 BRDA:52,0,0,3 -BRDA:52,0,1,28 -BRDA:52,1,0,31 +BRDA:52,0,1,22 +BRDA:52,1,0,25 BRDA:52,1,1,3 BRDA:55,2,0,1 BRDA:55,2,1,2 @@ -9989,26 +10029,26 @@ FN:135,(anonymous_3) FN:136,(anonymous_4) FNF:5 FNH:5 -FNDA:695,iterateSelections -FNDA:688,(anonymous_1) -FNDA:903,internalIterateSelections +FNDA:692,iterateSelections +FNDA:685,(anonymous_1) +FNDA:900,internalIterateSelections FNDA:53,(anonymous_3) FNDA:66,(anonymous_4) DA:58,1 -DA:65,695 -DA:66,688 +DA:65,692 +DA:66,685 DA:69,2 -DA:72,688 -DA:75,695 -DA:85,903 -DA:86,903 -DA:87,903 -DA:89,903 -DA:91,903 -DA:92,903 -DA:94,903 -DA:95,980 -DA:97,980 +DA:72,685 +DA:75,692 +DA:85,900 +DA:86,900 +DA:87,900 +DA:89,900 +DA:91,900 +DA:92,900 +DA:94,900 +DA:95,977 +DA:97,977 DA:99,121 DA:101,121 DA:102,24 @@ -10040,60 +10080,60 @@ DA:169,70 DA:171,70 DA:180,1 DA:187,45 -DA:190,762 -DA:192,762 -DA:193,1117 -DA:194,1117 -DA:196,1117 +DA:190,759 +DA:192,759 +DA:193,1111 +DA:194,1111 +DA:196,1111 DA:198,27 DA:202,27 DA:207,27 DA:217,0 DA:220,27 DA:221,10 -DA:223,1090 -DA:224,684 -DA:227,1117 -DA:228,698 -DA:230,419 -DA:234,762 +DA:223,1084 +DA:224,681 +DA:227,1111 +DA:228,695 +DA:230,416 +DA:234,759 DA:235,37 -DA:237,725 +DA:237,722 DA:241,49 DA:242,1 DA:245,48 -DA:249,859 +DA:249,856 DA:257,0 -DA:260,859 +DA:260,856 LF:71 LH:67 BRDA:66,0,0,2 -BRDA:66,0,1,686 +BRDA:66,0,1,683 BRDA:66,1,0,29 -BRDA:66,1,1,659 -BRDA:66,2,0,688 -BRDA:66,2,1,688 -BRDA:86,3,0,903 +BRDA:66,1,1,656 +BRDA:66,2,0,685 +BRDA:66,2,1,685 +BRDA:86,3,0,900 BRDA:86,3,1,162 BRDA:86,4,0,101 -BRDA:86,4,1,802 -BRDA:86,5,0,903 -BRDA:86,5,1,903 -BRDA:87,6,0,903 +BRDA:86,4,1,799 +BRDA:86,5,0,900 +BRDA:86,5,1,900 +BRDA:87,6,0,900 BRDA:87,6,1,470 BRDA:87,7,0,101 -BRDA:87,7,1,802 -BRDA:87,8,0,903 -BRDA:87,8,1,903 -BRDA:89,9,0,903 +BRDA:87,7,1,799 +BRDA:87,8,0,900 +BRDA:87,8,1,900 +BRDA:89,9,0,900 BRDA:89,9,1,594 BRDA:89,10,0,101 -BRDA:89,10,1,802 -BRDA:89,11,0,903 -BRDA:89,11,1,903 +BRDA:89,10,1,799 +BRDA:89,11,0,900 +BRDA:89,11,1,900 BRDA:98,12,0,121 BRDA:98,12,1,48 -BRDA:98,12,2,762 +BRDA:98,12,2,759 BRDA:98,12,3,32 BRDA:98,12,4,49 BRDA:101,13,0,24 @@ -10135,10 +10175,10 @@ BRDA:169,28,0,70 BRDA:169,28,1,69 BRDA:171,29,0,1 BRDA:171,29,1,69 -BRDA:194,30,0,1117 -BRDA:194,30,1,1081 +BRDA:194,30,0,1111 +BRDA:194,30,1,1075 BRDA:196,31,0,27 -BRDA:196,31,1,1090 +BRDA:196,31,1,1084 BRDA:198,32,0,27 BRDA:198,32,1,14 BRDA:198,32,2,11 @@ -10152,22 +10192,22 @@ BRDA:208,35,0,27 BRDA:208,35,1,22 BRDA:220,36,0,10 BRDA:220,36,1,17 -BRDA:223,37,0,684 -BRDA:223,37,1,406 -BRDA:227,38,0,698 -BRDA:227,38,1,419 +BRDA:223,37,0,681 +BRDA:223,37,1,403 +BRDA:227,38,0,695 +BRDA:227,38,1,416 BRDA:234,39,0,37 -BRDA:234,39,1,725 -BRDA:234,40,0,762 -BRDA:234,40,1,611 +BRDA:234,39,1,722 +BRDA:234,40,0,759 +BRDA:234,40,1,608 BRDA:241,41,0,1 BRDA:241,41,1,48 BRDA:241,42,0,49 BRDA:241,42,1,49 BRDA:241,42,2,24 BRDA:249,43,0,0 -BRDA:249,43,1,859 -BRDA:250,44,0,859 +BRDA:249,43,1,856 +BRDA:250,44,0,856 BRDA:250,44,1,198 BRDA:250,44,2,9 BRDA:250,44,3,9 @@ -11779,11 +11819,11 @@ DA:74,4 DA:78,4 DA:87,4 DA:89,4 -DA:96,4 -DA:97,1 -DA:100,4 -DA:102,4 -DA:104,4 +DA:90,4 +DA:92,4 +DA:99,4 +DA:101,4 +DA:103,4 LF:24 LH:24 BRDA:60,0,0,4 @@ -11802,12 +11842,10 @@ BRDA:66,6,0,1 BRDA:66,6,1,3 BRDA:81,7,0,3 BRDA:81,7,1,1 -BRDA:92,8,0,1 -BRDA:92,8,1,3 -BRDA:96,9,0,1 -BRDA:96,9,1,3 -BRF:20 -BRH:20 +BRDA:95,8,0,1 +BRDA:95,8,1,3 +BRF:18 +BRH:18 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts @@ -13231,81 +13269,91 @@ end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts FN:20,formatWithContentModel -FN:44,(anonymous_1) -FN:84,handleDeletedEntities -FN:88,(anonymous_3) -FNF:4 -FNH:4 -FNDA:306,formatWithContentModel -FNDA:211,(anonymous_1) -FNDA:211,handleDeletedEntities +FN:45,(anonymous_1) +FN:86,handleNewEntities +FN:92,(anonymous_3) +FN:98,handleDeletedEntities +FN:102,(anonymous_5) +FNF:6 +FNH:6 +FNDA:303,formatWithContentModel +FNDA:208,(anonymous_1) +FNDA:208,handleNewEntities FNDA:2,(anonymous_3) +FNDA:208,handleDeletedEntities +FNDA:2,(anonymous_5) DA:2,1 DA:20,1 -DA:27,306 -DA:28,306 -DA:29,306 -DA:30,306 -DA:31,306 -DA:32,306 -DA:33,306 -DA:35,306 -DA:37,306 -DA:38,306 -DA:43,306 -DA:44,210 -DA:45,211 -DA:47,211 -DA:48,211 -DA:51,211 -DA:52,16 -DA:53,16 +DA:27,303 +DA:28,303 +DA:29,303 +DA:30,303 +DA:31,303 +DA:32,303 +DA:33,303 +DA:35,303 +DA:37,303 +DA:38,303 +DA:44,303 +DA:45,207 +DA:46,208 +DA:47,208 +DA:49,208 +DA:50,208 +DA:53,208 +DA:54,16 DA:55,16 -DA:56,2 -DA:60,211 -DA:63,210 -DA:64,6 +DA:57,16 +DA:58,2 +DA:62,208 +DA:65,207 DA:66,6 -DA:67,3 -DA:70,204 -DA:80,210 -DA:88,211 -DA:89,2 -DA:90,2 -LF:32 -LH:32 -BRDA:33,0,0,306 +DA:68,6 +DA:69,3 +DA:72,201 +DA:82,207 +DA:91,208 +DA:92,1 +DA:93,2 +DA:102,208 +DA:103,2 +DA:104,2 +LF:36 +LH:36 +BRDA:33,0,0,303 BRDA:33,0,1,229 -BRDA:43,1,0,210 -BRDA:43,1,1,96 -BRDA:47,2,0,211 -BRDA:47,2,1,0 -BRDA:51,3,0,16 -BRDA:51,3,1,195 -BRDA:55,4,0,2 -BRDA:55,4,1,14 -BRDA:55,5,0,16 -BRDA:55,5,1,2 -BRDA:60,6,0,177 -BRDA:60,6,1,34 -BRDA:60,7,0,211 -BRDA:60,7,1,211 -BRDA:63,8,0,6 -BRDA:63,8,1,204 -BRDA:66,9,0,3 -BRDA:66,9,1,3 -BRDA:72,10,0,204 -BRDA:72,10,1,171 -BRDA:80,11,0,175 -BRDA:80,11,1,35 -BRDA:80,12,0,210 -BRDA:80,12,1,210 -BRDA:89,13,0,2 -BRDA:89,13,1,0 -BRDA:89,14,0,2 -BRDA:89,14,1,2 -BRF:30 -BRH:28 +BRDA:44,1,0,207 +BRDA:44,1,1,96 +BRDA:49,2,0,208 +BRDA:49,2,1,0 +BRDA:53,3,0,16 +BRDA:53,3,1,192 +BRDA:57,4,0,2 +BRDA:57,4,1,14 +BRDA:57,5,0,16 +BRDA:57,5,1,2 +BRDA:62,6,0,178 +BRDA:62,6,1,30 +BRDA:62,7,0,208 +BRDA:62,7,1,208 +BRDA:65,8,0,6 +BRDA:65,8,1,201 +BRDA:68,9,0,3 +BRDA:68,9,1,3 +BRDA:74,10,0,201 +BRDA:74,10,1,172 +BRDA:82,11,0,175 +BRDA:82,11,1,32 +BRDA:82,12,0,207 +BRDA:82,12,1,207 +BRDA:91,13,0,1 +BRDA:91,13,1,207 +BRDA:103,14,0,2 +BRDA:103,14,1,0 +BRDA:103,15,0,2 +BRDA:103,15,1,2 +BRF:32 +BRH:30 end_of_record TN: SF:packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts @@ -13319,122 +13367,122 @@ FN:132,(anonymous_6) FN:150,triggerPluginEventAndCreatePasteFragment FNF:8 FNH:7 -FNDA:23,paste -FNDA:23,(anonymous_1) -FNDA:23,(anonymous_2) -FNDA:26,mergePasteContent -FNDA:25,shouldMergeTable -FNDA:23,createBeforePasteEventData +FNDA:19,paste +FNDA:19,(anonymous_1) +FNDA:19,(anonymous_2) +FNDA:22,mergePasteContent +FNDA:21,shouldMergeTable +FNDA:19,createBeforePasteEventData FNDA:0,(anonymous_6) -FNDA:23,triggerPluginEventAndCreatePasteFragment +FNDA:19,triggerPluginEventAndCreatePasteFragment DA:1,1 DA:2,1 DA:5,1 DA:11,1 DA:36,1 -DA:39,38 -DA:40,43 -DA:41,43 -DA:43,23 -DA:45,5 -DA:47,18 -DA:50,23 -DA:57,23 -DA:58,23 -DA:59,23 -DA:60,23 -DA:69,23 -DA:71,23 -DA:72,23 -DA:76,23 -DA:79,23 +DA:39,31 +DA:40,36 +DA:41,36 +DA:43,19 +DA:45,3 +DA:47,16 +DA:50,19 +DA:57,19 +DA:58,19 +DA:59,19 +DA:60,19 +DA:69,19 +DA:71,19 +DA:72,19 +DA:76,19 +DA:79,19 DA:89,1 -DA:98,26 +DA:98,22 DA:99,1 -DA:101,25 -DA:106,26 -DA:111,25 +DA:101,21 +DA:106,22 +DA:111,21 DA:118,0 -DA:121,25 -DA:129,23 -DA:132,23 -DA:134,23 -DA:158,23 -DA:163,23 -DA:164,69 -DA:165,23 -DA:167,23 -DA:172,23 -DA:175,23 -DA:177,1 -DA:178,22 -DA:179,16 +DA:121,21 +DA:129,19 +DA:132,19 +DA:134,19 +DA:158,19 +DA:163,19 +DA:164,57 +DA:165,19 +DA:167,19 +DA:172,19 +DA:175,19 +DA:177,0 +DA:178,19 +DA:179,13 DA:180,6 DA:182,0 -DA:185,23 -DA:187,23 -DA:188,17 -DA:196,23 -DA:198,23 +DA:185,19 +DA:187,19 +DA:188,13 +DA:196,19 +DA:198,19 LF:49 -LH:47 -BRDA:39,0,0,15 -BRDA:39,0,1,8 -BRDA:40,1,0,20 -BRDA:40,1,1,3 -BRDA:41,2,0,20 -BRDA:41,2,1,3 -BRDA:43,3,0,5 -BRDA:43,3,1,18 -BRDA:71,4,0,23 +LH:46 +BRDA:39,0,0,12 +BRDA:39,0,1,7 +BRDA:40,1,0,17 +BRDA:40,1,1,2 +BRDA:41,2,0,17 +BRDA:41,2,1,2 +BRDA:43,3,0,3 +BRDA:43,3,1,16 +BRDA:71,4,0,19 BRDA:71,4,1,0 BRDA:98,5,0,1 -BRDA:98,5,1,25 +BRDA:98,5,1,21 BRDA:102,6,0,1 -BRDA:102,6,1,24 +BRDA:102,6,1,20 BRDA:111,7,0,0 -BRDA:111,7,1,25 -BRDA:112,8,0,25 -BRDA:112,8,1,3 +BRDA:111,7,1,21 +BRDA:112,8,0,21 +BRDA:112,8,1,2 BRDA:112,8,2,0 BRDA:112,8,3,0 BRDA:112,8,4,0 -BRDA:121,9,0,25 -BRDA:121,9,1,13 -BRDA:168,10,0,23 +BRDA:121,9,0,21 +BRDA:121,9,1,11 +BRDA:168,10,0,19 BRDA:168,10,1,0 -BRDA:175,11,0,1 -BRDA:175,11,1,22 -BRDA:175,12,0,23 -BRDA:175,12,1,1 -BRDA:175,12,2,22 -BRDA:175,12,3,16 +BRDA:175,11,0,0 +BRDA:175,11,1,19 +BRDA:175,12,0,19 +BRDA:175,12,1,0 +BRDA:175,12,2,19 +BRDA:175,12,3,13 BRDA:175,12,4,6 -BRDA:178,13,0,16 +BRDA:178,13,0,13 BRDA:178,13,1,6 -BRDA:178,14,0,16 +BRDA:178,14,0,13 BRDA:178,14,1,6 -BRDA:178,15,0,22 -BRDA:178,15,1,16 -BRDA:178,15,2,16 +BRDA:178,15,0,19 +BRDA:178,15,1,13 +BRDA:178,15,2,13 BRDA:179,16,0,0 -BRDA:179,16,1,16 -BRDA:179,17,0,16 -BRDA:179,17,1,16 +BRDA:179,16,1,13 +BRDA:179,17,0,13 +BRDA:179,17,1,13 BRDA:180,18,0,0 BRDA:180,18,1,6 -BRDA:187,19,0,17 +BRDA:187,19,0,13 BRDA:187,19,1,6 BRF:47 -BRH:39 +BRH:37 end_of_record TN: SF:packages/roosterjs-color-utils/lib/index.ts FN:1,(anonymous_0) FNF:1 FNH:1 -FNDA:21,(anonymous_0) -DA:1,22 +FNDA:17,(anonymous_0) +DA:1,18 LF:1 LH:1 BRF:0 @@ -13533,7 +13581,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) @@ -13573,7 +13621,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 @@ -13603,48 +13651,48 @@ FN:21,(anonymous_1) FN:39,getCapitalizedText FN:67,(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:14,1 -DA:19,0 -DA:22,0 -DA:23,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:43,0 +DA:19,20 +DA:22,24 +DA:23,24 +DA:27,24 +DA:28,24 +DA:29,24 +DA:31,1 +DA:43,25 DA:44,0 -DA:46,0 -DA:48,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:57,0 -DA:60,0 -DA:66,0 -DA:67,0 -DA:68,0 +DA:46,25 +DA:48,3 +DA:50,14 +DA:52,6 +DA:53,5 +DA:54,14 +DA:57,5 +DA:60,2 +DA:66,2 +DA:67,2 +DA:68,6 DA:71,0 LF:24 -LH:3 -BRDA:27,0,0,0 +LH:22 +BRDA:27,0,0,24 BRDA:27,0,1,0 BRDA:43,1,0,0 -BRDA:43,1,1,0 -BRDA:47,2,0,0 -BRDA:47,2,1,0 -BRDA:47,2,2,0 -BRDA:47,2,3,0 +BRDA:43,1,1,25 +BRDA:47,2,0,3 +BRDA:47,2,1,14 +BRDA:47,2,2,6 +BRDA:47,2,3,2 BRDA:47,2,4,0 BRF:9 -BRH:0 +BRH:6 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/changeFontSize.ts @@ -13726,10 +13774,10 @@ SF:packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts FN:8,clearBlockFormat FNF:1 FNH:1 -FNDA:14,clearBlockFormat +FNDA:15,clearBlockFormat DA:1,1 DA:8,1 -DA:9,14 +DA:9,15 LF:3 LH:3 BRF:0 @@ -13767,36 +13815,36 @@ FN:320,removeStyles FN:322,(anonymous_28) FN:339,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 @@ -13813,32 +13861,32 @@ DA:39,1 DA:40,1 DA:43,1 DA:44,1 -DA:51,0 -DA:52,0 -DA:53,0 +DA:51,12 +DA:52,12 +DA:53,12 DA:54,0 -DA:57,0 -DA:60,0 -DA:65,84 -DA:66,84 -DA:67,84 -DA:70,84 -DA:71,84 -DA:72,47 -DA:78,29 -DA:79,6 -DA:81,29 -DA:84,18 -DA:88,84 -DA:92,18 -DA:93,18 -DA:95,18 -DA:96,5 +DA:57,12 +DA:60,12 +DA:65,228 +DA:66,228 +DA:67,228 +DA:70,228 +DA:71,228 +DA:72,144 +DA:78,100 +DA:79,30 +DA:81,100 +DA:84,44 +DA:88,228 +DA:92,44 +DA:93,44 +DA:95,44 +DA:96,7 DA:97,0 -DA:98,5 +DA:98,7 DA:99,0 -DA:100,5 -DA:104,3 +DA:100,7 +DA:104,5 DA:117,4 DA:118,4 DA:120,5 @@ -13852,218 +13900,218 @@ DA:137,0 DA:138,0 DA:139,0 DA:140,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:163,0 -DA:165,0 -DA:167,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:182,0 -DA:185,0 -DA:186,0 -DA:187,0 -DA:190,0 -DA:199,14 -DA:202,14 -DA:203,15 -DA:204,15 -DA:206,15 +DA:151,6 +DA:152,6 +DA:153,12 +DA:154,4 +DA:155,2 +DA:157,2 +DA:158,2 +DA:159,4 +DA:160,2 +DA:163,2 +DA:165,8 +DA:167,2 +DA:177,12 +DA:178,12 +DA:179,8 +DA:180,8 +DA:182,8 +DA:185,8 +DA:186,4 +DA:187,4 +DA:190,8 +DA:199,23 +DA:202,23 +DA:203,24 +DA:204,24 +DA:206,24 DA:209,4 DA:210,4 DA:211,1 DA:212,1 -DA:216,15 -DA:221,7 -DA:222,7 -DA:225,15 -DA:227,14 -DA:234,2 -DA:235,2 -DA:236,2 -DA:237,2 -DA:238,0 -DA:241,2 -DA:243,2 -DA:247,4 -DA:248,2 -DA:251,2 -DA:257,16 -DA:258,16 -DA:259,16 -DA:260,2 -DA:261,2 -DA:262,2 +DA:216,24 +DA:221,11 +DA:222,11 +DA:225,24 +DA:227,23 +DA:234,11 +DA:235,11 +DA:236,11 +DA:237,11 +DA:238,0 +DA:241,11 +DA:243,11 +DA:247,18 +DA:248,9 +DA:251,13 +DA:257,34 +DA:258,34 +DA:259,34 +DA:260,4 +DA:261,4 +DA:262,4 DA:264,0 DA:265,0 DA:266,0 DA:267,0 DA:268,0 -DA:275,16 -DA:276,2 -DA:277,2 -DA:279,2 -DA:280,2 -DA:282,2 +DA:275,34 +DA:276,14 +DA:277,14 +DA:279,14 +DA:280,14 +DA:282,14 DA:283,0 DA:289,0 DA:290,0 DA:293,0 DA:294,0 DA:296,0 -DA:299,2 +DA:299,14 DA:300,0 DA:301,0 DA:303,0 -DA:306,2 -DA:307,0 -DA:309,2 -DA:311,2 +DA:306,14 +DA:307,5 +DA:309,9 +DA:311,14 DA:312,0 -DA:314,2 +DA:314,14 DA:315,0 -DA:321,2 -DA:322,8 -DA:326,2 +DA:321,4 +DA:322,16 +DA:326,4 DA:327,0 DA:339,1 -DA:341,18 -DA:343,16 -DA:345,2 -DA:346,2 -DA:348,14 -DA:349,14 -DA:351,0 +DA:341,49 +DA:343,38 +DA:345,11 +DA:346,11 +DA:348,15 +DA:349,15 +DA:351,12 LF:146 -LH:93 +LH:121 BRDA:52,0,0,0 -BRDA:52,0,1,0 -BRDA:52,1,0,0 -BRDA:52,1,1,0 +BRDA:52,0,1,12 +BRDA:52,1,0,12 +BRDA:52,1,1,12 BRDA:53,2,0,0 -BRDA:53,2,1,0 +BRDA:53,2,1,12 BRDA:57,3,0,0 -BRDA:57,3,1,0 -BRDA:57,4,0,0 -BRDA:57,4,1,0 -BRDA:71,5,0,47 -BRDA:71,5,1,37 -BRDA:72,6,0,29 -BRDA:72,6,1,18 -BRDA:73,7,0,47 -BRDA:73,7,1,20 -BRDA:73,7,2,8 -BRDA:73,7,3,2 -BRDA:78,8,0,6 -BRDA:78,8,1,23 -BRDA:78,9,0,29 -BRDA:78,9,1,15 +BRDA:57,3,1,12 +BRDA:57,4,0,12 +BRDA:57,4,1,12 +BRDA:71,5,0,144 +BRDA:71,5,1,84 +BRDA:72,6,0,100 +BRDA:72,6,1,44 +BRDA:73,7,0,144 +BRDA:73,7,1,51 +BRDA:73,7,2,17 +BRDA:73,7,3,7 +BRDA:78,8,0,30 +BRDA:78,8,1,70 +BRDA:78,9,0,100 +BRDA:78,9,1,47 BRDA:96,10,0,0 -BRDA:96,10,1,5 -BRDA:96,11,0,5 +BRDA:96,10,1,7 +BRDA:96,11,0,7 BRDA:96,11,1,0 BRDA:98,12,0,0 -BRDA:98,12,1,5 -BRDA:98,13,0,5 +BRDA:98,12,1,7 +BRDA:98,13,0,7 BRDA:98,13,1,0 -BRDA:100,14,0,3 +BRDA:100,14,0,5 BRDA:100,14,1,2 -BRDA:101,15,0,5 -BRDA:101,15,1,3 +BRDA:101,15,0,7 +BRDA:101,15,1,5 BRDA:129,16,0,2 BRDA:129,16,1,3 BRDA:138,17,0,0 BRDA:138,17,1,0 -BRDA:153,18,0,0 -BRDA:153,18,1,0 -BRDA:153,19,0,0 -BRDA:153,19,1,0 -BRDA:154,20,0,0 -BRDA:154,20,1,0 +BRDA:153,18,0,4 +BRDA:153,18,1,8 +BRDA:153,19,0,12 +BRDA:153,19,1,8 +BRDA:154,20,0,2 +BRDA:154,20,1,2 BRDA:158,21,0,0 -BRDA:158,21,1,0 -BRDA:158,22,0,0 -BRDA:158,22,1,0 -BRDA:159,23,0,0 -BRDA:159,23,1,0 -BRDA:159,24,0,0 -BRDA:159,24,1,0 +BRDA:158,21,1,2 +BRDA:158,22,0,2 +BRDA:158,22,1,2 +BRDA:159,23,0,2 +BRDA:159,23,1,2 +BRDA:159,24,0,4 +BRDA:159,24,1,2 BRDA:159,25,0,0 -BRDA:159,25,1,0 -BRDA:159,26,0,0 -BRDA:159,26,1,0 -BRDA:152,27,0,0 -BRDA:152,27,1,0 -BRDA:178,28,0,0 -BRDA:178,28,1,0 +BRDA:159,25,1,2 +BRDA:159,26,0,2 +BRDA:159,26,1,2 +BRDA:152,27,0,14 +BRDA:152,27,1,14 +BRDA:178,28,0,8 +BRDA:178,28,1,4 BRDA:180,29,0,0 -BRDA:180,29,1,0 -BRDA:180,30,0,0 -BRDA:180,30,1,0 -BRDA:182,31,0,0 -BRDA:182,31,1,0 -BRDA:182,31,2,0 -BRDA:185,32,0,0 -BRDA:185,32,1,0 +BRDA:180,29,1,8 +BRDA:180,30,0,8 +BRDA:180,30,1,8 +BRDA:182,31,0,8 +BRDA:182,31,1,6 +BRDA:182,31,2,6 +BRDA:185,32,0,4 +BRDA:185,32,1,4 BRDA:206,33,0,4 -BRDA:206,33,1,11 +BRDA:206,33,1,20 BRDA:210,34,0,1 BRDA:210,34,1,3 -BRDA:217,35,0,22 -BRDA:217,35,1,21 -BRDA:217,35,2,21 -BRDA:222,36,0,7 +BRDA:217,35,0,35 +BRDA:217,35,1,33 +BRDA:217,35,2,33 +BRDA:222,36,0,11 BRDA:222,36,1,0 -BRDA:247,37,0,2 +BRDA:247,37,0,9 BRDA:247,37,1,0 -BRDA:261,38,0,2 +BRDA:261,38,0,4 BRDA:261,38,1,0 BRDA:267,39,0,0 BRDA:267,39,1,0 -BRDA:275,40,0,2 -BRDA:275,40,1,14 -BRDA:276,41,0,2 +BRDA:275,40,0,14 +BRDA:275,40,1,20 +BRDA:276,41,0,14 BRDA:276,41,1,0 -BRDA:279,42,0,2 +BRDA:279,42,0,14 BRDA:279,42,1,0 BRDA:282,43,0,0 -BRDA:282,43,1,2 +BRDA:282,43,1,14 BRDA:290,44,0,0 BRDA:290,44,1,0 BRDA:293,45,0,0 BRDA:293,45,1,0 BRDA:299,46,0,0 -BRDA:299,46,1,2 +BRDA:299,46,1,14 BRDA:300,47,0,0 BRDA:300,47,1,0 -BRDA:306,48,0,0 -BRDA:306,48,1,2 +BRDA:306,48,0,5 +BRDA:306,48,1,9 BRDA:311,49,0,0 -BRDA:311,49,1,2 +BRDA:311,49,1,14 BRDA:314,50,0,0 -BRDA:314,50,1,2 -BRDA:321,51,0,2 +BRDA:314,50,1,14 +BRDA:321,51,0,4 BRDA:321,51,1,0 BRDA:326,52,0,0 -BRDA:326,52,1,2 -BRDA:326,53,0,2 +BRDA:326,52,1,4 +BRDA:326,53,0,4 BRDA:326,53,1,0 -BRDA:341,54,0,2 -BRDA:341,54,1,14 -BRDA:344,55,0,2 -BRDA:344,55,1,14 -BRDA:344,55,2,0 +BRDA:341,54,0,11 +BRDA:341,54,1,27 +BRDA:344,55,0,11 +BRDA:344,55,1,15 +BRDA:344,55,2,12 BRF:117 -BRH:48 +BRH:85 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/createLink.ts @@ -14550,12 +14598,12 @@ FN:104,isList FN:108,alignList FN:111,(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) @@ -14593,12 +14641,12 @@ DA:87,1 DA:88,1 DA:90,3 DA:91,3 -DA:92,0 -DA:93,0 +DA:92,3 +DA:93,3 DA:96,3 -DA:97,3 -DA:98,3 -DA:99,3 +DA:97,0 +DA:98,0 +DA:99,0 DA:105,6 DA:109,6 DA:112,6 @@ -14607,7 +14655,7 @@ DA:114,6 DA:115,6 DA:116,6 LF:47 -LH:45 +LH:44 BRDA:33,0,0,12 BRDA:33,0,1,12 BRDA:36,1,0,3 @@ -14627,9 +14675,9 @@ BRDA:83,7,0,1 BRDA:83,7,1,2 BRDA:86,8,0,1 BRDA:86,8,1,1 -BRDA:96,9,0,3 -BRDA:96,9,1,0 -BRDA:98,10,0,3 +BRDA:96,9,0,0 +BRDA:96,9,1,3 +BRDA:98,10,0,0 BRDA:98,10,1,0 BRDA:115,11,0,6 BRDA:115,11,1,0 @@ -14640,7 +14688,7 @@ BRDA:116,13,1,6 BRDA:116,14,0,6 BRDA:116,14,1,6 BRF:31 -BRH:27 +BRH:26 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts @@ -14701,16 +14749,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 @@ -14720,26 +14768,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 @@ -14830,12 +14878,12 @@ FN:153,isFirstItem FN:160,shouldHandleWithBlockquotes FNF:10 FNH:10 -FNDA:6,setIndentation -FNDA:3,(anonymous_1) -FNDA:5,(anonymous_2) -FNDA:6,(anonymous_3) -FNDA:2,indent -FNDA:1,(anonymous_5) +FNDA:16,setIndentation +FNDA:13,(anonymous_1) +FNDA:15,(anonymous_2) +FNDA:16,(anonymous_3) +FNDA:12,indent +FNDA:12,(anonymous_5) FNDA:3,outdent FNDA:3,(anonymous_7) FNDA:2,isFirstItem @@ -14844,14 +14892,14 @@ DA:1,1 DA:2,1 DA:12,1 DA:37,1 -DA:41,6 -DA:43,6 -DA:46,3 -DA:47,3 -DA:49,3 -DA:50,4 -DA:51,4 -DA:57,4 +DA:41,16 +DA:43,16 +DA:46,13 +DA:47,13 +DA:49,13 +DA:50,15 +DA:51,15 +DA:57,15 DA:58,2 DA:59,0 DA:62,2 @@ -14863,10 +14911,10 @@ DA:76,0 DA:77,0 DA:86,0 DA:92,0 -DA:96,2 -DA:100,5 -DA:103,6 -DA:104,6 +DA:96,13 +DA:100,15 +DA:103,16 +DA:104,16 DA:109,3 DA:110,2 DA:111,2 @@ -14874,11 +14922,11 @@ DA:112,1 DA:114,1 DA:115,1 DA:117,3 -DA:120,3 -DA:126,2 -DA:127,2 -DA:128,2 -DA:129,2 +DA:120,13 +DA:126,12 +DA:127,12 +DA:128,12 +DA:129,12 DA:134,3 DA:135,3 DA:136,3 @@ -14893,10 +14941,10 @@ DA:154,2 DA:165,2 LF:51 LH:45 -BRDA:41,0,0,2 +BRDA:41,0,0,12 BRDA:41,0,1,4 BRDA:57,1,0,2 -BRDA:57,1,1,2 +BRDA:57,1,1,13 BRDA:58,2,0,2 BRDA:58,2,1,0 BRDA:66,3,0,2 @@ -14913,8 +14961,8 @@ BRDA:76,7,1,0 BRDA:78,8,0,0 BRDA:78,8,1,0 BRDA:104,9,0,3 -BRDA:104,9,1,3 -BRDA:105,10,0,6 +BRDA:104,9,1,13 +BRDA:105,10,0,16 BRDA:105,10,1,3 BRDA:105,10,2,3 BRDA:109,11,0,2 @@ -15012,9 +15060,9 @@ FN:26,(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:5,1 @@ -15024,13 +15072,13 @@ DA:8,0 DA:9,0 DA:10,0 DA:19,1 -DA:20,18 -DA:23,20 -DA:24,20 -DA:26,18 +DA:20,19 +DA:23,21 +DA:24,21 +DA:26,19 LF:13 LH:9 -BRDA:24,0,0,20 +BRDA:24,0,0,21 BRDA:24,0,1,0 BRF:2 BRH:1 @@ -15040,10 +15088,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleBold.ts FN:12,toggleBold FNF:1 FNH:1 -FNDA:2,toggleBold +FNDA:11,toggleBold DA:1,1 DA:12,1 -DA:13,2 +DA:13,11 LF:3 LH:3 BRF:0 @@ -15111,10 +15159,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleItalic.ts FN:12,toggleItalic FNF:1 FNH:1 -FNDA:2,toggleItalic +FNDA:6,toggleItalic DA:1,1 DA:12,1 -DA:13,2 +DA:13,6 LF:3 LH:3 BRF:0 @@ -15181,10 +15229,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleUnderline.ts FN:12,toggleUnderline FNF:1 FNH:1 -FNDA:2,toggleUnderline +FNDA:6,toggleUnderline DA:1,1 DA:12,1 -DA:13,2 +DA:13,6 LF:3 LH:3 BRF:0 @@ -15404,19 +15452,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 @@ -15425,29 +15473,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 @@ -15455,16 +15503,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 @@ -15475,34 +15523,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:3,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 @@ -15511,42 +15559,42 @@ FN:25,(anonymous_1) FN:30,(anonymous_2) FNF:3 FNH:3 -FNDA:48,blockFormat -FNDA:48,(anonymous_1) -FNDA:48,(anonymous_2) +FNDA:68,blockFormat +FNDA:68,(anonymous_1) +FNDA:68,(anonymous_2) DA:1,1 DA:2,1 DA:4,1 DA:9,1 -DA:20,48 -DA:21,48 -DA:23,48 -DA:26,48 -DA:27,42 -DA:28,42 -DA:29,42 -DA:30,48 -DA:31,42 -DA:34,48 -DA:35,45 +DA:20,68 +DA:21,68 +DA:23,68 +DA:26,68 +DA:27,62 +DA:28,62 +DA:29,62 +DA:30,68 +DA:31,62 +DA:34,68 +DA:35,65 DA:37,3 LF:16 LH:16 -BRDA:26,0,0,42 +BRDA:26,0,0,62 BRDA:26,0,1,6 -BRDA:26,1,0,48 -BRDA:26,1,1,24 -BRDA:28,2,0,42 +BRDA:26,1,0,68 +BRDA:26,1,1,35 +BRDA:28,2,0,62 BRDA:28,2,1,0 BRDA:29,3,0,0 -BRDA:29,3,1,42 -BRDA:29,4,0,42 -BRDA:29,4,1,42 -BRDA:34,5,0,45 +BRDA:29,3,1,62 +BRDA:29,4,0,62 +BRDA:29,4,1,62 +BRDA:34,5,0,65 BRDA:34,5,1,3 -BRDA:34,6,0,48 -BRDA:34,6,1,45 -BRDA:34,6,2,45 +BRDA:34,6,0,68 +BRDA:34,6,1,65 +BRDA:34,6,2,65 BRF:15 BRH:13 end_of_record @@ -15557,42 +15605,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 @@ -15643,11 +15691,11 @@ FN:9,commitListChains FN:21,(anonymous_1) FNF:2 FNH:2 -FNDA:42,commitListChains +FNDA:62,commitListChains FNDA:7,(anonymous_1) DA:2,1 DA:9,1 -DA:10,42 +DA:10,62 DA:11,6 DA:12,6 DA:13,6 @@ -15661,11 +15709,11 @@ DA:35,1 LF:13 LH:13 BRDA:10,0,0,6 -BRDA:10,0,1,36 +BRDA:10,0,1,56 BRDA:10,1,0,0 -BRDA:10,1,1,42 -BRDA:10,2,0,42 -BRDA:10,2,1,42 +BRDA:10,1,1,62 +BRDA:10,2,0,62 +BRDA:10,2,1,62 BRDA:12,3,0,6 BRDA:12,3,1,6 BRDA:13,4,0,6 @@ -15685,19 +15733,19 @@ FN:36,(anonymous_2) FN:48,(anonymous_3) FN:51,(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:21,1 -DA:26,14 -DA:28,14 -DA:30,14 -DA:31,14 +DA:26,40 +DA:28,40 +DA:30,40 +DA:31,40 DA:32,14 DA:33,14 DA:34,14 @@ -15706,43 +15754,43 @@ DA:36,84 DA:39,14 DA:40,9 DA:41,9 -DA:46,0 -DA:49,0 -DA:51,0 -DA:52,0 +DA:46,26 +DA:49,26 +DA:51,26 +DA:52,26 DA:53,0 -DA:55,0 -DA:58,0 +DA:55,26 +DA:58,26 DA:59,0 LF:23 -LH:15 +LH:21 BRDA:31,0,0,14 -BRDA:31,0,1,0 -BRDA:31,1,0,14 -BRDA:31,1,1,14 +BRDA:31,0,1,26 +BRDA:31,1,0,40 +BRDA:31,1,1,40 BRDA:39,2,0,9 BRDA:39,2,1,5 BRDA:52,3,0,0 -BRDA:52,3,1,0 +BRDA:52,3,1,26 BRDA:58,4,0,0 -BRDA:58,4,1,0 +BRDA:58,4,1,26 BRF:10 -BRH:5 +BRH:8 end_of_record TN: SF:packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts FN:11,formatUndoSnapshot FNF:1 FNH:1 -FNDA:108,formatUndoSnapshot +FNDA:214,formatUndoSnapshot DA:11,1 -DA:16,108 +DA:16,214 LF:2 LH:2 -BRDA:21,0,0,94 -BRDA:21,0,1,14 -BRDA:20,1,0,108 -BRDA:20,1,1,94 +BRDA:21,0,0,182 +BRDA:21,0,1,32 +BRDA:20,1,0,214 +BRDA:20,1,1,182 BRF:4 BRH:4 end_of_record @@ -15752,47 +15800,47 @@ FN:9,normalizeBlockquote FN:49,isRTL FNF:2 FNH:2 -FNDA:9,normalizeBlockquote -FNDA:6,isRTL +FNDA:20,normalizeBlockquote +FNDA:17,isRTL DA:1,1 DA:9,1 -DA:10,9 -DA:11,9 -DA:13,9 -DA:14,9 +DA:10,20 +DA:11,20 +DA:13,20 +DA:14,20 DA:15,3 -DA:17,6 -DA:19,6 -DA:20,6 -DA:21,1 -DA:23,5 -DA:26,5 -DA:27,5 +DA:17,17 +DA:19,17 +DA:20,17 +DA:21,2 +DA:23,15 +DA:26,15 +DA:27,15 DA:28,2 DA:29,1 DA:30,1 DA:32,1 DA:33,1 -DA:36,3 -DA:37,3 -DA:40,5 -DA:50,6 +DA:36,13 +DA:37,13 +DA:40,15 +DA:50,17 LF:23 LH:23 -BRDA:10,0,0,9 +BRDA:10,0,0,20 BRDA:10,0,1,0 BRDA:14,1,0,3 -BRDA:14,1,1,6 -BRDA:19,2,0,6 +BRDA:14,1,1,17 +BRDA:19,2,0,17 BRDA:19,2,1,0 -BRDA:20,3,0,1 -BRDA:20,3,1,5 +BRDA:20,3,0,2 +BRDA:20,3,1,15 BRDA:27,4,0,2 -BRDA:27,4,1,3 +BRDA:27,4,1,13 BRDA:28,5,0,1 BRDA:28,5,1,1 -BRDA:50,6,0,6 -BRDA:50,6,1,6 +BRDA:50,6,0,17 +BRDA:50,6,1,17 BRF:14 BRH:12 end_of_record @@ -15875,14 +15923,14 @@ FN:4,(anonymous_2) FN:5,(anonymous_3) FNF:4 FNH:4 -FNDA:4743,(anonymous_0) +FNDA:4930,(anonymous_0) FNDA:1,(anonymous_1) -FNDA:94,(anonymous_2) -FNDA:47,(anonymous_3) -DA:2,4744 +FNDA:90,(anonymous_2) +FNDA:45,(anonymous_3) +DA:2,4931 DA:3,2 -DA:4,95 -DA:5,48 +DA:4,91 +DA:5,46 LF:4 LH:4 BRF:0 @@ -15895,110 +15943,110 @@ FN:87,addUndoSnapshotInternal FN:110,createContentMetadata FNF:3 FNH:3 -FNDA:5067,(anonymous_0) -FNDA:5217,addUndoSnapshotInternal -FNDA:5215,createContentMetadata +FNDA:5367,(anonymous_0) +FNDA:5500,addUndoSnapshotInternal +FNDA:5498,createContentMetadata DA:2,1 DA:27,1 -DA:34,5067 -DA:35,5067 -DA:38,5067 -DA:39,5039 -DA:43,5039 -DA:44,5038 -DA:48,5067 -DA:49,5067 -DA:50,202 -DA:51,202 -DA:56,201 -DA:57,179 -DA:58,179 -DA:62,5067 -DA:63,5039 -DA:67,5066 -DA:68,185 -DA:74,185 -DA:77,5066 +DA:34,5367 +DA:35,5367 +DA:38,5367 +DA:39,5275 +DA:43,5275 +DA:44,5274 +DA:48,5367 +DA:49,5367 +DA:50,313 +DA:51,313 +DA:56,312 +DA:57,226 +DA:58,226 +DA:62,5367 +DA:63,5275 +DA:67,5366 +DA:68,282 +DA:74,282 +DA:77,5366 DA:78,18 DA:80,18 DA:81,18 DA:82,18 -DA:92,5217 -DA:93,5215 -DA:94,5215 -DA:95,5215 -DA:97,5215 -DA:106,5215 -DA:115,5215 +DA:92,5500 +DA:93,5498 +DA:94,5498 +DA:95,5498 +DA:97,5498 +DA:106,5498 +DA:115,5498 DA:117,22 -DA:124,41 -DA:130,5152 +DA:124,15 +DA:130,5461 LF:35 LH:35 -BRDA:38,0,0,5039 -BRDA:38,0,1,28 -BRDA:43,1,0,5038 +BRDA:38,0,0,5275 +BRDA:38,0,1,92 +BRDA:43,1,0,5274 BRDA:43,1,1,1 -BRDA:43,2,0,5039 -BRDA:43,2,1,4863 +BRDA:43,2,0,5275 +BRDA:43,2,1,5047 BRDA:43,2,2,1 -BRDA:43,3,0,4842 -BRDA:43,3,1,21 -BRDA:43,4,0,4863 -BRDA:43,4,1,4863 -BRDA:44,5,0,5038 +BRDA:43,3,0,5028 +BRDA:43,3,1,19 +BRDA:43,4,0,5047 +BRDA:43,4,1,5047 +BRDA:44,5,0,5274 BRDA:44,5,1,0 -BRDA:44,6,0,5038 -BRDA:44,6,1,5038 -BRDA:44,7,0,4928 -BRDA:44,7,1,110 -BRDA:44,8,0,5038 -BRDA:44,8,1,5038 -BRDA:49,9,0,202 -BRDA:49,9,1,4865 -BRDA:52,10,0,202 -BRDA:52,10,1,167 -BRDA:53,11,0,202 -BRDA:53,11,1,167 -BRDA:56,12,0,179 -BRDA:56,12,1,22 -BRDA:57,13,0,178 +BRDA:44,6,0,5274 +BRDA:44,6,1,5274 +BRDA:44,7,0,5126 +BRDA:44,7,1,148 +BRDA:44,8,0,5274 +BRDA:44,8,1,5274 +BRDA:49,9,0,313 +BRDA:49,9,1,5054 +BRDA:52,10,0,313 +BRDA:52,10,1,291 +BRDA:53,11,0,313 +BRDA:53,11,1,291 +BRDA:56,12,0,226 +BRDA:56,12,1,86 +BRDA:57,13,0,225 BRDA:57,13,1,1 -BRDA:57,14,0,179 -BRDA:57,14,1,179 -BRDA:57,15,0,68 -BRDA:57,15,1,111 -BRDA:57,16,0,179 -BRDA:57,16,1,179 -BRDA:62,17,0,5039 -BRDA:62,17,1,28 -BRDA:67,18,0,185 -BRDA:67,18,1,4881 -BRDA:67,19,0,5066 -BRDA:67,19,1,201 +BRDA:57,14,0,226 +BRDA:57,14,1,226 +BRDA:57,15,0,77 +BRDA:57,15,1,149 +BRDA:57,16,0,226 +BRDA:57,16,1,226 +BRDA:62,17,0,5275 +BRDA:62,17,1,92 +BRDA:67,18,0,282 +BRDA:67,18,1,5084 +BRDA:67,19,0,5366 +BRDA:67,19,1,312 BRDA:77,20,0,18 -BRDA:77,20,1,5048 +BRDA:77,20,1,5348 BRDA:80,21,0,18 BRDA:80,21,1,0 -BRDA:92,22,0,5215 +BRDA:92,22,0,5498 BRDA:92,22,1,2 -BRDA:95,23,0,5215 +BRDA:95,23,0,5498 BRDA:95,23,1,0 -BRDA:101,24,0,5215 +BRDA:101,24,0,5498 BRDA:101,24,1,0 BRDA:101,25,0,0 -BRDA:101,25,1,5215 -BRDA:101,26,0,5215 -BRDA:101,26,1,5215 +BRDA:101,25,1,5498 +BRDA:101,26,0,5498 +BRDA:101,26,1,5498 BRDA:116,27,0,22 -BRDA:116,27,1,41 -BRDA:116,27,2,5152 +BRDA:116,27,1,15 +BRDA:116,27,2,5461 BRDA:115,28,0,0 -BRDA:115,28,1,5215 -BRDA:115,29,0,5215 -BRDA:115,29,1,5215 -BRDA:135,30,0,5152 -BRDA:135,30,1,4867 +BRDA:115,28,1,5498 +BRDA:115,29,0,5498 +BRDA:115,29,1,5498 +BRDA:135,30,0,5461 +BRDA:135,30,1,5056 BRF:64 BRH:58 end_of_record @@ -16013,48 +16061,48 @@ FN:47,(anonymous_5) FN:50,extractHandler FNF:7 FNH:7 -FNDA:9677,(anonymous_0) -FNDA:72328,(anonymous_1) -FNDA:705,(anonymous_2) -FNDA:71608,(anonymous_3) -FNDA:9576,(anonymous_4) -FNDA:71608,(anonymous_5) -FNDA:72328,extractHandler +FNDA:10055,(anonymous_0) +FNDA:75163,(anonymous_1) +FNDA:263,(anonymous_2) +FNDA:74293,(anonymous_3) +FNDA:9934,(anonymous_4) +FNDA:74293,(anonymous_5) +FNDA:75163,extractHandler DA:1,1 DA:18,1 -DA:22,9677 -DA:23,72328 -DA:24,72328 -DA:25,72328 -DA:26,705 -DA:27,676 -DA:29,705 -DA:30,42 -DA:41,72328 -DA:43,72328 -DA:44,71608 -DA:47,71608 -DA:51,72328 -DA:56,72328 -DA:57,4821 -DA:58,67507 -DA:59,48244 -DA:60,19263 -DA:61,19263 -DA:63,72328 +DA:22,10055 +DA:23,75163 +DA:24,75163 +DA:25,75163 +DA:26,263 +DA:27,234 +DA:29,263 +DA:30,67 +DA:41,75163 +DA:43,75163 +DA:44,74293 +DA:47,74293 +DA:51,75163 +DA:56,75163 +DA:57,5010 +DA:58,70153 +DA:59,50134 +DA:60,20019 +DA:61,20019 +DA:63,75163 LF:22 LH:22 -BRDA:22,0,0,9677 +BRDA:22,0,0,10055 BRDA:22,0,1,1 -BRDA:26,1,0,676 +BRDA:26,1,0,234 BRDA:26,1,1,29 -BRDA:29,2,0,42 -BRDA:29,2,1,663 -BRDA:56,3,0,4821 -BRDA:56,3,1,67507 -BRDA:58,4,0,48244 -BRDA:58,4,1,19263 -BRDA:60,5,0,19263 +BRDA:29,2,0,67 +BRDA:29,2,1,196 +BRDA:56,3,0,5010 +BRDA:56,3,1,70153 +BRDA:58,4,0,50134 +BRDA:58,4,1,20019 +BRDA:60,5,0,20019 BRDA:60,5,1,0 BRF:12 BRH:11 @@ -16122,10 +16170,10 @@ DA:104,75 DA:105,25 DA:110,25 DA:113,25 -DA:115,2 -DA:116,23 -DA:117,10 -DA:119,10 +DA:115,3 +DA:116,22 +DA:117,9 +DA:119,9 DA:120,0 DA:121,0 DA:123,13 @@ -16143,29 +16191,29 @@ BRDA:40,0,0,0 BRDA:40,0,1,26 BRDA:42,1,0,1 BRDA:42,1,1,25 -BRDA:106,2,0,13 -BRDA:106,2,1,12 -BRDA:113,3,0,2 -BRDA:113,3,1,23 +BRDA:106,2,0,12 +BRDA:106,2,1,13 +BRDA:113,3,0,3 +BRDA:113,3,1,22 BRDA:113,4,0,25 BRDA:113,4,1,3 BRDA:113,4,2,23 BRDA:113,4,3,19 -BRDA:113,4,4,4 -BRDA:116,5,0,10 +BRDA:113,4,4,5 +BRDA:116,5,0,9 BRDA:116,5,1,13 -BRDA:116,6,0,10 +BRDA:116,6,0,9 BRDA:116,6,1,13 -BRDA:116,7,0,23 -BRDA:116,7,1,19 -BRDA:116,7,2,10 +BRDA:116,7,0,22 +BRDA:116,7,1,18 +BRDA:116,7,2,9 BRDA:117,8,0,0 -BRDA:117,8,1,10 -BRDA:117,9,0,10 -BRDA:117,9,1,10 +BRDA:117,8,1,9 +BRDA:117,9,0,9 +BRDA:117,9,1,9 BRDA:119,10,0,0 -BRDA:119,10,1,10 -BRDA:119,11,0,10 +BRDA:119,10,1,9 +BRDA:119,11,0,9 BRDA:119,11,1,0 BRDA:123,12,0,11 BRDA:123,12,1,2 @@ -16180,38 +16228,38 @@ FN:25,(anonymous_0) FN:88,wasNodeJustCreatedByKeyboardEvent FNF:2 FNH:2 -FNDA:4829,(anonymous_0) +FNDA:5018,(anonymous_0) FNDA:3,wasNodeJustCreatedByKeyboardEvent DA:9,1 DA:25,1 -DA:30,4829 -DA:33,4829 +DA:30,5018 +DA:33,5018 DA:34,1 -DA:36,4829 -DA:38,4829 -DA:41,4829 +DA:36,5018 +DA:38,5018 +DA:41,5018 DA:42,13 DA:43,13 DA:44,2 DA:45,2 DA:51,13 DA:53,13 -DA:58,4816 -DA:62,4816 -DA:70,4816 -DA:73,4829 -DA:74,4817 -DA:83,4829 +DA:58,5005 +DA:62,5005 +DA:70,5005 +DA:73,5018 +DA:74,5006 +DA:83,5018 DA:84,5 DA:89,3 LF:22 LH:22 BRDA:33,0,0,1 -BRDA:33,0,1,4828 -BRDA:33,1,0,4829 +BRDA:33,0,1,5017 +BRDA:33,1,0,5018 BRDA:33,1,1,1 BRDA:41,2,0,13 -BRDA:41,2,1,4816 +BRDA:41,2,1,5005 BRDA:43,3,0,2 BRDA:43,3,1,11 BRDA:51,4,0,13 @@ -16221,12 +16269,12 @@ BRDA:53,5,0,5 BRDA:53,5,1,8 BRDA:53,6,0,13 BRDA:53,6,1,13 -BRDA:73,7,0,4817 +BRDA:73,7,0,5006 BRDA:73,7,1,12 -BRDA:73,8,0,4829 -BRDA:73,8,1,4821 +BRDA:73,8,0,5018 +BRDA:73,8,1,5010 BRDA:83,9,0,5 -BRDA:83,9,1,4824 +BRDA:83,9,1,5013 BRDA:90,10,0,3 BRDA:90,10,1,3 BRDA:90,10,2,3 @@ -16238,33 +16286,33 @@ SF:packages/roosterjs-editor-core/lib/coreApi/focus.ts FN:9,(anonymous_0) FNF:1 FNH:1 -FNDA:327,(anonymous_0) +FNDA:452,(anonymous_0) DA:1,1 DA:9,1 -DA:10,327 -DA:11,327 -DA:22,185 -DA:26,184 -DA:27,184 -DA:36,327 -DA:39,327 -DA:40,3 +DA:10,452 +DA:11,452 +DA:22,193 +DA:26,192 +DA:27,192 +DA:36,452 +DA:39,452 +DA:40,2 LF:10 LH:10 -BRDA:10,0,0,327 +BRDA:10,0,0,452 BRDA:10,0,1,0 -BRDA:11,1,0,185 -BRDA:11,1,1,142 -BRDA:12,2,0,327 -BRDA:12,2,1,142 -BRDA:22,3,0,184 +BRDA:11,1,0,193 +BRDA:11,1,1,259 +BRDA:12,2,0,452 +BRDA:12,2,1,259 +BRDA:22,3,0,192 BRDA:22,3,1,1 -BRDA:23,4,0,185 +BRDA:23,4,0,193 BRDA:23,4,1,2 -BRDA:26,5,0,184 +BRDA:26,5,0,192 BRDA:26,5,1,7 -BRDA:39,6,0,3 -BRDA:39,6,1,324 +BRDA:39,6,0,2 +BRDA:39,6,1,450 BRF:14 BRH:13 end_of_record @@ -16274,62 +16322,62 @@ FN:24,(anonymous_0) FN:86,cloneNode FNF:2 FNH:2 -FNDA:141,(anonymous_0) -FNDA:140,cloneNode +FNDA:205,(anonymous_0) +FNDA:204,cloneNode DA:8,1 DA:24,1 -DA:28,141 -DA:29,141 -DA:30,141 -DA:34,141 -DA:36,141 +DA:28,205 +DA:29,205 +DA:30,205 +DA:34,205 +DA:36,205 DA:37,1 -DA:38,140 +DA:38,204 DA:39,0 -DA:41,140 -DA:42,140 -DA:44,140 -DA:45,140 -DA:52,140 -DA:54,140 -DA:64,140 -DA:65,118 -DA:74,118 -DA:75,22 +DA:41,204 +DA:42,204 +DA:44,204 +DA:45,204 +DA:52,204 +DA:54,204 +DA:64,204 +DA:65,184 +DA:74,184 +DA:75,20 DA:77,3 -DA:79,19 -DA:83,141 -DA:88,140 +DA:79,17 +DA:83,205 +DA:88,204 DA:89,2 DA:90,2 -DA:92,138 -DA:95,140 +DA:92,202 +DA:95,204 LF:28 LH:27 -BRDA:34,0,0,141 -BRDA:34,0,1,139 +BRDA:34,0,0,205 +BRDA:34,0,1,203 BRDA:36,1,0,1 -BRDA:36,1,1,140 +BRDA:36,1,1,204 BRDA:38,2,0,0 -BRDA:38,2,1,140 -BRDA:46,3,0,121 -BRDA:46,3,1,19 +BRDA:38,2,1,204 +BRDA:46,3,0,187 +BRDA:46,3,1,17 BRDA:48,4,0,1 -BRDA:48,4,1,18 +BRDA:48,4,1,16 BRDA:50,5,0,2 -BRDA:50,5,1,16 -BRDA:52,6,0,140 +BRDA:50,5,1,14 +BRDA:52,6,0,204 BRDA:52,6,1,3 -BRDA:64,7,0,118 -BRDA:64,7,1,22 +BRDA:64,7,0,184 +BRDA:64,7,1,20 BRDA:75,8,0,3 -BRDA:75,8,1,19 -BRDA:83,9,0,141 +BRDA:75,8,1,17 +BRDA:83,9,0,205 BRDA:83,9,1,0 -BRDA:83,10,0,141 -BRDA:83,10,1,141 +BRDA:83,10,0,205 +BRDA:83,10,1,205 BRDA:88,11,0,2 -BRDA:88,11,1,138 +BRDA:88,11,1,202 BRF:24 BRH:22 end_of_record @@ -16482,46 +16530,46 @@ SF:packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts FN:11,(anonymous_0) FNF:1 FNH:1 -FNDA:1093,(anonymous_0) +FNDA:1118,(anonymous_0) DA:1,1 DA:11,1 -DA:15,1093 -DA:17,1093 +DA:15,1118 +DA:17,1118 DA:18,0 DA:26,0 -DA:28,1093 -DA:29,974 -DA:30,974 -DA:31,974 -DA:32,974 -DA:33,966 -DA:38,1093 -DA:39,121 -DA:42,1093 +DA:28,1118 +DA:29,1014 +DA:30,1014 +DA:31,1014 +DA:32,1014 +DA:33,1013 +DA:38,1118 +DA:39,104 +DA:42,1118 LF:15 LH:13 BRDA:17,0,0,0 -BRDA:17,0,1,1093 +BRDA:17,0,1,1118 BRDA:19,1,0,0 BRDA:19,1,1,0 -BRDA:28,2,0,974 -BRDA:28,2,1,119 -BRDA:28,3,0,1093 -BRDA:28,3,1,613 +BRDA:28,2,0,1014 +BRDA:28,2,1,104 +BRDA:28,3,0,1118 +BRDA:28,3,1,836 BRDA:29,4,0,0 -BRDA:29,4,1,974 -BRDA:29,5,0,974 -BRDA:29,5,1,974 -BRDA:30,6,0,974 +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,974 -BRDA:30,7,1,974 -BRDA:32,8,0,966 -BRDA:32,8,1,8 -BRDA:38,9,0,121 -BRDA:38,9,1,972 -BRDA:38,10,0,1093 -BRDA:38,10,1,127 +BRDA:30,7,0,1014 +BRDA:30,7,1,1014 +BRDA:32,8,0,1013 +BRDA:32,8,1,1 +BRDA:38,9,0,104 +BRDA:38,9,1,1014 +BRDA:38,10,0,1118 +BRDA:38,10,1,105 BRF:22 BRH:17 end_of_record @@ -16535,16 +16583,16 @@ FN:103,checkAllCollapsed FN:104,(anonymous_5) FNF:6 FNH:6 -FNDA:5776,(anonymous_0) +FNDA:6231,(anonymous_0) FNDA:3,(anonymous_1) FNDA:1,(anonymous_2) -FNDA:5623,createNormalSelectionEx -FNDA:5625,checkAllCollapsed -FNDA:623,(anonymous_5) +FNDA:6104,createNormalSelectionEx +FNDA:6106,checkAllCollapsed +FNDA:914,(anonymous_5) DA:1,1 DA:15,1 -DA:16,5776 -DA:17,5776 +DA:16,6231 +DA:17,6231 DA:19,3 DA:20,3 DA:21,3 @@ -16559,23 +16607,23 @@ DA:42,1 DA:44,1 DA:57,1 DA:64,1 -DA:67,5773 -DA:68,741 +DA:67,6228 +DA:68,1032 DA:69,92 -DA:72,649 +DA:72,940 DA:73,32 -DA:76,617 -DA:77,617 -DA:78,617 -DA:79,617 -DA:80,617 -DA:85,5032 -DA:96,5623 -DA:104,5625 +DA:76,908 +DA:77,908 +DA:78,908 +DA:79,908 +DA:80,908 +DA:85,5196 +DA:96,6104 +DA:104,6106 LF:31 LH:31 BRDA:17,0,0,3 -BRDA:17,0,1,5773 +BRDA:17,0,1,6228 BRDA:24,1,0,1 BRDA:24,1,1,2 BRDA:24,2,0,3 @@ -16596,37 +16644,37 @@ BRDA:57,9,0,1 BRDA:57,9,1,1 BRDA:64,10,0,1 BRDA:64,10,1,0 -BRDA:67,11,0,741 -BRDA:67,11,1,5032 +BRDA:67,11,0,1032 +BRDA:67,11,1,5196 BRDA:68,12,0,92 -BRDA:68,12,1,649 +BRDA:68,12,1,940 BRDA:72,13,0,32 -BRDA:72,13,1,617 +BRDA:72,13,1,908 BRDA:76,14,0,0 -BRDA:76,14,1,617 -BRDA:76,15,0,617 -BRDA:76,15,1,617 -BRDA:77,16,0,617 +BRDA:76,14,1,908 +BRDA:76,15,0,908 +BRDA:76,15,1,908 +BRDA:77,16,0,908 BRDA:77,16,1,0 -BRDA:77,17,0,617 -BRDA:77,17,1,617 -BRDA:77,17,2,617 -BRDA:79,18,0,617 +BRDA:77,17,0,908 +BRDA:77,17,1,908 +BRDA:77,17,2,908 +BRDA:79,18,0,908 BRDA:79,18,1,0 -BRDA:87,19,0,27 -BRDA:87,19,1,5005 -BRDA:86,20,0,5032 -BRDA:86,20,1,27 +BRDA:87,19,0,1 +BRDA:87,19,1,5195 +BRDA:86,20,0,5196 +BRDA:86,20,1,1 BRDA:86,21,0,0 -BRDA:86,21,1,5032 -BRDA:86,22,0,5032 +BRDA:86,21,1,5196 +BRDA:86,22,0,5196 BRDA:86,22,1,0 BRDA:89,23,0,1 -BRDA:89,23,1,5004 +BRDA:89,23,1,5194 BRDA:104,24,0,0 -BRDA:104,24,1,623 -BRDA:104,25,0,623 -BRDA:104,25,1,623 +BRDA:104,24,1,914 +BRDA:104,25,0,914 +BRDA:104,25,1,914 BRF:53 BRH:46 end_of_record @@ -16705,15 +16753,15 @@ SF:packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:7830,(anonymous_0) +FNDA:8882,(anonymous_0) DA:1,1 DA:10,1 -DA:11,7830 -DA:12,7830 +DA:11,8882 +DA:12,8882 LF:4 LH:4 -BRDA:13,0,0,7830 -BRDA:13,0,1,7830 +BRDA:13,0,0,8882 +BRDA:13,0,1,8882 BRF:2 BRH:2 end_of_record @@ -16725,36 +16773,36 @@ FN:82,(anonymous_2) FN:200,adjustInsertPositionRegionRoot FN:224,adjustInsertPositionNewLine FNF:5 -FNH:4 -FNDA:22,getInitialRange -FNDA:4861,(anonymous_1) -FNDA:4860,(anonymous_2) +FNH:5 +FNDA:43,getInitialRange +FNDA:5071,(anonymous_1) +FNDA:5070,(anonymous_2) FNDA:1,adjustInsertPositionRegionRoot -FNDA:0,adjustInsertPositionNewLine +FNDA:5,adjustInsertPositionNewLine DA:13,1 -DA:37,22 -DA:38,22 -DA:39,22 -DA:40,10 -DA:41,10 -DA:42,12 -DA:43,11 -DA:46,22 +DA:37,43 +DA:38,43 +DA:39,43 +DA:40,14 +DA:41,14 +DA:42,29 +DA:43,28 +DA:46,43 DA:55,1 -DA:60,4861 -DA:67,4861 -DA:69,4861 -DA:70,29 -DA:73,4861 +DA:60,5071 +DA:67,5071 +DA:69,5071 +DA:70,42 +DA:73,5071 DA:74,1 DA:75,1 -DA:78,4860 -DA:83,4860 +DA:78,5070 +DA:83,5070 DA:84,0 -DA:86,4860 -DA:89,4835 -DA:90,4835 -DA:92,4835 +DA:86,5070 +DA:89,5024 +DA:90,5024 +DA:92,5024 DA:93,18 DA:94,18 DA:102,5 @@ -16762,37 +16810,37 @@ DA:105,0 DA:106,0 DA:111,5 DA:119,13 -DA:126,4817 -DA:131,4835 +DA:126,5006 +DA:131,5024 DA:132,1 DA:133,1 DA:134,1 -DA:138,4835 +DA:138,5024 DA:142,3 DA:145,3 DA:146,0 DA:148,3 -DA:151,22 -DA:152,22 +DA:151,43 +DA:152,43 DA:153,1 -DA:157,21 -DA:158,12 -DA:161,21 -DA:162,21 -DA:164,21 +DA:157,42 +DA:158,17 +DA:161,42 +DA:162,42 +DA:164,42 DA:165,1 -DA:166,20 -DA:170,0 -DA:172,20 -DA:176,21 -DA:178,21 -DA:179,21 -DA:181,21 -DA:182,19 -DA:187,21 -DA:188,21 -DA:191,21 -DA:197,4860 +DA:166,41 +DA:170,5 +DA:172,36 +DA:176,42 +DA:178,42 +DA:179,42 +DA:181,42 +DA:182,32 +DA:187,42 +DA:188,42 +DA:191,42 +DA:197,5070 DA:201,1 DA:202,1 DA:204,1 @@ -16805,38 +16853,38 @@ DA:212,2 DA:216,1 DA:217,1 DA:221,1 -DA:225,0 -DA:226,0 -DA:227,0 -DA:228,0 -DA:229,0 -DA:230,0 -DA:232,0 +DA:225,5 +DA:226,5 +DA:227,3 +DA:228,3 +DA:229,3 +DA:230,3 +DA:232,5 LF:81 -LH:69 -BRDA:39,0,0,10 -BRDA:39,0,1,12 -BRDA:42,1,0,11 +LH:77 +BRDA:39,0,0,14 +BRDA:39,0,1,29 +BRDA:42,1,0,28 BRDA:42,1,1,1 -BRDA:60,2,0,4861 -BRDA:60,2,1,9 -BRDA:69,3,0,29 -BRDA:69,3,1,4832 +BRDA:60,2,0,5071 +BRDA:60,2,1,13 +BRDA:69,3,0,42 +BRDA:69,3,1,5029 BRDA:73,4,0,1 -BRDA:73,4,1,4860 +BRDA:73,4,1,5070 BRDA:74,5,0,0 BRDA:74,5,1,1 BRDA:74,6,0,1 BRDA:74,6,1,1 BRDA:83,7,0,0 -BRDA:83,7,1,4860 +BRDA:83,7,1,5070 BRDA:87,8,0,15 -BRDA:87,8,1,4835 +BRDA:87,8,1,5024 BRDA:87,8,2,3 -BRDA:87,8,3,10 -BRDA:87,8,4,22 +BRDA:87,8,3,14 +BRDA:87,8,4,43 BRDA:92,9,0,18 -BRDA:92,9,1,4817 +BRDA:92,9,1,5006 BRDA:93,10,0,14 BRDA:93,10,1,4 BRDA:94,11,0,5 @@ -16861,9 +16909,9 @@ BRDA:113,19,1,1 BRDA:121,20,0,10 BRDA:121,20,1,3 BRDA:131,21,0,1 -BRDA:131,21,1,4834 -BRDA:131,22,0,4835 -BRDA:131,22,1,4835 +BRDA:131,21,1,5023 +BRDA:131,22,0,5024 +BRDA:131,22,1,5024 BRDA:132,23,0,0 BRDA:132,23,1,1 BRDA:133,24,0,1 @@ -16876,26 +16924,26 @@ BRDA:145,27,0,3 BRDA:145,27,1,3 BRDA:145,27,2,2 BRDA:152,28,0,1 -BRDA:152,28,1,21 -BRDA:157,29,0,12 -BRDA:157,29,1,9 -BRDA:157,30,0,21 -BRDA:157,30,1,21 +BRDA:152,28,1,42 +BRDA:157,29,0,17 +BRDA:157,29,1,25 +BRDA:157,30,0,42 +BRDA:157,30,1,32 BRDA:164,31,0,1 -BRDA:164,31,1,20 -BRDA:164,32,0,21 -BRDA:164,32,1,1 -BRDA:166,33,0,0 -BRDA:166,33,1,20 -BRDA:167,34,0,20 -BRDA:167,34,1,0 -BRDA:176,35,0,6 -BRDA:176,35,1,15 -BRDA:181,36,0,19 -BRDA:181,36,1,2 -BRDA:181,37,0,21 -BRDA:181,37,1,19 -BRDA:187,38,0,21 +BRDA:164,31,1,41 +BRDA:164,32,0,42 +BRDA:164,32,1,6 +BRDA:166,33,0,5 +BRDA:166,33,1,36 +BRDA:167,34,0,41 +BRDA:167,34,1,5 +BRDA:176,35,0,11 +BRDA:176,35,1,31 +BRDA:181,36,0,32 +BRDA:181,36,1,10 +BRDA:181,37,0,42 +BRDA:181,37,1,32 +BRDA:187,38,0,42 BRDA:187,38,1,0 BRDA:204,39,0,1 BRDA:204,39,1,0 @@ -16909,10 +16957,10 @@ BRDA:210,43,0,3 BRDA:210,43,1,3 BRDA:216,44,0,1 BRDA:216,44,1,0 -BRDA:226,45,0,0 -BRDA:226,45,1,0 +BRDA:226,45,0,3 +BRDA:226,45,1,2 BRF:97 -BRH:74 +BRH:78 end_of_record TN: SF:packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts @@ -16978,24 +17026,24 @@ FN:138,isSelectionPath FN:144,isNodePosition FNF:5 FNH:5 -FNDA:5328,(anonymous_0) -FNDA:5328,isSelectionRangeEx +FNDA:5605,(anonymous_0) +FNDA:5605,isSelectionRangeEx FNDA:72,isTableSelectionOrNull -FNDA:196,isSelectionPath -FNDA:196,isNodePosition +FNDA:277,isSelectionPath +FNDA:277,isNodePosition DA:1,1 DA:23,1 -DA:24,5328 -DA:26,5328 -DA:27,25 -DA:28,5303 +DA:24,5605 +DA:26,5605 +DA:27,21 +DA:28,5584 DA:29,71 -DA:36,5232 +DA:36,5513 DA:37,57 -DA:44,5175 -DA:59,5175 -DA:68,5328 -DA:69,463 +DA:44,5456 +DA:59,5456 +DA:68,5605 +DA:69,561 DA:71,74 DA:72,73 DA:73,73 @@ -17006,82 +17054,82 @@ DA:83,53 DA:84,53 DA:85,53 DA:87,57 -DA:89,332 -DA:90,332 -DA:92,332 -DA:93,332 -DA:95,0 -DA:97,332 -DA:100,463 -DA:109,4865 -DA:110,4865 -DA:113,5328 -DA:117,5328 -DA:118,5328 +DA:89,430 +DA:90,430 +DA:92,430 +DA:93,428 +DA:95,2 +DA:97,430 +DA:100,561 +DA:109,5044 +DA:110,5044 +DA:113,5605 +DA:117,5605 +DA:118,5605 DA:127,72 DA:129,72 -DA:139,196 -DA:141,196 -DA:145,196 -DA:147,196 +DA:139,277 +DA:141,277 +DA:145,277 +DA:147,277 LF:41 -LH:40 -BRDA:26,0,0,25 -BRDA:26,0,1,5303 +LH:41 +BRDA:26,0,0,21 +BRDA:26,0,1,5584 BRDA:28,1,0,71 -BRDA:28,1,1,5232 -BRDA:28,2,0,5303 +BRDA:28,1,1,5513 +BRDA:28,2,0,5584 BRDA:28,2,1,72 BRDA:34,3,0,67 BRDA:34,3,1,4 BRDA:34,4,0,71 BRDA:34,4,1,67 BRDA:36,5,0,57 -BRDA:36,5,1,5175 -BRDA:36,6,0,5232 +BRDA:36,5,1,5456 +BRDA:36,6,0,5513 BRDA:36,6,1,58 -BRDA:45,7,0,4863 -BRDA:45,7,1,312 -BRDA:47,8,0,116 -BRDA:47,8,1,196 +BRDA:45,7,0,5042 +BRDA:45,7,1,414 +BRDA:47,8,0,137 +BRDA:47,8,1,277 BRDA:49,9,0,0 -BRDA:49,9,1,196 -BRDA:51,10,0,194 +BRDA:49,9,1,277 +BRDA:51,10,0,275 BRDA:51,10,1,2 -BRDA:50,11,0,196 -BRDA:50,11,1,131 -BRDA:60,12,0,310 -BRDA:60,12,1,4865 -BRDA:68,13,0,463 -BRDA:68,13,1,4865 +BRDA:50,11,0,277 +BRDA:50,11,1,192 +BRDA:60,12,0,412 +BRDA:60,12,1,5044 +BRDA:68,13,0,561 +BRDA:68,13,1,5044 BRDA:70,14,0,74 BRDA:70,14,1,57 -BRDA:70,14,2,332 +BRDA:70,14,2,430 BRDA:71,15,0,73 BRDA:71,15,1,1 BRDA:82,16,0,53 BRDA:82,16,1,4 -BRDA:92,17,0,332 -BRDA:92,17,1,0 -BRDA:119,18,0,5328 -BRDA:119,18,1,465 -BRDA:119,18,2,465 -BRDA:119,18,3,25 +BRDA:92,17,0,428 +BRDA:92,17,1,2 +BRDA:119,18,0,5605 +BRDA:119,18,1,563 +BRDA:119,18,2,563 +BRDA:119,18,3,21 BRDA:130,19,0,72 BRDA:130,19,1,68 BRDA:130,19,2,68 BRDA:130,19,3,67 BRDA:130,19,4,67 -BRDA:141,20,0,196 -BRDA:141,20,1,196 -BRDA:141,20,2,196 +BRDA:141,20,0,277 +BRDA:141,20,1,277 +BRDA:141,20,2,277 BRDA:141,20,3,0 -BRDA:148,21,0,196 -BRDA:148,21,1,196 -BRDA:148,21,2,196 -BRDA:148,21,3,65 +BRDA:148,21,0,277 +BRDA:148,21,1,277 +BRDA:148,21,2,277 +BRDA:148,21,3,85 BRF:54 -BRH:51 +BRH:52 end_of_record TN: SF:packages/roosterjs-editor-core/lib/coreApi/selectImage.ts @@ -17091,10 +17139,10 @@ FN:60,(anonymous_2) FN:67,(anonymous_3) FNF:4 FNH:4 -FNDA:5432,(anonymous_0) +FNDA:5708,(anonymous_0) FNDA:58,(anonymous_1) FNDA:58,(anonymous_2) -FNDA:5432,(anonymous_3) +FNDA:5708,(anonymous_3) DA:1,1 DA:2,1 DA:17,1 @@ -17102,16 +17150,16 @@ DA:18,1 DA:19,1 DA:20,1 DA:28,1 -DA:29,5432 -DA:31,5432 -DA:33,5432 +DA:29,5708 +DA:31,5708 +DA:33,5708 DA:34,58 DA:36,58 DA:37,58 DA:39,58 DA:41,58 DA:43,58 -DA:51,5432 +DA:51,5708 DA:54,1 DA:55,58 DA:56,58 @@ -17121,12 +17169,12 @@ DA:61,58 DA:62,58 DA:64,58 DA:67,1 -DA:68,5432 -DA:69,5432 +DA:68,5708 +DA:69,5708 LF:28 LH:28 BRDA:33,0,0,58 -BRDA:33,0,1,5374 +BRDA:33,0,1,5650 BRDA:62,1,0,58 BRDA:62,1,1,58 BRF:4 @@ -17139,22 +17187,22 @@ FN:48,restorePendingFormatState FN:58,(anonymous_2) FNF:3 FNH:3 -FNDA:789,(anonymous_0) -FNDA:643,restorePendingFormatState +FNDA:913,(anonymous_0) +FNDA:683,restorePendingFormatState FNDA:6,(anonymous_2) DA:2,1 DA:3,1 DA:21,1 -DA:26,789 -DA:27,785 -DA:29,785 -DA:30,58 -DA:33,785 -DA:36,643 -DA:39,785 +DA:26,913 +DA:27,909 +DA:29,909 +DA:30,52 +DA:33,909 +DA:36,683 +DA:39,909 DA:41,4 -DA:53,1929 -DA:55,643 +DA:53,2049 +DA:55,683 DA:56,1 DA:57,1 DA:58,1 @@ -17166,16 +17214,16 @@ DA:70,1 DA:71,1 LF:22 LH:22 -BRDA:26,0,0,785 +BRDA:26,0,0,909 BRDA:26,0,1,4 -BRDA:26,1,0,789 -BRDA:26,1,1,789 -BRDA:29,2,0,58 -BRDA:29,2,1,727 -BRDA:33,3,0,643 -BRDA:33,3,1,142 +BRDA:26,1,0,913 +BRDA:26,1,1,913 +BRDA:29,2,0,52 +BRDA:29,2,1,857 +BRDA:33,3,0,683 +BRDA:33,3,1,226 BRDA:55,4,0,1 -BRDA:55,4,1,642 +BRDA:55,4,1,682 BRDA:59,5,0,1 BRDA:59,5,1,5 BRDA:59,6,0,0 @@ -17211,7 +17259,7 @@ FN:267,isValidCoordinate FN:271,isMergedCell FNF:18 FNH:18 -FNDA:5446,(anonymous_0) +FNDA:5722,(anonymous_0) FNDA:158,(anonymous_1) FNDA:81,buildCss FNDA:24,handleAllTableSelected @@ -17222,10 +17270,10 @@ FNDA:228,(anonymous_7) FNDA:228,(anonymous_8) FNDA:81,select FNDA:87,(anonymous_10) -FNDA:5446,(anonymous_11) +FNDA:5722,(anonymous_11) FNDA:684,generateCssFromCell FNDA:684,removeImportant -FNDA:5446,areValidCoordinates +FNDA:5722,areValidCoordinates FNDA:169,(anonymous_15) FNDA:335,isValidCoordinate FNDA:81,isMergedCell @@ -17237,8 +17285,8 @@ DA:24,1 DA:26,1 DA:27,1 DA:38,1 -DA:43,5446 -DA:45,5446 +DA:43,5722 +DA:45,5722 DA:46,81 DA:47,81 DA:49,81 @@ -17248,7 +17296,7 @@ DA:55,81 DA:56,81 DA:63,81 DA:67,158 -DA:73,5365 +DA:73,5641 DA:81,81 DA:82,81 DA:84,81 @@ -17313,26 +17361,26 @@ DA:213,81 DA:214,87 DA:217,81 DA:220,1 -DA:221,5446 -DA:222,5446 +DA:221,5722 +DA:222,5722 DA:233,684 DA:249,684 DA:250,684 -DA:255,5446 +DA:255,5722 DA:256,88 DA:257,88 DA:258,86 DA:259,169 DA:260,86 -DA:264,5360 +DA:264,5636 DA:268,335 DA:272,81 DA:273,81 LF:99 LH:99 BRDA:45,0,0,81 -BRDA:45,0,1,5365 -BRDA:45,1,0,5446 +BRDA:45,0,1,5641 +BRDA:45,1,0,5722 BRDA:45,1,1,81 BRDA:50,2,0,81 BRDA:50,2,1,0 @@ -17391,7 +17439,7 @@ BRDA:193,27,1,134 BRDA:249,28,0,684 BRDA:249,28,1,0 BRDA:255,29,0,88 -BRDA:255,29,1,5358 +BRDA:255,29,1,5634 BRDA:256,30,0,88 BRDA:256,30,1,0 BRDA:257,31,0,86 @@ -17420,37 +17468,37 @@ FN:27,(anonymous_0) FN:86,selectContentMetadata FNF:2 FNH:2 -FNDA:5220,(anonymous_0) -FNDA:395,selectContentMetadata +FNDA:5485,(anonymous_0) +FNDA:471,selectContentMetadata DA:1,1 DA:27,1 -DA:33,5220 -DA:34,5220 -DA:35,395 -DA:44,395 -DA:45,395 -DA:46,395 -DA:51,395 -DA:53,395 -DA:54,395 -DA:55,395 -DA:56,395 -DA:59,5220 -DA:61,5220 +DA:33,5485 +DA:34,5485 +DA:35,471 +DA:44,471 +DA:45,471 +DA:46,471 +DA:51,471 +DA:53,471 +DA:54,471 +DA:55,471 +DA:56,471 +DA:59,5485 +DA:61,5485 DA:62,5 DA:71,5 -DA:74,5220 -DA:75,388 -DA:87,395 -DA:88,105 -DA:89,105 -DA:90,105 -DA:92,105 -DA:94,104 -DA:95,104 -DA:97,104 -DA:98,104 -DA:99,104 +DA:74,5485 +DA:75,464 +DA:87,471 +DA:88,104 +DA:89,104 +DA:90,104 +DA:92,104 +DA:94,103 +DA:95,103 +DA:97,103 +DA:98,103 +DA:99,103 DA:101,0 DA:106,0 DA:107,0 @@ -17461,41 +17509,41 @@ DA:117,0 DA:119,0 LF:37 LH:29 -BRDA:34,0,0,395 -BRDA:34,0,1,4825 -BRDA:45,1,0,395 +BRDA:34,0,0,471 +BRDA:34,0,1,5014 +BRDA:45,1,0,471 BRDA:45,1,1,17 -BRDA:47,2,0,395 +BRDA:47,2,0,471 BRDA:47,2,1,0 -BRDA:47,3,0,395 -BRDA:47,3,1,395 +BRDA:47,3,0,471 +BRDA:47,3,1,471 BRDA:47,4,0,0 -BRDA:47,4,1,395 -BRDA:47,5,0,395 -BRDA:47,5,1,395 -BRDA:54,6,0,395 -BRDA:54,6,1,392 +BRDA:47,4,1,471 +BRDA:47,5,0,471 +BRDA:47,5,1,471 +BRDA:54,6,0,471 +BRDA:54,6,1,468 BRDA:61,7,0,5 -BRDA:61,7,1,5215 -BRDA:61,8,0,5220 -BRDA:61,8,1,5115 -BRDA:61,8,2,5218 -BRDA:61,8,3,105 +BRDA:61,7,1,5480 +BRDA:61,8,0,5485 +BRDA:61,8,1,5381 +BRDA:61,8,2,5483 +BRDA:61,8,3,104 BRDA:67,9,0,5 BRDA:67,9,1,0 BRDA:69,10,0,2 BRDA:69,10,1,3 BRDA:69,11,0,5 BRDA:69,11,1,5 -BRDA:74,12,0,388 -BRDA:74,12,1,4832 -BRDA:74,13,0,5220 -BRDA:74,13,1,400 -BRDA:87,14,0,105 -BRDA:87,14,1,290 -BRDA:87,15,0,395 -BRDA:87,15,1,395 -BRDA:93,16,0,104 +BRDA:74,12,0,464 +BRDA:74,12,1,5021 +BRDA:74,13,0,5485 +BRDA:74,13,1,476 +BRDA:87,14,0,104 +BRDA:87,14,1,367 +BRDA:87,15,0,471 +BRDA:87,15,1,471 +BRDA:93,16,0,103 BRDA:93,16,1,0 BRDA:93,16,2,0 BRDA:106,17,0,0 @@ -17607,52 +17655,52 @@ FN:44,iterateElements FN:65,isHTMLElement FNF:5 FNH:4 -FNDA:5016,(anonymous_0) +FNDA:5288,(anonymous_0) FNDA:0,(anonymous_1) -FNDA:527,(anonymous_2) -FNDA:936,iterateElements -FNDA:791,isHTMLElement +FNDA:861,(anonymous_2) +FNDA:1485,iterateElements +FNDA:1276,isHTMLElement DA:15,1 -DA:22,9885 -DA:27,10032 -DA:28,5016 -DA:29,5016 -DA:30,153 +DA:22,10366 +DA:27,10576 +DA:28,5288 +DA:29,5288 +DA:30,215 DA:32,0 -DA:35,527 -DA:38,153 -DA:41,5016 -DA:49,936 -DA:50,8 -DA:53,936 -DA:54,783 -DA:55,519 -DA:58,783 -DA:66,791 -DA:67,791 +DA:35,861 +DA:38,215 +DA:41,5288 +DA:49,1485 +DA:50,6 +DA:53,1485 +DA:54,1270 +DA:55,855 +DA:58,1270 +DA:66,1276 +DA:67,1276 LF:18 LH:17 -BRDA:22,0,0,4869 -BRDA:22,0,1,147 -BRDA:29,1,0,153 -BRDA:29,1,1,4863 -BRDA:29,2,0,5016 -BRDA:29,2,1,5014 -BRDA:29,2,2,4861 +BRDA:22,0,0,5078 +BRDA:22,0,1,210 +BRDA:29,1,0,215 +BRDA:29,1,1,5073 +BRDA:29,2,0,5288 +BRDA:29,2,1,5286 +BRDA:29,2,2,5071 BRDA:31,3,0,1 -BRDA:31,3,1,152 -BRDA:41,4,0,154 -BRDA:41,4,1,4862 -BRDA:41,5,0,5016 -BRDA:41,5,1,4862 -BRDA:49,6,0,8 -BRDA:49,6,1,928 -BRDA:49,7,0,936 -BRDA:49,7,1,8 -BRDA:54,8,0,519 -BRDA:54,8,1,264 -BRDA:67,9,0,791 -BRDA:67,9,1,527 +BRDA:31,3,1,214 +BRDA:41,4,0,216 +BRDA:41,4,1,5072 +BRDA:41,5,0,5288 +BRDA:41,5,1,5072 +BRDA:49,6,0,6 +BRDA:49,6,1,1479 +BRDA:49,7,0,1485 +BRDA:49,7,1,6 +BRDA:54,8,0,855 +BRDA:54,8,1,415 +BRDA:67,9,0,1276 +BRDA:67,9,1,861 BRF:21 BRH:21 end_of_record @@ -17664,39 +17712,39 @@ FN:34,(anonymous_2) FN:42,handledExclusively FNF:4 FNH:4 -FNDA:11306,(anonymous_0) -FNDA:5693,(anonymous_1) -FNDA:124404,(anonymous_2) -FNDA:5693,handledExclusively +FNDA:12103,(anonymous_0) +FNDA:6749,(anonymous_1) +FNDA:133096,(anonymous_2) +FNDA:6749,handledExclusively DA:10,1 DA:24,1 -DA:29,11306 -DA:32,5693 -DA:34,11304 -DA:35,124404 -DA:36,101849 -DA:43,5693 +DA:29,12103 +DA:32,6749 +DA:34,12101 +DA:35,133096 +DA:36,108965 +DA:43,6749 DA:44,1 DA:45,1 -DA:48,5692 +DA:48,6748 LF:11 LH:11 -BRDA:29,0,0,11304 +BRDA:29,0,0,12101 BRDA:29,0,1,2 -BRDA:30,1,0,11306 +BRDA:30,1,0,12103 BRDA:30,1,1,2 -BRDA:30,1,2,11305 -BRDA:30,1,3,545 -BRDA:35,2,0,101849 -BRDA:35,2,1,22555 +BRDA:30,1,2,12102 +BRDA:30,1,3,642 +BRDA:35,2,0,108965 +BRDA:35,2,1,24131 BRDA:43,3,0,1 -BRDA:43,3,1,5692 -BRDA:43,4,0,5693 -BRDA:43,4,1,4694 -BRDA:43,5,0,4192 -BRDA:43,5,1,502 -BRDA:43,6,0,4694 -BRDA:43,6,1,4694 +BRDA:43,3,1,6748 +BRDA:43,4,0,6749 +BRDA:43,4,1,5558 +BRDA:43,5,0,4959 +BRDA:43,5,1,599 +BRDA:43,6,0,5558 +BRDA:43,6,1,5558 BRF:16 BRH:16 end_of_record @@ -17708,29 +17756,29 @@ FN:21,(anonymous_2) FNF:3 FNH:3 FNDA:283,addUniqueId -FNDA:56,applyId -FNDA:59,(anonymous_2) +FNDA:57,applyId +FNDA:60,(anonymous_2) DA:6,1 DA:7,283 DA:8,283 DA:9,55 DA:11,228 -DA:12,228 -DA:13,1 -DA:14,1 -DA:20,56 -DA:21,59 -DA:23,56 -DA:24,56 +DA:12,228 +DA:13,2 +DA:14,2 +DA:20,57 +DA:21,60 +DA:23,57 +DA:24,57 DA:25,3 DA:26,3 -DA:29,56 +DA:29,57 LF:15 LH:15 BRDA:8,0,0,55 BRDA:8,0,1,228 -BRDA:12,1,0,1 -BRDA:12,1,1,227 +BRDA:12,1,0,2 +BRDA:12,1,1,226 BRF:4 BRH:4 end_of_record @@ -17765,18 +17813,18 @@ FN:290,(anonymous_25) FNF:26 FNH:18 FNDA:1,(anonymous_0) -FNDA:5000,CopyPastePlugin +FNDA:5199,CopyPastePlugin FNDA:2,(anonymous_2) FNDA:2,(anonymous_3) FNDA:0,(anonymous_4) FNDA:0,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:4813,(anonymous_7) +FNDA:5004,(anonymous_7) FNDA:2,(anonymous_8) FNDA:2,(anonymous_9) FNDA:2,(anonymous_10) -FNDA:4776,(anonymous_11) -FNDA:4990,(anonymous_12) +FNDA:4955,(anonymous_11) +FNDA:5189,(anonymous_12) FNDA:4,(anonymous_13) FNDA:3,(anonymous_14) FNDA:2,(anonymous_15) @@ -17794,25 +17842,25 @@ DA:1,1 DA:2,1 DA:3,1 DA:33,1 -DA:34,5000 -DA:35,5000 -DA:42,5000 -DA:43,5000 +DA:34,5199 +DA:35,5199 +DA:42,5199 +DA:43,5199 DA:51,1 DA:52,2 -DA:59,4813 -DA:60,4813 -DA:61,4813 +DA:59,5004 +DA:60,5004 +DA:61,5004 DA:62,2 DA:63,2 DA:64,2 DA:71,1 -DA:72,4776 -DA:73,4773 -DA:75,4776 -DA:76,4776 +DA:72,4955 +DA:73,4952 +DA:75,4955 +DA:76,4955 DA:82,1 -DA:83,4990 +DA:83,5189 DA:86,4 DA:87,4 DA:88,4 @@ -17844,7 +17892,7 @@ DA:148,2 DA:149,2 DA:150,2 DA:151,2 -DA:160,5000 +DA:160,5199 DA:161,2 DA:162,2 DA:163,2 @@ -17931,9 +17979,9 @@ BRDA:183,6,0,0 BRDA:183,6,1,2 BRDA:183,7,0,2 BRDA:183,7,1,0 -BRDA:44,8,0,5000 -BRDA:44,8,1,5000 -BRDA:72,9,0,4773 +BRDA:44,8,0,5199 +BRDA:44,8,1,5199 +BRDA:72,9,0,4952 BRDA:72,9,1,3 BRDA:87,10,0,4 BRDA:87,10,1,0 @@ -18044,110 +18092,110 @@ FN:206,(anonymous_21) FN:207,(anonymous_22) FN:257,isContextMenuProvider FNF:24 -FNH:17 +FNH:16 FNDA:1,(anonymous_0) -FNDA:5011,DOMEventPlugin +FNDA:5208,DOMEventPlugin FNDA:0,(anonymous_2) FNDA:1,(anonymous_3) FNDA:1,(anonymous_4) FNDA:0,(anonymous_5) -FNDA:322,(anonymous_6) +FNDA:196,(anonymous_6) FNDA:0,(anonymous_7) FNDA:0,(anonymous_8) -FNDA:320,(anonymous_9) +FNDA:0,(anonymous_9) FNDA:0,(anonymous_10) FNDA:2,(anonymous_11) -FNDA:14,(anonymous_12) +FNDA:39,(anonymous_12) FNDA:0,(anonymous_13) FNDA:0,(anonymous_14) FNDA:2,(anonymous_15) -FNDA:4827,(anonymous_16) +FNDA:5016,(anonymous_16) FNDA:1,(anonymous_17) FNDA:1,(anonymous_18) -FNDA:4780,(anonymous_19) -FNDA:5011,(anonymous_20) -FNDA:19308,(anonymous_21) -FNDA:16,(anonymous_22) -FNDA:235,isContextMenuProvider +FNDA:4959,(anonymous_19) +FNDA:5208,(anonymous_20) +FNDA:20064,(anonymous_21) +FNDA:41,(anonymous_22) +FNDA:229,isContextMenuProvider DA:1,1 DA:27,1 -DA:28,5011 -DA:29,5011 -DA:37,5011 -DA:38,5011 +DA:28,5208 +DA:29,5208 +DA:37,5208 +DA:38,5208 DA:53,1 DA:54,2 -DA:61,4827 -DA:62,4827 -DA:64,4827 -DA:66,4827 +DA:61,5016 +DA:62,5016 +DA:64,5016 +DA:66,5016 DA:79,1 DA:81,1 DA:82,1 -DA:99,4827 +DA:99,5016 DA:100,0 DA:101,0 DA:102,0 -DA:103,4827 +DA:103,5016 DA:107,0 -DA:109,4827 -DA:112,4827 -DA:115,4827 -DA:116,4827 -DA:117,4827 +DA:109,5016 +DA:112,5016 +DA:115,5016 +DA:116,5016 +DA:117,5016 DA:123,1 -DA:124,4780 -DA:125,4780 +DA:124,4959 +DA:125,4959 DA:126,0 DA:131,0 DA:132,0 -DA:135,4780 -DA:136,4780 -DA:137,4780 -DA:138,4780 -DA:139,4780 -DA:140,4780 +DA:135,4959 +DA:136,4959 +DA:137,4959 +DA:138,4959 +DA:139,4959 +DA:140,4959 DA:146,1 -DA:147,5011 -DA:150,5011 +DA:147,5208 +DA:150,5208 DA:151,0 DA:152,0 DA:154,0 DA:155,0 -DA:158,5011 +DA:158,5208 DA:159,1 DA:160,1 -DA:164,5011 -DA:165,322 -DA:166,322 -DA:168,322 +DA:164,5208 +DA:165,196 +DA:166,196 +DA:168,196 DA:169,0 -DA:170,322 +DA:170,196 DA:171,0 -DA:172,322 +DA:172,196 DA:173,1 -DA:176,322 -DA:178,5011 +DA:176,196 +DA:178,5208 DA:179,0 DA:180,0 -DA:184,5011 +DA:184,5208 DA:185,0 DA:190,0 -DA:194,5011 -DA:195,320 -DA:196,320 -DA:199,5011 +DA:194,5208 +DA:195,0 +DA:196,0 +DA:199,5208 DA:200,0 -DA:206,19308 -DA:207,19308 -DA:208,16 -DA:212,19308 -DA:220,5011 +DA:206,20064 +DA:207,20064 +DA:208,41 +DA:212,20064 +DA:220,5208 DA:221,2 DA:224,1 -DA:228,5011 -DA:229,14 -DA:232,5011 +DA:228,5208 +DA:229,39 +DA:232,5208 DA:233,0 DA:234,0 DA:235,0 @@ -18162,9 +18210,9 @@ DA:245,0 DA:247,0 DA:250,0 DA:255,1 -DA:258,235 +DA:258,229 LF:94 -LH:63 +LH:61 BRDA:152,0,0,0 BRDA:152,0,1,0 BRDA:152,1,0,0 @@ -18177,26 +18225,26 @@ BRDA:159,4,0,0 BRDA:159,4,1,1 BRDA:159,5,0,1 BRDA:159,5,1,1 -BRDA:165,6,0,322 -BRDA:165,6,1,322 -BRDA:166,7,0,322 -BRDA:166,7,1,322 +BRDA:165,6,0,196 +BRDA:165,6,1,196 +BRDA:166,7,0,196 +BRDA:166,7,1,196 BRDA:168,8,0,0 -BRDA:168,8,1,322 -BRDA:168,9,0,322 +BRDA:168,8,1,196 +BRDA:168,9,0,196 BRDA:168,9,1,0 BRDA:169,10,0,0 BRDA:169,10,1,0 BRDA:169,11,0,0 BRDA:169,11,1,0 BRDA:170,12,0,0 -BRDA:170,12,1,322 +BRDA:170,12,1,196 BRDA:171,13,0,0 BRDA:171,13,1,0 BRDA:171,14,0,0 BRDA:171,14,1,0 BRDA:172,15,0,1 -BRDA:172,15,1,321 +BRDA:172,15,1,195 BRDA:173,16,0,0 BRDA:173,16,1,1 BRDA:173,17,0,1 @@ -18210,10 +18258,10 @@ BRDA:185,20,1,0 BRDA:186,21,0,0 BRDA:186,21,1,0 BRDA:186,21,2,0 -BRDA:195,22,0,320 +BRDA:195,22,0,0 BRDA:195,22,1,0 -BRDA:195,23,0,320 -BRDA:195,23,1,320 +BRDA:195,23,0,0 +BRDA:195,23,1,0 BRDA:200,24,0,0 BRDA:200,24,1,0 BRDA:200,25,0,0 @@ -18251,74 +18299,74 @@ BRDA:250,40,0,0 BRDA:250,40,1,0 BRDA:250,41,0,0 BRDA:250,41,1,0 -BRDA:40,42,0,5011 -BRDA:40,42,1,5009 -BRDA:44,43,0,5011 -BRDA:44,43,1,214 -BRDA:44,44,0,214 -BRDA:44,44,1,4797 -BRDA:44,45,0,5011 -BRDA:44,45,1,5011 +BRDA:40,42,0,5208 +BRDA:40,42,1,5206 +BRDA:44,43,0,5208 +BRDA:44,43,1,226 +BRDA:44,44,0,226 +BRDA:44,44,1,4982 +BRDA:44,45,0,5208 +BRDA:44,45,1,5208 BRDA:95,46,0,0 -BRDA:95,46,1,4827 +BRDA:95,46,1,5016 BRDA:99,47,0,0 -BRDA:99,47,1,4827 +BRDA:99,47,1,5016 BRDA:102,48,0,0 BRDA:102,48,1,0 BRDA:102,49,0,0 BRDA:102,49,1,0 BRDA:103,50,0,0 -BRDA:103,50,1,4827 +BRDA:103,50,1,5016 BRDA:116,51,0,0 -BRDA:116,51,1,4827 -BRDA:116,52,0,4827 -BRDA:116,52,1,4827 +BRDA:116,51,1,5016 +BRDA:116,52,0,5016 +BRDA:116,52,1,5016 BRDA:117,53,0,0 -BRDA:117,53,1,4827 -BRDA:117,54,0,4827 -BRDA:117,54,1,4827 +BRDA:117,53,1,5016 +BRDA:117,54,0,5016 +BRDA:117,54,1,5016 BRDA:124,55,0,0 -BRDA:124,55,1,4780 -BRDA:124,56,0,4780 -BRDA:124,56,1,4780 +BRDA:124,55,1,4959 +BRDA:124,56,0,4959 +BRDA:124,56,1,4959 BRDA:125,57,0,0 -BRDA:125,57,1,4780 -BRDA:125,58,0,4780 -BRDA:125,58,1,4780 +BRDA:125,57,1,4959 +BRDA:125,58,0,4959 +BRDA:125,58,1,4959 BRDA:132,59,0,0 BRDA:132,59,1,0 BRDA:132,60,0,0 BRDA:132,60,1,0 BRDA:135,61,0,0 -BRDA:135,61,1,4780 -BRDA:135,62,0,4780 -BRDA:135,62,1,4780 +BRDA:135,61,1,4959 +BRDA:135,62,0,4959 +BRDA:135,62,1,4959 BRDA:135,63,0,0 -BRDA:135,63,1,4780 -BRDA:135,64,0,4780 -BRDA:135,64,1,4780 +BRDA:135,63,1,4959 +BRDA:135,64,0,4959 +BRDA:135,64,1,4959 BRDA:136,65,0,0 -BRDA:136,65,1,4780 -BRDA:136,66,0,4780 -BRDA:136,66,1,4780 +BRDA:136,65,1,4959 +BRDA:136,66,0,4959 +BRDA:136,66,1,4959 BRDA:136,67,0,0 -BRDA:136,67,1,4780 -BRDA:136,68,0,4780 -BRDA:136,68,1,4780 +BRDA:136,67,1,4959 +BRDA:136,68,0,4959 +BRDA:136,68,1,4959 BRDA:138,69,0,0 -BRDA:138,69,1,4780 -BRDA:138,70,0,4780 -BRDA:138,70,1,4780 -BRDA:209,71,0,14 +BRDA:138,69,1,4959 +BRDA:138,70,0,4959 +BRDA:138,70,1,4959 +BRDA:209,71,0,39 BRDA:209,71,1,2 -BRDA:213,72,0,19284 +BRDA:213,72,0,20040 BRDA:213,72,1,24 BRDA:258,73,0,0 -BRDA:258,73,1,235 -BRDA:258,74,0,235 -BRDA:258,74,1,235 +BRDA:258,73,1,229 +BRDA:258,74,0,229 +BRDA:258,74,1,229 BRF:152 -BRH:67 +BRH:64 end_of_record TN: SF:packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts @@ -18332,38 +18380,38 @@ FN:63,(anonymous_6) FNF:7 FNH:7 FNDA:1,(anonymous_0) -FNDA:5009,EditPlugin +FNDA:5206,EditPlugin FNDA:2,(anonymous_2) -FNDA:4825,(anonymous_3) -FNDA:4778,(anonymous_4) -FNDA:5009,(anonymous_5) -FNDA:11217,(anonymous_6) +FNDA:5014,(anonymous_3) +FNDA:4957,(anonymous_4) +FNDA:5206,(anonymous_5) +FNDA:12014,(anonymous_6) DA:1,1 DA:16,1 -DA:17,5009 -DA:25,5009 +DA:17,5206 +DA:25,5206 DA:33,1 DA:34,2 DA:41,1 -DA:42,4825 +DA:42,5014 DA:48,1 -DA:49,4778 +DA:49,4957 DA:55,1 -DA:56,5009 +DA:56,5206 DA:63,1 -DA:64,11217 -DA:65,11217 -DA:66,11217 -DA:67,11217 -DA:69,11217 +DA:64,12014 +DA:65,12014 +DA:66,12014 +DA:67,12014 +DA:69,12014 DA:70,22 DA:71,22 DA:73,22 DA:74,22 DA:75,22 -DA:78,11195 -DA:79,540 -DA:82,11217 +DA:78,11992 +DA:79,713 +DA:82,12014 DA:83,9 DA:84,9 DA:89,6 @@ -18374,7 +18422,7 @@ DA:97,1 LF:33 LH:33 BRDA:69,0,0,22 -BRDA:69,0,1,11195 +BRDA:69,0,1,11992 BRDA:71,1,0,0 BRDA:71,1,1,22 BRDA:71,2,0,22 @@ -18385,9 +18433,9 @@ BRDA:76,4,0,22 BRDA:76,4,1,16 BRDA:76,4,2,16 BRDA:76,4,3,3 -BRDA:78,5,0,540 -BRDA:78,5,1,10655 -BRDA:82,6,0,11220 +BRDA:78,5,0,713 +BRDA:78,5,1,11279 +BRDA:82,6,0,12017 BRDA:82,6,1,10 BRDA:82,7,0,0 BRDA:82,7,1,10 @@ -18441,30 +18489,30 @@ FN:392,(anonymous_31) FNF:32 FNH:27 FNDA:1,(anonymous_0) -FNDA:5018,EntityPlugin +FNDA:5215,EntityPlugin FNDA:0,(anonymous_2) FNDA:2,(anonymous_3) -FNDA:4834,(anonymous_4) -FNDA:4787,(anonymous_5) -FNDA:5018,(anonymous_6) -FNDA:11226,(anonymous_7) +FNDA:5023,(anonymous_4) +FNDA:4966,(anonymous_5) +FNDA:5215,(anonymous_6) +FNDA:12023,(anonymous_7) FNDA:3,(anonymous_8) FNDA:25,(anonymous_9) FNDA:17,(anonymous_10) -FNDA:23,(anonymous_11) -FNDA:5366,(anonymous_12) +FNDA:18,(anonymous_11) +FNDA:5728,(anonymous_12) FNDA:12,(anonymous_13) FNDA:19,(anonymous_14) FNDA:13,(anonymous_15) FNDA:3,(anonymous_16) -FNDA:118,(anonymous_17) +FNDA:184,(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:5366,(anonymous_24) +FNDA:5728,(anonymous_24) FNDA:19,(anonymous_25) FNDA:13,(anonymous_26) FNDA:0,(anonymous_27) @@ -18482,20 +18530,20 @@ DA:46,1 DA:47,1 DA:53,1 DA:64,1 -DA:65,5018 -DA:71,5018 -DA:72,5018 +DA:65,5215 +DA:71,5215 +DA:72,5215 DA:80,1 DA:81,2 DA:88,1 -DA:89,4834 +DA:89,5023 DA:95,1 -DA:96,4787 -DA:97,4787 +DA:96,4966 +DA:97,4966 DA:103,1 -DA:104,5018 +DA:104,5215 DA:111,1 -DA:112,11226 +DA:112,12023 DA:114,25 DA:115,25 DA:117,17 @@ -18503,19 +18551,19 @@ DA:118,17 DA:120,0 DA:121,0 DA:123,0 -DA:125,23 -DA:126,23 -DA:128,548 -DA:129,548 -DA:131,4818 -DA:132,4818 -DA:134,118 -DA:135,118 +DA:125,18 +DA:126,18 +DA:128,721 +DA:129,721 +DA:131,5007 +DA:132,5007 +DA:134,184 +DA:135,184 DA:137,3 DA:138,3 DA:140,3 DA:141,3 -DA:144,11226 +DA:144,12023 DA:145,101 DA:149,1 DA:150,3 @@ -18523,7 +18571,7 @@ DA:151,3 DA:153,3 DA:154,0 DA:155,0 -DA:159,5018 +DA:159,5215 DA:160,0 DA:161,0 DA:162,0 @@ -18539,14 +18587,14 @@ DA:190,2 DA:191,2 DA:192,1 DA:197,1 -DA:198,23 -DA:200,23 -DA:201,3 -DA:204,23 -DA:205,23 -DA:209,5366 -DA:210,5366 -DA:212,5366 +DA:198,18 +DA:200,18 +DA:201,2 +DA:204,18 +DA:205,18 +DA:209,5728 +DA:210,5728 +DA:212,5728 DA:213,12 DA:214,12 DA:216,12 @@ -18554,33 +18602,33 @@ DA:217,5 DA:219,5 DA:221,5 DA:226,0 -DA:233,5366 +DA:233,5728 DA:236,19 DA:238,19 -DA:242,5366 +DA:242,5728 DA:243,52 DA:245,13 DA:246,13 DA:247,13 -DA:250,5366 +DA:250,5728 DA:254,0 DA:258,1 DA:259,3 DA:260,0 DA:262,0 DA:263,0 -DA:268,118 -DA:269,118 +DA:268,184 +DA:269,184 DA:270,2 DA:272,2 -DA:276,4 -DA:277,4 -DA:278,4 -DA:279,4 +DA:276,3 +DA:277,3 +DA:278,3 +DA:279,3 DA:280,8 DA:281,6 DA:283,2 -DA:289,4 +DA:289,3 DA:290,2 DA:294,2 DA:295,6 @@ -18596,7 +18644,7 @@ DA:325,13 DA:326,1 DA:329,13 DA:332,1 -DA:333,5366 +DA:333,5728 DA:337,19 DA:341,1 DA:342,13 @@ -18632,20 +18680,20 @@ BRDA:161,3,1,0 BRDA:113,4,0,25 BRDA:113,4,1,17 BRDA:113,4,2,0 -BRDA:113,4,3,23 -BRDA:113,4,4,548 -BRDA:113,4,5,4818 -BRDA:113,4,6,118 +BRDA:113,4,3,18 +BRDA:113,4,4,721 +BRDA:113,4,5,5007 +BRDA:113,4,6,184 BRDA:113,4,7,3 BRDA:113,4,8,3 BRDA:120,5,0,0 BRDA:120,5,1,0 BRDA:144,6,0,101 -BRDA:144,6,1,11125 +BRDA:144,6,1,11922 BRDA:144,7,0,0 -BRDA:144,7,1,11226 -BRDA:144,8,0,11226 -BRDA:144,8,1,11226 +BRDA:144,7,1,12023 +BRDA:144,8,0,12023 +BRDA:144,8,1,12023 BRDA:151,9,0,3 BRDA:151,9,1,0 BRDA:151,10,0,0 @@ -18675,14 +18723,14 @@ BRDA:191,19,1,1 BRDA:191,20,0,2 BRDA:191,20,1,2 BRDA:198,21,0,0 -BRDA:198,21,1,23 -BRDA:198,22,0,23 -BRDA:198,22,1,23 -BRDA:200,23,0,3 -BRDA:200,23,1,20 -BRDA:200,24,0,23 -BRDA:200,24,1,12 -BRDA:204,25,0,23 +BRDA:198,21,1,18 +BRDA:198,22,0,18 +BRDA:198,22,1,18 +BRDA:200,23,0,2 +BRDA:200,23,1,16 +BRDA:200,24,0,18 +BRDA:200,24,1,9 +BRDA:204,25,0,18 BRDA:204,25,1,0 BRDA:216,26,0,5 BRDA:216,26,1,7 @@ -18695,19 +18743,19 @@ BRDA:222,29,0,5 BRDA:222,29,1,5 BRDA:222,29,2,5 BRDA:234,30,0,0 -BRDA:234,30,1,5366 -BRDA:233,31,0,5366 +BRDA:234,30,1,5728 +BRDA:233,31,0,5728 BRDA:233,31,1,0 -BRDA:233,32,0,4818 -BRDA:233,32,1,548 -BRDA:233,33,0,5366 -BRDA:233,33,1,5366 +BRDA:233,32,0,5007 +BRDA:233,32,1,721 +BRDA:233,33,0,5728 +BRDA:233,33,1,5728 BRDA:238,34,0,19 BRDA:238,34,1,10 BRDA:238,34,2,7 BRDA:250,35,0,0 -BRDA:250,35,1,5366 -BRDA:251,36,0,5366 +BRDA:250,35,1,5728 +BRDA:251,36,0,5728 BRDA:251,36,1,0 BRDA:252,37,0,0 BRDA:252,37,1,0 @@ -18720,15 +18768,15 @@ BRDA:259,40,1,3 BRDA:262,41,0,0 BRDA:262,41,1,0 BRDA:279,42,0,0 -BRDA:279,42,1,4 -BRDA:279,43,0,4 -BRDA:279,43,1,4 +BRDA:279,42,1,3 +BRDA:279,43,0,3 +BRDA:279,43,1,3 BRDA:280,44,0,6 BRDA:280,44,1,2 BRDA:289,45,0,2 -BRDA:289,45,1,2 -BRDA:289,46,0,4 -BRDA:289,46,1,4 +BRDA:289,45,1,1 +BRDA:289,46,0,3 +BRDA:289,46,1,3 BRDA:298,47,0,4 BRDA:298,47,1,2 BRDA:306,48,0,29 @@ -18745,14 +18793,14 @@ BRDA:325,53,0,9 BRDA:325,53,1,4 BRDA:325,54,0,13 BRDA:325,54,1,13 -BRDA:337,55,0,5366 +BRDA:337,55,0,5728 BRDA:337,55,1,0 -BRDA:334,56,0,5366 -BRDA:334,56,1,5366 +BRDA:334,56,0,5728 +BRDA:334,56,1,5728 BRDA:334,57,0,0 -BRDA:334,57,1,5366 -BRDA:334,58,0,5366 -BRDA:334,58,1,5366 +BRDA:334,57,1,5728 +BRDA:334,58,0,5728 +BRDA:334,58,1,5728 BRDA:343,59,0,13 BRDA:343,59,1,3 BRDA:343,60,0,0 @@ -18780,27 +18828,27 @@ FN:40,(anonymous_4) FN:45,(anonymous_5) FNF:5 FNH:5 -FNDA:5009,(anonymous_0) +FNDA:5206,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:4824,(anonymous_3) -FNDA:4777,(anonymous_4) -FNDA:11271,(anonymous_5) +FNDA:5013,(anonymous_3) +FNDA:4956,(anonymous_4) +FNDA:12068,(anonymous_5) DA:1,1 DA:12,1 DA:13,1 DA:14,1 DA:19,1 -DA:20,5008 +DA:20,5205 DA:25,1 DA:26,2 DA:33,1 -DA:34,4824 +DA:34,5013 DA:40,1 -DA:41,4777 -DA:42,4777 +DA:41,4956 +DA:42,4956 DA:45,1 -DA:46,11271 -DA:47,11271 +DA:46,12068 +DA:47,12068 DA:50,8 DA:51,8 DA:52,4 @@ -18834,10 +18882,10 @@ DA:106,1 LF:46 LH:46 BRDA:41,0,0,0 -BRDA:41,0,1,4777 -BRDA:41,1,0,4777 -BRDA:41,1,1,4777 -BRDA:46,2,0,11271 +BRDA:41,0,1,4956 +BRDA:41,1,0,4956 +BRDA:41,1,1,4956 +BRDA:46,2,0,12068 BRDA:46,2,1,0 BRDA:48,3,0,4 BRDA:48,3,1,8 @@ -18893,153 +18941,153 @@ FN:206,(anonymous_12) FN:217,(anonymous_13) FN:218,(anonymous_14) FNF:15 -FNH:13 +FNH:14 FNDA:1,(anonymous_0) -FNDA:5004,LifecyclePlugin -FNDA:4817,(anonymous_2) -FNDA:4770,(anonymous_3) +FNDA:5201,LifecyclePlugin +FNDA:5006,(anonymous_2) +FNDA:4949,(anonymous_3) FNDA:0,(anonymous_4) -FNDA:4820,(anonymous_5) -FNDA:4753,(anonymous_6) +FNDA:5009,(anonymous_5) +FNDA:4938,(anonymous_6) FNDA:2,(anonymous_7) -FNDA:4820,(anonymous_8) -FNDA:4773,(anonymous_9) +FNDA:5009,(anonymous_8) +FNDA:4952,(anonymous_9) FNDA:13,(anonymous_10) -FNDA:5002,(anonymous_11) -FNDA:11209,(anonymous_12) -FNDA:4820,(anonymous_13) -FNDA:0,(anonymous_14) +FNDA:5199,(anonymous_11) +FNDA:12006,(anonymous_12) +FNDA:5009,(anonymous_13) +FNDA:10018,(anonymous_14) DA:1,1 DA:13,1 DA:14,1 DA:36,1 DA:51,1 -DA:52,5004 -DA:55,5004 -DA:56,5004 -DA:64,5004 -DA:65,5004 -DA:68,5004 -DA:69,4997 -DA:70,4817 -DA:71,4817 -DA:72,4817 -DA:74,4997 -DA:75,4770 -DA:76,4770 -DA:77,4770 -DA:80,5004 -DA:83,9640 -DA:84,4820 -DA:85,4820 -DA:86,4820 -DA:94,4820 -DA:104,5004 -DA:105,5004 -DA:107,5004 -DA:108,4783 -DA:109,4756 -DA:113,4756 -DA:116,4783 +DA:52,5201 +DA:55,5201 +DA:56,5201 +DA:64,5201 +DA:65,5201 +DA:68,5201 +DA:69,5194 +DA:70,5006 +DA:71,5006 +DA:72,5006 +DA:74,5194 +DA:75,4949 +DA:76,4949 +DA:77,4949 +DA:80,5201 +DA:83,10018 +DA:84,5009 +DA:85,5009 +DA:86,5009 +DA:94,5009 +DA:104,5201 +DA:105,5201 +DA:107,5201 +DA:108,4974 +DA:109,4941 +DA:113,4941 +DA:116,4974 DA:117,0 DA:121,0 -DA:125,5004 +DA:125,5201 DA:143,1 DA:144,2 DA:151,1 -DA:152,4820 -DA:155,4820 -DA:158,4820 -DA:161,4820 -DA:164,4820 -DA:167,4820 -DA:173,4773 -DA:174,4773 -DA:176,4773 +DA:152,5009 +DA:155,5009 +DA:158,5009 +DA:161,5009 +DA:164,5009 +DA:167,5009 +DA:173,4952 +DA:174,4952 +DA:176,4952 DA:177,13 DA:179,13 DA:180,1 DA:183,13 -DA:186,4773 -DA:187,4770 -DA:188,4770 -DA:189,4770 -DA:192,4773 +DA:186,4952 +DA:187,4949 +DA:188,4949 +DA:189,4949 +DA:192,4952 DA:198,1 -DA:199,5002 +DA:199,5199 DA:206,1 -DA:207,11209 +DA:207,12006 DA:212,0 DA:213,0 -DA:217,4820 -DA:218,4820 -DA:220,0 -DA:221,0 +DA:217,5009 +DA:218,5009 +DA:220,10018 +DA:221,10018 DA:225,1 LF:67 -LH:61 -BRDA:15,0,0,0 -BRDA:15,0,1,1 +LH:63 +BRDA:15,0,0,1 +BRDA:15,0,1,0 BRDA:23,1,0,0 -BRDA:23,1,1,1 -BRDA:65,2,0,5004 -BRDA:65,2,1,5000 -BRDA:65,2,2,4989 -BRDA:68,3,0,4997 +BRDA:23,1,1,0 +BRDA:65,2,0,5201 +BRDA:65,2,1,5197 +BRDA:65,2,2,5186 +BRDA:68,3,0,5194 BRDA:68,3,1,7 BRDA:81,4,0,0 -BRDA:81,4,1,5004 +BRDA:81,4,1,5201 BRDA:85,5,0,0 -BRDA:85,5,1,4820 -BRDA:85,6,0,4820 -BRDA:85,6,1,4820 -BRDA:104,7,0,13 -BRDA:104,7,1,4991 -BRDA:104,8,0,5004 -BRDA:104,8,1,5004 -BRDA:105,9,0,4783 -BRDA:105,9,1,221 -BRDA:107,10,0,4783 -BRDA:107,10,1,221 -BRDA:108,11,0,4756 -BRDA:108,11,1,27 -BRDA:108,12,0,4783 -BRDA:108,12,1,4756 +BRDA:85,5,1,5009 +BRDA:85,6,0,5009 +BRDA:85,6,1,5009 +BRDA:104,7,0,11 +BRDA:104,7,1,5190 +BRDA:104,8,0,5201 +BRDA:104,8,1,5201 +BRDA:105,9,0,4974 +BRDA:105,9,1,227 +BRDA:107,10,0,4974 +BRDA:107,10,1,227 +BRDA:108,11,0,4941 +BRDA:108,11,1,33 +BRDA:108,12,0,4974 +BRDA:108,12,1,4941 BRDA:116,13,0,0 -BRDA:116,13,1,4783 -BRDA:116,14,0,4783 +BRDA:116,13,1,4974 +BRDA:116,14,0,4974 BRDA:116,14,1,0 BRDA:130,15,0,1 -BRDA:130,15,1,5003 -BRDA:130,16,0,5004 -BRDA:130,16,1,5004 -BRDA:131,17,0,5004 -BRDA:131,17,1,351 +BRDA:130,15,1,5200 +BRDA:130,16,0,5201 +BRDA:130,16,1,5201 +BRDA:131,17,0,5201 +BRDA:131,17,1,363 BRDA:158,18,0,3 -BRDA:158,18,1,4817 -BRDA:158,19,0,4820 -BRDA:158,19,1,4817 +BRDA:158,18,1,5006 +BRDA:158,19,0,5009 +BRDA:158,19,1,5006 BRDA:174,20,0,0 -BRDA:174,20,1,4773 -BRDA:174,21,0,4773 -BRDA:174,21,1,4773 +BRDA:174,20,1,4952 +BRDA:174,21,0,4952 +BRDA:174,21,1,4952 BRDA:179,22,0,1 BRDA:179,22,1,12 BRDA:179,23,0,13 BRDA:179,23,1,13 -BRDA:186,24,0,4770 +BRDA:186,24,0,4949 BRDA:186,24,1,3 BRDA:207,25,0,0 -BRDA:207,25,1,11209 -BRDA:208,26,0,11209 -BRDA:208,26,1,539 -BRDA:208,26,2,539 +BRDA:207,25,1,12006 +BRDA:208,26,0,12006 +BRDA:208,26,1,712 +BRDA:208,26,2,712 BRDA:221,27,0,0 -BRDA:221,27,1,0 -BRDA:221,28,0,0 -BRDA:221,28,1,0 +BRDA:221,27,1,10018 +BRDA:221,28,0,10018 +BRDA:221,28,1,10018 BRF:60 -BRH:48 +BRH:50 end_of_record TN: SF:packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts @@ -19052,36 +19100,36 @@ FN:41,(anonymous_6) FN:55,(anonymous_7) FNF:7 FNH:7 -FNDA:5004,(anonymous_0) +FNDA:5201,(anonymous_0) FNDA:25,(anonymous_2) FNDA:1,(anonymous_3) -FNDA:4819,(anonymous_4) -FNDA:4773,(anonymous_5) -FNDA:11212,(anonymous_6) -FNDA:4798,(anonymous_7) -DA:8,5004 -DA:9,5003 -DA:10,5003 -DA:11,5003 -DA:12,5003 +FNDA:5008,(anonymous_4) +FNDA:4952,(anonymous_5) +FNDA:12009,(anonymous_6) +FNDA:4977,(anonymous_7) +DA:8,5201 +DA:9,5200 +DA:10,5200 +DA:11,5200 +DA:12,5200 DA:17,1 DA:18,1 DA:25,1 -DA:26,4819 +DA:26,5008 DA:32,1 -DA:33,4773 -DA:34,4773 +DA:33,4952 +DA:34,4952 DA:41,1 -DA:42,11212 +DA:42,12009 DA:47,32 DA:50,32 DA:51,32 DA:52,32 DA:55,1 -DA:56,4798 +DA:56,4977 DA:57,32 DA:58,32 -DA:62,5003 +DA:62,5200 DA:63,25 DA:64,25 DA:65,25 @@ -19093,14 +19141,14 @@ BRDA:63,0,1,0 BRDA:67,1,0,25 BRDA:67,1,1,9 BRDA:42,2,0,32 -BRDA:42,2,1,11180 -BRDA:43,3,0,11212 -BRDA:43,3,1,11212 +BRDA:42,2,1,11977 +BRDA:43,3,0,12009 +BRDA:43,3,1,12009 BRDA:43,3,2,33 BRDA:56,4,0,32 -BRDA:56,4,1,4766 -BRDA:56,5,0,4798 -BRDA:56,5,1,4798 +BRDA:56,4,1,4945 +BRDA:56,5,0,4977 +BRDA:56,5,1,4977 BRF:13 BRH:12 end_of_record @@ -19120,63 +19168,63 @@ FN:175,normalizeListsForExport FN:176,(anonymous_12) FNF:12 FNH:12 -FNDA:5022,(anonymous_0) +FNDA:5219,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:4837,(anonymous_3) -FNDA:4790,(anonymous_4) -FNDA:11234,(anonymous_5) +FNDA:5026,(anonymous_3) +FNDA:4969,(anonymous_4) +FNDA:12031,(anonymous_5) FNDA:45,(anonymous_6) -FNDA:5433,(anonymous_7) -FNDA:178,normalizeTables -FNDA:184,(anonymous_9) +FNDA:5790,(anonymous_7) +FNDA:183,normalizeTables +FNDA:189,(anonymous_9) FNDA:7,(anonymous_10) -FNDA:117,normalizeListsForExport -FNDA:57,(anonymous_12) +FNDA:183,normalizeListsForExport +FNDA:69,(anonymous_12) DA:1,1 DA:27,1 -DA:28,5021 +DA:28,5218 DA:33,1 DA:34,2 DA:43,1 -DA:44,4837 +DA:44,5026 DA:52,1 -DA:53,4790 +DA:53,4969 DA:62,1 -DA:63,11234 -DA:66,5375 -DA:67,5375 -DA:69,5375 -DA:72,23 -DA:73,23 +DA:63,12031 +DA:66,5737 +DA:67,5737 +DA:69,5737 +DA:72,18 +DA:73,18 DA:76,29 DA:77,29 DA:80,18 DA:81,16 DA:83,18 -DA:86,117 -DA:87,117 +DA:86,183 +DA:87,183 DA:91,1 DA:92,45 DA:94,45 DA:95,35 DA:99,1 -DA:100,5433 -DA:101,178 -DA:102,178 -DA:103,178 -DA:105,178 -DA:107,178 +DA:100,5790 +DA:101,183 +DA:102,183 +DA:103,183 +DA:105,183 +DA:107,183 DA:108,25 DA:114,9 DA:115,16 DA:119,1 DA:124,1 -DA:127,178 -DA:128,178 -DA:129,184 -DA:131,184 -DA:132,255 -DA:133,255 +DA:127,183 +DA:128,183 +DA:129,189 +DA:131,189 +DA:132,267 +DA:133,267 DA:135,43 DA:136,20 DA:137,20 @@ -19184,36 +19232,36 @@ DA:140,43 DA:141,43 DA:142,43 DA:144,43 -DA:146,173 +DA:146,178 DA:147,8 DA:148,8 DA:149,8 DA:150,8 -DA:152,165 -DA:154,173 -DA:156,39 -DA:157,39 -DA:161,184 -DA:162,184 -DA:163,184 +DA:152,170 +DA:154,178 +DA:156,46 +DA:157,46 +DA:161,189 +DA:162,189 +DA:163,189 DA:164,11 DA:165,7 DA:166,2 -DA:172,178 -DA:176,117 -DA:177,57 -DA:179,57 +DA:172,183 +DA:176,183 +DA:177,69 +DA:179,69 DA:180,0 DA:182,0 LF:73 LH:71 -BRDA:64,0,0,4835 -BRDA:64,0,1,5375 -BRDA:64,0,2,23 +BRDA:64,0,0,5024 +BRDA:64,0,1,5737 +BRDA:64,0,2,18 BRDA:64,0,3,29 BRDA:64,0,4,18 -BRDA:64,0,5,117 -BRDA:66,1,0,5375 +BRDA:64,0,5,183 +BRDA:66,1,0,5737 BRDA:66,1,1,0 BRDA:80,2,0,16 BRDA:80,2,1,2 @@ -19223,19 +19271,19 @@ BRDA:92,4,0,45 BRDA:92,4,1,45 BRDA:94,5,0,35 BRDA:94,5,1,10 -BRDA:100,6,0,178 -BRDA:100,6,1,5255 -BRDA:100,7,0,5433 -BRDA:100,7,1,5433 -BRDA:103,8,0,178 -BRDA:103,8,1,146 -BRDA:103,8,2,111 +BRDA:100,6,0,183 +BRDA:100,6,1,5607 +BRDA:100,7,0,5790 +BRDA:100,7,1,5790 +BRDA:103,8,0,183 +BRDA:103,8,1,151 +BRDA:103,8,2,112 BRDA:103,9,0,16 -BRDA:103,9,1,162 -BRDA:103,10,0,178 -BRDA:103,10,1,178 +BRDA:103,9,1,167 +BRDA:103,10,0,183 +BRDA:103,10,1,183 BRDA:107,11,0,25 -BRDA:107,11,1,153 +BRDA:107,11,1,158 BRDA:108,12,0,9 BRDA:108,12,1,16 BRDA:109,13,0,25 @@ -19251,23 +19299,23 @@ BRDA:116,16,1,2 BRDA:116,17,0,16 BRDA:116,17,1,16 BRDA:134,18,0,43 -BRDA:134,18,1,173 -BRDA:134,18,2,39 +BRDA:134,18,1,178 +BRDA:134,18,2,46 BRDA:135,19,0,20 BRDA:135,19,1,23 BRDA:146,20,0,8 -BRDA:146,20,1,165 +BRDA:146,20,1,170 BRDA:148,21,0,0 BRDA:148,21,1,8 BRDA:148,22,0,8 BRDA:148,22,1,8 BRDA:163,23,0,11 -BRDA:163,23,1,173 +BRDA:163,23,1,178 BRDA:165,24,0,2 BRDA:165,24,1,5 BRDA:179,25,0,0 -BRDA:179,25,1,57 -BRDA:179,26,0,57 +BRDA:179,25,1,69 +BRDA:179,26,0,69 BRDA:179,26,1,0 BRF:62 BRH:57 @@ -19287,50 +19335,50 @@ FN:139,(anonymous_9) FNF:10 FNH:10 FNDA:1,(anonymous_0) -FNDA:5008,PendingFormatStatePlugin +FNDA:5205,PendingFormatStatePlugin FNDA:2,(anonymous_2) -FNDA:4824,(anonymous_3) -FNDA:4777,(anonymous_4) -FNDA:5008,(anonymous_5) -FNDA:11216,(anonymous_6) -FNDA:4794,(anonymous_7) +FNDA:5013,(anonymous_3) +FNDA:4956,(anonymous_4) +FNDA:5205,(anonymous_5) +FNDA:12013,(anonymous_6) +FNDA:4973,(anonymous_7) FNDA:42,(anonymous_8) FNDA:12,(anonymous_9) DA:1,1 DA:14,1 DA:20,1 -DA:22,5008 -DA:31,5008 +DA:22,5205 +DA:31,5205 DA:41,1 DA:42,2 DA:49,1 -DA:50,4824 +DA:50,5013 DA:56,1 -DA:57,4777 -DA:58,4777 +DA:57,4956 +DA:58,4956 DA:64,1 -DA:65,5008 +DA:65,5205 DA:72,1 -DA:73,11216 +DA:73,12013 DA:77,22 DA:78,22 DA:79,22 DA:80,22 DA:84,0 DA:87,22 -DA:91,588 -DA:92,588 +DA:91,761 +DA:92,761 DA:98,0 DA:99,0 DA:100,0 DA:106,0 -DA:107,588 +DA:107,761 DA:121,17 -DA:124,588 +DA:124,761 DA:128,1 -DA:129,4794 -DA:130,4794 -DA:131,4794 +DA:129,4973 +DA:130,4973 +DA:131,4973 DA:134,1 DA:135,42 DA:136,42 @@ -19359,28 +19407,28 @@ LH:53 BRDA:74,0,0,22 BRDA:74,0,1,17 BRDA:74,0,2,47 -BRDA:74,0,3,588 +BRDA:74,0,3,761 BRDA:77,1,0,22 BRDA:77,1,1,0 BRDA:81,2,0,12 BRDA:81,2,1,10 BRDA:92,3,0,0 -BRDA:92,3,1,588 -BRDA:93,4,0,588 -BRDA:93,4,1,588 +BRDA:92,3,1,761 +BRDA:93,4,0,761 +BRDA:93,4,1,761 BRDA:93,4,2,17 BRDA:93,4,3,0 BRDA:107,5,0,17 -BRDA:107,5,1,571 -BRDA:108,6,0,588 +BRDA:107,5,1,744 +BRDA:108,6,0,761 BRDA:108,6,1,17 BRDA:108,6,2,14 -BRDA:108,6,3,574 +BRDA:108,6,3,747 BRDA:108,6,4,20 BRDA:108,6,5,20 -BRDA:108,6,6,571 -BRDA:108,6,7,540 -BRDA:108,6,8,540 +BRDA:108,6,6,744 +BRDA:108,6,7,713 +BRDA:108,6,8,713 BRDA:135,7,0,0 BRDA:135,7,1,42 BRDA:135,8,0,42 @@ -19431,28 +19479,28 @@ FN:55,(anonymous_6) FN:83,(anonymous_7) FNF:7 FNH:6 -FNDA:4964,(anonymous_0) +FNDA:5163,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:4779,(anonymous_3) -FNDA:4754,(anonymous_4) +FNDA:4970,(anonymous_3) +FNDA:4933,(anonymous_4) FNDA:4,(anonymous_5) -FNDA:11087,(anonymous_6) +FNDA:11902,(anonymous_6) FNDA:0,(anonymous_7) DA:2,1 DA:14,1 -DA:15,4963 +DA:15,5162 DA:20,1 DA:21,2 DA:28,1 -DA:29,4779 +DA:29,4970 DA:35,1 -DA:36,4754 +DA:36,4933 DA:39,1 DA:40,4 DA:46,0 DA:48,4 -DA:55,11087 -DA:58,11087 +DA:55,11902 +DA:58,11902 DA:70,5 DA:73,5 DA:76,5 @@ -19476,8 +19524,8 @@ BRDA:41,1,1,4 BRDA:41,1,2,0 BRDA:41,1,3,0 BRDA:58,2,0,5 -BRDA:58,2,1,11082 -BRDA:59,3,0,11087 +BRDA:58,2,1,11897 +BRDA:59,3,0,11902 BRDA:59,3,1,5 BRDA:59,3,2,5 BRDA:61,4,0,5 @@ -19542,27 +19590,27 @@ FN:278,(anonymous_26) FNF:27 FNH:26 FNDA:1,(anonymous_0) -FNDA:5036,UndoPlugin +FNDA:5231,UndoPlugin FNDA:2,(anonymous_2) -FNDA:4849,(anonymous_3) -FNDA:4798,(anonymous_4) -FNDA:5032,(anonymous_5) -FNDA:497,(anonymous_6) -FNDA:11258,(anonymous_7) -FNDA:49,(anonymous_8) +FNDA:5036,(anonymous_3) +FNDA:4975,(anonymous_4) +FNDA:5227,(anonymous_5) +FNDA:594,(anonymous_6) +FNDA:12047,(anonymous_7) +FNDA:41,(anonymous_8) FNDA:7,(anonymous_9) FNDA:1,(anonymous_10) -FNDA:542,(anonymous_11) -FNDA:544,(anonymous_12) -FNDA:7,(anonymous_13) -FNDA:4854,(anonymous_14) -FNDA:5029,createUndoSnapshots -FNDA:9632,(anonymous_16) +FNDA:715,(anonymous_11) +FNDA:717,(anonymous_12) +FNDA:4,(anonymous_13) +FNDA:5037,(anonymous_14) +FNDA:5224,createUndoSnapshots +FNDA:10010,(anonymous_16) FNDA:0,(anonymous_17) -FNDA:5226,(anonymous_18) -FNDA:541,(anonymous_19) -FNDA:14,(anonymous_20) -FNDA:5031,createUndoSnapshotServiceBridge +FNDA:5509,(anonymous_18) +FNDA:714,(anonymous_19) +FNDA:11,(anonymous_20) +FNDA:5226,createUndoSnapshotServiceBridge FNDA:1,(anonymous_22) FNDA:1,(anonymous_23) FNDA:1,(anonymous_24) @@ -19571,51 +19619,51 @@ FNDA:1,(anonymous_26) DA:14,1 DA:26,1 DA:32,1 -DA:33,5036 -DA:34,5036 -DA:42,5036 +DA:33,5231 +DA:34,5231 +DA:42,5231 DA:57,1 DA:58,2 DA:65,1 -DA:66,4849 +DA:66,5036 DA:72,1 -DA:73,4798 +DA:73,4975 DA:79,1 -DA:80,5032 +DA:80,5227 DA:87,1 -DA:88,497 +DA:88,594 DA:100,1 -DA:102,11258 +DA:102,12047 DA:103,0 -DA:106,11258 -DA:108,4819 -DA:109,4819 -DA:112,4817 -DA:114,4819 -DA:116,49 -DA:117,49 +DA:106,12047 +DA:108,5008 +DA:109,5008 +DA:112,5006 +DA:114,5008 +DA:116,41 +DA:117,41 DA:119,7 DA:120,7 DA:122,1 DA:123,1 DA:124,1 -DA:126,542 -DA:127,542 +DA:126,715 +DA:127,715 DA:129,1 DA:130,1 DA:134,1 -DA:138,49 -DA:139,16 +DA:138,41 +DA:139,8 DA:140,1 DA:141,1 DA:142,1 DA:143,1 -DA:144,15 -DA:145,15 -DA:151,15 -DA:157,12 -DA:161,15 -DA:162,15 +DA:144,7 +DA:145,7 +DA:151,7 +DA:157,6 +DA:161,7 +DA:162,7 DA:164,33 DA:166,31 DA:167,19 @@ -19639,27 +19687,27 @@ DA:208,1 DA:211,1 DA:212,1 DA:215,1 -DA:216,542 -DA:224,540 +DA:216,715 +DA:224,713 DA:228,1 -DA:229,544 -DA:230,544 -DA:231,544 +DA:229,717 +DA:230,717 +DA:231,717 DA:234,1 -DA:235,7 -DA:236,7 +DA:235,4 +DA:236,4 DA:243,1 -DA:244,4854 -DA:245,4854 +DA:244,5037 +DA:245,5037 DA:247,1 -DA:250,5029 -DA:252,5029 -DA:253,9632 +DA:250,5224 +DA:252,5224 +DA:253,10010 DA:254,0 -DA:256,5226 -DA:257,541 -DA:258,14 -DA:266,5031 +DA:256,5509 +DA:257,714 +DA:258,11 +DA:266,5226 DA:268,1 DA:270,1 DA:272,1 @@ -19667,53 +19715,53 @@ DA:277,2 DA:278,1 LF:97 LH:92 -BRDA:44,0,0,5036 -BRDA:44,0,1,5031 -BRDA:44,0,2,5029 -BRDA:89,1,0,497 +BRDA:44,0,0,5231 +BRDA:44,0,1,5226 +BRDA:44,0,2,5224 +BRDA:89,1,0,594 BRDA:89,1,1,15 BRDA:89,1,2,0 BRDA:89,1,3,0 BRDA:102,2,0,0 -BRDA:102,2,1,11258 -BRDA:102,3,0,11258 -BRDA:102,3,1,11258 -BRDA:107,4,0,4819 -BRDA:107,4,1,49 +BRDA:102,2,1,12047 +BRDA:102,3,0,12047 +BRDA:102,3,1,12047 +BRDA:107,4,0,5008 +BRDA:107,4,1,41 BRDA:107,4,2,7 BRDA:107,4,3,1 -BRDA:107,4,4,542 +BRDA:107,4,4,715 BRDA:107,4,5,1 -BRDA:109,5,0,4817 +BRDA:109,5,0,5006 BRDA:109,5,1,2 -BRDA:109,6,0,4819 -BRDA:109,6,1,4818 -BRDA:138,7,0,16 +BRDA:109,6,0,5008 +BRDA:109,6,1,5007 +BRDA:138,7,0,8 BRDA:138,7,1,33 -BRDA:138,8,0,49 -BRDA:138,8,1,8 -BRDA:138,8,2,41 +BRDA:138,8,0,41 +BRDA:138,8,1,4 +BRDA:138,8,2,37 BRDA:139,9,0,1 -BRDA:139,9,1,15 -BRDA:139,10,0,16 -BRDA:139,10,1,8 -BRDA:139,10,2,7 +BRDA:139,9,1,7 +BRDA:139,10,0,8 +BRDA:139,10,1,4 +BRDA:139,10,2,4 BRDA:141,11,0,0 BRDA:141,11,1,1 BRDA:141,12,0,1 BRDA:141,12,1,1 -BRDA:144,13,0,15 +BRDA:144,13,0,7 BRDA:144,13,1,0 BRDA:145,14,0,0 -BRDA:145,14,1,15 -BRDA:145,15,0,15 -BRDA:145,15,1,15 -BRDA:151,16,0,12 -BRDA:151,16,1,3 -BRDA:152,17,0,15 -BRDA:152,17,1,15 -BRDA:152,17,2,13 -BRDA:152,17,3,5 +BRDA:145,14,1,7 +BRDA:145,15,0,7 +BRDA:145,15,1,7 +BRDA:151,16,0,6 +BRDA:151,16,1,1 +BRDA:152,17,0,7 +BRDA:152,17,1,7 +BRDA:152,17,2,7 +BRDA:152,17,3,1 BRDA:164,18,0,31 BRDA:164,18,1,2 BRDA:164,19,0,33 @@ -19743,17 +19791,17 @@ BRDA:191,29,0,1 BRDA:191,29,1,3 BRDA:207,30,0,1 BRDA:207,30,1,0 -BRDA:216,31,0,540 +BRDA:216,31,0,713 BRDA:216,31,1,2 -BRDA:218,32,0,542 -BRDA:218,32,1,542 -BRDA:218,32,2,542 -BRDA:218,32,3,542 +BRDA:218,32,0,715 +BRDA:218,32,1,715 +BRDA:218,32,2,715 +BRDA:218,32,3,715 BRDA:235,33,0,0 -BRDA:235,33,1,7 -BRDA:235,34,0,7 -BRDA:235,34,1,7 -BRDA:237,35,0,7 +BRDA:235,33,1,4 +BRDA:235,34,0,4 +BRDA:235,34,1,4 +BRDA:237,35,0,4 BRDA:237,35,1,2 BRDA:237,35,2,2 BRDA:239,36,0,0 @@ -19761,11 +19809,11 @@ BRDA:239,36,1,2 BRDA:239,37,0,2 BRDA:239,37,1,2 BRDA:244,38,0,0 -BRDA:244,38,1,4854 -BRDA:244,39,0,4854 -BRDA:244,39,1,4854 +BRDA:244,38,1,5037 +BRDA:244,39,0,5037 +BRDA:244,39,1,5037 BRDA:267,40,0,2 -BRDA:267,40,1,5029 +BRDA:267,40,1,5224 BRDA:270,41,0,1 BRDA:270,41,1,0 BRDA:274,42,0,1 @@ -19779,8 +19827,8 @@ FN:27,createCorePlugins FN:56,getPluginState FNF:2 FNH:2 -FNDA:5000,createCorePlugins -FNDA:5000,getPluginState +FNDA:5197,createCorePlugins +FNDA:5197,getPluginState DA:1,1 DA:2,1 DA:3,1 @@ -19793,36 +19841,36 @@ DA:9,1 DA:10,1 DA:11,1 DA:27,1 -DA:31,5000 -DA:34,5000 +DA:31,5197 +DA:34,5197 DA:56,1 -DA:57,5000 +DA:57,5197 LF:16 LH:16 -BRDA:31,0,0,5000 -BRDA:31,0,1,4911 -BRDA:35,1,0,5000 -BRDA:35,1,1,4958 -BRDA:36,2,0,5000 -BRDA:36,2,1,5000 -BRDA:37,3,0,5000 -BRDA:37,3,1,5000 -BRDA:40,4,0,5000 -BRDA:40,4,1,5000 -BRDA:41,5,0,5000 -BRDA:41,5,1,5000 -BRDA:42,6,0,5000 -BRDA:42,6,1,4999 -BRDA:43,7,0,5000 -BRDA:43,7,1,4990 -BRDA:44,8,0,5000 -BRDA:44,8,1,5000 -BRDA:45,9,0,5000 -BRDA:45,9,1,5000 -BRDA:46,10,0,5000 -BRDA:46,10,1,5000 -BRDA:47,11,0,5000 -BRDA:47,11,1,5000 +BRDA:31,0,0,5197 +BRDA:31,0,1,5110 +BRDA:35,1,0,5197 +BRDA:35,1,1,5157 +BRDA:36,2,0,5197 +BRDA:36,2,1,5197 +BRDA:37,3,0,5197 +BRDA:37,3,1,5197 +BRDA:40,4,0,5197 +BRDA:40,4,1,5197 +BRDA:41,5,0,5197 +BRDA:41,5,1,5197 +BRDA:42,6,0,5197 +BRDA:42,6,1,5196 +BRDA:43,7,0,5197 +BRDA:43,7,1,5189 +BRDA:44,8,0,5197 +BRDA:44,8,1,5197 +BRDA:45,9,0,5197 +BRDA:45,9,1,5197 +BRDA:46,10,0,5197 +BRDA:46,10,1,5197 +BRDA:47,11,0,5197 +BRDA:47,11,1,5197 BRF:24 BRH:24 end_of_record @@ -20276,16 +20324,16 @@ FNF:12 FNH:12 FNDA:1,(anonymous_0) FNDA:1,(anonymous_1) -FNDA:5143,DarkColorHandlerImpl -FNDA:5215,(anonymous_3) -FNDA:14497,(anonymous_4) -FNDA:4770,(anonymous_5) +FNDA:5338,DarkColorHandlerImpl +FNDA:5498,(anonymous_3) +FNDA:15101,(anonymous_4) +FNDA:4949,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:15849,(anonymous_7) +FNDA:17113,(anonymous_7) FNDA:11,(anonymous_8) FNDA:9,(anonymous_9) -FNDA:537,(anonymous_10) -FNDA:1074,(anonymous_11) +FNDA:871,(anonymous_10) +FNDA:1742,(anonymous_11) DA:2,1 DA:4,1 DA:5,1 @@ -20295,43 +20343,43 @@ DA:8,1 DA:9,1 DA:11,1 DA:25,1 -DA:26,5143 -DA:28,5143 +DA:26,5338 +DA:28,5338 DA:34,1 -DA:35,5215 +DA:35,5498 DA:45,1 -DA:46,14497 -DA:49,14497 -DA:50,14497 -DA:51,14497 -DA:52,14497 -DA:55,14497 +DA:46,15101 +DA:49,15101 +DA:50,15101 +DA:51,15101 +DA:52,15101 +DA:55,15101 DA:56,14 DA:59,14 DA:60,13 DA:62,13 DA:63,13 DA:66,14 -DA:68,14483 -DA:75,4770 -DA:76,4770 -DA:77,4770 +DA:68,15087 +DA:75,4949 +DA:76,4949 +DA:77,4949 DA:87,1 -DA:89,15849 -DA:92,15849 -DA:93,14570 -DA:95,14570 +DA:89,17113 +DA:92,17113 +DA:93,15217 +DA:95,15217 DA:96,10 DA:97,9 DA:98,9 DA:99,9 DA:101,1 -DA:103,14560 +DA:103,15207 DA:107,6 DA:109,6 DA:110,1 -DA:113,14554 -DA:117,15849 +DA:113,15201 +DA:117,17113 DA:124,11 DA:125,11 DA:127,11 @@ -20341,25 +20389,25 @@ DA:131,9 DA:139,6 DA:140,5 DA:144,6 -DA:153,537 -DA:154,537 -DA:155,1074 -DA:161,1074 -DA:162,1074 -DA:164,1074 -DA:165,37 +DA:153,871 +DA:154,871 +DA:155,1742 +DA:161,1742 +DA:162,1742 +DA:164,1742 +DA:165,76 DA:169,1 LF:63 LH:63 BRDA:7,0,0,1 BRDA:7,0,1,1 -BRDA:49,1,0,14497 +BRDA:49,1,0,15101 BRDA:49,1,1,0 -BRDA:51,2,0,14497 -BRDA:51,2,1,14496 +BRDA:51,2,0,15101 +BRDA:51,2,1,15100 BRDA:55,3,0,14 -BRDA:55,3,1,14483 -BRDA:55,4,0,14497 +BRDA:55,3,1,15087 +BRDA:55,4,0,15101 BRDA:55,4,1,15 BRDA:57,5,0,14 BRDA:57,5,1,11 @@ -20367,12 +20415,12 @@ BRDA:59,6,0,13 BRDA:59,6,1,1 BRDA:60,7,0,13 BRDA:60,7,1,9 -BRDA:92,8,0,14570 -BRDA:92,8,1,1279 +BRDA:92,8,0,15217 +BRDA:92,8,1,1896 BRDA:93,9,0,10 -BRDA:93,9,1,14560 +BRDA:93,9,1,15207 BRDA:95,10,0,10 -BRDA:95,10,1,14560 +BRDA:95,10,1,15207 BRDA:96,11,0,9 BRDA:96,11,1,1 BRDA:99,12,0,7 @@ -20380,7 +20428,7 @@ BRDA:99,12,1,2 BRDA:99,13,0,9 BRDA:99,13,1,9 BRDA:103,14,0,6 -BRDA:103,14,1,14554 +BRDA:103,14,1,15201 BRDA:107,15,0,6 BRDA:107,15,1,5 BRDA:109,16,0,1 @@ -20393,12 +20441,12 @@ BRDA:132,18,2,5 BRDA:132,18,3,5 BRDA:139,19,0,5 BRDA:139,19,1,1 -BRDA:156,20,0,1074 -BRDA:156,20,1,1039 -BRDA:164,21,0,37 -BRDA:164,21,1,1037 -BRDA:164,22,0,1074 -BRDA:164,22,1,37 +BRDA:156,20,0,1742 +BRDA:156,20,1,1668 +BRDA:164,21,0,76 +BRDA:164,21,1,1666 +BRDA:164,22,0,1742 +BRDA:164,22,1,76 BRF:48 BRH:47 end_of_record @@ -20409,709 +20457,712 @@ FN:14,Editor FNF:2 FNH:2 FNDA:1,(anonymous_0) -FNDA:4776,Editor +FNDA:4967,Editor DA:1,1 DA:2,1 DA:8,1 -DA:14,4778 -DA:15,4776 +DA:14,4969 +DA:15,4967 DA:17,1 LF:6 LH:6 BRDA:14,0,0,2 -BRDA:14,0,1,4774 -BRDA:15,1,0,4776 -BRDA:15,1,1,4774 +BRDA:14,0,1,4965 +BRDA:15,1,0,4967 +BRDA:15,1,1,4965 BRF:4 BRH:4 end_of_record TN: SF:packages/roosterjs-editor-core/lib/editor/EditorBase.ts -FN:73,(anonymous_0) -FN:84,EditorBase -FN:98,(anonymous_2) -FN:109,(anonymous_3) -FN:124,(anonymous_4) -FN:142,(anonymous_5) -FN:152,(anonymous_6) -FN:169,(anonymous_7) -FN:181,(anonymous_8) -FN:196,(anonymous_9) -FN:200,(anonymous_10) -FN:207,(anonymous_11) -FN:222,(anonymous_12) -FN:243,(anonymous_13) -FN:256,(anonymous_14) -FN:265,(anonymous_15) -FN:277,(anonymous_16) -FN:291,(anonymous_17) -FN:308,(anonymous_18) -FN:317,(anonymous_19) -FN:333,(anonymous_20) -FN:364,(anonymous_21) -FN:382,(anonymous_22) -FN:394,(anonymous_23) -FN:404,(anonymous_24) -FN:413,(anonymous_25) -FN:421,(anonymous_26) -FN:426,(anonymous_27) -FN:440,(anonymous_28) -FN:466,(anonymous_29) -FN:474,(anonymous_30) -FN:493,(anonymous_31) -FN:500,(anonymous_32) -FN:506,(anonymous_33) -FN:509,(anonymous_34) -FN:518,(anonymous_35) -FN:536,(anonymous_36) -FN:556,(anonymous_37) -FN:573,(anonymous_38) -FN:582,(anonymous_39) -FN:598,(anonymous_40) -FN:617,(anonymous_41) -FN:633,(anonymous_42) -FN:640,(anonymous_43) -FN:652,(anonymous_44) -FN:664,(anonymous_45) -FN:672,(anonymous_46) -FN:680,(anonymous_47) -FN:688,(anonymous_48) -FN:700,(anonymous_49) -FN:715,(anonymous_50) -FN:716,(anonymous_51) -FN:730,(anonymous_52) -FN:732,(anonymous_53) -FN:738,(anonymous_54) -FN:748,(anonymous_55) -FN:760,(anonymous_56) -FN:773,(anonymous_57) -FN:799,(anonymous_58) -FN:801,(anonymous_59) -FN:812,(anonymous_60) -FN:814,(anonymous_61) -FN:829,(anonymous_62) -FN:843,(anonymous_63) -FN:853,(anonymous_64) -FN:866,(anonymous_65) -FN:895,(anonymous_66) -FN:903,(anonymous_67) -FN:917,(anonymous_68) -FN:929,(anonymous_69) -FN:937,(anonymous_70) -FN:945,(anonymous_71) -FN:953,(anonymous_72) -FN:965,(anonymous_73) -FN:972,(anonymous_74) -FN:982,(anonymous_75) -FN:992,(anonymous_76) -FN:1014,(anonymous_77) -FN:1022,(anonymous_78) +FN:74,(anonymous_0) +FN:85,EditorBase +FN:99,(anonymous_2) +FN:110,(anonymous_3) +FN:125,(anonymous_4) +FN:143,(anonymous_5) +FN:153,(anonymous_6) +FN:170,(anonymous_7) +FN:182,(anonymous_8) +FN:197,(anonymous_9) +FN:201,(anonymous_10) +FN:208,(anonymous_11) +FN:223,(anonymous_12) +FN:244,(anonymous_13) +FN:257,(anonymous_14) +FN:266,(anonymous_15) +FN:278,(anonymous_16) +FN:292,(anonymous_17) +FN:309,(anonymous_18) +FN:318,(anonymous_19) +FN:334,(anonymous_20) +FN:365,(anonymous_21) +FN:383,(anonymous_22) +FN:395,(anonymous_23) +FN:405,(anonymous_24) +FN:414,(anonymous_25) +FN:422,(anonymous_26) +FN:427,(anonymous_27) +FN:441,(anonymous_28) +FN:467,(anonymous_29) +FN:475,(anonymous_30) +FN:494,(anonymous_31) +FN:501,(anonymous_32) +FN:507,(anonymous_33) +FN:510,(anonymous_34) +FN:519,(anonymous_35) +FN:537,(anonymous_36) +FN:557,(anonymous_37) +FN:574,(anonymous_38) +FN:583,(anonymous_39) +FN:599,(anonymous_40) +FN:618,(anonymous_41) +FN:634,(anonymous_42) +FN:641,(anonymous_43) +FN:653,(anonymous_44) +FN:665,(anonymous_45) +FN:673,(anonymous_46) +FN:681,(anonymous_47) +FN:689,(anonymous_48) +FN:701,(anonymous_49) +FN:716,(anonymous_50) +FN:717,(anonymous_51) +FN:731,(anonymous_52) +FN:733,(anonymous_53) +FN:739,(anonymous_54) +FN:749,(anonymous_55) +FN:761,(anonymous_56) +FN:774,(anonymous_57) +FN:800,(anonymous_58) +FN:802,(anonymous_59) +FN:813,(anonymous_60) +FN:815,(anonymous_61) +FN:830,(anonymous_62) +FN:844,(anonymous_63) +FN:854,(anonymous_64) +FN:867,(anonymous_65) +FN:896,(anonymous_66) +FN:905,(anonymous_67) +FN:918,(anonymous_68) +FN:930,(anonymous_69) +FN:938,(anonymous_70) +FN:946,(anonymous_71) +FN:954,(anonymous_72) +FN:966,(anonymous_73) +FN:973,(anonymous_74) +FN:983,(anonymous_75) +FN:993,(anonymous_76) +FN:1015,(anonymous_77) +FN:1023,(anonymous_78) FNF:79 -FNH:62 +FNH:63 FNDA:1,(anonymous_0) -FNDA:4818,EditorBase -FNDA:53202,(anonymous_2) -FNDA:4769,(anonymous_3) +FNDA:5007,EditorBase +FNDA:55275,(anonymous_2) +FNDA:4948,(anonymous_3) FNDA:13,(anonymous_4) -FNDA:31,(anonymous_5) -FNDA:4,(anonymous_6) +FNDA:43,(anonymous_5) +FNDA:5,(anonymous_6) FNDA:2,(anonymous_7) FNDA:2,(anonymous_8) -FNDA:15,(anonymous_9) -FNDA:466,(anonymous_10) -FNDA:10807,(anonymous_11) -FNDA:63,(anonymous_12) +FNDA:39,(anonymous_9) +FNDA:487,(anonymous_10) +FNDA:11558,(anonymous_11) +FNDA:90,(anonymous_12) FNDA:0,(anonymous_13) FNDA:0,(anonymous_14) -FNDA:133,(anonymous_15) -FNDA:5162,(anonymous_16) -FNDA:3,(anonymous_17) -FNDA:5,(anonymous_18) +FNDA:197,(anonymous_15) +FNDA:5427,(anonymous_16) +FNDA:9,(anonymous_17) +FNDA:11,(anonymous_18) FNDA:0,(anonymous_19) -FNDA:6,(anonymous_20) -FNDA:6,(anonymous_21) -FNDA:529,(anonymous_22) -FNDA:550,(anonymous_23) +FNDA:5,(anonymous_20) +FNDA:5,(anonymous_21) +FNDA:236,(anonymous_22) +FNDA:723,(anonymous_23) FNDA:0,(anonymous_24) FNDA:0,(anonymous_25) -FNDA:287,(anonymous_26) -FNDA:5304,(anonymous_27) -FNDA:237,(anonymous_28) -FNDA:529,(anonymous_29) -FNDA:529,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:96,(anonymous_32) -FNDA:77,(anonymous_33) -FNDA:116,(anonymous_34) -FNDA:9670,(anonymous_35) -FNDA:9713,(anonymous_36) +FNDA:399,(anonymous_26) +FNDA:5585,(anonymous_27) +FNDA:234,(anonymous_28) +FNDA:609,(anonymous_29) +FNDA:609,(anonymous_30) +FNDA:6,(anonymous_31) +FNDA:116,(anonymous_32) +FNDA:97,(anonymous_33) +FNDA:136,(anonymous_34) +FNDA:10048,(anonymous_35) +FNDA:10073,(anonymous_36) FNDA:17,(anonymous_37) FNDA:0,(anonymous_38) FNDA:0,(anonymous_39) -FNDA:5054,(anonymous_40) -FNDA:4816,(anonymous_41) -FNDA:10222,(anonymous_42) +FNDA:5354,(anonymous_40) +FNDA:5005,(anonymous_41) +FNDA:20658,(anonymous_42) FNDA:0,(anonymous_43) -FNDA:67,(anonymous_44) -FNDA:11219,(anonymous_45) -FNDA:16,(anonymous_46) +FNDA:55,(anonymous_44) +FNDA:12016,(anonymous_45) +FNDA:34,(anonymous_46) FNDA:37,(anonymous_47) -FNDA:22,(anonymous_48) +FNDA:93,(anonymous_48) FNDA:0,(anonymous_49) -FNDA:54,(anonymous_50) -FNDA:53,(anonymous_51) +FNDA:58,(anonymous_50) +FNDA:57,(anonymous_51) FNDA:9,(anonymous_52) FNDA:9,(anonymous_53) FNDA:0,(anonymous_54) FNDA:17,(anonymous_55) FNDA:0,(anonymous_56) FNDA:0,(anonymous_57) -FNDA:137,(anonymous_58) -FNDA:223,(anonymous_59) -FNDA:72,(anonymous_60) -FNDA:110,(anonymous_61) +FNDA:131,(anonymous_58) +FNDA:214,(anonymous_59) +FNDA:68,(anonymous_60) +FNDA:104,(anonymous_61) FNDA:7,(anonymous_62) FNDA:14,(anonymous_63) -FNDA:4816,(anonymous_64) +FNDA:5005,(anonymous_64) FNDA:0,(anonymous_65) -FNDA:77,(anonymous_66) +FNDA:95,(anonymous_66) FNDA:1,(anonymous_67) -FNDA:4836,(anonymous_68) +FNDA:5025,(anonymous_68) FNDA:3,(anonymous_69) FNDA:3,(anonymous_70) FNDA:0,(anonymous_71) -FNDA:11128,(anonymous_72) -FNDA:40,(anonymous_73) +FNDA:11925,(anonymous_72) +FNDA:34,(anonymous_73) FNDA:0,(anonymous_74) FNDA:162,(anonymous_75) FNDA:0,(anonymous_76) FNDA:33,(anonymous_77) -FNDA:101101,(anonymous_78) +FNDA:116490,(anonymous_78) DA:1,1 DA:41,1 -DA:73,1 -DA:75,4818 -DA:84,4818 -DA:90,4818 -DA:91,2 -DA:95,4816 -DA:98,53202 -DA:101,4816 -DA:109,1 -DA:110,4769 -DA:111,4769 -DA:112,52604 -DA:115,4769 -DA:117,4769 -DA:124,1 -DA:125,13 -DA:142,1 -DA:143,31 -DA:144,31 -DA:152,1 -DA:154,4 -DA:155,4 -DA:156,4 -DA:159,0 -DA:169,1 -DA:174,2 -DA:176,2 +DA:74,1 +DA:76,5007 +DA:85,5007 +DA:91,5007 +DA:92,2 +DA:96,5005 +DA:99,55275 +DA:102,5005 +DA:110,1 +DA:111,4948 +DA:112,4948 +DA:113,54573 +DA:116,4948 +DA:118,4948 +DA:125,1 +DA:126,13 +DA:143,1 +DA:144,43 +DA:145,43 +DA:153,1 +DA:155,5 +DA:156,5 +DA:157,5 +DA:160,0 +DA:170,1 +DA:175,2 DA:177,2 -DA:181,2 -DA:185,2 -DA:188,0 -DA:196,1 -DA:197,15 -DA:200,1 -DA:201,466 -DA:202,0 -DA:204,466 -DA:207,1 -DA:209,21545 -DA:215,10807 -DA:216,10807 -DA:217,10807 -DA:218,10807 -DA:220,10807 -DA:221,10807 -DA:222,63 -DA:223,63 -DA:226,10744 -DA:229,63 -DA:243,1 -DA:244,0 -DA:256,1 -DA:257,0 -DA:265,1 -DA:266,250 -DA:268,133 -DA:269,133 -DA:277,5508 -DA:278,5162 -DA:279,5162 -DA:291,1 -DA:292,3 -DA:293,3 -DA:294,3 -DA:298,3 -DA:303,3 -DA:304,0 -DA:307,3 -DA:308,5 -DA:310,3 -DA:317,1 -DA:318,0 +DA:178,2 +DA:182,2 +DA:186,2 +DA:189,0 +DA:197,1 +DA:198,39 +DA:201,1 +DA:202,487 +DA:203,0 +DA:205,487 +DA:208,1 +DA:210,23020 +DA:216,11558 +DA:217,11558 +DA:218,11558 +DA:219,11558 +DA:221,11558 +DA:222,11558 +DA:223,90 +DA:224,90 +DA:227,11468 +DA:230,90 +DA:244,1 +DA:245,0 +DA:257,1 +DA:258,0 +DA:266,1 +DA:267,380 +DA:269,197 +DA:270,197 +DA:278,5849 +DA:279,5427 +DA:280,5427 +DA:292,1 +DA:293,9 +DA:294,9 +DA:295,9 +DA:299,9 +DA:304,9 +DA:305,0 +DA:308,9 +DA:309,11 +DA:311,9 +DA:318,1 DA:319,0 DA:320,0 -DA:322,0 -DA:333,6 -DA:335,10 -DA:336,10 -DA:337,10 -DA:339,6 -DA:340,6 -DA:341,0 -DA:344,6 -DA:346,6 -DA:348,0 -DA:353,6 -DA:354,6 -DA:355,6 -DA:363,6 -DA:364,6 -DA:365,6 -DA:366,6 -DA:382,738 -DA:383,529 -DA:384,529 -DA:394,1 -DA:395,550 -DA:396,550 -DA:404,1 -DA:405,0 +DA:321,0 +DA:323,0 +DA:334,5 +DA:336,8 +DA:337,8 +DA:338,8 +DA:340,5 +DA:341,5 +DA:342,0 +DA:345,5 +DA:347,5 +DA:349,0 +DA:354,5 +DA:355,5 +DA:356,5 +DA:364,5 +DA:365,5 +DA:366,5 +DA:367,5 +DA:383,472 +DA:384,236 +DA:385,236 +DA:395,1 +DA:396,723 +DA:397,723 +DA:405,1 DA:406,0 -DA:413,1 -DA:414,0 +DA:407,0 +DA:414,1 DA:415,0 -DA:421,1 -DA:422,287 -DA:423,287 -DA:426,1 -DA:432,5304 -DA:434,5304 -DA:440,1 -DA:441,237 -DA:442,237 -DA:443,220 -DA:446,17 +DA:416,0 +DA:422,1 +DA:423,399 +DA:424,399 +DA:427,1 +DA:433,5585 +DA:435,5585 +DA:441,1 +DA:442,234 +DA:443,234 +DA:444,217 DA:447,17 -DA:448,7 -DA:451,10 -DA:466,529 -DA:471,529 -DA:473,529 -DA:475,529 -DA:476,108 -DA:477,108 -DA:479,529 -DA:493,1 -DA:494,0 -DA:500,1 -DA:501,192 -DA:503,96 -DA:504,96 -DA:505,96 -DA:506,96 -DA:507,77 -DA:509,96 +DA:448,17 +DA:449,7 +DA:452,10 +DA:467,609 +DA:472,609 +DA:474,609 +DA:476,609 +DA:477,105 +DA:478,105 +DA:480,609 +DA:494,1 +DA:495,6 +DA:501,1 +DA:502,232 +DA:504,116 +DA:505,116 +DA:506,116 +DA:507,116 +DA:508,97 DA:510,116 -DA:518,1 -DA:522,9670 -DA:523,9670 -DA:524,9670 -DA:536,1 -DA:539,9825 -DA:541,9713 -DA:542,9713 -DA:546,9713 -DA:548,9713 -DA:556,1 -DA:557,22 -DA:560,17 -DA:573,1 -DA:574,0 +DA:511,136 +DA:519,1 +DA:523,10048 +DA:524,10048 +DA:525,10048 +DA:537,1 +DA:540,10181 +DA:542,10073 +DA:543,10073 +DA:547,10073 +DA:549,10073 +DA:557,1 +DA:558,22 +DA:561,17 +DA:574,1 DA:575,0 DA:576,0 -DA:582,1 -DA:583,0 +DA:577,0 +DA:583,1 DA:584,0 DA:585,0 -DA:598,1 -DA:604,5054 -DA:605,5054 -DA:617,1 -DA:618,4816 -DA:619,4816 -DA:633,1 -DA:634,10222 -DA:640,1 -DA:641,0 -DA:652,1 -DA:653,67 -DA:654,67 -DA:664,1 -DA:665,11219 -DA:672,1 -DA:673,16 -DA:680,1 -DA:681,37 -DA:688,1 -DA:689,22 -DA:690,22 -DA:700,1 -DA:701,0 -DA:703,0 +DA:586,0 +DA:599,1 +DA:605,5354 +DA:606,5354 +DA:618,1 +DA:619,5005 +DA:620,5005 +DA:634,1 +DA:635,20658 +DA:641,1 +DA:642,0 +DA:653,1 +DA:654,55 +DA:655,55 +DA:665,1 +DA:666,12016 +DA:673,1 +DA:674,34 +DA:681,1 +DA:682,37 +DA:689,1 +DA:690,93 +DA:691,93 +DA:701,1 +DA:702,0 DA:704,0 -DA:715,54 -DA:716,54 -DA:717,53 -DA:718,53 -DA:730,9 +DA:705,0 +DA:716,58 +DA:717,58 +DA:718,57 +DA:719,57 DA:731,9 DA:732,9 DA:733,9 -DA:734,0 -DA:738,9 -DA:739,0 -DA:748,1 -DA:749,17 -DA:750,15 -DA:752,2 -DA:760,1 -DA:761,0 -DA:773,1 -DA:774,0 +DA:734,9 +DA:735,0 +DA:739,9 +DA:740,0 +DA:749,1 +DA:750,17 +DA:751,15 +DA:753,2 +DA:761,1 +DA:762,0 +DA:774,1 DA:775,0 DA:776,0 DA:777,0 -DA:779,0 +DA:778,0 DA:780,0 DA:781,0 -DA:783,0 +DA:782,0 DA:784,0 DA:785,0 -DA:788,0 -DA:792,0 -DA:799,1 -DA:800,137 -DA:801,137 -DA:802,223 -DA:803,223 -DA:804,223 -DA:812,1 -DA:813,72 -DA:814,72 -DA:815,110 -DA:816,110 -DA:817,110 -DA:818,110 -DA:819,110 -DA:820,46 -DA:829,1 -DA:830,7 +DA:786,0 +DA:789,0 +DA:793,0 +DA:800,1 +DA:801,131 +DA:802,131 +DA:803,214 +DA:804,214 +DA:805,214 +DA:813,1 +DA:814,68 +DA:815,68 +DA:816,104 +DA:817,104 +DA:818,104 +DA:819,104 +DA:820,104 +DA:821,46 +DA:830,1 DA:831,7 DA:832,7 -DA:834,7 +DA:833,7 DA:835,7 -DA:843,14 +DA:836,7 DA:844,14 DA:845,14 -DA:853,1 -DA:854,4816 -DA:855,4816 -DA:866,1 -DA:867,0 -DA:869,0 +DA:846,14 +DA:854,1 +DA:855,5005 +DA:856,5005 +DA:867,1 +DA:868,0 DA:870,0 -DA:872,0 -DA:874,0 -DA:886,0 -DA:895,1 -DA:896,77 -DA:903,1 -DA:904,1 +DA:871,0 +DA:873,0 +DA:875,0 +DA:887,0 +DA:896,1 +DA:897,95 DA:905,1 -DA:917,1 -DA:918,4836 -DA:929,1 -DA:930,3 +DA:907,2 +DA:911,1 +DA:912,1 +DA:918,1 +DA:919,5025 +DA:930,1 DA:931,3 -DA:937,1 -DA:938,3 +DA:932,3 +DA:938,1 DA:939,3 -DA:945,1 -DA:946,0 -DA:953,1 -DA:956,11128 -DA:965,1 -DA:966,40 -DA:972,1 -DA:973,0 -DA:982,1 -DA:983,162 -DA:992,1 -DA:993,0 +DA:940,3 +DA:946,1 +DA:947,0 +DA:954,1 +DA:957,11925 +DA:966,1 +DA:967,34 +DA:973,1 +DA:974,0 +DA:983,1 +DA:984,162 +DA:993,1 DA:994,0 DA:995,0 DA:996,0 -DA:998,0 +DA:997,0 DA:999,0 -DA:1014,1 -DA:1015,33 -DA:1022,1 -DA:1023,101101 -DA:1024,0 -DA:1026,101101 -DA:1030,1 -LF:286 -LH:229 -BRDA:90,0,0,2 -BRDA:90,0,1,4816 -BRDA:144,1,0,31 -BRDA:144,1,1,0 -BRDA:144,2,0,22 -BRDA:144,2,1,9 -BRDA:144,3,0,31 -BRDA:144,3,1,31 -BRDA:154,4,0,4 -BRDA:154,4,1,0 -BRDA:154,5,0,4 -BRDA:154,5,1,4 -BRDA:154,5,2,4 -BRDA:176,6,0,2 -BRDA:176,6,1,0 -BRDA:176,7,0,2 -BRDA:176,7,1,2 -BRDA:179,8,0,0 -BRDA:179,8,1,2 -BRDA:181,9,0,0 -BRDA:181,9,1,2 -BRDA:181,10,0,2 -BRDA:181,10,1,2 -BRDA:201,11,0,0 -BRDA:201,11,1,466 -BRDA:209,12,0,10738 -BRDA:209,12,1,69 -BRDA:217,13,0,6 -BRDA:217,13,1,10801 -BRDA:218,14,0,6 -BRDA:218,14,1,10801 -BRDA:220,15,0,10744 -BRDA:220,15,1,63 -BRDA:221,16,0,63 -BRDA:221,16,1,10744 -BRDA:266,17,0,117 -BRDA:266,17,1,16 -BRDA:277,18,0,346 -BRDA:277,18,1,4816 -BRDA:292,19,0,3 -BRDA:292,19,1,0 -BRDA:297,20,0,0 -BRDA:297,20,1,3 -BRDA:294,21,0,3 -BRDA:294,21,1,3 -BRDA:298,22,0,3 -BRDA:298,22,1,0 -BRDA:298,23,0,0 -BRDA:298,23,1,3 -BRDA:298,24,0,3 -BRDA:298,24,1,3 -BRDA:303,25,0,0 -BRDA:303,25,1,3 -BRDA:303,26,0,3 -BRDA:303,26,1,3 -BRDA:303,26,2,0 -BRDA:319,27,0,0 -BRDA:319,27,1,0 -BRDA:319,28,0,0 -BRDA:319,28,1,0 -BRDA:335,29,0,4 -BRDA:335,29,1,2 -BRDA:336,30,0,4 -BRDA:336,30,1,2 -BRDA:337,31,0,4 -BRDA:337,31,1,2 -BRDA:340,32,0,0 -BRDA:340,32,1,6 -BRDA:344,33,0,6 -BRDA:344,33,1,0 -BRDA:354,34,0,6 -BRDA:354,34,1,6 -BRDA:363,35,0,6 -BRDA:363,35,1,0 -BRDA:382,36,0,209 -BRDA:382,36,1,320 -BRDA:406,37,0,0 -BRDA:406,37,1,0 -BRDA:441,38,0,0 -BRDA:441,38,1,237 -BRDA:441,39,0,237 -BRDA:441,39,1,237 -BRDA:442,40,0,220 -BRDA:442,40,1,17 -BRDA:442,41,0,237 -BRDA:442,41,1,237 -BRDA:442,42,0,0 -BRDA:442,42,1,237 -BRDA:442,43,0,237 -BRDA:442,43,1,237 -BRDA:447,44,0,7 -BRDA:447,44,1,10 -BRDA:471,45,0,421 -BRDA:471,45,1,108 -BRDA:483,46,0,460 -BRDA:483,46,1,69 -BRDA:474,47,0,529 -BRDA:474,47,1,470 -BRDA:474,48,0,32 -BRDA:474,48,1,497 -BRDA:474,49,0,529 -BRDA:474,49,1,529 -BRDA:475,50,0,108 -BRDA:475,50,1,421 -BRDA:477,51,0,10 -BRDA:477,51,1,98 -BRDA:477,52,0,108 -BRDA:477,52,1,98 -BRDA:480,53,0,529 -BRDA:480,53,1,519 -BRDA:501,54,0,96 -BRDA:501,54,1,0 -BRDA:507,55,0,77 -BRDA:507,55,1,0 -BRDA:522,56,0,0 -BRDA:522,56,1,9670 -BRDA:539,57,0,112 -BRDA:539,57,1,9601 -BRDA:557,58,0,5 -BRDA:557,58,1,12 -BRDA:607,59,0,194 -BRDA:607,59,1,4860 -BRDA:607,60,0,5054 -BRDA:607,60,1,5054 -BRDA:608,61,0,183 -BRDA:608,61,1,4871 -BRDA:608,62,0,5054 -BRDA:608,62,1,5054 -BRDA:609,63,0,38 -BRDA:609,63,1,5016 -BRDA:609,64,0,5054 -BRDA:609,64,1,5054 -BRDA:620,65,0,4816 -BRDA:620,65,1,4816 -BRDA:654,66,0,67 -BRDA:654,66,1,28 -BRDA:655,67,0,27 -BRDA:655,67,1,1 -BRDA:673,68,0,16 -BRDA:673,68,1,0 -BRDA:673,69,0,16 -BRDA:673,69,1,16 -BRDA:689,70,0,22 -BRDA:689,70,1,0 -BRDA:689,71,0,22 -BRDA:689,71,1,22 -BRDA:689,72,0,12 -BRDA:689,72,1,10 -BRDA:689,73,0,22 -BRDA:689,73,1,22 -BRDA:691,74,0,22 -BRDA:691,74,1,0 -BRDA:701,75,0,0 -BRDA:701,75,1,0 -BRDA:705,76,0,0 -BRDA:705,76,1,0 -BRDA:716,77,0,43 -BRDA:716,77,1,11 -BRDA:716,78,0,54 -BRDA:716,78,1,54 -BRDA:719,79,0,53 -BRDA:719,79,1,53 -BRDA:731,80,0,9 -BRDA:731,80,1,0 -BRDA:733,81,0,0 -BRDA:733,81,1,9 -BRDA:733,82,0,9 -BRDA:733,82,1,0 -BRDA:749,83,0,15 -BRDA:749,83,1,2 -BRDA:774,84,0,0 -BRDA:774,84,1,0 -BRDA:779,85,0,0 -BRDA:779,85,1,0 -BRDA:779,86,0,0 -BRDA:779,86,1,0 -BRDA:780,87,0,0 -BRDA:780,87,1,0 -BRDA:780,88,0,0 -BRDA:780,88,1,0 -BRDA:781,89,0,0 -BRDA:781,89,1,0 -BRDA:781,90,0,0 -BRDA:781,90,1,0 -BRDA:783,91,0,0 -BRDA:783,91,1,0 -BRDA:801,92,0,0 -BRDA:801,92,1,137 -BRDA:801,93,0,137 -BRDA:801,93,1,137 -BRDA:802,94,0,223 -BRDA:802,94,1,127 -BRDA:814,95,0,0 -BRDA:814,95,1,72 -BRDA:814,96,0,72 -BRDA:814,96,1,72 -BRDA:816,97,0,110 -BRDA:816,97,1,0 -BRDA:816,98,0,110 -BRDA:816,98,1,110 -BRDA:816,99,0,0 -BRDA:816,99,1,110 -BRDA:816,100,0,110 -BRDA:816,100,1,110 -BRDA:817,101,0,110 -BRDA:817,101,1,0 -BRDA:819,102,0,46 -BRDA:819,102,1,64 -BRDA:830,103,0,7 -BRDA:830,103,1,0 -BRDA:832,104,0,7 -BRDA:832,104,1,0 -BRDA:832,105,0,7 -BRDA:832,105,1,7 -BRDA:832,106,0,7 -BRDA:832,106,1,7 -BRDA:835,107,0,7 -BRDA:835,107,1,0 -BRDA:835,108,0,7 -BRDA:835,108,1,7 -BRDA:843,109,0,0 -BRDA:843,109,1,14 -BRDA:869,110,0,0 -BRDA:869,110,1,0 -BRDA:880,111,0,0 -BRDA:880,111,1,0 -BRDA:887,112,0,0 -BRDA:887,112,1,0 -BRDA:994,113,0,0 -BRDA:994,113,1,0 -BRDA:994,114,0,0 -BRDA:994,114,1,0 -BRDA:998,115,0,0 -BRDA:998,115,1,0 -BRDA:1023,116,0,0 -BRDA:1023,116,1,101101 -BRF:236 +DA:1000,0 +DA:1015,1 +DA:1016,33 +DA:1023,1 +DA:1024,116490 +DA:1025,0 +DA:1027,116490 +DA:1031,1 +LF:287 +LH:231 +BRDA:91,0,0,2 +BRDA:91,0,1,5005 +BRDA:145,1,0,43 +BRDA:145,1,1,0 +BRDA:145,2,0,30 +BRDA:145,2,1,13 +BRDA:145,3,0,43 +BRDA:145,3,1,43 +BRDA:155,4,0,5 +BRDA:155,4,1,0 +BRDA:155,5,0,5 +BRDA:155,5,1,5 +BRDA:155,5,2,5 +BRDA:177,6,0,2 +BRDA:177,6,1,0 +BRDA:177,7,0,2 +BRDA:177,7,1,2 +BRDA:180,8,0,0 +BRDA:180,8,1,2 +BRDA:182,9,0,0 +BRDA:182,9,1,2 +BRDA:182,10,0,2 +BRDA:182,10,1,2 +BRDA:202,11,0,0 +BRDA:202,11,1,487 +BRDA:210,12,0,11462 +BRDA:210,12,1,96 +BRDA:218,13,0,6 +BRDA:218,13,1,11552 +BRDA:219,14,0,6 +BRDA:219,14,1,11552 +BRDA:221,15,0,11468 +BRDA:221,15,1,90 +BRDA:222,16,0,90 +BRDA:222,16,1,11468 +BRDA:267,17,0,183 +BRDA:267,17,1,14 +BRDA:278,18,0,422 +BRDA:278,18,1,5005 +BRDA:293,19,0,9 +BRDA:293,19,1,0 +BRDA:298,20,0,0 +BRDA:298,20,1,9 +BRDA:295,21,0,9 +BRDA:295,21,1,9 +BRDA:299,22,0,9 +BRDA:299,22,1,0 +BRDA:299,23,0,0 +BRDA:299,23,1,9 +BRDA:299,24,0,9 +BRDA:299,24,1,9 +BRDA:304,25,0,0 +BRDA:304,25,1,9 +BRDA:304,26,0,9 +BRDA:304,26,1,9 +BRDA:304,26,2,0 +BRDA:320,27,0,0 +BRDA:320,27,1,0 +BRDA:320,28,0,0 +BRDA:320,28,1,0 +BRDA:336,29,0,3 +BRDA:336,29,1,2 +BRDA:337,30,0,3 +BRDA:337,30,1,2 +BRDA:338,31,0,3 +BRDA:338,31,1,2 +BRDA:341,32,0,0 +BRDA:341,32,1,5 +BRDA:345,33,0,5 +BRDA:345,33,1,0 +BRDA:355,34,0,5 +BRDA:355,34,1,5 +BRDA:364,35,0,5 +BRDA:364,35,1,0 +BRDA:383,36,0,236 +BRDA:383,36,1,0 +BRDA:407,37,0,0 +BRDA:407,37,1,0 +BRDA:442,38,0,0 +BRDA:442,38,1,234 +BRDA:442,39,0,234 +BRDA:442,39,1,234 +BRDA:443,40,0,217 +BRDA:443,40,1,17 +BRDA:443,41,0,234 +BRDA:443,41,1,234 +BRDA:443,42,0,0 +BRDA:443,42,1,234 +BRDA:443,43,0,234 +BRDA:443,43,1,234 +BRDA:448,44,0,7 +BRDA:448,44,1,10 +BRDA:472,45,0,504 +BRDA:472,45,1,105 +BRDA:484,46,0,460 +BRDA:484,46,1,149 +BRDA:475,47,0,609 +BRDA:475,47,1,470 +BRDA:475,48,0,32 +BRDA:475,48,1,577 +BRDA:475,49,0,609 +BRDA:475,49,1,609 +BRDA:476,50,0,105 +BRDA:476,50,1,504 +BRDA:478,51,0,10 +BRDA:478,51,1,95 +BRDA:478,52,0,105 +BRDA:478,52,1,95 +BRDA:481,53,0,609 +BRDA:481,53,1,599 +BRDA:502,54,0,116 +BRDA:502,54,1,0 +BRDA:508,55,0,97 +BRDA:508,55,1,0 +BRDA:523,56,0,0 +BRDA:523,56,1,10048 +BRDA:540,57,0,108 +BRDA:540,57,1,9965 +BRDA:558,58,0,5 +BRDA:558,58,1,12 +BRDA:608,59,0,305 +BRDA:608,59,1,5049 +BRDA:608,60,0,5354 +BRDA:608,60,1,5354 +BRDA:609,61,0,280 +BRDA:609,61,1,5074 +BRDA:609,62,0,5354 +BRDA:609,62,1,5354 +BRDA:610,63,0,34 +BRDA:610,63,1,5320 +BRDA:610,64,0,5354 +BRDA:610,64,1,5354 +BRDA:621,65,0,5005 +BRDA:621,65,1,5005 +BRDA:655,66,0,55 +BRDA:655,66,1,24 +BRDA:656,67,0,23 +BRDA:656,67,1,1 +BRDA:674,68,0,34 +BRDA:674,68,1,0 +BRDA:674,69,0,34 +BRDA:674,69,1,34 +BRDA:690,70,0,93 +BRDA:690,70,1,0 +BRDA:690,71,0,93 +BRDA:690,71,1,93 +BRDA:690,72,0,63 +BRDA:690,72,1,30 +BRDA:690,73,0,93 +BRDA:690,73,1,93 +BRDA:692,74,0,93 +BRDA:692,74,1,0 +BRDA:702,75,0,0 +BRDA:702,75,1,0 +BRDA:706,76,0,0 +BRDA:706,76,1,0 +BRDA:717,77,0,47 +BRDA:717,77,1,11 +BRDA:717,78,0,58 +BRDA:717,78,1,58 +BRDA:720,79,0,57 +BRDA:720,79,1,57 +BRDA:732,80,0,9 +BRDA:732,80,1,0 +BRDA:734,81,0,0 +BRDA:734,81,1,9 +BRDA:734,82,0,9 +BRDA:734,82,1,0 +BRDA:750,83,0,15 +BRDA:750,83,1,2 +BRDA:775,84,0,0 +BRDA:775,84,1,0 +BRDA:780,85,0,0 +BRDA:780,85,1,0 +BRDA:780,86,0,0 +BRDA:780,86,1,0 +BRDA:781,87,0,0 +BRDA:781,87,1,0 +BRDA:781,88,0,0 +BRDA:781,88,1,0 +BRDA:782,89,0,0 +BRDA:782,89,1,0 +BRDA:782,90,0,0 +BRDA:782,90,1,0 +BRDA:784,91,0,0 +BRDA:784,91,1,0 +BRDA:802,92,0,0 +BRDA:802,92,1,131 +BRDA:802,93,0,131 +BRDA:802,93,1,131 +BRDA:803,94,0,214 +BRDA:803,94,1,127 +BRDA:815,95,0,0 +BRDA:815,95,1,68 +BRDA:815,96,0,68 +BRDA:815,96,1,68 +BRDA:817,97,0,104 +BRDA:817,97,1,0 +BRDA:817,98,0,104 +BRDA:817,98,1,104 +BRDA:817,99,0,0 +BRDA:817,99,1,104 +BRDA:817,100,0,104 +BRDA:817,100,1,104 +BRDA:818,101,0,104 +BRDA:818,101,1,0 +BRDA:820,102,0,46 +BRDA:820,102,1,58 +BRDA:831,103,0,7 +BRDA:831,103,1,0 +BRDA:833,104,0,7 +BRDA:833,104,1,0 +BRDA:833,105,0,7 +BRDA:833,105,1,7 +BRDA:833,106,0,7 +BRDA:833,106,1,7 +BRDA:836,107,0,7 +BRDA:836,107,1,0 +BRDA:836,108,0,7 +BRDA:836,108,1,7 +BRDA:844,109,0,0 +BRDA:844,109,1,14 +BRDA:870,110,0,0 +BRDA:870,110,1,0 +BRDA:881,111,0,0 +BRDA:881,111,1,0 +BRDA:888,112,0,0 +BRDA:888,112,1,0 +BRDA:907,113,0,1 +BRDA:907,113,1,0 +BRDA:995,114,0,0 +BRDA:995,114,1,0 +BRDA:995,115,0,0 +BRDA:995,115,1,0 +BRDA:999,116,0,0 +BRDA:999,116,1,0 +BRDA:1024,117,0,0 +BRDA:1024,117,1,116490 +BRF:238 BRH:162 end_of_record TN: @@ -21124,56 +21175,56 @@ FN:49,(anonymous_4) FN:51,(anonymous_5) FNF:6 FNH:5 -FNDA:4816,(anonymous_0) -FNDA:62608,(anonymous_1) +FNDA:5005,(anonymous_0) +FNDA:65065,(anonymous_1) FNDA:33,(anonymous_2) -FNDA:58018,(anonymous_3) -FNDA:390,(anonymous_4) +FNDA:60280,(anonymous_3) +FNDA:462,(anonymous_4) FNDA:0,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:12,1 -DA:13,4816 -DA:14,4816 -DA:16,4816 -DA:17,62608 -DA:18,4816 -DA:19,4791 -DA:22,57792 -DA:26,4816 -DA:27,4816 -DA:29,4816 +DA:13,5005 +DA:14,5005 +DA:16,5005 +DA:17,65065 +DA:18,5005 +DA:19,4976 +DA:22,60060 +DA:26,5005 +DA:27,5005 +DA:29,5005 DA:31,33 DA:33,33 -DA:40,4816 -DA:47,58018 -DA:49,390 +DA:40,5005 +DA:47,60280 +DA:49,462 DA:51,0 -DA:57,4816 +DA:57,5005 LF:22 LH:21 -BRDA:17,0,0,4816 -BRDA:17,0,1,57792 -BRDA:18,1,0,4791 -BRDA:18,1,1,25 +BRDA:17,0,0,5005 +BRDA:17,0,1,60060 +BRDA:18,1,0,4976 +BRDA:18,1,1,29 BRDA:27,2,0,0 -BRDA:27,2,1,4816 +BRDA:27,2,1,5005 BRDA:27,3,0,0 -BRDA:27,3,1,4816 -BRDA:27,4,0,4816 -BRDA:27,4,1,4816 -BRDA:29,5,0,4816 -BRDA:29,5,1,4816 +BRDA:27,3,1,5005 +BRDA:27,4,0,5005 +BRDA:27,4,1,5005 +BRDA:29,5,0,5005 +BRDA:29,5,1,5005 BRDA:35,6,0,33 BRDA:35,6,1,0 -BRDA:44,7,0,4816 -BRDA:44,7,1,4815 -BRDA:49,8,0,4816 -BRDA:49,8,1,4816 -BRDA:51,9,0,4816 -BRDA:51,9,1,4816 +BRDA:44,7,0,5005 +BRDA:44,7,1,5004 +BRDA:49,8,0,5005 +BRDA:49,8,1,5005 +BRDA:51,9,0,5005 +BRDA:51,9,1,5005 BRF:20 BRH:17 end_of_record @@ -21182,12 +21233,12 @@ SF:packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts FN:10,isFeatureEnabled FNF:1 FNH:1 -FNDA:11219,isFeatureEnabled +FNDA:12012,isFeatureEnabled DA:10,1 -DA:14,11219 +DA:14,12012 LF:2 LH:2 -BRDA:14,0,0,11219 +BRDA:14,0,0,12012 BRDA:14,0,1,36 BRF:2 BRH:2 @@ -21327,65 +21378,65 @@ FN:153,(anonymous_129) FN:154,(anonymous_130) FN:156,(anonymous_131) FNF:132 -FNH:104 -FNDA:5006,(anonymous_0) -FNDA:4835,(anonymous_1) -FNDA:193,(anonymous_2) -FNDA:123,(anonymous_3) +FNH:106 +FNDA:5224,(anonymous_0) +FNDA:5024,(anonymous_1) +FNDA:264,(anonymous_2) +FNDA:127,(anonymous_3) FNDA:31,(anonymous_4) FNDA:0,(anonymous_5) FNDA:0,(anonymous_6) -FNDA:685,(anonymous_7) +FNDA:567,(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:2,(anonymous_15) FNDA:0,(anonymous_16) FNDA:3,(anonymous_17) FNDA:11,(anonymous_18) -FNDA:48,(anonymous_19) -FNDA:48,(anonymous_20) -FNDA:48,(anonymous_21) -FNDA:19632,(anonymous_22) +FNDA:44,(anonymous_19) +FNDA:44,(anonymous_20) +FNDA:44,(anonymous_21) +FNDA:20387,(anonymous_22) FNDA:0,(anonymous_23) -FNDA:4817,(anonymous_24) +FNDA:5006,(anonymous_24) FNDA:19,(anonymous_25) FNDA:29,(anonymous_26) -FNDA:11561,(anonymous_27) -FNDA:6003,(anonymous_28) +FNDA:13187,(anonymous_27) +FNDA:6293,(anonymous_28) FNDA:0,(anonymous_29) FNDA:12,(anonymous_30) -FNDA:171,(anonymous_31) +FNDA:222,(anonymous_31) FNDA:1,(anonymous_32) FNDA:100,(anonymous_33) -FNDA:8055,(anonymous_34) -FNDA:229,(anonymous_35) +FNDA:8274,(anonymous_34) +FNDA:373,(anonymous_35) FNDA:38,(anonymous_36) -FNDA:26,(anonymous_37) +FNDA:35,(anonymous_37) FNDA:70,(anonymous_38) -FNDA:10809,(anonymous_39) +FNDA:11579,(anonymous_39) FNDA:12,(anonymous_40) -FNDA:16,(anonymous_41) -FNDA:245,(anonymous_42) -FNDA:77,(anonymous_43) -FNDA:29,(anonymous_44) +FNDA:20,(anonymous_41) +FNDA:316,(anonymous_42) +FNDA:112,(anonymous_43) +FNDA:53,(anonymous_44) FNDA:32,(anonymous_45) -FNDA:189,(anonymous_46) +FNDA:221,(anonymous_46) FNDA:0,(anonymous_47) FNDA:3,(anonymous_48) FNDA:11,(anonymous_49) -FNDA:12451,(anonymous_50) +FNDA:13291,(anonymous_50) FNDA:6,(anonymous_51) FNDA:0,(anonymous_52) -FNDA:9697,(anonymous_53) -FNDA:526,(anonymous_54) -FNDA:5099,(anonymous_55) +FNDA:10114,(anonymous_53) +FNDA:413,(anonymous_54) +FNDA:5288,(anonymous_55) FNDA:0,(anonymous_56) -FNDA:313,(anonymous_57) +FNDA:289,(anonymous_57) FNDA:33,(anonymous_58) FNDA:0,(anonymous_59) FNDA:115,(anonymous_60) @@ -21393,127 +21444,127 @@ FNDA:160,(anonymous_61) FNDA:94,(anonymous_62) FNDA:2,(anonymous_63) FNDA:0,(anonymous_64) -FNDA:14,(anonymous_65) -FNDA:93,(anonymous_66) -FNDA:0,(anonymous_67) +FNDA:25,(anonymous_65) +FNDA:113,(anonymous_66) +FNDA:3,(anonymous_67) FNDA:0,(anonymous_68) FNDA:1,(anonymous_69) FNDA:1,(anonymous_70) -FNDA:78,(anonymous_71) -FNDA:44,(anonymous_72) -FNDA:37,(anonymous_73) -FNDA:50,(anonymous_74) +FNDA:98,(anonymous_71) +FNDA:64,(anonymous_72) +FNDA:57,(anonymous_73) +FNDA:63,(anonymous_74) FNDA:0,(anonymous_75) FNDA:0,(anonymous_76) -FNDA:10893,(anonymous_77) -FNDA:807,(anonymous_78) +FNDA:11627,(anonymous_77) +FNDA:957,(anonymous_78) FNDA:0,(anonymous_79) -FNDA:1,(anonymous_80) -FNDA:5162,(anonymous_81) +FNDA:7,(anonymous_80) +FNDA:5471,(anonymous_81) FNDA:3,(anonymous_82) FNDA:0,(anonymous_83) FNDA:4,(anonymous_84) -FNDA:395,(anonymous_85) -FNDA:795,(anonymous_86) +FNDA:471,(anonymous_85) +FNDA:920,(anonymous_86) FNDA:0,(anonymous_87) -FNDA:5226,(anonymous_88) -FNDA:9632,(anonymous_89) +FNDA:5509,(anonymous_88) +FNDA:10010,(anonymous_89) FNDA:0,(anonymous_90) -FNDA:541,(anonymous_91) +FNDA:714,(anonymous_91) FNDA:0,(anonymous_92) FNDA:0,(anonymous_93) -FNDA:5029,(anonymous_94) -FNDA:14,(anonymous_95) +FNDA:5224,(anonymous_94) +FNDA:11,(anonymous_95) FNDA:47,(anonymous_96) FNDA:0,(anonymous_97) -FNDA:77,(anonymous_98) -FNDA:370,(anonymous_99) -FNDA:138,(anonymous_100) -FNDA:5710,(anonymous_101) -FNDA:5583,(anonymous_102) +FNDA:73,(anonymous_98) +FNDA:346,(anonymous_99) +FNDA:139,(anonymous_100) +FNDA:5980,(anonymous_101) +FNDA:6010,(anonymous_102) FNDA:0,(anonymous_103) FNDA:4,(anonymous_104) -FNDA:404,(anonymous_105) -FNDA:777,(anonymous_106) +FNDA:480,(anonymous_105) +FNDA:905,(anonymous_106) FNDA:7,(anonymous_107) FNDA:4,(anonymous_108) FNDA:54,(anonymous_109) -FNDA:29,(anonymous_110) -FNDA:179,(anonymous_111) +FNDA:25,(anonymous_110) +FNDA:163,(anonymous_111) FNDA:5,(anonymous_112) FNDA:742,(anonymous_113) FNDA:145,(anonymous_114) -FNDA:10878,(anonymous_115) -FNDA:20,(anonymous_116) +FNDA:11430,(anonymous_115) +FNDA:36,(anonymous_116) FNDA:0,(anonymous_117) FNDA:0,(anonymous_118) -FNDA:616,(anonymous_119) +FNDA:609,(anonymous_119) FNDA:6,(anonymous_120) FNDA:3,(anonymous_121) FNDA:2,(anonymous_122) FNDA:0,(anonymous_123) FNDA:5,(anonymous_124) -FNDA:96,(anonymous_125) -FNDA:29,(anonymous_126) -FNDA:17,(anonymous_127) -FNDA:4911,(anonymous_128) -FNDA:37988,(anonymous_129) -FNDA:837,(anonymous_130) -FNDA:38,(anonymous_131) -DA:1,5007 -DA:2,4836 -DA:4,194 -DA:5,124 +FNDA:75,(anonymous_125) +FNDA:19,(anonymous_126) +FNDA:6,(anonymous_127) +FNDA:5091,(anonymous_128) +FNDA:39104,(anonymous_129) +FNDA:1138,(anonymous_130) +FNDA:33,(anonymous_131) +DA:1,5225 +DA:2,5025 +DA:4,265 +DA:5,128 DA:7,1 DA:8,32 DA:9,1 DA:10,1 -DA:12,686 +DA:12,568 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,3 DA:23,1 DA:24,4 DA:25,12 -DA:26,49 -DA:27,49 -DA:28,49 -DA:30,19633 -DA:31,4818 +DA:26,45 +DA:27,45 +DA:28,45 +DA:30,20388 +DA:31,5007 DA:32,20 DA:33,30 -DA:34,11562 -DA:35,6004 +DA:34,13188 +DA:35,6294 DA:36,1 -DA:37,172 +DA:37,223 DA:38,1 DA:39,2 DA:40,101 -DA:43,8056 -DA:44,230 +DA:43,8275 +DA:44,374 DA:45,39 -DA:46,27 +DA:46,36 DA:47,71 -DA:48,10810 -DA:49,17 -DA:50,246 -DA:51,78 -DA:52,33 -DA:53,190 +DA:48,11580 +DA:49,21 +DA:50,317 +DA:51,113 +DA:52,54 +DA:53,222 DA:54,4 DA:55,12 -DA:56,12452 +DA:56,13292 DA:57,7 DA:58,1 -DA:59,9698 -DA:60,527 -DA:61,5100 -DA:62,314 +DA:59,10115 +DA:60,414 +DA:61,5289 +DA:62,290 DA:63,34 DA:64,1 DA:65,116 @@ -21521,75 +21572,75 @@ DA:67,161 DA:68,95 DA:70,3 DA:71,1 -DA:72,15 -DA:73,94 -DA:74,1 +DA:72,26 +DA:73,114 +DA:74,4 DA:75,1 DA:76,2 DA:77,2 -DA:79,79 -DA:80,45 -DA:81,38 -DA:82,51 +DA:79,99 +DA:80,65 +DA:81,58 +DA:82,64 DA:83,1 DA:84,1 -DA:86,10894 -DA:87,808 +DA:86,11628 +DA:87,958 DA:88,1 -DA:89,2 -DA:90,5163 +DA:89,8 +DA:90,5472 DA:91,4 DA:92,1 DA:93,1 DA:94,5 -DA:95,396 -DA:97,796 -DA:99,5227 -DA:100,9633 +DA:95,472 +DA:97,921 +DA:99,5510 +DA:100,10011 DA:101,1 DA:102,1 -DA:103,542 +DA:103,715 DA:105,1 DA:106,1 DA:107,1 -DA:109,5030 -DA:110,15 +DA:109,5225 +DA:110,12 DA:112,48 DA:113,1 -DA:114,78 -DA:115,371 -DA:117,139 -DA:118,5711 -DA:119,5584 +DA:114,74 +DA:115,347 +DA:117,140 +DA:118,5981 +DA:119,6011 DA:120,1 DA:121,1 DA:122,5 -DA:123,405 -DA:126,778 +DA:123,481 +DA:126,906 DA:127,8 DA:128,5 DA:129,55 -DA:130,30 -DA:132,180 +DA:130,26 +DA:132,164 DA:133,6 DA:134,743 DA:135,146 -DA:136,10879 -DA:138,21 +DA:136,11431 +DA:138,37 DA:139,1 DA:140,1 -DA:142,617 +DA:142,610 DA:143,1 DA:144,7 DA:145,4 DA:146,3 DA:147,1 DA:148,6 -DA:150,97 -DA:152,4912 -DA:153,37989 -DA:154,838 -DA:156,39 +DA:150,76 +DA:152,5092 +DA:153,39105 +DA:154,1139 +DA:156,34 LF:130 LH:130 BRF:0 @@ -21609,30 +21660,30 @@ FN:64,(anonymous_8) FNF:9 FNH:9 FNDA:1,(anonymous_0) -FNDA:930,NodeBlockElement -FNDA:36,(anonymous_2) -FNDA:652,(anonymous_3) -FNDA:556,(anonymous_4) -FNDA:229,(anonymous_5) -FNDA:208,(anonymous_6) -FNDA:566,(anonymous_7) +FNDA:1238,NodeBlockElement +FNDA:37,(anonymous_2) +FNDA:830,(anonymous_3) +FNDA:764,(anonymous_4) +FNDA:295,(anonymous_5) +FNDA:288,(anonymous_6) +FNDA:983,(anonymous_7) FNDA:9,(anonymous_8) DA:1,1 DA:2,1 DA:10,1 -DA:11,930 +DA:11,1238 DA:18,1 -DA:19,36 +DA:19,37 DA:26,1 -DA:27,652 +DA:27,830 DA:34,1 -DA:35,556 +DA:35,764 DA:41,1 -DA:43,229 +DA:43,295 DA:49,1 -DA:51,208 +DA:51,288 DA:57,1 -DA:58,566 +DA:58,983 DA:64,1 DA:65,9 DA:67,1 @@ -21662,14 +21713,14 @@ FN:107,(anonymous_9) FNF:10 FNH:9 FNDA:1,(anonymous_0) -FNDA:826,StartEndBlockElement -FNDA:1651,(anonymous_2) +FNDA:864,StartEndBlockElement +FNDA:1997,(anonymous_2) FNDA:21,(anonymous_3) -FNDA:224,(anonymous_4) -FNDA:236,(anonymous_5) -FNDA:50,(anonymous_6) -FNDA:57,(anonymous_7) -FNDA:1093,(anonymous_8) +FNDA:255,(anonymous_4) +FNDA:276,(anonymous_5) +FNDA:80,(anonymous_6) +FNDA:80,(anonymous_7) +FNDA:1136,(anonymous_8) FNDA:0,(anonymous_9) DA:1,1 DA:2,1 @@ -21681,12 +21732,12 @@ DA:7,1 DA:9,1 DA:11,1 DA:22,1 -DA:23,826 +DA:23,864 DA:25,1 -DA:26,1651 -DA:27,1651 -DA:28,2187 -DA:30,1651 +DA:26,1997 +DA:27,1997 +DA:28,2694 +DA:30,1997 DA:38,1 DA:39,21 DA:40,21 @@ -21698,23 +21749,23 @@ DA:52,18 DA:54,0 DA:57,21 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,1093 +DA:97,1136 DA:107,1 DA:108,0 DA:109,0 DA:111,1 LF:40 LH:37 -BRDA:27,0,0,3838 -BRDA:27,0,1,3838 +BRDA:27,0,0,4691 +BRDA:27,0,1,4691 BRDA:41,1,0,21 BRDA:41,1,1,0 BRDA:45,2,0,39 @@ -21727,12 +21778,12 @@ BRDA:58,4,0,13 BRDA:58,4,1,8 BRDA:57,5,0,21 BRDA:57,5,1,20 -BRDA:81,6,0,50 +BRDA:81,6,0,80 BRDA:81,6,1,18 -BRDA:98,7,0,1093 -BRDA:98,7,1,882 -BRDA:98,7,2,775 -BRDA:98,7,3,162 +BRDA:98,7,0,1136 +BRDA:98,7,1,918 +BRDA:98,7,2,800 +BRDA:98,7,3,165 BRDA:109,8,0,0 BRDA:109,8,1,0 BRF:22 @@ -21744,8 +21795,8 @@ FN:34,getBlockElementAtNode FN:111,findHeadTailLeafNode FNF:2 FNH:2 -FNDA:6966,getBlockElementAtNode -FNDA:3050,findHeadTailLeafNode +FNDA:7574,getBlockElementAtNode +FNDA:3658,findHeadTailLeafNode DA:1,1 DA:2,1 DA:3,1 @@ -21753,100 +21804,100 @@ DA:4,1 DA:5,1 DA:6,1 DA:34,1 -DA:38,6966 -DA:39,5357 -DA:45,1609 -DA:46,1609 +DA:38,7574 +DA:39,5619 +DA:45,1955 +DA:46,1955 DA:47,0 -DA:48,1609 -DA:49,84 -DA:53,1525 -DA:54,1525 -DA:56,1525 +DA:48,1955 +DA:49,126 +DA:53,1829 +DA:54,1829 +DA:56,1829 DA:57,0 -DA:65,1525 -DA:67,1525 +DA:65,1829 +DA:67,1829 DA:68,0 -DA:71,1525 -DA:72,1525 -DA:74,1525 +DA:71,1829 +DA:72,1829 +DA:74,1829 DA:76,1 -DA:79,1524 -DA:80,1524 -DA:81,1524 -DA:83,1408 -DA:85,729 -DA:87,1408 -DA:88,116 -DA:90,116 +DA:79,1828 +DA:80,1883 +DA:81,1883 +DA:83,1691 +DA:85,995 +DA:87,1691 +DA:88,192 +DA:90,192 DA:92,0 -DA:97,1524 -DA:112,3050 -DA:114,3050 -DA:115,97 -DA:118,2953 -DA:119,4032 -DA:120,4032 -DA:121,5235 -DA:122,5235 -DA:123,2810 -DA:127,1222 -DA:128,2455 -DA:129,59 -DA:130,2396 -DA:131,84 -DA:134,2312 -DA:135,2312 -DA:138,1079 +DA:97,1828 +DA:112,3658 +DA:114,3658 +DA:115,104 +DA:118,3554 +DA:119,4920 +DA:120,4920 +DA:121,6466 +DA:122,6466 +DA:123,3372 +DA:127,1548 +DA:128,3044 +DA:129,87 +DA:130,2957 +DA:131,95 +DA:134,2862 +DA:135,2862 +DA:138,1366 DA:140,0 LF:53 LH:48 -BRDA:38,0,0,5357 -BRDA:38,0,1,1609 +BRDA:38,0,0,5619 +BRDA:38,0,1,1955 BRDA:46,1,0,0 -BRDA:46,1,1,1609 -BRDA:48,2,0,84 -BRDA:48,2,1,1525 +BRDA:46,1,1,1955 +BRDA:48,2,0,126 +BRDA:48,2,1,1829 BRDA:56,3,0,0 -BRDA:56,3,1,1525 -BRDA:56,4,0,1525 -BRDA:56,4,1,1525 +BRDA:56,3,1,1829 +BRDA:56,4,0,1829 +BRDA:56,4,1,1829 BRDA:67,5,0,0 -BRDA:67,5,1,1525 +BRDA:67,5,1,1829 BRDA:74,6,0,1 -BRDA:74,6,1,1524 -BRDA:79,7,0,1640 -BRDA:79,7,1,1573 -BRDA:81,8,0,1408 -BRDA:81,8,1,116 -BRDA:83,9,0,729 -BRDA:83,9,1,679 -BRDA:88,10,0,116 +BRDA:74,6,1,1828 +BRDA:79,7,0,2020 +BRDA:79,7,1,1939 +BRDA:81,8,0,1691 +BRDA:81,8,1,192 +BRDA:83,9,0,995 +BRDA:83,9,1,696 +BRDA:88,10,0,192 BRDA:88,10,1,0 -BRDA:88,11,0,116 -BRDA:88,11,1,116 -BRDA:98,12,0,729 -BRDA:98,12,1,795 -BRDA:97,13,0,1524 -BRDA:97,13,1,1151 -BRDA:114,14,0,97 -BRDA:114,14,1,2953 -BRDA:114,15,0,3050 -BRDA:114,15,1,194 -BRDA:120,16,0,6457 -BRDA:120,16,1,6457 -BRDA:120,17,0,3101 -BRDA:120,17,1,3356 -BRDA:122,18,0,2810 -BRDA:122,18,1,2425 -BRDA:128,19,0,59 -BRDA:128,19,1,2396 -BRDA:130,20,0,84 -BRDA:130,20,1,2312 -BRDA:131,21,0,42 -BRDA:131,21,1,42 -BRDA:135,22,0,1077 -BRDA:135,22,1,1235 +BRDA:88,11,0,192 +BRDA:88,11,1,192 +BRDA:98,12,0,995 +BRDA:98,12,1,833 +BRDA:97,13,0,1828 +BRDA:97,13,1,1437 +BRDA:114,14,0,104 +BRDA:114,14,1,3554 +BRDA:114,15,0,3658 +BRDA:114,15,1,208 +BRDA:120,16,0,8014 +BRDA:120,16,1,8014 +BRDA:120,17,0,3931 +BRDA:120,17,1,4083 +BRDA:122,18,0,3372 +BRDA:122,18,1,3094 +BRDA:128,19,0,87 +BRDA:128,19,1,2957 +BRDA:130,20,0,95 +BRDA:130,20,1,2862 +BRDA:131,21,0,52 +BRDA:131,21,1,43 +BRDA:135,22,0,1407 +BRDA:135,22,1,1455 BRF:46 BRH:42 end_of_record @@ -21855,24 +21906,24 @@ SF:packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts FN:10,getFirstLastBlockElement FNF:1 FNH:1 -FNDA:4907,getFirstLastBlockElement +FNDA:5096,getFirstLastBlockElement DA:1,1 DA:10,1 -DA:14,4907 -DA:15,4907 -DA:16,5004 -DA:18,4907 +DA:14,5096 +DA:15,5096 +DA:16,5193 +DA:18,5096 LF:6 LH:6 -BRDA:17,0,0,5004 +BRDA:17,0,0,5193 BRDA:17,0,1,185 -BRDA:16,1,0,5004 -BRDA:16,1,1,5003 +BRDA:16,1,0,5193 +BRDA:16,1,1,5192 BRDA:16,2,0,171 -BRDA:16,2,1,4832 -BRDA:18,3,0,4907 +BRDA:16,2,1,5021 +BRDA:18,3,0,5096 BRDA:18,3,1,88 -BRDA:18,3,2,4819 +BRDA:18,3,2,5008 BRF:9 BRH:9 end_of_record @@ -22139,23 +22190,23 @@ SF:packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts FN:10,getPasteType FNF:1 FNH:1 -FNDA:48,getPasteType +FNDA:44,getPasteType DA:10,1 -DA:15,48 +DA:15,44 DA:16,11 -DA:17,37 +DA:17,33 DA:18,0 -DA:19,37 -DA:20,3 -DA:22,34 +DA:19,33 +DA:20,2 +DA:22,31 LF:8 LH:7 BRDA:15,0,0,11 -BRDA:15,0,1,37 +BRDA:15,0,1,33 BRDA:17,1,0,0 -BRDA:17,1,1,37 -BRDA:19,2,0,3 -BRDA:19,2,1,34 +BRDA:17,1,1,33 +BRDA:19,2,0,2 +BRDA:19,2,1,31 BRF:6 BRH:5 end_of_record @@ -22246,96 +22297,96 @@ FN:68,(anonymous_4) FN:73,processStyles FNF:6 FNH:6 -FNDA:48,retrieveMetadataFromClipboard -FNDA:30,(anonymous_1) -FNDA:38,(anonymous_2) -FNDA:12,(anonymous_3) +FNDA:44,retrieveMetadataFromClipboard +FNDA:14,(anonymous_1) +FNDA:20,(anonymous_2) +FNDA:8,(anonymous_3) FNDA:3,(anonymous_4) -FNDA:49,processStyles +FNDA:40,processStyles DA:1,1 DA:2,1 DA:5,1 DA:6,1 DA:14,1 -DA:19,96 -DA:20,48 -DA:21,48 -DA:22,36 -DA:23,36 -DA:24,30 -DA:25,30 -DA:27,36 -DA:28,38 -DA:29,38 -DA:32,36 -DA:33,36 -DA:35,36 -DA:36,126 -DA:37,126 -DA:38,64 -DA:39,64 -DA:40,36 -DA:43,90 -DA:44,90 -DA:45,74 -DA:50,36 -DA:51,12 -DA:52,12 -DA:55,36 -DA:56,36 -DA:58,36 -DA:59,13 -DA:60,13 -DA:61,13 -DA:62,13 -DA:68,13 -DA:74,49 +DA:19,88 +DA:20,44 +DA:21,44 +DA:22,31 +DA:23,31 +DA:24,14 +DA:25,14 +DA:27,31 +DA:28,20 +DA:29,20 +DA:32,31 +DA:33,31 +DA:35,31 +DA:36,94 +DA:37,94 +DA:38,46 +DA:39,46 +DA:40,18 +DA:43,76 +DA:44,76 +DA:45,64 +DA:50,31 +DA:51,8 +DA:52,8 +DA:55,31 +DA:56,31 +DA:58,31 +DA:59,9 +DA:60,9 +DA:61,9 +DA:62,9 +DA:68,9 +DA:74,40 LF:38 LH:38 -BRDA:21,0,0,36 -BRDA:21,0,1,12 -BRDA:21,1,0,48 -BRDA:21,1,1,36 +BRDA:21,0,0,31 +BRDA:21,0,1,13 +BRDA:21,1,0,44 +BRDA:21,1,1,31 BRDA:21,2,0,0 -BRDA:21,2,1,36 -BRDA:21,3,0,36 -BRDA:21,3,1,36 +BRDA:21,2,1,31 +BRDA:21,3,0,31 +BRDA:21,3,1,31 BRDA:22,4,0,0 -BRDA:22,4,1,36 -BRDA:22,5,0,36 -BRDA:22,5,1,36 -BRDA:23,6,0,36 +BRDA:22,4,1,31 +BRDA:22,5,0,31 +BRDA:22,5,1,31 +BRDA:23,6,0,31 BRDA:23,6,1,0 BRDA:33,7,0,0 -BRDA:33,7,1,36 -BRDA:33,8,0,36 -BRDA:33,8,1,36 +BRDA:33,7,1,31 +BRDA:33,8,0,31 +BRDA:33,8,1,31 BRDA:35,9,0,0 -BRDA:35,9,1,162 -BRDA:35,10,0,162 -BRDA:35,10,1,162 +BRDA:35,9,1,125 +BRDA:35,10,0,125 +BRDA:35,10,1,125 BRDA:36,11,0,0 -BRDA:36,11,1,126 -BRDA:36,12,0,126 -BRDA:36,12,1,126 -BRDA:37,13,0,64 -BRDA:37,13,1,62 +BRDA:36,11,1,94 +BRDA:36,12,0,94 +BRDA:36,12,1,94 +BRDA:37,13,0,46 +BRDA:37,13,1,48 BRDA:38,14,0,0 -BRDA:38,14,1,64 -BRDA:38,15,0,64 -BRDA:38,15,1,64 -BRDA:39,16,0,36 +BRDA:38,14,1,46 +BRDA:38,15,0,46 +BRDA:38,15,1,46 +BRDA:39,16,0,18 BRDA:39,16,1,28 -BRDA:44,17,0,74 -BRDA:44,17,1,16 +BRDA:44,17,0,64 +BRDA:44,17,1,12 BRDA:51,18,0,0 -BRDA:51,18,1,12 -BRDA:51,19,0,12 -BRDA:51,19,1,12 -BRDA:58,20,0,13 -BRDA:58,20,1,23 -BRDA:58,21,0,36 -BRDA:58,21,1,13 +BRDA:51,18,1,8 +BRDA:51,19,0,8 +BRDA:51,19,1,8 +BRDA:58,20,0,9 +BRDA:58,20,1,22 +BRDA:58,21,0,31 +BRDA:58,21,1,9 BRDA:68,22,0,0 BRDA:68,22,1,3 BRDA:68,23,0,3 @@ -22348,18 +22399,18 @@ SF:packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts FN:10,sanitizePasteContent FNF:1 FNH:1 -FNDA:48,sanitizePasteContent +FNDA:44,sanitizePasteContent DA:1,1 DA:2,1 DA:10,1 -DA:14,48 -DA:15,48 -DA:16,48 -DA:17,48 +DA:14,44 +DA:15,44 +DA:16,44 +DA:17,44 LF:7 LH:7 -BRDA:17,0,0,6 -BRDA:17,0,1,42 +BRDA:17,0,0,5 +BRDA:17,0,1,39 BRF:2 BRH:2 end_of_record @@ -22374,36 +22425,36 @@ FN:53,(anonymous_5) FNF:6 FNH:6 FNDA:1,(anonymous_0) -FNDA:447,BodyScoper +FNDA:452,BodyScoper FNDA:64,(anonymous_2) -FNDA:383,(anonymous_3) +FNDA:388,(anonymous_3) FNDA:27,(anonymous_4) -FNDA:172,(anonymous_5) +FNDA:178,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:7,1 DA:13,1 -DA:21,447 -DA:22,447 +DA:21,452 +DA:22,452 DA:28,1 DA:29,64 DA:37,1 -DA:38,383 +DA:38,388 DA:46,1 DA:47,27 DA:53,1 -DA:54,172 +DA:54,178 DA:56,1 LF:17 LH:17 BRDA:22,0,0,108 -BRDA:22,0,1,339 +BRDA:22,0,1,344 BRDA:30,1,0,0 BRDA:30,1,1,64 BRDA:39,2,0,108 -BRDA:39,2,1,275 +BRDA:39,2,1,280 BRF:6 BRH:5 end_of_record @@ -22426,19 +22477,19 @@ FN:207,getNextPreviousInlineElement FNF:14 FNH:14 FNDA:1,(anonymous_0) -FNDA:728,ContentTraverser -FNDA:447,(anonymous_2) -FNDA:133,(anonymous_3) -FNDA:148,(anonymous_4) -FNDA:382,(anonymous_5) -FNDA:216,(anonymous_6) +FNDA:852,ContentTraverser +FNDA:452,(anonymous_2) +FNDA:224,(anonymous_3) +FNDA:176,(anonymous_4) +FNDA:475,(anonymous_5) +FNDA:277,(anonymous_6) FNDA:40,(anonymous_7) -FNDA:256,(anonymous_8) -FNDA:1671,(anonymous_9) -FNDA:407,(anonymous_10) -FNDA:320,(anonymous_11) -FNDA:727,(anonymous_12) -FNDA:618,getNextPreviousInlineElement +FNDA:317,(anonymous_8) +FNDA:1913,(anonymous_9) +FNDA:528,(anonymous_10) +FNDA:343,(anonymous_11) +FNDA:871,(anonymous_12) +FNDA:756,getNextPreviousInlineElement DA:1,1 DA:2,1 DA:3,1 @@ -22449,120 +22500,120 @@ DA:7,1 DA:9,1 DA:10,1 DA:26,1 -DA:27,728 -DA:28,728 -DA:35,728 +DA:27,852 +DA:28,852 +DA:35,852 DA:43,1 -DA:48,447 +DA:48,452 DA:57,1 -DA:62,133 +DA:62,224 DA:73,1 -DA:76,290 -DA:79,148 +DA:76,346 +DA:79,176 DA:85,1 -DA:87,382 -DA:88,168 -DA:91,382 +DA:87,475 +DA:88,200 +DA:91,475 DA:97,1 -DA:98,216 +DA:98,277 DA:104,1 DA:105,40 DA:108,1 -DA:109,256 -DA:111,256 +DA:109,317 +DA:111,317 DA:112,0 -DA:115,256 -DA:121,256 -DA:128,256 -DA:133,100 -DA:134,100 -DA:137,156 +DA:115,317 +DA:121,317 +DA:128,317 +DA:133,133 +DA:134,133 +DA:137,184 DA:143,1 -DA:145,1671 -DA:146,560 -DA:149,1671 +DA:145,1913 +DA:146,652 +DA:149,1913 DA:155,1 -DA:156,407 +DA:156,528 DA:162,1 -DA:163,320 +DA:163,343 DA:166,1 -DA:167,727 -DA:170,727 -DA:171,11 -DA:174,716 -DA:175,98 -DA:180,98 +DA:167,871 +DA:170,871 +DA:171,13 +DA:174,858 +DA:175,102 +DA:180,102 DA:181,0 -DA:184,618 -DA:185,618 -DA:198,716 -DA:199,282 -DA:200,282 -DA:203,434 +DA:184,756 +DA:185,756 +DA:198,858 +DA:199,354 +DA:200,354 +DA:203,504 DA:205,1 -DA:212,618 +DA:212,756 DA:213,0 -DA:215,618 -DA:217,26 -DA:219,26 -DA:220,14 -DA:225,604 -DA:226,604 -DA:227,604 +DA:215,756 +DA:217,30 +DA:219,30 +DA:220,16 +DA:225,740 +DA:226,740 +DA:227,740 LF:70 LH:67 -BRDA:76,0,0,142 +BRDA:76,0,0,170 BRDA:76,0,1,6 -BRDA:87,1,0,168 -BRDA:87,1,1,214 +BRDA:87,1,0,200 +BRDA:87,1,1,275 BRDA:111,2,0,0 -BRDA:111,2,1,256 -BRDA:117,3,0,216 +BRDA:111,2,1,317 +BRDA:117,3,0,277 BRDA:117,3,1,40 -BRDA:121,4,0,150 -BRDA:121,4,1,106 -BRDA:128,5,0,100 -BRDA:128,5,1,156 -BRDA:129,6,0,256 -BRDA:129,6,1,150 -BRDA:129,6,2,100 -BRDA:129,6,3,99 +BRDA:121,4,0,192 +BRDA:121,4,1,125 +BRDA:128,5,0,133 +BRDA:128,5,1,184 +BRDA:129,6,0,317 +BRDA:129,6,1,192 +BRDA:129,6,2,133 +BRDA:129,6,3,132 BRDA:129,6,4,1 BRDA:129,6,5,1 -BRDA:145,7,0,560 -BRDA:145,7,1,1111 -BRDA:149,8,0,111 -BRDA:149,8,1,1560 -BRDA:167,9,0,727 -BRDA:167,9,1,109 -BRDA:170,10,0,11 -BRDA:170,10,1,716 -BRDA:174,11,0,98 -BRDA:174,11,1,618 +BRDA:145,7,0,652 +BRDA:145,7,1,1261 +BRDA:149,8,0,118 +BRDA:149,8,1,1795 +BRDA:167,9,0,871 +BRDA:167,9,1,115 +BRDA:170,10,0,13 +BRDA:170,10,1,858 +BRDA:174,11,0,102 +BRDA:174,11,1,756 BRDA:180,12,0,0 -BRDA:180,12,1,98 -BRDA:180,13,0,98 +BRDA:180,12,1,102 +BRDA:180,13,0,102 BRDA:180,13,1,86 -BRDA:189,14,0,213 -BRDA:189,14,1,405 -BRDA:186,15,0,618 -BRDA:186,15,1,213 -BRDA:186,15,2,213 -BRDA:186,15,3,120 -BRDA:186,15,4,93 -BRDA:186,15,5,93 -BRDA:198,16,0,282 -BRDA:198,16,1,434 -BRDA:198,17,0,716 -BRDA:198,17,1,299 +BRDA:189,14,0,299 +BRDA:189,14,1,457 +BRDA:186,15,0,756 +BRDA:186,15,1,299 +BRDA:186,15,2,299 +BRDA:186,15,3,199 +BRDA:186,15,4,100 +BRDA:186,15,5,100 +BRDA:198,16,0,354 +BRDA:198,16,1,504 +BRDA:198,17,0,858 +BRDA:198,17,1,385 BRDA:212,18,0,0 -BRDA:212,18,1,618 -BRDA:215,19,0,26 -BRDA:215,19,1,592 +BRDA:212,18,1,756 +BRDA:215,19,0,30 +BRDA:215,19,1,726 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:49 end_of_record @@ -22585,48 +22636,48 @@ FN:184,(anonymous_13) FNF:14 FNH:13 FNDA:1,(anonymous_0) -FNDA:143,PositionContentSearcher +FNDA:159,PositionContentSearcher FNDA:26,(anonymous_2) FNDA:21,(anonymous_3) -FNDA:24,(anonymous_4) -FNDA:20,(anonymous_5) -FNDA:12,(anonymous_6) -FNDA:5,(anonymous_7) +FNDA:36,(anonymous_4) +FNDA:32,(anonymous_5) +FNDA:16,(anonymous_6) +FNDA:7,(anonymous_7) FNDA:49,(anonymous_8) FNDA:48,(anonymous_9) FNDA:60,(anonymous_10) FNDA:51,(anonymous_11) FNDA:0,(anonymous_12) -FNDA:165,(anonymous_13) +FNDA:181,(anonymous_13) DA:1,1 DA:2,1 DA:15,1 DA:20,1 -DA:22,143 -DA:25,143 -DA:28,143 -DA:31,143 -DA:34,143 -DA:37,143 -DA:40,143 -DA:43,143 -DA:50,143 +DA:22,159 +DA:25,159 +DA:28,159 +DA:31,159 +DA:34,159 +DA:37,159 +DA:40,159 +DA:43,159 +DA:50,159 DA:57,26 DA:58,26 DA:59,26 DA:62,26 DA:69,1 -DA:70,24 -DA:71,24 -DA:74,24 +DA:70,36 +DA:71,36 +DA:74,36 DA:81,1 -DA:82,20 -DA:83,20 -DA:89,20 -DA:100,12 -DA:101,12 -DA:102,8 -DA:105,12 +DA:82,32 +DA:83,32 +DA:89,32 +DA:100,16 +DA:101,16 +DA:102,12 +DA:105,16 DA:114,1 DA:115,49 DA:116,1 @@ -22656,28 +22707,28 @@ DA:174,51 DA:175,51 DA:178,51 DA:184,1 -DA:185,165 -DA:188,165 +DA:185,181 +DA:188,181 DA:189,3 -DA:192,162 -DA:193,162 -DA:194,197 -DA:196,197 -DA:197,87 -DA:200,87 -DA:203,87 -DA:204,87 +DA:192,178 +DA:193,178 +DA:194,220 +DA:196,220 +DA:197,94 +DA:200,94 +DA:203,94 +DA:204,94 DA:205,12 -DA:209,87 -DA:210,87 -DA:213,87 +DA:209,94 +DA:210,94 +DA:213,94 DA:214,52 -DA:217,110 -DA:218,110 -DA:219,110 -DA:221,104 -DA:227,110 -DA:230,35 +DA:217,126 +DA:218,126 +DA:219,126 +DA:221,120 +DA:227,126 +DA:230,42 DA:233,1 LF:81 LH:78 @@ -22685,11 +22736,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,24 +BRDA:70,2,0,36 BRDA:70,2,1,0 -BRDA:82,3,0,20 +BRDA:82,3,0,32 BRDA:82,3,1,0 -BRDA:101,4,0,8 +BRDA:101,4,0,12 BRDA:101,4,1,4 BRDA:115,5,0,1 BRDA:115,5,1,48 @@ -22714,29 +22765,29 @@ BRDA:164,14,0,56 BRDA:164,14,1,4 BRDA:174,15,0,51 BRDA:174,15,1,0 -BRDA:186,16,0,165 -BRDA:186,16,1,122 +BRDA:186,16,0,181 +BRDA:186,16,1,138 BRDA:188,17,0,3 -BRDA:188,17,1,162 -BRDA:188,18,0,165 -BRDA:188,18,1,165 -BRDA:194,19,0,197 -BRDA:194,19,1,122 -BRDA:196,20,0,87 -BRDA:196,20,1,110 -BRDA:196,21,0,197 -BRDA:196,21,1,90 -BRDA:200,22,0,87 +BRDA:188,17,1,178 +BRDA:188,18,0,181 +BRDA:188,18,1,181 +BRDA:194,19,0,220 +BRDA:194,19,1,138 +BRDA:196,20,0,94 +BRDA:196,20,1,126 +BRDA:196,21,0,220 +BRDA:196,21,1,97 +BRDA:200,22,0,94 BRDA:200,22,1,0 BRDA:204,23,0,12 -BRDA:204,23,1,75 -BRDA:204,24,0,87 +BRDA:204,23,1,82 +BRDA:204,24,0,94 BRDA:204,24,1,12 BRDA:213,25,0,52 -BRDA:213,25,1,35 -BRDA:213,26,0,87 -BRDA:213,26,1,82 -BRDA:219,27,0,104 +BRDA:213,25,1,42 +BRDA:213,26,0,94 +BRDA:213,26,1,84 +BRDA:219,27,0,120 BRDA:219,27,1,6 BRF:57 BRH:45 @@ -22753,11 +22804,11 @@ FN:107,getFirstLastInlineElementFromBlockElement FNF:7 FNH:7 FNDA:1,(anonymous_0) -FNDA:161,SelectionBlockScoper +FNDA:189,SelectionBlockScoper FNDA:7,(anonymous_2) -FNDA:150,(anonymous_3) +FNDA:178,(anonymous_3) FNDA:3,(anonymous_4) -FNDA:96,(anonymous_5) +FNDA:103,(anonymous_5) FNDA:5,getFirstLastInlineElementFromBlockElement DA:1,1 DA:2,1 @@ -22768,25 +22819,25 @@ DA:6,1 DA:9,1 DA:10,1 DA:23,1 -DA:34,161 -DA:36,161 -DA:38,161 +DA:34,189 +DA:36,189 +DA:38,189 DA:39,19 -DA:42,161 -DA:43,161 +DA:42,189 +DA:43,189 DA:49,1 DA:50,7 DA:59,1 -DA:60,150 -DA:61,139 +DA:60,178 +DA:61,163 DA:65,5 -DA:71,134 -DA:72,134 -DA:78,11 +DA:71,158 +DA:72,158 +DA:78,15 DA:85,1 DA:86,3 DA:95,1 -DA:96,96 +DA:96,103 DA:100,1 DA:111,5 DA:112,1 @@ -22795,26 +22846,26 @@ DA:115,4 LF:33 LH:33 BRDA:38,0,0,19 -BRDA:38,0,1,142 -BRDA:60,1,0,139 -BRDA:60,1,1,11 +BRDA:38,0,1,170 +BRDA:60,1,0,163 +BRDA:60,1,1,15 BRDA:62,2,0,3 BRDA:62,2,1,5 BRDA:62,2,2,5 -BRDA:62,2,3,134 -BRDA:73,3,0,23 -BRDA:73,3,1,111 -BRDA:72,4,0,134 -BRDA:72,4,1,23 +BRDA:62,2,3,158 +BRDA:73,3,0,40 +BRDA:73,3,1,118 +BRDA:72,4,0,158 +BRDA:72,4,1,40 BRDA:86,5,0,3 BRDA:86,5,1,0 BRDA:86,6,0,3 BRDA:86,6,1,3 -BRDA:97,7,0,91 +BRDA:97,7,0,98 BRDA:97,7,1,5 -BRDA:96,8,0,96 -BRDA:96,8,1,96 -BRDA:96,8,2,96 +BRDA:96,8,0,103 +BRDA:96,8,1,103 +BRDA:96,8,2,103 BRDA:111,9,0,1 BRDA:111,9,1,4 BRDA:113,10,0,1 @@ -22835,97 +22886,97 @@ FN:89,(anonymous_5) FNF:6 FNH:6 FNDA:1,(anonymous_0) -FNDA:149,SelectionScoper -FNDA:233,(anonymous_2) -FNDA:35,(anonymous_3) -FNDA:126,(anonymous_4) -FNDA:71,(anonymous_5) +FNDA:240,SelectionScoper +FNDA:307,(anonymous_2) +FNDA:94,(anonymous_3) +FNDA:168,(anonymous_4) +FNDA:203,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:6,1 DA:14,1 -DA:17,149 -DA:18,149 -DA:25,149 -DA:26,149 -DA:27,149 +DA:17,240 +DA:18,240 +DA:25,240 +DA:26,240 +DA:27,240 DA:33,1 -DA:34,233 -DA:35,111 -DA:38,233 +DA:34,307 +DA:35,143 +DA:38,307 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,126 +DA:59,168 DA:60,0 -DA:62,126 -DA:63,126 -DA:64,126 +DA:62,168 +DA:63,168 +DA:64,168 DA:65,8 -DA:67,118 -DA:73,118 -DA:81,126 +DA:67,160 +DA:73,160 +DA:81,168 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,111 -BRDA:34,0,1,122 -BRDA:45,1,0,35 +BRDA:34,0,0,143 +BRDA:34,0,1,164 +BRDA:45,1,0,94 BRDA:45,1,1,0 BRDA:59,2,0,0 -BRDA:59,2,1,126 +BRDA:59,2,1,168 BRDA:64,3,0,8 -BRDA:64,3,1,118 +BRDA:64,3,1,160 BRDA:65,4,0,8 BRDA:65,4,1,8 -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 @@ -22993,24 +23044,24 @@ SF:packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts FN:11,getDelimiterFromElement FNF:1 FNH:1 -FNDA:707,getDelimiterFromElement +FNDA:589,getDelimiterFromElement DA:1,1 DA:4,1 DA:11,1 -DA:12,707 +DA:12,589 DA:13,1 -DA:15,706 +DA:15,588 DA:21,36 -DA:24,670 +DA:24,552 LF:8 LH:8 BRDA:12,0,0,1 -BRDA:12,0,1,706 +BRDA:12,0,1,588 BRDA:15,1,0,36 -BRDA:15,1,1,670 -BRDA:16,2,0,706 -BRDA:16,2,1,190 -BRDA:16,2,2,168 +BRDA:15,1,1,552 +BRDA:16,2,0,588 +BRDA:16,2,1,134 +BRDA:16,2,2,112 BRDA:16,2,3,41 BRF:8 BRH:8 @@ -23030,18 +23081,18 @@ FN:342,adjustInsertPositionBySteps FN:348,(anonymous_10) FN:354,safeRemove FNF:12 -FNH:10 -FNDA:20,adjustInsertPositionForHyperLink -FNDA:0,(anonymous_1) -FNDA:20,adjustInsertPositionForStructuredNode -FNDA:8,(anonymous_3) -FNDA:20,adjustInsertPositionForParagraph -FNDA:20,adjustInsertPositionForVoidElement -FNDA:20,adjustInsertPositionForMoveCursorOutOfALink -FNDA:21,adjustInsertPositionForNotEditableNode -FNDA:20,adjustInsertPositionForTable -FNDA:20,adjustInsertPositionBySteps -FNDA:140,(anonymous_10) +FNH:11 +FNDA:36,adjustInsertPositionForHyperLink +FNDA:2,(anonymous_1) +FNDA:36,adjustInsertPositionForStructuredNode +FNDA:12,(anonymous_3) +FNDA:36,adjustInsertPositionForParagraph +FNDA:36,adjustInsertPositionForVoidElement +FNDA:36,adjustInsertPositionForMoveCursorOutOfALink +FNDA:38,adjustInsertPositionForNotEditableNode +FNDA:36,adjustInsertPositionForTable +FNDA:36,adjustInsertPositionBySteps +FNDA:252,(anonymous_10) FNDA:0,safeRemove DA:1,1 DA:2,1 @@ -23066,15 +23117,15 @@ DA:20,1 DA:21,1 DA:30,1 DA:37,1 -DA:56,20 -DA:58,20 -DA:61,18 -DA:67,0 -DA:70,18 +DA:56,36 +DA:58,36 +DA:61,28 +DA:67,2 +DA:70,28 DA:71,0 DA:72,0 DA:73,0 -DA:78,18 +DA:78,28 DA:83,0 DA:84,0 DA:86,0 @@ -23085,23 +23136,23 @@ DA:99,0 DA:102,0 DA:103,0 DA:104,0 -DA:109,20 -DA:121,20 -DA:122,20 -DA:124,20 -DA:125,6 -DA:126,6 -DA:127,8 -DA:129,6 -DA:132,20 -DA:134,20 -DA:135,20 -DA:136,20 -DA:137,20 -DA:139,20 +DA:109,36 +DA:121,36 +DA:122,36 +DA:124,36 +DA:125,11 +DA:126,11 +DA:127,12 +DA:129,11 +DA:132,36 +DA:134,36 +DA:135,36 +DA:136,36 +DA:137,36 +DA:139,36 DA:140,0 DA:141,0 -DA:144,20 +DA:144,36 DA:149,0 DA:151,0 DA:152,0 @@ -23111,40 +23162,40 @@ DA:157,0 DA:158,0 DA:159,0 DA:160,0 -DA:169,20 +DA:169,36 DA:170,0 DA:176,0 DA:177,0 -DA:180,20 -DA:193,20 +DA:180,36 +DA:193,36 DA:196,0 DA:197,0 DA:198,0 DA:199,0 -DA:203,20 -DA:216,20 +DA:203,36 +DA:216,36 DA:217,0 -DA:222,20 -DA:235,20 -DA:236,20 -DA:237,20 -DA:238,20 -DA:239,20 +DA:222,36 +DA:235,36 +DA:236,32 +DA:237,32 +DA:238,32 +DA:239,32 DA:240,1 -DA:241,19 -DA:242,0 -DA:245,20 -DA:257,21 -DA:258,1 -DA:259,1 -DA:265,1 -DA:266,1 -DA:267,1 -DA:276,1 -DA:277,1 -DA:278,1 -DA:282,20 -DA:294,20 +DA:241,31 +DA:242,2 +DA:245,36 +DA:257,38 +DA:258,2 +DA:259,2 +DA:265,2 +DA:266,2 +DA:267,2 +DA:276,2 +DA:277,2 +DA:278,2 +DA:282,36 +DA:294,36 DA:299,5 DA:301,5 DA:302,5 @@ -23164,33 +23215,33 @@ DA:322,1 DA:323,1 DA:325,1 DA:326,1 -DA:330,20 +DA:330,36 DA:342,1 -DA:348,20 -DA:349,140 -DA:351,20 +DA:348,36 +DA:349,252 +DA:351,36 DA:355,0 LF:127 -LH:89 -BRDA:58,0,0,18 -BRDA:58,0,1,2 +LH:91 +BRDA:58,0,0,28 +BRDA:58,0,1,8 BRDA:70,1,0,0 -BRDA:70,1,1,18 -BRDA:70,2,0,18 -BRDA:70,2,1,0 +BRDA:70,1,1,28 +BRDA:70,2,0,28 +BRDA:70,2,1,2 BRDA:78,3,0,0 -BRDA:78,3,1,18 -BRDA:79,4,0,18 -BRDA:79,4,1,0 -BRDA:79,4,2,0 +BRDA:78,3,1,28 +BRDA:79,4,0,28 +BRDA:79,4,1,2 +BRDA:79,4,2,2 BRDA:80,5,0,0 -BRDA:80,5,1,0 -BRDA:80,6,0,0 -BRDA:80,6,1,0 +BRDA:80,5,1,2 +BRDA:80,6,0,2 +BRDA:80,6,1,2 BRDA:81,7,0,0 -BRDA:81,7,1,0 -BRDA:81,8,0,0 -BRDA:81,8,1,0 +BRDA:81,7,1,2 +BRDA:81,8,0,2 +BRDA:81,8,1,2 BRDA:87,9,0,0 BRDA:87,9,1,0 BRDA:93,10,0,0 @@ -23199,23 +23250,23 @@ BRDA:98,11,0,0 BRDA:98,11,1,0 BRDA:102,12,0,0 BRDA:102,12,1,0 -BRDA:124,13,0,6 -BRDA:124,13,1,14 -BRDA:129,14,0,4 -BRDA:129,14,1,2 -BRDA:134,15,0,20 -BRDA:134,15,1,18 -BRDA:134,15,2,18 -BRDA:136,16,0,20 +BRDA:124,13,0,11 +BRDA:124,13,1,25 +BRDA:129,14,0,10 +BRDA:129,14,1,1 +BRDA:134,15,0,36 +BRDA:134,15,1,29 +BRDA:134,15,2,29 +BRDA:136,16,0,36 BRDA:136,16,1,0 BRDA:139,17,0,0 -BRDA:139,17,1,20 +BRDA:139,17,1,36 BRDA:140,18,0,0 BRDA:140,18,1,0 BRDA:144,19,0,0 -BRDA:144,19,1,20 -BRDA:145,20,0,20 -BRDA:145,20,1,20 +BRDA:144,19,1,36 +BRDA:145,20,0,36 +BRDA:145,20,1,36 BRDA:145,20,2,0 BRDA:145,20,3,0 BRDA:149,21,0,0 @@ -23231,45 +23282,45 @@ BRDA:158,25,1,0 BRDA:163,26,0,0 BRDA:163,26,1,0 BRDA:169,27,0,0 -BRDA:169,27,1,20 -BRDA:169,28,0,20 -BRDA:169,28,1,6 +BRDA:169,27,1,36 +BRDA:169,28,0,36 +BRDA:169,28,1,11 BRDA:169,28,2,2 BRDA:193,29,0,0 -BRDA:193,29,1,20 +BRDA:193,29,1,36 BRDA:198,30,0,0 BRDA:198,30,1,0 BRDA:216,31,0,0 -BRDA:216,31,1,20 +BRDA:216,31,1,36 BRDA:219,32,0,0 BRDA:219,32,1,0 -BRDA:235,33,0,20 -BRDA:235,33,1,0 -BRDA:235,34,0,20 -BRDA:235,34,1,20 +BRDA:235,33,0,32 +BRDA:235,33,1,4 +BRDA:235,34,0,36 +BRDA:235,34,1,36 BRDA:239,35,0,1 -BRDA:239,35,1,19 -BRDA:241,36,0,0 -BRDA:241,36,1,19 -BRDA:257,37,0,1 -BRDA:257,37,1,20 +BRDA:239,35,1,31 +BRDA:241,36,0,2 +BRDA:241,36,1,29 +BRDA:257,37,0,2 +BRDA:257,37,1,36 BRDA:257,38,0,0 -BRDA:257,38,1,21 -BRDA:257,39,0,21 -BRDA:257,39,1,21 -BRDA:268,40,0,1 +BRDA:257,38,1,38 +BRDA:257,39,0,38 +BRDA:257,39,1,38 +BRDA:268,40,0,2 BRDA:268,40,1,0 BRDA:267,41,0,0 -BRDA:267,41,1,1 -BRDA:267,42,0,1 -BRDA:267,42,1,1 -BRDA:276,43,0,1 +BRDA:267,41,1,2 +BRDA:267,42,0,2 +BRDA:267,42,1,2 +BRDA:276,43,0,2 BRDA:276,43,1,0 BRDA:294,44,0,5 -BRDA:294,44,1,15 -BRDA:295,45,0,20 -BRDA:295,45,1,15 -BRDA:295,45,2,18 +BRDA:294,44,1,31 +BRDA:295,45,0,36 +BRDA:295,45,1,24 +BRDA:295,45,2,34 BRDA:305,46,0,5 BRDA:305,46,1,5 BRDA:307,47,0,5 @@ -23293,7 +23344,7 @@ BRDA:355,55,1,0 BRDA:355,56,0,0 BRDA:355,56,1,0 BRF:120 -BRH:55 +BRH:66 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts @@ -23440,24 +23491,24 @@ SF:packages/roosterjs-editor-dom/lib/entity/commitEntity.ts FN:12,commitEntity FNF:1 FNH:1 -FNDA:136,commitEntity +FNDA:137,commitEntity DA:3,1 DA:12,1 -DA:18,136 -DA:19,136 -DA:25,136 -DA:26,129 +DA:18,137 +DA:19,137 +DA:25,137 +DA:26,130 DA:27,7 DA:28,0 LF:8 LH:7 -BRDA:18,0,0,136 +BRDA:18,0,0,137 BRDA:18,0,1,0 -BRDA:21,1,0,130 +BRDA:21,1,0,131 BRDA:21,1,1,6 -BRDA:23,2,0,129 +BRDA:23,2,0,130 BRDA:23,2,1,7 -BRDA:25,3,0,129 +BRDA:25,3,0,130 BRDA:25,3,1,7 BRDA:27,4,0,0 BRDA:27,4,1,7 @@ -23479,10 +23530,10 @@ FNH:8 FNDA:1,createEntityPlaceholder FNDA:9,moveContentWithEntityPlaceholders FNDA:1,(anonymous_3) -FNDA:412,restoreContentWithEntityPlaceholder +FNDA:488,restoreContentWithEntityPlaceholder FNDA:2,(anonymous_5) -FNDA:422,removeUntil -FNDA:604,tryGetWrapperFromEntityPlaceholder +FNDA:498,removeUntil +FNDA:711,tryGetWrapperFromEntityPlaceholder FNDA:5,getPlaceholder DA:1,1 DA:2,1 @@ -23510,33 +23561,33 @@ DA:60,21 DA:63,9 DA:65,9 DA:75,1 -DA:81,412 -DA:83,412 -DA:85,412 -DA:86,602 -DA:87,602 -DA:89,602 +DA:81,488 +DA:83,488 +DA:85,488 +DA:86,709 +DA:87,709 +DA:89,709 DA:90,10 DA:92,10 DA:93,9 DA:95,1 -DA:98,592 -DA:99,592 -DA:101,592 -DA:102,458 +DA:98,699 +DA:99,699 +DA:101,699 +DA:102,566 DA:103,2 DA:105,2 DA:106,1 -DA:112,602 -DA:115,412 -DA:119,422 -DA:120,386 -DA:121,386 -DA:122,386 -DA:124,422 -DA:132,604 -DA:135,604 -DA:137,604 +DA:112,709 +DA:115,488 +DA:119,498 +DA:120,462 +DA:121,462 +DA:122,462 +DA:124,498 +DA:132,711 +DA:135,711 +DA:137,711 DA:147,5 DA:149,5 LF:55 @@ -23552,40 +23603,40 @@ BRDA:54,3,1,1 BRDA:54,4,0,1 BRDA:54,4,1,1 BRDA:89,5,0,10 -BRDA:89,5,1,592 +BRDA:89,5,1,699 BRDA:92,6,0,9 BRDA:92,6,1,1 BRDA:98,7,0,9 -BRDA:98,7,1,583 -BRDA:101,8,0,458 -BRDA:101,8,1,134 +BRDA:98,7,1,690 +BRDA:101,8,0,566 +BRDA:101,8,1,133 BRDA:105,9,0,1 BRDA:105,9,1,1 BRDA:106,10,0,0 BRDA:106,10,1,1 BRDA:106,11,0,1 BRDA:106,11,1,1 -BRDA:119,12,0,808 -BRDA:119,12,1,395 +BRDA:119,12,0,960 +BRDA:119,12,1,471 BRDA:119,12,2,22 BRDA:122,13,0,0 -BRDA:122,13,1,386 -BRDA:122,14,0,386 -BRDA:122,14,1,386 -BRDA:132,15,0,604 -BRDA:132,15,1,470 +BRDA:122,13,1,462 +BRDA:122,14,0,462 +BRDA:122,14,1,462 +BRDA:132,15,0,711 +BRDA:132,15,1,578 BRDA:132,15,2,15 BRDA:134,16,0,0 BRDA:134,16,1,15 BRDA:134,17,0,15 BRDA:134,17,1,15 BRDA:135,18,0,12 -BRDA:135,18,1,592 +BRDA:135,18,1,699 BRDA:135,19,0,0 BRDA:135,19,1,12 BRDA:135,20,0,12 BRDA:135,20,1,12 -BRDA:138,21,0,592 +BRDA:138,21,0,699 BRDA:138,21,1,12 BRDA:140,22,0,10 BRDA:140,22,1,2 @@ -23604,43 +23655,43 @@ FN:8,getEntityFromElement FN:14,(anonymous_1) FNF:2 FNH:2 -FNDA:362,getEntityFromElement -FNDA:944,(anonymous_1) +FNDA:270,getEntityFromElement +FNDA:645,(anonymous_1) DA:8,1 -DA:9,362 -DA:10,362 -DA:11,362 -DA:12,362 -DA:14,362 -DA:15,944 +DA:9,270 +DA:10,270 +DA:11,270 +DA:12,270 +DA:14,270 +DA:15,645 DA:16,61 -DA:17,883 +DA:17,584 DA:18,61 -DA:19,822 +DA:19,523 DA:20,50 -DA:21,772 +DA:21,473 DA:22,44 -DA:26,362 +DA:26,270 LF:15 LH:15 BRDA:14,0,0,0 -BRDA:14,0,1,362 -BRDA:14,1,0,362 -BRDA:14,1,1,362 +BRDA:14,0,1,270 +BRDA:14,1,0,270 +BRDA:14,1,1,270 BRDA:14,2,0,0 -BRDA:14,2,1,362 -BRDA:14,3,0,362 -BRDA:14,3,1,362 +BRDA:14,2,1,270 +BRDA:14,3,0,270 +BRDA:14,3,1,270 BRDA:15,4,0,61 -BRDA:15,4,1,883 +BRDA:15,4,1,584 BRDA:17,5,0,61 -BRDA:17,5,1,822 +BRDA:17,5,1,523 BRDA:19,6,0,50 -BRDA:19,6,1,772 +BRDA:19,6,1,473 BRDA:21,7,0,44 -BRDA:21,7,1,728 +BRDA:21,7,1,429 BRDA:27,8,0,61 -BRDA:27,8,1,301 +BRDA:27,8,1,209 BRF:18 BRH:16 end_of_record @@ -23649,17 +23700,17 @@ SF:packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts FN:8,getEntitySelector FNF:1 FNH:1 -FNDA:6004,getEntitySelector +FNDA:6507,getEntitySelector DA:8,1 -DA:9,6004 -DA:10,6004 -DA:11,6004 +DA:9,6507 +DA:10,6507 +DA:11,6507 LF:4 LH:4 BRDA:9,0,0,2 -BRDA:9,0,1,6002 +BRDA:9,0,1,6505 BRDA:10,1,0,2 -BRDA:10,1,1,6002 +BRDA:10,1,1,6505 BRF:4 BRH:4 end_of_record @@ -23668,24 +23719,24 @@ SF:packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts FN:10,cacheGetEventData FNF:1 FNH:1 -FNDA:881,cacheGetEventData +FNDA:965,cacheGetEventData DA:10,1 -DA:16,881 -DA:19,881 -DA:20,373 -DA:21,373 -DA:24,881 +DA:16,965 +DA:19,965 +DA:20,377 +DA:21,377 +DA:24,965 LF:6 LH:6 BRDA:17,0,0,68 -BRDA:17,0,1,813 -BRDA:16,1,0,881 -BRDA:16,1,1,373 +BRDA:17,0,1,897 +BRDA:16,1,0,965 +BRDA:16,1,1,377 BRDA:16,1,2,143 -BRDA:19,2,0,373 -BRDA:19,2,1,508 -BRDA:20,3,0,373 -BRDA:20,3,1,200 +BRDA:19,2,0,377 +BRDA:19,2,1,588 +BRDA:20,3,0,377 +BRDA:20,3,1,204 BRF:9 BRH:9 end_of_record @@ -23741,14 +23792,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 @@ -23809,25 +23860,25 @@ FN:331,(anonymous_20) FNF:20 FNH:19 FNDA:1,(anonymous_0) -FNDA:232,HtmlSanitizer +FNDA:228,HtmlSanitizer FNDA:6,(anonymous_2) FNDA:0,(anonymous_3) FNDA:169,(anonymous_4) -FNDA:254,(anonymous_5) -FNDA:242,(anonymous_6) -FNDA:15,(anonymous_7) +FNDA:250,(anonymous_5) +FNDA:238,(anonymous_6) +FNDA:11,(anonymous_7) FNDA:8,(anonymous_8) -FNDA:23,(anonymous_9) -FNDA:22,(anonymous_11) +FNDA:19,(anonymous_9) +FNDA:16,(anonymous_11) FNDA:8,(anonymous_12) -FNDA:1212,(anonymous_13) -FNDA:566,(anonymous_14) -FNDA:71,(anonymous_15) -FNDA:566,(anonymous_16) -FNDA:962,(anonymous_17) -FNDA:566,(anonymous_18) -FNDA:67,(anonymous_19) -FNDA:195,(anonymous_20) +FNDA:1141,(anonymous_13) +FNDA:539,(anonymous_14) +FNDA:53,(anonymous_15) +FNDA:539,(anonymous_16) +FNDA:890,(anonymous_17) +FNDA:539,(anonymous_18) +FNDA:57,(anonymous_19) +FNDA:185,(anonymous_20) DA:1,1 DA:2,1 DA:3,1 @@ -23849,18 +23900,18 @@ DA:56,0 DA:57,0 DA:58,0 DA:61,0 -DA:81,232 -DA:82,232 -DA:83,232 -DA:84,232 -DA:85,232 -DA:86,232 -DA:87,232 -DA:90,232 -DA:91,232 -DA:92,232 -DA:93,232 -DA:94,232 +DA:81,228 +DA:82,228 +DA:83,228 +DA:84,228 +DA:85,228 +DA:86,228 +DA:87,228 +DA:90,228 +DA:91,228 +DA:92,228 +DA:93,228 +DA:94,228 DA:108,1 DA:109,169 DA:110,169 @@ -23870,132 +23921,132 @@ DA:114,164 DA:115,159 DA:118,169 DA:127,1 -DA:128,254 +DA:128,250 DA:129,0 -DA:131,254 -DA:132,254 +DA:131,250 +DA:132,250 DA:139,1 -DA:140,242 -DA:141,242 -DA:143,15 +DA:140,238 +DA:141,238 +DA:143,11 DA:144,8 -DA:145,23 -DA:146,242 -DA:147,71 -DA:149,71 -DA:150,71 -DA:151,71 -DA:155,32 -DA:156,32 +DA:145,19 +DA:146,238 +DA:147,45 +DA:149,45 +DA:150,45 +DA:151,45 +DA:155,18 +DA:156,18 DA:157,2 -DA:159,30 -DA:163,30 -DA:164,22 -DA:170,242 +DA:159,16 +DA:163,16 +DA:164,16 +DA:170,238 DA:171,8 DA:172,8 DA:177,1 -DA:178,1212 -DA:179,1212 -DA:180,1212 -DA:181,1212 -DA:182,1212 -DA:184,1212 -DA:186,1212 -DA:187,600 -DA:188,600 -DA:189,600 -DA:191,600 -DA:192,13 -DA:195,600 -DA:196,42 -DA:197,558 +DA:178,1141 +DA:179,1141 +DA:180,1141 +DA:181,1141 +DA:182,1141 +DA:184,1141 +DA:186,1141 +DA:187,573 +DA:188,573 +DA:189,573 +DA:191,573 +DA:192,5 +DA:195,573 +DA:196,34 +DA:197,539 DA:198,0 -DA:199,558 -DA:200,523 +DA:199,539 +DA:200,504 DA:201,35 DA:202,3 DA:203,3 -DA:205,612 -DA:206,526 -DA:207,526 -DA:212,86 -DA:213,78 +DA:205,568 +DA:206,486 +DA:207,486 +DA:212,82 +DA:213,74 DA:214,8 DA:215,8 DA:217,0 -DA:220,1212 -DA:221,54 -DA:222,1158 +DA:220,1141 +DA:221,48 +DA:222,1093 DA:226,17 -DA:229,1141 -DA:230,644 -DA:231,644 -DA:232,644 -DA:233,566 -DA:234,566 -DA:235,566 -DA:238,644 -DA:239,644 -DA:240,644 -DA:241,958 -DA:242,958 +DA:229,1076 +DA:230,613 +DA:231,613 +DA:232,613 +DA:233,539 +DA:234,539 +DA:235,539 +DA:238,613 +DA:239,613 +DA:240,613 +DA:241,891 +DA:242,891 DA:247,1 -DA:248,566 -DA:252,566 -DA:253,41 -DA:254,71 -DA:259,566 -DA:260,566 -DA:261,566 -DA:262,962 -DA:263,962 -DA:264,962 -DA:265,962 -DA:267,962 -DA:268,112 -DA:271,962 +DA:248,539 +DA:252,539 +DA:253,32 +DA:254,53 +DA:259,539 +DA:260,539 +DA:261,539 +DA:262,890 +DA:263,890 +DA:264,890 +DA:265,890 +DA:267,890 +DA:268,102 +DA:271,890 DA:272,0 DA:273,0 -DA:276,962 -DA:284,962 -DA:285,232 -DA:288,962 -DA:289,582 -DA:291,380 -DA:295,566 +DA:276,890 +DA:284,890 +DA:285,209 +DA:288,890 +DA:289,518 +DA:291,372 +DA:295,539 DA:298,1 -DA:299,566 -DA:300,425 -DA:301,425 -DA:302,425 -DA:303,425 -DA:305,425 -DA:311,425 -DA:312,67 -DA:315,425 -DA:320,123 -DA:322,302 -DA:327,67 -DA:328,67 -DA:329,67 -DA:331,67 -DA:332,195 +DA:299,539 +DA:300,385 +DA:301,385 +DA:302,385 +DA:303,385 +DA:305,385 +DA:311,385 +DA:312,57 +DA:315,385 +DA:320,107 +DA:322,278 +DA:327,57 +DA:328,57 +DA:329,57 +DA:331,57 +DA:332,185 DA:336,27 -DA:340,67 +DA:340,57 DA:342,1 LF:156 LH:147 -BRDA:81,0,0,232 +BRDA:81,0,0,228 BRDA:81,0,1,25 -BRDA:91,1,0,232 +BRDA:91,1,0,228 BRDA:91,1,1,156 -BRDA:92,2,0,232 +BRDA:92,2,0,228 BRDA:92,2,1,154 -BRDA:93,3,0,232 -BRDA:93,3,1,231 -BRDA:94,4,0,232 -BRDA:94,4,1,95 +BRDA:93,3,0,228 +BRDA:93,3,1,227 +BRDA:94,4,0,228 +BRDA:94,4,1,96 BRDA:56,5,0,0 BRDA:56,5,1,0 BRDA:59,6,0,0 @@ -24014,131 +24065,131 @@ BRDA:118,11,1,169 BRDA:118,11,2,169 BRDA:118,11,3,5 BRDA:128,12,0,0 -BRDA:128,12,1,254 -BRDA:150,13,0,71 +BRDA:128,12,1,250 +BRDA:150,13,0,45 BRDA:150,13,1,0 -BRDA:150,14,0,71 -BRDA:150,14,1,71 -BRDA:151,15,0,43 -BRDA:151,15,1,28 -BRDA:151,16,0,71 -BRDA:151,16,1,59 -BRDA:151,16,2,28 +BRDA:150,14,0,45 +BRDA:150,14,1,45 +BRDA:151,15,0,27 +BRDA:151,15,1,18 +BRDA:151,16,0,45 +BRDA:151,16,1,41 +BRDA:151,16,2,18 BRDA:156,17,0,2 -BRDA:156,17,1,30 -BRDA:156,18,0,32 -BRDA:156,18,1,32 -BRDA:156,18,2,32 -BRDA:164,19,0,22 -BRDA:164,19,1,5 +BRDA:156,17,1,16 +BRDA:156,18,0,18 +BRDA:156,18,1,18 +BRDA:156,18,2,18 +BRDA:164,19,0,16 +BRDA:164,19,1,1 BRDA:171,20,0,8 BRDA:171,20,1,0 -BRDA:186,21,0,600 -BRDA:186,21,1,612 -BRDA:191,22,0,13 -BRDA:191,22,1,587 -BRDA:195,23,0,42 -BRDA:195,23,1,558 +BRDA:186,21,0,573 +BRDA:186,21,1,568 +BRDA:191,22,0,5 +BRDA:191,22,1,568 +BRDA:195,23,0,34 +BRDA:195,23,1,539 BRDA:197,24,0,0 -BRDA:197,24,1,558 -BRDA:199,25,0,523 +BRDA:197,24,1,539 +BRDA:199,25,0,504 BRDA:199,25,1,35 -BRDA:199,26,0,558 -BRDA:199,26,1,558 +BRDA:199,26,0,539 +BRDA:199,26,1,539 BRDA:201,27,0,3 BRDA:201,27,1,32 BRDA:201,28,0,35 BRDA:201,28,1,4 -BRDA:205,29,0,526 -BRDA:205,29,1,86 -BRDA:208,30,0,526 -BRDA:208,30,1,523 -BRDA:208,30,2,522 -BRDA:208,30,3,508 -BRDA:211,31,0,508 +BRDA:205,29,0,486 +BRDA:205,29,1,82 +BRDA:208,30,0,486 +BRDA:208,30,1,483 +BRDA:208,30,2,482 +BRDA:208,30,3,468 +BRDA:211,31,0,468 BRDA:211,31,1,4 -BRDA:212,32,0,78 +BRDA:212,32,0,74 BRDA:212,32,1,8 BRDA:214,33,0,8 BRDA:214,33,1,0 -BRDA:220,34,0,54 -BRDA:220,34,1,1158 +BRDA:220,34,0,48 +BRDA:220,34,1,1093 BRDA:221,35,0,0 -BRDA:221,35,1,54 -BRDA:221,36,0,54 -BRDA:221,36,1,54 +BRDA:221,35,1,48 +BRDA:221,36,0,48 +BRDA:221,36,1,48 BRDA:222,37,0,17 -BRDA:222,37,1,1141 -BRDA:223,38,0,1158 -BRDA:223,38,1,513 -BRDA:223,38,2,510 +BRDA:222,37,1,1076 +BRDA:223,38,0,1093 +BRDA:223,38,1,479 +BRDA:223,38,2,476 BRDA:226,39,0,17 BRDA:226,39,1,0 -BRDA:229,40,0,644 -BRDA:229,40,1,497 -BRDA:229,41,0,1141 -BRDA:229,41,1,575 -BRDA:232,42,0,566 -BRDA:232,42,1,78 -BRDA:252,43,0,41 -BRDA:252,43,1,525 -BRDA:267,44,0,112 -BRDA:267,44,1,850 -BRDA:267,45,0,962 -BRDA:267,45,1,962 +BRDA:229,40,0,613 +BRDA:229,40,1,463 +BRDA:229,41,0,1076 +BRDA:229,41,1,537 +BRDA:232,42,0,539 +BRDA:232,42,1,74 +BRDA:252,43,0,32 +BRDA:252,43,1,507 +BRDA:267,44,0,102 +BRDA:267,44,1,788 +BRDA:267,45,0,890 +BRDA:267,45,1,890 BRDA:271,46,0,0 -BRDA:271,46,1,962 -BRDA:271,47,0,962 -BRDA:271,47,1,896 -BRDA:277,48,0,962 -BRDA:277,48,1,896 -BRDA:277,48,2,896 -BRDA:277,48,3,895 -BRDA:277,48,4,776 -BRDA:277,48,5,668 -BRDA:277,48,6,293 -BRDA:277,48,7,436 -BRDA:277,48,8,375 -BRDA:277,48,9,360 -BRDA:284,49,0,232 -BRDA:284,49,1,730 -BRDA:284,50,0,962 -BRDA:284,50,1,582 -BRDA:288,51,0,582 -BRDA:288,51,1,380 +BRDA:271,46,1,890 +BRDA:271,47,0,890 +BRDA:271,47,1,826 +BRDA:277,48,0,890 +BRDA:277,48,1,826 +BRDA:277,48,2,826 +BRDA:277,48,3,825 +BRDA:277,48,4,708 +BRDA:277,48,5,600 +BRDA:277,48,6,266 +BRDA:277,48,7,391 +BRDA:277,48,8,334 +BRDA:277,48,9,319 +BRDA:284,49,0,209 +BRDA:284,49,1,681 +BRDA:284,50,0,890 +BRDA:284,50,1,518 +BRDA:288,51,0,518 +BRDA:288,51,1,372 BRDA:306,52,0,9 -BRDA:306,52,1,416 -BRDA:308,53,0,269 -BRDA:308,53,1,147 -BRDA:307,54,0,416 -BRDA:307,54,1,178 -BRDA:311,55,0,67 -BRDA:311,55,1,358 -BRDA:311,56,0,425 -BRDA:311,56,1,79 -BRDA:315,57,0,123 -BRDA:315,57,1,302 -BRDA:316,58,0,425 -BRDA:316,58,1,304 -BRDA:316,58,2,304 -BRDA:328,59,0,67 +BRDA:306,52,1,376 +BRDA:308,53,0,245 +BRDA:308,53,1,131 +BRDA:307,54,0,376 +BRDA:307,54,1,162 +BRDA:311,55,0,57 +BRDA:311,55,1,328 +BRDA:311,56,0,385 +BRDA:311,56,1,69 +BRDA:315,57,0,107 +BRDA:315,57,1,278 +BRDA:316,58,0,385 +BRDA:316,58,1,280 +BRDA:316,58,2,280 +BRDA:328,59,0,57 BRDA:328,59,1,0 BRDA:329,60,0,0 -BRDA:329,60,1,67 +BRDA:329,60,1,57 BRDA:332,61,0,27 -BRDA:332,61,1,168 -BRDA:333,62,0,195 +BRDA:332,61,1,158 +BRDA:333,62,0,185 BRDA:333,62,1,27 BRDA:333,63,0,0 -BRDA:333,63,1,195 -BRDA:333,64,0,195 -BRDA:333,64,1,195 +BRDA:333,63,1,185 +BRDA:333,64,0,185 +BRDA:333,64,1,185 BRDA:340,65,0,27 -BRDA:340,65,1,40 +BRDA:340,65,1,30 BRDA:340,66,0,0 -BRDA:340,66,1,67 -BRDA:340,67,0,67 -BRDA:340,67,1,67 +BRDA:340,66,1,57 +BRDA:340,67,0,57 +BRDA:340,67,1,57 BRF:153 BRH:137 end_of_record @@ -24148,18 +24199,18 @@ FN:9,chainSanitizerCallback FN:18,(anonymous_1) FNF:2 FNH:1 -FNDA:370,chainSanitizerCallback +FNDA:346,chainSanitizerCallback FNDA:0,(anonymous_1) DA:9,1 -DA:14,370 -DA:15,370 +DA:14,346 +DA:15,346 DA:17,0 DA:18,0 DA:19,0 DA:20,0 LF:7 LH:3 -BRDA:14,0,0,370 +BRDA:14,0,0,346 BRDA:14,0,1,0 BRF:2 BRH:1 @@ -24171,11 +24222,11 @@ FN:10,customClone FN:29,cloneObject FNF:3 FNH:2 -FNDA:1826,nativeClone +FNDA:1775,nativeClone FNDA:0,customClone -FNDA:1826,cloneObject +FNDA:1775,cloneObject DA:1,1 -DA:7,1826 +DA:7,1775 DA:14,0 DA:15,0 DA:16,0 @@ -24183,11 +24234,11 @@ DA:17,0 DA:20,0 DA:24,1 DA:29,1 -DA:33,1826 +DA:33,1775 LF:10 LH:5 -BRDA:7,0,0,1826 -BRDA:7,0,1,1572 +BRDA:7,0,0,1775 +BRDA:7,0,1,1525 BRDA:14,1,0,0 BRDA:14,1,1,0 BRDA:15,2,0,0 @@ -24202,9 +24253,9 @@ SF:packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOpt FN:6,createDefaultHtmlSanitizerOptions FNF:1 FNH:1 -FNDA:75,createDefaultHtmlSanitizerOptions +FNDA:71,createDefaultHtmlSanitizerOptions DA:6,1 -DA:7,75 +DA:7,71 LF:2 LH:2 BRF:0 @@ -24226,18 +24277,18 @@ FN:265,unique FN:266,(anonymous_11) FNF:12 FNH:12 -FNDA:232,getTagReplacement +FNDA:228,getTagReplacement FNDA:2,(anonymous_1) -FNDA:232,getAllowedAttributes -FNDA:15778,(anonymous_3) -FNDA:232,getAllowedCssClassesRegex -FNDA:232,getDefaultStyleValues +FNDA:228,getAllowedAttributes +FNDA:15506,(anonymous_3) +FNDA:228,getAllowedCssClassesRegex +FNDA:228,getDefaultStyleValues FNDA:1,(anonymous_6) -FNDA:232,getStyleCallbacks +FNDA:228,getStyleCallbacks FNDA:27,removeValue -FNDA:39,removeWidthForLiAndDiv -FNDA:232,unique -FNDA:15778,(anonymous_11) +FNDA:34,removeWidthForLiAndDiv +FNDA:228,unique +FNDA:15506,(anonymous_11) DA:1,1 DA:2,1 DA:5,1 @@ -24245,60 +24296,60 @@ DA:136,1 DA:145,1 DA:187,1 DA:192,1 -DA:195,232 -DA:196,232 -DA:197,232 +DA:195,228 +DA:196,228 +DA:197,228 DA:198,2 DA:199,2 -DA:203,232 +DA:203,228 DA:209,1 -DA:210,232 -DA:211,15778 +DA:210,228 +DA:211,15506 DA:218,1 -DA:221,232 -DA:222,232 +DA:221,228 +DA:222,228 DA:228,1 -DA:229,232 -DA:230,232 -DA:231,77 +DA:229,228 +DA:230,228 +DA:231,73 DA:232,1 DA:233,1 DA:234,1 DA:236,0 -DA:241,232 +DA:241,228 DA:247,1 -DA:250,232 -DA:251,232 -DA:252,232 -DA:253,232 +DA:250,228 +DA:251,228 +DA:252,228 +DA:253,228 DA:257,27 -DA:261,39 -DA:262,39 -DA:266,15778 +DA:261,34 +DA:262,34 +DA:266,15506 LF:37 LH:36 -BRDA:196,0,0,232 +BRDA:196,0,0,228 BRDA:196,0,1,155 BRDA:198,1,0,2 BRDA:198,1,1,0 -BRDA:210,2,0,232 +BRDA:210,2,0,228 BRDA:210,2,1,155 -BRDA:221,3,0,232 +BRDA:221,3,0,228 BRDA:221,3,1,156 -BRDA:222,4,0,22 -BRDA:222,4,1,210 -BRDA:230,5,0,77 +BRDA:222,4,0,17 +BRDA:222,4,1,211 +BRDA:230,5,0,73 BRDA:230,5,1,155 BRDA:233,6,0,1 BRDA:233,6,1,0 BRDA:233,7,0,1 BRDA:233,7,1,1 -BRDA:251,8,0,232 -BRDA:251,8,1,232 -BRDA:252,9,0,232 -BRDA:252,9,1,232 -BRDA:262,10,0,39 -BRDA:262,10,1,38 +BRDA:251,8,0,228 +BRDA:251,8,1,228 +BRDA:252,9,0,228 +BRDA:252,9,1,228 +BRDA:262,10,0,34 +BRDA:262,10,1,33 BRF:22 BRH:20 end_of_record @@ -24308,27 +24359,27 @@ FN:17,getInheritableStyles FN:22,(anonymous_1) FNF:2 FNH:2 -FNDA:262,getInheritableStyles -FNDA:7074,(anonymous_1) +FNDA:257,getInheritableStyles +FNDA:6939,(anonymous_1) DA:5,1 DA:17,1 -DA:18,262 -DA:19,262 -DA:20,262 -DA:21,262 -DA:22,7074 -DA:24,262 +DA:18,257 +DA:19,257 +DA:20,257 +DA:21,257 +DA:22,6939 +DA:24,257 LF:8 LH:8 -BRDA:18,0,0,262 -BRDA:18,0,1,7 -BRDA:18,0,2,7 -BRDA:19,1,0,262 -BRDA:19,1,1,7 -BRDA:19,1,2,7 -BRDA:22,2,0,7074 -BRDA:22,2,1,189 -BRDA:22,2,2,6886 +BRDA:18,0,0,257 +BRDA:18,0,1,6 +BRDA:18,0,2,6 +BRDA:19,1,0,257 +BRDA:19,1,1,6 +BRDA:19,1,2,6 +BRDA:22,2,0,6939 +BRDA:22,2,1,162 +BRDA:22,2,2,6790 BRF:9 BRH:9 end_of_record @@ -24337,17 +24388,17 @@ SF:packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts FN:44,getPredefinedCssForElement FNF:1 FNH:1 -FNDA:575,getPredefinedCssForElement +FNDA:548,getPredefinedCssForElement DA:1,1 DA:4,1 DA:44,1 -DA:48,575 -DA:49,575 +DA:48,548 +DA:49,548 LF:5 LH:5 -BRDA:49,0,0,575 -BRDA:49,0,1,533 -BRDA:49,1,0,533 +BRDA:49,0,0,548 +BRDA:49,0,1,515 +BRDA:49,1,0,515 BRDA:49,1,1,353 BRF:4 BRH:4 @@ -24359,14 +24410,14 @@ FN:16,isCssVariable FNF:2 FNH:2 FNDA:5,processCssVariable -FNDA:898,isCssVariable +FNDA:828,isCssVariable DA:1,1 DA:2,1 DA:8,1 DA:9,5 DA:10,5 DA:16,1 -DA:17,898 +DA:17,828 LF:7 LH:7 BRDA:10,0,0,5 @@ -24394,18 +24445,18 @@ FN:71,(anonymous_10) FNF:11 FNH:4 FNDA:1,(anonymous_0) -FNDA:111,EmptyInlineElement +FNDA:118,EmptyInlineElement FNDA:0,(anonymous_2) FNDA:0,(anonymous_3) FNDA:86,(anonymous_4) -FNDA:98,(anonymous_5) +FNDA:102,(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,111 +DA:10,118 DA:15,1 DA:16,0 DA:22,1 @@ -24413,7 +24464,7 @@ DA:23,0 DA:29,1 DA:30,86 DA:36,1 -DA:37,98 +DA:37,102 DA:43,1 DA:44,0 DA:50,1 @@ -24438,15 +24489,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 @@ -24457,15 +24508,15 @@ FN:8,LinkInlineElement FNF:2 FNH:2 FNDA:1,(anonymous_0) -FNDA:14,LinkInlineElement +FNDA:32,LinkInlineElement DA:1,1 DA:7,1 -DA:9,14 +DA:9,32 DA:11,1 LF:4 LH:4 -BRDA:9,0,0,14 -BRDA:9,0,1,14 +BRDA:9,0,0,32 +BRDA:9,0,1,32 BRF:2 BRH:2 end_of_record @@ -24485,54 +24536,54 @@ FN:89,(anonymous_10) FNF:11 FNH:11 FNDA:1,(anonymous_0) -FNDA:792,NodeInlineElement -FNDA:169,(anonymous_2) -FNDA:1776,(anonymous_3) +FNDA:957,NodeInlineElement +FNDA:174,(anonymous_2) +FNDA:2039,(anonymous_3) FNDA:14,(anonymous_4) -FNDA:349,(anonymous_5) -FNDA:246,(anonymous_6) -FNDA:93,(anonymous_7) -FNDA:203,(anonymous_8) -FNDA:129,(anonymous_9) -FNDA:7,(anonymous_10) +FNDA:554,(anonymous_5) +FNDA:450,(anonymous_6) +FNDA:100,(anonymous_7) +FNDA:287,(anonymous_8) +FNDA:201,(anonymous_9) +FNDA:117,(anonymous_10) DA:1,1 DA:2,1 DA:3,1 DA:18,1 -DA:19,792 +DA:19,957 DA:24,1 -DA:26,169 +DA:26,174 DA:36,1 -DA:37,1776 +DA:37,2039 DA:41,1 DA:42,14 DA:48,1 -DA:51,349 +DA:51,554 DA:57,1 -DA:60,246 +DA:60,450 DA:66,1 -DA:67,93 +DA:67,100 DA:73,1 -DA:74,203 +DA:74,287 DA:80,1 -DA:81,129 -DA:82,129 -DA:83,129 +DA:81,201 +DA:82,201 +DA:83,201 DA:89,1 -DA:90,7 +DA:90,117 DA:92,1 LF:26 LH:26 -BRDA:27,0,0,169 +BRDA:27,0,0,174 BRDA:27,0,1,5 -BRDA:28,1,0,157 +BRDA:28,1,0,162 BRDA:28,1,1,12 -BRDA:67,2,0,93 -BRDA:67,2,1,93 -BRDA:74,3,0,203 -BRDA:74,3,1,203 -BRDA:83,4,0,129 -BRDA:83,4,1,129 +BRDA:67,2,0,100 +BRDA:67,2,1,100 +BRDA:74,3,0,287 +BRDA:74,3,1,287 +BRDA:83,4,0,201 +BRDA:83,4,1,201 BRDA:83,4,2,88 BRF:11 BRH:11 @@ -24556,52 +24607,52 @@ FN:107,(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:5,1 DA:14,1 -DA:16,121 -DA:17,144 -DA:18,155 +DA:16,129 +DA:17,156 +DA:18,167 DA:24,1 DA:25,5 DA:31,1 -DA:32,61 +DA:32,68 DA:38,1 DA:39,8 DA:45,1 -DA:46,17 -DA:48,17 +DA:46,19 +DA:48,19 DA:54,1 -DA:55,111 +DA:55,116 DA:61,1 -DA:62,103 +DA:62,108 DA:68,1 DA:69,24 DA:75,1 -DA:76,12 +DA:76,16 DA:84,1 DA:85,5 DA:91,1 -DA:92,6 +DA:92,8 DA:98,1 -DA:99,22 -DA:100,22 -DA:101,22 +DA:99,24 +DA:100,24 +DA:101,24 DA:107,1 DA:108,23 DA:109,23 @@ -24616,28 +24667,28 @@ DA:121,23 DA:123,1 LF:45 LH:41 -BRDA:17,0,0,23 -BRDA:17,0,1,98 -BRDA:18,1,0,34 -BRDA:18,1,1,87 -BRDA:55,2,0,111 -BRDA:55,2,1,38 -BRDA:62,3,0,103 -BRDA:62,3,1,39 +BRDA:17,0,0,27 +BRDA:17,0,1,102 +BRDA:18,1,0,38 +BRDA:18,1,1,91 +BRDA:55,2,0,116 +BRDA:55,2,1,40 +BRDA:62,3,0,108 +BRDA:62,3,1,40 BRDA:69,4,0,14 BRDA:69,4,1,10 -BRDA:77,5,0,8 -BRDA:77,5,1,4 +BRDA:77,5,0,10 +BRDA:77,5,1,6 BRDA:85,6,0,5 BRDA:85,6,1,5 BRDA:85,6,2,3 -BRDA:92,7,0,6 -BRDA:92,7,1,6 -BRDA:100,8,0,22 -BRDA:100,8,1,22 -BRDA:101,9,0,22 -BRDA:101,9,1,22 -BRDA:101,9,2,20 +BRDA:92,7,0,8 +BRDA:92,7,1,8 +BRDA:100,8,0,24 +BRDA:100,8,1,24 +BRDA:101,9,0,24 +BRDA:101,9,1,24 +BRDA:101,9,2,22 BRDA:112,10,0,0 BRDA:112,10,1,23 BRDA:114,11,0,0 @@ -24662,11 +24713,11 @@ FN:70,(anonymous_3) FN:95,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 @@ -24676,66 +24727,66 @@ DA:7,1 DA:8,1 DA:10,1 DA:19,1 -DA:22,80 -DA:23,83 -DA:25,65 -DA:26,65 -DA:27,65 -DA:29,65 -DA:30,83 -DA:31,83 -DA:34,83 -DA:36,83 -DA:37,82 +DA:22,300 +DA:23,303 +DA:25,175 +DA:26,175 +DA:27,175 +DA:29,175 +DA:30,193 +DA:31,193 +DA:34,193 +DA:36,193 +DA:37,188 DA:38,24 -DA:45,82 +DA:45,188 DA:46,27 -DA:53,82 -DA:56,83 -DA:59,65 -DA:60,74 -DA:61,53 -DA:62,53 +DA:53,188 +DA:56,193 +DA:59,175 +DA:60,180 +DA:61,159 +DA:62,159 DA:63,15 DA:64,15 DA:65,15 -DA:67,53 -DA:70,56 -DA:73,67 -DA:74,67 -DA:79,48 -DA:80,48 -DA:83,67 -DA:84,26 -DA:85,26 -DA:88,67 -DA:89,67 -DA:99,74 -DA:100,7 +DA:67,159 +DA:70,162 +DA:73,173 +DA:74,173 +DA:79,98 +DA:80,98 +DA:83,173 +DA:84,83 +DA:85,83 +DA:88,173 +DA:89,173 +DA:99,181 +DA:100,8 LF:45 LH:45 -BRDA:22,0,0,15 +BRDA:22,0,0,125 BRDA:22,0,1,50 -BRDA:23,1,0,18 +BRDA:23,1,0,128 BRDA:23,1,1,47 -BRDA:29,2,0,148 -BRDA:29,2,1,94 -BRDA:29,2,2,94 -BRDA:36,3,0,82 -BRDA:36,3,1,1 -BRDA:36,4,0,83 -BRDA:36,4,1,82 +BRDA:29,2,0,368 +BRDA:29,2,1,204 +BRDA:29,2,2,204 +BRDA:36,3,0,188 +BRDA:36,3,1,5 +BRDA:36,4,0,193 +BRDA:36,4,1,188 BRDA:37,5,0,24 -BRDA:37,5,1,58 -BRDA:37,6,0,82 -BRDA:37,6,1,54 +BRDA:37,5,1,164 +BRDA:37,6,0,188 +BRDA:37,6,1,160 BRDA:45,7,0,27 -BRDA:45,7,1,55 -BRDA:56,8,0,83 +BRDA:45,7,1,161 +BRDA:56,8,0,193 BRDA:56,8,1,29 -BRDA:59,9,0,56 -BRDA:59,9,1,9 -BRDA:60,10,0,53 +BRDA:59,9,0,162 +BRDA:59,9,1,13 +BRDA:60,10,0,159 BRDA:60,10,1,3 BRDA:63,11,0,15 BRDA:63,11,1,1 @@ -24745,19 +24796,19 @@ BRDA:65,13,0,0 BRDA:65,13,1,15 BRDA:65,14,0,15 BRDA:65,14,1,15 -BRDA:75,15,0,115 -BRDA:75,15,1,115 -BRDA:75,15,2,74 -BRDA:83,16,0,26 -BRDA:83,16,1,41 -BRDA:83,17,0,67 -BRDA:83,17,1,67 -BRDA:88,18,0,67 +BRDA:75,15,0,271 +BRDA:75,15,1,271 +BRDA:75,15,2,181 +BRDA:83,16,0,83 +BRDA:83,16,1,90 +BRDA:83,17,0,173 +BRDA:83,17,1,173 +BRDA:88,18,0,173 BRDA:88,18,1,0 -BRDA:99,19,0,7 -BRDA:99,19,1,67 -BRDA:99,20,0,74 -BRDA:99,20,1,74 +BRDA:99,19,0,8 +BRDA:99,19,1,173 +BRDA:99,20,0,181 +BRDA:99,20,1,181 BRF:44 BRH:41 end_of_record @@ -24767,19 +24818,19 @@ FN:9,getFirstInlineElement FN:20,getLastInlineElement FNF:2 FNH:2 -FNDA:280,getFirstInlineElement +FNDA:285,getFirstInlineElement FNDA:4,getLastInlineElement DA:1,1 DA:2,1 DA:9,1 -DA:12,280 -DA:13,280 +DA:12,285 +DA:13,285 DA:20,1 DA:23,4 DA:24,4 LF:8 LH:8 -BRDA:13,0,0,246 +BRDA:13,0,0,251 BRDA:13,0,1,34 BRDA:24,1,0,4 BRDA:24,1,1,0 @@ -24792,8 +24843,8 @@ FN:26,getInlineElementAtNode FN:40,resolveInlineElement FNF:2 FNH:2 -FNDA:1313,getInlineElementAtNode -FNDA:785,resolveInlineElement +FNDA:1541,getInlineElementAtNode +FNDA:950,resolveInlineElement DA:1,1 DA:2,1 DA:3,1 @@ -24801,37 +24852,37 @@ DA:4,1 DA:5,1 DA:6,1 DA:26,1 -DA:31,1313 -DA:32,1313 -DA:41,785 -DA:42,785 -DA:43,785 -DA:47,594 -DA:52,785 -DA:53,1367 -DA:54,1367 -DA:55,1367 -DA:56,13 -DA:57,1354 -DA:58,3 -DA:62,785 +DA:31,1541 +DA:32,1541 +DA:41,950 +DA:42,950 +DA:43,950 +DA:47,863 +DA:52,950 +DA:53,1774 +DA:54,1774 +DA:55,1774 +DA:56,31 +DA:57,1743 +DA:58,4 +DA:62,950 LF:21 LH:21 -BRDA:31,0,0,1233 +BRDA:31,0,0,1461 BRDA:31,0,1,80 -BRDA:32,1,0,1313 -BRDA:32,1,1,785 -BRDA:32,1,2,785 -BRDA:44,2,0,1379 -BRDA:44,2,1,1379 -BRDA:52,3,0,2152 -BRDA:52,3,1,1378 -BRDA:55,4,0,13 -BRDA:55,4,1,1354 -BRDA:57,5,0,3 -BRDA:57,5,1,1351 -BRDA:62,6,0,785 -BRDA:62,6,1,769 +BRDA:32,1,0,1541 +BRDA:32,1,1,950 +BRDA:32,1,2,950 +BRDA:44,2,0,1813 +BRDA:44,2,1,1813 +BRDA:52,3,0,2724 +BRDA:52,3,1,1803 +BRDA:55,4,0,31 +BRDA:55,4,1,1743 +BRDA:57,5,0,4 +BRDA:57,5,1,1739 +BRDA:62,6,0,950 +BRDA:62,6,1,915 BRF:15 BRH:15 end_of_record @@ -24843,8 +24894,8 @@ FN:38,getInlineElementBeforeAfter FNF:3 FNH:2 FNDA:0,getInlineElementBefore -FNDA:169,getInlineElementAfter -FNDA:267,getInlineElementBeforeAfter +FNDA:252,getInlineElementAfter +FNDA:354,getInlineElementBeforeAfter DA:1,1 DA:2,1 DA:3,1 @@ -24852,55 +24903,55 @@ DA:4,1 DA:17,1 DA:18,0 DA:31,1 -DA:32,169 +DA:32,252 DA:38,1 -DA:39,267 +DA:39,354 DA:40,0 -DA:43,267 -DA:44,534 -DA:45,267 -DA:46,267 -DA:48,267 -DA:49,100 -DA:50,167 -DA:54,17 -DA:57,267 -DA:58,25 -DA:61,267 -DA:63,267 -DA:64,17 -DA:69,267 +DA:43,354 +DA:44,708 +DA:45,354 +DA:46,354 +DA:48,354 +DA:49,104 +DA:50,250 +DA:54,21 +DA:57,354 +DA:58,38 +DA:61,354 +DA:63,354 +DA:64,21 +DA:69,354 LF:25 LH:23 BRDA:39,0,0,0 -BRDA:39,0,1,267 -BRDA:39,1,0,267 -BRDA:39,1,1,267 -BRDA:39,1,2,267 -BRDA:48,2,0,100 -BRDA:48,2,1,167 -BRDA:48,3,0,267 -BRDA:48,3,1,98 -BRDA:48,3,2,15 -BRDA:48,3,3,255 -BRDA:48,3,4,169 -BRDA:50,4,0,17 -BRDA:50,4,1,150 -BRDA:51,5,0,167 -BRDA:51,5,1,147 +BRDA:39,0,1,354 +BRDA:39,1,0,354 +BRDA:39,1,1,354 +BRDA:39,1,2,354 +BRDA:48,2,0,104 +BRDA:48,2,1,250 +BRDA:48,3,0,354 +BRDA:48,3,1,102 +BRDA:48,3,2,19 +BRDA:48,3,3,338 +BRDA:48,3,4,252 +BRDA:50,4,0,21 +BRDA:50,4,1,229 +BRDA:51,5,0,250 +BRDA:51,5,1,214 BRDA:51,5,2,83 -BRDA:51,5,3,147 -BRDA:51,5,4,64 -BRDA:57,6,0,25 -BRDA:57,6,1,242 -BRDA:57,7,0,267 -BRDA:57,7,1,167 -BRDA:63,8,0,17 -BRDA:63,8,1,250 -BRDA:63,9,0,267 -BRDA:63,9,1,144 -BRDA:63,9,2,127 -BRDA:65,10,0,17 +BRDA:51,5,3,214 +BRDA:51,5,4,131 +BRDA:57,6,0,38 +BRDA:57,6,1,316 +BRDA:57,7,0,354 +BRDA:57,7,1,250 +BRDA:63,8,0,21 +BRDA:63,8,1,333 +BRDA:63,9,0,354 +BRDA:63,9,1,220 +BRDA:63,9,2,199 +BRDA:65,10,0,21 BRDA:65,10,1,0 BRF:30 BRH:28 @@ -24910,9 +24961,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts FN:6,arrayPush FNF:1 FNH:1 -FNDA:5023,arrayPush +FNDA:5230,arrayPush DA:6,1 -DA:7,5023 +DA:7,5230 LF:2 LH:2 BRF:0 @@ -24923,9 +24974,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts FN:6,getObjectKeys FNF:1 FNH:1 -FNDA:40161,getObjectKeys +FNDA:41227,getObjectKeys DA:6,1 -DA:9,40161 +DA:9,41227 LF:2 LH:2 BRF:0 @@ -24936,9 +24987,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts FN:33,toArray FNF:1 FNH:1 -FNDA:14728,toArray +FNDA:16240,toArray DA:33,1 -DA:34,14728 +DA:34,16240 LF:2 LH:2 BRF:0 @@ -24982,11 +25033,11 @@ FN:562,createListStyleMetadata FNF:33 FNH:33 FNDA:1,(anonymous_0) -FNDA:257,VList +FNDA:273,VList FNDA:5,(anonymous_2) FNDA:6,(anonymous_3) -FNDA:89,(anonymous_4) -FNDA:148,(anonymous_5) +FNDA:104,(anonymous_4) +FNDA:174,(anonymous_5) FNDA:55,(anonymous_6) FNDA:120,(anonymous_7) FNDA:4,(anonymous_8) @@ -24998,19 +25049,19 @@ FNDA:22,(anonymous_13) FNDA:31,(anonymous_14) FNDA:31,(anonymous_15) FNDA:32,(anonymous_16) -FNDA:23,(anonymous_17) +FNDA:24,(anonymous_17) FNDA:22,(anonymous_18) FNDA:34,(anonymous_19) FNDA:13,(anonymous_20) -FNDA:159,(anonymous_21) +FNDA:174,(anonymous_21) FNDA:62,(anonymous_22) FNDA:136,(anonymous_23) -FNDA:314,(anonymous_24) -FNDA:466,(anonymous_25) -FNDA:317,moveChildNodesToLi -FNDA:474,(anonymous_27) -FNDA:391,moveLiToList -FNDA:8,(anonymous_29) +FNDA:333,(anonymous_24) +FNDA:495,(anonymous_25) +FNDA:336,moveChildNodesToLi +FNDA:505,(anonymous_27) +FNDA:417,moveLiToList +FNDA:7,(anonymous_29) FNDA:64,getValidValue FNDA:192,(anonymous_31) FNDA:32,createListStyleMetadata @@ -25029,20 +25080,20 @@ DA:12,1 DA:13,1 DA:14,1 DA:74,1 -DA:75,257 -DA:81,257 -DA:82,257 +DA:75,273 +DA:81,273 +DA:82,273 DA:83,1 -DA:107,256 -DA:108,256 -DA:142,256 -DA:144,256 +DA:107,272 +DA:108,272 +DA:142,272 +DA:144,272 DA:151,1 DA:155,6 DA:162,1 -DA:163,89 -DA:165,89 -DA:171,148 +DA:163,104 +DA:165,104 +DA:171,174 DA:184,55 DA:185,55 DA:186,0 @@ -25105,12 +25156,12 @@ DA:363,32 DA:364,32 DA:369,32 DA:377,1 -DA:378,23 -DA:381,23 -DA:382,15 +DA:378,24 +DA:381,24 +DA:382,16 DA:383,8 DA:384,5 -DA:387,23 +DA:387,24 DA:402,22 DA:403,22 DA:404,34 @@ -25127,7 +25178,7 @@ DA:443,13 DA:444,13 DA:448,0 DA:455,1 -DA:456,159 +DA:456,174 DA:459,1 DA:464,62 DA:465,8 @@ -25144,45 +25195,45 @@ DA:485,54 DA:487,54 DA:488,54 DA:491,54 -DA:494,314 -DA:496,570 -DA:503,314 -DA:504,314 -DA:506,314 -DA:507,466 -DA:509,466 -DA:510,58 -DA:511,408 -DA:512,395 +DA:494,333 +DA:496,605 +DA:503,333 +DA:504,333 +DA:506,333 +DA:507,495 +DA:509,495 +DA:510,61 +DA:511,434 +DA:512,421 DA:516,1 -DA:525,317 -DA:527,317 -DA:528,474 -DA:529,386 -DA:530,88 -DA:531,58 -DA:532,30 -DA:533,9 -DA:543,391 -DA:544,8 -DA:545,8 -DA:547,8 -DA:548,7 -DA:549,5 -DA:551,8 -DA:554,8 +DA:525,336 +DA:527,336 +DA:528,505 +DA:529,413 +DA:530,92 +DA:531,61 +DA:532,31 +DA:533,10 +DA:543,417 +DA:544,7 +DA:545,7 +DA:547,7 +DA:548,6 +DA:549,4 +DA:551,7 +DA:554,7 DA:558,320 DA:559,192 DA:567,32 LF:160 LH:155 BRDA:82,0,0,1 -BRDA:82,0,1,256 +BRDA:82,0,1,272 BRDA:166,1,0,0 -BRDA:166,1,1,89 -BRDA:171,2,0,148 -BRDA:171,2,1,148 -BRDA:171,2,2,112 +BRDA:166,1,1,104 +BRDA:171,2,0,174 +BRDA:171,2,1,174 +BRDA:171,2,2,132 BRDA:185,3,0,0 BRDA:185,3,1,55 BRDA:192,4,0,55 @@ -25228,11 +25279,11 @@ BRDA:346,23,0,31 BRDA:346,23,1,23 BRDA:349,24,0,23 BRDA:349,24,1,8 -BRDA:381,25,0,15 +BRDA:381,25,0,16 BRDA:381,25,1,8 BRDA:383,26,0,5 BRDA:383,26,1,3 -BRDA:389,27,0,19 +BRDA:389,27,0,20 BRDA:389,27,1,4 BRDA:403,28,0,21 BRDA:403,28,1,1 @@ -25252,7 +25303,7 @@ BRDA:439,35,0,13 BRDA:439,35,1,13 BRDA:443,36,0,13 BRDA:443,36,1,0 -BRDA:456,37,0,149 +BRDA:456,37,0,164 BRDA:456,37,1,10 BRDA:464,38,0,8 BRDA:464,38,1,54 @@ -25272,29 +25323,29 @@ BRDA:485,45,0,54 BRDA:485,45,1,0 BRDA:487,46,0,54 BRDA:487,46,1,0 -BRDA:496,47,0,256 -BRDA:496,47,1,58 -BRDA:509,48,0,58 -BRDA:509,48,1,408 -BRDA:511,49,0,395 +BRDA:496,47,0,272 +BRDA:496,47,1,61 +BRDA:509,48,0,61 +BRDA:509,48,1,434 +BRDA:511,49,0,421 BRDA:511,49,1,13 -BRDA:511,50,0,408 +BRDA:511,50,0,434 BRDA:511,50,1,13 BRDA:511,51,0,13 BRDA:511,51,1,0 -BRDA:528,52,0,386 -BRDA:528,52,1,88 -BRDA:530,53,0,58 -BRDA:530,53,1,30 -BRDA:532,54,0,9 +BRDA:528,52,0,413 +BRDA:528,52,1,92 +BRDA:530,53,0,61 +BRDA:530,53,1,31 +BRDA:532,54,0,10 BRDA:532,54,1,21 -BRDA:532,55,0,30 -BRDA:532,55,1,17 +BRDA:532,55,0,31 +BRDA:532,55,1,18 BRDA:533,56,0,7 -BRDA:533,56,1,2 -BRDA:547,57,0,7 +BRDA:533,56,1,3 +BRDA:547,57,0,6 BRDA:547,57,1,1 -BRDA:548,58,0,5 +BRDA:548,58,0,4 BRDA:548,58,1,2 BRDA:570,59,0,32 BRDA:570,59,1,0 @@ -25327,17 +25378,17 @@ FN:177,createListChainName FNF:15 FNH:15 FNDA:1,(anonymous_0) -FNDA:44,VListChain -FNDA:119,(anonymous_2) -FNDA:86,(anonymous_3) -FNDA:70,(anonymous_4) -FNDA:19,(anonymous_5) +FNDA:53,VListChain +FNDA:146,(anonymous_2) +FNDA:113,(anonymous_3) +FNDA:88,(anonymous_4) +FNDA:29,(anonymous_5) FNDA:18,(anonymous_6) -FNDA:4,(anonymous_7) +FNDA:5,(anonymous_7) FNDA:18,(anonymous_8) -FNDA:19,(anonymous_9) -FNDA:58,(anonymous_10) -FNDA:61,(anonymous_11) +FNDA:29,(anonymous_9) +FNDA:73,(anonymous_10) +FNDA:77,(anonymous_11) FNDA:18,(anonymous_12) FNDA:31,(anonymous_13) FNDA:39,createListChainName @@ -25352,40 +25403,40 @@ DA:10,1 DA:11,1 DA:12,1 DA:19,1 -DA:20,44 -DA:21,44 +DA:20,53 +DA:21,53 DA:29,1 -DA:34,119 -DA:35,119 -DA:36,119 -DA:37,86 -DA:40,86 -DA:41,70 -DA:43,70 -DA:45,58 -DA:47,58 -DA:48,58 -DA:50,58 -DA:53,46 -DA:54,8 -DA:57,46 -DA:58,12 +DA:34,146 +DA:35,146 +DA:36,146 +DA:37,113 +DA:40,113 +DA:41,88 +DA:43,88 +DA:45,73 +DA:47,73 +DA:48,73 +DA:50,73 +DA:53,60 +DA:54,13 +DA:57,60 +DA:58,13 DA:59,6 -DA:62,58 -DA:63,58 -DA:67,86 -DA:70,119 +DA:62,73 +DA:63,73 +DA:67,113 +DA:70,146 DA:77,1 DA:78,18 DA:86,1 -DA:87,4 -DA:88,3 -DA:90,3 -DA:91,3 -DA:92,3 -DA:94,3 -DA:96,3 -DA:97,3 +DA:87,5 +DA:88,4 +DA:90,4 +DA:91,4 +DA:92,4 +DA:94,4 +DA:96,4 +DA:97,4 DA:99,1 DA:109,1 DA:110,18 @@ -25401,17 +25452,17 @@ DA:126,31 DA:128,31 DA:129,31 DA:131,31 -DA:139,44 +DA:139,53 DA:145,1 -DA:146,19 +DA:146,29 DA:154,1 -DA:155,58 -DA:156,58 -DA:158,58 -DA:159,12 -DA:161,46 +DA:155,73 +DA:156,73 +DA:158,73 +DA:159,13 +DA:161,60 DA:165,1 -DA:166,61 +DA:166,77 DA:169,18 DA:170,18 DA:173,31 @@ -25419,30 +25470,30 @@ DA:175,1 DA:178,39 LF:76 LH:76 -BRDA:34,0,0,86 -BRDA:34,0,1,33 -BRDA:34,1,0,32 +BRDA:34,0,0,106 +BRDA:34,0,1,40 +BRDA:34,1,0,39 BRDA:34,1,1,1 -BRDA:43,2,0,58 -BRDA:43,2,1,12 -BRDA:45,3,0,58 -BRDA:45,3,1,44 -BRDA:46,4,0,44 +BRDA:43,2,0,73 +BRDA:43,2,1,15 +BRDA:45,3,0,73 +BRDA:45,3,1,53 +BRDA:46,4,0,53 BRDA:46,4,1,39 -BRDA:48,5,0,58 -BRDA:48,5,1,28 -BRDA:50,6,0,46 -BRDA:50,6,1,12 -BRDA:53,7,0,8 -BRDA:53,7,1,38 +BRDA:48,5,0,73 +BRDA:48,5,1,30 +BRDA:50,6,0,60 +BRDA:50,6,1,13 +BRDA:53,7,0,13 +BRDA:53,7,1,47 BRDA:58,8,0,6 -BRDA:58,8,1,6 +BRDA:58,8,1,7 BRDA:78,9,0,18 BRDA:78,9,1,12 -BRDA:87,10,0,3 +BRDA:87,10,0,4 BRDA:87,10,1,1 -BRDA:87,11,0,4 -BRDA:87,11,1,3 +BRDA:87,11,0,5 +BRDA:87,11,1,4 BRDA:116,12,0,31 BRDA:116,12,1,0 BRDA:118,13,0,8 @@ -25451,10 +25502,10 @@ BRDA:119,14,0,2 BRDA:119,14,1,6 BRDA:126,15,0,31 BRDA:126,15,1,0 -BRDA:156,16,0,58 +BRDA:156,16,0,73 BRDA:156,16,1,0 -BRDA:158,17,0,12 -BRDA:158,17,1,46 +BRDA:158,17,0,13 +BRDA:158,17,1,60 BRF:36 BRH:33 end_of_record @@ -25490,13 +25541,13 @@ FN:513,getChildrenAndUnwrap FNF:27 FNH:19 FNDA:1,(anonymous_0) -FNDA:498,VListItem -FNDA:187,(anonymous_2) -FNDA:257,(anonymous_3) -FNDA:331,(anonymous_4) +FNDA:526,VListItem +FNDA:213,(anonymous_2) +FNDA:283,(anonymous_3) +FNDA:332,(anonymous_4) FNDA:120,(anonymous_5) FNDA:281,(anonymous_6) -FNDA:198,(anonymous_7) +FNDA:218,(anonymous_7) FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:0,(anonymous_10) @@ -25510,10 +25561,10 @@ FNDA:35,(anonymous_17) FNDA:0,(anonymous_18) FNDA:4,(anonymous_19) FNDA:131,(anonymous_20) -FNDA:140,(anonymous_21) +FNDA:141,(anonymous_21) FNDA:40,(anonymous_23) -FNDA:111,(anonymous_24) -FNDA:111,createListElement +FNDA:112,(anonymous_24) +FNDA:112,createListElement FNDA:10,wrapIfNotBlockNode FNDA:10,getChildrenAndUnwrap DA:1,1 @@ -25540,26 +25591,26 @@ DA:35,1 DA:36,1 DA:42,1 DA:79,1 -DA:83,498 -DA:93,1578 -DA:100,498 +DA:83,526 +DA:93,1667 +DA:100,526 DA:101,1 -DA:104,497 -DA:107,497 -DA:109,497 -DA:112,497 +DA:104,525 +DA:107,525 +DA:109,525 +DA:112,525 DA:118,1 -DA:119,187 +DA:119,213 DA:125,1 -DA:126,257 +DA:126,283 DA:132,1 -DA:133,331 +DA:133,332 DA:139,1 DA:140,120 DA:147,1 DA:148,281 DA:156,1 -DA:157,198 +DA:157,218 DA:163,1 DA:164,0 DA:170,1 @@ -25603,35 +25654,35 @@ DA:272,6 DA:273,5 DA:278,5 DA:280,0 -DA:292,140 -DA:295,241 -DA:297,140 -DA:299,140 +DA:292,141 +DA:295,243 +DA:297,141 +DA:299,141 DA:301,0 DA:302,0 DA:309,0 DA:310,0 DA:315,0 DA:318,0 -DA:325,140 +DA:325,141 DA:326,98 DA:327,32 DA:328,32 -DA:338,140 -DA:339,111 -DA:340,111 -DA:347,111 -DA:348,111 -DA:352,111 +DA:338,141 +DA:339,112 +DA:340,112 +DA:347,112 +DA:348,112 +DA:352,112 DA:353,19 DA:354,19 DA:358,5 -DA:363,140 -DA:364,140 -DA:367,140 -DA:368,130 -DA:369,130 -DA:373,140 +DA:363,141 +DA:364,141 +DA:367,141 +DA:368,131 +DA:369,131 +DA:373,141 DA:375,10 DA:376,10 DA:384,10 @@ -25649,32 +25700,32 @@ DA:404,40 DA:405,0 DA:412,10 DA:432,1 -DA:433,111 -DA:434,111 +DA:433,112 +DA:434,112 DA:435,50 DA:436,50 DA:437,72 DA:438,72 DA:440,50 -DA:442,61 +DA:442,62 DA:444,1 -DA:452,111 -DA:461,111 +DA:452,112 +DA:461,112 DA:462,67 DA:464,9 DA:465,9 DA:468,58 DA:469,58 -DA:473,44 -DA:477,111 +DA:473,45 +DA:477,112 DA:478,7 DA:479,7 DA:480,0 -DA:484,111 +DA:484,112 DA:485,28 -DA:491,111 +DA:491,112 DA:492,3 -DA:498,111 +DA:498,112 DA:502,10 DA:507,7 DA:510,10 @@ -25684,11 +25735,11 @@ DA:516,10 LF:165 LH:143 BRDA:100,0,0,1 -BRDA:100,0,1,497 -BRDA:105,1,0,480 +BRDA:100,0,1,525 +BRDA:105,1,0,508 BRDA:105,1,1,17 -BRDA:109,2,0,497 -BRDA:109,2,1,497 +BRDA:109,2,0,525 +BRDA:109,2,1,525 BRDA:171,3,0,0 BRDA:171,3,1,0 BRDA:171,4,0,0 @@ -25727,10 +25778,10 @@ BRDA:273,19,1,0 BRDA:274,20,0,5 BRDA:274,20,1,5 BRDA:274,20,2,5 -BRDA:295,21,0,101 +BRDA:295,21,0,102 BRDA:295,21,1,39 BRDA:299,22,0,0 -BRDA:299,22,1,140 +BRDA:299,22,1,141 BRDA:301,23,0,0 BRDA:301,23,1,0 BRDA:310,24,0,0 @@ -25740,7 +25791,7 @@ BRDA:311,25,1,0 BRDA:326,26,0,32 BRDA:326,26,1,66 BRDA:352,27,0,19 -BRDA:352,27,1,92 +BRDA:352,27,1,93 BRDA:353,28,0,0 BRDA:353,28,1,19 BRDA:353,29,0,19 @@ -25750,11 +25801,11 @@ BRDA:354,30,1,14 BRDA:355,31,0,19 BRDA:355,31,1,5 BRDA:364,32,0,2 -BRDA:364,32,1,138 -BRDA:367,33,0,130 +BRDA:364,32,1,139 +BRDA:367,33,0,131 BRDA:367,33,1,10 BRDA:373,34,0,10 -BRDA:373,34,1,130 +BRDA:373,34,1,131 BRDA:377,35,0,10 BRDA:377,35,1,0 BRDA:384,36,0,10 @@ -25768,8 +25819,8 @@ BRDA:394,39,1,0 BRDA:404,40,0,0 BRDA:404,40,1,40 BRDA:434,41,0,50 -BRDA:434,41,1,61 -BRDA:434,42,0,111 +BRDA:434,41,1,62 +BRDA:434,42,0,112 BRDA:434,42,1,98 BRDA:436,43,0,122 BRDA:436,43,1,72 @@ -25780,28 +25831,28 @@ BRDA:438,45,1,72 BRDA:438,46,0,72 BRDA:438,46,1,72 BRDA:461,47,0,67 -BRDA:461,47,1,44 -BRDA:461,48,0,111 -BRDA:461,48,1,80 +BRDA:461,47,1,45 +BRDA:461,48,0,112 +BRDA:461,48,1,81 BRDA:461,48,2,74 BRDA:462,49,0,9 BRDA:462,49,1,58 -BRDA:473,50,0,31 +BRDA:473,50,0,32 BRDA:473,50,1,13 BRDA:477,51,0,7 -BRDA:477,51,1,104 -BRDA:477,52,0,111 +BRDA:477,51,1,105 +BRDA:477,52,0,112 BRDA:477,52,1,98 BRDA:477,52,2,74 BRDA:479,53,0,0 BRDA:479,53,1,7 BRDA:484,54,0,28 -BRDA:484,54,1,83 -BRDA:484,55,0,111 -BRDA:484,55,1,92 +BRDA:484,54,1,84 +BRDA:484,55,0,112 +BRDA:484,55,1,93 BRDA:491,56,0,3 -BRDA:491,56,1,108 -BRDA:491,57,0,111 +BRDA:491,56,1,109 +BRDA:491,57,0,112 BRDA:491,57,1,19 BRDA:502,58,0,7 BRDA:502,58,1,3 @@ -25865,7 +25916,7 @@ FN:115,tryIncludeSiblingNode FN:133,createVListFromItemNode FNF:6 FNH:6 -FNDA:41,createVListFromRegion +FNDA:52,createVListFromRegion FNDA:43,(anonymous_1) FNDA:52,(anonymous_2) FNDA:22,(anonymous_3) @@ -25885,12 +25936,12 @@ DA:11,1 DA:12,1 DA:20,1 DA:30,1 -DA:35,41 +DA:35,52 DA:36,1 -DA:39,40 -DA:41,40 -DA:42,10 -DA:43,10 +DA:39,51 +DA:41,51 +DA:42,21 +DA:43,21 DA:44,8 DA:47,30 DA:52,30 @@ -25911,8 +25962,8 @@ DA:83,30 DA:84,16 DA:85,16 DA:88,52 -DA:91,40 -DA:93,40 +DA:91,51 +DA:93,51 DA:94,38 DA:95,38 DA:101,38 @@ -25920,7 +25971,7 @@ DA:102,38 DA:103,22 DA:104,13 DA:106,9 -DA:112,40 +DA:112,51 DA:116,32 DA:117,32 DA:118,32 @@ -25939,11 +25990,11 @@ DA:147,5 LF:65 LH:65 BRDA:35,0,0,1 -BRDA:35,0,1,40 -BRDA:41,1,0,10 +BRDA:35,0,1,51 +BRDA:41,1,0,21 BRDA:41,1,1,30 BRDA:43,2,0,8 -BRDA:43,2,1,2 +BRDA:43,2,1,13 BRDA:55,3,0,30 BRDA:55,3,1,13 BRDA:56,4,0,29 @@ -25960,7 +26011,7 @@ BRDA:72,8,1,1 BRDA:83,9,0,16 BRDA:83,9,1,14 BRDA:93,10,0,38 -BRDA:93,10,1,2 +BRDA:93,10,1,13 BRDA:94,11,0,38 BRDA:94,11,1,0 BRDA:96,12,0,33 @@ -25994,21 +26045,21 @@ FN:25,getListTypeFromNode FN:41,isListElement FNF:2 FNH:2 -FNDA:1588,getListTypeFromNode -FNDA:1025,isListElement +FNDA:1665,getListTypeFromNode +FNDA:1083,isListElement DA:1,1 DA:25,1 -DA:26,1588 -DA:28,922 +DA:26,1665 +DA:28,973 DA:30,204 -DA:32,462 +DA:32,488 DA:41,1 -DA:42,1025 +DA:42,1083 LF:8 LH:8 -BRDA:27,0,0,922 +BRDA:27,0,0,973 BRDA:27,0,1,204 -BRDA:27,0,2,462 +BRDA:27,0,2,488 BRF:3 BRH:3 end_of_record @@ -26017,21 +26068,21 @@ SF:packages/roosterjs-editor-dom/lib/list/getRootListNode.ts FN:21,getRootListNode FNF:1 FNH:1 -FNDA:168,getRootListNode +FNDA:197,getRootListNode DA:1,1 DA:21,1 -DA:27,168 -DA:34,168 -DA:35,124 -DA:36,124 -DA:43,23 -DA:47,168 +DA:27,197 +DA:34,197 +DA:35,142 +DA:36,142 +DA:43,26 +DA:47,197 LF:8 LH:8 -BRDA:27,0,0,168 -BRDA:27,0,1,166 -BRDA:34,1,0,124 -BRDA:34,1,1,44 +BRDA:27,0,0,197 +BRDA:27,0,1,195 +BRDA:34,1,0,142 +BRDA:34,1,1,55 BRF:4 BRH:4 end_of_record @@ -26062,102 +26113,102 @@ FN:39,getInlineChildElementsStyle FN:61,(anonymous_6) FNF:5 FNH:5 -FNDA:274,setListItemStyle -FNDA:951,(anonymous_1) -FNDA:178,(anonymous_2) -FNDA:274,getInlineChildElementsStyle -FNDA:188,(anonymous_6) +FNDA:279,setListItemStyle +FNDA:961,(anonymous_1) +FNDA:191,(anonymous_2) +FNDA:279,getInlineChildElementsStyle +FNDA:201,(anonymous_6) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:16,274 -DA:18,274 -DA:20,274 -DA:21,951 -DA:22,178 -DA:25,951 -DA:30,26 -DA:31,24 +DA:16,282 +DA:18,279 +DA:20,279 +DA:21,961 +DA:22,191 +DA:25,961 +DA:30,29 +DA:31,27 DA:33,2 -DA:40,274 -DA:41,274 -DA:42,274 -DA:44,274 -DA:45,260 -DA:46,260 -DA:47,260 -DA:49,260 -DA:53,260 -DA:59,60 -DA:61,60 -DA:62,188 -DA:66,188 -DA:67,56 -DA:70,188 -DA:71,75 -DA:75,60 -DA:76,29 -DA:78,31 -DA:82,260 -DA:83,56 -DA:86,260 -DA:89,274 +DA:40,279 +DA:41,279 +DA:42,279 +DA:44,279 +DA:45,271 +DA:46,271 +DA:47,271 +DA:49,271 +DA:53,271 +DA:59,68 +DA:61,68 +DA:62,201 +DA:66,201 +DA:67,64 +DA:70,201 +DA:71,83 +DA:75,68 +DA:76,31 +DA:78,37 +DA:82,271 +DA:83,64 +DA:86,271 +DA:89,279 LF:36 LH:36 -BRDA:16,0,0,0 -BRDA:16,0,1,274 -BRDA:22,1,0,75 -BRDA:22,1,1,103 -BRDA:25,2,0,26 -BRDA:25,2,1,925 -BRDA:26,3,0,951 -BRDA:26,3,1,951 -BRDA:26,3,2,863 -BRDA:26,3,3,109 -BRDA:30,4,0,24 +BRDA:16,0,0,3 +BRDA:16,0,1,276 +BRDA:22,1,0,83 +BRDA:22,1,1,108 +BRDA:25,2,0,29 +BRDA:25,2,1,932 +BRDA:26,3,0,961 +BRDA:26,3,1,961 +BRDA:26,3,2,866 +BRDA:26,3,3,116 +BRDA:30,4,0,27 BRDA:30,4,1,2 -BRDA:46,5,0,260 +BRDA:46,5,0,271 BRDA:46,5,1,0 BRDA:46,6,0,0 -BRDA:46,6,1,260 -BRDA:46,7,0,260 -BRDA:46,7,1,260 -BRDA:49,8,0,260 +BRDA:46,6,1,271 +BRDA:46,7,0,271 +BRDA:46,7,1,271 +BRDA:49,8,0,271 BRDA:49,8,1,0 -BRDA:63,9,0,138 -BRDA:63,9,1,50 -BRDA:66,10,0,56 -BRDA:66,10,1,132 -BRDA:70,11,0,75 -BRDA:70,11,1,113 -BRDA:70,12,0,188 -BRDA:70,12,1,75 -BRDA:75,13,0,29 -BRDA:75,13,1,31 +BRDA:63,9,0,147 +BRDA:63,9,1,54 +BRDA:66,10,0,64 +BRDA:66,10,1,137 +BRDA:70,11,0,83 +BRDA:70,11,1,118 +BRDA:70,12,0,201 +BRDA:70,12,1,83 +BRDA:75,13,0,31 +BRDA:75,13,1,37 BRDA:75,14,0,0 -BRDA:75,14,1,60 -BRDA:75,15,0,60 -BRDA:75,15,1,60 +BRDA:75,14,1,68 +BRDA:75,15,0,68 +BRDA:75,15,1,68 BRDA:75,16,0,0 -BRDA:75,16,1,60 -BRDA:75,17,0,60 -BRDA:75,17,1,60 -BRDA:54,18,0,320 -BRDA:54,18,1,289 -BRDA:54,18,2,60 -BRDA:54,18,3,60 -BRDA:54,18,4,20 -BRDA:57,19,0,20 -BRDA:57,19,1,0 +BRDA:75,16,1,68 +BRDA:75,17,0,68 +BRDA:75,17,1,68 +BRDA:54,18,0,339 +BRDA:54,18,1,302 +BRDA:54,18,2,71 +BRDA:54,18,3,71 +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,56 -BRDA:82,22,1,204 +BRDA:57,20,1,26 +BRDA:57,21,0,26 +BRDA:57,21,1,26 +BRDA:82,22,0,64 +BRDA:82,22,1,207 BRF:51 -BRH:43 +BRH:45 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts @@ -26232,53 +26283,53 @@ FN:50,setMetadata FN:64,removeMetadata FNF:3 FNH:3 -FNDA:900,getMetadata -FNDA:80,setMetadata -FNDA:61,removeMetadata +FNDA:1029,getMetadata +FNDA:94,setMetadata +FNDA:50,removeMetadata DA:1,1 DA:4,1 DA:15,1 -DA:20,900 -DA:23,900 -DA:24,900 -DA:27,900 -DA:28,899 -DA:29,139 -DA:30,760 -DA:31,758 +DA:20,1029 +DA:23,1029 +DA:24,1029 +DA:27,1029 +DA:28,1028 +DA:29,118 +DA:30,910 +DA:31,908 DA:35,3 DA:36,1 DA:38,2 DA:50,1 -DA:51,80 -DA:52,79 -DA:53,79 +DA:51,94 +DA:52,93 +DA:53,93 DA:55,1 DA:64,1 -DA:65,61 +DA:65,50 DA:66,43 DA:67,43 DA:68,1 DA:69,1 -DA:72,18 +DA:72,7 LF:26 LH:26 -BRDA:24,0,0,82 -BRDA:24,0,1,818 -BRDA:27,1,0,899 +BRDA:24,0,0,72 +BRDA:24,0,1,957 +BRDA:27,1,0,1028 BRDA:27,1,1,1 -BRDA:28,2,0,139 -BRDA:28,2,1,760 -BRDA:30,3,0,758 +BRDA:28,2,0,118 +BRDA:28,2,1,910 +BRDA:30,3,0,908 BRDA:30,3,1,2 BRDA:35,4,0,1 BRDA:35,4,1,2 -BRDA:51,5,0,79 +BRDA:51,5,0,93 BRDA:51,5,1,1 -BRDA:51,6,0,80 -BRDA:51,6,1,51 +BRDA:51,6,0,94 +BRDA:51,6,1,75 BRDA:65,7,0,43 -BRDA:65,7,1,18 +BRDA:65,7,1,7 BRDA:67,8,0,1 BRDA:67,8,1,42 BRF:18 @@ -26292,75 +26343,75 @@ FN:52,(anonymous_2) FN:66,areSameNumbers FNF:4 FNH:4 -FNDA:4334,validate -FNDA:992,(anonymous_1) -FNDA:1594,(anonymous_2) +FNDA:4522,validate +FNDA:982,(anonymous_1) +FNDA:1626,(anonymous_2) FNDA:54,areSameNumbers DA:1,1 DA:10,1 -DA:11,4334 -DA:12,4334 -DA:13,1663 -DA:14,2671 +DA:11,4522 +DA:12,4522 +DA:13,1828 +DA:14,2694 DA:18,47 -DA:20,2624 +DA:20,2647 DA:22,282 DA:25,282 -DA:28,1355 -DA:33,1355 -DA:36,239 -DA:39,239 -DA:42,322 -DA:46,992 -DA:47,322 -DA:50,418 -DA:53,1594 -DA:55,418 +DA:28,1339 +DA:33,1339 +DA:36,263 +DA:39,263 +DA:42,320 +DA:46,982 +DA:47,320 +DA:50,435 +DA:53,1626 +DA:55,435 DA:58,8 DA:59,8 -DA:63,4287 +DA:63,4475 DA:67,54 LF:24 LH:24 -BRDA:12,0,0,1663 -BRDA:12,0,1,2671 -BRDA:12,1,0,4334 -BRDA:12,1,1,1261 -BRDA:12,1,2,3957 -BRDA:12,1,3,1700 +BRDA:12,0,0,1828 +BRDA:12,0,1,2694 +BRDA:12,1,0,4522 +BRDA:12,1,1,1288 +BRDA:12,1,2,4129 +BRDA:12,1,3,1891 BRDA:14,2,0,47 -BRDA:14,2,1,2624 -BRDA:15,3,0,2671 -BRDA:15,3,1,2289 -BRDA:15,3,2,2637 -BRDA:15,3,3,2224 +BRDA:14,2,1,2647 +BRDA:15,3,0,2694 +BRDA:15,3,1,2300 +BRDA:15,3,2,2660 +BRDA:15,3,3,2205 BRDA:21,4,0,282 -BRDA:21,4,1,1355 -BRDA:21,4,2,239 -BRDA:21,4,3,322 -BRDA:21,4,4,418 +BRDA:21,4,1,1339 +BRDA:21,4,2,263 +BRDA:21,4,3,320 +BRDA:21,4,4,435 BRDA:21,4,5,8 BRDA:23,5,0,282 BRDA:23,5,1,266 BRDA:23,5,2,4 -BRDA:29,6,0,1355 -BRDA:29,6,1,1337 +BRDA:29,6,0,1339 +BRDA:29,6,1,1321 BRDA:29,6,2,54 -BRDA:29,6,3,1307 -BRDA:29,6,4,193 -BRDA:29,6,5,1307 -BRDA:29,6,6,193 -BRDA:37,7,0,239 -BRDA:37,7,1,225 +BRDA:29,6,3,1291 +BRDA:29,6,4,187 +BRDA:29,6,5,1291 +BRDA:29,6,6,187 +BRDA:37,7,0,263 +BRDA:37,7,1,249 BRDA:37,7,2,4 -BRDA:43,8,0,322 -BRDA:43,8,1,310 +BRDA:43,8,0,320 +BRDA:43,8,1,308 BRDA:43,8,2,4 -BRDA:43,8,3,308 +BRDA:43,8,3,306 BRDA:43,8,4,4 -BRDA:43,8,5,306 -BRDA:51,9,0,418 -BRDA:51,9,1,410 +BRDA:43,8,5,304 +BRDA:51,9,0,435 +BRDA:51,9,1,427 BRF:39 BRH:39 end_of_record @@ -26383,13 +26434,13 @@ FN:22,(anonymous_1) FNF:2 FNH:2 FNDA:6,(anonymous_0) -FNDA:31,(anonymous_1) +FNDA:28,(anonymous_1) DA:3,1 DA:13,1 DA:14,6 DA:22,1 -DA:23,31 -DA:24,31 +DA:23,28 +DA:24,28 DA:26,1 LF:7 LH:7 @@ -26402,8 +26453,8 @@ FN:41,getPasteSource FN:55,(anonymous_1) FNF:2 FNH:2 -FNDA:24,getPasteSource -FNDA:168,(anonymous_1) +FNDA:19,getPasteSource +FNDA:133,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 @@ -26413,23 +26464,23 @@ DA:6,1 DA:7,1 DA:25,1 DA:41,1 -DA:45,72 -DA:47,24 -DA:48,24 -DA:55,24 -DA:56,168 -DA:57,19 -DA:61,24 +DA:45,57 +DA:47,19 +DA:48,19 +DA:55,19 +DA:56,133 +DA:57,14 +DA:61,19 LF:16 LH:16 -BRDA:56,0,0,19 -BRDA:56,0,1,149 -BRDA:56,1,0,168 -BRDA:56,1,1,119 -BRDA:61,2,0,19 +BRDA:56,0,0,14 +BRDA:56,0,1,119 +BRDA:56,1,0,133 +BRDA:56,1,1,94 +BRDA:61,2,0,14 BRDA:61,2,1,5 -BRDA:61,3,0,24 -BRDA:61,3,1,19 +BRDA:61,3,0,19 +BRDA:61,3,1,14 BRF:8 BRH:8 end_of_record @@ -26438,12 +26489,12 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocume FN:12,(anonymous_0) FNF:1 FNH:1 -FNDA:28,(anonymous_0) +FNDA:23,(anonymous_0) DA:1,1 DA:4,1 DA:12,1 -DA:13,28 -DA:15,28 +DA:13,23 +DA:15,23 DA:17,1 LF:6 LH:6 @@ -26455,16 +26506,16 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocumen FN:13,(anonymous_0) FNF:1 FNH:1 -FNDA:22,(anonymous_0) +FNDA:19,(anonymous_0) DA:1,1 DA:5,1 DA:13,1 -DA:14,22 -DA:16,22 +DA:14,19 +DA:16,19 DA:21,1 LF:6 LH:6 -BRDA:17,0,0,22 +BRDA:17,0,0,19 BRDA:17,0,1,5 BRF:2 BRH:2 @@ -26474,11 +26525,11 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocumen FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:14,(anonymous_0) +FNDA:11,(anonymous_0) DA:1,1 DA:10,1 -DA:11,14 -DA:12,14 +DA:11,11 +DA:12,11 DA:15,1 LF:5 LH:5 @@ -26490,11 +26541,11 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopD FN:12,(anonymous_0) FNF:1 FNH:1 -FNDA:18,(anonymous_0) +FNDA:15,(anonymous_0) DA:1,1 DA:4,1 DA:12,1 -DA:13,18 +DA:13,15 DA:15,1 LF:5 LH:5 @@ -26506,19 +26557,19 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocumen FN:14,(anonymous_0) FNF:1 FNH:1 -FNDA:28,(anonymous_0) +FNDA:23,(anonymous_0) DA:1,1 DA:4,1 DA:5,1 DA:6,1 DA:14,1 -DA:15,28 -DA:16,28 +DA:15,23 +DA:16,23 DA:22,1 LF:8 LH:8 -BRDA:17,0,0,28 -BRDA:17,0,1,23 +BRDA:17,0,0,23 +BRDA:17,0,1,20 BRF:2 BRH:2 end_of_record @@ -26527,14 +26578,14 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingl FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:14,(anonymous_0) +FNDA:11,(anonymous_0) DA:10,1 -DA:11,28 -DA:12,14 +DA:11,22 +DA:12,11 DA:19,1 LF:4 LH:4 -BRDA:13,0,0,14 +BRDA:13,0,0,11 BRDA:13,0,1,3 BRDA:13,0,2,2 BRDA:14,1,0,0 @@ -26550,35 +26601,35 @@ FN:13,collapseNodesInRegion FN:28,(anonymous_1) FNF:2 FNH:2 -FNDA:72,collapseNodesInRegion -FNDA:141,(anonymous_1) +FNDA:92,collapseNodesInRegion +FNDA:179,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:17,72 -DA:18,4 -DA:21,68 -DA:28,141 -DA:30,68 -DA:31,68 -DA:33,68 -DA:34,66 +DA:17,92 +DA:18,5 +DA:21,87 +DA:28,179 +DA:30,87 +DA:31,87 +DA:33,87 +DA:34,85 DA:36,2 LF:13 LH:13 -BRDA:17,0,0,4 -BRDA:17,0,1,68 -BRDA:17,1,0,72 -BRDA:17,1,1,70 +BRDA:17,0,0,5 +BRDA:17,0,1,87 +BRDA:17,1,0,92 +BRDA:17,1,1,90 BRDA:22,2,0,33 -BRDA:22,2,1,35 -BRDA:28,3,0,68 -BRDA:28,3,1,68 -BRDA:33,4,0,66 +BRDA:22,2,1,54 +BRDA:28,3,0,87 +BRDA:28,3,1,87 +BRDA:33,4,0,85 BRDA:33,4,1,2 -BRDA:33,5,0,68 -BRDA:33,5,1,66 +BRDA:33,5,0,87 +BRDA:33,5,1,85 BRF:12 BRH:12 end_of_record @@ -26596,16 +26647,16 @@ FN:202,(anonymous_8) FN:225,areNodesValid FNF:10 FNH:10 -FNDA:142,getRegionsFromRange -FNDA:215,(anonymous_1) -FNDA:175,getRegionCreator -FNDA:309,(anonymous_3) -FNDA:139,buildBoundaryTree +FNDA:162,getRegionsFromRange +FNDA:235,(anonymous_1) +FNDA:195,getRegionCreator +FNDA:329,(anonymous_3) +FNDA:159,buildBoundaryTree FNDA:145,(anonymous_5) FNDA:59,(anonymous_6) -FNDA:257,iterateNodes +FNDA:277,iterateNodes FNDA:118,(anonymous_8) -FNDA:309,areNodesValid +FNDA:329,areNodesValid DA:1,1 DA:2,1 DA:3,1 @@ -26613,24 +26664,24 @@ DA:4,1 DA:5,1 DA:26,1 DA:41,1 -DA:46,142 -DA:47,142 -DA:48,139 -DA:49,139 -DA:50,139 -DA:51,139 -DA:52,139 -DA:53,139 -DA:56,215 +DA:46,162 +DA:47,162 +DA:48,159 +DA:49,159 +DA:50,159 +DA:51,159 +DA:52,159 +DA:53,159 +DA:56,235 DA:62,1 -DA:66,175 -DA:67,175 -DA:68,175 -DA:69,309 -DA:119,139 -DA:120,139 -DA:121,139 -DA:131,139 +DA:66,195 +DA:67,195 +DA:68,195 +DA:69,329 +DA:119,159 +DA:120,159 +DA:121,159 +DA:131,159 DA:135,145 DA:136,145 DA:137,118 @@ -26644,15 +26695,15 @@ DA:146,68 DA:149,118 DA:150,118 DA:153,118 -DA:160,139 -DA:180,257 -DA:181,257 -DA:182,514 -DA:183,257 -DA:185,257 -DA:186,196 -DA:187,196 -DA:188,196 +DA:160,159 +DA:180,277 +DA:181,277 +DA:182,554 +DA:183,277 +DA:185,277 +DA:186,216 +DA:187,216 +DA:188,216 DA:192,61 DA:193,105 DA:194,105 @@ -26663,26 +26714,26 @@ DA:198,19 DA:202,105 DA:204,118 DA:205,118 -DA:210,257 -DA:231,309 +DA:210,277 +DA:231,329 DA:232,0 -DA:234,309 -DA:235,309 -DA:237,309 -DA:239,309 -DA:241,309 -DA:247,309 +DA:234,329 +DA:235,329 +DA:237,329 +DA:239,329 +DA:241,329 +DA:247,329 LF:66 LH:65 -BRDA:47,0,0,139 +BRDA:47,0,0,159 BRDA:47,0,1,3 -BRDA:47,1,0,142 -BRDA:47,1,1,140 -BRDA:50,2,0,139 -BRDA:50,2,1,115 -BRDA:51,3,0,139 -BRDA:51,3,1,118 -BRDA:70,4,0,251 +BRDA:47,1,0,162 +BRDA:47,1,1,160 +BRDA:50,2,0,159 +BRDA:50,2,1,135 +BRDA:51,3,0,159 +BRDA:51,3,1,138 +BRDA:70,4,0,271 BRDA:70,4,1,58 BRDA:136,5,0,118 BRDA:136,5,1,27 @@ -26692,11 +26743,11 @@ BRDA:141,7,0,118 BRDA:141,7,1,92 BRDA:144,8,0,68 BRDA:144,8,1,50 -BRDA:180,9,0,257 -BRDA:180,9,1,167 -BRDA:185,10,0,196 +BRDA:180,9,0,277 +BRDA:180,9,1,187 +BRDA:185,10,0,216 BRDA:185,10,1,61 -BRDA:187,11,0,196 +BRDA:187,11,0,216 BRDA:187,11,1,0 BRDA:192,12,0,166 BRDA:192,12,1,129 @@ -26714,29 +26765,29 @@ BRDA:202,18,0,37 BRDA:202,18,1,68 BRDA:202,19,0,105 BRDA:202,19,1,105 -BRDA:210,20,0,257 -BRDA:210,20,1,233 +BRDA:210,20,0,277 +BRDA:210,20,1,253 BRDA:231,21,0,0 -BRDA:231,21,1,309 -BRDA:234,22,0,309 +BRDA:231,21,1,329 +BRDA:234,22,0,329 BRDA:234,22,1,68 -BRDA:235,23,0,309 +BRDA:235,23,0,329 BRDA:235,23,1,64 -BRDA:237,24,0,309 +BRDA:237,24,0,329 BRDA:237,24,1,68 BRDA:237,24,2,68 -BRDA:239,25,0,309 +BRDA:239,25,0,329 BRDA:239,25,1,64 BRDA:239,25,2,64 -BRDA:241,26,0,309 +BRDA:241,26,0,329 BRDA:241,26,1,68 BRDA:241,26,2,27 BRDA:241,26,3,27 BRDA:241,26,4,26 BRDA:241,26,5,26 -BRDA:247,27,0,309 -BRDA:247,27,1,281 -BRDA:247,27,2,252 +BRDA:247,27,0,329 +BRDA:247,27,1,301 +BRDA:247,27,2,272 BRF:63 BRH:61 end_of_record @@ -26746,59 +26797,59 @@ FN:15,getSelectedBlockElementsInRegion FN:36,(anonymous_1) FNF:2 FNH:2 -FNDA:99,getSelectedBlockElementsInRegion -FNDA:159,(anonymous_1) +FNDA:119,getSelectedBlockElementsInRegion +FNDA:208,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:15,1 -DA:20,99 -DA:21,99 -DA:23,99 -DA:24,178 -DA:25,89 -DA:27,89 -DA:28,89 -DA:32,159 -DA:36,89 -DA:37,159 -DA:38,159 -DA:40,159 -DA:41,4 -DA:42,4 -DA:44,155 -DA:49,99 -DA:50,1 -DA:54,1 -DA:56,1 -DA:58,1 -DA:59,1 -DA:63,99 +DA:20,119 +DA:21,119 +DA:23,119 +DA:24,218 +DA:25,109 +DA:27,109 +DA:28,109 +DA:32,208 +DA:36,109 +DA:37,208 +DA:38,208 +DA:40,208 +DA:41,14 +DA:42,14 +DA:44,194 +DA:49,119 +DA:50,2 +DA:54,2 +DA:56,2 +DA:58,2 +DA:59,2 +DA:63,119 LF:28 LH:28 -BRDA:23,0,0,89 +BRDA:23,0,0,109 BRDA:23,0,1,10 BRDA:28,1,0,0 -BRDA:28,1,1,89 -BRDA:28,2,0,89 -BRDA:28,2,1,89 -BRDA:40,3,0,4 -BRDA:40,3,1,155 -BRDA:40,4,0,159 -BRDA:40,4,1,147 +BRDA:28,1,1,109 +BRDA:28,2,0,109 +BRDA:28,2,1,109 +BRDA:40,3,0,14 +BRDA:40,3,1,194 +BRDA:40,4,0,208 +BRDA:40,4,1,196 BRDA:41,5,0,0 -BRDA:41,5,1,4 -BRDA:41,6,0,4 -BRDA:41,6,1,4 -BRDA:49,7,0,1 -BRDA:49,7,1,98 -BRDA:49,8,0,99 -BRDA:49,8,1,11 -BRDA:49,8,2,10 -BRDA:49,8,3,3 -BRDA:58,9,0,1 +BRDA:41,5,1,14 +BRDA:41,6,0,14 +BRDA:41,6,1,14 +BRDA:49,7,0,2 +BRDA:49,7,1,117 +BRDA:49,8,0,119 +BRDA:49,8,1,13 +BRDA:49,8,2,12 +BRDA:49,8,3,5 +BRDA:58,9,0,2 BRDA:58,9,1,0 BRF:22 BRH:19 @@ -26809,56 +26860,56 @@ FN:12,getSelectionRangeInRegion FN:46,isRegion FNF:2 FNH:2 -FNDA:126,getSelectionRangeInRegion -FNDA:125,isRegion +FNDA:146,getSelectionRangeInRegion +FNDA:145,isRegion DA:1,1 DA:2,1 DA:3,1 DA:12,1 -DA:13,126 +DA:13,146 DA:14,1 -DA:17,500 -DA:18,125 -DA:21,125 -DA:24,125 -DA:26,125 +DA:17,580 +DA:18,145 +DA:21,145 +DA:24,145 +DA:26,145 DA:27,1 -DA:28,124 -DA:29,121 -DA:30,121 -DA:31,242 -DA:33,121 -DA:34,114 -DA:37,114 -DA:39,114 +DA:28,144 +DA:29,141 +DA:30,141 +DA:31,282 +DA:33,141 +DA:34,134 +DA:37,134 +DA:39,134 DA:43,10 -DA:47,125 -DA:48,125 +DA:47,145 +DA:48,145 LF:23 LH:23 BRDA:13,0,0,1 -BRDA:13,0,1,125 +BRDA:13,0,1,145 BRDA:19,1,0,18 -BRDA:19,1,1,107 +BRDA:19,1,1,127 BRDA:22,2,0,15 -BRDA:22,2,1,110 -BRDA:24,3,0,125 -BRDA:24,3,1,122 -BRDA:24,3,2,122 +BRDA:22,2,1,130 +BRDA:24,3,0,145 +BRDA:24,3,1,142 +BRDA:24,3,2,142 BRDA:26,4,0,1 -BRDA:26,4,1,124 -BRDA:28,5,0,121 +BRDA:26,4,1,144 +BRDA:28,5,0,141 BRDA:28,5,1,3 -BRDA:33,6,0,114 +BRDA:33,6,0,134 BRDA:33,6,1,7 -BRDA:33,7,0,121 -BRDA:33,7,1,118 -BRDA:35,8,0,62 -BRDA:35,8,1,52 +BRDA:33,7,0,141 +BRDA:33,7,1,138 +BRDA:35,8,0,71 +BRDA:35,8,1,63 BRDA:37,9,0,25 -BRDA:37,9,1,89 -BRDA:48,10,0,125 -BRDA:48,10,1,124 +BRDA:37,9,1,109 +BRDA:48,10,0,145 +BRDA:48,10,1,144 BRF:23 BRH:23 end_of_record @@ -26867,17 +26918,17 @@ SF:packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts FN:9,isNodeInRegion FNF:1 FNH:1 -FNDA:472,isNodeInRegion +FNDA:561,isNodeInRegion DA:1,1 DA:9,1 -DA:10,472 +DA:10,561 LF:3 LH:3 -BRDA:11,0,0,472 -BRDA:11,0,1,467 -BRDA:11,0,2,402 +BRDA:11,0,0,561 +BRDA:11,0,1,556 +BRDA:11,0,2,482 BRDA:11,0,3,49 -BRDA:11,0,4,399 +BRDA:11,0,4,479 BRDA:11,0,5,32 BRF:6 BRH:6 @@ -26967,136 +27018,136 @@ FN:174,getEndOffset FNF:10 FNH:10 FNDA:1,(anonymous_0) -FNDA:16377,Position -FNDA:12240,(anonymous_2) -FNDA:314,(anonymous_3) -FNDA:1284,(anonymous_4) +FNDA:18901,Position +FNDA:13896,(anonymous_2) +FNDA:608,(anonymous_3) +FNDA:2152,(anonymous_4) FNDA:123,(anonymous_5) -FNDA:1609,(anonymous_6) -FNDA:964,(anonymous_7) -FNDA:879,getIndexOfNode -FNDA:15498,getEndOffset +FNDA:2056,(anonymous_6) +FNDA:1362,(anonymous_7) +FNDA:1047,getIndexOfNode +FNDA:17854,getEndOffset DA:1,1 DA:2,1 DA:9,1 -DA:41,16386 -DA:42,16377 -DA:44,16377 +DA:41,18910 +DA:42,18901 +DA:44,18901 DA:45,7 DA:46,7 -DA:48,16370 -DA:51,16377 -DA:53,456 -DA:54,456 -DA:55,456 -DA:56,456 -DA:59,423 -DA:60,423 -DA:61,423 -DA:62,423 -DA:65,902 -DA:66,902 -DA:67,902 -DA:70,14596 -DA:71,14596 -DA:72,14596 -DA:73,14596 -DA:76,16377 +DA:48,18894 +DA:51,18901 +DA:53,529 +DA:54,529 +DA:55,529 +DA:56,529 +DA:59,518 +DA:60,518 +DA:61,518 +DA:62,518 +DA:65,1453 +DA:66,1453 +DA:67,1453 +DA:70,16401 +DA:71,16401 +DA:72,16401 +DA:73,16401 +DA:76,18901 DA:83,1 -DA:84,12240 -DA:85,11082 -DA:88,1158 -DA:89,1158 -DA:92,1158 -DA:93,2072 -DA:103,2072 -DA:104,1775 -DA:105,1775 -DA:108,297 -DA:111,1158 +DA:84,13896 +DA:85,12273 +DA:88,1623 +DA:89,1623 +DA:92,1623 +DA:93,3039 +DA:103,3039 +DA:104,2685 +DA:105,2685 +DA:108,354 +DA:111,1623 DA:118,1 -DA:119,314 +DA:119,608 DA:131,1 -DA:132,1284 +DA:132,2152 DA:141,1 DA:142,123 DA:149,1 -DA:150,1609 +DA:150,2056 DA:157,1 -DA:160,964 +DA:160,1362 DA:164,1 -DA:167,879 -DA:168,879 -DA:169,305 -DA:171,879 -DA:175,15498 -DA:176,3037 -DA:177,12461 -DA:178,12356 +DA:167,1047 +DA:168,1047 +DA:169,372 +DA:171,1047 +DA:175,17854 +DA:176,4246 +DA:177,13608 +DA:178,13503 DA:180,105 LF:58 LH:58 BRDA:41,0,0,9 -BRDA:41,0,1,16368 +BRDA:41,0,1,18892 BRDA:44,1,0,7 -BRDA:44,1,1,16370 -BRDA:52,2,0,456 -BRDA:52,2,1,423 -BRDA:52,2,2,902 -BRDA:52,2,3,14596 -BRDA:72,3,0,14596 -BRDA:72,3,1,1716 -BRDA:84,4,0,11082 -BRDA:84,4,1,1158 -BRDA:84,5,0,12240 -BRDA:84,5,1,10934 -BRDA:90,6,0,370 -BRDA:90,6,1,788 -BRDA:92,7,0,2933 -BRDA:92,7,1,861 -BRDA:94,8,0,607 -BRDA:94,8,1,1465 -BRDA:95,9,0,542 -BRDA:95,9,1,65 -BRDA:98,10,0,1187 -BRDA:98,10,1,278 -BRDA:100,11,0,219 -BRDA:100,11,1,59 -BRDA:103,12,0,1775 -BRDA:103,12,1,297 -BRDA:106,13,0,750 -BRDA:106,13,1,1025 -BRDA:106,14,0,1775 -BRDA:106,14,1,1129 -BRDA:120,15,0,314 -BRDA:120,15,1,314 -BRDA:120,15,2,289 -BRDA:120,15,3,142 -BRDA:120,15,4,35 -BRDA:133,16,0,735 -BRDA:133,16,1,549 -BRDA:133,17,0,735 -BRDA:133,17,1,301 -BRDA:133,17,2,588 -BRDA:161,18,0,390 -BRDA:161,18,1,574 -BRDA:168,19,0,1184 -BRDA:168,19,1,879 +BRDA:44,1,1,18894 +BRDA:52,2,0,529 +BRDA:52,2,1,518 +BRDA:52,2,2,1453 +BRDA:52,2,3,16401 +BRDA:72,3,0,16401 +BRDA:72,3,1,2125 +BRDA:84,4,0,12273 +BRDA:84,4,1,1623 +BRDA:84,5,0,13896 +BRDA:84,5,1,11847 +BRDA:90,6,0,565 +BRDA:90,6,1,1058 +BRDA:92,7,0,4308 +BRDA:92,7,1,1269 +BRDA:94,8,0,1003 +BRDA:94,8,1,2036 +BRDA:95,9,0,907 +BRDA:95,9,1,96 +BRDA:98,10,0,1668 +BRDA:98,10,1,368 +BRDA:100,11,0,293 +BRDA:100,11,1,75 +BRDA:103,12,0,2685 +BRDA:103,12,1,354 +BRDA:106,13,0,1189 +BRDA:106,13,1,1496 +BRDA:106,14,0,2685 +BRDA:106,14,1,1630 +BRDA:120,15,0,608 +BRDA:120,15,1,608 +BRDA:120,15,2,581 +BRDA:120,15,3,319 +BRDA:120,15,4,39 +BRDA:133,16,0,1303 +BRDA:133,16,1,849 +BRDA:133,17,0,1303 +BRDA:133,17,1,475 +BRDA:133,17,2,1044 +BRDA:161,18,0,397 +BRDA:161,18,1,965 +BRDA:168,19,0,1419 +BRDA:168,19,1,1047 BRDA:168,20,0,0 -BRDA:168,20,1,1184 -BRDA:168,21,0,1184 -BRDA:168,21,1,1184 -BRDA:175,22,0,3037 -BRDA:175,22,1,12461 -BRDA:176,23,0,3037 -BRDA:176,23,1,80 +BRDA:168,20,1,1419 +BRDA:168,21,0,1419 +BRDA:168,21,1,1419 +BRDA:175,22,0,4246 +BRDA:175,22,1,13608 +BRDA:176,23,0,4246 +BRDA:176,23,1,73 BRDA:176,24,0,0 -BRDA:176,24,1,3037 -BRDA:176,25,0,3037 -BRDA:176,25,1,3037 -BRDA:177,26,0,12356 +BRDA:176,24,1,4246 +BRDA:176,25,0,4246 +BRDA:176,25,1,4246 +BRDA:177,26,0,13503 BRDA:177,26,1,105 -BRDA:177,27,0,12461 +BRDA:177,27,0,13608 BRDA:177,27,1,105 BRF:62 BRH:60 @@ -27106,54 +27157,54 @@ SF:packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts FN:10,addRangeToSelection FNF:1 FNH:1 -FNDA:791,addRangeToSelection +FNDA:916,addRangeToSelection DA:1,1 DA:10,1 -DA:11,791 -DA:12,791 -DA:13,789 -DA:15,789 -DA:17,784 -DA:18,784 -DA:21,784 +DA:11,916 +DA:12,916 +DA:13,914 +DA:15,914 +DA:17,909 +DA:18,909 +DA:21,909 DA:29,0 -DA:31,784 -DA:36,789 -DA:37,789 +DA:31,909 +DA:36,914 +DA:37,914 LF:13 LH:12 BRDA:11,0,0,2 -BRDA:11,0,1,789 -BRDA:11,1,0,791 -BRDA:11,1,1,791 +BRDA:11,0,1,914 +BRDA:11,1,0,916 +BRDA:11,1,1,916 BRDA:11,2,0,2 -BRDA:11,2,1,789 -BRDA:11,3,0,791 -BRDA:11,3,1,789 +BRDA:11,2,1,914 +BRDA:11,3,0,916 +BRDA:11,3,1,914 BRDA:11,4,0,0 -BRDA:11,4,1,791 -BRDA:11,5,0,791 -BRDA:11,5,1,791 +BRDA:11,4,1,916 +BRDA:11,5,0,916 +BRDA:11,5,1,916 BRDA:11,6,0,0 -BRDA:11,6,1,791 -BRDA:11,7,0,791 -BRDA:11,7,1,791 -BRDA:12,8,0,789 +BRDA:11,6,1,916 +BRDA:11,7,0,916 +BRDA:11,7,1,916 +BRDA:12,8,0,914 BRDA:12,8,1,2 -BRDA:15,9,0,784 +BRDA:15,9,0,909 BRDA:15,9,1,5 BRDA:21,10,0,0 -BRDA:21,10,1,784 -BRDA:22,11,0,784 -BRDA:22,11,1,600 -BRDA:22,11,2,184 -BRDA:22,11,3,184 +BRDA:21,10,1,909 +BRDA:22,11,0,909 +BRDA:22,11,1,718 +BRDA:22,11,2,191 +BRDA:22,11,3,191 BRDA:22,11,4,0 BRDA:22,11,5,0 BRDA:22,11,6,0 -BRDA:23,12,0,184 +BRDA:23,12,0,191 BRDA:23,12,1,0 -BRDA:36,13,0,789 +BRDA:36,13,0,914 BRDA:36,13,1,0 BRF:33 BRH:25 @@ -27166,100 +27217,100 @@ FN:108,isNodePosition FN:112,getPositionFromPath FNF:4 FNH:4 -FNDA:1333,createRange -FNDA:2658,getFocusablePosition -FNDA:1875,isNodePosition -FNDA:318,getPositionFromPath +FNDA:1536,createRange +FNDA:3064,getFocusablePosition +FNDA:2181,isNodePosition +FNDA:316,getPositionFromPath DA:1,1 DA:2,1 DA:3,1 DA:55,1 -DA:61,1333 -DA:62,1333 -DA:64,1333 -DA:66,542 -DA:67,542 -DA:68,791 -DA:69,789 -DA:71,159 -DA:72,159 -DA:73,630 -DA:76,323 -DA:77,323 -DA:78,307 -DA:80,307 -DA:81,307 -DA:85,1333 -DA:86,1329 -DA:87,1329 -DA:88,1329 -DA:89,1329 -DA:90,1329 -DA:92,1329 +DA:61,1536 +DA:62,1536 +DA:64,1536 +DA:66,645 +DA:67,645 +DA:68,891 +DA:69,889 +DA:71,158 +DA:72,158 +DA:73,731 +DA:76,403 +DA:77,403 +DA:78,328 +DA:80,328 +DA:81,328 +DA:85,1536 +DA:86,1532 +DA:87,1532 +DA:88,1532 +DA:89,1532 +DA:90,1532 +DA:92,1532 DA:94,4 -DA:103,2658 -DA:109,1875 -DA:113,318 +DA:103,3064 +DA:109,2181 +DA:113,316 DA:114,0 -DA:119,318 -DA:121,318 -DA:122,1064 -DA:123,1064 -DA:129,746 -DA:131,318 -DA:135,318 +DA:119,316 +DA:121,316 +DA:122,1054 +DA:123,1054 +DA:129,738 +DA:131,316 +DA:135,316 LF:38 LH:37 -BRDA:64,0,0,542 -BRDA:64,0,1,791 -BRDA:67,1,0,321 -BRDA:67,1,1,221 -BRDA:68,2,0,789 +BRDA:64,0,0,645 +BRDA:64,0,1,891 +BRDA:67,1,0,377 +BRDA:67,1,1,268 +BRDA:68,2,0,889 BRDA:68,2,1,2 -BRDA:69,3,0,159 -BRDA:69,3,1,630 -BRDA:72,4,0,159 +BRDA:69,3,0,158 +BRDA:69,3,1,731 +BRDA:72,4,0,158 BRDA:72,4,1,0 -BRDA:73,5,0,323 -BRDA:73,5,1,307 -BRDA:77,6,0,27 -BRDA:77,6,1,296 -BRDA:78,7,0,307 +BRDA:73,5,0,403 +BRDA:73,5,1,328 +BRDA:77,6,0,88 +BRDA:77,6,1,315 +BRDA:78,7,0,328 BRDA:78,7,1,0 -BRDA:78,8,0,307 -BRDA:78,8,1,107 -BRDA:81,9,0,307 -BRDA:81,9,1,107 -BRDA:85,10,0,1329 +BRDA:78,8,0,328 +BRDA:78,8,1,108 +BRDA:81,9,0,328 +BRDA:81,9,1,108 +BRDA:85,10,0,1532 BRDA:85,10,1,4 BRDA:85,11,0,4 -BRDA:85,11,1,1329 -BRDA:85,12,0,1333 -BRDA:85,12,1,1331 +BRDA:85,11,1,1532 +BRDA:85,12,0,1536 +BRDA:85,12,1,1534 BRDA:85,13,0,2 -BRDA:85,13,1,1331 -BRDA:85,14,0,1333 -BRDA:85,14,1,1331 -BRDA:88,15,0,1329 -BRDA:88,15,1,515 -BRDA:104,16,0,110 -BRDA:104,16,1,2548 -BRDA:103,17,0,2658 -BRDA:103,17,1,1536 +BRDA:85,13,1,1534 +BRDA:85,14,0,1536 +BRDA:85,14,1,1534 +BRDA:88,15,0,1532 +BRDA:88,15,1,581 +BRDA:104,16,0,108 +BRDA:104,16,1,2956 +BRDA:103,17,0,3064 +BRDA:103,17,1,1818 BRDA:104,18,0,4 -BRDA:104,18,1,106 -BRDA:109,19,0,1875 -BRDA:109,19,1,1652 +BRDA:104,18,1,104 +BRDA:109,19,0,2181 +BRDA:109,19,1,1911 BRDA:113,20,0,0 -BRDA:113,20,1,318 -BRDA:113,21,0,318 -BRDA:113,21,1,318 -BRDA:123,22,0,746 -BRDA:123,22,1,318 -BRDA:124,23,0,1064 -BRDA:124,23,1,746 -BRDA:124,23,2,746 -BRDA:124,23,3,746 +BRDA:113,20,1,316 +BRDA:113,21,0,316 +BRDA:113,21,1,316 +BRDA:123,22,0,738 +BRDA:123,22,1,316 +BRDA:124,23,0,1054 +BRDA:124,23,1,738 +BRDA:124,23,2,738 +BRDA:124,23,3,738 BRF:50 BRH:47 end_of_record @@ -27366,90 +27417,90 @@ FN:10,getSelectionPath FN:38,getPositionPath FNF:2 FNH:2 -FNDA:5200,getSelectionPath -FNDA:666,getPositionPath +FNDA:5509,getSelectionPath +FNDA:906,getPositionPath DA:1,1 DA:2,1 DA:10,1 -DA:14,5200 -DA:15,4867 -DA:18,333 -DA:23,333 -DA:39,666 +DA:14,5509 +DA:15,5056 +DA:18,453 +DA:23,453 +DA:39,906 DA:40,0 -DA:43,666 -DA:44,666 -DA:45,666 -DA:48,666 +DA:43,906 +DA:44,906 +DA:45,906 +DA:48,906 DA:49,2 -DA:52,664 -DA:53,333 -DA:54,333 -DA:55,47 -DA:56,47 -DA:58,333 -DA:60,331 -DA:61,331 -DA:64,664 -DA:65,1670 -DA:66,1670 -DA:68,1670 -DA:69,547 -DA:70,153 +DA:52,904 +DA:53,408 +DA:54,408 +DA:55,48 +DA:56,48 +DA:58,408 +DA:60,496 +DA:61,496 +DA:64,904 +DA:65,2180 +DA:66,2180 +DA:68,2180 +DA:69,838 +DA:70,213 DA:71,45 -DA:74,108 -DA:76,394 -DA:79,502 -DA:82,1670 -DA:83,1670 -DA:84,1670 -DA:87,664 +DA:74,168 +DA:76,625 +DA:79,793 +DA:82,2180 +DA:83,2180 +DA:84,2180 +DA:87,904 LF:36 LH:35 -BRDA:14,0,0,4867 -BRDA:14,0,1,333 +BRDA:14,0,0,5056 +BRDA:14,0,1,453 BRDA:39,1,0,0 -BRDA:39,1,1,666 -BRDA:39,2,0,666 -BRDA:39,2,1,666 +BRDA:39,1,1,906 +BRDA:39,2,0,906 +BRDA:39,2,1,906 BRDA:48,3,0,2 -BRDA:48,3,1,664 -BRDA:52,4,0,333 -BRDA:52,4,1,331 -BRDA:54,5,0,380 -BRDA:54,5,1,101 -BRDA:55,6,0,47 +BRDA:48,3,1,904 +BRDA:52,4,0,408 +BRDA:52,4,1,496 +BRDA:54,5,0,456 +BRDA:54,5,1,116 +BRDA:55,6,0,48 BRDA:55,6,1,14 BRDA:55,7,0,0 -BRDA:55,7,1,47 -BRDA:55,8,0,47 -BRDA:55,8,1,47 -BRDA:85,9,0,1670 -BRDA:85,9,1,1670 -BRDA:68,10,0,1670 -BRDA:68,10,1,24 +BRDA:55,7,1,48 +BRDA:55,8,0,48 +BRDA:55,8,1,48 +BRDA:85,9,0,2180 +BRDA:85,9,1,2180 +BRDA:68,10,0,2180 +BRDA:68,10,1,28 BRDA:68,11,0,0 -BRDA:68,11,1,1670 -BRDA:68,12,0,1670 -BRDA:68,12,1,1670 -BRDA:68,13,0,2217 -BRDA:68,13,1,2134 -BRDA:69,14,0,153 -BRDA:69,14,1,394 +BRDA:68,11,1,2180 +BRDA:68,12,0,2180 +BRDA:68,12,1,2180 +BRDA:68,13,0,3018 +BRDA:68,13,1,2861 +BRDA:69,14,0,213 +BRDA:69,14,1,625 BRDA:70,15,0,45 -BRDA:70,15,1,108 -BRDA:70,16,0,153 -BRDA:70,16,1,113 +BRDA:70,15,1,168 +BRDA:70,16,0,213 +BRDA:70,16,1,173 BRDA:70,17,0,0 -BRDA:70,17,1,153 -BRDA:70,18,0,153 -BRDA:70,18,1,153 -BRDA:84,19,0,1670 +BRDA:70,17,1,213 +BRDA:70,18,0,213 +BRDA:70,18,1,213 +BRDA:84,19,0,2180 BRDA:84,19,1,10 BRDA:84,20,0,0 -BRDA:84,20,1,1670 -BRDA:84,21,0,1670 -BRDA:84,21,1,1670 +BRDA:84,20,1,2180 +BRDA:84,21,0,2180 +BRDA:84,21,1,2180 BRF:44 BRH:39 end_of_record @@ -27459,41 +27510,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 @@ -27510,7 +27561,7 @@ FNF:3 FNH:3 FNDA:39,setHtmlWithSelectionPath FNDA:58,setHtmlWithMetadata -FNDA:467,extractContentMetadata +FNDA:543,extractContentMetadata DA:1,1 DA:2,1 DA:3,1 @@ -27531,16 +27582,16 @@ DA:87,57 DA:88,57 DA:90,57 DA:98,1 -DA:99,467 -DA:101,467 -DA:102,171 -DA:103,171 -DA:105,164 -DA:110,149 -DA:111,149 -DA:112,149 -DA:114,149 -DA:119,318 +DA:99,543 +DA:101,543 +DA:102,170 +DA:103,170 +DA:105,163 +DA:110,148 +DA:111,148 +DA:112,148 +DA:114,148 +DA:119,395 LF:30 LH:30 BRDA:66,0,0,34 @@ -27559,19 +27610,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,171 -BRDA:101,8,1,296 -BRDA:103,9,0,171 +BRDA:101,8,0,170 +BRDA:101,8,1,373 +BRDA:103,9,0,170 BRDA:103,9,1,2 -BRDA:105,10,0,149 +BRDA:105,10,0,148 BRDA:105,10,1,15 -BRDA:106,11,0,164 +BRDA:106,11,0,163 BRDA:106,11,1,19 BRDA:106,11,2,15 -BRDA:111,12,0,141 +BRDA:111,12,0,140 BRDA:111,12,1,8 -BRDA:112,13,0,149 -BRDA:112,13,1,144 +BRDA:112,13,0,148 +BRDA:112,13,1,143 BRF:29 BRH:29 end_of_record @@ -27585,43 +27636,43 @@ FN:95,compareSnapshots FN:99,defaultCompare FNF:6 FNH:6 -FNDA:5253,addSnapshot +FNDA:5536,addSnapshot FNDA:27,(anonymous_1) -FNDA:5229,addSnapshotV2 -FNDA:5174,(anonymous_3) -FNDA:403,compareSnapshots +FNDA:5512,addSnapshotV2 +FNDA:5472,(anonymous_3) +FNDA:497,compareSnapshots FNDA:10,defaultCompare DA:1,1 DA:32,1 -DA:39,5253 -DA:40,5253 -DA:42,5253 -DA:43,5253 -DA:45,5253 -DA:46,5196 -DA:47,5196 -DA:48,5196 -DA:49,5196 -DA:51,5196 -DA:52,5196 +DA:39,5536 +DA:40,5536 +DA:42,5536 +DA:43,5536 +DA:45,5536 +DA:46,5494 +DA:47,5494 +DA:48,5494 +DA:49,5494 +DA:51,5494 +DA:52,5494 DA:56,3 DA:57,3 -DA:60,5196 +DA:60,5494 DA:61,3 DA:62,3 DA:63,3 -DA:66,5196 +DA:66,5494 DA:67,24 -DA:69,57 -DA:71,57 +DA:69,42 +DA:71,42 DA:81,1 -DA:86,5229 -DA:90,5174 -DA:96,403 +DA:86,5512 +DA:90,5472 +DA:96,497 DA:100,10 LF:28 LH:28 -BRDA:39,0,0,5253 +BRDA:39,0,0,5536 BRDA:39,0,1,24 BRDA:39,1,0,27 BRDA:39,1,1,4 @@ -27629,32 +27680,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,5253 +BRDA:40,4,0,5536 BRDA:40,4,1,24 -BRDA:43,5,0,5253 -BRDA:43,5,1,413 -BRDA:45,6,0,5196 -BRDA:45,6,1,57 -BRDA:45,7,0,5253 -BRDA:45,7,1,416 -BRDA:45,7,2,413 -BRDA:53,8,0,5199 -BRDA:53,8,1,5198 +BRDA:43,5,0,5536 +BRDA:43,5,1,507 +BRDA:45,6,0,5494 +BRDA:45,6,1,42 +BRDA:45,7,0,5536 +BRDA:45,7,1,510 +BRDA:45,7,2,507 +BRDA:53,8,0,5497 +BRDA:53,8,1,5496 BRDA:60,9,0,3 -BRDA:60,9,1,5193 +BRDA:60,9,1,5491 BRDA:66,10,0,24 -BRDA:66,10,1,5172 -BRDA:69,11,0,57 +BRDA:66,10,1,5470 +BRDA:69,11,0,42 BRDA:69,11,1,0 -BRDA:90,12,0,5174 -BRDA:90,12,1,4824 +BRDA:90,12,0,5472 +BRDA:90,12,1,5004 BRDA:90,13,0,0 -BRDA:90,13,1,5174 -BRDA:90,14,0,5174 -BRDA:90,14,1,5174 -BRDA:96,15,0,403 -BRDA:96,15,1,56 -BRDA:96,15,2,56 +BRDA:90,13,1,5472 +BRDA:90,14,0,5472 +BRDA:90,14,1,5472 +BRDA:96,15,0,497 +BRDA:96,15,1,41 +BRDA:96,15,2,41 BRF:34 BRH:31 end_of_record @@ -27663,14 +27714,14 @@ SF:packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts FN:9,canMoveCurrentSnapshot FNF:1 FNH:1 -FNDA:15458,canMoveCurrentSnapshot +FNDA:16307,canMoveCurrentSnapshot DA:9,1 -DA:13,15458 -DA:14,15458 +DA:13,16307 +DA:14,16307 LF:3 LH:3 -BRDA:14,0,0,15458 -BRDA:14,0,1,10616 +BRDA:14,0,0,16307 +BRDA:14,0,1,11276 BRF:2 BRH:2 end_of_record @@ -27679,12 +27730,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 @@ -27697,14 +27748,14 @@ FN:43,clearProceedingSnapshotsV2 FN:44,(anonymous_3) FNF:4 FNH:3 -FNDA:5743,clearProceedingSnapshots +FNDA:6214,clearProceedingSnapshots FNDA:3,(anonymous_1) -FNDA:541,clearProceedingSnapshotsV2 +FNDA:714,clearProceedingSnapshotsV2 FNDA:0,(anonymous_3) DA:1,1 DA:23,1 -DA:27,5743 -DA:28,5743 +DA:27,6214 +DA:28,6214 DA:29,5 DA:30,5 DA:31,5 @@ -27712,10 +27763,10 @@ DA:33,5 DA:34,5 DA:35,5 DA:43,1 -DA:44,541 +DA:44,714 LF:12 LH:12 -BRDA:27,0,0,5743 +BRDA:27,0,0,6214 BRDA:27,0,1,6 BRDA:27,1,0,3 BRDA:27,1,1,0 @@ -27724,7 +27775,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,5738 +BRDA:28,4,1,6209 BRDA:44,5,0,0 BRDA:44,5,1,0 BRDA:44,6,0,0 @@ -27739,9 +27790,9 @@ SF:packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts FN:7,createSnapshots FNF:1 FNH:1 -FNDA:5041,createSnapshots +FNDA:5236,createSnapshots DA:7,1 -DA:8,5041 +DA:8,5236 LF:2 LH:2 BRF:0 @@ -27774,30 +27825,30 @@ FN:5,getStyles FN:8,(anonymous_1) FNF:2 FNH:2 -FNDA:1526,getStyles -FNDA:2624,(anonymous_1) +FNDA:1483,getStyles +FNDA:2506,(anonymous_1) DA:5,1 -DA:6,1526 -DA:7,1526 -DA:8,1526 -DA:9,2624 -DA:10,2624 -DA:11,2624 -DA:12,2624 -DA:13,1325 -DA:16,1526 +DA:6,1483 +DA:7,1483 +DA:8,1483 +DA:9,2506 +DA:10,2506 +DA:11,2506 +DA:12,2506 +DA:13,1234 +DA:16,1483 LF:10 LH:10 -BRDA:7,0,0,1526 -BRDA:7,0,1,1194 +BRDA:7,0,0,1483 +BRDA:7,0,1,1172 BRDA:7,1,0,0 -BRDA:7,1,1,1526 -BRDA:7,2,0,1526 -BRDA:7,2,1,1526 -BRDA:12,3,0,1325 -BRDA:12,3,1,1299 -BRDA:12,4,0,2624 -BRDA:12,4,1,1326 +BRDA:7,1,1,1483 +BRDA:7,2,0,1483 +BRDA:7,2,1,1483 +BRDA:12,3,0,1234 +BRDA:12,3,1,1272 +BRDA:12,4,0,2506 +BRDA:12,4,1,1235 BRF:10 BRH:9 end_of_record @@ -27806,19 +27857,19 @@ SF:packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts FN:7,removeGlobalCssStyle FNF:1 FNH:1 -FNDA:10879,removeGlobalCssStyle +FNDA:11431,removeGlobalCssStyle DA:7,1 -DA:8,10879 -DA:9,10879 -DA:10,125 +DA:8,11431 +DA:9,11431 +DA:10,126 LF:4 LH:4 -BRDA:9,0,0,125 -BRDA:9,0,1,10754 +BRDA:9,0,0,126 +BRDA:9,0,1,11305 BRDA:10,1,0,0 -BRDA:10,1,1,125 -BRDA:10,2,0,125 -BRDA:10,2,1,125 +BRDA:10,1,1,126 +BRDA:10,2,0,126 +BRDA:10,2,1,126 BRF:6 BRH:5 end_of_record @@ -27889,37 +27940,37 @@ FN:11,(anonymous_1) FN:17,(anonymous_2) FNF:3 FNH:3 -FNDA:600,setStyles -FNDA:642,(anonymous_1) -FNDA:642,(anonymous_2) +FNDA:573,setStyles +FNDA:578,(anonymous_1) +FNDA:578,(anonymous_2) DA:1,1 DA:8,1 -DA:9,600 -DA:10,599 -DA:12,642 -DA:13,642 -DA:14,642 -DA:15,642 -DA:17,642 -DA:19,599 -DA:20,147 -DA:22,452 +DA:9,573 +DA:10,572 +DA:12,578 +DA:13,578 +DA:14,578 +DA:15,578 +DA:17,578 +DA:19,572 +DA:20,132 +DA:22,440 LF:12 LH:12 -BRDA:9,0,0,599 +BRDA:9,0,0,572 BRDA:9,0,1,1 -BRDA:10,1,0,599 +BRDA:10,1,0,572 BRDA:10,1,1,1 -BRDA:13,2,0,641 +BRDA:13,2,0,577 BRDA:13,2,1,1 -BRDA:14,3,0,618 +BRDA:14,3,0,554 BRDA:14,3,1,24 -BRDA:15,4,0,616 +BRDA:15,4,0,552 BRDA:15,4,1,26 -BRDA:15,5,0,642 -BRDA:15,5,1,641 -BRDA:19,6,0,147 -BRDA:19,6,1,452 +BRDA:15,5,0,578 +BRDA:15,5,1,577 +BRDA:19,6,0,132 +BRDA:19,6,1,440 BRF:14 BRH:14 end_of_record @@ -27973,23 +28024,23 @@ FN:789,getTableFromTd FN:799,cloneCell FN:811,cloneNode FNF:47 -FNH:38 +FNH:39 FNDA:1,(anonymous_0) -FNDA:506,VTable -FNDA:1412,(anonymous_2) -FNDA:1412,(anonymous_3) +FNDA:632,VTable +FNDA:1754,(anonymous_2) +FNDA:1754,(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) @@ -27998,29 +28049,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 @@ -28032,62 +28083,62 @@ DA:8,1 DA:9,1 DA:21,1 DA:40,1 -DA:49,506 -DA:64,506 -DA:66,506 -DA:68,506 -DA:76,506 -DA:81,506 -DA:82,506 -DA:83,494 -DA:84,494 -DA:85,1412 -DA:86,494 -DA:87,1412 -DA:88,1412 -DA:90,3863 -DA:91,3863 -DA:93,3863 -DA:94,181 -DA:95,181 -DA:98,3863 -DA:99,4333 -DA:100,4823 -DA:101,4823 -DA:102,4823 -DA:103,4823 -DA:114,1412 -DA:115,4823 +DA:49,632 +DA:64,632 +DA:66,632 +DA:68,632 +DA:76,632 +DA:81,632 +DA:82,632 +DA:83,620 +DA:84,620 +DA:85,1754 +DA:86,620 +DA:87,1754 +DA:88,1754 +DA:90,4457 +DA:91,4457 +DA:93,4457 +DA:94,244 +DA:95,244 +DA:98,4457 +DA:99,5107 +DA:100,5777 +DA:101,5777 +DA:102,5777 +DA:103,5777 +DA:114,1754 +DA:115,5777 DA:116,0 -DA:126,494 -DA:127,494 +DA:126,620 +DA:127,620 DA:128,0 DA:136,1 -DA:137,920 -DA:141,190 -DA:142,97 -DA:143,97 -DA:144,97 -DA:146,190 -DA:154,293 -DA:155,293 -DA:156,276 -DA:157,276 -DA:158,814 -DA:160,814 -DA:161,814 -DA:162,814 -DA:163,2409 -DA:164,1567 -DA:165,1567 -DA:166,1567 -DA:171,276 +DA:137,1276 +DA:141,253 +DA:142,123 +DA:143,123 +DA:144,123 +DA:146,253 +DA:154,419 +DA:155,419 +DA:156,402 +DA:157,402 +DA:158,1156 +DA:160,1156 +DA:161,1156 +DA:162,1156 +DA:163,3363 +DA:164,2161 +DA:165,2161 +DA:166,2161 +DA:171,402 DA:172,15 DA:173,15 DA:175,17 DA:176,8 DA:180,1 -DA:181,1567 +DA:181,2161 DA:182,56 DA:183,56 DA:184,56 @@ -28102,16 +28153,16 @@ DA:212,15 DA:213,34 DA:214,42 DA:215,42 -DA:225,145 -DA:226,145 +DA:225,208 +DA:226,208 DA:227,1 -DA:230,144 -DA:231,144 -DA:232,144 -DA:233,144 -DA:234,144 -DA:235,144 -DA:236,144 +DA:230,207 +DA:231,207 +DA:232,207 +DA:233,207 +DA:234,207 +DA:235,207 +DA:236,207 DA:238,14 DA:239,20 DA:241,14 @@ -28208,38 +28259,38 @@ DA:409,2 DA:411,5 DA:412,13 DA:419,7 -DA:421,0 -DA:422,0 -DA:423,0 -DA:425,0 -DA:426,0 -DA:427,0 -DA:429,0 -DA:430,0 -DA:431,0 -DA:433,0 -DA:440,0 -DA:442,0 -DA:449,0 -DA:451,0 -DA:458,0 -DA:460,0 -DA:468,0 -DA:470,0 -DA:478,0 -DA:480,0 -DA:488,0 +DA:421,7 +DA:422,7 +DA:423,7 +DA:425,7 +DA:426,7 +DA:427,7 +DA:429,7 +DA:430,7 +DA:431,7 +DA:433,7 +DA:440,7 +DA:442,7 +DA:449,7 +DA:451,7 +DA:458,7 +DA:460,7 +DA:468,7 +DA:470,7 +DA:478,7 +DA:480,7 +DA:488,7 DA:492,1 -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:509,0 +DA:500,42 +DA:501,68 +DA:502,68 +DA:503,68 +DA:504,68 +DA:505,24 +DA:506,24 +DA:507,24 +DA:508,44 +DA:509,24 DA:516,1 DA:517,18 DA:520,18 @@ -28249,7 +28300,7 @@ DA:523,5 DA:524,3 DA:526,2 DA:531,1 -DA:532,1572 +DA:532,2166 DA:535,1 DA:536,5 DA:537,0 @@ -28282,7 +28333,7 @@ DA:606,0 DA:613,1 DA:614,0 DA:623,1 -DA:624,5060 +DA:624,6698 DA:630,1 DA:631,23 DA:639,1 @@ -28309,30 +28360,30 @@ DA:673,13 DA:674,13 DA:675,36 DA:680,1 -DA:681,1567 -DA:682,1567 -DA:683,1567 -DA:684,1567 -DA:685,1567 -DA:686,1185 -DA:688,1567 -DA:689,1167 +DA:681,2161 +DA:682,2161 +DA:683,2161 +DA:684,2161 +DA:685,2161 +DA:686,1599 +DA:688,2161 +DA:689,1581 DA:694,1 -DA:695,1589 -DA:696,1589 -DA:697,1393 -DA:698,1393 -DA:699,979 -DA:701,414 -DA:703,1589 +DA:695,2183 +DA:696,2183 +DA:697,1915 +DA:698,1915 +DA:699,1321 +DA:701,594 +DA:703,2183 DA:706,1 -DA:707,1590 -DA:708,1590 -DA:709,1411 -DA:710,1411 -DA:711,969 -DA:713,442 -DA:715,1590 +DA:707,2184 +DA:708,2184 +DA:709,1933 +DA:710,1933 +DA:711,1311 +DA:713,622 +DA:715,2184 DA:718,1 DA:719,0 DA:720,0 @@ -28365,67 +28416,67 @@ DA:782,0 DA:783,0 DA:784,0 DA:785,0 -DA:790,193 -DA:791,193 -DA:792,193 +DA:790,256 +DA:791,256 +DA:792,256 DA:800,142 -DA:812,1066 -DA:813,1066 +DA:812,1408 +DA:813,1408 DA:814,188 DA:815,188 DA:816,188 -DA:819,1066 +DA:819,1408 LF:354 -LH:264 -BRDA:81,0,0,313 -BRDA:81,0,1,193 -BRDA:82,1,0,494 +LH:295 +BRDA:81,0,0,376 +BRDA:81,0,1,256 +BRDA:82,1,0,620 BRDA:82,1,1,12 -BRDA:83,2,0,313 -BRDA:83,2,1,181 -BRDA:93,3,0,181 -BRDA:93,3,1,3682 -BRDA:102,4,0,4823 +BRDA:83,2,0,376 +BRDA:83,2,1,244 +BRDA:93,3,0,244 +BRDA:93,3,1,4213 +BRDA:102,4,0,5777 BRDA:102,4,1,0 BRDA:102,5,0,0 -BRDA:102,5,1,4823 -BRDA:102,6,0,4823 -BRDA:102,6,1,4823 -BRDA:104,7,0,3863 -BRDA:104,7,1,960 -BRDA:107,8,0,3863 -BRDA:107,8,1,960 -BRDA:108,9,0,3863 -BRDA:108,9,1,960 +BRDA:102,5,1,5777 +BRDA:102,6,0,5777 +BRDA:102,6,1,5777 +BRDA:104,7,0,4457 +BRDA:104,7,1,1320 +BRDA:107,8,0,4457 +BRDA:107,8,1,1320 +BRDA:108,9,0,4457 +BRDA:108,9,1,1320 BRDA:115,10,0,0 -BRDA:115,10,1,4823 +BRDA:115,10,1,5777 BRDA:127,11,0,0 -BRDA:127,11,1,494 +BRDA:127,11,1,620 BRDA:128,12,0,0 BRDA:128,12,1,0 -BRDA:137,13,0,920 -BRDA:137,13,1,436 -BRDA:141,14,0,97 -BRDA:141,14,1,93 +BRDA:137,13,0,1276 +BRDA:137,13,1,584 +BRDA:141,14,0,123 +BRDA:141,14,1,130 BRDA:143,15,0,2 -BRDA:143,15,1,95 -BRDA:143,16,0,97 -BRDA:143,16,1,95 +BRDA:143,15,1,121 +BRDA:143,16,0,123 +BRDA:143,16,1,121 BRDA:144,17,0,2 -BRDA:144,17,1,95 -BRDA:144,18,0,97 -BRDA:144,18,1,95 -BRDA:155,19,0,276 +BRDA:144,17,1,121 +BRDA:144,18,0,123 +BRDA:144,18,1,121 +BRDA:155,19,0,402 BRDA:155,19,1,17 -BRDA:158,20,0,814 +BRDA:158,20,0,1156 BRDA:158,20,1,0 -BRDA:160,21,0,814 +BRDA:160,21,0,1156 BRDA:160,21,1,0 -BRDA:163,22,0,1567 -BRDA:163,22,1,842 +BRDA:163,22,0,2161 +BRDA:163,22,1,1202 BRDA:171,23,0,15 -BRDA:171,23,1,261 -BRDA:171,24,0,276 +BRDA:171,23,1,387 +BRDA:171,24,0,402 BRDA:171,24,1,15 BRDA:175,25,0,8 BRDA:175,25,1,9 @@ -28434,8 +28485,8 @@ BRDA:176,26,1,8 BRDA:176,27,0,8 BRDA:176,27,1,8 BRDA:181,28,0,56 -BRDA:181,28,1,1511 -BRDA:181,29,0,1567 +BRDA:181,28,1,2105 +BRDA:181,29,0,2161 BRDA:181,29,1,354 BRDA:194,30,0,0 BRDA:194,30,1,15 @@ -28452,19 +28503,19 @@ BRDA:212,35,1,15 BRDA:214,36,0,42 BRDA:214,36,1,0 BRDA:226,37,0,1 -BRDA:226,37,1,144 -BRDA:226,38,0,145 -BRDA:226,38,1,144 -BRDA:226,38,2,144 -BRDA:226,38,3,144 -BRDA:232,39,0,42 -BRDA:232,39,1,102 -BRDA:233,40,0,42 -BRDA:233,40,1,102 -BRDA:234,41,0,42 -BRDA:234,41,1,102 -BRDA:235,42,0,42 -BRDA:235,42,1,102 +BRDA:226,37,1,207 +BRDA:226,38,0,208 +BRDA:226,38,1,207 +BRDA:226,38,2,207 +BRDA:226,38,3,207 +BRDA:232,39,0,68 +BRDA:232,39,1,139 +BRDA:233,40,0,68 +BRDA:233,40,1,139 +BRDA:234,41,0,68 +BRDA:234,41,1,139 +BRDA:235,42,0,68 +BRDA:235,42,1,139 BRDA:237,43,0,14 BRDA:237,43,1,17 BRDA:237,43,2,14 @@ -28479,15 +28530,15 @@ BRDA:237,43,10,6 BRDA:237,43,11,8 BRDA:237,43,12,7 BRDA:237,43,13,7 -BRDA:237,43,14,0 -BRDA:237,43,15,0 -BRDA:237,43,16,0 -BRDA:237,43,17,0 -BRDA:237,43,18,0 -BRDA:237,43,19,0 -BRDA:237,43,20,0 -BRDA:237,43,21,0 -BRDA:237,43,22,0 +BRDA:237,43,14,7 +BRDA:237,43,15,7 +BRDA:237,43,16,7 +BRDA:237,43,17,7 +BRDA:237,43,18,7 +BRDA:237,43,19,7 +BRDA:237,43,20,7 +BRDA:237,43,21,7 +BRDA:237,43,22,7 BRDA:251,44,0,13 BRDA:251,44,1,50 BRDA:253,45,0,3 @@ -28560,22 +28611,22 @@ BRDA:408,77,0,7 BRDA:408,77,1,7 BRDA:413,78,0,5 BRDA:413,78,1,8 -BRDA:502,79,0,0 +BRDA:502,79,0,68 BRDA:502,79,1,0 -BRDA:504,80,0,0 -BRDA:504,80,1,0 -BRDA:504,81,0,0 -BRDA:504,81,1,0 +BRDA:504,80,0,24 +BRDA:504,80,1,44 +BRDA:504,81,0,68 +BRDA:504,81,1,39 BRDA:505,82,0,0 -BRDA:505,82,1,0 -BRDA:505,83,0,0 -BRDA:505,83,1,0 -BRDA:508,84,0,0 -BRDA:508,84,1,0 +BRDA:505,82,1,24 +BRDA:505,83,0,24 +BRDA:505,83,1,24 +BRDA:508,84,0,24 +BRDA:508,84,1,20 BRDA:509,85,0,0 -BRDA:509,85,1,0 -BRDA:509,86,0,0 -BRDA:509,86,1,0 +BRDA:509,85,1,24 +BRDA:509,86,0,24 +BRDA:509,86,1,24 BRDA:518,87,0,12 BRDA:518,87,1,6 BRDA:518,88,0,12 @@ -28605,7 +28656,7 @@ BRDA:520,99,1,18 BRDA:520,99,2,18 BRDA:523,100,0,3 BRDA:523,100,1,2 -BRDA:532,101,0,1572 +BRDA:532,101,0,2166 BRDA:532,101,1,364 BRDA:536,102,0,0 BRDA:536,102,1,5 @@ -28625,9 +28676,9 @@ BRDA:595,109,0,0 BRDA:595,109,1,0 BRDA:598,110,0,0 BRDA:598,110,1,0 -BRDA:624,111,0,5060 -BRDA:624,111,1,5059 -BRDA:624,111,2,5033 +BRDA:624,111,0,6698 +BRDA:624,111,1,6697 +BRDA:624,111,2,6671 BRDA:624,111,3,66 BRDA:640,112,0,153 BRDA:640,112,1,1 @@ -28656,24 +28707,24 @@ BRDA:673,123,0,13 BRDA:673,123,1,0 BRDA:674,124,0,49 BRDA:674,124,1,49 -BRDA:682,125,0,1567 +BRDA:682,125,0,2161 BRDA:682,125,1,0 -BRDA:685,126,0,1185 -BRDA:685,126,1,382 -BRDA:688,127,0,1167 -BRDA:688,127,1,400 -BRDA:696,128,0,2003 -BRDA:696,128,1,2003 -BRDA:698,129,0,979 -BRDA:698,129,1,414 -BRDA:698,130,0,1393 -BRDA:698,130,1,629 -BRDA:708,131,0,2032 -BRDA:708,131,1,2032 -BRDA:710,132,0,969 -BRDA:710,132,1,442 -BRDA:710,133,0,1411 -BRDA:710,133,1,625 +BRDA:685,126,0,1599 +BRDA:685,126,1,562 +BRDA:688,127,0,1581 +BRDA:688,127,1,580 +BRDA:696,128,0,2777 +BRDA:696,128,1,2777 +BRDA:698,129,0,1321 +BRDA:698,129,1,594 +BRDA:698,130,0,1915 +BRDA:698,130,1,899 +BRDA:708,131,0,2806 +BRDA:708,131,1,2806 +BRDA:710,132,0,1311 +BRDA:710,132,1,622 +BRDA:710,133,0,1933 +BRDA:710,133,1,895 BRDA:721,134,0,0 BRDA:721,134,1,0 BRDA:722,135,0,0 @@ -28716,16 +28767,16 @@ BRDA:770,153,0,0 BRDA:770,153,1,0 BRDA:780,154,0,0 BRDA:780,154,1,0 -BRDA:791,155,0,736 -BRDA:791,155,1,724 -BRDA:812,156,0,1002 +BRDA:791,155,0,988 +BRDA:791,155,1,976 +BRDA:812,156,0,1344 BRDA:812,156,1,64 BRDA:813,157,0,188 -BRDA:813,157,1,878 +BRDA:813,157,1,1220 BRDA:815,158,0,188 BRDA:815,158,1,0 BRF:347 -BRH:235 +BRH:257 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts @@ -29228,23 +29279,23 @@ FN:25,getTableCellMetadata FN:34,saveTableCellMetadata FNF:2 FNH:2 -FNDA:93,getTableCellMetadata -FNDA:1,saveTableCellMetadata +FNDA:117,getTableCellMetadata +FNDA:25,saveTableCellMetadata DA:1,1 DA:2,1 DA:5,1 DA:11,1 DA:25,1 -DA:26,93 +DA:26,117 DA:34,1 -DA:35,1 -DA:36,1 +DA:35,25 +DA:36,25 LF:9 LH:9 -BRDA:35,0,0,1 +BRDA:35,0,0,25 BRDA:35,0,1,0 -BRDA:35,1,0,1 -BRDA:35,1,1,1 +BRDA:35,1,0,25 +BRDA:35,1,1,25 BRF:4 BRH:3 end_of_record @@ -29254,7 +29305,7 @@ FN:48,getTableFormatInfo FN:58,saveTableInfo FNF:2 FNH:2 -FNDA:495,getTableFormatInfo +FNDA:621,getTableFormatInfo FNDA:16,saveTableInfo DA:1,1 DA:3,1 @@ -29262,7 +29313,7 @@ DA:10,1 DA:16,1 DA:18,1 DA:48,1 -DA:49,495 +DA:49,621 DA:58,1 DA:59,16 DA:60,16 @@ -29300,7 +29351,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 @@ -29312,7 +29363,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 @@ -29324,9 +29375,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 @@ -29346,52 +29397,52 @@ SF:packages/roosterjs-editor-dom/lib/utils/applyFormat.ts FN:11,applyFormat FNF:1 FNH:1 -FNDA:4817,applyFormat +FNDA:5006,applyFormat DA:1,1 DA:11,1 -DA:17,4817 -DA:18,4817 -DA:29,43353 -DA:31,4817 -DA:32,4757 -DA:34,4817 -DA:35,4763 -DA:38,4817 -DA:39,4756 -DA:47,61 +DA:17,5006 +DA:18,5006 +DA:29,45054 +DA:31,5006 +DA:32,4942 +DA:34,5006 +DA:35,4948 +DA:38,5006 +DA:39,4941 +DA:47,65 DA:48,0 -DA:58,4817 +DA:58,5006 DA:59,1 -DA:67,4816 +DA:67,5005 DA:68,0 -DA:78,4817 -DA:79,1 -DA:81,4817 +DA:78,5006 +DA:79,6 +DA:81,5006 DA:82,1 -DA:84,4817 +DA:84,5006 DA:85,1 LF:23 LH:21 -BRDA:17,0,0,4817 +BRDA:17,0,0,5006 BRDA:17,0,1,0 -BRDA:31,1,0,4757 -BRDA:31,1,1,60 -BRDA:34,2,0,4763 -BRDA:34,2,1,54 -BRDA:38,3,0,4756 -BRDA:38,3,1,61 +BRDA:31,1,0,4942 +BRDA:31,1,1,64 +BRDA:34,2,0,4948 +BRDA:34,2,1,58 +BRDA:38,3,0,4941 +BRDA:38,3,1,65 BRDA:47,4,0,0 -BRDA:47,4,1,61 +BRDA:47,4,1,65 BRDA:58,5,0,1 -BRDA:58,5,1,4816 +BRDA:58,5,1,5005 BRDA:67,6,0,0 -BRDA:67,6,1,4816 -BRDA:78,7,0,1 -BRDA:78,7,1,4816 +BRDA:67,6,1,5005 +BRDA:78,7,0,6 +BRDA:78,7,1,5000 BRDA:81,8,0,1 -BRDA:81,8,1,4816 +BRDA:81,8,1,5005 BRDA:84,9,0,1 -BRDA:84,9,1,4816 +BRDA:84,9,1,5005 BRF:20 BRH:17 end_of_record @@ -29400,39 +29451,39 @@ 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 @@ -29443,66 +29494,66 @@ FN:17,collapseNodes FN:54,collapse FNF:2 FNH:2 -FNDA:1655,collapseNodes -FNDA:3322,collapse +FNDA:1978,collapseNodes +FNDA:3968,collapse DA:1,1 DA:2,1 DA:3,1 DA:17,1 -DA:23,1655 +DA:23,1978 DA:24,2 -DA:27,1653 -DA:28,1653 -DA:30,1653 -DA:31,1064 -DA:32,589 +DA:27,1976 +DA:28,1976 +DA:30,1976 +DA:31,1186 +DA:32,790 DA:33,0 -DA:34,589 -DA:35,585 -DA:36,585 -DA:37,585 -DA:38,585 +DA:34,790 +DA:35,786 +DA:36,786 +DA:37,786 +DA:38,786 DA:40,4 DA:54,1 -DA:61,3322 -DA:62,1104 +DA:61,3968 +DA:62,1410 DA:63,65 DA:64,5 DA:66,60 -DA:69,1099 +DA:69,1405 DA:70,0 -DA:73,1099 -DA:75,3322 +DA:73,1405 +DA:75,3968 LF:28 LH:26 BRDA:23,0,0,2 -BRDA:23,0,1,1653 -BRDA:23,1,0,1655 -BRDA:23,1,1,1653 -BRDA:30,2,0,1064 -BRDA:30,2,1,589 +BRDA:23,0,1,1976 +BRDA:23,1,0,1978 +BRDA:23,1,1,1976 +BRDA:30,2,0,1186 +BRDA:30,2,1,790 BRDA:32,3,0,0 -BRDA:32,3,1,589 -BRDA:34,4,0,585 +BRDA:32,3,1,790 +BRDA:34,4,0,786 BRDA:34,4,1,4 -BRDA:35,5,0,585 +BRDA:35,5,0,786 BRDA:35,5,1,0 BRDA:35,6,0,0 -BRDA:35,6,1,585 -BRDA:35,7,0,585 -BRDA:35,7,1,585 -BRDA:61,8,0,4421 -BRDA:61,8,1,2797 +BRDA:35,6,1,786 +BRDA:35,7,0,786 +BRDA:35,7,1,786 +BRDA:61,8,0,5373 +BRDA:61,8,1,3687 BRDA:62,9,0,65 -BRDA:62,9,1,1039 -BRDA:62,10,0,1104 -BRDA:62,10,1,545 -BRDA:62,10,2,1080 -BRDA:62,10,3,559 +BRDA:62,9,1,1345 +BRDA:62,10,0,1410 +BRDA:62,10,1,649 +BRDA:62,10,2,1386 +BRDA:62,10,3,761 BRDA:63,11,0,5 BRDA:63,11,1,60 BRDA:69,12,0,0 -BRDA:69,12,1,1099 +BRDA:69,12,1,1405 BRF:28 BRH:24 end_of_record @@ -29512,25 +29563,25 @@ FN:30,contains FN:63,internalContains FNF:2 FNH:2 -FNDA:40134,contains -FNDA:23685,internalContains +FNDA:46011,contains +FNDA:27389,internalContains DA:1,1 DA:30,1 -DA:35,40134 -DA:36,6573 -DA:39,33561 -DA:40,4144 -DA:43,29417 -DA:44,2719 -DA:45,2719 -DA:48,29417 -DA:49,8544 -DA:50,8544 -DA:53,29417 -DA:54,756 -DA:57,28661 -DA:64,23685 -DA:65,23685 +DA:35,46011 +DA:36,7012 +DA:39,38999 +DA:40,5415 +DA:43,33584 +DA:44,3272 +DA:45,3272 +DA:48,33584 +DA:49,10594 +DA:50,10594 +DA:53,33584 +DA:54,992 +DA:57,32592 +DA:64,27389 +DA:65,27389 DA:67,0 DA:68,0 DA:69,0 @@ -29538,33 +29589,33 @@ DA:72,0 DA:75,0 LF:22 LH:17 -BRDA:35,0,0,6573 -BRDA:35,0,1,33561 -BRDA:35,1,0,40134 -BRDA:35,1,1,40123 -BRDA:39,2,0,4144 -BRDA:39,2,1,29417 -BRDA:39,3,0,33561 -BRDA:39,3,1,13165 -BRDA:43,4,0,2719 -BRDA:43,4,1,26698 -BRDA:44,5,0,2719 -BRDA:44,5,1,2719 -BRDA:48,6,0,8544 -BRDA:48,6,1,20873 -BRDA:48,7,0,29417 -BRDA:48,7,1,29417 -BRDA:53,8,0,756 -BRDA:53,8,1,28661 -BRDA:53,9,0,29417 -BRDA:53,9,1,880 -BRDA:54,10,0,756 -BRDA:54,10,1,751 -BRDA:58,11,0,28661 -BRDA:58,11,1,23685 -BRDA:58,12,0,28661 -BRDA:58,12,1,10472 -BRDA:64,13,0,23685 +BRDA:35,0,0,7012 +BRDA:35,0,1,38999 +BRDA:35,1,0,46011 +BRDA:35,1,1,46000 +BRDA:39,2,0,5415 +BRDA:39,2,1,33584 +BRDA:39,3,0,38999 +BRDA:39,3,1,15276 +BRDA:43,4,0,3272 +BRDA:43,4,1,30312 +BRDA:44,5,0,3272 +BRDA:44,5,1,3272 +BRDA:48,6,0,10594 +BRDA:48,6,1,22990 +BRDA:48,7,0,33584 +BRDA:48,7,1,33584 +BRDA:53,8,0,992 +BRDA:53,8,1,32592 +BRDA:53,9,0,33584 +BRDA:53,9,1,1116 +BRDA:54,10,0,992 +BRDA:54,10,1,970 +BRDA:58,11,0,32592 +BRDA:58,11,1,27389 +BRDA:58,12,0,32592 +BRDA:58,12,1,11450 +BRDA:64,13,0,27389 BRDA:64,13,1,0 BRDA:68,14,0,0 BRDA:68,14,1,0 @@ -29579,69 +29630,69 @@ FN:112,(anonymous_2) FN:118,(anonymous_3) FNF:4 FNH:4 -FNDA:11519,createElement +FNDA:11909,createElement FNDA:275,(anonymous_1) FNDA:237,(anonymous_2) -FNDA:7170,(anonymous_3) +FNDA:7360,(anonymous_3) DA:1,1 DA:2,1 DA:3,1 DA:10,1 DA:77,1 -DA:84,11519 -DA:85,4877 -DA:88,11519 +DA:84,11909 +DA:85,5077 +DA:88,11909 DA:89,1 -DA:92,80626 -DA:93,11518 -DA:97,11518 -DA:98,513 -DA:101,11518 +DA:92,83356 +DA:93,11908 +DA:97,11908 +DA:98,523 +DA:101,11908 DA:102,432 -DA:105,11518 +DA:105,11908 DA:106,139 DA:107,275 -DA:111,11518 +DA:111,11908 DA:112,86 DA:113,237 -DA:117,11518 -DA:118,6355 -DA:119,7170 +DA:117,11908 +DA:118,6545 +DA:119,7360 DA:120,1017 -DA:121,6153 -DA:122,6152 -DA:123,6152 -DA:124,6152 -DA:130,11518 +DA:121,6343 +DA:122,6342 +DA:123,6342 +DA:124,6342 +DA:130,11908 LF:30 LH:30 BRDA:16,0,0,0 BRDA:16,0,1,1 -BRDA:84,1,0,4877 -BRDA:84,1,1,6642 +BRDA:84,1,0,5077 +BRDA:84,1,1,6832 BRDA:88,2,0,1 -BRDA:88,2,1,11518 -BRDA:88,3,0,11519 -BRDA:88,3,1,11518 +BRDA:88,2,1,11908 +BRDA:88,3,0,11909 +BRDA:88,3,1,11908 BRDA:94,4,0,112 -BRDA:94,4,1,11406 -BRDA:97,5,0,513 -BRDA:97,5,1,11005 +BRDA:94,4,1,11796 +BRDA:97,5,0,523 +BRDA:97,5,1,11385 BRDA:101,6,0,432 -BRDA:101,6,1,11086 +BRDA:101,6,1,11476 BRDA:105,7,0,139 -BRDA:105,7,1,11379 -BRDA:105,8,0,11518 +BRDA:105,7,1,11769 +BRDA:105,8,0,11908 BRDA:105,8,1,139 BRDA:111,9,0,86 -BRDA:111,9,1,11432 -BRDA:117,10,0,6355 -BRDA:117,10,1,5163 +BRDA:111,9,1,11822 +BRDA:117,10,0,6545 +BRDA:117,10,1,5363 BRDA:119,11,0,1017 -BRDA:119,11,1,6153 -BRDA:121,12,0,6152 +BRDA:119,11,1,6343 +BRDA:121,12,0,6342 BRDA:121,12,1,1 -BRDA:123,13,0,6152 +BRDA:123,13,0,6342 BRDA:123,13,1,0 BRF:28 BRH:26 @@ -29651,41 +29702,41 @@ SF:packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts FN:13,findClosestElementAncestor FNF:1 FNH:1 -FNDA:24001,findClosestElementAncestor +FNDA:27086,findClosestElementAncestor DA:1,1 DA:2,1 DA:13,1 -DA:18,24001 -DA:19,24001 -DA:21,24001 -DA:22,6756 -DA:23,6756 +DA:18,27086 +DA:19,27086 +DA:21,27086 +DA:22,7173 +DA:23,7173 DA:25,0 DA:26,0 -DA:31,24001 +DA:31,27086 LF:11 LH:9 BRDA:18,0,0,30 -BRDA:18,0,1,23971 -BRDA:18,1,0,20108 -BRDA:18,1,1,3863 -BRDA:19,2,0,23832 +BRDA:18,0,1,27056 +BRDA:18,1,0,21949 +BRDA:18,1,1,5107 +BRDA:19,2,0,26917 BRDA:19,2,1,169 -BRDA:19,3,0,24001 -BRDA:19,3,1,23832 -BRDA:21,4,0,6756 -BRDA:21,4,1,17245 -BRDA:21,5,0,24001 -BRDA:21,5,1,23832 -BRDA:22,6,0,6756 +BRDA:19,3,0,27086 +BRDA:19,3,1,26917 +BRDA:21,4,0,7173 +BRDA:21,4,1,19913 +BRDA:21,5,0,27086 +BRDA:21,5,1,26917 +BRDA:22,6,0,7173 BRDA:22,6,1,0 BRDA:25,7,0,0 BRDA:25,7,1,0 BRDA:25,7,2,0 -BRDA:31,8,0,18364 -BRDA:31,8,1,5637 -BRDA:31,9,0,24001 -BRDA:31,9,1,6667 +BRDA:31,8,0,21078 +BRDA:31,8,1,6008 +BRDA:31,9,0,27086 +BRDA:31,9,1,7060 BRF:21 BRH:17 end_of_record @@ -29712,49 +29763,49 @@ FN:40,getComputedStyle FN:44,px2Pt FNF:3 FNH:3 -FNDA:556,getComputedStyles -FNDA:528,getComputedStyle +FNDA:692,getComputedStyles +FNDA:664,getComputedStyle FNDA:45,px2Pt DA:1,1 DA:10,1 -DA:12,560 -DA:14,556 -DA:15,556 -DA:16,556 -DA:17,556 -DA:18,553 -DA:19,553 -DA:21,553 -DA:22,664 -DA:23,664 -DA:24,664 -DA:25,664 -DA:26,664 -DA:31,556 +DA:12,696 +DA:14,692 +DA:15,692 +DA:16,692 +DA:17,692 +DA:18,689 +DA:19,689 +DA:21,689 +DA:22,800 +DA:23,800 +DA:24,800 +DA:25,800 +DA:26,800 +DA:31,692 DA:40,1 -DA:41,528 +DA:41,664 DA:45,45 DA:48,43 DA:50,2 LF:21 LH:21 BRDA:12,0,0,4 -BRDA:12,0,1,552 +BRDA:12,0,1,688 BRDA:16,1,0,27 -BRDA:16,1,1,529 -BRDA:17,2,0,553 +BRDA:16,1,1,665 +BRDA:17,2,0,689 BRDA:17,2,1,3 -BRDA:18,3,0,553 +BRDA:18,3,0,689 BRDA:18,3,1,0 -BRDA:21,4,0,553 +BRDA:21,4,0,689 BRDA:21,4,1,0 -BRDA:23,5,0,664 +BRDA:23,5,0,800 BRDA:23,5,1,73 -BRDA:24,6,0,649 +BRDA:24,6,0,785 BRDA:24,6,1,15 BRDA:25,7,0,45 -BRDA:25,7,1,619 -BRDA:41,8,0,528 +BRDA:25,7,1,755 +BRDA:41,8,0,664 BRDA:41,8,1,74 BRDA:45,9,0,43 BRDA:45,9,1,2 @@ -29836,33 +29887,33 @@ FN:27,getFirstLeafNode FN:35,getLastLeafNode FNF:4 FNH:4 -FNDA:483,getLeafNode -FNDA:1861,(anonymous_1) -FNDA:474,getFirstLeafNode +FNDA:520,getLeafNode +FNDA:1963,(anonymous_1) +FNDA:511,getFirstLeafNode FNDA:9,getLastLeafNode DA:1,1 DA:2,1 -DA:10,1861 -DA:11,483 -DA:12,483 -DA:13,452 -DA:16,483 +DA:10,1963 +DA:11,520 +DA:12,520 +DA:13,466 +DA:16,520 DA:17,35 -DA:20,483 +DA:20,520 DA:27,1 -DA:28,474 +DA:28,511 DA:35,1 DA:36,9 LF:13 LH:13 -BRDA:10,0,0,1832 +BRDA:10,0,0,1934 BRDA:10,0,1,29 -BRDA:12,1,0,935 -BRDA:12,1,1,926 +BRDA:12,1,0,986 +BRDA:12,1,1,977 BRDA:16,2,0,35 -BRDA:16,2,1,448 -BRDA:16,3,0,483 -BRDA:16,3,1,474 +BRDA:16,2,1,485 +BRDA:16,3,0,520 +BRDA:16,3,1,511 BRF:8 BRH:8 end_of_record @@ -29877,84 +29928,84 @@ FN:68,getNextLeafSibling FN:82,getPreviousLeafSibling FNF:7 FNH:7 -FNDA:1379,getLeafSibling -FNDA:1383,(anonymous_1) -FNDA:631,(anonymous_2) -FNDA:1177,(anonymous_3) -FNDA:625,(anonymous_4) -FNDA:203,getNextLeafSibling +FNDA:1727,getLeafSibling +FNDA:1767,(anonymous_1) +FNDA:670,(anonymous_2) +FNDA:1609,(anonymous_3) +FNDA:635,(anonymous_4) +FNDA:337,getNextLeafSibling FNDA:116,getPreviousLeafSibling DA:1,1 DA:2,1 DA:3,1 DA:14,1 -DA:21,1379 -DA:22,1379 -DA:23,1383 -DA:24,631 -DA:25,1379 -DA:26,1379 -DA:27,1354 -DA:28,1354 -DA:30,1354 -DA:33,1371 -DA:34,1371 -DA:35,1371 -DA:36,643 -DA:37,643 -DA:41,1371 -DA:46,617 -DA:50,1371 -DA:51,1371 -DA:53,1354 -DA:54,1354 -DA:59,1379 +DA:21,1727 +DA:22,1727 +DA:23,1767 +DA:24,670 +DA:25,1727 +DA:26,1727 +DA:27,1605 +DA:28,1605 +DA:30,1605 +DA:33,1628 +DA:34,1628 +DA:35,1628 +DA:36,809 +DA:37,809 +DA:41,1628 +DA:46,769 +DA:50,1628 +DA:51,1628 +DA:53,1605 +DA:54,1605 +DA:59,1727 DA:68,1 -DA:73,203 +DA:73,337 DA:82,1 DA:87,116 LF:29 LH:29 -BRDA:23,0,0,984 -BRDA:23,0,1,395 -BRDA:23,1,0,1383 -BRDA:23,1,1,995 +BRDA:23,0,0,1313 +BRDA:23,0,1,414 +BRDA:23,1,0,1767 +BRDA:23,1,1,1251 BRDA:23,2,0,0 -BRDA:23,2,1,1383 -BRDA:23,3,0,1383 -BRDA:23,3,1,1383 -BRDA:24,4,0,631 -BRDA:24,4,1,439 +BRDA:23,2,1,1767 +BRDA:23,3,0,1767 +BRDA:23,3,1,1767 +BRDA:24,4,0,670 +BRDA:24,4,1,468 BRDA:24,5,0,0 -BRDA:24,5,1,631 -BRDA:24,6,0,631 -BRDA:24,6,1,631 -BRDA:25,7,0,984 -BRDA:25,7,1,395 -BRDA:26,8,0,1354 -BRDA:26,8,1,25 -BRDA:33,9,0,1371 +BRDA:24,5,1,670 +BRDA:24,6,0,670 +BRDA:24,6,1,670 +BRDA:25,7,0,1313 +BRDA:25,7,1,414 +BRDA:26,8,0,1605 +BRDA:26,8,1,122 +BRDA:33,9,0,1628 BRDA:33,9,1,0 BRDA:33,10,0,0 -BRDA:33,10,1,1371 -BRDA:33,11,0,1371 -BRDA:33,11,1,1371 -BRDA:35,12,0,2014 -BRDA:35,12,1,1434 -BRDA:37,13,0,643 +BRDA:33,10,1,1628 +BRDA:33,11,0,1628 +BRDA:33,11,1,1628 +BRDA:35,12,0,2437 +BRDA:35,12,1,1719 +BRDA:37,13,0,809 BRDA:37,13,1,0 BRDA:37,14,0,0 -BRDA:37,14,1,643 -BRDA:37,15,0,643 -BRDA:37,15,1,643 -BRDA:42,16,0,1988 -BRDA:42,16,1,1197 -BRDA:42,16,2,552 -BRDA:42,16,3,1185 -BRDA:50,17,0,1371 -BRDA:50,17,1,580 -BRDA:51,18,0,1354 -BRDA:51,18,1,17 +BRDA:37,14,1,809 +BRDA:37,15,0,809 +BRDA:37,15,1,809 +BRDA:42,16,0,2397 +BRDA:42,16,1,1487 +BRDA:42,16,2,627 +BRDA:42,16,3,1475 +BRDA:50,17,0,1628 +BRDA:50,17,1,718 +BRDA:51,18,0,1605 +BRDA:51,18,1,23 BRF:40 BRH:34 end_of_record @@ -29983,15 +30034,15 @@ SF:packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts FN:8,getTagOfNode FNF:1 FNH:1 -FNDA:29556,getTagOfNode +FNDA:34284,getTagOfNode DA:8,1 -DA:9,29556 +DA:9,34284 LF:2 LH:2 -BRDA:9,0,0,21769 -BRDA:9,0,1,7787 -BRDA:9,1,0,29556 -BRDA:9,1,1,29492 +BRDA:9,0,0,24744 +BRDA:9,0,1,9540 +BRDA:9,1,0,34284 +BRDA:9,1,1,34211 BRF:4 BRH:4 end_of_record @@ -30000,18 +30051,18 @@ SF:packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts FN:13,isBlockElement FNF:1 FNH:1 -FNDA:7733,isBlockElement +FNDA:9605,isBlockElement DA:1,1 DA:3,1 DA:6,1 DA:13,1 -DA:14,7733 -DA:15,7733 +DA:14,9605 +DA:15,9605 LF:6 LH:6 -BRDA:16,0,0,7733 -BRDA:16,0,1,4916 -BRDA:16,0,2,4916 +BRDA:16,0,0,9605 +BRDA:16,0,1,6227 +BRDA:16,0,2,6227 BRF:3 BRH:3 end_of_record @@ -30020,14 +30071,14 @@ SF:packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts FN:9,isNodeAfter FNF:1 FNH:1 -FNDA:2074,isNodeAfter +FNDA:2645,isNodeAfter DA:9,1 -DA:10,2074 +DA:10,2645 LF:2 LH:2 -BRDA:11,0,0,2074 -BRDA:11,0,1,2072 -BRDA:11,0,2,2071 +BRDA:11,0,0,2645 +BRDA:11,0,1,2643 +BRDA:11,0,2,2642 BRF:3 BRH:3 end_of_record @@ -30037,47 +30088,47 @@ FN:15,isNodeEmpty FN:41,trim FNF:2 FNH:2 -FNDA:91,isNodeEmpty -FNDA:89,trim +FNDA:94,isNodeEmpty +FNDA:92,trim DA:1,1 DA:4,1 DA:5,1 DA:6,1 DA:15,1 -DA:20,91 +DA:20,94 DA:21,2 -DA:22,89 -DA:23,20 -DA:24,69 -DA:25,69 -DA:26,69 -DA:27,69 -DA:30,69 -DA:35,47 +DA:22,92 +DA:23,21 +DA:24,71 +DA:25,71 +DA:26,71 +DA:27,71 +DA:30,71 +DA:35,49 DA:38,22 -DA:42,89 -DA:43,89 +DA:42,92 +DA:43,92 LF:18 LH:18 BRDA:20,0,0,2 -BRDA:20,0,1,89 -BRDA:22,1,0,20 -BRDA:22,1,1,69 -BRDA:23,2,0,20 +BRDA:20,0,1,92 +BRDA:22,1,0,21 +BRDA:22,1,1,71 +BRDA:23,2,0,21 BRDA:23,2,1,2 -BRDA:24,3,0,69 +BRDA:24,3,0,71 BRDA:24,3,1,0 -BRDA:26,4,0,69 +BRDA:26,4,0,71 BRDA:26,4,1,32 BRDA:28,5,0,13 -BRDA:28,5,1,56 -BRDA:30,6,0,47 +BRDA:28,5,1,58 +BRDA:30,6,0,49 BRDA:30,6,1,22 -BRDA:31,7,0,69 +BRDA:31,7,0,71 BRDA:31,7,1,34 BRDA:31,7,2,31 -BRDA:43,8,0,31 -BRDA:43,8,1,58 +BRDA:43,8,0,32 +BRDA:43,8,1,60 BRF:19 BRH:18 end_of_record @@ -30086,15 +30137,15 @@ SF:packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts FN:17,isVoidHtmlElement FNF:1 FNH:1 -FNDA:1601,isVoidHtmlElement +FNDA:1908,isVoidHtmlElement DA:1,1 DA:9,1 DA:17,1 -DA:18,1601 +DA:18,1908 LF:4 LH:4 -BRDA:18,0,0,1601 -BRDA:18,0,1,1600 +BRDA:18,0,0,1908 +BRDA:18,0,1,1907 BRF:2 BRH:2 end_of_record @@ -30149,15 +30200,15 @@ SF:packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts FN:19,matchesSelector FNF:1 FNH:1 -FNDA:526,matchesSelector +FNDA:413,matchesSelector DA:1,1 DA:19,1 -DA:20,526 +DA:20,413 LF:3 LH:3 -BRDA:21,0,0,526 -BRDA:21,0,1,526 -BRDA:22,1,0,526 +BRDA:21,0,0,413 +BRDA:21,0,1,413 +BRDA:22,1,0,413 BRDA:22,1,1,0 BRF:4 BRH:3 @@ -30167,24 +30218,24 @@ SF:packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts FN:7,moveChildNodes FNF:1 FNH:1 -FNDA:745,moveChildNodes +FNDA:848,moveChildNodes DA:7,1 -DA:12,745 +DA:12,848 DA:13,4 -DA:16,741 -DA:17,393 -DA:20,741 -DA:21,415 +DA:16,844 +DA:17,517 +DA:20,844 +DA:21,389 LF:7 LH:7 BRDA:12,0,0,4 -BRDA:12,0,1,741 -BRDA:16,1,0,1134 -BRDA:16,1,1,1118 -BRDA:20,2,0,412 -BRDA:20,2,1,744 -BRDA:20,3,0,1156 -BRDA:20,3,1,1152 +BRDA:12,0,1,844 +BRDA:16,1,0,1361 +BRDA:16,1,1,1345 +BRDA:20,2,0,526 +BRDA:20,2,1,707 +BRDA:20,3,0,1233 +BRDA:20,3,1,1229 BRF:8 BRH:8 end_of_record @@ -30254,70 +30305,70 @@ FN:81,checkPosition FN:82,(anonymous_4) FNF:5 FNH:5 -FNDA:11757,queryElements -FNDA:723,(anonymous_1) -FNDA:723,isIntersectWithNodeRange -FNDA:2384,checkPosition -FNDA:4726,(anonymous_4) +FNDA:12636,queryElements +FNDA:842,(anonymous_1) +FNDA:842,isIntersectWithNodeRange +FNDA:2794,checkPosition +FNDA:5370,(anonymous_4) DA:1,1 DA:14,1 -DA:18,12373 -DA:21,11757 +DA:18,13311 +DA:21,12636 DA:22,6 -DA:25,11751 -DA:27,11751 -DA:28,1548 -DA:29,387 -DA:30,217 -DA:34,217 -DA:37,387 -DA:42,387 -DA:43,723 -DA:52,11751 -DA:53,793 -DA:55,11751 -DA:64,723 -DA:65,723 -DA:66,723 -DA:68,723 -DA:69,605 -DA:72,723 -DA:82,2384 -DA:83,4726 +DA:25,12630 +DA:27,12630 +DA:28,1932 +DA:29,483 +DA:30,266 +DA:34,266 +DA:37,483 +DA:42,483 +DA:43,842 +DA:52,12630 +DA:53,899 +DA:55,12630 +DA:64,842 +DA:65,842 +DA:66,842 +DA:68,842 +DA:69,611 +DA:72,842 +DA:82,2794 +DA:83,5370 LF:25 LH:25 -BRDA:18,0,0,616 -BRDA:18,0,1,11141 +BRDA:18,0,0,675 +BRDA:18,0,1,11961 BRDA:21,1,0,6 -BRDA:21,1,1,11751 -BRDA:21,2,0,11757 -BRDA:21,2,1,11754 -BRDA:27,3,0,387 -BRDA:27,3,1,11364 -BRDA:27,4,0,11751 -BRDA:27,4,1,387 -BRDA:29,5,0,217 -BRDA:29,5,1,170 -BRDA:29,6,0,387 -BRDA:29,6,1,235 -BRDA:34,7,0,217 +BRDA:21,1,1,12630 +BRDA:21,2,0,12636 +BRDA:21,2,1,12633 +BRDA:27,3,0,483 +BRDA:27,3,1,12147 +BRDA:27,4,0,12630 +BRDA:27,4,1,483 +BRDA:29,5,0,266 +BRDA:29,5,1,217 +BRDA:29,6,0,483 +BRDA:29,6,1,290 +BRDA:34,7,0,266 BRDA:34,7,1,13 -BRDA:39,8,0,174 -BRDA:39,8,1,213 -BRDA:38,9,0,387 -BRDA:38,9,1,239 -BRDA:38,9,2,221 -BRDA:52,10,0,793 -BRDA:52,10,1,10958 -BRDA:68,11,0,605 -BRDA:68,11,1,118 -BRDA:73,12,0,723 -BRDA:73,12,1,619 -BRDA:73,12,2,584 -BRDA:73,12,3,374 +BRDA:39,8,0,206 +BRDA:39,8,1,277 +BRDA:38,9,0,483 +BRDA:38,9,1,290 +BRDA:38,9,2,266 +BRDA:52,10,0,899 +BRDA:52,10,1,11731 +BRDA:68,11,0,611 +BRDA:68,11,1,231 +BRDA:73,12,0,842 +BRDA:73,12,1,731 +BRDA:73,12,2,696 +BRDA:73,12,3,441 BRDA:73,12,4,84 -BRDA:84,13,0,1342 -BRDA:84,13,1,3384 +BRDA:84,13,0,1573 +BRDA:84,13,1,3797 BRF:32 BRH:32 end_of_record @@ -30352,46 +30403,46 @@ FN:11,getTargetWindow FN:29,safeInstanceOf FNF:2 FNH:2 -FNDA:21504,getTargetWindow -FNDA:51397,safeInstanceOf +FNDA:23687,getTargetWindow +FNDA:57877,safeInstanceOf DA:11,1 -DA:13,21504 -DA:20,21504 -DA:21,21504 +DA:13,23687 +DA:20,23687 +DA:21,23687 DA:29,1 -DA:33,51397 -DA:34,29895 -DA:40,21502 -DA:41,21502 -DA:42,21502 -DA:43,21502 -DA:44,21502 +DA:33,57877 +DA:34,34192 +DA:40,23685 +DA:41,23685 +DA:42,23685 +DA:43,23685 +DA:44,23685 LF:12 LH:12 -BRDA:13,0,0,21504 -BRDA:13,0,1,11250 -BRDA:13,0,2,705 +BRDA:13,0,0,23687 +BRDA:13,0,1,13055 +BRDA:13,0,2,908 BRDA:16,1,0,0 -BRDA:16,1,1,705 -BRDA:20,2,0,21504 -BRDA:20,2,1,10545 -BRDA:20,2,2,575 -BRDA:33,3,0,29895 -BRDA:33,3,1,21502 -BRDA:35,4,0,29895 -BRDA:35,4,1,2856 +BRDA:16,1,1,908 +BRDA:20,2,0,23687 +BRDA:20,2,1,12147 +BRDA:20,2,2,682 +BRDA:33,3,0,34192 +BRDA:33,3,1,23685 +BRDA:35,4,0,34192 +BRDA:35,4,1,3430 BRDA:36,5,0,0 -BRDA:36,5,1,2856 -BRDA:36,6,0,2856 -BRDA:36,6,1,2856 -BRDA:41,7,0,21502 -BRDA:41,7,1,10543 -BRDA:43,8,0,21502 -BRDA:43,8,1,21502 -BRDA:45,9,0,21502 -BRDA:45,9,1,21502 -BRDA:45,9,2,14293 -BRDA:45,9,3,3334 +BRDA:36,5,1,3430 +BRDA:36,6,0,3430 +BRDA:36,6,1,3430 +BRDA:41,7,0,23685 +BRDA:41,7,1,12145 +BRDA:43,8,0,23685 +BRDA:43,8,1,23685 +BRDA:45,9,0,23685 +BRDA:45,9,1,23685 +BRDA:45,9,2,15583 +BRDA:45,9,3,4043 BRF:24 BRH:22 end_of_record @@ -30405,7 +30456,7 @@ FN:131,calculateLightness FNF:5 FNH:5 FNDA:1,(anonymous_0) -FNDA:14513,setColor +FNDA:15115,setColor FNDA:58,adaptFontColorToBackgroundColor FNDA:7,isADarkOrBrightColor FNDA:7,calculateLightness @@ -30421,14 +30472,14 @@ DA:11,1 DA:15,1 DA:17,1 DA:29,1 -DA:37,14513 -DA:38,14513 -DA:39,14513 -DA:41,14513 -DA:42,14513 -DA:43,14450 -DA:49,14450 -DA:52,14513 +DA:37,15115 +DA:38,15115 +DA:39,15115 +DA:41,15115 +DA:42,15115 +DA:43,15052 +DA:49,15052 +DA:52,15115 DA:53,58 DA:77,58 DA:78,51 @@ -30457,32 +30508,32 @@ LF:44 LH:40 BRDA:8,0,0,1 BRDA:8,0,1,1 -BRDA:37,1,0,114 -BRDA:37,1,1,14399 -BRDA:38,2,0,114 -BRDA:38,2,1,14399 -BRDA:39,3,0,4898 -BRDA:39,3,1,9615 -BRDA:41,4,0,14513 +BRDA:37,1,0,153 +BRDA:37,1,1,14962 +BRDA:38,2,0,153 +BRDA:38,2,1,14962 +BRDA:39,3,0,5095 +BRDA:39,3,1,10020 +BRDA:41,4,0,15115 BRDA:41,4,1,0 -BRDA:41,5,0,14513 -BRDA:41,5,1,14399 -BRDA:42,6,0,14450 +BRDA:41,5,0,15115 +BRDA:41,5,1,14962 +BRDA:42,6,0,15052 BRDA:42,6,1,63 -BRDA:44,7,0,14450 -BRDA:44,7,1,61 -BRDA:44,8,0,61 -BRDA:44,8,1,14389 -BRDA:44,9,0,14450 -BRDA:44,9,1,14389 -BRDA:46,10,0,61 -BRDA:46,10,1,14389 -BRDA:46,11,0,14450 -BRDA:46,11,1,14389 +BRDA:44,7,0,15052 +BRDA:44,7,1,100 +BRDA:44,8,0,100 +BRDA:44,8,1,14952 +BRDA:44,9,0,15052 +BRDA:44,9,1,14952 +BRDA:46,10,0,100 +BRDA:46,10,1,14952 +BRDA:46,11,0,15052 +BRDA:46,11,1,14952 BRDA:52,12,0,58 -BRDA:52,12,1,14455 -BRDA:52,13,0,14513 -BRDA:52,13,1,4898 +BRDA:52,12,1,15057 +BRDA:52,13,0,15115 +BRDA:52,13,1,5095 BRDA:55,14,0,58 BRDA:55,14,1,58 BRDA:55,15,0,58 @@ -30509,52 +30560,52 @@ SF:packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts FN:21,shouldSkipNode FNF:1 FNH:1 -FNDA:1527,shouldSkipNode +FNDA:1858,shouldSkipNode DA:1,1 DA:2,1 DA:5,1 DA:6,1 DA:21,1 -DA:22,1527 -DA:23,1131 -DA:24,34 -DA:25,1097 -DA:26,12 -DA:28,1085 -DA:30,396 -DA:31,396 +DA:22,1858 +DA:23,1377 +DA:24,33 +DA:25,1344 +DA:26,20 +DA:28,1324 +DA:30,481 +DA:31,481 DA:32,1 -DA:35,395 -DA:37,395 -DA:41,139 -DA:42,99 -DA:43,90 -DA:46,49 -DA:50,256 +DA:35,480 +DA:37,480 +DA:41,185 +DA:42,123 +DA:43,112 +DA:46,73 +DA:50,295 DA:53,0 LF:22 LH:21 -BRDA:22,0,0,1131 -BRDA:22,0,1,396 -BRDA:23,1,0,34 -BRDA:23,1,1,1097 -BRDA:23,2,0,1131 -BRDA:23,2,1,1106 -BRDA:23,2,2,1106 -BRDA:25,3,0,12 -BRDA:25,3,1,1085 -BRDA:25,4,0,1097 -BRDA:25,4,1,112 -BRDA:30,5,0,396 +BRDA:22,0,0,1377 +BRDA:22,0,1,481 +BRDA:23,1,0,33 +BRDA:23,1,1,1344 +BRDA:23,2,0,1377 +BRDA:23,2,1,1353 +BRDA:23,2,2,1353 +BRDA:25,3,0,20 +BRDA:25,3,1,1324 +BRDA:25,4,0,1344 +BRDA:25,4,1,130 +BRDA:30,5,0,481 BRDA:30,5,1,0 BRDA:31,6,0,1 -BRDA:31,6,1,395 -BRDA:37,7,0,139 -BRDA:37,7,1,256 -BRDA:37,8,0,395 -BRDA:37,8,1,278 -BRDA:42,9,0,90 -BRDA:42,9,1,9 +BRDA:31,6,1,480 +BRDA:37,7,0,185 +BRDA:37,7,1,295 +BRDA:37,8,0,480 +BRDA:37,8,1,341 +BRDA:42,9,0,112 +BRDA:42,9,1,11 BRF:21 BRH:20 end_of_record @@ -30564,69 +30615,69 @@ FN:14,splitParentNode FN:51,splitBalancedNodeRange FNF:2 FNH:2 -FNDA:272,splitParentNode -FNDA:88,splitBalancedNodeRange +FNDA:379,splitParentNode +FNDA:142,splitBalancedNodeRange DA:1,1 DA:14,1 -DA:15,272 +DA:15,379 DA:16,2 -DA:19,270 -DA:20,270 -DA:21,270 -DA:22,270 -DA:23,127 -DA:24,94 -DA:27,143 -DA:28,123 -DA:33,270 -DA:34,165 -DA:39,105 -DA:42,270 +DA:19,377 +DA:20,377 +DA:21,377 +DA:22,377 +DA:23,180 +DA:24,97 +DA:27,197 +DA:28,138 +DA:33,377 +DA:34,173 +DA:39,204 +DA:42,377 DA:51,1 -DA:52,88 -DA:53,88 -DA:54,88 -DA:55,88 -DA:56,86 +DA:52,142 +DA:53,142 +DA:54,142 +DA:55,142 +DA:56,140 DA:57,1 DA:58,1 DA:59,1 -DA:61,86 -DA:62,86 -DA:65,88 +DA:61,140 +DA:62,140 +DA:65,142 LF:28 LH:28 BRDA:15,0,0,2 -BRDA:15,0,1,270 -BRDA:15,1,0,272 -BRDA:15,1,1,270 -BRDA:22,2,0,127 -BRDA:22,2,1,143 -BRDA:23,3,0,221 -BRDA:23,3,1,221 -BRDA:33,4,0,165 -BRDA:33,4,1,105 -BRDA:33,5,0,270 -BRDA:33,5,1,167 +BRDA:15,0,1,377 +BRDA:15,1,0,379 +BRDA:15,1,1,377 +BRDA:22,2,0,180 +BRDA:22,2,1,197 +BRDA:23,3,0,277 +BRDA:23,3,1,277 +BRDA:33,4,0,173 +BRDA:33,4,1,204 +BRDA:33,5,0,377 +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,57 -BRDA:53,10,0,31 -BRDA:53,10,1,57 -BRDA:54,11,0,86 +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,107 +BRDA:53,10,0,35 +BRDA:53,10,1,107 +BRDA:54,11,0,140 BRDA:54,11,1,2 -BRDA:54,12,0,88 -BRDA:54,12,1,87 -BRDA:54,12,2,86 -BRDA:55,13,0,86 +BRDA:54,12,0,142 +BRDA:54,12,1,141 +BRDA:54,12,2,140 +BRDA:55,13,0,140 BRDA:55,13,1,2 BRDA:56,14,0,1 -BRDA:56,14,1,85 +BRDA:56,14,1,139 BRF:31 BRH:30 end_of_record @@ -30675,21 +30726,21 @@ SF:packages/roosterjs-editor-dom/lib/utils/unwrap.ts FN:5,unwrap FNF:1 FNH:1 -FNDA:255,unwrap +FNDA:324,unwrap DA:5,1 -DA:7,255 -DA:8,255 +DA:7,324 +DA:8,324 DA:9,12 -DA:12,243 -DA:13,258 -DA:16,243 -DA:17,243 +DA:12,312 +DA:13,361 +DA:16,312 +DA:17,312 LF:8 LH:8 -BRDA:7,0,0,254 +BRDA:7,0,0,323 BRDA:7,0,1,1 BRDA:8,1,0,12 -BRDA:8,1,1,243 +BRDA:8,1,1,312 BRF:4 BRH:4 end_of_record @@ -30698,47 +30749,47 @@ SF:packages/roosterjs-editor-dom/lib/utils/wrap.ts FN:48,wrap FNF:1 FNH:1 -FNDA:164,wrap +FNDA:256,wrap DA:1,1 DA:2,1 DA:3,1 DA:48,1 -DA:57,164 -DA:58,164 +DA:57,256 +DA:58,256 DA:59,3 -DA:62,161 -DA:63,36 -DA:66,161 -DA:67,161 -DA:69,161 -DA:70,142 -DA:74,19 -DA:78,161 -DA:80,161 -DA:81,144 -DA:84,183 -DA:85,183 -DA:88,161 +DA:62,253 +DA:63,60 +DA:66,253 +DA:67,253 +DA:69,253 +DA:70,224 +DA:74,29 +DA:78,253 +DA:80,253 +DA:81,236 +DA:84,276 +DA:85,276 +DA:88,253 LF:20 LH:20 BRDA:57,0,0,2 -BRDA:57,0,1,162 -BRDA:57,1,0,111 -BRDA:57,1,1,51 +BRDA:57,0,1,254 +BRDA:57,1,0,193 +BRDA:57,1,1,61 BRDA:58,2,0,3 -BRDA:58,2,1,161 -BRDA:58,3,0,164 -BRDA:58,3,1,161 -BRDA:58,3,2,161 -BRDA:62,4,0,36 -BRDA:62,4,1,125 -BRDA:66,5,0,161 +BRDA:58,2,1,253 +BRDA:58,3,0,256 +BRDA:58,3,1,253 +BRDA:58,3,2,253 +BRDA:62,4,0,60 +BRDA:62,4,1,193 +BRDA:66,5,0,253 BRDA:66,5,1,0 -BRDA:69,6,0,142 -BRDA:69,6,1,19 -BRDA:71,7,0,138 +BRDA:69,6,0,224 +BRDA:69,6,1,29 +BRDA:71,7,0,220 BRDA:71,7,1,4 -BRDA:80,8,0,144 +BRDA:80,8,0,236 BRDA:80,8,1,17 BRF:19 BRH:18 @@ -31160,9 +31211,9 @@ FNDA:5,ContentEdit FNDA:0,(anonymous_2) FNDA:3,(anonymous_3) FNDA:120,(anonymous_4) -FNDA:108,(anonymous_5) +FNDA:102,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:72,(anonymous_7) +FNDA:68,(anonymous_7) FNDA:2,(anonymous_8) DA:1,1 DA:2,1 @@ -31180,12 +31231,12 @@ DA:50,3 DA:51,120 DA:53,120 DA:55,120 -DA:59,108 +DA:59,102 DA:62,3 -DA:63,108 +DA:63,102 DA:66,2 DA:67,2 -DA:68,72 +DA:68,68 DA:70,2 DA:76,1 DA:77,2 @@ -31195,8 +31246,8 @@ LF:27 LH:26 BRDA:53,0,0,120 BRDA:53,0,1,0 -BRDA:55,1,0,108 -BRDA:55,1,1,12 +BRDA:55,1,0,102 +BRDA:55,1,1,18 BRDA:56,2,0,120 BRDA:56,2,1,0 BRDA:56,2,2,120 @@ -31208,9 +31259,9 @@ BRDA:56,4,1,0 BRDA:62,5,0,3 BRDA:62,5,1,3 BRDA:63,6,0,0 -BRDA:63,6,1,108 -BRDA:63,7,0,108 -BRDA:63,7,1,108 +BRDA:63,6,1,102 +BRDA:63,7,0,102 +BRDA:63,7,1,102 BRDA:67,8,0,2 BRDA:67,8,1,0 BRF:20 @@ -31465,34 +31516,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) -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 +FNH:2 +FNDA:10,(anonymous_0) +FNDA:2,(anonymous_1) +DA:1,1 +DA:9,1 +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 @@ -33187,19 +33238,19 @@ FN:144,shouldSetIndentation FN:175,isRangeEmpty FN:188,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:24,1 @@ -33210,20 +33261,20 @@ DA:42,5 DA:47,5 DA:53,5 DA:59,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:81,0 +DA:62,14 +DA:63,14 +DA:64,14 +DA:65,14 +DA:66,2 +DA:68,12 +DA:69,12 +DA:70,12 +DA:71,10 +DA:73,2 +DA:74,2 +DA:75,2 +DA:76,2 +DA:81,14 DA:90,1 DA:93,4 DA:97,3 @@ -33235,45 +33286,45 @@ DA:121,1 DA:124,0 DA:127,0 DA:135,1 -DA:145,1 -DA:147,1 -DA:148,1 -DA:149,1 -DA:150,1 -DA:152,1 +DA:145,13 +DA:147,13 +DA:148,13 +DA:149,13 +DA:150,13 +DA:152,13 DA:153,0 -DA:156,1 -DA:158,1 -DA:161,0 -DA:162,0 -DA:164,0 -DA:165,0 -DA:167,0 -DA:168,0 -DA:171,0 -DA:176,0 -DA:189,0 -DA:190,0 -DA:191,0 +DA:156,13 +DA:158,2 +DA:161,11 +DA:162,11 +DA:164,11 +DA:165,11 +DA:167,11 +DA:168,9 +DA:171,11 +DA:176,21 +DA:189,4 +DA:190,4 +DA:191,4 DA:192,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:198,0 -DA:199,0 -DA:200,0 -DA:202,0 -DA:203,0 -DA:204,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:209,0 -DA:214,0 -DA:215,0 -DA:216,0 +DA:194,4 +DA:195,4 +DA:196,4 +DA:198,4 +DA:199,4 +DA:200,19 +DA:202,4 +DA:203,4 +DA:204,1 +DA:205,1 +DA:206,1 +DA:207,1 +DA:209,4 +DA:214,4 +DA:215,4 +DA:216,1 LF:72 -LH:26 +LH:67 BRDA:37,0,0,5 BRDA:37,0,1,0 BRDA:38,1,0,5 @@ -33282,12 +33333,12 @@ BRDA:54,2,0,5 BRDA:54,2,1,4 BRDA:55,3,0,1 BRDA:55,3,1,3 -BRDA:63,4,0,0 +BRDA:63,4,0,14 BRDA:63,4,1,0 -BRDA:65,5,0,0 -BRDA:65,5,1,0 -BRDA:70,6,0,0 -BRDA:70,6,1,0 +BRDA:65,5,0,2 +BRDA:65,5,1,12 +BRDA:70,6,0,10 +BRDA:70,6,1,2 BRDA:93,7,0,3 BRDA:93,7,1,1 BRDA:94,8,0,4 @@ -33298,28 +33349,28 @@ BRDA:100,9,2,3 BRDA:100,9,3,1 BRDA:100,9,4,1 BRDA:152,10,0,0 -BRDA:152,10,1,1 -BRDA:152,11,0,1 -BRDA:152,11,1,1 -BRDA:156,12,0,1 -BRDA:156,12,1,0 -BRDA:167,13,0,0 -BRDA:167,13,1,0 -BRDA:167,14,0,0 -BRDA:167,14,1,0 -BRDA:167,14,2,0 -BRDA:177,15,0,0 -BRDA:177,15,1,0 +BRDA:152,10,1,13 +BRDA:152,11,0,13 +BRDA:152,11,1,13 +BRDA:156,12,0,2 +BRDA:156,12,1,11 +BRDA:167,13,0,9 +BRDA:167,13,1,2 +BRDA:167,14,0,11 +BRDA:167,14,1,11 +BRDA:167,14,2,10 +BRDA:177,15,0,21 +BRDA:177,15,1,19 BRDA:191,16,0,0 -BRDA:191,16,1,0 -BRDA:203,17,0,0 -BRDA:203,17,1,0 -BRDA:203,18,0,0 -BRDA:203,18,1,0 -BRDA:215,19,0,0 -BRDA:215,19,1,0 +BRDA:191,16,1,4 +BRDA:203,17,0,1 +BRDA:203,17,1,3 +BRDA:203,18,0,4 +BRDA:203,18,1,1 +BRDA:215,19,0,1 +BRDA:215,19,1,3 BRF:44 -BRH:20 +BRH:40 end_of_record TN: SF:packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts @@ -34180,22 +34231,22 @@ FN:773,isASmallImage FN:779,getColorString FN:786,setFlipped FNF:41 -FNH:37 +FNH:35 FNDA:1,(anonymous_0) FNDA:26,ImageEdit -FNDA:21,(anonymous_2) -FNDA:112,(anonymous_3) +FNDA:0,(anonymous_2) +FNDA:82,(anonymous_3) FNDA:32,(anonymous_4) FNDA:0,(anonymous_5) FNDA:26,(anonymous_6) -FNDA:21,(anonymous_7) +FNDA:0,(anonymous_7) FNDA:0,(anonymous_8) FNDA:26,(anonymous_9) -FNDA:209,(anonymous_10) +FNDA:192,(anonymous_10) FNDA:1,(anonymous_11) FNDA:0,(anonymous_12) -FNDA:73,(anonymous_13) -FNDA:23,(anonymous_14) +FNDA:55,(anonymous_13) +FNDA:10,(anonymous_14) FNDA:8,(anonymous_15) FNDA:2,(anonymous_16) FNDA:32,(anonymous_17) @@ -34204,7 +34255,7 @@ FNDA:200,(anonymous_19) FNDA:32,(anonymous_20) FNDA:88,(anonymous_21) FNDA:158,(anonymous_22) -FNDA:53,(anonymous_23) +FNDA:36,(anonymous_23) FNDA:158,(anonymous_24) FNDA:0,setSize FNDA:32,setWrapperSizeDimensions @@ -34262,7 +34313,7 @@ DA:163,0 DA:170,26 DA:171,26 DA:172,26 -DA:173,21 +DA:173,0 DA:175,0 DA:176,0 DA:185,1 @@ -34271,7 +34322,7 @@ DA:187,26 DA:188,26 DA:189,26 DA:196,1 -DA:197,209 +DA:197,192 DA:199,42 DA:205,42 DA:208,42 @@ -34285,8 +34336,8 @@ DA:225,0 DA:227,0 DA:229,1 DA:230,1 -DA:233,59 -DA:234,59 +DA:233,46 +DA:234,46 DA:238,1 DA:239,1 DA:241,1 @@ -34295,25 +34346,25 @@ DA:247,26 DA:248,26 DA:257,1 DA:258,0 -DA:280,73 -DA:285,73 -DA:286,73 -DA:288,73 -DA:297,27 -DA:301,27 +DA:280,55 +DA:285,55 +DA:286,55 +DA:288,55 +DA:297,10 +DA:301,10 DA:302,0 -DA:306,27 -DA:316,27 -DA:318,27 -DA:320,27 +DA:306,10 +DA:316,10 +DA:318,10 +DA:320,10 DA:321,0 -DA:324,27 -DA:325,27 -DA:326,27 -DA:327,27 -DA:328,27 -DA:329,27 -DA:332,73 +DA:324,10 +DA:325,10 +DA:326,10 +DA:327,10 +DA:328,10 +DA:329,10 +DA:332,55 DA:334,22 DA:335,22 DA:338,22 @@ -34349,7 +34400,7 @@ DA:407,2 DA:408,2 DA:409,2 DA:415,26 -DA:416,21 +DA:416,0 DA:421,32 DA:422,32 DA:424,32 @@ -34384,10 +34435,10 @@ DA:481,32 DA:482,32 DA:484,32 DA:492,26 -DA:493,112 +DA:493,82 DA:494,32 -DA:496,112 -DA:497,112 +DA:496,82 +DA:497,82 DA:504,26 DA:505,32 DA:506,32 @@ -34452,7 +34503,7 @@ DA:634,88 DA:637,158 DA:657,1 DA:658,158 -DA:659,53 +DA:659,36 DA:661,1 DA:672,0 DA:673,0 @@ -34502,9 +34553,9 @@ DA:783,0 DA:791,32 DA:792,32 LF:279 -LH:248 +LH:246 BRDA:493,0,0,32 -BRDA:493,0,1,80 +BRDA:493,0,1,50 BRDA:506,1,0,32 BRDA:506,1,1,0 BRDA:507,2,0,32 @@ -34558,7 +34609,7 @@ BRDA:198,23,0,42 BRDA:198,23,1,1 BRDA:198,23,2,0 BRDA:198,23,3,1 -BRDA:198,23,4,59 +BRDA:198,23,4,46 BRDA:198,23,5,1 BRDA:198,23,6,26 BRDA:199,24,0,42 @@ -34588,31 +34639,31 @@ BRDA:238,33,1,1 BRDA:238,34,0,1 BRDA:238,34,1,1 BRDA:285,35,0,45 -BRDA:285,35,1,28 +BRDA:285,35,1,10 BRDA:286,36,0,45 -BRDA:286,36,1,28 -BRDA:288,37,0,27 -BRDA:288,37,1,46 -BRDA:289,38,0,73 -BRDA:289,38,1,28 -BRDA:289,38,2,27 -BRDA:289,38,3,27 -BRDA:289,38,4,27 -BRDA:289,38,5,27 +BRDA:286,36,1,10 +BRDA:288,37,0,10 +BRDA:288,37,1,45 +BRDA:289,38,0,55 +BRDA:289,38,1,10 +BRDA:289,38,2,10 +BRDA:289,38,3,10 +BRDA:289,38,4,10 +BRDA:289,38,5,10 BRDA:301,39,0,0 -BRDA:301,39,1,27 -BRDA:311,40,0,27 -BRDA:311,40,1,11 +BRDA:301,39,1,10 +BRDA:311,40,0,10 +BRDA:311,40,1,10 BRDA:320,41,0,0 -BRDA:320,41,1,27 +BRDA:320,41,1,10 BRDA:332,42,0,22 -BRDA:332,42,1,51 -BRDA:332,43,0,73 -BRDA:332,43,1,50 +BRDA:332,42,1,33 +BRDA:332,43,0,55 +BRDA:332,43,1,32 BRDA:332,43,2,22 -BRDA:332,44,0,28 +BRDA:332,44,0,10 BRDA:332,44,1,22 -BRDA:332,45,0,50 +BRDA:332,45,0,32 BRDA:332,45,1,22 BRDA:347,46,0,22 BRDA:347,46,1,0 @@ -34677,9 +34728,9 @@ BRDA:634,73,1,88 BRDA:648,74,0,158 BRDA:648,74,1,0 BRDA:658,75,0,0 -BRDA:658,75,1,53 -BRDA:658,76,0,53 -BRDA:658,76,1,53 +BRDA:658,75,1,36 +BRDA:658,76,0,36 +BRDA:658,76,1,36 BRDA:672,77,0,0 BRDA:672,77,1,0 BRDA:673,78,0,0 @@ -34935,60 +34986,60 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyCh FN:18,applyChange FNF:1 FNH:1 -FNDA:35,applyChange +FNDA:14,applyChange DA:1,1 DA:2,1 DA:3,1 DA:5,1 DA:18,1 -DA:26,35 -DA:28,35 -DA:29,35 -DA:31,35 -DA:34,15 -DA:35,15 +DA:26,14 +DA:28,14 +DA:29,14 +DA:31,14 +DA:34,4 +DA:35,4 DA:39,0 DA:40,0 -DA:43,20 -DA:44,20 -DA:47,35 -DA:49,35 -DA:52,18 -DA:58,18 -DA:61,35 -DA:64,15 -DA:68,20 -DA:72,35 -DA:73,35 -DA:75,35 -DA:76,34 -DA:77,34 -DA:79,34 -DA:80,34 -DA:81,34 +DA:43,10 +DA:44,10 +DA:47,14 +DA:49,14 +DA:52,14 +DA:58,14 +DA:61,14 +DA:64,4 +DA:68,10 +DA:72,14 +DA:73,14 +DA:75,14 +DA:76,14 +DA:77,14 +DA:79,14 +DA:80,14 +DA:81,14 LF:30 LH:28 -BRDA:28,0,0,27 -BRDA:28,0,1,8 -BRDA:28,1,0,35 -BRDA:28,1,1,35 -BRDA:32,2,0,15 +BRDA:28,0,0,10 +BRDA:28,0,1,4 +BRDA:28,1,0,14 +BRDA:28,1,1,14 +BRDA:32,2,0,4 BRDA:32,2,1,0 -BRDA:32,2,2,20 -BRDA:43,3,0,20 +BRDA:32,2,2,10 +BRDA:43,3,0,10 BRDA:43,3,1,0 -BRDA:43,4,0,20 -BRDA:43,4,1,20 -BRDA:49,5,0,18 -BRDA:49,5,1,17 -BRDA:61,6,0,15 -BRDA:61,6,1,20 -BRDA:75,7,0,34 -BRDA:75,7,1,1 -BRDA:75,8,0,35 -BRDA:75,8,1,11 +BRDA:43,4,0,10 +BRDA:43,4,1,10 +BRDA:49,5,0,14 +BRDA:49,5,1,0 +BRDA:61,6,0,4 +BRDA:61,6,1,10 +BRDA:75,7,0,14 +BRDA:75,7,1,0 +BRDA:75,8,0,14 +BRDA:75,8,1,10 BRF:19 -BRH:17 +BRH:15 end_of_record TN: SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts @@ -35004,14 +35055,14 @@ FN:89,areSameNumber FNF:9 FNH:7 FNDA:1,(anonymous_0) -FNDA:100,checkEditInfoState -FNDA:695,(anonymous_2) -FNDA:219,(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:695,isNumber -FNDA:239,areSameNumber +FNDA:478,isNumber +FNDA:154,areSameNumber DA:3,1 DA:4,1 DA:5,1 @@ -35023,40 +35074,40 @@ DA:30,1 DA:38,1 DA:45,1 DA:58,1 -DA:62,695 +DA:62,478 DA:63,1 -DA:64,99 -DA:65,219 -DA:70,30 -DA:71,69 -DA:73,20 +DA:64,68 +DA:65,144 +DA:70,19 +DA:71,49 +DA:73,10 DA:74,0 DA:75,0 DA:79,0 -DA:81,69 -DA:86,695 -DA:90,239 +DA:81,49 +DA:86,478 +DA:90,154 LF:24 LH:21 BRDA:19,0,0,1 BRDA:19,0,1,1 BRDA:62,1,0,1 -BRDA:62,1,1,99 -BRDA:62,2,0,100 -BRDA:62,2,1,100 -BRDA:62,2,2,100 -BRDA:64,3,0,30 -BRDA:64,3,1,69 -BRDA:65,4,0,99 -BRDA:65,4,1,30 -BRDA:65,4,2,30 -BRDA:65,4,3,30 -BRDA:65,4,4,15 -BRDA:65,4,5,15 +BRDA:62,1,1,68 +BRDA:62,2,0,69 +BRDA:62,2,1,69 +BRDA:62,2,2,69 +BRDA:64,3,0,19 +BRDA:64,3,1,49 +BRDA:65,4,0,68 +BRDA:65,4,1,19 +BRDA:65,4,2,19 +BRDA:65,4,3,19 +BRDA:65,4,4,4 +BRDA:65,4,5,4 BRDA:71,5,0,0 -BRDA:71,5,1,69 -BRDA:72,6,0,69 -BRDA:72,6,1,20 +BRDA:71,5,1,49 +BRDA:72,6,0,49 +BRDA:72,6,1,10 BRDA:72,6,2,0 BRDA:72,6,3,0 BRDA:72,6,4,0 @@ -35072,33 +35123,33 @@ FN:36,getEditInfoFromImage FN:43,getInitialEditInfo FNF:4 FNH:4 -FNDA:29,saveEditInfo -FNDA:17,deleteEditInfo -FNDA:92,getEditInfoFromImage -FNDA:28,getInitialEditInfo +FNDA:19,saveEditInfo +FNDA:6,deleteEditInfo +FNDA:71,getEditInfoFromImage +FNDA:17,getInitialEditInfo DA:1,1 DA:3,1 DA:11,1 -DA:12,29 -DA:13,29 +DA:12,19 +DA:13,19 DA:22,1 -DA:23,17 -DA:24,17 +DA:23,6 +DA:24,6 DA:36,1 -DA:37,92 -DA:38,92 -DA:44,28 +DA:37,71 +DA:38,71 +DA:44,17 LF:12 LH:12 -BRDA:12,0,0,29 +BRDA:12,0,0,19 BRDA:12,0,1,0 -BRDA:23,1,0,17 +BRDA:23,1,0,6 BRDA:23,1,1,0 -BRDA:39,2,0,28 -BRDA:39,2,1,64 -BRDA:38,3,0,92 -BRDA:38,3,1,65 -BRDA:45,4,0,28 +BRDA:39,2,0,17 +BRDA:39,2,1,54 +BRDA:38,3,0,71 +BRDA:38,3,1,55 +BRDA:45,4,0,17 BRDA:45,4,1,1 BRF:10 BRH:8 @@ -35108,35 +35159,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 @@ -35145,22 +35196,22 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGene FN:16,getGeneratedImageSize FNF:1 FNH:1 -FNDA:87,getGeneratedImageSize +FNDA:56,getGeneratedImageSize DA:16,1 -DA:28,609 -DA:31,87 -DA:32,87 -DA:35,87 -DA:36,87 -DA:40,87 -DA:42,87 -DA:44,87 +DA:28,392 +DA:31,56 +DA:32,56 +DA:35,56 +DA:36,56 +DA:40,56 +DA:42,56 +DA:44,56 LF:9 LH:9 BRDA:35,0,0,0 -BRDA:35,0,1,87 +BRDA:35,0,1,56 BRDA:36,1,0,0 -BRDA:36,1,1,87 +BRDA:36,1,1,56 BRF:4 BRH:2 end_of_record @@ -35196,12 +35247,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 @@ -35710,8 +35761,8 @@ FNDA:20,Paste FNDA:1,(anonymous_2) FNDA:18,(anonymous_3) FNDA:10,(anonymous_4) -FNDA:61,(anonymous_5) -FNDA:14,sanitizeBlockStyles +FNDA:57,(anonymous_5) +FNDA:13,sanitizeBlockStyles FNDA:0,(anonymous_7) DA:1,1 DA:2,1 @@ -35735,12 +35786,12 @@ DA:54,18 DA:60,1 DA:61,10 DA:68,1 -DA:69,61 -DA:70,28 -DA:71,14 -DA:73,14 -DA:76,2 -DA:77,2 +DA:69,57 +DA:70,26 +DA:71,13 +DA:73,13 +DA:76,1 +DA:77,1 DA:80,5 DA:85,3 DA:87,5 @@ -35755,12 +35806,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 @@ -35768,11 +35819,11 @@ BRDA:38,0,0,11 BRDA:38,0,1,9 BRDA:39,1,0,20 BRDA:39,1,1,0 -BRDA:69,2,0,14 -BRDA:69,2,1,47 -BRDA:69,3,0,61 -BRDA:69,3,1,61 -BRDA:74,4,0,2 +BRDA:69,2,0,13 +BRDA:69,2,1,44 +BRDA:69,3,0,57 +BRDA:69,3,1,57 +BRDA:74,4,0,1 BRDA:74,4,1,3 BRDA:74,4,2,5 BRDA:74,4,3,1 @@ -36464,14 +36515,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 @@ -36485,13 +36536,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 @@ -36514,9 +36565,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 @@ -36527,10 +36578,10 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConvert FN:45,createWordConverterArguments FNF:1 FNH:1 -FNDA:12,createWordConverterArguments +FNDA:11,createWordConverterArguments DA:1,1 DA:45,1 -DA:48,12 +DA:48,11 LF:3 LH:3 BRF:0 @@ -36544,13 +36595,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 @@ -36599,11 +36650,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 @@ -36617,22 +36668,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 @@ -36662,12 +36713,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:3,1 DA:4,1 @@ -36677,40 +36728,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 @@ -36737,14 +36788,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 @@ -36753,7 +36804,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:5,1 @@ -36764,13 +36815,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 @@ -36795,14 +36846,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 @@ -36872,14 +36923,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 @@ -36938,7 +36989,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 @@ -36956,9 +37007,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 @@ -36984,8 +37035,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 @@ -37074,11 +37125,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 @@ -37167,8 +37218,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 @@ -37201,10 +37252,10 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConvert FN:29,createWordConverter FNF:1 FNH:1 -FNDA:20,createWordConverter +FNDA:19,createWordConverter DA:2,1 DA:29,1 -DA:30,20 +DA:30,19 LF:3 LH:3 BRF:0 diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html index c00a0bd5aab..125cb8ac6ff 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html @@ -143,7 +143,7 @@

All files / pac       -613x +601x       @@ -185,15 +185,15 @@

All files / pac       -613x +601x       -613x -27x +601x +22x     -613x +601x    
import { defaultFormatParsers, getFormatParsers } from '../../formatHandlers/defaultFormatHandlers';
 import { defaultProcessorMap } from './defaultProcessors';
@@ -271,7 +271,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html index 2094f4fa08f..2fb831e1d0c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html @@ -256,7 +256,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/index.html index 4291775a529..42cef39ac9a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/index.html @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html index f84c1c38d3c..743f0f2ac92 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html @@ -114,14 +114,14 @@

All files / packag       -147x -147x +136x +136x   -147x +136x   -147x +136x   -147x +136x    
import { createContentModelDocument } from '../modelApi/creators/createContentModelDocument';
 import { createDomToModelContext } from './context/createDomToModelContext';
@@ -163,7 +163,7 @@ 

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/index.html index 7ba92bbff41..26a71472ca3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/index.html @@ -95,7 +95,7 @@

All files packages-content-model/rooste diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html index 6a21bc55ad3..dd76bf14fa2 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html @@ -127,33 +127,33 @@

All files / pac       -207x -207x +171x +171x   -207x +171x   -207x +171x   -207x +171x   -207x -828x -151x +171x +684x +51x       -207x -203x +171x +167x             -203x +167x     -207x +171x    
import { addBlock } from '../../modelApi/common/addBlock';
 import { ContextStyles } from './formatContainerProcessor';
@@ -211,7 +211,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html index ada4f5b5f40..ab29aa66bab 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html @@ -81,13 +81,13 @@

All files / pac     1x -31x +23x   -31x +23x       -31x +23x    
import { addSegment } from '../../modelApi/common/addSegment';
 import { createBr } from '../../modelApi/creators/createBr';
@@ -112,7 +112,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html index 19622a5d1fd..e7d25c70219 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html @@ -160,18 +160,18 @@

All files / pac       -940x -940x +817x +817x   -940x -1195x +817x +1003x   -1195x +1003x   -1195x +1003x     -940x +817x       @@ -186,10 +186,10 @@

All files / pac       -1205x -791x -414x -386x +1013x +652x +361x +333x       @@ -208,17 +208,17 @@

All files / pac       -2138x -29x +1823x +24x   -29x +24x     -2138x -27x +1823x +22x 2x   -27x +22x      
import { addSelectionMarker } from '../utils/addSelectionMarker';
@@ -310,7 +310,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html index 9e5bfc42cb0..0c77a71a701 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html index 892b15d480b..ad6949643c5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html index ee04da6d1dd..3d82ddfda04 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html @@ -104,24 +104,24 @@

All files / pac     1x -659x -659x +541x +541x         -659x +541x       -659x +541x             -657x +539x    
import { getDelimiterFromElement, getEntityFromElement } from 'roosterjs-editor-dom';
 import {
@@ -163,7 +163,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html index 888adf8901e..697d2a0956a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html @@ -184,7 +184,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html index cb2590c413a..37dcade0cbf 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html @@ -226,7 +226,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html index f6a0a931ee9..544b5f70710 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html @@ -186,36 +186,36 @@

All files / pac       -45x -45x -45x +39x +39x +39x   -45x +39x       -45x +39x     -45x +39x     -45x +39x         -45x -180x +39x +156x     -45x +39x   -45x +39x 2x     -45x +39x     6x @@ -230,17 +230,17 @@

All files / pac 6x 6x   -39x +33x       -45x +39x       -45x +39x   -45x +39x       @@ -349,7 +349,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html index b13d155bea9..d62409ee584 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html @@ -259,7 +259,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html index 04d0fa275cc..0e9f16fbbd0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html @@ -172,7 +172,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html index 1fdacffadbb..69c058cd80b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html @@ -160,7 +160,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html index 9a0d0b2ab07..5afb54fe33f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html @@ -115,30 +115,30 @@

All files / pac     1x -16x -16x +13x +13x   -16x -16x -16x +13x +13x +13x   -16x -16x -16x +13x +13x +13x   -16x -16x +13x +13x   -16x -2x +13x +1x   -16x +13x     -16x +13x 1x   -16x +13x       @@ -146,7 +146,7 @@

All files / pac 2x     -16x +13x      
import { addDecorators } from '../../modelApi/common/addDecorators';
@@ -202,7 +202,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/index.html index 68bd258d909..c0d988f1bc0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/index.html @@ -380,7 +380,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html index a0f02ae802b..a58bdfe049c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html @@ -230,28 +230,28 @@

All files / pac     1x -329x +250x   -329x +250x       -30x -299x -124x -124x +24x +226x +107x +107x   -124x -124x +107x +107x   -124x -124x +107x +107x   -124x +107x     -124x -121x +107x +104x       @@ -262,7 +262,7 @@

All files / pac       -175x +119x       @@ -270,9 +270,9 @@

All files / pac       -175x +119x   -175x +119x 1x     @@ -281,7 +281,7 @@

All files / pac       -175x +119x       @@ -289,41 +289,41 @@

All files / pac       -156x +133x 4x     -152x -152x +129x +129x   -152x +129x     -152x -7x +129x +6x         -145x +123x   -2108x +1815x     -18x +13x       -127x +110x         -127x +110x 5x     -122x +105x    
import { addBlock } from '../../modelApi/common/addBlock';
 import { blockProcessor } from './blockProcessor';
@@ -466,7 +466,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html index 1123be8032c..eb0ce202f53 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html @@ -127,7 +127,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html index f0c5e67a853..21510fb5a99 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html @@ -265,7 +265,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html index 82c01ee0876..772c906d135 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html @@ -250,7 +250,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html index 2111a072c6c..f123610c844 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html @@ -98,22 +98,22 @@

All files / pac     1x -69x +50x       -69x +50x   -69x +50x   -69x -69x +50x +50x   -69x +50x       -69x +50x    
import { addBlock } from '../../modelApi/common/addBlock';
 import { blockProcessor } from './blockProcessor';
@@ -151,7 +151,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html index 54e45d24bd1..dba132655a0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html @@ -376,73 +376,73 @@

All files / pac       -44x +41x       -44x +41x   -44x +41x   -44x +41x     -44x -44x +41x +41x   -44x +41x       -44x +41x       -44x -44x -44x +41x +41x +41x           -44x -44x +41x +41x   -44x -44x -44x +41x +41x +41x   -50x -50x -50x +45x +45x +45x   -50x +45x   -50x -36x +45x +31x 14x       -50x +45x   -50x -50x -50x +45x +45x +45x   -50x +45x         -36x +31x           -36x +31x       @@ -450,32 +450,32 @@

All files / pac       -50x -50x +45x +45x             -50x -136x +45x +120x       -68x +60x   -68x -68x -68x -68x -68x -68x +60x +60x +60x +60x +60x +60x   -68x -66x +60x +58x   -66x +58x 31x 28x   @@ -488,85 +488,85 @@

All files / pac       -68x +60x       -68x +60x           -68x +60x             -68x +60x     -68x +60x   -68x +60x           -68x +60x           -68x +60x   -68x -68x +60x +60x       -73x -75x -75x +63x +65x +65x             -75x +65x   -75x +65x   -75x -75x +65x +65x     -75x -68x +65x +60x       -68x +60x   -68x -68x +60x +60x   -68x -68x +60x +60x   -68x -68x +60x +60x       -75x +65x   -75x +65x       @@ -583,8 +583,8 @@

All files / pac       -50x -75x +45x +65x       @@ -595,12 +595,12 @@

All files / pac       -44x +41x   -44x +41x   -44x -50x +41x +45x 27x     @@ -609,10 +609,10 @@

All files / pac       -88x -88x +82x +82x   -88x +82x 58x 3x   @@ -621,7 +621,7 @@

All files / pac       -88x +82x    
import { addBlock } from '../../modelApi/common/addBlock';
 import { createTable } from '../../modelApi/creators/createTable';
@@ -913,7 +913,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html index a79c803815b..fee51b3c892 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html @@ -160,10 +160,10 @@

All files / pac       -401x -401x +348x +348x   -401x +348x 5x 5x   @@ -173,7 +173,7 @@

All files / pac 5x     -401x +348x 6x   6x @@ -184,40 +184,40 @@

All files / pac 6x     -401x +348x       1x     -412x -409x -409x -409x +359x +356x +356x +356x   -409x +356x             -26x -383x +14x +342x         -366x +334x   -366x +334x 9x     -366x +334x   -366x +334x       @@ -310,7 +310,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html index 86199b9edde..9f2c733c08c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html @@ -81,11 +81,11 @@

All files / pac     1x -44x +39x   -44x +39x   -44x +39x    
import { addDecorators } from '../../modelApi/common/addDecorators';
 import { addSegment } from '../../modelApi/common/addSegment';
@@ -109,7 +109,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html index 19f24da70c2..8370773cfcd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html @@ -84,13 +84,13 @@

All files / pac     1x -118x +75x 1x   -117x -117x +74x +74x   -117x +74x      
import { ContentModelFormatBase } from 'roosterjs-content-model-types';
@@ -118,7 +118,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html index dce37bafc69..34cec4bf899 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html @@ -67,7 +67,7 @@

All files / pac     1x -35x +27x    
/**
  * @internal
@@ -82,7 +82,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html index acb76b6b8c5..5e9731665a2 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html @@ -87,9 +87,9 @@

All files / pac       -3272x +2886x   -3272x +2886x    
import { DefaultStyleMap, DomToModelContext } from 'roosterjs-content-model-types';
  
@@ -115,7 +115,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html index 20936c4bb98..f3dbf789f4e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html @@ -94,12 +94,12 @@

All files / pac       -1355x +1179x   -1355x -1355x +1179x +1179x   -1355x +1179x    
import { DomToModelContext } from 'roosterjs-content-model-types';
 import { SelectionRangeTypes } from 'roosterjs-editor-types';
@@ -130,7 +130,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/index.html index 062c6215682..0919571f369 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/index.html @@ -200,7 +200,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html index 25ceeef7a65..8b39df0e62f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html @@ -85,9 +85,9 @@

All files / pac     1x -375x +296x   -375x +296x    
import { DomToModelContext } from 'roosterjs-content-model-types';
 import { getDefaultStyle } from './getDefaultStyle';
@@ -112,7 +112,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html index 80bde5dd26d..2c97e5e64a6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html @@ -103,10 +103,10 @@

All files / pac       -2713x +2434x   -2713x -16840x +2434x +14795x      
import { getDefaultStyle } from './getDefaultStyle';
@@ -142,7 +142,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html index 197dadebe41..a85660f18ec 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html @@ -268,23 +268,23 @@

All files / pac       -4400x -4400x +3815x +3815x   -880x -880x -880x -880x -880x -880x +763x +763x +763x +763x +763x +763x   -880x +763x   -880x -880x -880x -880x -880x +763x +763x +763x +763x +763x       @@ -292,7 +292,7 @@

All files / pac       -880x +763x   18x   @@ -309,7 +309,7 @@

All files / pac       -849x +732x       @@ -317,7 +317,7 @@

All files / pac       -880x +763x   5x   @@ -329,7 +329,7 @@

All files / pac       -875x +758x       @@ -337,14 +337,14 @@

All files / pac       -880x +763x   -76x +57x         -804x +706x       @@ -352,18 +352,18 @@

All files / pac       -1760x +1526x   44x     -193x +190x     -1523x +1292x   -1523x -1494x +1292x +374x       @@ -374,7 +374,7 @@

All files / pac       -1523x +1292x      
import { getObjectKeys } from 'roosterjs-editor-dom';
@@ -544,7 +544,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/index.html index 296b238f333..465284e1697 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/index.html @@ -95,7 +95,7 @@

All files packages-content-model/rooste diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html index 3a37a31d63d..e631bab85ca 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html @@ -169,7 +169,7 @@

All files / packag       -3162x +2691x    
import { NodeType } from 'roosterjs-editor-types';
  
@@ -235,7 +235,7 @@ 

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/index.html index b3da1d94aea..6c0b12bb95f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/index.html @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts.html index 0a4c0570641..7e39a775f52 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts.html @@ -125,7 +125,7 @@

All files / pac       -366x +362x    
import { BulletListType, NumberingListType } from 'roosterjs-editor-types';
 import { ContentModelWithDataset, ListMetadataFormat } from 'roosterjs-content-model-types';
@@ -169,7 +169,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts.html index 653653996b6..5924fbb77b5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts.html @@ -124,28 +124,28 @@

All files / pac       -542x -542x +538x +538x   -542x -542x +538x +538x     -542x +538x 9x     -542x -534x +538x +530x   -534x -453x -81x -76x +530x +452x +78x +73x       -542x +538x       @@ -211,7 +211,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html index 022f50c6ac4..4f4021903dc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html @@ -85,15 +85,15 @@

All files / pac   1x   -2141x +1956x   -2141x -75x +1956x +36x       -629x -30x +591x +13x       @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html index e3ec1bd6fb4..72684fe03d6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html @@ -85,15 +85,15 @@

All files / pac   1x   -338x +290x   -338x -15x +290x +14x       -314x -13x +272x +11x       @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html index 821a051dd24..60c91b33145 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html @@ -99,20 +99,20 @@

All files / pac       -378x +325x   -378x +325x   -378x +325x 21x 21x 21x       -325x +279x   -325x +279x 8x     @@ -154,7 +154,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/index.html index 988e8021329..80f3064bbcd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/index.html @@ -200,7 +200,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html index 520d5cde9c4..8ed66be8473 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html @@ -85,15 +85,15 @@

All files / pac   1x   -1045x +920x   -1045x -59x +920x +23x       -993x -41x +918x +12x       @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html index 93cf3d37e7c..2051c0d676f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html @@ -121,34 +121,34 @@

All files / pac   1x   -602x -2408x +554x +2216x   -2408x -539x +2216x +393x     -338x -338x +260x +260x       -201x +133x         -201x +133x           -545x -2180x +499x +1996x   -2180x -364x +1996x +254x       @@ -208,7 +208,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html index d995bdf4fb5..f50cad836dc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html @@ -104,19 +104,19 @@

All files / pac   1x   -491x -1964x +438x +1752x   -1964x -186x +1752x +32x         -445x -1780x -1780x -159x +394x +1576x +1576x +29x       @@ -160,7 +160,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html index 1ced20d74e8..3e46a2d64da 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html @@ -112,11 +112,11 @@

All files / pac   1x   -896x +830x   -896x +830x   -896x +830x       @@ -126,23 +126,23 @@

All files / pac       -896x -37x +830x +24x       -672x +633x   -672x -44x -44x +633x +27x +27x   -44x +27x 5x 5x 5x   -39x +22x       @@ -199,7 +199,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html index b9192fc275b..f8d140b449d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html @@ -86,16 +86,16 @@

All files / pac   1x   -600x +534x   -600x -39x +534x +23x       -395x -395x -41x +361x +361x +20x       @@ -127,7 +127,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html index 01b091756b1..bcb316e91f7 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html @@ -100,20 +100,20 @@

All files / pac 1x     -948x +826x             -948x -38x +826x +19x       -1003x -39x +906x +19x       @@ -163,7 +163,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html index fc3923b0fe3..b89f1f9cc18 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html @@ -83,12 +83,12 @@

All files / pac   1x   -127x +113x 3x       -122x +108x 3x     @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html index 75611b10f44..0516dc638e7 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html @@ -30,9 +30,9 @@

All files / pac
- 100% + 83.33% Branches - 6/6 + 5/6
@@ -113,20 +113,20 @@

All files / pac   1x   -404x -2020x +347x +1735x   -2020x -80x +1735x +36x         -372x -1860x +321x +1605x   -1860x -60x +1605x +28x       @@ -154,7 +154,7 @@

All files / pac const value = element.style[key];   if (value) { - format[key] = value == 'none' ? '' : value; + format[key] = value == 'none' ? '' : value; } }); }, @@ -175,7 +175,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html index 399b5353783..e2fcea52aaa 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html @@ -83,12 +83,12 @@

All files / pac   1x   -18x +15x 1x       -18x +15x 1x     @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html index be4d85c517c..7cf46da22e2 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html @@ -88,16 +88,16 @@

All files / pac   1x   -255x +241x   -255x -23x +241x +17x         -259x -28x +240x +19x       @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html index 83a1d4a59d8..f800d96fd4b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html @@ -85,14 +85,14 @@

All files / pac   1x   -19x +16x   -19x +16x 2x       -18x +15x 1x     @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html index 12721446d81..45b377b480e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html @@ -83,12 +83,12 @@

All files / pac   1x   -61x +55x 4x       -57x +51x 3x     @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/index.html index f1f5642d278..d5f5f439271 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/index.html @@ -30,9 +30,9 @@

All files packages-content-model/roo
- 96.84% + 95.79% Branches - 92/95 + 91/95
@@ -109,8 +109,8 @@

All files packages-content-model/roo 100% 10/10 - 100% - 6/6 + 83.33% + 5/6 100% 4/4 100% @@ -230,7 +230,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html index 4c2544ad9f8..ed53d797468 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html @@ -135,59 +135,59 @@

All files / pac   1x   -405x -405x -405x -405x -405x -405x +349x +349x +349x +349x +349x +349x   -405x -23x +349x +12x   -405x -7x -  -405x +349x 5x   -405x +349x +3x +  +349x 1x   -405x +349x 1x   -405x +349x 1x       -374x -21x +324x +9x   -374x -6x +324x +3x   -374x -2x +324x +1x   -374x +324x 1x   -374x +324x 1x   -374x +324x 1x           -784x -784x +685x +685x   -784x +685x       @@ -268,7 +268,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html index 622f6833a24..323b5822ae5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html @@ -101,9 +101,9 @@

All files / pac   1x   -95x +84x   -95x +84x       @@ -111,21 +111,21 @@

All files / pac       -15x -15x +11x +11x     -5x -5x +3x +3x     -4x -4x +1x +1x       -86x -16x +75x +7x       @@ -172,7 +172,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html index 9e3f82c48b2..3a9457a083d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html @@ -85,14 +85,14 @@

All files / pac   1x   -69x +61x   -69x +61x 1x       -68x +60x 2x     @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html index 0a5f05d6ab9..cf2c1b33174 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html @@ -548,22 +548,22 @@

All files / packag     1x -1219x -1146x +1195x +1128x   -615x -12915x +603x +12663x     -75030x +73566x           -12915x +12663x   -12915x +12663x       @@ -571,22 +571,22 @@

All files / packag     1x -848x -863x +826x +841x   -432x -9072x +421x +8841x     -52704x +51362x           -9072x +8841x   -9072x +8841x      
import { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';
@@ -862,7 +862,7 @@ 

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/index.html index 92d6767d840..1c2538310be 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/index.html @@ -95,7 +95,7 @@

All files packages-content-model/rooste diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/index.html index ba7a4b34971..b8b92f2027e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/index.html @@ -155,7 +155,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts.html index 4688496bd18..c4826446169 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts.html @@ -376,7 +376,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html index 9e8f24f38a1..38222637033 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html @@ -205,7 +205,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts.html index e3c55d0b402..165c6d5a919 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts.html @@ -233,13 +233,13 @@

All files / pac       -118x +114x   -118x +114x       -118x +114x 5x     @@ -361,7 +361,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html index 3e1e4b5a094..2e453d17f17 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html @@ -127,21 +127,21 @@

All files / pac       -114x -114x -114x +110x +110x +110x   -114x -39x +110x +35x   -39x -4x 35x +4x 31x +29x     -39x -39x +35x +35x       @@ -196,7 +196,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts.html index 2301b9a1a77..3582810e87e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts.html @@ -92,7 +92,7 @@

All files / pac       -117x +113x 1x     @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html index 27fc45e622c..eea7cfce060 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html @@ -102,29 +102,29 @@

All files / pac   1x   -935x +813x   -935x -99x +813x +79x       -669x -573x +599x +545x     -96x +54x   -96x +54x       -33x -25x -25x -25x +26x +21x +21x +21x   -8x +5x       @@ -172,7 +172,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html index 34f304ee86a..c56ecf4e449 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html @@ -85,15 +85,15 @@

All files / pac   1x   -894x +772x   -894x -98x +772x +60x       -674x -56x +604x +24x       @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html index 145887867fe..9ffba9c6382 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html @@ -142,22 +142,22 @@

All files / pac   1x   -907x -907x +785x +785x       -907x -102x -92x +785x +64x +54x 10x 10x         -667x -63x +597x +31x       @@ -175,11 +175,11 @@

All files / pac       -92x +54x   -92x +54x 8x -84x +46x       @@ -201,10 +201,10 @@

All files / pac       -76x +38x     -76x +38x      
import { FontSizeFormat } from 'roosterjs-content-model-types';
@@ -289,7 +289,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html index 8c385c97a9a..d36020646b5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html @@ -230,7 +230,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html index afe8a4b2cf9..5cef9ff9ad9 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html @@ -101,22 +101,22 @@

All files / pac   1x   -902x +780x   -902x +780x 10x -892x -29x +770x +13x       -666x -612x +596x +584x     -54x +12x   -54x +12x 4x 4x 4x @@ -169,7 +169,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html index 526868b85cb..e64b0ce8fdd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html @@ -85,15 +85,15 @@

All files / pac   1x   -887x +765x   -887x -6x +765x +4x       -664x -33x +594x +5x       @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html index b5eaff21e3b..00fa3f6c983 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html @@ -182,30 +182,30 @@

All files / pac       -34x 33x +32x   -33x +32x 1x     -33x +32x 1x     -33x +32x 1x     -33x +32x 1x     -33x +32x 2x     -33x +32x 1x     @@ -295,7 +295,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html index e4f5fdf5a9f..14ec7b88d82 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html @@ -89,14 +89,14 @@

All files / pac   1x   -896x +774x   -896x +774x 8x       -666x +596x 5x 5x 5x @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html index 1151873f55e..522a12f4877 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html @@ -113,10 +113,10 @@

All files / pac   1x   -894x -894x +772x +772x   -894x +772x 10x     @@ -125,7 +125,7 @@

All files / pac       -666x +596x 5x     @@ -149,7 +149,7 @@

All files / pac       -1000x +840x    
import { FormatHandler } from '../FormatHandler';
 import { moveChildNodes } from 'roosterjs-editor-dom';
@@ -205,7 +205,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html index 1d0e7978d43..1c2942863ca 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html @@ -102,22 +102,22 @@

All files / pac 1x     -937x +815x             -937x -66x +815x +30x       -765x +686x   -765x -59x +686x +29x       @@ -169,7 +169,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html index 92ae3ea6896..539a0692617 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html @@ -101,22 +101,22 @@

All files / pac   1x   -916x +794x   -916x +794x 9x -907x +785x         -700x -663x +629x +593x     -37x +36x   -37x +36x 7x 6x 6x @@ -169,7 +169,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/index.html index 56f46486310..cf87c8b3080 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/index.html @@ -125,7 +125,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html index 7d4fad02769..50f75365684 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html @@ -84,14 +84,14 @@

All files / pac   1x   -47x -47x -4x +44x +44x +3x       -41x -3x +38x +2x       @@ -121,7 +121,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html index 9d3a0307a91..acfce093570 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html @@ -89,15 +89,15 @@

All files / pac   1x   -113x -7x +102x +4x       -41x -7x -7x -7x +38x +4x +4x +4x       @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html index e7b9eeae6d4..ff2cee96d02 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html @@ -82,11 +82,11 @@

All files / pac   1x   -70x +62x       -7x +5x       @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html index 6a968b619e1..23af775b5a3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html @@ -206,8 +206,8 @@

All files / pac       -1892x -1892x +1648x +1648x       @@ -215,15 +215,15 @@

All files / pac       -1892x -42x +1648x +28x     -1892x -273x +1648x +261x     -1892x +1648x       @@ -236,14 +236,14 @@

All files / pac       -102x +51x       -102x -39x +51x +19x   -63x +32x       @@ -262,7 +262,7 @@

All files / pac       -273x +261x       @@ -382,7 +382,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts.html index a99cfa7de95..9f5ea42dbc0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts.html @@ -637,7 +637,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html index c944fcfeb67..83ad750493e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html @@ -139,19 +139,19 @@

All files / pac     1x -58x +45x   12x     -25x +13x     7x       -12x +11x       @@ -220,7 +220,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html index 05e11c93cb8..ad5ffeb126d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html @@ -140,7 +140,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html index 6cd42a3d651..2dc6ed3b3ba 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html @@ -140,21 +140,21 @@

All files / pac     1x -201x +149x   -353x +249x   -192x -192x +140x +140x   -192x -171x -171x +140x +119x +119x   -171x +119x   -97x -97x +45x +45x   40x 40x @@ -173,11 +173,11 @@

All files / pac       -192x +140x 25x     -192x +140x       @@ -280,7 +280,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.html index b94533c7a03..8bfe400bd65 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roosterjs diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.ts.html index 404c1b96369..55893455b27 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/index.ts.html @@ -110,8 +110,8 @@

All files / packages- 51 52 53 -54126x -103x +54115x +98x   1x 1x @@ -119,7 +119,7 @@

All files / packages- 11x   2x -17x +14x 11x 64x 10x @@ -128,38 +128,38 @@

All files / packages- 6x 2x   -84x +85x 147x 73x -975x -261x +968x +262x 191x 724x -577x +578x 44x -613x +615x 4x 20x 9x -24x +30x 42x 141x   40x 8x 27x -95x +96x 120x 4x 118x -70x +71x 23x   -133x +135x   53x -448x -56x +442x +41x 5x   19x @@ -223,7 +223,7 @@

All files / packages- diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/index.html index ad1c7bcc09d..ca5bcdc36f8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html index 8cf8484b901..1acfc78b54f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html @@ -75,7 +75,7 @@

All files / pac     1x -152x +154x 46x     @@ -97,7 +97,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html index fd01ebfe092..53eefc4968a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html @@ -75,7 +75,7 @@

All files / pac     1x -922x +831x    
import type { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';
  
@@ -94,7 +94,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html index 3b3f47866b3..7f5c06ed73f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html @@ -107,7 +107,7 @@

All files / pac     1x -461x +421x 53x     @@ -121,7 +121,7 @@

All files / pac     1x -441x +401x 13x     @@ -132,8 +132,8 @@

All files / pac     1x -432x -432x +392x +392x    
import {
     ContentModelCode,
@@ -181,7 +181,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html index 11536fa0136..3b91a74a519 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html @@ -121,28 +121,28 @@

All files / pac       -587x +539x     -587x -264x +539x +220x   -323x -323x +319x +319x     -587x +539x   -587x -77x -70x +539x +72x +65x     -510x +467x 5x     -510x +467x      
import { addBlock } from './addBlock';
@@ -196,7 +196,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html index 8f77f84de7c..69ad299a1a8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html @@ -79,7 +79,7 @@

All files / pac     1x -807x +749x    
// A regex to match text that only has space and CR
 // We use real space char " " (\u0020) here but not "\s" since "\s" will also match " " (\u00A0) which is something we need to keep
@@ -100,7 +100,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/index.html index a97345e2143..5d28db445ed 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/index.html @@ -30,9 +30,9 @@

All files packages-content-model/roo
- 94.78% + 95.52% Branches - 127/134 + 128/134
@@ -214,8 +214,8 @@

All files packages-content-model/roo 100% 47/47 - 91.89% - 34/37 + 94.59% + 35/37 100% 9/9 100% @@ -245,7 +245,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html index 29aef5e5d62..6ed4b8b82cf 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html @@ -167,15 +167,15 @@

All files / pac     1x -1109x +1000x   -859x +764x     -78x +70x     -169x +163x     2x @@ -189,10 +189,10 @@

All files / pac     1x -207x +195x     -61x +49x     134x @@ -211,15 +211,15 @@

All files / pac     1x -632x +573x   -443x +403x     -19x +15x     -170x +155x       @@ -364,7 +364,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts.html index 25a21ec04f1..0aaca4114e6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts.html @@ -106,7 +106,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts.html index 1d1da23ab62..54337165d1e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts.html @@ -83,7 +83,7 @@

All files / pac     1x -780x +686x       @@ -112,7 +112,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html index 6c23fb0c4a8..e4e9bb547df 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html @@ -118,34 +118,34 @@

All files / pac     1x -509x -907x +475x +801x   -907x +801x   -169x +163x 2x 2x   -167x +161x   -169x +163x   -704x -704x +609x +609x   -31x -44x -91x -91x +26x +37x +77x +77x       -31x +26x     -907x -275x +801x +218x       @@ -202,7 +202,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html index 044582375dc..228b460c621 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html @@ -116,41 +116,41 @@

All files / pac     1x -704x +609x   -704x -253x -253x +609x +221x +221x   -253x +221x       9x -244x -118x +212x +104x       -47x +40x       -14x +12x         -704x -673x +609x +590x     -704x +609x       -704x -626x +609x +567x 6x     @@ -211,7 +211,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html index 82b6ed07226..61be5ed6c91 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html @@ -30,9 +30,9 @@

All files / pac
- 91.89% + 94.59% Branches - 34/37 + 35/37
@@ -229,14 +229,14 @@

All files / pac     1x -673x +590x   -673x -579x +590x +547x     -673x -673x +590x +590x       @@ -275,7 +275,7 @@

All files / pac       -758x +670x       @@ -288,14 +288,14 @@

All files / pac     1x -609x +577x   -55x -55x +50x +50x     -55x -55x +50x +50x       @@ -303,20 +303,20 @@

All files / pac       -21x -21x -21x +19x +19x +19x     -424x -424x -424x +407x +407x +407x   -424x -424x +407x +407x   -424x -417x +407x +400x   37x   @@ -324,7 +324,7 @@

All files / pac       -417x +400x   44x   @@ -333,9 +333,9 @@

All files / pac       -424x +407x   -424x +407x       @@ -343,13 +343,13 @@

All files / pac       -728x +640x     -397x -51x +380x +52x   -51x +52x       @@ -364,7 +364,7 @@

All files / pac       -728x +640x   30x   @@ -453,7 +453,7 @@

All files / pac resetNormalizeSegmentContext(context); break;   - case 'Entity': + case 'Entity': case 'General': case 'Image': // Here "inline segment" means a segment showing some content inline such as text, image, or other inline HTML elements @@ -532,7 +532,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html index d535d40ec8b..694848c9741 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html @@ -124,7 +124,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html index c0913ddf0f9..6bd538162e1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html @@ -76,7 +76,7 @@

All files / pac     1x -135x +128x       @@ -100,7 +100,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html index df2d4be381c..8e7b87217bc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html @@ -86,16 +86,16 @@

All files / pac 1x     -978x +969x         -978x -57x +969x +52x     -978x +969x    
import { ContentModelDocument, ContentModelSegmentFormat } from 'roosterjs-content-model-types';
  
@@ -124,7 +124,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html index 725a2d2be99..0730e346e29 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html index fa9ac039a85..bfc9444d866 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html @@ -101,7 +101,7 @@

All files / pac       -32x +38x       @@ -145,7 +145,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html index 50fb371e3e1..66fedfb1907 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html @@ -93,7 +93,7 @@

All files / pac       -128x +122x       @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html index e6e9cd2bab0..f1fdac1fb98 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html index fd831d9084b..742de49e6d1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html index 98fc5999560..27f2401e47c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html @@ -80,7 +80,7 @@

All files / pac     1x -63x +60x       @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html index 36b44dbda3c..23dc89c3aa2 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html @@ -102,12 +102,12 @@

All files / pac       -298x +295x         -364x +359x       @@ -148,7 +148,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html index 88a1d4291c4..67807d51d31 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html @@ -97,7 +97,7 @@

All files / pac       -661x +651x       @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html index 9a83beb9e3f..81ccc4895d7 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html @@ -120,28 +120,28 @@

All files / pac       -1799x +1710x           -1799x -93x +1710x +75x     -1799x -804x +1710x +755x     -1799x -80x +1710x +61x           -1799x +1710x    
import type {
     ContentModelBlockFormat,
@@ -193,7 +193,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html index 8a92534e6ec..75902f2956f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html @@ -90,7 +90,7 @@

All files / pac       -80x +61x       @@ -121,7 +121,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html index 8cb892f1824..3b9df24637b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html @@ -87,7 +87,7 @@

All files / pac 1x     -622x +615x       @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html index 75dbcc595c5..54b8040c2d1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html @@ -99,17 +99,17 @@

All files / pac     1x -249x +246x   -249x -381x +246x +376x             -249x +246x       @@ -154,7 +154,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html index 3cddb6ad9d0..957179ec4f4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html @@ -102,10 +102,10 @@

All files / pac       -872x +862x   -872x -872x +862x +862x       @@ -151,7 +151,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html index 5bab68654bc..c23043f50b6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html @@ -79,7 +79,7 @@

All files / pac     1x -1002x +971x       @@ -106,7 +106,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/index.html index 1774a4363cf..47e018c06f4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/index.html @@ -320,7 +320,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html index e57296db7cd..80df7169ef4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html @@ -23,16 +23,16 @@

All files / packag
- 86.21% + 82.76% Statements - 25/29 + 24/29
- 69.05% + 66.67% Branches - 29/42 + 28/42
@@ -44,9 +44,9 @@

All files / packag
- 85.71% + 82.14% Lines - 24/28 + 23/28
@@ -212,46 +212,46 @@

All files / packag       -119x +113x   -119x +113x   -119x +113x   -119x +113x   -119x +113x         -119x +113x     -357x +339x         -119x +113x             -119x +113x       -22x +18x   -22x +18x         -97x +95x       @@ -263,20 +263,20 @@

All files / packag       -97x +95x             -44x -44x +36x +36x   -44x -42x +36x +36x   -2x +        @@ -285,11 +285,11 @@

All files / packag       -44x +36x       -44x +36x    
import { createModelToDomContext } from './context/createModelToDomContext';
 import { createRange, Position, toArray } from 'roosterjs-editor-dom';
@@ -390,10 +390,10 @@ 

All files / packag Eif (pos.block) { Iif (!pos.segment) { result = new Position(pos.block, 0); - } else if (isNodeOfType(pos.segment, NodeType.Text)) { + } else Eif (isNodeOfType(pos.segment, NodeType.Text)) { result = new Position(pos.segment, pos.segment.nodeValue?.length || 0); } else { - result = new Position( + result = new Position( pos.segment.parentNode!, toArray(pos.segment.parentNode!.childNodes as NodeListOf<Node>).indexOf( pos.segment! @@ -415,7 +415,7 @@

All files / packag

diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html index bf508e10592..355569e5859 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html @@ -125,9 +125,9 @@

All files / pac       -430x +419x   -430x +419x       @@ -217,7 +217,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html index 6628d14adaf..387f62c5b52 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html @@ -175,7 +175,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/index.html index 1ae4ab32188..9e6506f12d4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/index.html @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html index cfecaecd877..7d0b67f7133 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html @@ -124,15 +124,15 @@

All files / pac       -474x +441x   -474x +441x   -17x -17x +14x +14x   -292x -292x +268x +268x   3x 3x @@ -140,24 +140,24 @@

All files / pac 2x 2x   -160x +154x   15x 15x     -28x -28x +22x +22x     117x 117x     -160x +154x     -474x +441x    
import {
     ContentModelBlock,
@@ -217,7 +217,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html index e2ba32dda66..bc1872d737f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html @@ -119,36 +119,36 @@

All files / pac       -358x -358x -358x +338x +338x +338x   -358x -358x +338x +338x         -460x +427x         -379x +346x     -460x +427x       -358x -24x +338x +20x   -24x -24x +20x +20x     -358x +338x      
import {
@@ -205,7 +205,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html index 5d50343d4a2..4aa4e59be3b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html @@ -96,12 +96,12 @@

All files / pac       -19x -19x -19x -19x +14x +14x +14x +14x   -19x +14x    
import { handleSegmentCommon } from '../utils/handleSegmentCommon';
 import {
@@ -133,7 +133,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html index 2b48d2ec824..a4b65055964 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html @@ -190,7 +190,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html index 418713e0a5a..a1d4380950c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html @@ -277,7 +277,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html index b8c202aa99d..77be5ae3a3b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html @@ -143,49 +143,49 @@

All files / pac       -30x +24x   -30x +24x 2x   2x -28x -27x +22x +21x   -27x +21x 9x     -27x +21x   -27x -27x -27x +21x +21x +21x             -27x +21x     -27x +21x 6x 6x     -21x +15x     -27x +21x     -30x -29x +24x +23x     -30x +24x    
import { applyFormat } from '../utils/applyFormat';
 import { isBlockGroupEmpty } from '../../modelApi/common/isEmpty';
@@ -259,7 +259,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html index 1aa8458d1fd..685690f4cc7 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html @@ -199,7 +199,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html index 9290dcc861b..2afc806fcbc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html @@ -23,16 +23,16 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html index 2cacacc9cf5..8c3fd325b44 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html @@ -154,47 +154,47 @@

All files / pac       -152x -152x +149x +149x   -152x +149x 62x           -152x -123x -123x +149x +120x +120x   -123x +120x         -14x +12x         -152x +149x     -152x -115x -115x -115x +149x +111x +111x +111x   -115x +111x   -115x +111x     -115x -115x +111x +111x   -115x +111x       @@ -202,16 +202,16 @@

All files / pac       -115x +111x   -115x +111x   -115x +111x   -115x +111x     -152x +149x    
import { applyFormat } from '../utils/applyFormat';
 import { listLevelMetadataFormatHandler } from '../../formatHandlers/list/listLevelMetadataFormatHandler';
@@ -298,7 +298,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html index eb3786982d6..04e8dfe989c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html @@ -244,7 +244,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html index 3147c548a25..4acd5a4f169 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html @@ -199,44 +199,44 @@

All files / pac       -308x +284x   -308x +284x 7x   -301x +277x   -301x +277x     -12x -301x +10x +277x             -301x +277x   -301x +277x   -301x +277x         -301x -301x +277x +277x   -301x -301x +277x +277x   -301x +277x       -10x +9x       @@ -248,28 +248,28 @@

All files / pac       -301x -354x +277x +311x         -301x -156x +277x +133x   -156x -156x -156x +133x +133x +133x             -145x +144x     -301x +277x       @@ -277,23 +277,23 @@

All files / pac       -301x +277x   -301x -156x -60x +277x +133x +49x     -145x +144x         -308x -308x +284x +284x     -308x +284x    
import { applyFormat } from '../utils/applyFormat';
 import { getObjectKeys, unwrap } from 'roosterjs-editor-dom';
@@ -421,7 +421,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html index b51e12e7c8c..7c710fca33b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html @@ -126,27 +126,27 @@

All files / pac       -353x +310x     -353x -23x +310x +19x         -353x +310x   -302x -302x +270x +270x     -17x -17x +12x +12x     -8x -8x +6x +6x     1x @@ -159,8 +159,8 @@

All files / pac       -353x -23x +310x +19x       @@ -226,7 +226,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html index 3fc13558b40..a02a3fa434c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html @@ -114,23 +114,23 @@

All files / pac       -744x +662x   -372x -31x -31x +331x +30x +30x   -31x -31x +30x +30x   -31x -31x +30x +30x   -31x +30x       -372x +331x 7x 7x   @@ -193,7 +193,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html index 0b3067e2ef8..4662eccfa13 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html @@ -227,63 +227,63 @@

All files / pac       -43x +40x   2x     -41x +38x   -41x +38x 2x   2x   -39x +36x   -39x -26x +36x +24x     -39x +36x   -39x -39x -39x -39x +36x +36x +36x +36x     -41x +38x   -41x -41x +38x +38x   -41x -55x +38x +50x   -55x +50x   1x     -54x -54x -54x +49x +49x +49x   -54x -53x -36x +49x +48x +34x     -53x +48x     -54x +49x   -54x -82x +49x +72x   -82x +72x       @@ -298,62 +298,62 @@

All files / pac       -82x +72x   -71x +63x     -71x +63x   -71x -71x -71x -71x +63x +63x +63x +63x   -71x +63x 4x   -71x -6x +63x +4x     -71x +63x 4x     -71x -6x +63x +4x     -71x -67x +63x +59x 4x     -67x +59x 4x       -71x -66x -41x +63x +58x +37x     -66x -66x -66x -66x +58x +58x +58x +58x     -71x +63x   -71x +63x         -41x +38x    
import { applyFormat } from '../utils/applyFormat';
 import { hasMetadata } from '../../domUtils/metadata/updateMetadata';
@@ -511,7 +511,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html index c7365fd5993..073033467cd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html @@ -97,13 +97,13 @@

All files / pac       -318x -318x +285x +285x   -318x -318x +285x +285x   -318x +285x    
import { handleSegmentCommon } from '../utils/handleSegmentCommon';
 import {
@@ -136,7 +136,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html index 5926db2e0c0..fe011807045 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html @@ -23,16 +23,16 @@

All files packages-content-model/roo
- 97.11% + 96.59% Statements - 370/381 + 368/381
- 92.83% + 91.53% Branches - 285/307 + 281/307
@@ -44,9 +44,9 @@

All files packages-content-model/roo
- 96.95% + 96.4% Lines - 350/361 + 348/361
@@ -179,17 +179,17 @@

All files packages-content-model/roo handleImage.ts - -
+ +
- 100% - 28/28 - 100% - 14/14 + 92.86% + 26/28 + 71.43% + 10/14 100% 1/1 - 100% - 25/25 + 92% + 23/25 @@ -305,7 +305,7 @@

All files packages-content-model/roo

diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/index.html index ac6abe1901c..e7a7523d227 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/index.html @@ -23,16 +23,16 @@

All files packages-content-model/rooste
- 86.21% + 82.76% Statements - 25/29 + 24/29
- 69.05% + 66.67% Branches - 29/42 + 28/42
@@ -44,9 +44,9 @@

All files packages-content-model/rooste
- 85.71% + 82.14% Lines - 24/28 + 23/28
@@ -74,17 +74,17 @@

All files packages-content-model/rooste contentModelToDom.ts - -
+ +
- 86.21% - 25/29 - 69.05% - 29/42 + 82.76% + 24/29 + 66.67% + 28/42 100% 3/3 - 85.71% - 24/28 + 82.14% + 23/28 @@ -95,7 +95,7 @@

All files packages-content-model/rooste

diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html index 946e87eddc2..50929ad72b6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html @@ -125,7 +125,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html index 8b25ae2f5ed..b8d9f3e96db 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html @@ -113,10 +113,10 @@

All files / pac     1x -755x -470x +662x +394x   -470x +394x       @@ -124,32 +124,32 @@

All files / pac       -12x -11x +5x +4x     -12x +5x   -458x +389x           -23x -23x +8x +8x   -23x +8x       -23x -22x -11x +8x +7x +3x       -12x +5x    
import { isNodeOfType } from '../../domUtils/isNodeOfType';
 import { NodeType } from 'roosterjs-editor-types';
@@ -205,7 +205,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html index da570e97e6b..9466c5fd77c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html @@ -95,18 +95,18 @@

All files / pac       -751x +658x       2x     -749x -749x +656x +656x   -749x -446x +656x +377x      
import { EntityClasses, NodeType } from 'roosterjs-editor-types';
@@ -142,7 +142,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html index 1d7736e2e43..b47811eddde 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html @@ -93,25 +93,25 @@

All files / pac     1x -752x -460x +659x +384x         -272x -272x -272x +264x +264x +264x   -272x -271x -271x -271x +264x +263x +263x +263x     -272x +264x   -188x +120x       @@ -151,7 +151,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html index f28fc39a0b0..ba1d52d708d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html @@ -101,8 +101,8 @@

All files / pac       -2677x -13435x +2439x +12144x      
import {
@@ -136,7 +136,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html index 0ce2266fce4..ac906dbb325 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html @@ -95,17 +95,17 @@

All files / pac       -361x -360x +320x +319x     -361x +320x   -361x +320x   -361x +320x   -361x +320x    
import { applyFormat } from './applyFormat';
 import { ContentModelSegment, ModelToDomContext } from 'roosterjs-content-model-types';
@@ -139,7 +139,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/index.html index de85f6d26a0..8fc73b3d9bb 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/index.html @@ -140,7 +140,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts.html index bd32470e4d4..57f5c5eec5f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts.html @@ -196,7 +196,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html index fe419ae22cd..ef1725ce9ae 100644 --- a/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html @@ -108,25 +108,25 @@

All files / pac       -531x +477x       -531x -292x +477x +249x   -292x -292x +249x +249x         -292x +249x   -292x +249x     -239x +228x      
import {
@@ -172,7 +172,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/index.html index 8965460235d..848459019ef 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts.html index f2a8b10a899..c977a2e0989 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts.html @@ -142,7 +142,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts.html index 05536ec0b1c..3253dcaeee5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts.html @@ -202,7 +202,7 @@

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/index.html index e81428b349d..4572b12ace3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/index.html @@ -110,7 +110,7 @@

All files packages-content-model/rooste diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/index.html index 9c69aab5a34..71708ed1f64 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/index.html @@ -125,7 +125,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts.html index 1291f29ab4f..189df75496f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts.html @@ -166,7 +166,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts.html index 10138247401..bff15354bf3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts.html @@ -139,7 +139,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts.html index 164a4fdb51e..8325210618f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts.html @@ -223,7 +223,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts.html index ea260ef5cc0..b33efb36d59 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts.html @@ -163,7 +163,7 @@

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts.html index a54f19550cf..5f608f86089 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts.html @@ -157,8 +157,8 @@

All files / packag       -58x -42x +56x +40x       @@ -169,9 +169,9 @@

All files / packag       -37x +29x   -37x +29x       @@ -180,9 +180,9 @@

All files / packag     1x -24x +20x   -24x +20x       @@ -190,11 +190,11 @@

All files / packag     1x -74x +59x   -74x -74x -74x +59x +59x +59x       @@ -204,9 +204,9 @@

All files / packag     1x -43x +41x   -43x +41x   1x  
import { ContentModelEditorCore } from '../publicTypes/ContentModelEditorCore';
@@ -292,7 +292,7 @@ 

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts.html index d700451c51c..e1e48ef250a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts.html @@ -122,14 +122,14 @@

All files / pac     1x -45x +37x   -45x +37x   1x     -45x +37x       @@ -137,18 +137,18 @@

All files / pac       -33x +28x         -33x +28x           -33x +28x       @@ -211,7 +211,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts.html index 6d9fa004bb3..25a0dd005ab 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts.html @@ -105,9 +105,9 @@

All files / pac     1x -265x +220x   -53x +44x       @@ -115,25 +115,25 @@

All files / pac       -53x -53x +44x +44x   -53x +44x       -53x -53x +44x +44x   -53x -48x +44x +39x         -53x +44x   -53x +44x 1x     @@ -184,7 +184,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts.html index 421ff2a96ac..602ec3e8037 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts.html @@ -75,9 +75,9 @@

All files / pac     1x -121x +102x   -121x +102x    
import { ContentModelEditorCore } from '../../publicTypes/ContentModelEditorCore';
 import { GetSelectionRangeEx } from 'roosterjs-editor-types';
@@ -97,7 +97,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/index.html index 926d68bfff3..a9dc8974437 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/index.html @@ -155,7 +155,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts.html index 8f1e3710ccf..2ad0f0ddbb0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts.html @@ -95,7 +95,7 @@

All files / pac     1x -28x +24x       @@ -106,12 +106,12 @@

All files / pac       -28x -27x -27x +24x +23x +23x     -28x +24x    
import { contentModelToDom } from 'roosterjs-content-model-dom';
 import { SetContentModel } from '../../publicTypes/ContentModelEditorCore';
@@ -148,7 +148,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts.html index a5d07dcec35..5641f49154f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts.html @@ -235,7 +235,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts.html index 7a12ce95676..640f91acdea 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts.html @@ -23,30 +23,30 @@

All files / pac -
+

-	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -134,17 +134,17 @@ 

All files packages-content-model/roo

- - - - - + + + + - - + + @@ -185,7 +185,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts.html index 1ec1e2f1a7b..bd9fd4f98d1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts.html @@ -106,7 +106,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts.html index 9de35326672..fa014968685 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts.html @@ -23,16 +23,16 @@

All files / pac

- - - - - + + + + - - + + @@ -155,7 +155,7 @@

All files packages-content-model/ diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/index.html index 4c984edf94d..708ea9b9e1f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts.html index 6f48031f61d..68ea428c9ed 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts.html @@ -385,7 +385,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/index.html index aee7c44d1d8..6e7c146750e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts.html index a2376203cf4..bce215c5b9f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts.html @@ -167,10 +167,10 @@

All files / pac     1x -28x +22x   -28x -28x +22x +22x       @@ -179,10 +179,10 @@

All files / pac     1x -31x -31x +25x +25x   -31x +25x 3x   3x @@ -190,7 +190,7 @@

All files / pac       -31x +25x       @@ -200,7 +200,7 @@

All files / pac 1x     -80x +68x       @@ -286,7 +286,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts.html index a4ddfd6eb09..f862db21e8c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts.html @@ -241,7 +241,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/index.html index 1240c6ae4bb..80b8cb92451 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts.html index aec524597ef..2ddc0695cb0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts.html @@ -505,7 +505,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/index.html index c1618e8dec0..1bb287a3da1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/index.html @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts.html index 087483fffb7..bd46f28c313 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts.html @@ -373,7 +373,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts.html index 64a00f23972..5b628823892 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts.html @@ -226,7 +226,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts.html index 0d840cada65..31f3cbf1d5e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts.html @@ -508,7 +508,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts.html index b9772c44dc0..94fd56f9932 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts.html index 37cb8c4bdef..2e56fa1d0ab 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts.html @@ -754,7 +754,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts.html index 1ecfb168f11..ead2cd5a861 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts.html @@ -112,7 +112,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/index.html index fc18b35cf64..3626d4f1507 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/index.html @@ -185,7 +185,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts.html index e75425da454..1873aa33bb3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts.html @@ -382,17 +382,17 @@

All files / pac       -695x -688x +692x +685x     2x     -688x +685x     -695x +692x       @@ -402,19 +402,19 @@

All files / pac       -903x -903x -903x +900x +900x +900x   -903x +900x   -903x -903x +900x +900x   -903x -980x +900x +977x   -980x +977x   121x   @@ -507,13 +507,13 @@

All files / pac 45x     -762x +759x   -762x -1117x -1117x +759x +1111x +1111x   -1117x +1111x   27x   @@ -540,21 +540,21 @@

All files / pac 27x 10x   -1090x -684x +1084x +681x     -1117x -698x +1111x +695x   -419x +416x       -762x +759x 37x   -725x +722x       @@ -566,7 +566,7 @@

All files / pac       -859x +856x       @@ -577,7 +577,7 @@

All files / pac       -859x +856x    

- + @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts.html index a24a28bdfb4..81810e8d6ef 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts.html @@ -32,7 +32,7 @@

All files / pac
100% Branches - 20/20 + 18/18
@@ -161,8 +161,7 @@

All files / pac 102 103 104 -105 -106

- - - + + + - + - + - - - - - + + + + - - + + @@ -155,7 +155,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts.html index e9a7acc12c5..f723438b959 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts.html @@ -23,16 +23,16 @@

All files / pac

';\n html = tr + html + '';\n }\n if (html.match(LAST_TR_END_REGEX)) {\n let tableMatch = htmlBefore.match(LAST_TABLE_REGEX);\n let table = tableMatch ? tableMatch[0] : '
1 2 @@ -328,7 +328,25 @@

All files / pac 269 270 271 -272

1x +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +2901x 1x 1x   @@ -368,15 +386,16 @@

All files / pac       +  1x -20x -20x +19x +19x           -20x +19x       @@ -389,11 +408,11 @@

All files / pac       -20x -20x -20x +19x +19x +19x 2x -4x +5x 4x     @@ -413,19 +432,36 @@

All files / pac     1x -10x +8x     -1x -8x +9x +9x     -8x -8x -6x +9x +9x +7x +  +7x +    -6x -6x +2x +1x +  +1x +  +1x +  +  +  +  +1x +  +  +  +  +7x 2x     @@ -442,8 +478,8 @@

All files / pac       -6x -6x +7x +7x       @@ -453,25 +489,25 @@

All files / pac       -6x -6x -6x +7x +7x +7x             -6x -6x +7x +7x     -6x -6x -6x -6x +7x +7x +7x +7x   -6x +7x 3x     @@ -495,7 +531,7 @@

All files / pac       -20x +19x 2x 2x   @@ -519,7 +555,7 @@

All files / pac     1x -6x +7x       @@ -534,22 +570,22 @@

All files / pac       -6x -6x -6x +7x +7x +7x   -6x -6x +7x +7x   -6x +7x   1x     -6x -6x -6x -6x +7x +7x +7x +7x       @@ -560,26 +596,26 @@

All files / pac       -6x +7x     -6x -6x +7x +7x 2x   2x 2x -4x +5x 2x   2x 2x     -2x +3x     -6x +7x       @@ -634,6 +670,7 @@

All files / pac ClipboardData, SelectionRangeTypes, SelectionRangeEx, + ColorTransformDirection, } from 'roosterjs-editor-types';   /** @@ -695,7 +732,24 @@

All files / pac if (selection && !selection.areAllCollapsed) { const model = this.editor.createContentModel();   - const pasteModel = cloneModel(model); + const pasteModel = cloneModel(model, { + includeCachedElement: this.editor.isDarkMode() + ? (node, type) => { + if (type == 'cache') { + return undefined; + } else { + const result = node.cloneNode(true /*deep*/) as HTMLElement; +  + this.editor?.transformToDarkColor( + result, + ColorTransformDirection.DarkToLight + ); +  + return result; + } + } + : false, + }); if (selection.type === SelectionRangeTypes.TableSelection) { iterateSelections([pasteModel], (path, tableContext) => { if (tableContext?.table) { @@ -877,7 +931,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts.html index d0ada83ecb6..b4c34d717e1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts.html @@ -148,7 +148,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/index.html index bcd0399e4b0..f051ac51a04 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/index.html @@ -23,30 +23,30 @@

All files packages-content-model/roo
- 79.46% + 80.51% Statements - 89/112 + 95/118
- 54.84% + 58.57% Branches - 34/62 + 41/70
- 63.33% + 64.52% Functions - 19/30 + 20/31
- 79.63% + 80.53% Lines - 86/108 + 91/113
@@ -55,7 +55,7 @@

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

-
+
@@ -73,18 +73,18 @@

All files packages-content-model/roo

- - + - - - - - - - - + + + + + + + + @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts.html index fbf829e1018..094d3ba4a2c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts.html @@ -189,7 +189,7 @@

All files / packag     1x -47x +45x       @@ -210,11 +210,11 @@

All files / packag       -47x +45x   -47x +45x   -47x +45x       @@ -226,47 +226,47 @@

All files / packag       -47x +45x   -47x -47x -47x +45x +45x +45x       -47x -47x +45x +45x             -47x +45x   -47x -47x -47x +45x +45x +45x             -47x -47x -47x -47x -47x -47x -47x -47x +45x +45x +45x +45x +45x +45x +45x +45x       -47x +45x   -47x +45x       @@ -394,7 +394,7 @@

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/index.html index f2c1714361e..15523bf764e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/index.html @@ -125,7 +125,7 @@

All files packages-content-model/rooste diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts.html index b68082354f7..6e222c9e44a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts.html @@ -103,7 +103,7 @@

All files / packag diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts.html index ea786344b54..3a13473e42c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts.html @@ -330,8 +330,8 @@

All files / pac     1x -68x -68x +66x +66x       @@ -348,11 +348,11 @@

All files / pac   1x   -58x +56x   -58x -58x -300x +56x +56x +286x       @@ -372,8 +372,8 @@

All files / pac     1x -145x -145x +127x +127x   16x 16x @@ -381,8 +381,8 @@

All files / pac       -50x -50x +40x +40x       @@ -772,7 +772,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts.html index 62e54be381f..10fd252376c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts.html @@ -155,7 +155,7 @@

All files / pac     1x -62x +60x       @@ -172,7 +172,7 @@

All files / pac   1x   -52x +50x       @@ -191,11 +191,11 @@

All files / pac     1x -137x +119x       -137x +119x     4x @@ -217,10 +217,10 @@

All files / pac       -30x -29x +24x +23x   -30x +24x       @@ -325,7 +325,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts.html index cf26f74b935..ef58f6bfd4b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts.html @@ -226,13 +226,13 @@

All files /     1x -31x +29x           -62x +58x       @@ -249,7 +249,7 @@

All files /   1x   -30x +28x       @@ -268,29 +268,29 @@

All files /     1x -105x -81x +87x +67x     -24x -24x +20x +20x     -24x -24x +20x +20x   -4x -4x +2x +2x   4x 4x     -9x -  7x   -9x +6x +  +7x   1x 1x @@ -299,17 +299,17 @@

All files / 2x     -24x -24x -24x -24x +20x +20x +20x +20x   -24x +20x 1x 1x     -24x +20x   1x   @@ -327,7 +327,7 @@

All files /       -24x +20x 5x     @@ -475,7 +475,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/index.html index 7df8230182c..90d9183195c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/index.html @@ -30,9 +30,9 @@

All files packages-content-mod
- 93.94% + 87.88% Branches - 31/33 + 29/33
@@ -79,8 +79,8 @@

All files packages-content-mod

- - + + @@ -95,7 +95,7 @@

All files packages-content-mod diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts.html index 7995ecaabad..c9027f82fa5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts.html @@ -30,9 +30,9 @@

All files / 93.94% + 87.88% Branches - 31/33 + 29/33 @@ -152,17 +152,17 @@

All files /       -39x -13x +36x +12x   -13x -5x -5x +12x +4x +4x       -13x -13x +12x +12x 1x   4x @@ -176,12 +176,12 @@

All files /       -13x 12x -6x -6x -6x -6x +10x +4x +4x +4x +4x       @@ -192,18 +192,18 @@

All files /     1x -8x +7x +3x +3x +3x +  +7x 4x 4x 4x   -8x -5x -5x -5x -    -8x +7x    

- - - - - - - - - + + + + + + + + @@ -125,7 +125,7 @@

All files packages-content-mod diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts.html index 01a10342eff..2c4adae47f8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts.html @@ -23,30 +23,30 @@

All files / 100% + 87.88% Statements - 33/33 + 29/33
- 94.12% + 88.24% Branches - 16/17 + 15/17
- 100% + 71.43% Functions - 7/7 + 5/7
- 100% + 87.5% Lines - 32/32 + 28/32
@@ -186,25 +186,25 @@

All files /     1x -22x -22x -22x -22x +20x +20x +20x +20x         -22x +20x     -3x +        -22x -6x -6x -6x +20x +  +  +        @@ -217,12 +217,12 @@

All files /       -95x +81x   -95x +81x     -58x +44x       @@ -234,12 +234,12 @@

All files /       -26x +14x         -3x +1x       @@ -302,14 +302,14 @@

All files / value != 'none' + (value, element) => element.tagName != 'IMG' || value != 'none' );   // Preserve <o:p> when its innerHTML is "&nbsp;" to avoid dropping an empty line - chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => { - moveChildNodes(element); - element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp; - return true; + chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => { + moveChildNodes(element); + element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp; + return true; }); }   @@ -379,7 +379,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts.html index dd51281219f..3547e921a69 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts.html @@ -94,7 +94,7 @@

All files /     1x -61x +47x       @@ -130,7 +130,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts.html index dc90b0c13e4..2552ce8e0a0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts.html @@ -316,29 +316,29 @@

All files /       -95x -95x -21x +81x +81x +19x   -95x +81x       -95x +81x 15x     -80x +66x     -80x +66x   -80x -80x -45x +66x +66x +31x     -80x +66x 19x   19x @@ -372,7 +372,7 @@

All files / 19x     -61x +47x       @@ -712,7 +712,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/index.html index b518735a51f..5e70f870142 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/index.html @@ -95,7 +95,7 @@

All files packages-content-model/ diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts.html index 7543496eff4..0eaf9c0d724 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts.html @@ -96,14 +96,14 @@

All files /       -329x -88x +302x +82x   -329x -322x +302x +296x     -329x +302x    

ContentModelCopyPastePlugin.ts -
+
ContentModelCopyPastePlugin.ts +
79.25%84/10654.84%34/6261.54%16/2679.41%81/10280.36%90/11258.57%41/7062.96%17/2780.37%86/107
100% 35/3593.94%31/3387.88%29/33 100% 4/4 100%
import addParser from '../utils/addParser';
 import ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';
@@ -268,12 +268,12 @@ 

All files / trMatch[0] : '<TR>'; html = tr + html + '</TR>'; } if (html.match(LAST_TR_END_REGEX)) { let tableMatch = htmlBefore.match(LAST_TABLE_REGEX); - let table = tableMatch ? tableMatch[0] : '<TABLE>'; + let table = tableMatch ? tableMatch[0] : '<TABLE>'; html = table + html + '</TABLE>'; }   @@ -286,7 +286,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/index.html index a714fd53679..00d1b320ff3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/index.html @@ -95,7 +95,7 @@

All files packages-content-mod diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts.html index b2be312c1f9..d06ed1dcf5f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts.html @@ -142,7 +142,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/index.html index de86a09827f..a6bf61a54c0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/index.html @@ -95,7 +95,7 @@

All files packages-content-mod diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts.html index 04bc27524df..843996d0388 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts.html @@ -381,11 +381,11 @@

All files /       -187x -187x +130x +130x     -187x +130x       @@ -403,26 +403,26 @@

All files /       -500x -500x -43x -43x +387x +387x +41x +41x     -500x +387x 57x 57x     -2943x -44x -399x +2231x +23x +307x 2x 2x 2x     -399x +307x       @@ -510,7 +510,7 @@

All files /       -399x +307x   364x   @@ -525,16 +525,16 @@

All files /     1x -44x -44x -44x -44x +42x +42x +42x +42x   -44x -44x -44x -44x -44x +42x +42x +42x +42x +42x       @@ -587,8 +587,8 @@

All files /       -106x -3x +76x +2x      

import addParser from '../utils/addParser';
@@ -865,7 +865,7 @@ 

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/index.html index 3b377907da5..bc20e115028 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/index.html @@ -23,30 +23,30 @@

All files packages-content-mod
- 99.11% + 95.54% Statements - 111/112 + 107/112
- 92.55% + 91.49% Branches - 87/94 + 86/94
- 100% + 87.5% Functions - 16/16 + 14/16
- 99.1% + 95.5% Lines - 110/111 + 106/111
@@ -74,17 +74,17 @@

All files packages-content-mod

processPastedContentFromWordDesktop.ts -
+
+
100%33/3394.12%16/17100%7/7100%32/3287.88%29/3388.24%15/1771.43%5/787.5%28/32
import {
     ContentModelFormatMap,
@@ -136,7 +136,7 @@ 

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts.html index 4deb7e50e94..55c73ccddda 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts.html @@ -87,15 +87,15 @@

All files / 1x     -35x -175x -175x -175x +29x +145x +145x +145x   -975x +644x   -30x -30x +23x +23x       @@ -127,7 +127,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/index.html index 58208aaf497..274f8cad721 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/index.html @@ -140,7 +140,7 @@

All files packages-content-mod diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts.html index a18fcc12f5b..167652452fd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts.html @@ -151,7 +151,7 @@

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts.html index 69598ced7b3..bbd8221d1f1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts.html @@ -83,11 +83,11 @@

All files /       -198x -66x +188x +62x     -198x +188x    

import { DomToModelOption, ElementProcessorMap } from 'roosterjs-content-model-types';
  
@@ -112,7 +112,7 @@ 

All files / istanbul - at Fri Sep 08 2023 20:12:14 GMT+0000 (Coordinated Universal Time) + at Fri Sep 08 2023 20:53:21 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/index.html index 138ccd4caee..373ff7623e0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/index.html @@ -110,7 +110,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts.html index 31b01fabaef..08eb049e96b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts.html @@ -268,7 +268,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/index.html index 6ce49483f0f..9983ab8e216 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/editor/utils/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts.html index 01192c61baa..0c14e3570fa 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts.html @@ -367,7 +367,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/index.html index b63ea4e2142..b425a89cadd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/index.html @@ -155,7 +155,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts.html index 504ca887f1c..82a4a249c25 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts.html @@ -280,7 +280,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts.html index c2cf5a10938..9f87d596433 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts.html @@ -277,7 +277,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts.html index 4df169610de..58ad1be6970 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts.html @@ -253,7 +253,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts.html index e5ebba5fb9e..cf3018aa724 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts.html @@ -277,7 +277,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts.html index d3ca7bd22cb..85c1f055edc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts.html @@ -634,7 +634,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts.html index db0856de91c..8113bad8fbd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts.html @@ -23,30 +23,30 @@

All files / pac

  +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399  +  +  +  +  +  +  +  +  +        @@ -464,17 +514,17 @@

All files / pac       -20x +24x   -20x -6x +23x +4x     -20x +23x       -43x +41x   11x   @@ -488,11 +538,11 @@

All files / pac   6x   -2x +4x   -20x +17x   -4x +3x       @@ -500,42 +550,43 @@

All files / pac       -30x +22x   3x   -2x +3x   2x       +6x +  8x   -15x           +111x   -133x         +16x   -19x             +45x   -47x +45x   -47x       @@ -546,21 +597,20 @@

All files / pac       +86x   -82x +43x   41x   -43x -            -136x +108x   -34x +27x       @@ -568,22 +618,20 @@

All files / pac       -34x +27x 2x   -34x +27x 3x     -34x -  +27x     -16x -  -4x   +28x   +7x       @@ -599,21 +647,21 @@

All files / pac       -100x +85x   -20x +17x       -30x +22x             -20x -11x +17x +4x       @@ -621,17 +669,17 @@

All files / pac       -20x +17x       -12x +9x   -4x +3x       -4x +3x       @@ -642,13 +690,13 @@

All files / pac       -12x +9x   -4x +3x       -8x +6x       @@ -658,9 +706,9 @@

All files / pac       -40x +30x   -8x +6x       @@ -745,9 +793,7 @@

All files / pac       -  -  -10x +8x       @@ -768,8 +814,44 @@

All files / pac       +8x +8x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +53x +  +53x +13x +40x +25x 15x -15x +9x +  +6x +  +6x +1x +  +  +5x +     

import type {
     ContentModelBlock,
@@ -800,18 +882,27 @@ 

All files / pac ContentModelListLevel, } from 'roosterjs-content-model-types';   +/** + * @internal + */ +export type CachedElementHandler = ( + node: HTMLElement, + type: 'general' | 'entity' | 'cache' +) => HTMLElement | undefined; +  /** * @internal * Options for cloneModel API */ export interface CloneModelOptions { /** - * When pass false or not passed, the cloned model will not have cached element even they exist in original model. - * For entity and general model, a cloned wrapper element will be added into cloned model. So that the cloned model will be fully disconnected from the original one - * When pass true, cloned model will have the same cached element and element wrapper with the original model - * @default true + * Specify how to deal with cached element, including cached block element, element in General Model, and wrapper element in Entity + * - True: Cloned model will have the same reference to the cached element + * - False/Not passed: For cached block element, cached element will be undefined. For General Model and Entity, the element will have deep clone and assign to the cloned model + * - A callback: invoke the callback with the source cached element and a string to specify model type, let the callback return the expected value of cached element. + * For General Model and Entity, the callback must return a valid element, otherwise there will be exception thrown. */ - includeCachedElement?: boolean; + includeCachedElement?: boolean | CachedElementHandler; }   /** @@ -940,9 +1031,7 @@

All files / pac   return Object.assign( { - wrapper: options.includeCachedElement - ? wrapper - : (wrapper.cloneNode(true /*deep*/) as HTMLElement), + wrapper: handleCachedElement(wrapper, 'entity', options), isReadonly, type, id, @@ -960,7 +1049,7 @@

All files / pac   const newParagraph: ContentModelParagraph = Object.assign( { - cachedElement: options.includeCachedElement ? cachedElement : undefined, + cachedElement: handleCachedElement(cachedElement, 'cache', options), isImplicit, segments: segments.map(segment => cloneSegment(segment, options)), segmentFormat: segmentFormat ? { ...segmentFormat } : undefined, @@ -986,7 +1075,7 @@

All files / pac   return Object.assign( { - cachedElement: options.includeCachedElement ? cachedElement : undefined, + cachedElement: handleCachedElement(cachedElement, 'cache', options), widths: Array.from(widths), rows: rows.map(row => cloneTableRow(row, options)), }, @@ -1004,7 +1093,7 @@

All files / pac return Object.assign( { height, - cachedElement: options.includeCachedElement ? cachedElement : undefined, + cachedElement: handleCachedElement(cachedElement, 'cache', options), cells: cells.map(cell => cloneTableCell(cell, options)), }, cloneModelWithFormat(row) @@ -1019,7 +1108,7 @@

All files / pac   return Object.assign( { - cachedElement: options.includeCachedElement ? cachedElement : undefined, + cachedElement: handleCachedElement(cachedElement, 'cache', options), isSelected, spanAbove, spanLeft, @@ -1037,7 +1126,7 @@

All files / pac ): ContentModelFormatContainer { const { tagName, cachedElement } = container; const newContainer: ContentModelFormatContainer = Object.assign( - { tagName, cachedElement: options.includeCachedElement ? cachedElement : undefined }, + { tagName, cachedElement: handleCachedElement(cachedElement, 'cache', options) }, cloneBlockBase(container), cloneBlockGroupBase(container, options) ); @@ -1080,7 +1169,7 @@

All files / pac { isSelected, tagName, - cachedElement: options.includeCachedElement ? cachedElement : undefined, + cachedElement: handleCachedElement(cachedElement, 'cache', options), }, cloneBlockBase(divider) ); @@ -1094,9 +1183,7 @@

All files / pac   return Object.assign( { - element: options.includeCachedElement - ? element - : (element.cloneNode(true /*deep*/) as HTMLElement), + element: handleCachedElement(element, 'general', options), }, cloneBlockBase(general), cloneBlockGroupBase(general, options) @@ -1128,6 +1215,42 @@

All files / pac const { text } = textSegment; return Object.assign({ text }, cloneSegmentBase(textSegment)); } +  +function handleCachedElement<T extends HTMLElement>( + node: T, + type: 'general' | 'entity', + options: CloneModelOptions +): T; +  +function handleCachedElement<T extends HTMLElement>( + node: T | undefined, + type: 'cache', + options: CloneModelOptions +): T | undefined; +  +function handleCachedElement<T extends HTMLElement>( + node: T | undefined, + type: 'general' | 'entity' | 'cache', + options: CloneModelOptions +): T | undefined { + const { includeCachedElement } = options; +  + if (!node) { + return undefined; + } else if (!includeCachedElement) { + return type == 'cache' ? undefined : (node.cloneNode(true /*deep*/) as T); + } else if (includeCachedElement === true) { + return node; + } else { + const result = includeCachedElement(node, type) as T | undefined; +  + if ((type == 'general' || type == 'entity') && !result) { + throw new Error('Entity and General Model must has wrapper element'); + } +  + return result; + } +}  

@@ -1135,7 +1258,7 @@

All files / pac

diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts.html index aa6b806d9dc..d92a3521d44 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts.html @@ -113,14 +113,14 @@

All files / pac 1x     -321x +315x   -297x -312x +291x +306x   -312x +306x 96x -216x +210x       @@ -129,7 +129,7 @@

All files / pac       -198x +192x    

import {
     ContentModelBlockGroup,
@@ -175,7 +175,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/index.html index 667744d5153..54bcdf60e55 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/index.html @@ -23,30 +23,30 @@

All files packages-content-model/roo
- 98.35% + 98.42% Statements - 417/424 + 436/443
- 89.92% + 89.79% Branches - 339/377 + 343/382
- 98.72% + 98.73% Functions - 77/78 + 78/79
- 98.27% + 98.35% Lines - 398/405 + 416/423
@@ -89,17 +89,17 @@

All files packages-content-model/roo

cloneModel.ts -
+
+
92.96%66/7195.45%42/4496.15%25/2692.96%66/7193.9%77/8295.12%39/4196.3%26/2793.9%77/82
mergeModel.ts +
99.29%140/14185.06%131/15499.33%148/14985.19%138/162 100% 15/1599.26%135/13699.3%142/143
1x +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +3891x 1x 1x   @@ -500,10 +513,10 @@

All files / pac       -58x +55x   -58x -56x +55x +53x 14x     @@ -512,26 +525,30 @@

All files / pac 14x     +53x 56x -63x   -63x +56x   -39x -39x +34x +34x     +2x +2x   -3x -3x   +1x +1x +1x   -11x -6x   +9x 5x   -11x +4x +  +9x     10x @@ -548,7 +565,8 @@

All files / pac       -58x +55x +        @@ -556,19 +574,27 @@

All files / pac       -78x -39x +68x +34x     -39x +34x   -39x -39x +34x +34x +49x   +49x   -39x -8x -8x +49x +2x +  +  +  +  +34x +3x +3x 2x     @@ -584,8 +610,8 @@

All files / pac       -39x -9x +34x +5x       @@ -594,9 +620,9 @@

All files / pac       -6x +5x   -6x +5x 12x 4x 7x @@ -645,7 +671,7 @@

All files / pac 4x 4x   -2x +1x       @@ -671,31 +697,31 @@

All files / pac       -87x -29x -29x -29x +69x +23x +23x +23x           -29x -29x +23x +23x     -29x -29x +23x +23x     -29x +23x         -29x +23x   -29x +23x 4x 4x   @@ -714,19 +740,19 @@

All files / pac       -29x +23x   -29x +23x       -13x -13x -13x -13x +11x +11x +11x +11x   -13x -13x +11x +11x       @@ -892,12 +918,16 @@

All files / pac   switch (block.blockType) { case 'Paragraph': - mergeParagraph(insertPosition, block, i == 0); + mergeParagraph(insertPosition, block, i == 0, context); break;   case 'Divider': + insertBlock(insertPosition, block); + break; +  case 'Entity': insertBlock(insertPosition, block); + context?.newEntities.push(block); break;   case 'Table': @@ -929,7 +959,8 @@

All files / pac function mergeParagraph( markerPosition: InsertPoint, newPara: ContentModelParagraph, - mergeToCurrentParagraph: boolean + mergeToCurrentParagraph: boolean, + context?: FormatWithContentModelContext ) { const { paragraph, marker } = markerPosition; const newParagraph = mergeToCurrentParagraph @@ -938,7 +969,15 @@

All files / pac const segmentIndex = newParagraph.segments.indexOf(marker);   Eif (segmentIndex >= 0) { - newParagraph.segments.splice(segmentIndex, 0, ...newPara.segments); + for (let i = 0; i < newPara.segments.length; i++) { + const segment = newPara.segments[i]; +  + newParagraph.segments.splice(segmentIndex + i, 0, segment); +  + if (context && segment.segmentType == 'Entity') { + context.newEntities.push(segment); + } + } }   if (newPara.decorator) { @@ -1189,7 +1228,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts.html index 5b1f2b328c9..45b652eb040 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts.html @@ -802,7 +802,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts.html index ef45dffca77..93cb790ff8a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts.html @@ -265,7 +265,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts.html index 2a188e0830d..0da0a3869cc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts.html @@ -131,12 +131,12 @@

All files / pac   1x   -224x +221x     -207x +204x   -207x +204x 70x     @@ -146,9 +146,9 @@

All files / pac       -207x +204x   -207x +204x       @@ -159,9 +159,9 @@

All files / pac       -828x +816x   -207x +204x       @@ -238,7 +238,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts.html index a0c85a1deef..fc18b272ff4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts.html @@ -124,7 +124,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts.html index 3cae321b0ad..66d4dfaf90a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts.html @@ -364,7 +364,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts.html index 232dfdff3c0..614728e474c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts.html @@ -616,7 +616,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/index.html index 9c988085ab3..35e313cf739 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/index.html @@ -125,7 +125,7 @@

All files packages-content-model/ diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/index.html index 1f19fc66527..76aabf9d355 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts.html index ccd7d669624..b189ef52a2b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts.html @@ -98,7 +98,7 @@

All files /       -201x +198x       @@ -136,7 +136,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts.html index e4fcce8bf41..a70b9def303 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts.html @@ -247,7 +247,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts.html index f3b29567e84..40d7330cfe3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts.html @@ -208,61 +208,61 @@

All files /       -207x +204x           -207x +204x         -209x +206x         -209x -209x +206x +206x   -209x +206x   -182x +179x     -182x -182x -182x +179x +179x +179x   -182x -182x +179x +179x   +179x 182x -185x             -141x +137x           -44x -44x +45x +45x             -182x -41x +179x +42x     27x @@ -287,19 +287,19 @@

All files / 3x     -209x +206x   -53x +54x   -53x -53x -53x +54x +54x +54x           -207x +204x    

import { ContentModelDocument } from 'roosterjs-content-model-types';
 import { createInsertPoint } from '../utils/createInsertPoint';
@@ -430,7 +430,7 @@ 

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts.html index d4770171620..03a7f8a44d4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts.html @@ -23,16 +23,16 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts.html index 5205a5b9416..8ab773ca7a8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts.html @@ -178,7 +178,7 @@

All files / diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/index.html index 5cb5ad69243..4383e144c35 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/index.html @@ -23,16 +23,16 @@

All files packages-content-model/
- 91.94% + 95.97% Statements - 114/124 + 119/124
- 75.93% + 81.48% Branches - 82/108 + 88/108
@@ -44,9 +44,9 @@

All files packages-content-model/
- 91.94% + 95.97% Lines - 114/124 + 119/124
@@ -119,17 +119,17 @@

All files packages-content-model/

deleteSegment.ts -
+
+
85%34/4060.53%23/3897.5%39/4076.32%29/38 100% 2/285%34/4097.5%39/40
import { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';
 import {
@@ -847,7 +847,7 @@ 

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts.html index e393068434e..ee486574d4f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts.html @@ -667,7 +667,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts.html index 9cb4d1b01b0..faf438f2ff3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts.html @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts.html index 78eab90c47c..a5f26edb57b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts.html @@ -262,7 +262,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts.html index 96bd5692b2f..05dacd0221a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts.html @@ -892,7 +892,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts.html index 13ba09508df..4189be200e8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts.html @@ -271,7 +271,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts.html index 54617cbea35..79a252b3364 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts.html @@ -139,7 +139,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts.html index 6e6864cd00c..848e48cd40f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts.html @@ -91,7 +91,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts.html index 3ab1924f14f..30ec7ce20f3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts.html @@ -142,7 +142,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts.html index 58418d0428d..b0e752de96d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts.html @@ -136,7 +136,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html index 12b313f3401..747acb7acb2 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html @@ -286,7 +286,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts.html index e886b73ce87..7474e543e5c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts.html @@ -196,7 +196,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/index.html index 9ffbd9164e2..e7b3d08e097 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/index.html @@ -365,7 +365,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts.html index 88ec8a6a87c..62f87f5762c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts.html @@ -181,7 +181,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts.html index 14a0aeb678b..9b846ea5a4f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts.html @@ -166,7 +166,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts.html index b0de6be4d99..2f2d984c859 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts.html @@ -145,7 +145,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts.html index d284b0b4c2a..a7831a33de7 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts.html @@ -244,7 +244,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts.html index 78e5083473c..8a840bb257f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts.html @@ -244,7 +244,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts.html index c6a1f91c523..2cce7ed2830 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts.html @@ -475,7 +475,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts.html index 44ed3683a0b..65a52a5166a 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts.html @@ -256,7 +256,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts.html index 523fcaea071..d520a865c65 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts.html @@ -247,7 +247,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts.html index 6fafd93a506..cfcad6cf0e5 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts.html @@ -268,7 +268,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/index.html index bafdaab6d10..7609e520d58 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/index.html @@ -185,7 +185,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts.html index 51ee80f51b1..678eb9d1370 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts.html index 1096ee5c652..10f304056cc 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts.html @@ -100,7 +100,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts.html index 30d64881634..e36d62cc577 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts.html @@ -220,7 +220,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts.html index 7a53a8187d3..7fa87a0b85d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts.html @@ -163,7 +163,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts.html index 1fe9a7a3179..b164bb8c4de 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts.html @@ -166,7 +166,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts.html index 7a752204d97..0788df2a175 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts.html @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts.html index 0d30e083238..cf7aaa8f300 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts.html @@ -190,7 +190,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts.html index 95cbd8df199..84737522dae 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts.html @@ -241,7 +241,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/index.html index 10834948348..e4aa7e7d3c9 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/index.html index 8af5dbe873d..102740c6c3b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/index.html @@ -32,7 +32,7 @@

All files packages-content-model/roo
100% Branches - 20/20 + 18/18
@@ -80,7 +80,7 @@

All files packages-content-model/roo

100% 28/28 100%20/2018/18 100% 2/2 100%  +105  1x 1x 1x @@ -251,15 +250,14 @@

All files / pac 4x   4x +4x   +4x           -4x -1x -    4x   @@ -269,7 +267,7 @@

All files / pac    

import { ChangeSource, Entity, SelectionRangeEx } from 'roosterjs-editor-types';
 import { commitEntity, getEntityFromElement } from 'roosterjs-editor-dom';
-import { createEntity } from 'roosterjs-content-model-dom';
+import { createEntity, normalizeContentModel } from 'roosterjs-content-model-dom';
 import { formatWithContentModel } from '../utils/formatWithContentModel';
 import { IContentModelEditor } from '../../publicTypes/IContentModelEditor';
 import { insertEntityModel } from '../../modelApi/entity/insertEntityModel';
@@ -352,8 +350,11 @@ 

All files / pac focusAfterEntity, context ); +  + normalizeContentModel(model);   context.skipUndoSnapshot = skipUndoSnapshot; + context.newEntities.push(entityModel);   return true; }, @@ -361,10 +362,6 @@

All files / pac selectionOverride: typeof position === 'object' ? position : undefined, } ); -  - if (editor.isDarkMode()) { - editor.transformToDarkColor(wrapper); - }   const newEntity = getEntityFromElement(wrapper);   @@ -379,7 +376,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts.html index fdc680553b9..8ffab4aa0fd 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts.html @@ -274,7 +274,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts.html index caca9cfa609..be3f05265ef 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts.html @@ -148,7 +148,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts.html index 74b04152c94..b1ca28ecee3 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts.html @@ -430,7 +430,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/index.html index 151f2f1023a..c29d3c55de8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/index.html @@ -125,7 +125,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts.html index 2275e6fcc89..6a73c4f834e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts.html @@ -157,7 +157,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts.html index 8d743e97688..e7e8f5972db 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts.html @@ -196,7 +196,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/index.html index 53477a83b62..2cd34f4d442 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/index.html @@ -170,7 +170,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts.html index aac6561f641..241372e45e0 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts.html @@ -172,7 +172,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts.html index 8cd2302e7c5..2a36d4bfb50 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts.html index 6d1125afd1d..d577bda8020 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts.html @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts.html index 0c26d62d7b0..5e1894c84ad 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts.html @@ -154,7 +154,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts.html index 7f7618258ad..745ccd8931e 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts.html @@ -187,7 +187,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/index.html index b550224d730..c9954a2513d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/index.html @@ -125,7 +125,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts.html index 4667d6c2b08..e1dd9d61cea 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts.html @@ -529,7 +529,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts.html index 978e1223108..b9edc17b705 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts.html @@ -169,7 +169,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/index.html index 5d9ac0cfcb5..6d0d205015c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/index.html @@ -140,7 +140,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts.html index 996a9e23971..f65de1caee6 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts.html @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts.html index 81d107e8993..e1445399938 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts.html @@ -166,7 +166,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts.html index 99ddd280723..c2aa455048d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts.html index 3ac6bb234a4..ed0041828ce 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts.html @@ -109,7 +109,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts.html index c691f713d46..e4ad0227de1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts.html @@ -157,7 +157,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts.html index 343719c6471..0376b2049bf 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts.html @@ -235,7 +235,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts.html index 28042804f0a..812c9644ea1 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts.html @@ -283,7 +283,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/index.html index ebbb10b2105..af8c860206d 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/index.html @@ -290,7 +290,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts.html index da8a04631ed..40384dd65c4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts.html @@ -205,7 +205,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts.html index c637f2e0145..f237e9d742c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts.html @@ -133,7 +133,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts.html index 1a8793c8dcc..9317fa43f45 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts.html @@ -121,7 +121,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts.html index 65a7e6ecfeb..725597df1f4 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts.html @@ -157,7 +157,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts.html index dc1ee46b1d7..6411a8754aa 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts.html @@ -157,7 +157,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts.html index e2ad49735f5..a4778748f2b 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts.html @@ -157,7 +157,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts.html index 80928ccd58c..055a834dcc8 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts.html index f3c91dc4f42..4deaeb027aa 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts.html index d3ef17eaaab..7c4a61e45e9 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts.html index 61bd56d2319..7e6391c8b51 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts.html @@ -115,7 +115,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts.html index edd13648b81..1593144d596 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts.html @@ -127,7 +127,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts.html index 9f8d6142fd0..00931c6cc6c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts.html @@ -100,7 +100,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts.html index 011756a9918..a165b7c024c 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts.html @@ -145,7 +145,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts.html index d167cedbab1..0a0e965a25f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts.html @@ -118,7 +118,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts.html index 5c47a93795c..5f48f86381f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts.html @@ -103,7 +103,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/index.html index a4dcb48e082..513d670f516 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/index.html @@ -140,7 +140,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/index.html index 616bfdc02ed..02f3404d930 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/index.html @@ -95,7 +95,7 @@

All files packages-content-model/roo diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts.html index ee6a3a7b244..ffff199ce13 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts.html @@ -163,7 +163,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts.html index 87009d15bca..c07aa14389f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts.html @@ -151,7 +151,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts.html index bd300791602..1f76e59be3f 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts.html @@ -148,7 +148,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts.html index be2bb29f9b3..14faf1365ff 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts.html @@ -325,7 +325,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts.html index 9b23da7cdb2..6444b34d703 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts.html @@ -25,28 +25,28 @@

All files / pac
100% Statements - 34/34 + 38/38
- 93.33% + 93.75% Branches - 28/30 + 30/32
100% Functions - 4/4 + 6/6
100% Lines - 32/32 + 36/36
@@ -159,7 +159,21 @@

All files / pac 100 101 102 -103

  +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117  1x     @@ -185,31 +199,33 @@

All files / pac       -306x -306x -306x -306x -306x -306x -306x +303x +303x +303x +303x +303x +303x +303x   -306x +303x   -306x -306x +303x +303x         -306x -210x -211x   -211x -211x +303x +207x +208x +208x   +208x +208x   -211x +  +208x 16x 16x   @@ -218,19 +234,27 @@

All files / pac       -211x +208x     -210x +207x 6x   6x 3x     -204x +201x +  +  +  +  +  +  +      +207x       @@ -238,7 +262,11 @@

All files / pac       -210x +  +208x +1x +2x +        @@ -246,7 +274,7 @@

All files / pac       -211x +208x 2x 2x   @@ -299,12 +327,14 @@

All files / pac   const model = editor.createContentModel(undefined /*option*/, selectionOverride); const context: FormatWithContentModelContext = { + newEntities: [], deletedEntities: [], rawEvent, };   if (formatter(model, context)) { const callback = () => { + handleNewEntities(editor, context); handleDeletedEntities(editor, context);   Eif (model) { @@ -344,6 +374,18 @@

All files / pac } }   +function handleNewEntities(editor: IContentModelEditor, context: FormatWithContentModelContext) { + // TODO: Ideally we can trigger NewEntity event here. But to be compatible with original editor code, we don't do it here for now. + // Once Content Model Editor can be standalone, we can change this behavior to move triggering NewEntity event code + // from EntityPlugin to here +  + if (editor.isDarkMode()) { + context.newEntities.forEach(entity => { + editor.transformToDarkColor(entity.wrapper); + }); + } +} +  function handleDeletedEntities( editor: IContentModelEditor, context: FormatWithContentModelContext @@ -370,7 +412,7 @@

All files / pac diff --git a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/index.html b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/index.html index 986488b7d67..ae283aa3478 100644 --- a/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/index.html +++ b/coverage/packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/index.html @@ -23,30 +23,30 @@

All files packages-content-model/roo
- 97.06% + 96.43% Statements - 132/136 + 135/140
- 88.79% + 87.16% Branches - 95/107 + 95/109
- 95.45% + 95.83% Functions - 21/22 + 23/24
- 97.6% + 96.9% Lines - 122/125 + 125/129
@@ -123,28 +123,28 @@

All files packages-content-model/roo

100%34/3493.33%28/3038/3893.75%30/32 100%4/46/6 100%32/3236/36
paste.ts -
+
+
94%47/5082.98%39/4792%46/5078.72%37/47 87.5% 7/895.92%47/4993.88%46/49
import { domToContentModel } from 'roosterjs-content-model-dom';
 import { formatWithContentModel } from './formatWithContentModel';
@@ -629,9 +629,9 @@ 

All files / pac retrieveMetadataFromClipboard(doc, event, trustedHTMLHandler);   // Step 3: Fill the BeforePasteEvent object, especially the fragment for paste - if ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) { + Iif ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) { // Paste image - handleImagePaste(imageDataUri, fragment); + handleImagePaste(imageDataUri, fragment); } else if (!pasteAsText && rawHtml && doc ? doc.body : false) { moveChildNodes(fragment, doc?.body); } else Iif (text) { @@ -661,7 +661,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-color-utils/lib/index.html b/coverage/packages/roosterjs-color-utils/lib/index.html index a81e55e4cce..159bdab9e16 100644 --- a/coverage/packages/roosterjs-color-utils/lib/index.html +++ b/coverage/packages/roosterjs-color-utils/lib/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-color-utils/l diff --git a/coverage/packages/roosterjs-color-utils/lib/index.ts.html b/coverage/packages/roosterjs-color-utils/lib/index.ts.html index c0913ebc500..7f6f4923f46 100644 --- a/coverage/packages/roosterjs-color-utils/lib/index.ts.html +++ b/coverage/packages/roosterjs-color-utils/lib/index.ts.html @@ -58,7 +58,7 @@

All files / packages/
1 -222x +218x  
export { default as getDarkColor } from './utils/getDarkColor';
  
@@ -67,7 +67,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs-color-utils/lib/utils/getDarkColor.ts.html b/coverage/packages/roosterjs-color-utils/lib/utils/getDarkColor.ts.html index f0276d5f546..1817f1bed15 100644 --- a/coverage/packages/roosterjs-color-utils/lib/utils/getDarkColor.ts.html +++ b/coverage/packages/roosterjs-color-utils/lib/utils/getDarkColor.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-color-utils/lib/utils/index.html b/coverage/packages/roosterjs-color-utils/lib/utils/index.html index 460cf682d05..3a63410b483 100644 --- a/coverage/packages/roosterjs-color-utils/lib/utils/index.html +++ b/coverage/packages/roosterjs-color-utils/lib/utils/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-color-util diff --git a/coverage/packages/roosterjs-editor-api/lib/format/changeCapitalization.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/changeCapitalization.ts.html index f67b8af3a5c..9c211e58e50 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/changeCapitalization.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/changeCapitalization.ts.html @@ -23,30 +23,30 @@

All files / packag -
+

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

All files packages/roosterjs-editor-api

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

All files packages/roosterjs-editor-api

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

All files packages/roosterjs-editor-api

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

All files packages/roosterjs-editor-api diff --git a/coverage/packages/roosterjs-editor-api/lib/format/insertEntity.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/insertEntity.ts.html index 1c46c640449..bb7921d1a96 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/insertEntity.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/insertEntity.ts.html @@ -559,7 +559,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/insertImage.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/insertImage.ts.html index fc3bdb1a102..ad3f18ae84f 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/insertImage.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/insertImage.ts.html @@ -193,7 +193,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/removeLink.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/removeLink.ts.html index 9ce7d519406..37ba6934455 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/removeLink.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/removeLink.ts.html @@ -133,7 +133,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/replaceWithNode.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/replaceWithNode.ts.html index 9534e7787d4..ca015b463c4 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/replaceWithNode.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/replaceWithNode.ts.html @@ -304,7 +304,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/rotateElement.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/rotateElement.ts.html index 27974fa2cd1..0394e4525b8 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/rotateElement.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/rotateElement.ts.html @@ -124,7 +124,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setAlignment.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setAlignment.ts.html index 9adf2ce3834..916a1d2fcdb 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setAlignment.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setAlignment.ts.html @@ -23,30 +23,30 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html index e10374ecb8d..9b3e1636cba 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html @@ -154,7 +154,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setDirection.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setDirection.ts.html index b7a0daeca64..d8e2f8c2133 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setDirection.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setDirection.ts.html @@ -148,7 +148,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setFontName.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setFontName.ts.html index 8055800ce63..477ec1007cd 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setFontName.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setFontName.ts.html @@ -90,11 +90,11 @@

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

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setFontSize.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setFontSize.ts.html index 32c63ecbbd5..38182908925 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setFontSize.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setFontSize.ts.html @@ -30,9 +30,9 @@

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

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

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

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html index a9a9de2ea47..7c24f8b1160 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html @@ -232,7 +232,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setImageAltText.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setImageAltText.ts.html index 161ae61b427..fb406c77ccd 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setImageAltText.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setImageAltText.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setIndentation.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setIndentation.ts.html index 018c5fd1f03..0af9e3c933d 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setIndentation.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setIndentation.ts.html @@ -265,23 +265,23 @@

All files / packag       -6x +16x   -6x +16x     -3x -3x +13x +13x   -3x -4x -4x +13x +15x +15x           -4x +15x 2x     @@ -320,15 +320,15 @@

All files / packag       -2x +13x       -5x +15x     -6x -6x +16x +16x       @@ -344,16 +344,16 @@

All files / packag 3x     -3x +13x           -2x -2x -2x -2x +12x +12x +12x +12x       @@ -568,7 +568,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html index 6dca5f73527..d74de5ca67c 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html @@ -178,7 +178,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/setTextColor.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/setTextColor.ts.html index a113a58a269..fdd405c5374 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/setTextColor.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/setTextColor.ts.html @@ -178,7 +178,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html index 2d64bce9b9f..e29cb2f1fe8 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html @@ -105,13 +105,13 @@

All files / packag     1x -18x +19x     -20x -20x +21x +21x   -18x +19x       @@ -151,7 +151,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleBold.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleBold.ts.html index 5fffbeaa65f..196b190ecb0 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleBold.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleBold.ts.html @@ -83,7 +83,7 @@

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

';\n html = tr + html + '';\n }\n if (html.match(LAST_TR_END_REGEX)) {\n let tableMatch = htmlBefore.match(LAST_TABLE_REGEX);\n let table = tableMatch ? tableMatch[0] : '
1 2 @@ -149,19 +149,19 @@

All files / packag       -  +20x     -  -  +24x +24x       -  -  -  +24x +24x +24x   -  +1x       @@ -173,32 +173,32 @@

All files / packag       -  +25x     -  +25x   -  +3x   -  +14x   -  -  -  +6x +5x +14x     -  +5x     -  +2x           -  -  -  +2x +2x +6x       @@ -218,24 +218,24 @@

All files / packag * 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); } } } @@ -243,38 +243,38 @@

All files / packag '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; } } @@ -286,7 +286,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/changeFontSize.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/changeFontSize.ts.html index d7d180c3db3..3eccc64daea 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/changeFontSize.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/changeFontSize.ts.html @@ -280,7 +280,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html index 008f8b6f8ab..041975fba7a 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html @@ -75,7 +75,7 @@

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

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

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/clearFormat.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/clearFormat.ts.html index fb75ffe59f7..896cc5afe06 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/clearFormat.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/clearFormat.ts.html @@ -23,30 +23,30 @@

All files / packag -
+
1 2 @@ -460,60 +460,60 @@

All files / packag       -  -  -  +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       @@ -560,23 +560,23 @@

All files / packag       -  -  -  -  -  +6x +6x +12x +4x +2x   -  -  -  -  +2x +2x +4x +2x     -  +2x   -  +8x   -  +2x       @@ -586,20 +586,20 @@

All files / packag       -  -  -  -  +12x +12x +8x +8x   -  +8x     -  -  -  +8x +4x +4x     -  +8x       @@ -608,14 +608,14 @@

All files / packag       -14x +23x     -14x -15x -15x +23x +24x +24x   -15x +24x     4x @@ -625,53 +625,53 @@

All files / packag       -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       @@ -684,14 +684,14 @@

All files / packag       -16x -2x -2x +34x +14x +14x   -2x -2x +14x +14x   -2x +14x       @@ -708,34 +708,34 @@

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

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

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

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

All files / packag * 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; }   /** @@ -938,21 +938,21 @@

All files / packag * 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); }   /** @@ -1068,8 +1068,8 @@

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

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

@@ -1123,7 +1123,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/createLink.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/createLink.ts.html index 2e5612716ff..e7114e108e9 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/createLink.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/createLink.ts.html @@ -538,7 +538,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/getFormatState.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/getFormatState.ts.html index 2d9021c9f89..5a348359a45 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/getFormatState.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/getFormatState.ts.html @@ -376,7 +376,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/index.html b/coverage/packages/roosterjs-editor-api/lib/format/index.html index 6cfa59359d4..c770c8ca44a 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/index.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/index.html @@ -23,30 +23,30 @@

All files packages/roosterjs-editor-api
- 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 packages/roosterjs-editor-api

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, IEditor } from 'roosterjs-editor-types';
@@ -106,7 +106,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleBullet.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleBullet.ts.html index 35ae7f7c12b..13505c76545 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleBullet.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleBullet.ts.html @@ -151,7 +151,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html index 464680fef85..1f1cb5e094d 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html @@ -178,7 +178,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleItalic.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleItalic.ts.html index bbca97ba13a..a66f9c28dbc 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleItalic.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleItalic.ts.html @@ -83,7 +83,7 @@

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

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

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleNumbering.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleNumbering.ts.html index 618098ac59c..3a3a9f4dfc0 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleNumbering.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleNumbering.ts.html @@ -157,7 +157,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html index 1236d1b2afa..e153e6a9fdf 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html @@ -106,7 +106,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleSubscript.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleSubscript.ts.html index 259506fb57d..663a389b6ff 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleSubscript.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleSubscript.ts.html @@ -112,7 +112,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html index 6445f768315..a682049e7f2 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html @@ -112,7 +112,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/format/toggleUnderline.ts.html b/coverage/packages/roosterjs-editor-api/lib/format/toggleUnderline.ts.html index 9b5e7403a75..71d0060e793 100644 --- a/coverage/packages/roosterjs-editor-api/lib/format/toggleUnderline.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/format/toggleUnderline.ts.html @@ -83,7 +83,7 @@

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

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

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/index.html b/coverage/packages/roosterjs-editor-api/lib/index.html index e1c77760463..84c70040072 100644 --- a/coverage/packages/roosterjs-editor-api/lib/index.html +++ b/coverage/packages/roosterjs-editor-api/lib/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-api/li diff --git a/coverage/packages/roosterjs-editor-api/lib/index.ts.html b/coverage/packages/roosterjs-editor-api/lib/index.ts.html index 73d80340d0d..2d12b0115b0 100644 --- a/coverage/packages/roosterjs-editor-api/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/index.ts.html @@ -116,7 +116,7 @@

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

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-api/lib/table/applyCellShading.ts.html b/coverage/packages/roosterjs-editor-api/lib/table/applyCellShading.ts.html index 3d4df48c1b1..17d9ff0eed1 100644 --- a/coverage/packages/roosterjs-editor-api/lib/table/applyCellShading.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/table/applyCellShading.ts.html @@ -187,7 +187,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/table/editTable.ts.html b/coverage/packages/roosterjs-editor-api/lib/table/editTable.ts.html index 5c8652bce87..45ddadff4ac 100644 --- a/coverage/packages/roosterjs-editor-api/lib/table/editTable.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/table/editTable.ts.html @@ -307,7 +307,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/table/formatTable.ts.html b/coverage/packages/roosterjs-editor-api/lib/table/formatTable.ts.html index 38d9e7a006c..32c5360a3f2 100644 --- a/coverage/packages/roosterjs-editor-api/lib/table/formatTable.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/table/formatTable.ts.html @@ -175,7 +175,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/table/index.html b/coverage/packages/roosterjs-editor-api/lib/table/index.html index 1a8939ce346..be17adec9d7 100644 --- a/coverage/packages/roosterjs-editor-api/lib/table/index.html +++ b/coverage/packages/roosterjs-editor-api/lib/table/index.html @@ -140,7 +140,7 @@

All files packages/roosterjs-editor-api diff --git a/coverage/packages/roosterjs-editor-api/lib/table/insertTable.ts.html b/coverage/packages/roosterjs-editor-api/lib/table/insertTable.ts.html index 2413d8fb261..540ecedef32 100644 --- a/coverage/packages/roosterjs-editor-api/lib/table/insertTable.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/table/insertTable.ts.html @@ -262,7 +262,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html index ba4404929ed..a03cfcf0858 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html @@ -157,13 +157,13 @@

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

All files / packag       -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 / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html index c4b7e952584..170cce586d4 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html @@ -23,30 +23,30 @@

All files / packag -
+

-	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -149,17 +149,17 @@ 

All files packages/roosterjs-editor-cor

- - - - - - - - - + + + + + + + + @@ -260,7 +260,7 @@

All files packages/roosterjs-editor-cor diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html index 02beded6b57..00af67e28a5 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html @@ -130,7 +130,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/index.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/index.html index 38d8d863d8d..0517c96a9f6 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html index 0c7ee265cce..611fe3b9ca8 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html @@ -937,7 +937,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html index 73a6a8e2063..dc98c0e81e4 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html @@ -172,7 +172,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html b/coverage/packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html index cd3e97888f6..6ae4c54fe47 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html @@ -251,16 +251,16 @@

All files / packag     1x -5143x +5338x   -5143x +5338x           1x -5215x +5498x       @@ -271,16 +271,16 @@

All files / packag     1x -14497x +15101x     -14497x -14497x -14497x -14497x +15101x +15101x +15101x +15101x     -14497x +15101x 14x     @@ -293,16 +293,16 @@

All files / packag   14x   -14483x +15087x             -4770x -4770x -4770x +4949x +4949x +4949x       @@ -314,13 +314,13 @@

All files / packag   1x   -15849x +17113x     -15849x -14570x +17113x +15217x   -14570x +15217x 10x 9x 9x @@ -328,7 +328,7 @@

All files / packag   1x   -14560x +15207x       @@ -338,11 +338,11 @@

All files / packag 1x     -14554x +15201x       -15849x +17113x       @@ -378,19 +378,19 @@

All files / packag       -537x -537x -1074x +871x +871x +1742x           -1074x -1074x +1742x +1742x   -1074x -37x +1742x +76x       @@ -571,7 +571,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/Editor.ts.html b/coverage/packages/roosterjs-editor-core/lib/editor/Editor.ts.html index 582b3d595b5..06130d66800 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/Editor.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/Editor.ts.html @@ -87,8 +87,8 @@

All files / packag       -4778x -4776x +4969x +4967x   1x  

- - - - - - - - - + + + + + + + + @@ -155,7 +155,7 @@

All files packages/roosterjs-editor-cor diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html b/coverage/packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html index 279f3058a8a..49e207ce7f6 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html @@ -85,7 +85,7 @@

All files / packag       -11219x +12012x    

- - - - - - - - - + + + + + + + + @@ -125,7 +125,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/entity/commitEntity.ts.html b/coverage/packages/roosterjs-editor-dom/lib/entity/commitEntity.ts.html index f491fab8258..955df824db7 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/entity/commitEntity.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/entity/commitEntity.ts.html @@ -105,15 +105,15 @@

All files / packag       -136x -136x +137x +137x           -136x -129x +137x +130x 7x     @@ -157,7 +157,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html b/coverage/packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html index e9341fe5f59..d0c8d541152 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html @@ -287,15 +287,15 @@

All files / packag       -412x +488x   -412x +488x   -412x -602x -602x +488x +709x +709x   -602x +709x 10x   10x @@ -304,11 +304,11 @@

All files / packag 1x     -592x -592x +699x +699x   -592x -458x +699x +566x 2x   2x @@ -318,19 +318,19 @@

All files / packag       -602x +709x     -412x +488x       -422x -386x -386x -386x +498x +462x +462x +462x   -422x +498x       @@ -338,12 +338,12 @@

All files / packag       -604x +711x     -604x +711x   -604x +711x       @@ -514,7 +514,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html index cbc6a97539f..e25a5d0e6f9 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html @@ -99,24 +99,24 @@

All files / packag     1x -362x -362x -362x -362x +270x +270x +270x +270x   -362x -944x +270x +645x 61x -883x +584x 61x -822x +523x 50x -772x +473x 44x       -362x +270x       @@ -166,7 +166,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html b/coverage/packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html index eb39155e88c..14323af9112 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html @@ -77,9 +77,9 @@

All files / packag     1x -6004x -6004x -6004x +6507x +6507x +6507x    

- - + + @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-dom/li diff --git a/coverage/packages/roosterjs-editor-dom/lib/index.ts.html b/coverage/packages/roosterjs-editor-dom/lib/index.ts.html index 8aefd3c57a7..f378096268f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/index.ts.html @@ -37,9 +37,9 @@

All files / packages/
- 78.79% + 80.3% Functions - 104/132 + 106/132
@@ -213,24 +213,24 @@

All files / packages/ 154 155 156 -157

- - + + @@ -245,7 +245,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html index 8d57a178df2..8bb98ae907c 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html @@ -148,7 +148,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html index c1078773da2..61dbb9e8021 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html @@ -30,9 +30,9 @@

All files / packag
- 84.31% + 88.24% Branches - 43/51 + 45/51
@@ -162,22 +162,22 @@

All files / packag 1x     -274x +282x   -274x +279x   -274x -951x -178x +279x +961x +191x     -951x +961x         -26x -24x +29x +27x   2x   @@ -186,56 +186,56 @@

All files / packag       -274x -274x -274x -  -274x -260x -260x -260x +279x +279x +279x   -260x +279x +271x +271x +271x   +271x     -260x   +271x         -60x   -60x -188x +68x   +68x +201x     -188x -56x   +201x +64x   -188x -75x   +201x +83x     -60x -29x   +68x 31x   +37x +      -260x -56x +271x +64x     -260x +271x     -274x +279x    

")+e+""}if(e.match(l)){var o=t.match(s);e=(o?o[0]:"
1 2 @@ -121,21 +121,21 @@

All files / packag       -9x -9x +40x +40x     -12x +95x   -12x -12x -  +95x +95x +3x           -9x +40x       @@ -145,9 +145,9 @@

All files / packag       -9x -  -  +40x +3x +3x       @@ -175,8 +175,8 @@

All files / packag formatCallback(element, isInnerNode);   let 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 / packag * @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 / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/blockFormat.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/blockFormat.ts.html index 028557fafd0..643d497c6f3 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/blockFormat.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/blockFormat.ts.html @@ -118,22 +118,22 @@

All files / packag       -48x -48x +68x +68x   -48x +68x     -48x -42x -42x -42x -48x -42x +68x +62x +62x +62x +68x +62x     -48x -45x +68x +65x   3x   @@ -190,7 +190,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/blockWrap.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/blockWrap.ts.html index 9d6cf3ef16e..d5cace0ba72 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/blockWrap.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/blockWrap.ts.html @@ -143,22 +143,22 @@

All files / packag       -18x +19x     -20x -20x -20x -20x -12x -12x +21x +21x +21x +21x +13x +13x   -12x +13x         -20x +21x       @@ -168,7 +168,7 @@

All files / packag       -20x +21x       @@ -241,7 +241,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html index 17aecdace5e..c1268ee7a69 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html @@ -187,7 +187,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/commitListChains.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/commitListChains.ts.html index 78ae611894e..67fa8988c7c 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/commitListChains.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/commitListChains.ts.html @@ -101,7 +101,7 @@

All files / packag     1x -42x +62x 6x 6x 6x @@ -169,7 +169,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/execCommand.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/execCommand.ts.html index 5989552af06..468b0958561 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/execCommand.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/execCommand.ts.html @@ -23,30 +23,30 @@

All files / packag -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -163,18 +163,18 @@ 

All files packages/roosterjs-editor-api

- - + - - - - - - - - + + + + + + + + @@ -230,7 +230,7 @@

All files packages/roosterjs-editor-api diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html index 8af706ec75d..7198a430986 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html @@ -117,24 +117,24 @@

All files / packag     1x -9x -9x +20x +20x   -9x -9x +20x +20x 3x   -6x +17x   -6x -6x -1x +17x +17x +2x   -5x +15x     -5x -5x +15x +15x 2x 1x 1x @@ -143,11 +143,11 @@

All files / packag 1x     -3x -3x +13x +13x     -5x +15x       @@ -157,7 +157,7 @@

All files / packag       -6x +17x    

- - - - - - - - - + + + + + + + + @@ -284,17 +284,17 @@

All files packages/roosterjs-editor-cor

- - - - - + + + + - - + + @@ -410,7 +410,7 @@

All files packages/roosterjs-editor-cor diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/insertNode.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/insertNode.ts.html index dcda03b2ba9..e5a5d490a13 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/insertNode.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/insertNode.ts.html @@ -23,30 +23,30 @@

All files / packag

1 2 @@ -147,12 +147,12 @@

All files / packag       -14x +40x   -14x +40x   -14x -14x +40x +40x 14x 14x 14x @@ -167,19 +167,19 @@

All files / packag       -  +26x     -  +26x   -  -  +26x +26x     -  +26x     -  +26x       @@ -217,7 +217,7 @@

All files / packag let formatter = () => editor.getDocument().execCommand(command, false, undefined);   let selection = editor.getSelectionRangeEx(); - Eif (selection && selection.areAllCollapsed) { + if (selection && selection.areAllCollapsed) { editor.addUndoSnapshot(); const formatState = editor.getPendableFormatState(false /* forceGetStateFromDom */); formatter(); @@ -232,19 +232,19 @@

All files / packag }); } } 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); } }, @@ -259,7 +259,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html index 884c35adbca..61a79c70abf 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html @@ -98,7 +98,7 @@

All files / packag       -108x +214x       @@ -142,7 +142,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/index.html b/coverage/packages/roosterjs-editor-api/lib/utils/index.html index 5f1f8b67a34..890666bb8b8 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/index.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/index.html @@ -23,30 +23,30 @@

All files packages/roosterjs-editor-api
- 88.51% + 93.68% Statements - 154/174 + 163/174
- 70.47% + 74.5% Branches - 105/149 + 111/149
- 87.1% + 96.77% Functions - 27/31 + 30/31
- 88.89% + 94.15% Lines - 152/171 + 161/171
@@ -88,18 +88,18 @@

All files packages/roosterjs-editor-api

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 / packag diff --git a/coverage/packages/roosterjs-editor-api/lib/utils/toggleListType.ts.html b/coverage/packages/roosterjs-editor-api/lib/utils/toggleListType.ts.html index eee0ee2dbe9..37e77032154 100644 --- a/coverage/packages/roosterjs-editor-api/lib/utils/toggleListType.ts.html +++ b/coverage/packages/roosterjs-editor-api/lib/utils/toggleListType.ts.html @@ -301,7 +301,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html index 1c9a651b61e..43de8271c95 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html @@ -228,50 +228,50 @@

All files / packag       -5067x -5067x +5367x +5367x     -5067x -5039x +5367x +5275x       -5039x -5038x +5275x +5274x       -5067x -5067x -202x -202x +5367x +5367x +313x +313x         -201x -179x -179x +312x +226x +226x       -5067x -5039x +5367x +5275x       -5066x -185x +5366x +282x           -185x +282x     -5066x +5366x 18x   18x @@ -286,12 +286,12 @@

All files / packag       -5217x -5215x -5215x -5215x +5500x +5498x +5498x +5498x   -5215x +5498x       @@ -300,7 +300,7 @@

All files / packag       -5215x +5498x       @@ -309,7 +309,7 @@

All files / packag       -5215x +5498x   22x   @@ -318,13 +318,13 @@

All files / packag       -41x +15x           -5152x +5461x       @@ -478,7 +478,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html index 238cc154f2f..1632da37913 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html @@ -142,15 +142,15 @@

All files / packag       -9677x -72328x -72328x -72328x -705x -676x +10055x +75163x +75163x +75163x +263x +234x   -705x -42x +263x +67x       @@ -161,29 +161,29 @@

All files / packag       -72328x +75163x   -72328x -71608x +75163x +74293x     -71608x +74293x       -72328x +75163x         -72328x -4821x -67507x -48244x -19263x -19263x +75163x +5010x +70153x +50134x +20019x +20019x   -72328x +75163x    

import { getObjectKeys } from 'roosterjs-editor-dom';
 import {
@@ -256,7 +256,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html index d9a216c05bf..a461f7a96c7 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html @@ -211,7 +211,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html index 23fdf6e3e98..c0e69ab6c4d 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html @@ -324,11 +324,11 @@

All files / packag   25x   -2x -23x -10x +3x +22x +9x   -10x +9x       @@ -523,7 +523,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html index 57503f0ce62..be2df8a9d50 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html @@ -180,18 +180,18 @@

All files / packag       -4829x +5018x     -4829x +5018x 1x   -4829x +5018x   -4829x +5018x     -4829x +5018x 13x 13x 2x @@ -208,11 +208,11 @@

All files / packag       -4816x +5005x       -4816x +5005x       @@ -220,11 +220,11 @@

All files / packag       -4816x +5005x     -4829x -4817x +5018x +5006x       @@ -233,7 +233,7 @@

All files / packag       -4829x +5018x 5x     @@ -346,7 +346,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/focus.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/focus.ts.html index 148d58aaddd..f6a76cb7f36 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/focus.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/focus.ts.html @@ -109,8 +109,8 @@

All files / packag     1x -327x -327x +452x +452x       @@ -121,12 +121,12 @@

All files / packag       -185x +193x       -184x -184x +192x +192x       @@ -135,11 +135,11 @@

All files / packag       -327x +452x     -327x -3x +452x +2x       @@ -193,7 +193,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/getContent.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/getContent.ts.html index 8f391765495..c0b423279e8 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/getContent.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/getContent.ts.html @@ -180,33 +180,33 @@

All files / packag       -141x -141x -141x +205x +205x +205x       -141x +205x   -141x +205x 1x -140x +204x     -140x -140x +204x +204x   -140x -140x +204x +204x             -140x +204x   -140x +204x       @@ -216,8 +216,8 @@

All files / packag       -140x -118x +204x +184x       @@ -226,28 +226,28 @@

All files / packag       -118x -22x +184x +20x   3x   -19x +17x       -141x +205x         -140x +204x 2x 2x   -138x +202x     -140x +204x    

import {
     ColorTransformDirection,
@@ -352,7 +352,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html index ed4d2481f40..1dc9bbe398f 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html @@ -382,7 +382,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html index 4f71727a122..f08a6c8e694 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html @@ -115,9 +115,9 @@

All files / packag       -1093x +1118x   -1093x +1118x       @@ -128,21 +128,21 @@

All files / packag       -1093x -974x -974x -974x -974x -966x +1118x +1014x +1014x +1014x +1014x +1013x         -1093x -121x +1118x +104x     -1093x +1118x      

import { contains, createRange } from 'roosterjs-editor-dom';
@@ -196,7 +196,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html index 5ea7686a77a..2af7bbfc922 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html @@ -177,8 +177,8 @@

All files / packag     1x -5776x -5776x +6231x +6231x   3x 3x @@ -228,25 +228,25 @@

All files / packag 1x     -5773x -741x +6228x +1032x 92x     -649x +940x 32x     -617x -617x -617x -617x -617x +908x +908x +908x +908x +908x         -5032x +5196x       @@ -257,7 +257,7 @@

All files / packag       -5623x +6104x       @@ -265,7 +265,7 @@

All files / packag       -5625x +6106x    

import { contains, createRange, findClosestElementAncestor } from 'roosterjs-editor-dom';
 import {
@@ -379,7 +379,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html index 9cbeb928e43..c1fff0fdb32 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html @@ -343,7 +343,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html index e93fb87300d..86d4ccd9681 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html @@ -82,8 +82,8 @@

All files / packag     1x -7830x -7830x +8882x +8882x       @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/index.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/index.html index 54f2cff61b7..4bde6a7e1cf 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/index.html @@ -23,30 +23,30 @@

All files packages/roosterjs-editor-cor
- 95.04% + 96.28% Statements - 690/726 + 699/726
- 86.92% + 87.6% Branches - 638/734 + 643/734
- 93.88% + 94.9% Functions - 92/98 + 93/98
- 95.03% + 96.35% Lines - 650/684 + 659/684
@@ -254,17 +254,17 @@

All files packages/roosterjs-editor-cor

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.62%41/4294.44%51/54100%42/4296.3%52/54 100% 5/597.56%40/41100%41/41
import {
     BlockElement,
@@ -688,11 +688,11 @@ 

All files / packag   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); } @@ -746,15 +746,15 @@

All files / packag 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; }  

@@ -763,7 +763,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html index b4b4b27eba7..34c6bf13a8a 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html @@ -283,7 +283,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/select.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/select.ts.html index 6d8e6ec8d24..0784c4be798 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/select.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/select.ts.html @@ -23,16 +23,16 @@

All files / packag
- 97.62% + 100% Statements - 41/42 + 42/42
- 94.44% + 96.3% Branches - 51/54 + 52/54
@@ -44,9 +44,9 @@

All files / packag
- 97.56% + 100% Lines - 40/41 + 41/41
@@ -233,11 +233,11 @@

All files / packag     1x -5328x +5605x   -5328x -25x -5303x +5605x +21x +5584x 71x     @@ -245,7 +245,7 @@

All files / packag       -5232x +5513x 57x     @@ -253,7 +253,7 @@

All files / packag       -5175x +5456x       @@ -268,7 +268,7 @@

All files / packag       -5175x +5456x       @@ -277,8 +277,8 @@

All files / packag       -5328x -463x +5605x +561x   74x 73x @@ -298,18 +298,18 @@

All files / packag   57x   -332x -332x +430x +430x   -332x -332x +430x +428x   -  +2x   -332x +430x     -463x +561x       @@ -318,16 +318,16 @@

All files / packag       -4865x -4865x +5044x +5044x     -5328x +5605x       -5328x -5328x +5605x +5605x       @@ -348,15 +348,15 @@

All files / packag       -196x +277x   -196x +277x       -196x +277x   -196x +277x       @@ -454,10 +454,10 @@

All files / packag 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; } @@ -523,7 +523,7 @@

All files / packag

diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectImage.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectImage.ts.html index e89905c36ce..a936e3e44dc 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectImage.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectImage.ts.html @@ -155,11 +155,11 @@

All files / packag     1x -5432x +5708x   -5432x +5708x   -5432x +5708x 58x   58x @@ -177,7 +177,7 @@

All files / packag       -5432x +5708x     1x @@ -194,8 +194,8 @@

All files / packag     1x -5432x -5432x +5708x +5708x    

import addUniqueId from './utils/addUniqueId';
 import {
@@ -274,7 +274,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectRange.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectRange.ts.html index 38f8b982822..f182559dadc 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectRange.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectRange.ts.html @@ -156,20 +156,20 @@

All files / packag       -789x -785x +913x +909x   -785x -58x +909x +52x     -785x +909x     -643x +683x     -785x +909x   4x   @@ -183,9 +183,9 @@

All files / packag       -1929x +2049x   -643x +683x 1x 1x 1x @@ -286,7 +286,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectTable.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectTable.ts.html index eef80934464..798e745f720 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/selectTable.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/selectTable.ts.html @@ -373,9 +373,9 @@

All files / packag       -5446x +5722x   -5446x +5722x 81x 81x   @@ -403,7 +403,7 @@

All files / packag       -5365x +5641x       @@ -551,8 +551,8 @@

All files / packag     1x -5446x -5446x +5722x +5722x       @@ -585,7 +585,7 @@

All files / packag       -5446x +5722x 88x 88x 86x @@ -594,7 +594,7 @@

All files / packag       -5360x +5636x       @@ -886,7 +886,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/setContent.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/setContent.ts.html index 0f1c04eb26f..81c7ca73377 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/setContent.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/setContent.ts.html @@ -211,9 +211,9 @@

All files / packag       -5220x -5220x -395x +5485x +5485x +471x       @@ -222,24 +222,24 @@

All files / packag       -395x -395x -395x +471x +471x +471x         -395x +471x   -395x -395x -395x -395x +471x +471x +471x +471x     -5220x +5485x   -5220x +5485x 5x     @@ -252,8 +252,8 @@

All files / packag 5x     -5220x -388x +5485x +464x       @@ -265,20 +265,20 @@

All files / packag       -395x -105x -105x -105x -  -105x -  +471x 104x 104x -  -104x 104x +  104x   +103x +103x +  +103x +103x +103x +        @@ -430,7 +430,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html index 9927a5ac42f..3b2ce1de130 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html @@ -487,7 +487,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/transformColor.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/transformColor.ts.html index b02454c42ce..314e807c468 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/transformColor.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/transformColor.ts.html @@ -146,26 +146,26 @@

All files / packag       -9885x +10366x         -10032x -5016x -5016x -153x +10576x +5288x +5288x +215x         -527x +861x     -153x +215x     -5016x +5288x       @@ -173,16 +173,16 @@

All files / packag       -936x -8x +1485x +6x     -936x -783x -519x +1485x +1270x +855x     -783x +1270x       @@ -190,8 +190,8 @@

All files / packag       -791x -791x +1276x +1276x    

import { ColorTransformDirection, EditorCore, TransformColor } from 'roosterjs-editor-types';
 import type { CompatibleColorTransformDirection } from 'roosterjs-editor-types/lib/compatibleTypes';
@@ -268,7 +268,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html index 7551a49ae30..e4033a40fba 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html @@ -134,26 +134,26 @@

All files / packag       -11306x +12103x     -5693x +6749x   -11304x -124404x -101849x +12101x +133096x +108965x             -5693x +6749x 1x 1x     -5692x +6748x    

import {
     EditorCore,
@@ -211,7 +211,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html index b7024b851b1..5875f2df4f2 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html @@ -99,23 +99,23 @@

All files / pac   228x 228x -1x -1x +2x +2x           -56x -59x +57x +60x   -56x -56x +57x +57x 3x 3x     -56x +57x    

/**
  * Add an unique id to element and ensure that is unique
@@ -154,7 +154,7 @@ 

All files / pac diff --git a/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/index.html b/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/index.html index 3e47ecb0b42..d6d9703102d 100644 --- a/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/coreApi/utils/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html index e8f4913979e..eb531a9b4cd 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html @@ -384,16 +384,16 @@

All files / packag     1x -5000x -5000x +5199x +5199x             -5000x -5000x +5199x +5199x       @@ -409,9 +409,9 @@

All files / packag       -4813x -4813x -4813x +5004x +5004x +5004x 2x 2x 2x @@ -422,18 +422,18 @@

All files / packag     1x -4776x -4773x +4955x +4952x   -4776x -4776x +4955x +4955x           1x -4990x +5189x     4x @@ -510,7 +510,7 @@

All files / packag       -5000x +5199x 2x 2x 2x @@ -946,7 +946,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html index 3498b652b7f..4830f8c60a4 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html @@ -23,30 +23,30 @@

All files / packag
- 68.37% + 66.33% Statements - 67/98 + 65/98
- 44.08% + 42.11% Branches - 67/152 + 64/152
- 70.83% + 66.67% Functions - 17/24 + 16/24
- 67.02% + 64.89% Lines - 63/94 + 61/94
@@ -343,8 +343,8 @@

All files / packag     1x -5011x -5011x +5208x +5208x       @@ -352,8 +352,8 @@

All files / packag       -5011x -5011x +5208x +5208x       @@ -376,12 +376,12 @@

All files / packag       -4827x -4827x +5016x +5016x   -4827x +5016x   -4827x +5016x       @@ -414,33 +414,33 @@

All files / packag       -4827x +5016x       -4827x +5016x           -4827x +5016x     -4827x +5016x     -4827x -4827x -4827x +5016x +5016x +5016x           1x -4780x -4780x +4959x +4959x       @@ -450,22 +450,22 @@

All files / packag       -4780x -4780x -4780x -4780x -4780x -4780x +4959x +4959x +4959x +4959x +4959x +4959x           1x -5011x +5208x     -5011x +5208x       @@ -473,33 +473,33 @@

All files / packag       -5011x +5208x 1x 1x       -5011x -322x -322x +5208x +196x +196x   -322x +196x   -322x +196x   -322x +196x 1x     -322x +196x   -5011x +5208x           -5011x +5208x       @@ -509,25 +509,25 @@

All files / packag       -5011x -320x -320x +5208x +  +      -5011x +5208x             -19308x -19308x -16x +20064x +20064x +41x       -19308x +20064x       @@ -535,7 +535,7 @@

All files / packag       -5011x +5208x 2x     @@ -543,11 +543,11 @@

All files / packag       -5011x -14x +5208x +39x     -5011x +5208x       @@ -573,7 +573,7 @@

All files / packag 1x     -235x +229x    

import { arrayPush, Browser, isCharacterValue } from 'roosterjs-editor-dom';
 import {
@@ -768,9 +768,9 @@ 

All files / packag } };   - private cacheSelection = () => { - Eif (!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*/); } }; private onScroll = (e: Event) => { @@ -841,7 +841,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html index c80855776e3..6c26bf72430 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html @@ -170,7 +170,7 @@

All files / packag     1x -5009x +5206x       @@ -178,7 +178,7 @@

All files / packag       -5009x +5206x       @@ -195,21 +195,21 @@

All files / packag     1x -4825x +5014x           1x -4778x +4957x           1x -5009x +5206x       @@ -217,12 +217,12 @@

All files / packag     1x -11217x -11217x -11217x -11217x +12014x +12014x +12014x +12014x   -11217x +12014x 22x 22x   @@ -231,11 +231,11 @@

All files / packag 22x     -11195x -540x +11992x +713x     -11217x +12014x 9x 9x   @@ -355,7 +355,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html index 3823c0a2a4a..11ab3eb80c2 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html @@ -513,14 +513,14 @@

All files / packag     1x -5018x +5215x           -5018x -5018x +5215x +5215x       @@ -537,22 +537,22 @@

All files / packag     1x -4834x +5023x           1x -4787x -4787x +4966x +4966x           1x -5018x +5215x       @@ -560,7 +560,7 @@

All files / packag     1x -11226x +12023x   25x 25x @@ -573,17 +573,17 @@

All files / packag       -23x -23x +18x +18x   -548x -548x +721x +721x   -4818x -4818x +5007x +5007x   -118x -118x +184x +184x   3x 3x @@ -592,7 +592,7 @@

All files / packag 3x     -11226x +12023x 101x     @@ -607,7 +607,7 @@

All files / packag       -5018x +5215x       @@ -646,21 +646,21 @@

All files / packag     1x -23x +18x   -23x -3x +18x +2x     -23x -23x +18x +18x       -5366x -5366x +5728x +5728x   -5366x +5728x 12x 12x   @@ -681,7 +681,7 @@

All files / packag       -5366x +5728x     19x @@ -690,7 +690,7 @@

All files / packag       -5366x +5728x 52x   13x @@ -698,7 +698,7 @@

All files / packag 13x     -5366x +5728x       @@ -716,18 +716,18 @@

All files / packag       -118x -118x +184x +184x 2x   2x       -4x -4x -4x -4x +3x +3x +3x +3x 8x 6x   @@ -737,7 +737,7 @@

All files / packag       -4x +3x 2x     @@ -781,7 +781,7 @@

All files / packag     1x -5366x +5728x       @@ -1240,7 +1240,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html index 2dab2eb523f..3ec9e8d6062 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html @@ -182,7 +182,7 @@

All files / packag     1x -5008x +5205x       @@ -196,20 +196,20 @@

All files / packag     1x -4824x +5013x           1x -4777x -4777x +4956x +4956x     1x -11271x -11271x +12068x +12068x     8x @@ -382,7 +382,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html index dcdbd16bde2..ac60d7fafde 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html @@ -23,30 +23,30 @@

All files / packag
- 91.43% + 94.29% Statements - 64/70 + 66/70
- 80% + 83.33% Branches - 48/60 + 50/60
- 86.67% + 93.33% Functions - 13/15 + 14/15
- 91.04% + 94.03% Lines - 61/67 + 63/67
@@ -333,11 +333,11 @@

All files / packag     1x -5004x +5201x     -5004x -5004x +5201x +5201x       @@ -345,29 +345,29 @@

All files / packag       -5004x -5004x +5201x +5201x     -5004x -4997x -4817x -4817x -4817x +5201x +5194x +5006x +5006x +5006x   -4997x -4770x -4770x -4770x +5194x +4949x +4949x +4949x     -5004x +5201x     -9640x -4820x -4820x -4820x +10018x +5009x +5009x +5009x       @@ -375,7 +375,7 @@

All files / packag       -4820x +5009x       @@ -385,19 +385,19 @@

All files / packag       -5004x -5004x +5201x +5201x   -5004x -4783x -4756x +5201x +4974x +4941x       -4756x +4941x     -4783x +4974x       @@ -406,7 +406,7 @@

All files / packag       -5004x +5201x       @@ -433,31 +433,31 @@

All files / packag     1x -4820x +5009x     -4820x +5009x     -4820x +5009x     -4820x +5009x     -4820x +5009x     -4820x +5009x           -4773x -4773x +4952x +4952x   -4773x +4952x 13x   13x @@ -467,20 +467,20 @@

All files / packag 13x     -4773x -4770x -4770x -4770x +4952x +4949x +4949x +4949x     -4773x +4952x           1x -5002x +5199x       @@ -488,7 +488,7 @@

All files / packag     1x -11209x +12006x       @@ -498,11 +498,11 @@

All files / packag       -4820x -4820x +5009x +5009x   -  -  +10018x +10018x       @@ -521,15 +521,15 @@

All files / packag   const CONTENT_EDITABLE_ATTRIBUTE_NAME = 'contenteditable'; const COMMANDS: Record<string, string> = Browser.isFirefox - ? { + ? { /** * Disable these object resizing for firefox since other browsers don't have these behaviors */ [DocumentCommand.EnableObjectResizing]: (false as any) as string, [DocumentCommand.EnableInlineTableEditing]: (false as any) as string, } - : Browser.isIE - ? { + : Browser.isIE + ? { /** * Change the default paragraph separator to DIV. This is mainly for IE since its default setting is P */ @@ -724,10 +724,10 @@

All files / packag }   private adjustBrowserBehavior() { - getObjectKeys(COMMANDS).forEach(command => { + getObjectKeys(COMMANDS).forEach(command => { // Catch any possible exception since this should not block the initialization of editor - try { - this.editor?.getDocument().execCommand(command, false, COMMANDS[command]); + try { + this.editor?.getDocument().execCommand(command, false, COMMANDS[command]); } catch {} }); } @@ -739,7 +739,7 @@

All files / packag

diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html index 97de878f652..97dde65b0bc 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html @@ -135,11 +135,11 @@

All files / packag       -5004x -5003x -5003x -5003x -5003x +5201x +5200x +5200x +5200x +5200x       @@ -153,15 +153,15 @@

All files / packag     1x -4819x +5008x           1x -4773x -4773x +4952x +4952x       @@ -169,7 +169,7 @@

All files / packag     1x -11212x +12009x       @@ -183,13 +183,13 @@

All files / packag     1x -4798x +4977x 32x 32x       -5003x +5200x 25x 25x 25x @@ -277,7 +277,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html index bb9a70cca83..f6fdd2f1fcc 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html @@ -269,7 +269,7 @@

All files / packag     1x -5021x +5218x       @@ -285,7 +285,7 @@

All files / packag     1x -4837x +5026x       @@ -294,7 +294,7 @@

All files / packag     1x -4790x +4969x       @@ -304,17 +304,17 @@

All files / packag     1x -11234x +12031x     -5375x -5375x +5737x +5737x   -5375x +5737x     -23x -23x +18x +18x     29x @@ -327,8 +327,8 @@

All files / packag 18x     -117x -117x +183x +183x       @@ -341,14 +341,14 @@

All files / packag     1x -5433x -178x -178x -178x +5790x +183x +183x +183x   -178x +183x   -178x +183x 25x     @@ -368,13 +368,13 @@

All files / packag 1x     -178x -178x -184x +183x +183x +189x   -184x -255x -255x +189x +267x +267x   43x 20x @@ -387,24 +387,24 @@

All files / packag   43x   -173x +178x 8x 8x 8x 8x   -165x +170x   -173x +178x   -39x -39x +46x +46x       -184x -184x -184x +189x +189x +189x 11x 7x 2x @@ -413,14 +413,14 @@

All files / packag       -178x +183x       -117x -57x +183x +69x   -57x +69x       @@ -619,7 +619,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html index 912f722b2a1..a5a6629fc17 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html @@ -265,7 +265,7 @@

All files / packag   1x   -5008x +5205x       @@ -274,7 +274,7 @@

All files / packag       -5008x +5205x       @@ -293,22 +293,22 @@

All files / packag     1x -4824x +5013x           1x -4777x -4777x +4956x +4956x           1x -5008x +5205x       @@ -316,7 +316,7 @@

All files / packag     1x -11216x +12013x       @@ -334,8 +334,8 @@

All files / packag       -588x -588x +761x +761x       @@ -350,7 +350,7 @@

All files / packag       -588x +761x       @@ -367,14 +367,14 @@

All files / packag 17x     -588x +761x       1x -4794x -4794x -4794x +4973x +4973x +4973x     1x @@ -625,7 +625,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html index c0436085333..c989f6f1546 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html @@ -169,7 +169,7 @@

All files / packag     1x -4963x +5162x       @@ -183,14 +183,14 @@

All files / packag     1x -4779x +4970x           1x -4754x +4933x     1x @@ -209,10 +209,10 @@

All files / packag       -11087x +11902x     -11087x +11902x       @@ -358,7 +358,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html index 6046e54e11d..d69c48a58da 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html @@ -370,8 +370,8 @@

All files / packag     1x -5036x -5036x +5231x +5231x       @@ -379,7 +379,7 @@

All files / packag       -5036x +5231x       @@ -403,21 +403,21 @@

All files / packag     1x -4849x +5036x           1x -4798x +4975x           1x -5032x +5227x       @@ -425,7 +425,7 @@

All files / packag     1x -497x +594x       @@ -439,22 +439,22 @@

All files / packag   1x   -11258x +12047x       -11258x +12047x   -4819x -4819x +5008x +5008x     -4817x +5006x   -4819x +5008x   -49x -49x +41x +41x   7x 7x @@ -463,8 +463,8 @@

All files / packag 1x 1x   -542x -542x +715x +715x   1x 1x @@ -475,31 +475,31 @@

All files / packag       -49x -16x +41x +8x 1x 1x 1x 1x -15x -15x +7x +7x           -15x +7x           -12x +6x       -15x -15x +7x +7x   33x   @@ -553,7 +553,7 @@

All files / packag     1x -542x +715x       @@ -561,19 +561,19 @@

All files / packag       -540x +713x       1x -544x -544x -544x +717x +717x +717x     1x -7x -7x +4x +4x       @@ -581,21 +581,21 @@

All files / packag     1x -4854x -4854x +5037x +5037x   1x     -5029x +5224x   -5029x -9632x +5224x +10010x     -5226x -541x -14x +5509x +714x +11x       @@ -603,7 +603,7 @@

All files / packag       -5031x +5226x   1x   @@ -907,7 +907,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html index b589698f216..e66e512a42e 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html @@ -153,10 +153,10 @@

All files / packag       -5000x +5197x     -5000x +5197x       @@ -179,7 +179,7 @@

All files / packag     1x -5000x +5197x       @@ -262,7 +262,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/corePlugins/index.html b/coverage/packages/roosterjs-editor-core/lib/corePlugins/index.html index 8817275790c..b04fe8c46f5 100644 --- a/coverage/packages/roosterjs-editor-core/lib/corePlugins/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/corePlugins/index.html @@ -30,9 +30,9 @@

All files packages/roosterjs-editor-cor
- 69.37% + 69.25% Branches - 573/826 + 572/826
@@ -89,17 +89,17 @@

All files packages/roosterjs-editor-cor

DOMEventPlugin.ts -
+
+
68.37%67/9844.08%67/15270.83%17/2467.02%63/9466.33%65/9842.11%64/15266.67%16/2464.89%61/94
LifecyclePlugin.ts -
+
+
91.43%64/7080%48/6086.67%13/1591.04%61/6794.29%66/7083.33%50/6093.33%14/1594.03%63/67
import { createEditorCore } from './createEditorCore';
@@ -115,7 +115,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/EditorBase.ts.html b/coverage/packages/roosterjs-editor-core/lib/editor/EditorBase.ts.html index 3ae143566d9..07993efb55a 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/EditorBase.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/EditorBase.ts.html @@ -23,30 +23,30 @@

All files / packag

1x +1031 +10321x       @@ -1159,9 +1160,10 @@

All files / packag       +  1x   -4818x +5007x       @@ -1170,24 +1172,24 @@

All files / packag       -4818x +5007x           -4818x +5007x 2x       -4816x +5005x     -53202x +55275x     -4816x +5005x       @@ -1196,14 +1198,14 @@

All files / packag     1x -4769x -4769x -52604x +4948x +4948x +54573x     -4769x +4948x   -4769x +4948x       @@ -1229,8 +1231,8 @@

All files / packag     1x -31x -31x +43x +43x       @@ -1240,9 +1242,9 @@

All files / packag   1x   -4x -4x -4x +5x +5x +5x       @@ -1283,39 +1285,39 @@

All files / packag     1x -15x +39x     1x -466x +487x     -466x +487x     1x   -21545x +23020x           -10807x -10807x -10807x -10807x +11558x +11558x +11558x +11558x   -10807x -10807x -63x -63x +11558x +11558x +90x +90x     -10744x +11468x     -63x +90x       @@ -1352,10 +1354,10 @@

All files / packag     1x -250x +380x   -133x -133x +197x +197x       @@ -1363,9 +1365,9 @@

All files / packag       -5508x -5162x -5162x +5849x +5427x +5427x       @@ -1378,25 +1380,25 @@

All files / packag     1x -3x -3x -3x +9x +9x +9x       -3x +9x         -3x +9x       -3x -5x +9x +11x   -3x +9x       @@ -1419,29 +1421,29 @@

All files / packag       -6x +5x   -10x -10x -10x +8x +8x +8x   -6x -6x +5x +5x       -6x +5x   -6x +5x             -6x -6x -6x +5x +5x +5x       @@ -1449,10 +1451,10 @@

All files / packag       -6x -6x -6x -6x +5x +5x +5x +5x       @@ -1468,9 +1470,9 @@

All files / packag       -738x -529x -529x +472x +236x +236x       @@ -1481,8 +1483,8 @@

All files / packag     1x -550x -550x +723x +723x       @@ -1508,8 +1510,8 @@

All files / packag     1x -287x -287x +399x +399x     1x @@ -1518,18 +1520,18 @@

All files / packag       -5304x +5585x   -5304x +5585x           1x -237x -237x -220x +234x +234x +217x     17x @@ -1552,20 +1554,20 @@

All files / packag       -529x +609x         -529x +609x   -529x +609x   -529x -108x -108x +609x +105x +105x   -529x +609x       @@ -1580,23 +1582,23 @@

All files / packag     1x -  +6x           1x -192x +232x   -96x -96x -96x -96x -77x +116x +116x +116x +116x +97x   -96x 116x +136x       @@ -1608,9 +1610,9 @@

All files / packag       -9670x -9670x -9670x +10048x +10048x +10048x       @@ -1625,16 +1627,16 @@

All files / packag 1x     -9825x +10181x   -9713x -9713x +10073x +10073x       -9713x +10073x   -9713x +10073x       @@ -1690,8 +1692,8 @@

All files / packag       -5054x -5054x +5354x +5354x       @@ -1704,8 +1706,8 @@

All files / packag     1x -4816x -4816x +5005x +5005x       @@ -1720,7 +1722,7 @@

All files / packag     1x -10222x +20658x       @@ -1739,8 +1741,8 @@

All files / packag     1x -67x -67x +55x +55x       @@ -1751,7 +1753,7 @@

All files / packag     1x -11219x +12016x       @@ -1759,7 +1761,7 @@

All files / packag     1x -16x +34x       @@ -1775,8 +1777,8 @@

All files / packag     1x -22x -22x +93x +93x       @@ -1801,10 +1803,10 @@

All files / packag       -54x -54x -53x -53x +58x +58x +57x +57x       @@ -1886,11 +1888,11 @@

All files / packag     1x -137x -137x -223x -223x -223x +131x +131x +214x +214x +214x       @@ -1899,13 +1901,13 @@

All files / packag     1x -72x -72x -110x -110x -110x -110x -110x +68x +68x +104x +104x +104x +104x +104x 46x     @@ -1940,8 +1942,8 @@

All files / packag     1x -4816x -4816x +5005x +5005x       @@ -1982,29 +1984,29 @@

All files / packag     1x -77x +95x             -1x -1x -1x -    +1x   +2x       +1x +1x           1x -4836x +5025x       @@ -2042,7 +2044,7 @@

All files / packag 1x     -11128x +11925x       @@ -2052,7 +2054,7 @@

All files / packag     1x -40x +34x       @@ -2109,10 +2111,10 @@

All files / packag     1x -101101x +116490x     -101101x +116490x       @@ -2178,6 +2180,7 @@

All files / packag } from 'roosterjs-editor-dom'; import type { CompatibleChangeSource, + CompatibleColorTransformDirection, CompatibleContentPosition, CompatibleExperimentalFeatures, CompatibleGetContentMode, @@ -2498,7 +2501,7 @@

All files / packag * 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); } @@ -2609,8 +2612,8 @@

All files / packag * @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); }   /** @@ -3018,16 +3021,16 @@

All files / packag /** * Transform the given node and all its child nodes to dark mode color if editor is in dark mode * @param node The node to transform + * @param direction The transform direction. @default ColorTransformDirection.LightToDark */ - public transformToDarkColor(node: Node) { + public transformToDarkColor( + node: Node, + Edirection: + | ColorTransformDirection + | CompatibleColorTransformDirection = ColorTransformDirection.LightToDark + ) { const core = this.getCore(); - core.api.transformColor( - core, - node, - true /*includeSelf*/, - null /*callback*/, - ColorTransformDirection.LightToDark - ); + core.api.transformColor(core, node, true /*includeSelf*/, null /*callback*/, direction); }   /** @@ -3154,7 +3157,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/createEditorCore.ts.html b/coverage/packages/roosterjs-editor-core/lib/editor/createEditorCore.ts.html index f4e752abee7..00fe1d2b839 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/createEditorCore.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/createEditorCore.ts.html @@ -127,23 +127,23 @@

All files / packag     1x -4816x -4816x +5005x +5005x   -4816x -62608x -4816x -4791x +5005x +65065x +5005x +4976x     -57792x +60060x       -4816x -4816x +5005x +5005x   -4816x +5005x   33x   @@ -154,16 +154,16 @@

All files / packag       -4816x +5005x             -58018x +60280x   -390x +462x       @@ -171,7 +171,7 @@

All files / packag       -4816x +5005x    

import createCorePlugins, { getPluginState } from '../corePlugins/createCorePlugins';
 import DarkColorHandlerImpl from './DarkColorHandlerImpl';
@@ -238,7 +238,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/editor/index.html b/coverage/packages/roosterjs-editor-core/lib/editor/index.html index 714e42f2f8d..d757b142897 100644 --- a/coverage/packages/roosterjs-editor-core/lib/editor/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/editor/index.html @@ -23,30 +23,30 @@

All files packages/roosterjs-editor-cor
- 85.46% + 85.75% Statements - 341/399 + 343/400
- 74.84% + 74.36% Branches - 232/310 + 232/312
- 82% + 83% Functions - 82/100 + 83/100
- 84.7% + 85% Lines - 321/379 + 323/380
@@ -104,17 +104,17 @@

All files packages/roosterjs-editor-cor

EditorBase.ts -
+
+
80.94%242/29968.64%162/23678.48%62/7980.07%229/28681.33%244/30068.07%162/23879.75%63/7980.49%231/287
import { ExperimentalFeatures } from 'roosterjs-editor-types';
 import type { CompatibleExperimentalFeatures } from 'roosterjs-editor-types/lib/compatibleTypes';
@@ -109,7 +109,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-core/lib/index.html b/coverage/packages/roosterjs-editor-core/lib/index.html index 3019efbd551..b6083616c69 100644 --- a/coverage/packages/roosterjs-editor-core/lib/index.html +++ b/coverage/packages/roosterjs-editor-core/lib/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-core/l diff --git a/coverage/packages/roosterjs-editor-core/lib/index.ts.html b/coverage/packages/roosterjs-editor-core/lib/index.ts.html index 2200c341a84..8641d66756b 100644 --- a/coverage/packages/roosterjs-editor-core/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-core/lib/index.ts.html @@ -63,10 +63,10 @@

All files / packages/ 4 5 6

  -4744x +4931x 2x -95x -48x +91x +46x  
// Classes
 export { default as Editor } from './editor/Editor';
 export { EditorBase } from './editor/EditorBase';
@@ -79,7 +79,7 @@ 

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html index cdd0a83e118..2cc2a7c5d0c 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html @@ -134,7 +134,7 @@

All files / packag     1x -930x +1238x       @@ -142,7 +142,7 @@

All files / packag     1x -36x +37x       @@ -150,7 +150,7 @@

All files / packag     1x -652x +830x       @@ -158,7 +158,7 @@

All files / packag     1x -556x +764x       @@ -166,7 +166,7 @@

All files / packag   1x   -229x +295x       @@ -174,14 +174,14 @@

All files / packag   1x   -208x +288x           1x -566x +983x       @@ -265,7 +265,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html index 190d2684923..e31c9c8c914 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html @@ -190,14 +190,14 @@

All files / packag     1x -826x +864x   1x -1651x -1651x -2187x +1997x +1997x +2694x   -1651x +1997x       @@ -233,21 +233,21 @@

All files / packag     1x -224x +255x           1x -236x +276x           1x -50x +80x       @@ -257,14 +257,14 @@

All files / packag     1x -57x +80x           1x -1093x +1136x       @@ -397,7 +397,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html index 1f2c4bcc743..f6835709b95 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html @@ -235,25 +235,25 @@

All files / packag       -6966x -5357x +7574x +5619x           -1609x -1609x +1955x +1955x   -1609x -84x +1955x +126x       -1525x -1525x +1829x +1829x   -1525x +1829x       @@ -262,39 +262,39 @@

All files / packag       -1525x +1829x   -1525x +1829x       -1525x -1525x +1829x +1829x   -1525x +1829x   1x     -1524x -1524x -1524x +1828x +1883x +1883x   -1408x +1691x   -729x +995x   -1408x -116x +1691x +192x   -116x +192x             -1524x +1828x       @@ -309,33 +309,33 @@

All files / packag       -3050x +3658x   -3050x -97x +3658x +104x     -2953x -4032x -4032x -5235x -5235x -2810x +3554x +4920x +4920x +6466x +6466x +3372x       -1222x -2455x -59x -2396x -84x +1548x +3044x +87x +2957x +95x     -2312x -2312x +2862x +2862x     -1079x +1366x       @@ -487,7 +487,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html index e51c4c6e526..89232d3dd9c 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html @@ -89,11 +89,11 @@

All files / packag       -4907x -4907x -5004x +5096x +5096x +5193x   -4907x +5096x    

import getBlockElementAtNode from './getBlockElementAtNode';
 import { BlockElement } from 'roosterjs-editor-types';
@@ -121,7 +121,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/blockElements/index.html b/coverage/packages/roosterjs-editor-dom/lib/blockElements/index.html index 36bd854dce4..04fb1dc00a7 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/blockElements/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/blockElements/index.html @@ -140,7 +140,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html index 24d354607f9..bb181a8f48b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html @@ -229,7 +229,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html index 9a0fc000865..6e00c93aa2c 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html @@ -478,7 +478,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html index efdaacea25f..cbdd495e3e5 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html @@ -271,7 +271,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html index ea1116d3a5f..0997e629e3a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html @@ -95,14 +95,14 @@

All files / packag       -48x +44x 11x -37x +33x   -37x -3x +33x +2x   -34x +31x      

import { PasteType } from 'roosterjs-editor-types';
@@ -136,7 +136,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html index 41e09562179..4c23832c701 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html @@ -97,7 +97,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html index be0e1d575b7..02aff34e3b3 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html @@ -268,7 +268,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/index.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/index.html index b02a80f7911..8a44c3918f0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/index.html @@ -200,7 +200,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html index 3de5b4b74e0..2799fdad79e 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html @@ -150,62 +150,62 @@

All files / packag       -96x -48x -48x -36x -36x -30x -30x +88x +44x +44x +31x +31x +14x +14x   -36x -38x -38x +31x +20x +20x     -36x -36x +31x +31x   -36x -126x -126x -64x -64x -36x +31x +94x +94x +46x +46x +18x     -90x -90x -74x +76x +76x +64x         -36x -12x -12x +31x +8x +8x     -36x -36x +31x +31x   -36x -13x -13x -13x -13x +31x +9x +9x +9x +9x           -13x +9x           -49x +40x    

import getTagOfNode from '../utils/getTagOfNode';
 import toArray from '../jsUtils/toArray';
@@ -289,7 +289,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html b/coverage/packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html index 135b1d88150..f507434f2ab 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html @@ -88,10 +88,10 @@

All files / packag       -48x -48x -48x -48x +44x +44x +44x +44x    

import getInheritableStyles from '../htmlSanitizer/getInheritableStyles';
 import HtmlSanitizer from '../htmlSanitizer/HtmlSanitizer';
@@ -118,7 +118,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html index 73ec566f88b..526a7ebf937 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html @@ -133,8 +133,8 @@

All files / packag       -447x -447x +452x +452x       @@ -150,7 +150,7 @@

All files / packag     1x -383x +388x       @@ -166,7 +166,7 @@

All files / packag     1x -172x +178x   1x  

import contains from '../utils/contains';
@@ -232,7 +232,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html index a128037d6cb..105bc2b853a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html @@ -311,15 +311,15 @@

All files / packag     1x -728x -728x +852x +852x             -728x +852x       @@ -332,7 +332,7 @@

All files / packag       -447x +452x       @@ -346,7 +346,7 @@

All files / packag       -133x +224x       @@ -360,10 +360,10 @@

All files / packag 1x     -290x +346x     -148x +176x       @@ -371,18 +371,18 @@

All files / packag   1x   -382x -168x +475x +200x     -382x +475x           1x -216x +277x       @@ -393,35 +393,35 @@

All files / packag     1x -256x +317x   -256x +317x       -256x +317x           -256x +317x             -256x +317x         -100x -100x +133x +133x     -156x +184x       @@ -429,47 +429,47 @@

All files / packag   1x   -1671x -560x +1913x +652x     -1671x +1913x           1x -407x +528x           1x -320x +343x     1x -727x +871x     -727x -11x +871x +13x     -716x -98x +858x +102x         -98x +102x       -618x -618x +756x +756x       @@ -482,12 +482,12 @@

All files / packag       -716x -282x -282x +858x +354x +354x     -434x +504x   1x   @@ -496,22 +496,22 @@

All files / packag       -618x +756x     -618x +756x   -26x +30x   -26x -14x +30x +16x         -604x -604x -604x +740x +740x +740x    

import BodyScoper from './BodyScoper';
 import EmptyInlineElement from '../inlineElements/EmptyInlineElement';
@@ -748,7 +748,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html index 396f0724aa4..bc8ea84debc 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html @@ -311,35 +311,35 @@

All files / packag   1x   -143x +159x     -143x +159x     -143x +159x     -143x +159x     -143x +159x     -143x +159x     -143x +159x     -143x +159x             -143x +159x       @@ -359,11 +359,11 @@

All files / packag     1x -24x -24x +36x +36x     -24x +36x       @@ -371,14 +371,14 @@

All files / packag     1x -20x -20x +32x +32x           -20x +32x       @@ -389,12 +389,12 @@

All files / packag       +16x +16x 12x -12x -8x     -12x +16x       @@ -474,52 +474,52 @@

All files / packag     1x -165x +181x     -165x +181x 3x     -162x -162x -197x +178x +178x +220x   -197x -87x +220x +94x     -87x +94x     -87x -87x +94x +94x 12x       -87x -87x +94x +94x     -87x +94x 52x     -110x -110x -110x +126x +126x +126x   -104x +120x           -110x +126x     -35x +42x     1x @@ -763,7 +763,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html index 38ce5064459..e4926d6bbb0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html @@ -207,16 +207,16 @@

All files / packag       -161x +189x   -161x +189x   -161x +189x 19x     -161x -161x +189x +189x       @@ -233,8 +233,8 @@

All files / packag     1x -150x -139x +178x +163x       @@ -244,14 +244,14 @@

All files / packag       -134x -134x +158x +158x           -11x +15x       @@ -269,7 +269,7 @@

All files / packag     1x -96x +103x       @@ -415,7 +415,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html index 6c7360eee00..8c649e36111 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html @@ -198,41 +198,41 @@

All files / packag 1x     -149x -149x +240x +240x             -149x -149x -149x +240x +240x +240x           1x -233x -111x +307x +143x     -233x +307x           1x -35x -35x +94x +94x         -35x +94x       @@ -240,21 +240,21 @@

All files / packag     1x -126x +168x     -126x -126x -126x +168x +168x +168x 8x   -118x +160x           -118x +160x       @@ -262,7 +262,7 @@

All files / packag       -126x +168x       @@ -271,32 +271,32 @@

All files / packag     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 / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/index.html b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/index.html index 3b1679ca2a7..878f29cf671 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/contentTraverser/index.html @@ -155,7 +155,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html b/coverage/packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html index 90809147b14..8d0c462ff48 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html @@ -274,7 +274,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html index f9f56838e2a..3d9a98052cf 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html @@ -93,10 +93,10 @@

All files / packag     1x -707x +589x 1x   -706x +588x       @@ -105,7 +105,7 @@

All files / packag 36x     -670x +552x    

import safeInstanceOf from '../utils/safeInstanceOf';
 import { DelimiterClasses } from 'roosterjs-editor-types';
@@ -139,7 +139,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/delimiter/index.html b/coverage/packages/roosterjs-editor-dom/lib/delimiter/index.html index c9ab55257f8..f559960f8e8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/delimiter/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/delimiter/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html b/coverage/packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html index 081d9436a27..cec882d2a95 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html @@ -23,30 +23,30 @@

All files / packag
- 70.08% + 71.65% Statements - 89/127 + 91/127
- 45.83% + 55% Branches - 55/120 + 66/120
- 83.33% + 91.67% Functions - 10/12 + 11/12
- 70.08% + 71.65% Lines - 89/127 + 91/127
@@ -468,21 +468,21 @@

All files / packag       -20x +36x   -20x +36x     -18x +28x           -  +2x     -18x +28x       @@ -490,7 +490,7 @@

All files / packag       -18x +28x       @@ -521,7 +521,7 @@

All files / packag       -20x +36x       @@ -533,30 +533,30 @@

All files / packag       -20x -20x +36x +36x   -20x -6x -6x -8x +36x +11x +11x +12x   -6x +11x     -20x +36x   -20x -20x -20x -20x +36x +36x +36x +36x   -20x +36x         -20x +36x       @@ -581,7 +581,7 @@

All files / packag       -20x +36x       @@ -592,7 +592,7 @@

All files / packag       -20x +36x       @@ -605,7 +605,7 @@

All files / packag       -20x +36x       @@ -615,7 +615,7 @@

All files / packag       -20x +36x       @@ -628,13 +628,13 @@

All files / packag       -20x +36x           -20x +36x       @@ -647,17 +647,17 @@

All files / packag       -20x -20x -20x -20x -20x +36x +32x +32x +32x +32x 1x -19x -  +31x +2x     -20x +36x       @@ -669,17 +669,17 @@

All files / packag       -21x -1x -1x +38x +2x +2x           -1x -1x -1x +2x +2x +2x       @@ -688,13 +688,13 @@

All files / packag       -1x -1x -1x +2x +2x +2x       -20x +36x       @@ -706,7 +706,7 @@

All files / packag       -20x +36x       @@ -742,7 +742,7 @@

All files / packag       -20x +36x       @@ -760,10 +760,10 @@

All files / packag       -20x -140x +36x +252x   -20x +36x       @@ -835,10 +835,10 @@

All files / packag 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; @@ -848,8 +848,8 @@

All files / packag // 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]') ) { let normalizedPosition = position.normalize(); let parentNode = normalizedPosition.node.parentNode!; @@ -1003,14 +1003,14 @@

All files / packag 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(); if (inlineElementBefore instanceof LinkInlineElement) { position = new Position(inlineElementBefore.getContainerNode(), PositionType.After); - } else Iif (inlineElementAfter instanceof LinkInlineElement) { - position = new Position(inlineElementAfter.getContainerNode(), PositionType.Before); + } else if (inlineElementAfter instanceof LinkInlineElement) { + position = new Position(inlineElementAfter.getContainerNode(), PositionType.Before); } } return position; @@ -1132,7 +1132,7 @@

All files / packag

diff --git a/coverage/packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html b/coverage/packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html index efe7ffbf3fd..dc0d6c19514 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html @@ -475,7 +475,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/edit/getTextContent.ts.html b/coverage/packages/roosterjs-editor-dom/lib/edit/getTextContent.ts.html index 96cb48408d6..20f800534c4 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/edit/getTextContent.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/edit/getTextContent.ts.html @@ -121,7 +121,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/edit/index.html b/coverage/packages/roosterjs-editor-dom/lib/edit/index.html index b9a74aa0a94..c5faa19e43e 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/edit/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/edit/index.html @@ -23,30 +23,30 @@

All files packages/roosterjs-editor-dom
- 72.77% + 73.82% Statements - 139/191 + 141/191
- 54.17% + 60.71% Branches - 91/168 + 102/168
- 84.21% + 89.47% Functions - 16/19 + 17/19
- 72.19% + 73.26% Lines - 135/187 + 137/187
@@ -74,17 +74,17 @@

All files packages/roosterjs-editor-dom

adjustInsertPosition.ts -
+
+
70.08%89/12745.83%55/12083.33%10/1270.08%89/12771.65%91/12755%66/12091.67%11/1271.65%91/127
import { EntityClasses } from 'roosterjs-editor-types';
  
@@ -100,7 +100,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/entity/index.html b/coverage/packages/roosterjs-editor-dom/lib/entity/index.html index 4e94e13f993..e5b246a9df9 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/entity/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/entity/index.html @@ -140,7 +140,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html b/coverage/packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html index 56f036d315d..3fce37a19b4 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html @@ -97,15 +97,15 @@

All files / packag       -881x +965x     -881x -373x -373x +965x +377x +377x     -881x +965x    

import { PluginEvent } from 'roosterjs-editor-types';
  
@@ -139,7 +139,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html b/coverage/packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html index 7286a9db2f5..aedbc718be0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html @@ -112,7 +112,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/index.html b/coverage/packages/roosterjs-editor-dom/lib/event/index.html index 6854d2ae1a8..6ed13ee8a1f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/index.html @@ -155,7 +155,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html b/coverage/packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html index 21e102b0e6c..eb74153fdd3 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html @@ -100,7 +100,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html b/coverage/packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html index 62175870ff5..c63c89217ea 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html @@ -75,7 +75,7 @@

All files / packag   1x   -29x +25x       @@ -83,7 +83,7 @@

All files / packag     1x -29x +25x    

import { Browser } from '../utils/Browser';
  
@@ -106,7 +106,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/event/isModifierKey.ts.html b/coverage/packages/roosterjs-editor-dom/lib/event/isModifierKey.ts.html index 31d7a7b2ea2..69a702a59e6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/event/isModifierKey.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/event/isModifierKey.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html index 836e0f42945..6facb91fe89 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html @@ -479,20 +479,20 @@

All files / packag       -232x -232x -232x -232x -232x -232x -232x +228x +228x +228x +228x +228x +228x +228x     -232x -232x -232x -232x -232x +228x +228x +228x +228x +228x       @@ -526,11 +526,11 @@

All files / packag     1x -254x +250x     -254x -254x +250x +250x       @@ -538,37 +538,37 @@

All files / packag     1x -242x -242x +238x +238x   -15x +11x 8x -23x -242x -71x +19x +238x +45x   -71x -71x -71x +45x +45x +45x       -32x -32x +18x +18x 2x   -30x +16x       -30x -22x +16x +16x           -242x +238x 8x 8x   @@ -576,105 +576,105 @@

All files / packag     1x -1212x -1212x -1212x -1212x -1212x +1141x +1141x +1141x +1141x +1141x   -1212x +1141x   -1212x -600x -600x -600x +1141x +573x +573x +573x   -600x -13x +573x +5x     -600x -42x -558x +573x +34x +539x   -558x -523x +539x +504x 35x 3x 3x   -612x -526x -526x +568x +486x +486x         -86x -78x +82x +74x 8x 8x         -1212x -54x -1158x +1141x +48x +1093x       17x     -1141x -644x -644x -644x -566x -566x -566x +1076x +613x +613x +613x +539x +539x +539x     -644x -644x -644x -958x -958x +613x +613x +613x +891x +891x         1x -566x +539x       -566x -41x -71x +539x +32x +53x         -566x -566x -566x -962x -962x -962x -962x +539x +539x +539x +890x +890x +890x +890x   -962x -112x +890x +102x     -962x +890x         -962x +890x       @@ -682,55 +682,55 @@

All files / packag       -962x -232x +890x +209x     -962x -582x +890x +518x   -380x +372x       -566x +539x     1x -566x -425x -425x -425x -425x +539x +385x +385x +385x +385x   -425x +385x           -425x -67x +385x +57x     -425x +385x         -123x +107x   -302x +278x         -67x -67x -67x +57x +57x +57x   -67x -195x +57x +185x       @@ -738,7 +738,7 @@

All files / packag       -67x +57x   1x  

import changeElementTag from '../utils/changeElementTag';
@@ -1090,7 +1090,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html index 221577e1743..37ab208d1cd 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html @@ -93,8 +93,8 @@

All files / packag       -370x -370x +346x +346x       @@ -133,7 +133,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html index 9a9c1069909..1d47de09eb6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html @@ -97,7 +97,7 @@

All files / packag       -1826x +1775x       @@ -123,7 +123,7 @@

All files / packag       -1826x +1775x    

import getObjectKeys from '../jsUtils/getObjectKeys';
  
@@ -166,7 +166,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html index 4655797ad73..976f33463c6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html @@ -83,7 +83,7 @@

All files / packag     1x -75x +71x       @@ -124,7 +124,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html index bcbae4152de..6f140371910 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html @@ -518,23 +518,23 @@

All files / packag 1x     -232x -232x -232x +228x +228x +228x 2x 2x       -232x +228x           1x -232x -15778x +228x +15506x       @@ -544,17 +544,17 @@

All files / packag 1x     -232x -232x +228x +228x           1x -232x -232x -77x +228x +228x +73x 1x 1x 1x @@ -564,7 +564,7 @@

All files / packag       -232x +228x       @@ -573,10 +573,10 @@

All files / packag 1x     -232x -232x -232x -232x +228x +228x +228x +228x       @@ -584,12 +584,12 @@

All files / packag       -39x -39x +34x +34x       -15778x +15506x    

import getObjectKeys from '../jsUtils/getObjectKeys';
 import { cloneObject } from './cloneObject';
@@ -865,7 +865,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html index ffaaa1a0121..a23bd9a8434 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html @@ -99,13 +99,13 @@

All files / packag     1x -262x -262x -262x -262x -7074x +257x +257x +257x +257x +6939x   -262x +257x    

import { StringMap } from 'roosterjs-editor-types';
  
@@ -139,7 +139,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html index d7f3540823a..171de222b14 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html @@ -154,8 +154,8 @@

All files / packag       -575x -575x +548x +548x    

import getTagOfNode from '../utils/getTagOfNode';
 import { PredefinedCssMap, StringMap } from 'roosterjs-editor-types';
@@ -214,7 +214,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/index.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/index.html index 7085d1d7130..2f49331d2cc 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/index.html @@ -200,7 +200,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html index 3d8294eb50b..73c1a8c6261 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html @@ -91,7 +91,7 @@

All files / packag     1x -898x +828x    

const VARIABLE_REGEX = /^\s*var\(\s*[a-zA-Z0-9-_]+\s*(,\s*(.*))?\)\s*$/;
 const VARIABLE_PREFIX = 'var(';
@@ -118,7 +118,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/index.html b/coverage/packages/roosterjs-editor-dom/lib/index.html index fbe856c3f32..9bd1cb1442b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/index.html @@ -37,9 +37,9 @@

All files packages/roosterjs-editor-dom/li
- 78.79% + 80.3% Functions - 104/132 + 106/132
@@ -81,8 +81,8 @@

All files packages/roosterjs-editor-dom/li

242/242 100% 0/078.79%104/13280.3%106/132 100% 130/130
5007x -4836x +1575225x +5025x   -194x -124x +265x +128x   1x 32x 1x 1x   -686x +568x   1x 2x 4x -4x -1x +10x +9x 1x   3x @@ -238,43 +238,43 @@

All files / packages/ 1x 4x 12x -49x -49x -49x +45x +45x +45x   -19633x -4818x +20388x +5007x 20x 30x -11562x -6004x +13188x +6294x 1x -172x +223x 1x 2x 101x     -8056x -230x +8275x +374x 39x -27x +36x 71x -10810x -17x -246x -78x -33x -190x +11580x +21x +317x +113x +54x +222x 4x 12x -12452x +13292x 7x 1x -9698x -527x -5100x -314x +10115x +414x +5289x +290x 34x 1x 116x @@ -284,77 +284,77 @@

All files / packages/   3x 1x -15x -94x -1x +26x +114x +4x 1x 2x 2x   -79x -45x -38x -51x +99x +65x +58x +64x 1x 1x   -10894x -808x +11628x +958x 1x -2x -5163x +8x +5472x 4x 1x 1x 5x -396x +472x   -796x +921x   -5227x -9633x +5510x +10011x 1x 1x -542x +715x   1x 1x 1x   -5030x -15x +5225x +12x   48x 1x -78x -371x +74x +347x   -139x -5711x -5584x +140x +5981x +6011x 1x 1x 5x -405x +481x     -778x +906x 8x 5x 55x -30x +26x   -180x +164x 6x 743x 146x -10879x +11431x   -21x +37x 1x 1x   -617x +610x 1x 7x 4x @@ -362,13 +362,13 @@

All files / packages/ 1x 6x   -97x +76x   -4912x -37989x -838x +5092x +39105x +1139x   -39x +34x  

export { default as getBlockElementAtNode } from './blockElements/getBlockElementAtNode';
 export { default as getFirstLastBlockElement } from './blockElements/getFirstLastBlockElement';
  
@@ -386,7 +386,7 @@ 

All files / packages/ 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'; @@ -442,7 +442,7 @@

All files / packages/ export { default as VListItem } from './list/VListItem'; export { default as createVListFromRegion } from './list/createVListFromRegion'; export { default as VListChain } from './list/VListChain'; -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'; @@ -532,7 +532,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html index e7d4f2e71b1..e5e987c7914 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html @@ -138,7 +138,7 @@

All files / packag     1x -111x +118x       @@ -165,7 +165,7 @@

All files / packag     1x -98x +102x       @@ -280,7 +280,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html index d5d78b8307e..56d3c1df9e2 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html @@ -76,7 +76,7 @@

All files / packag   1x   -4x +5x   1x  

import NodeInlineElement from './NodeInlineElement';
@@ -97,7 +97,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html index 7bed9df9dc4..61a365e5e04 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html @@ -76,7 +76,7 @@

All files / packag   1x   -14x +32x   1x  

import NodeInlineElement from './NodeInlineElement';
@@ -97,7 +97,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html index 6d43540577e..205248bc28b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html @@ -167,14 +167,14 @@

All files / packag     1x -792x +957x         1x   -169x +174x       @@ -185,7 +185,7 @@

All files / packag     1x -1776x +2039x       @@ -199,7 +199,7 @@

All files / packag 1x     -349x +554x       @@ -208,37 +208,37 @@

All files / packag 1x     -246x +450x           1x -93x +100x           1x -203x +287x           1x -129x -129x -129x +201x +201x +201x           1x -7x +117x   1x  

import applyTextStyle from './applyTextStyle';
@@ -340,7 +340,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html index cf07126a2c4..c90bbb25976 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html @@ -195,9 +195,9 @@

All files / packag   1x   -121x -144x -155x +129x +156x +167x       @@ -211,7 +211,7 @@

All files / packag     1x -61x +68x       @@ -225,23 +225,23 @@

All files / packag     1x -17x +19x   -17x +19x           1x -111x +116x           1x -103x +108x       @@ -255,7 +255,7 @@

All files / packag     1x -12x +16x       @@ -271,16 +271,16 @@

All files / packag     1x -6x +8x           1x -22x -22x -22x +24x +24x +24x       @@ -433,7 +433,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html index 2baba552205..1edd7d3b6fc 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html @@ -180,22 +180,22 @@

All files / packag 1x     -80x -83x +300x +303x   -65x -65x -65x +175x +175x +175x   -65x -83x -83x +175x +193x +193x     -83x +193x   -83x -82x +193x +188x 24x     @@ -203,7 +203,7 @@

All files / packag       -82x +188x 27x     @@ -211,43 +211,43 @@

All files / packag       -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       @@ -257,8 +257,8 @@

All files / packag       -74x -7x +181x +8x      

import getTagOfNode from '../utils/getTagOfNode';
@@ -370,7 +370,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html index 412813dd72f..e5ffb737472 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html @@ -93,8 +93,8 @@

All files / packag 1x     -280x -280x +285x +285x       @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html index 0fd74f0477a..0db55a65a3b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html @@ -150,8 +150,8 @@

All files / packag       -1313x -1313x +1541x +1541x       @@ -160,28 +160,28 @@

All files / packag       -785x -785x -785x +950x +950x +950x       -594x +863x         -785x -1367x -1367x -1367x -13x -1354x -3x +950x +1774x +1774x +1774x +31x +1743x +4x       -785x +950x    

import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';
 import getTagOfNode from '../utils/getTagOfNode';
@@ -253,7 +253,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html index 278e1e7ddb9..6a66a5ea9d2 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html @@ -158,44 +158,44 @@

All files / packag     1x -169x +252x           1x -267x +354x       -267x -534x -267x -267x +354x +708x +354x +354x   -267x -100x -167x +354x +104x +250x       -17x +21x     -267x -25x +354x +38x     -267x +354x   -267x -17x +354x +21x         -267x +354x    

import getInlineElementAtNode from './getInlineElementAtNode';
 import PartialInlineElement from './PartialInlineElement';
@@ -274,7 +274,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/index.html b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/index.html index 22fbce2f2d3..d467dbf293e 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/inlineElements/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/inlineElements/index.html @@ -215,7 +215,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html index 21b56bc8af0..fd18869cbc8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html @@ -71,7 +71,7 @@

All files / packag     1x -5023x +5230x    

/**
  * A type-safe wrapper for Array.prototype.push.apply()
@@ -88,7 +88,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html index c13032b27e7..01f01aa89ca 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html @@ -75,7 +75,7 @@

All files / packag 1x     -40161x +41227x    

/**
  * Provide a strong-typed version of Object.keys()
@@ -94,7 +94,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/index.html b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/index.html index 4ab30faeb01..21e6dda89c6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html index 4740a984b02..4b4e1596e07 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html @@ -125,7 +125,7 @@

All files / packag     1x -14728x +16240x    

/**
  * Convert a named node map to an array
@@ -169,7 +169,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/VList.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/VList.ts.html index 9141930822e..096df0889ca 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/VList.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/VList.ts.html @@ -710,14 +710,14 @@

All files / packag     1x -257x +273x           -257x -257x +273x +273x 1x     @@ -742,8 +742,8 @@

All files / packag       -256x -256x +272x +272x       @@ -777,9 +777,9 @@

All files / packag       -256x +272x   -256x +272x       @@ -798,15 +798,15 @@

All files / packag     1x -89x +104x   -89x +104x           -148x +174x       @@ -1013,16 +1013,16 @@

All files / packag     1x -23x +24x     -23x -15x +24x +16x 8x 5x     -23x +24x       @@ -1091,7 +1091,7 @@

All files / packag     1x -159x +174x     1x @@ -1129,25 +1129,25 @@

All files / packag 54x     -314x +333x   -570x +605x             -314x -314x +333x +333x   -314x -466x +333x +495x   -466x -58x -408x -395x +495x +61x +434x +421x       @@ -1160,15 +1160,15 @@

All files / packag       -317x +336x   -317x -474x -386x -88x -58x -30x -9x +336x +505x +413x +92x +61x +31x +10x       @@ -1178,18 +1178,18 @@

All files / packag       -391x -8x -8x +417x +7x +7x   -8x 7x -5x +6x +4x   -8x +7x     -8x +7x       @@ -1801,7 +1801,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/VListChain.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/VListChain.ts.html index cfdad578790..2caf064e9e3 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/VListChain.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/VListChain.ts.html @@ -255,8 +255,8 @@

All files / packag     1x -44x -44x +53x +53x       @@ -269,43 +269,43 @@

All files / packag       -119x -119x -119x -86x +146x +146x +146x +113x     -86x -70x +113x +88x   -70x +88x   -58x +73x   -58x -58x +73x +73x   -58x +73x     -46x -8x +60x +13x     -46x -12x +60x +13x 6x     -58x -58x +73x +73x       -86x +113x     -119x +146x       @@ -322,17 +322,17 @@

All files / packag     1x +5x 4x -3x   -3x -3x -3x +4x +4x +4x   -3x +4x   -3x -3x +4x +4x   1x   @@ -374,14 +374,14 @@

All files / packag       -44x +53x           1x -19x +29x       @@ -390,18 +390,18 @@

All files / packag     1x -58x -58x +73x +73x   -58x -12x +73x +13x   -46x +60x       1x -61x +77x     18x @@ -601,7 +601,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/VListItem.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/VListItem.ts.html index babf213a7b9..54e01557c40 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/VListItem.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/VListItem.ts.html @@ -656,7 +656,7 @@

All files / packag       -498x +526x       @@ -666,47 +666,47 @@

All files / packag       -1578x +1667x             -498x +526x 1x     -497x +525x     -497x +525x   -497x +525x     -497x +525x           1x -187x +213x           1x -257x +283x           1x -331x +332x       @@ -730,7 +730,7 @@

All files / packag     1x -198x +218x       @@ -865,14 +865,14 @@

All files / packag       -140x +141x     -241x +243x   -140x +141x   -140x +141x       @@ -898,7 +898,7 @@

All files / packag       -140x +141x 98x 32x 32x @@ -911,21 +911,21 @@

All files / packag       -140x -111x -111x +141x +112x +112x             -111x -111x +112x +112x       -111x +112x 19x 19x   @@ -936,17 +936,17 @@

All files / packag       -140x -140x +141x +141x     -140x -130x -130x +141x +131x +131x       -140x +141x   10x 10x @@ -1006,8 +1006,8 @@

All files / packag     1x -111x -111x +112x +112x 50x 50x 72x @@ -1015,7 +1015,7 @@

All files / packag   50x   -61x +62x   1x   @@ -1025,7 +1025,7 @@

All files / packag       -111x +112x       @@ -1034,7 +1034,7 @@

All files / packag       -111x +112x 67x   9x @@ -1046,32 +1046,32 @@

All files / packag       -44x +45x       -111x +112x 7x 7x         -111x +112x 28x           -111x +112x 3x           -111x +112x       @@ -1615,7 +1615,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html index 807dba19e5f..229941fcbe7 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html @@ -196,7 +196,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html index b8ea10e02cc..1b6762bef19 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html @@ -166,7 +166,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html index 867aae2889d..bca4fc2d508 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html @@ -239,15 +239,15 @@

All files / packag       -41x +52x 1x     -40x +51x   -40x -10x -10x +51x +21x +21x 8x     @@ -295,9 +295,9 @@

All files / packag 52x     -40x +51x   -40x +51x 38x 38x   @@ -316,7 +316,7 @@

All files / packag       -40x +51x       @@ -508,7 +508,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html index b10cd1b9e9f..167a4ed15d0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html @@ -125,13 +125,13 @@

All files / packag     1x -1588x +1665x   -922x +973x   204x   -462x +488x       @@ -141,7 +141,7 @@

All files / packag     1x -1025x +1083x    

import getTagOfNode from '../utils/getTagOfNode';
 import { ListType } from 'roosterjs-editor-types';
@@ -193,7 +193,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/getRootListNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/getRootListNode.ts.html index 9c99dfd35f3..ad27425e55a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/getRootListNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/getRootListNode.ts.html @@ -131,27 +131,27 @@

All files / packag       -168x +197x             -168x -124x -124x +197x +142x +142x             -23x +26x       -168x +197x    

import findClosestElementAncestor from '../utils/findClosestElementAncestor';
 import { RegionBase } from 'roosterjs-editor-types';
@@ -208,7 +208,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/index.html b/coverage/packages/roosterjs-editor-dom/lib/list/index.html index 745b1f9c7d5..ca86976e812 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/index.html @@ -30,9 +30,9 @@

All files packages/roosterjs-editor-dom
- 83.9% + 84.39% Branches - 344/410 + 346/410
@@ -214,8 +214,8 @@

All files packages/roosterjs-editor-dom

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 / packag 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 / packag 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 / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html b/coverage/packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html index 1aad8dbaddc..a3204bdc134 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html @@ -490,7 +490,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html b/coverage/packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html index 430c5bcb2fb..95d25bb2d8c 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html @@ -424,7 +424,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/metadata/index.html b/coverage/packages/roosterjs-editor-dom/lib/metadata/index.html index 737b95fc921..33dd817c86f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/metadata/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/metadata/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/metadata/metadata.ts.html b/coverage/packages/roosterjs-editor-dom/lib/metadata/metadata.ts.html index e6e71d54cb4..ef43fe0e176 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/metadata/metadata.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/metadata/metadata.ts.html @@ -150,18 +150,18 @@

All files / packag       -900x +1029x     -900x -900x +1029x +1029x     -900x -899x -139x -760x -758x +1029x +1028x +118x +910x +908x       @@ -181,9 +181,9 @@

All files / packag     1x -80x -79x -79x +94x +93x +93x   1x   @@ -195,14 +195,14 @@

All files / packag     1x -61x +50x 43x 43x 1x 1x     -18x +7x      

import validate from './validate';
@@ -286,7 +286,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/metadata/validate.ts.html b/coverage/packages/roosterjs-editor-dom/lib/metadata/validate.ts.html index 27b7ab3c817..d786dee7ad8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/metadata/validate.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/metadata/validate.ts.html @@ -135,16 +135,16 @@

All files / packag     1x -4334x -4334x -1663x -2671x +4522x +4522x +1828x +2694x       47x   -2624x +2647x   282x   @@ -152,34 +152,34 @@

All files / packag 282x     -1355x +1339x         -1355x +1339x     -239x +263x     -239x +263x     -322x +320x       -992x -322x +982x +320x     -418x +435x     -1594x +1626x   -418x +435x     8x @@ -187,7 +187,7 @@

All files / packag       -4287x +4475x       @@ -268,7 +268,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html index b5cd6b1ce68..3425d32e25f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html index 1a47a947422..ec019a193fa 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html @@ -105,8 +105,8 @@

All files / packag     1x -31x -31x +28x +28x   1x  

import type { getSourceFunction, getSourceInputParams } from './getPasteSource';
@@ -142,7 +142,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html index 707e472d19f..5df831d39c8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html @@ -163,23 +163,23 @@

All files / packag       -72x +57x   -24x -24x +19x +19x             -24x -168x 19x +133x +14x       -24x +19x    

import documentContainWacElements from './documentContainWacElements';
 import isExcelDesktopDocument from './isExcelDesktopDocument';
@@ -250,7 +250,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/index.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/index.html index 99a74340460..6966bb30ec8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/index.html @@ -215,7 +215,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html index 3d3495ca9ab..d9e3669647b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html @@ -86,9 +86,9 @@

All files / packag     1x -28x +23x   -28x +23x   1x  

import { EXCEL_DESKTOP_ATTRIBUTE_NAME } from './constants';
@@ -115,7 +115,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html index 7b035505ed7..afc19ed28a7 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html @@ -91,9 +91,9 @@

All files / packag     1x -22x +19x   -22x +19x       @@ -127,7 +127,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html index efb592a2869..c369949d3e5 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html @@ -82,8 +82,8 @@

All files / packag     1x -14x -14x +11x +11x     1x @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html index d83d9b7de51..4bb646b2189 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html @@ -84,7 +84,7 @@

All files / packag     1x -18x +15x   1x  

import { PROG_ID_NAME } from './constants';
@@ -109,7 +109,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html index 906793432ac..41b99a4e608 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html @@ -93,8 +93,8 @@

All files / packag     1x -28x -28x +23x +23x       @@ -130,7 +130,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html index f4b82507cee..de9c792563f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html @@ -86,8 +86,8 @@

All files / packag     1x -28x -14x +22x +11x       @@ -121,7 +121,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html index fec81e1ce5c..22627d45f60 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html @@ -111,24 +111,24 @@

All files / packag       -72x -4x +92x +5x     -68x +87x             -141x +179x   -68x -68x +87x +87x   -68x -66x +87x +85x   2x   @@ -178,7 +178,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html index 975c2a6c3ec..2b490f415f9 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html @@ -351,17 +351,17 @@

All files / packag       -142x -142x -139x -139x -139x -139x -139x -139x +162x +162x +159x +159x +159x +159x +159x +159x     -215x +235x       @@ -371,10 +371,10 @@

All files / packag       -175x -175x -175x -309x +195x +195x +195x +329x       @@ -424,9 +424,9 @@

All files / packag       -139x -139x -139x +159x +159x +159x       @@ -436,7 +436,7 @@

All files / packag       -139x +159x       @@ -465,7 +465,7 @@

All files / packag       -139x +159x       @@ -485,15 +485,15 @@

All files / packag       -257x -257x -514x -257x +277x +277x +554x +277x   -257x -196x -196x -196x +277x +216x +216x +216x       @@ -515,7 +515,7 @@

All files / packag       -257x +277x       @@ -536,23 +536,23 @@

All files / packag       -309x +329x     -309x -309x +329x +329x   -309x +329x   -309x +329x   -309x +329x           -309x +329x      

import contains from '../utils/contains';
@@ -811,7 +811,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html index 3396810789b..3d17beaab09 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html @@ -140,50 +140,50 @@

All files / packag       -99x -99x +119x +119x   -99x -178x -89x +119x +218x +109x   -89x -89x +109x +109x       -159x +208x       -89x -159x -159x +109x +208x +208x   -159x -4x -4x +208x +14x +14x   -155x +194x         -99x -1x +119x +2x       -1x +2x   -1x +2x   -1x -1x +2x +2x       -99x +119x    

import ContentTraverser from '../contentTraverser/ContentTraverser';
 import createElement from '../utils/createElement';
@@ -256,7 +256,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html index 3a33432710f..f4515cc6872 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html @@ -118,33 +118,33 @@

All files / packag     1x -126x +146x 1x     -500x -125x +580x +145x     -125x +145x     -125x +145x   -125x +145x 1x -124x -121x -121x -242x +144x +141x +141x +282x   -121x -114x +141x +134x     -114x +134x   -114x +134x       @@ -152,8 +152,8 @@

All files / packag       -125x -125x +145x +145x    

import createRange from '../selection/createRange';
 import Position from '../selection/Position';
@@ -211,7 +211,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/index.html b/coverage/packages/roosterjs-editor-dom/lib/region/index.html index a9a9e3792af..b3592a452b6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/index.html @@ -170,7 +170,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html index a157d367975..9f69561fe8e 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html @@ -84,7 +84,7 @@

All files / packag     1x -472x +561x       @@ -118,7 +118,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html b/coverage/packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html index 9fbdef34abd..a1078b8a925 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html @@ -280,7 +280,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/Position.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/Position.ts.html index 83390a877ba..b07829f98bc 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/Position.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/Position.ts.html @@ -279,42 +279,42 @@

All files / packag       -16386x -16377x +18910x +18901x   -16377x +18901x 7x 7x   -16370x +18894x     -16377x +18901x   -456x -456x -456x -456x +529x +529x +529x +529x     -423x -423x -423x -423x +518x +518x +518x +518x     -902x -902x -902x +1453x +1453x +1453x     -14596x -14596x -14596x -14596x +16401x +16401x +16401x +16401x     -16377x +18901x       @@ -322,16 +322,16 @@

All files / packag     1x -12240x -11082x +13896x +12273x     -1158x -1158x +1623x +1623x     -1158x -2072x +1623x +3039x       @@ -341,15 +341,15 @@

All files / packag       -2072x -1775x -1775x +3039x +2685x +2685x     -297x +354x     -1158x +1623x       @@ -357,7 +357,7 @@

All files / packag     1x -314x +608x       @@ -370,7 +370,7 @@

All files / packag     1x -1284x +2152x       @@ -388,7 +388,7 @@

All files / packag     1x -1609x +2056x       @@ -398,25 +398,25 @@

All files / packag 1x     -964x +1362x       1x     -879x -879x -305x +1047x +1047x +372x   -879x +1047x       -15498x -3037x -12461x -12356x +17854x +4246x +13608x +13503x   105x   @@ -610,7 +610,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html index 50a37f53990..51dfc5a7c02 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html @@ -107,17 +107,17 @@

All files / packag     1x -791x -791x -789x +916x +916x +914x   -789x +914x   -784x -784x +909x +909x     -784x +909x       @@ -127,13 +127,13 @@

All files / packag       -784x +909x         -789x -789x +914x +914x       @@ -184,7 +184,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/createRange.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/createRange.ts.html index cf0cb85000c..55fcad495c3 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/createRange.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/createRange.ts.html @@ -253,38 +253,38 @@

All files / packag       -1333x -1333x +1536x +1536x   -1333x +1536x   -542x -542x -791x -789x +645x +645x +891x +889x   -159x -159x -630x +158x +158x +731x     -323x -323x -307x +403x +403x +328x   -307x -307x +328x +328x       -1333x -1329x -1329x -1329x -1329x -1329x +1536x +1532x +1532x +1532x +1532x +1532x   -1329x +1532x   4x   @@ -295,39 +295,39 @@

All files / packag       -2658x +3064x           -1875x +2181x       -318x +316x           -318x +316x   -318x -1064x -1064x +316x +1054x +1054x           -746x +738x   -318x +316x       -318x +316x    

import isVoidHtmlElement from '../utils/isVoidHtmlElement';
 import Position from './Position';
@@ -472,7 +472,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html index 9a7d178b8fd..7469dbb54e7 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html @@ -133,7 +133,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html index 35456949ded..cf266c9c846 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html @@ -238,7 +238,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html index 784bb37808f..2a6c9d56d94 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html @@ -158,16 +158,16 @@

All files / packag       -5200x -4867x +5509x +5056x     -333x +453x         -333x +453x       @@ -183,55 +183,55 @@

All files / packag       -666x +906x       -666x -666x -666x +906x +906x +906x     -666x +906x 2x     -664x -333x -333x -47x -47x +904x +408x +408x +48x +48x   -333x +408x   -331x -331x +496x +496x     -664x -1670x -1670x +904x +2180x +2180x   -1670x -547x -153x +2180x +838x +213x 45x     -108x +168x   -394x +625x     -502x +793x     -1670x -1670x -1670x +2180x +2180x +2180x     -664x +904x    

import contains from '../utils/contains';
 import Position from './Position';
@@ -328,7 +328,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/index.html b/coverage/packages/roosterjs-editor-dom/lib/selection/index.html index 3ac59dd697e..afcea99eb88 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/index.html @@ -200,7 +200,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html index 60acf8c2dbb..80f076b5708 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html @@ -108,30 +108,30 @@

All files / packag     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 / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html b/coverage/packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html index 656eeae22da..111b15a0589 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html @@ -275,27 +275,27 @@

All files / packag     1x -467x +543x   -467x -171x -171x +543x +170x +170x   -164x +163x         -149x -149x -149x +148x +148x +148x   -149x +148x         -318x +395x    

import createRange from './createRange';
 import safeInstanceOf from '../utils/safeInstanceOf';
@@ -424,7 +424,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html index 38c0e653773..e5d04fd21b3 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html @@ -196,20 +196,20 @@

All files / packag       -5253x -5253x +5536x +5536x   -5253x -5253x +5536x +5536x   -5253x -5196x -5196x -5196x -5196x +5536x +5494x +5494x +5494x +5494x   -5196x -5196x +5494x +5494x       @@ -217,18 +217,18 @@

All files / packag 3x     -5196x +5494x 3x 3x 3x     -5196x +5494x 24x   -57x +42x   -57x +42x       @@ -243,17 +243,17 @@

All files / packag       -5229x +5512x       -5174x +5472x           -403x +497x       @@ -367,7 +367,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html index 43cab50f5a1..33b61ef1875 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html @@ -84,8 +84,8 @@

All files / packag       -15458x -15458x +16307x +16307x    

import { Snapshots } from 'roosterjs-editor-types';
  
@@ -109,7 +109,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html index 428b3f3346a..e5c2010e584 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html @@ -74,7 +74,7 @@

All files / packag     1x -14x +11x       @@ -97,7 +97,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html index 6e8c283400c..a37bc3383aa 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html @@ -128,8 +128,8 @@

All files / packag       -5743x -5743x +6214x +6214x 5x 5x 5x @@ -145,7 +145,7 @@

All files / packag     1x -541x +714x    

import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';
 import { Snapshot, Snapshots } from 'roosterjs-editor-types';
@@ -199,7 +199,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html index f6d92282851..0338bb74aad 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html @@ -79,7 +79,7 @@

All files / packag     1x -5041x +5236x       @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/index.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/index.html index cb638a92359..3bad7680150 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/index.html @@ -170,7 +170,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html b/coverage/packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html index 5b06bc52158..59c352119f1 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html @@ -145,7 +145,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/getStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/style/getStyles.ts.html index 02af709d6aa..95e25efd921 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/getStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/getStyles.ts.html @@ -79,17 +79,17 @@

All files / packag     1x -1526x -1526x -1526x -2624x -2624x -2624x -2624x -1325x +1483x +1483x +1483x +2506x +2506x +2506x +2506x +1234x     -1526x +1483x    

/**
  * Get CSS styles of a given element in name-value pair format
@@ -115,7 +115,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/index.html b/coverage/packages/roosterjs-editor-dom/lib/style/index.html index 205ae1cd097..d6e0cfdb1b1 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/index.html @@ -155,7 +155,7 @@

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html b/coverage/packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html index 4b729c1d364..ec38c0b1ffd 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html @@ -76,9 +76,9 @@

All files / packag     1x -10879x -10879x -125x +11431x +11431x +126x      

/**
@@ -100,7 +100,7 @@ 

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html b/coverage/packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html index f8c5c753c14..baa4e5c6f81 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html @@ -133,7 +133,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html index 4e02ebd0419..6efcd9ddff5 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html @@ -118,7 +118,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/style/setStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/style/setStyles.ts.html index 1845faf365a..75a603d855b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/style/setStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/style/setStyles.ts.html @@ -90,20 +90,20 @@

All files / packag     1x -600x -599x +573x +572x   -642x -642x -642x -642x +578x +578x +578x +578x   -642x +578x   -599x -147x +572x +132x   -452x +440x       @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/VTable.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/VTable.ts.html index 091e3aeecb6..3d320adf3d0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/VTable.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/VTable.ts.html @@ -23,30 +23,30 @@

All files / packag -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -185,7 +185,7 @@ 

All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html index 1aa16bd9578..6d4e574bed8 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html @@ -142,7 +142,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/pasteTable.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/pasteTable.ts.html index 52fe0b1a72e..664bba4507f 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/pasteTable.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/pasteTable.ts.html @@ -250,7 +250,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html index 4779ff3a0b0..a04c5ebab8a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html @@ -120,7 +120,7 @@

All files / packag     1x -93x +117x       @@ -129,8 +129,8 @@

All files / packag     1x -1x -1x +25x +25x      

- - + + @@ -200,7 +200,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts.html index e16453e641e..11072f883ea 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts.html @@ -169,7 +169,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html index bc9ba7fe831..d51312ad9e2 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html @@ -505,7 +505,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html index 8e358b6945b..1d089895c67 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html @@ -784,7 +784,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html index 25d88b0a9dc..df2e7f1c5d8 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html @@ -547,7 +547,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html index ef4527cc878..5dc82bbb9f1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html index 487801c9212..ece91ab87dc 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html @@ -23,9 +23,9 @@

All files packages/roosterjs-editor-
- 89.7% + 89.04% Statements - 270/301 + 268/301
@@ -37,16 +37,16 @@

All files packages/roosterjs-editor-
- 82.61% + 78.26% Functions - 38/46 + 36/46
- 89.08% + 88.38% Lines - 253/284 + 251/284
@@ -74,17 +74,17 @@

All files packages/roosterjs-editor-

- - - + + - - - - + + + + @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html index 97fbcd14cb7..b7a79a6bf40 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html @@ -85,7 +85,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html index 3a5a006a22e..3b71707a29c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html @@ -202,7 +202,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html index 867a7a40b63..9aa4b4b05a1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html index c0fe4770eb2..495ef3812a7 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html index 9cee7469d67..4678f085402 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html @@ -244,15 +244,15 @@

All files / pac     1x -61x -28x -14x +57x +26x +13x   -14x +13x     -2x -2x +1x +1x     5x @@ -280,18 +280,18 @@

All files / pac 1x 1x   -14x -14x -14x +13x +13x +13x     -14x +13x     1x     -14x +13x       @@ -421,7 +421,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html index 7d13d8d1a2f..65e34883af9 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html @@ -205,7 +205,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html index 3999140c6a4..5390c36af56 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html index 3c56caf8822..dd269c2fbe5 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html @@ -268,7 +268,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html index 385b7746fdb..e2375398980 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html index 1e1d121c470..6fa5986f412 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html @@ -127,7 +127,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html index 808d6d31b82..9b42b714244 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.html index 30363912413..bb0046c74aa 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html index 1f07a0df49d..42271d3c40f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html index fead61eafa8..03bb4c09e0a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html @@ -367,7 +367,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html index 87f1d140bd1..6625a87249f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html index 5533918d954..7f5b9a5ac0f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html @@ -178,7 +178,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html index 86f3cd050cd..ef0ee83be91 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html @@ -223,7 +223,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html index d1773ee2d96..0382012b650 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html @@ -1180,7 +1180,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html index a842a87ffe6..a4823b2943e 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html index 39b4e2707ef..2c50d281683 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html @@ -139,7 +139,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html index 8e7b6af884e..2ed553dcfd4 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html index d91ef7b7e8a..ac6dede6914 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html @@ -154,7 +154,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html index b1d2aafc110..176821a9161 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html index 645a2050d1e..87d5fcf5b6c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html @@ -89,8 +89,8 @@

All files / 1x     -11x -22x +10x +20x     19x @@ -124,7 +124,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html index eaea8528d00..b5fa0ae4416 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html index 34a2f45e549..c116b8a368d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html @@ -101,7 +101,7 @@

All files /     1x -20x +19x     6x @@ -163,7 +163,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html index c7f755a28ce..5948a56dfe1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html @@ -106,7 +106,7 @@

All files /     1x -15x +14x       @@ -145,7 +145,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html index 689acb545a2..e595262e6bd 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html @@ -160,7 +160,7 @@

All files / 1x     -12x +11x       @@ -232,7 +232,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html index a71c0f47ab2..90d901b8616 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html @@ -153,7 +153,7 @@

All files /     1x -23x +22x       @@ -286,7 +286,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html index 74bc6b6976f..61e91bfc0c3 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html @@ -194,7 +194,7 @@

All files /       -20x +19x 6x 6x 1x @@ -209,7 +209,7 @@

All files /       -20x +19x 3x     @@ -231,7 +231,7 @@

All files /       -20x +19x 3x 3x 1x @@ -243,13 +243,13 @@

All files /       -20x +19x           -100x +95x    

- - - + + - - - - + + + + @@ -185,7 +185,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html index fab6ad494b9..acc8fb8a195 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html @@ -123,7 +123,7 @@

All files /     1x -20x +19x       @@ -175,7 +175,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html index e5a0565d195..4c8aaba463a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html @@ -1894,7 +1894,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.html index f619c744db9..1ed427dd02f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html index 46511915b1d..714388cd8c1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html index 93e353946ee..333412e2925 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html @@ -454,7 +454,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html index f80706e80c7..d377fd25cba 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html @@ -79,7 +79,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html index d537f695a3b..c4800345383 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html @@ -202,7 +202,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html index f1d46207614..fc8d093994d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html index 8b6a991368f..b51fc7389a2 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html @@ -125,7 +125,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html index f77fef4247a..fda99553a0b 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html index 289a8776a76..61281239ea2 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html @@ -757,7 +757,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html index 7d4fc016144..4269e0fb532 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html @@ -172,7 +172,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html index fe645418e7c..a8afa1cefb3 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html index 43ee345f48c..f1973c2c0ab 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html @@ -850,7 +850,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html index f0a3cbe515d..b52f4308319 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html @@ -172,7 +172,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html index d950e8ec5fe..7834f91b9e8 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html index 350d7ede52b..efab10a147d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html @@ -121,7 +121,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html index 96114e3213a..7ed7cbbef31 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html @@ -112,7 +112,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html index bedd18d2b1c..639e14ed514 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html @@ -142,7 +142,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html index 6a919fb248d..ccfbc13db3b 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html @@ -109,7 +109,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html index a7466017bba..c486ecb345f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html @@ -245,7 +245,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html index 57456a94f47..e37c2a1653c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html @@ -130,7 +130,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html index 93ac0ea2627..81941e8b7c5 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html @@ -214,7 +214,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html index d39a6841f71..d552f0ea837 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html @@ -271,7 +271,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html index f6a732ed9a3..6a8fe20964b 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html @@ -178,7 +178,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html index 0956b17630d..301ad52d4fe 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html @@ -100,7 +100,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html index ff56fe6bc88..c1acc881c6c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html @@ -142,7 +142,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html index a03f232e164..1e60f699972 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html @@ -130,7 +130,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html index 19ec16c4c5f..4c0db46da5f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html @@ -610,7 +610,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html index 0c6da4315f7..eb543735771 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html @@ -790,7 +790,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html index 69bb9d205d0..d8e743b6ea1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html @@ -1333,7 +1333,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html index 6f42012f3cb..3d912a53a5e 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html @@ -130,7 +130,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html index 23ba7d4cd7b..42a0f327020 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html @@ -508,7 +508,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html index 5280cb9db32..cea5b099470 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html @@ -712,7 +712,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html index 4c07d0c47a8..b83a69a08cb 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html @@ -502,7 +502,7 @@

All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html index 94fbdf00c38..d793573fe45 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html @@ -170,7 +170,7 @@

All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.html index ecabc37b5ef..a8a202a0dfc 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html index 884fe5a79dd..0f776135b32 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html index 78947efaa59..9a4d3e5fc16 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html @@ -484,7 +484,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.html index 38f010bd86a..0e3e9098c78 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html index e62ddc9682c..71eeb08cce9 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html @@ -67,7 +67,7 @@

All files / pac diff --git a/coverage/packages/roosterjs-editor-types-compatible/lib/index.html b/coverage/packages/roosterjs-editor-types-compatible/lib/index.html index 218ad62b217..c55e82e44d3 100644 --- a/coverage/packages/roosterjs-editor-types-compatible/lib/index.html +++ b/coverage/packages/roosterjs-editor-types-compatible/lib/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-types- diff --git a/coverage/packages/roosterjs-editor-types-compatible/lib/index.ts.html b/coverage/packages/roosterjs-editor-types-compatible/lib/index.ts.html index aa8e8540c18..b3c07a7d996 100644 --- a/coverage/packages/roosterjs-editor-types-compatible/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-types-compatible/lib/index.ts.html @@ -67,7 +67,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-types/lib/browser/index.html b/coverage/packages/roosterjs-editor-types/lib/browser/index.html index ea3d9108f6a..bfafae0bfc3 100644 --- a/coverage/packages/roosterjs-editor-types/lib/browser/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/browser/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/browser/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/browser/index.ts.html index b9b5d8190ce..c395ad4307a 100644 --- a/coverage/packages/roosterjs-editor-types/lib/browser/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/browser/index.ts.html @@ -70,7 +70,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts.html index 0b89c45777b..62f09c6f5a6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts.html @@ -124,7 +124,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts.html index a95c3e965f0..53ecd991ee7 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts.html @@ -244,7 +244,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts.html index 5e086607047..3256a762230 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts.html @@ -145,7 +145,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts.html index 8cf8afe87d4..a2939274031 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts.html @@ -280,7 +280,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts.html index cc48979f3b5..e7e68dbddb0 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts.html @@ -124,7 +124,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts.html index 3d431949fa2..999c3c9d575 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts.html index 4939db9b836..32dc4ad9dec 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts.html @@ -175,7 +175,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts.html index 862c50ddf43..1239d49193e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts.html @@ -160,7 +160,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts.html index e23f8eb0b81..81e8fc12735 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts.html @@ -142,7 +142,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts.html index 823b9a8fd3a..618f733155f 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts.html @@ -169,7 +169,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts.html index 7c16e04dfde..70465bb2686 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts.html index 4838aab6742..2fe518938c4 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts.html index d65454a0186..09a1977e497 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts.html @@ -850,7 +850,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts.html index 8b197a1a90d..10877afb18c 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts.html @@ -172,7 +172,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts.html index 16457e366d1..a0f6c3b2738 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts.html index b1bf9b0e615..bd58054e10a 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts.html @@ -295,7 +295,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts.html index 17dbd150a28..9369e0fd58b 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts.html @@ -601,7 +601,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts.html index bc5be4d450b..0658f2fd73a 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts.html @@ -112,7 +112,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts.html index 8f5678cf34b..1a0645d0f49 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts.html @@ -175,7 +175,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts.html index 2d22952b0b6..8bd653cf45e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts.html @@ -199,7 +199,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts.html index 8540e62c51a..283fc077ec1 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts.html @@ -112,7 +112,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts.html index 9855d505c4a..3f84f32627c 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts.html @@ -226,7 +226,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts.html index c591236871d..d8d48f4cb56 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts.html @@ -274,7 +274,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts.html index 74f71cd5ddb..0d23b6dd0ba 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts.html @@ -106,7 +106,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts.html index 79dc7b2faa4..0011237ebd3 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts.html @@ -133,7 +133,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts.html index 795c99f202b..879f012e124 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts.html @@ -205,7 +205,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts.html index 48502b28ce5..21524be32e8 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts.html @@ -409,7 +409,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts.html index aa1dab6b226..8a1d52552ee 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts.html index 7619315d631..cf6532ecd7f 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts.html @@ -460,7 +460,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts.html index f70f06efc19..789558bbca7 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts.html index 7870333d29b..f1244e7a9f5 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts.html @@ -127,7 +127,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts.html index d03cbd6f4ae..b5122f0fce0 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts.html @@ -94,7 +94,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts.html index 76a74a764cc..ff80c527c88 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts.html @@ -118,7 +118,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts.html index 8786f050165..8f0e687808e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts.html @@ -310,7 +310,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts.html index ae6d749ad53..59c2572cad8 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts.html @@ -424,7 +424,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.html index 95888beb6ae..1d7bf39d900 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.html @@ -620,7 +620,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.ts.html index 64450b9c9c9..4ebcd00a420 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleEnum/index.ts.html @@ -169,7 +169,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/compatibleTypes.ts.html b/coverage/packages/roosterjs-editor-types/lib/compatibleTypes.ts.html index 6e6b5757080..b7cee2edafd 100644 --- a/coverage/packages/roosterjs-editor-types/lib/compatibleTypes.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/compatibleTypes.ts.html @@ -82,7 +82,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.html b/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.html index 0bbf627216c..74d21b11831 100644 --- a/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.ts.html index a77683fd569..5d574980bc6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/corePluginState/index.ts.html @@ -85,7 +85,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/Alignment.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/Alignment.ts.html index 9a5f84dd4c8..d43ac015ac3 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/Alignment.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/Alignment.ts.html @@ -121,7 +121,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/BulletListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/BulletListType.ts.html index b378f0aaf47..43cacec999d 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/BulletListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/BulletListType.ts.html @@ -241,7 +241,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/Capitalization.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/Capitalization.ts.html index c931bb01f36..849e5cdabd9 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/Capitalization.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/Capitalization.ts.html @@ -142,7 +142,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ChangeSource.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ChangeSource.ts.html index 2a8d7d901c2..925c13954c6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ChangeSource.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ChangeSource.ts.html @@ -277,7 +277,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts.html index cb150bf07a2..56e56db1872 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts.html @@ -121,7 +121,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts.html index d548c9763d9..c6aef2220ee 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts.html @@ -106,7 +106,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ContentPosition.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ContentPosition.ts.html index cd3346c129c..f0db66560c8 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ContentPosition.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ContentPosition.ts.html @@ -172,7 +172,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ContentType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ContentType.ts.html index 7ca5fc28369..cfc49e70c97 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ContentType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ContentType.ts.html @@ -151,7 +151,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts.html index 1cfdc2438b1..cbcfd877249 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts.html @@ -139,7 +139,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/DefinitionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/DefinitionType.ts.html index e7d15790b26..63b464eb8ed 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/DefinitionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/DefinitionType.ts.html @@ -166,7 +166,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts.html index 5a7238f7b26..0f2216f8201 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts.html @@ -106,7 +106,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/Direction.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/Direction.ts.html index e6a1a22792f..a82f82fe5f1 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/Direction.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/Direction.ts.html @@ -106,7 +106,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts.html index 74815ea592d..d7861f73eab 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts.html @@ -847,7 +847,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts.html index 8430be668be..54cbd4a03ff 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts.html @@ -169,7 +169,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/EntityClasses.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/EntityClasses.ts.html index f3d33820537..c43aaeccbb6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/EntityClasses.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/EntityClasses.ts.html @@ -136,7 +136,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/EntityOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/EntityOperation.ts.html index d1cbca0a16d..86680f6f8e6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/EntityOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/EntityOperation.ts.html @@ -292,7 +292,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts.html index 1aca67342a4..6f783b1d4ac 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts.html @@ -598,7 +598,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts.html index 6add323ec01..179eee15818 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/GetContentMode.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/GetContentMode.ts.html index 23750f3e133..785d01c3321 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/GetContentMode.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/GetContentMode.ts.html @@ -172,7 +172,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts.html index 78393dbeae4..ab45a3900a8 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts.html @@ -196,7 +196,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/Indentation.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/Indentation.ts.html index fe56dede0f5..46f592dba39 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/Indentation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/Indentation.ts.html @@ -109,7 +109,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/Keys.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/Keys.ts.html index 6234324fd6f..3b5aa45c3e4 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/Keys.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/Keys.ts.html @@ -223,7 +223,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts.html index 92bbd15669a..b3bc38492ea 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts.html @@ -271,7 +271,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts.html index 504e86680db..0f0ee5d2d9e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts.html @@ -103,7 +103,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/ListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/ListType.ts.html index e527237a1c0..9f94413d3c6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/ListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/ListType.ts.html @@ -130,7 +130,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/NodeType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/NodeType.ts.html index 366b5297f7d..f224fccee5c 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/NodeType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/NodeType.ts.html @@ -202,7 +202,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/NumberingListType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/NumberingListType.ts.html index e961a6349e2..b94644c9382 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/NumberingListType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/NumberingListType.ts.html @@ -406,7 +406,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/PasteType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/PasteType.ts.html index 7b6ee218d1e..80edaae2521 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/PasteType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/PasteType.ts.html @@ -136,7 +136,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/PluginEventType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/PluginEventType.ts.html index f13c09910fb..a318361631e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/PluginEventType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/PluginEventType.ts.html @@ -457,7 +457,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/PositionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/PositionType.ts.html index ffbc628d860..1c616c79966 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/PositionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/PositionType.ts.html @@ -136,7 +136,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/QueryScope.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/QueryScope.ts.html index cc659c2c890..14ed2d2c86e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/QueryScope.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/QueryScope.ts.html @@ -124,7 +124,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/RegionType.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/RegionType.ts.html index 3f79d108815..74aacf4bccf 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/RegionType.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/RegionType.ts.html @@ -91,7 +91,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts.html index 19bde0ef36a..cb1fa972c43 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts.html @@ -115,7 +115,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts.html index d6c8ad5d60c..bd5b7714a5a 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts.html @@ -307,7 +307,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/TableOperation.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/TableOperation.ts.html index 4849537ad92..5dcc16a8c5d 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/TableOperation.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/TableOperation.ts.html @@ -421,7 +421,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/index.html b/coverage/packages/roosterjs-editor-types/lib/enum/index.html index bae385fd446..4eea3e9171c 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/index.html @@ -620,7 +620,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/enum/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/enum/index.ts.html index bd33dc604a8..c1ac42b8f5b 100644 --- a/coverage/packages/roosterjs-editor-types/lib/enum/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/enum/index.ts.html @@ -169,7 +169,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/event/index.html b/coverage/packages/roosterjs-editor-types/lib/event/index.html index b7fe8498e1d..949f100d675 100644 --- a/coverage/packages/roosterjs-editor-types/lib/event/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/event/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/event/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/event/index.ts.html index 46ab98f4302..9bc586fc691 100644 --- a/coverage/packages/roosterjs-editor-types/lib/event/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/event/index.ts.html @@ -370,7 +370,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/index.html b/coverage/packages/roosterjs-editor-types/lib/index.html index 43dea51ca8a..f6c1b450fed 100644 --- a/coverage/packages/roosterjs-editor-types/lib/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs-editor-types/ diff --git a/coverage/packages/roosterjs-editor-types/lib/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/index.ts.html index 1685fe9d116..4c04ce6f8a6 100644 --- a/coverage/packages/roosterjs-editor-types/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/index.ts.html @@ -82,7 +82,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs-editor-types/lib/interface/index.html b/coverage/packages/roosterjs-editor-types/lib/interface/index.html index 405ef26d84f..0f979bdfd9b 100644 --- a/coverage/packages/roosterjs-editor-types/lib/interface/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/interface/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/interface/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/interface/index.ts.html index c329b621d4e..87d86ae63f9 100644 --- a/coverage/packages/roosterjs-editor-types/lib/interface/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/interface/index.ts.html @@ -439,7 +439,7 @@

All files / packag diff --git a/coverage/packages/roosterjs-editor-types/lib/type/index.html b/coverage/packages/roosterjs-editor-types/lib/type/index.html index 7afbf356c38..638b29e842e 100644 --- a/coverage/packages/roosterjs-editor-types/lib/type/index.html +++ b/coverage/packages/roosterjs-editor-types/lib/type/index.html @@ -95,7 +95,7 @@

All files packages/roosterjs-editor-typ diff --git a/coverage/packages/roosterjs-editor-types/lib/type/index.ts.html b/coverage/packages/roosterjs-editor-types/lib/type/index.ts.html index 6c697d7d2f4..bb4bd10790b 100644 --- a/coverage/packages/roosterjs-editor-types/lib/type/index.ts.html +++ b/coverage/packages/roosterjs-editor-types/lib/type/index.ts.html @@ -142,7 +142,7 @@

All files / packag diff --git a/coverage/packages/roosterjs/lib/createEditor.ts.html b/coverage/packages/roosterjs/lib/createEditor.ts.html index 65734d77a73..3d143ecafd8 100644 --- a/coverage/packages/roosterjs/lib/createEditor.ts.html +++ b/coverage/packages/roosterjs/lib/createEditor.ts.html @@ -172,7 +172,7 @@

All files / packages/ diff --git a/coverage/packages/roosterjs/lib/index.html b/coverage/packages/roosterjs/lib/index.html index 4de911ef198..3bb3364b5e9 100644 --- a/coverage/packages/roosterjs/lib/index.html +++ b/coverage/packages/roosterjs/lib/index.html @@ -110,7 +110,7 @@

All files packages/roosterjs/lib

diff --git a/coverage/packages/roosterjs/lib/index.ts.html b/coverage/packages/roosterjs/lib/index.ts.html index 636d71428e2..667ed0ae16a 100644 --- a/coverage/packages/roosterjs/lib/index.ts.html +++ b/coverage/packages/roosterjs/lib/index.ts.html @@ -88,7 +88,7 @@

All files / packages/ diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js index e1575609de5..353156ffa77 100644 --- a/docs/assets/js/search.js +++ b/docs/assets/js/search.js @@ -1 +1 @@ -window.searchData = {"kinds":{"1":"Module","4":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"roosterjs-editor-types","url":"modules/roosterjs_editor_types.html","classes":"tsd-kind-module"},{"id":1,"kind":1,"name":"roosterjs-editor-types-compatible","url":"modules/roosterjs_editor_types_compatible.html","classes":"tsd-kind-module"},{"id":2,"kind":1,"name":"roosterjs-editor-dom","url":"modules/roosterjs_editor_dom.html","classes":"tsd-kind-module"},{"id":3,"kind":1,"name":"roosterjs-editor-core","url":"modules/roosterjs_editor_core.html","classes":"tsd-kind-module"},{"id":4,"kind":1,"name":"roosterjs-editor-api","url":"modules/roosterjs_editor_api.html","classes":"tsd-kind-module"},{"id":5,"kind":1,"name":"roosterjs-editor-plugins","url":"modules/roosterjs_editor_plugins.html","classes":"tsd-kind-module"},{"id":6,"kind":1,"name":"roosterjs-color-utils","url":"modules/roosterjs_color_utils.html","classes":"tsd-kind-module"},{"id":7,"kind":1,"name":"roosterjs-react","url":"modules/roosterjs_react.html","classes":"tsd-kind-module"},{"id":8,"kind":1,"name":"roosterjs","url":"modules/roosterjs.html","classes":"tsd-kind-module"},{"id":9,"kind":1,"name":"roosterjs-content-model-types","url":"modules/roosterjs_content_model_types.html","classes":"tsd-kind-module"},{"id":10,"kind":1,"name":"roosterjs-content-model-dom","url":"modules/roosterjs_content_model_dom.html","classes":"tsd-kind-module"},{"id":11,"kind":1,"name":"roosterjs-content-model-editor","url":"modules/roosterjs_content_model_editor.html","classes":"tsd-kind-module"},{"id":12,"kind":1,"name":"roosterjs-content-model","url":"modules/roosterjs_content_model.html","classes":"tsd-kind-module"},{"id":13,"kind":256,"name":"BrowserInfo","url":"interfaces/roosterjs_editor_types.browserinfo.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":14,"kind":1024,"name":"isMac","url":"interfaces/roosterjs_editor_types.browserinfo.html#ismac","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":15,"kind":1024,"name":"isWin","url":"interfaces/roosterjs_editor_types.browserinfo.html#iswin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":16,"kind":1024,"name":"isWebKit","url":"interfaces/roosterjs_editor_types.browserinfo.html#iswebkit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":17,"kind":1024,"name":"isIE","url":"interfaces/roosterjs_editor_types.browserinfo.html#isie","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":18,"kind":1024,"name":"isIE11OrGreater","url":"interfaces/roosterjs_editor_types.browserinfo.html#isie11orgreater","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":19,"kind":1024,"name":"isSafari","url":"interfaces/roosterjs_editor_types.browserinfo.html#issafari","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":20,"kind":1024,"name":"isChrome","url":"interfaces/roosterjs_editor_types.browserinfo.html#ischrome","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":21,"kind":1024,"name":"isFirefox","url":"interfaces/roosterjs_editor_types.browserinfo.html#isfirefox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":22,"kind":1024,"name":"isEdge","url":"interfaces/roosterjs_editor_types.browserinfo.html#isedge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":23,"kind":1024,"name":"isIEOrEdge","url":"interfaces/roosterjs_editor_types.browserinfo.html#isieoredge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":24,"kind":1024,"name":"isAndroid","url":"interfaces/roosterjs_editor_types.browserinfo.html#isandroid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":25,"kind":1024,"name":"isMobileOrTablet","url":"interfaces/roosterjs_editor_types.browserinfo.html#ismobileortablet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":26,"kind":256,"name":"EdgeLinkPreview","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":27,"kind":1024,"name":"domain","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#domain","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":28,"kind":1024,"name":"preferred_format","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#preferred_format","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":29,"kind":1024,"name":"title","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":30,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":31,"kind":1024,"name":"url","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":32,"kind":256,"name":"DOMEventPluginState","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":33,"kind":1024,"name":"isInIME","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#isinime","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":34,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":35,"kind":1024,"name":"selectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#selectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":36,"kind":1024,"name":"tableSelectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#tableselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":37,"kind":1024,"name":"stopPrintableKeyboardEventPropagation","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#stopprintablekeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":38,"kind":1024,"name":"contextMenuProviders","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#contextmenuproviders","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":39,"kind":1024,"name":"imageSelectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#imageselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":40,"kind":256,"name":"EditPluginState","url":"interfaces/roosterjs_editor_types.editpluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":41,"kind":1024,"name":"features","url":"interfaces/roosterjs_editor_types.editpluginstate.html#features","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditPluginState"},{"id":42,"kind":256,"name":"EntityPluginState","url":"interfaces/roosterjs_editor_types.entitypluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":43,"kind":1024,"name":"clickingPoint","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#clickingpoint","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":44,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":45,"kind":1024,"name":"pageX","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type.pagex","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.EntityPluginState.__type"},{"id":46,"kind":1024,"name":"pageY","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type.pagey","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.EntityPluginState.__type"},{"id":47,"kind":1024,"name":"knownEntityElements","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#knownentityelements","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":48,"kind":1024,"name":"shadowEntityCache","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#shadowentitycache","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":49,"kind":1024,"name":"entityMap","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#entitymap","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":50,"kind":256,"name":"LifecyclePluginState","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":51,"kind":1024,"name":"customData","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#customdata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":52,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":53,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":54,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":55,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":56,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":57,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":58,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":59,"kind":1024,"name":"shadowEditFragment","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditfragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":60,"kind":1024,"name":"shadowEditEntities","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditentities","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":61,"kind":1024,"name":"shadowEditSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":62,"kind":1024,"name":"shadowEditTableSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadowedittableselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":63,"kind":1024,"name":"shadowEditImageSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditimageselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":64,"kind":256,"name":"PendingFormatStatePluginState","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":65,"kind":1024,"name":"pendableFormatState","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":66,"kind":1024,"name":"pendableFormatPosition","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":67,"kind":1024,"name":"pendableFormatSpan","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatspan","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":68,"kind":256,"name":"UndoPluginState","url":"interfaces/roosterjs_editor_types.undopluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":69,"kind":1024,"name":"snapshotsService","url":"interfaces/roosterjs_editor_types.undopluginstate.html#snapshotsservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":70,"kind":1024,"name":"isRestoring","url":"interfaces/roosterjs_editor_types.undopluginstate.html#isrestoring","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":71,"kind":1024,"name":"hasNewContent","url":"interfaces/roosterjs_editor_types.undopluginstate.html#hasnewcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":72,"kind":1024,"name":"isNested","url":"interfaces/roosterjs_editor_types.undopluginstate.html#isnested","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":73,"kind":1024,"name":"autoCompletePosition","url":"interfaces/roosterjs_editor_types.undopluginstate.html#autocompleteposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":74,"kind":256,"name":"CopyPastePluginState","url":"interfaces/roosterjs_editor_types.copypastepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":75,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.copypastepluginstate.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CopyPastePluginState"},{"id":76,"kind":4,"name":"DocumentCommand","url":"enums/roosterjs_editor_types.documentcommand.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":77,"kind":16,"name":"AutoUrlDetect","url":"enums/roosterjs_editor_types.documentcommand.html#autourldetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":78,"kind":16,"name":"BackColor","url":"enums/roosterjs_editor_types.documentcommand.html#backcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":79,"kind":16,"name":"Bold","url":"enums/roosterjs_editor_types.documentcommand.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":80,"kind":16,"name":"ClearAuthenticationCache","url":"enums/roosterjs_editor_types.documentcommand.html#clearauthenticationcache","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":81,"kind":16,"name":"ContentReadOnly","url":"enums/roosterjs_editor_types.documentcommand.html#contentreadonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":82,"kind":16,"name":"Copy","url":"enums/roosterjs_editor_types.documentcommand.html#copy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":83,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types.documentcommand.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":84,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types.documentcommand.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":85,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_editor_types.documentcommand.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":86,"kind":16,"name":"DefaultParagraphSeparator","url":"enums/roosterjs_editor_types.documentcommand.html#defaultparagraphseparator","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":87,"kind":16,"name":"Delete","url":"enums/roosterjs_editor_types.documentcommand.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":88,"kind":16,"name":"EnableInlineTableEditing","url":"enums/roosterjs_editor_types.documentcommand.html#enableinlinetableediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":89,"kind":16,"name":"EnableObjectResizing","url":"enums/roosterjs_editor_types.documentcommand.html#enableobjectresizing","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":90,"kind":16,"name":"FontName","url":"enums/roosterjs_editor_types.documentcommand.html#fontname","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":91,"kind":16,"name":"FontSize","url":"enums/roosterjs_editor_types.documentcommand.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":92,"kind":16,"name":"ForeColor","url":"enums/roosterjs_editor_types.documentcommand.html#forecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":93,"kind":16,"name":"FormatBlock","url":"enums/roosterjs_editor_types.documentcommand.html#formatblock","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":94,"kind":16,"name":"ForwardDelete","url":"enums/roosterjs_editor_types.documentcommand.html#forwarddelete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":95,"kind":16,"name":"Heading","url":"enums/roosterjs_editor_types.documentcommand.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":96,"kind":16,"name":"HiliteColor","url":"enums/roosterjs_editor_types.documentcommand.html#hilitecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":97,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_editor_types.documentcommand.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":98,"kind":16,"name":"Indent","url":"enums/roosterjs_editor_types.documentcommand.html#indent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":99,"kind":16,"name":"InsertBrOnReturn","url":"enums/roosterjs_editor_types.documentcommand.html#insertbronreturn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":100,"kind":16,"name":"InsertHorizontalRule","url":"enums/roosterjs_editor_types.documentcommand.html#inserthorizontalrule","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":101,"kind":16,"name":"InsertHTML","url":"enums/roosterjs_editor_types.documentcommand.html#inserthtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":102,"kind":16,"name":"InsertImage","url":"enums/roosterjs_editor_types.documentcommand.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":103,"kind":16,"name":"InsertOrderedList","url":"enums/roosterjs_editor_types.documentcommand.html#insertorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":104,"kind":16,"name":"InsertUnorderedList","url":"enums/roosterjs_editor_types.documentcommand.html#insertunorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":105,"kind":16,"name":"InsertParagraph","url":"enums/roosterjs_editor_types.documentcommand.html#insertparagraph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":106,"kind":16,"name":"InsertText","url":"enums/roosterjs_editor_types.documentcommand.html#inserttext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":107,"kind":16,"name":"Italic","url":"enums/roosterjs_editor_types.documentcommand.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":108,"kind":16,"name":"JustifyCenter","url":"enums/roosterjs_editor_types.documentcommand.html#justifycenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":109,"kind":16,"name":"JustifyFull","url":"enums/roosterjs_editor_types.documentcommand.html#justifyfull","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":110,"kind":16,"name":"JustifyLeft","url":"enums/roosterjs_editor_types.documentcommand.html#justifyleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":111,"kind":16,"name":"JustifyRight","url":"enums/roosterjs_editor_types.documentcommand.html#justifyright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":112,"kind":16,"name":"Outdent","url":"enums/roosterjs_editor_types.documentcommand.html#outdent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":113,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types.documentcommand.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":114,"kind":16,"name":"Redo","url":"enums/roosterjs_editor_types.documentcommand.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":115,"kind":16,"name":"RemoveFormat","url":"enums/roosterjs_editor_types.documentcommand.html#removeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":116,"kind":16,"name":"SelectAll","url":"enums/roosterjs_editor_types.documentcommand.html#selectall","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":117,"kind":16,"name":"StrikeThrough","url":"enums/roosterjs_editor_types.documentcommand.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":118,"kind":16,"name":"Subscript","url":"enums/roosterjs_editor_types.documentcommand.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":119,"kind":16,"name":"Superscript","url":"enums/roosterjs_editor_types.documentcommand.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":120,"kind":16,"name":"Underline","url":"enums/roosterjs_editor_types.documentcommand.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":121,"kind":16,"name":"Undo","url":"enums/roosterjs_editor_types.documentcommand.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":122,"kind":16,"name":"Unlink","url":"enums/roosterjs_editor_types.documentcommand.html#unlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":123,"kind":16,"name":"StyleWithCSS","url":"enums/roosterjs_editor_types.documentcommand.html#stylewithcss","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":124,"kind":4,"name":"DocumentPosition","url":"enums/roosterjs_editor_types.documentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":125,"kind":16,"name":"Same","url":"enums/roosterjs_editor_types.documentposition.html#same","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":126,"kind":16,"name":"Disconnected","url":"enums/roosterjs_editor_types.documentposition.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":127,"kind":16,"name":"Preceding","url":"enums/roosterjs_editor_types.documentposition.html#preceding","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":128,"kind":16,"name":"Following","url":"enums/roosterjs_editor_types.documentposition.html#following","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":129,"kind":16,"name":"Contains","url":"enums/roosterjs_editor_types.documentposition.html#contains","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":130,"kind":16,"name":"ContainedBy","url":"enums/roosterjs_editor_types.documentposition.html#containedby","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":131,"kind":4,"name":"Keys","url":"enums/roosterjs_editor_types.keys.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":132,"kind":16,"name":"NULL","url":"enums/roosterjs_editor_types.keys.html#null","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":133,"kind":16,"name":"BACKSPACE","url":"enums/roosterjs_editor_types.keys.html#backspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":134,"kind":16,"name":"TAB","url":"enums/roosterjs_editor_types.keys.html#tab","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":135,"kind":16,"name":"ENTER","url":"enums/roosterjs_editor_types.keys.html#enter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":136,"kind":16,"name":"SHIFT","url":"enums/roosterjs_editor_types.keys.html#shift","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":137,"kind":16,"name":"CTRL_LEFT","url":"enums/roosterjs_editor_types.keys.html#ctrl_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":138,"kind":16,"name":"ALT","url":"enums/roosterjs_editor_types.keys.html#alt","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":139,"kind":16,"name":"ESCAPE","url":"enums/roosterjs_editor_types.keys.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":140,"kind":16,"name":"SPACE","url":"enums/roosterjs_editor_types.keys.html#space","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":141,"kind":16,"name":"PAGEUP","url":"enums/roosterjs_editor_types.keys.html#pageup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":142,"kind":16,"name":"END","url":"enums/roosterjs_editor_types.keys.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":143,"kind":16,"name":"HOME","url":"enums/roosterjs_editor_types.keys.html#home","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":144,"kind":16,"name":"LEFT","url":"enums/roosterjs_editor_types.keys.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":145,"kind":16,"name":"UP","url":"enums/roosterjs_editor_types.keys.html#up","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":146,"kind":16,"name":"RIGHT","url":"enums/roosterjs_editor_types.keys.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":147,"kind":16,"name":"DOWN","url":"enums/roosterjs_editor_types.keys.html#down","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":148,"kind":16,"name":"PRINT_SCREEN","url":"enums/roosterjs_editor_types.keys.html#print_screen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":149,"kind":16,"name":"DELETE","url":"enums/roosterjs_editor_types.keys.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":150,"kind":16,"name":"EIGHT_ASTIRISK","url":"enums/roosterjs_editor_types.keys.html#eight_astirisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":151,"kind":16,"name":"EIGHT_ASTERISK","url":"enums/roosterjs_editor_types.keys.html#eight_asterisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":152,"kind":16,"name":"B","url":"enums/roosterjs_editor_types.keys.html#b","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":153,"kind":16,"name":"I","url":"enums/roosterjs_editor_types.keys.html#i","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":154,"kind":16,"name":"U","url":"enums/roosterjs_editor_types.keys.html#u","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":155,"kind":16,"name":"Y","url":"enums/roosterjs_editor_types.keys.html#y","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":156,"kind":16,"name":"Z","url":"enums/roosterjs_editor_types.keys.html#z","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":157,"kind":16,"name":"META_LEFT","url":"enums/roosterjs_editor_types.keys.html#meta_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":158,"kind":16,"name":"COMMA","url":"enums/roosterjs_editor_types.keys.html#comma","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":159,"kind":16,"name":"DASH_UNDERSCORE","url":"enums/roosterjs_editor_types.keys.html#dash_underscore","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":160,"kind":16,"name":"PERIOD","url":"enums/roosterjs_editor_types.keys.html#period","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":161,"kind":16,"name":"FORWARDSLASH","url":"enums/roosterjs_editor_types.keys.html#forwardslash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":162,"kind":16,"name":"FORWARD_SLASH","url":"enums/roosterjs_editor_types.keys.html#forward_slash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":163,"kind":16,"name":"GRAVE_TILDE","url":"enums/roosterjs_editor_types.keys.html#grave_tilde","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":164,"kind":16,"name":"CONTENTCHANGED","url":"enums/roosterjs_editor_types.keys.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":165,"kind":16,"name":"RANGE","url":"enums/roosterjs_editor_types.keys.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":166,"kind":16,"name":"Ctrl","url":"enums/roosterjs_editor_types.keys.html#ctrl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":167,"kind":16,"name":"Meta","url":"enums/roosterjs_editor_types.keys.html#meta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":168,"kind":16,"name":"Shift","url":"enums/roosterjs_editor_types.keys.html#shift-1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":169,"kind":4,"name":"NodeType","url":"enums/roosterjs_editor_types.nodetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":170,"kind":16,"name":"Element","url":"enums/roosterjs_editor_types.nodetype.html#element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":171,"kind":16,"name":"Attribute","url":"enums/roosterjs_editor_types.nodetype.html#attribute","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":172,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types.nodetype.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":173,"kind":16,"name":"ProcessingInstruction","url":"enums/roosterjs_editor_types.nodetype.html#processinginstruction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":174,"kind":16,"name":"Comment","url":"enums/roosterjs_editor_types.nodetype.html#comment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":175,"kind":16,"name":"Document","url":"enums/roosterjs_editor_types.nodetype.html#document","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":176,"kind":16,"name":"DocumentType","url":"enums/roosterjs_editor_types.nodetype.html#documenttype","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":177,"kind":16,"name":"DocumentFragment","url":"enums/roosterjs_editor_types.nodetype.html#documentfragment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":178,"kind":4,"name":"ContentTypePrefix","url":"enums/roosterjs_editor_types.contenttypeprefix.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":179,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types.contenttypeprefix.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentTypePrefix"},{"id":180,"kind":16,"name":"Image","url":"enums/roosterjs_editor_types.contenttypeprefix.html#image","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentTypePrefix"},{"id":181,"kind":4,"name":"ContentType","url":"enums/roosterjs_editor_types.contenttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":182,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types.contenttype.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentType"},{"id":183,"kind":16,"name":"HTML","url":"enums/roosterjs_editor_types.contenttype.html#html","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentType"},{"id":184,"kind":4,"name":"Alignment","url":"enums/roosterjs_editor_types.alignment.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":185,"kind":16,"name":"Left","url":"enums/roosterjs_editor_types.alignment.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":186,"kind":16,"name":"Center","url":"enums/roosterjs_editor_types.alignment.html#center","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":187,"kind":16,"name":"Right","url":"enums/roosterjs_editor_types.alignment.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":188,"kind":4,"name":"ChangeSource","url":"enums/roosterjs_editor_types.changesource.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":189,"kind":16,"name":"AutoLink","url":"enums/roosterjs_editor_types.changesource.html#autolink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":190,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types.changesource.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":191,"kind":16,"name":"Format","url":"enums/roosterjs_editor_types.changesource.html#format","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":192,"kind":16,"name":"ImageResize","url":"enums/roosterjs_editor_types.changesource.html#imageresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":193,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types.changesource.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":194,"kind":16,"name":"SetContent","url":"enums/roosterjs_editor_types.changesource.html#setcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":195,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types.changesource.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":196,"kind":16,"name":"Drop","url":"enums/roosterjs_editor_types.changesource.html#drop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":197,"kind":16,"name":"InsertEntity","url":"enums/roosterjs_editor_types.changesource.html#insertentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":198,"kind":16,"name":"SwitchToDarkMode","url":"enums/roosterjs_editor_types.changesource.html#switchtodarkmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":199,"kind":16,"name":"SwitchToLightMode","url":"enums/roosterjs_editor_types.changesource.html#switchtolightmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":200,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types.changesource.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":201,"kind":16,"name":"Keyboard","url":"enums/roosterjs_editor_types.changesource.html#keyboard","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":202,"kind":4,"name":"ColorTransformDirection","url":"enums/roosterjs_editor_types.colortransformdirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":203,"kind":16,"name":"LightToDark","url":"enums/roosterjs_editor_types.colortransformdirection.html#lighttodark","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ColorTransformDirection"},{"id":204,"kind":16,"name":"DarkToLight","url":"enums/roosterjs_editor_types.colortransformdirection.html#darktolight","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ColorTransformDirection"},{"id":205,"kind":4,"name":"ContentPosition","url":"enums/roosterjs_editor_types.contentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":206,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types.contentposition.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":207,"kind":16,"name":"End","url":"enums/roosterjs_editor_types.contentposition.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":208,"kind":16,"name":"DomEnd","url":"enums/roosterjs_editor_types.contentposition.html#domend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":209,"kind":16,"name":"SelectionStart","url":"enums/roosterjs_editor_types.contentposition.html#selectionstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":210,"kind":16,"name":"Outside","url":"enums/roosterjs_editor_types.contentposition.html#outside","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":211,"kind":16,"name":"Range","url":"enums/roosterjs_editor_types.contentposition.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":212,"kind":4,"name":"DarkModeDatasetNames","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":213,"kind":16,"name":"OriginalStyleColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalstylecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":214,"kind":16,"name":"OriginalStyleBackgroundColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalstylebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":215,"kind":16,"name":"OriginalAttributeColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalattributecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":216,"kind":16,"name":"OriginalAttributeBackgroundColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalattributebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":217,"kind":4,"name":"DelimiterClasses","url":"enums/roosterjs_editor_types.delimiterclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":218,"kind":16,"name":"DELIMITER_BEFORE","url":"enums/roosterjs_editor_types.delimiterclasses.html#delimiter_before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DelimiterClasses"},{"id":219,"kind":16,"name":"DELIMITER_AFTER","url":"enums/roosterjs_editor_types.delimiterclasses.html#delimiter_after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DelimiterClasses"},{"id":220,"kind":4,"name":"Direction","url":"enums/roosterjs_editor_types.direction.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":221,"kind":16,"name":"LeftToRight","url":"enums/roosterjs_editor_types.direction.html#lefttoright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Direction"},{"id":222,"kind":16,"name":"RightToLeft","url":"enums/roosterjs_editor_types.direction.html#righttoleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Direction"},{"id":223,"kind":4,"name":"EntityClasses","url":"enums/roosterjs_editor_types.entityclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":224,"kind":16,"name":"ENTITY_INFO_NAME","url":"enums/roosterjs_editor_types.entityclasses.html#entity_info_name","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":225,"kind":16,"name":"ENTITY_TYPE_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_type_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":226,"kind":16,"name":"ENTITY_ID_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_id_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":227,"kind":16,"name":"ENTITY_READONLY_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_readonly_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":228,"kind":4,"name":"EntityOperation","url":"enums/roosterjs_editor_types.entityoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":229,"kind":16,"name":"NewEntity","url":"enums/roosterjs_editor_types.entityoperation.html#newentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":230,"kind":16,"name":"Click","url":"enums/roosterjs_editor_types.entityoperation.html#click","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":231,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types.entityoperation.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":232,"kind":16,"name":"Escape","url":"enums/roosterjs_editor_types.entityoperation.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":233,"kind":16,"name":"RemoveFromStart","url":"enums/roosterjs_editor_types.entityoperation.html#removefromstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":234,"kind":16,"name":"RemoveFromEnd","url":"enums/roosterjs_editor_types.entityoperation.html#removefromend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":235,"kind":16,"name":"Overwrite","url":"enums/roosterjs_editor_types.entityoperation.html#overwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":236,"kind":16,"name":"PartialOverwrite","url":"enums/roosterjs_editor_types.entityoperation.html#partialoverwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":237,"kind":16,"name":"ReplaceTemporaryContent","url":"enums/roosterjs_editor_types.entityoperation.html#replacetemporarycontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":238,"kind":16,"name":"AddShadowRoot","url":"enums/roosterjs_editor_types.entityoperation.html#addshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":239,"kind":16,"name":"RemoveShadowRoot","url":"enums/roosterjs_editor_types.entityoperation.html#removeshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":240,"kind":16,"name":"UpdateEntityState","url":"enums/roosterjs_editor_types.entityoperation.html#updateentitystate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":241,"kind":4,"name":"ExperimentalFeatures","url":"enums/roosterjs_editor_types.experimentalfeatures.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":242,"kind":16,"name":"NewIndentation","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newindentation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":243,"kind":16,"name":"NewBullet","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newbullet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":244,"kind":16,"name":"NewNumbering","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newnumbering","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":245,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types.experimentalfeatures.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":246,"kind":16,"name":"MergePastedLine","url":"enums/roosterjs_editor_types.experimentalfeatures.html#mergepastedline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":247,"kind":16,"name":"SingleDirectionResize","url":"enums/roosterjs_editor_types.experimentalfeatures.html#singledirectionresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":248,"kind":16,"name":"PasteWithLinkPreview","url":"enums/roosterjs_editor_types.experimentalfeatures.html#pastewithlinkpreview","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":249,"kind":16,"name":"ImageRotate","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imagerotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":250,"kind":16,"name":"ImageCrop","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imagecrop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":251,"kind":16,"name":"AlwaysApplyDefaultFormat","url":"enums/roosterjs_editor_types.experimentalfeatures.html#alwaysapplydefaultformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":252,"kind":16,"name":"ConvertSingleImageBody","url":"enums/roosterjs_editor_types.experimentalfeatures.html#convertsingleimagebody","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":253,"kind":16,"name":"TableAlignment","url":"enums/roosterjs_editor_types.experimentalfeatures.html#tablealignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":254,"kind":16,"name":"AdaptiveHandlesResizer","url":"enums/roosterjs_editor_types.experimentalfeatures.html#adaptivehandlesresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":255,"kind":16,"name":"AutoHyphen","url":"enums/roosterjs_editor_types.experimentalfeatures.html#autohyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":256,"kind":16,"name":"PendingStyleBasedFormat","url":"enums/roosterjs_editor_types.experimentalfeatures.html#pendingstylebasedformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":257,"kind":16,"name":"NormalizeList","url":"enums/roosterjs_editor_types.experimentalfeatures.html#normalizelist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":258,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":259,"kind":16,"name":"VariableBasedDarkColor","url":"enums/roosterjs_editor_types.experimentalfeatures.html#variablebaseddarkcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":260,"kind":16,"name":"ListItemAlignment","url":"enums/roosterjs_editor_types.experimentalfeatures.html#listitemalignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":261,"kind":16,"name":"DefaultFormatInSpan","url":"enums/roosterjs_editor_types.experimentalfeatures.html#defaultformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":262,"kind":16,"name":"DefaultFormatOnContainer","url":"enums/roosterjs_editor_types.experimentalfeatures.html#defaultformatoncontainer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":263,"kind":16,"name":"ReusableContentModel","url":"enums/roosterjs_editor_types.experimentalfeatures.html#reusablecontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":264,"kind":16,"name":"EditWithContentModel","url":"enums/roosterjs_editor_types.experimentalfeatures.html#editwithcontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":265,"kind":16,"name":"TabKeyTextFeatures","url":"enums/roosterjs_editor_types.experimentalfeatures.html#tabkeytextfeatures","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":266,"kind":16,"name":"AutoFormatList","url":"enums/roosterjs_editor_types.experimentalfeatures.html#autoformatlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":267,"kind":16,"name":"ReuseAllAncestorListElements","url":"enums/roosterjs_editor_types.experimentalfeatures.html#reuseallancestorlistelements","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":268,"kind":16,"name":"DeleteTableWithBackspace","url":"enums/roosterjs_editor_types.experimentalfeatures.html#deletetablewithbackspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":269,"kind":16,"name":"InlineEntityReadOnlyDelimiters","url":"enums/roosterjs_editor_types.experimentalfeatures.html#inlineentityreadonlydelimiters","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":270,"kind":16,"name":"ContentModelPaste","url":"enums/roosterjs_editor_types.experimentalfeatures.html#contentmodelpaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":271,"kind":16,"name":"DisableListChain","url":"enums/roosterjs_editor_types.experimentalfeatures.html#disablelistchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":272,"kind":4,"name":"FontSizeChange","url":"enums/roosterjs_editor_types.fontsizechange.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":273,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types.fontsizechange.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.FontSizeChange"},{"id":274,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types.fontsizechange.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.FontSizeChange"},{"id":275,"kind":4,"name":"GetContentMode","url":"enums/roosterjs_editor_types.getcontentmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":276,"kind":16,"name":"CleanHTML","url":"enums/roosterjs_editor_types.getcontentmode.html#cleanhtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":277,"kind":16,"name":"RawHTMLOnly","url":"enums/roosterjs_editor_types.getcontentmode.html#rawhtmlonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":278,"kind":16,"name":"RawHTMLWithSelection","url":"enums/roosterjs_editor_types.getcontentmode.html#rawhtmlwithselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":279,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types.getcontentmode.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":280,"kind":16,"name":"PlainTextFast","url":"enums/roosterjs_editor_types.getcontentmode.html#plaintextfast","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":281,"kind":4,"name":"Indentation","url":"enums/roosterjs_editor_types.indentation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":282,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types.indentation.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Indentation"},{"id":283,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types.indentation.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Indentation"},{"id":284,"kind":4,"name":"Capitalization","url":"enums/roosterjs_editor_types.capitalization.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":285,"kind":16,"name":"Sentence","url":"enums/roosterjs_editor_types.capitalization.html#sentence","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":286,"kind":16,"name":"Lowercase","url":"enums/roosterjs_editor_types.capitalization.html#lowercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":287,"kind":16,"name":"Uppercase","url":"enums/roosterjs_editor_types.capitalization.html#uppercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":288,"kind":16,"name":"CapitalizeEachWord","url":"enums/roosterjs_editor_types.capitalization.html#capitalizeeachword","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":289,"kind":4,"name":"ListType","url":"enums/roosterjs_editor_types.listtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":290,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.listtype.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":291,"kind":16,"name":"Ordered","url":"enums/roosterjs_editor_types.listtype.html#ordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":292,"kind":16,"name":"Unordered","url":"enums/roosterjs_editor_types.listtype.html#unordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":293,"kind":4,"name":"PositionType","url":"enums/roosterjs_editor_types.positiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":294,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types.positiontype.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":295,"kind":16,"name":"End","url":"enums/roosterjs_editor_types.positiontype.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":296,"kind":16,"name":"Before","url":"enums/roosterjs_editor_types.positiontype.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":297,"kind":16,"name":"After","url":"enums/roosterjs_editor_types.positiontype.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":298,"kind":4,"name":"QueryScope","url":"enums/roosterjs_editor_types.queryscope.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":299,"kind":16,"name":"Body","url":"enums/roosterjs_editor_types.queryscope.html#body","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":300,"kind":16,"name":"OnSelection","url":"enums/roosterjs_editor_types.queryscope.html#onselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":301,"kind":16,"name":"InSelection","url":"enums/roosterjs_editor_types.queryscope.html#inselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":302,"kind":4,"name":"RegionType","url":"enums/roosterjs_editor_types.regiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":303,"kind":16,"name":"Table","url":"enums/roosterjs_editor_types.regiontype.html#table","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.RegionType"},{"id":304,"kind":4,"name":"TableOperation","url":"enums/roosterjs_editor_types.tableoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":305,"kind":16,"name":"InsertAbove","url":"enums/roosterjs_editor_types.tableoperation.html#insertabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":306,"kind":16,"name":"InsertBelow","url":"enums/roosterjs_editor_types.tableoperation.html#insertbelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":307,"kind":16,"name":"InsertLeft","url":"enums/roosterjs_editor_types.tableoperation.html#insertleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":308,"kind":16,"name":"InsertRight","url":"enums/roosterjs_editor_types.tableoperation.html#insertright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":309,"kind":16,"name":"DeleteTable","url":"enums/roosterjs_editor_types.tableoperation.html#deletetable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":310,"kind":16,"name":"DeleteColumn","url":"enums/roosterjs_editor_types.tableoperation.html#deletecolumn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":311,"kind":16,"name":"DeleteRow","url":"enums/roosterjs_editor_types.tableoperation.html#deleterow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":312,"kind":16,"name":"MergeAbove","url":"enums/roosterjs_editor_types.tableoperation.html#mergeabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":313,"kind":16,"name":"MergeBelow","url":"enums/roosterjs_editor_types.tableoperation.html#mergebelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":314,"kind":16,"name":"MergeLeft","url":"enums/roosterjs_editor_types.tableoperation.html#mergeleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":315,"kind":16,"name":"MergeRight","url":"enums/roosterjs_editor_types.tableoperation.html#mergeright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":316,"kind":16,"name":"MergeCells","url":"enums/roosterjs_editor_types.tableoperation.html#mergecells","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":317,"kind":16,"name":"SplitHorizontally","url":"enums/roosterjs_editor_types.tableoperation.html#splithorizontally","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":318,"kind":16,"name":"SplitVertically","url":"enums/roosterjs_editor_types.tableoperation.html#splitvertically","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":319,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_editor_types.tableoperation.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":320,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_editor_types.tableoperation.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":321,"kind":16,"name":"AlignRight","url":"enums/roosterjs_editor_types.tableoperation.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":322,"kind":16,"name":"AlignCellLeft","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":323,"kind":16,"name":"AlignCellCenter","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellcenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":324,"kind":16,"name":"AlignCellRight","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":325,"kind":16,"name":"AlignCellTop","url":"enums/roosterjs_editor_types.tableoperation.html#aligncelltop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":326,"kind":16,"name":"AlignCellMiddle","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellmiddle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":327,"kind":16,"name":"AlignCellBottom","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellbottom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":328,"kind":4,"name":"ImageEditOperation","url":"enums/roosterjs_editor_types.imageeditoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":329,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.imageeditoperation.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":330,"kind":16,"name":"CornerResize","url":"enums/roosterjs_editor_types.imageeditoperation.html#cornerresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":331,"kind":16,"name":"SideResize","url":"enums/roosterjs_editor_types.imageeditoperation.html#sideresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":332,"kind":16,"name":"Resize","url":"enums/roosterjs_editor_types.imageeditoperation.html#resize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":333,"kind":16,"name":"Rotate","url":"enums/roosterjs_editor_types.imageeditoperation.html#rotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":334,"kind":16,"name":"ResizeAndRotate","url":"enums/roosterjs_editor_types.imageeditoperation.html#resizeandrotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":335,"kind":16,"name":"Crop","url":"enums/roosterjs_editor_types.imageeditoperation.html#crop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":336,"kind":16,"name":"All","url":"enums/roosterjs_editor_types.imageeditoperation.html#all","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":337,"kind":4,"name":"ClearFormatMode","url":"enums/roosterjs_editor_types.clearformatmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":338,"kind":16,"name":"Inline","url":"enums/roosterjs_editor_types.clearformatmode.html#inline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":339,"kind":16,"name":"Block","url":"enums/roosterjs_editor_types.clearformatmode.html#block","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":340,"kind":16,"name":"AutoDetect","url":"enums/roosterjs_editor_types.clearformatmode.html#autodetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":341,"kind":4,"name":"KnownCreateElementDataIndex","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":342,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":343,"kind":16,"name":"EmptyLine","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#emptyline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":344,"kind":16,"name":"BlockquoteWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#blockquotewrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":345,"kind":16,"name":"CopyPasteTempDiv","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#copypastetempdiv","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":346,"kind":16,"name":"BlockListItem","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#blocklistitem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":347,"kind":16,"name":"ContextMenuWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#contextmenuwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":348,"kind":16,"name":"ImageEditWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#imageeditwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":349,"kind":16,"name":"TableHorizontalResizer","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tablehorizontalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":350,"kind":16,"name":"TableVerticalResizer","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableverticalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":351,"kind":16,"name":"TableResizerLTR","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableresizerltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":352,"kind":16,"name":"TableResizerRTL","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableresizerrtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":353,"kind":16,"name":"TableSelector","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableselector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":354,"kind":16,"name":"EmptyLineFormatInSpan","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#emptylineformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":355,"kind":4,"name":"KnownPasteSourceType","url":"enums/roosterjs_editor_types.knownpastesourcetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":356,"kind":16,"name":"WordDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#worddesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":357,"kind":16,"name":"ExcelDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#exceldesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":358,"kind":16,"name":"ExcelOnline","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#excelonline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":359,"kind":16,"name":"PowerPointDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#powerpointdesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":360,"kind":16,"name":"GoogleSheets","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#googlesheets","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":361,"kind":16,"name":"WacComponents","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#waccomponents","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":362,"kind":16,"name":"Default","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":363,"kind":16,"name":"SingleImage","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#singleimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":364,"kind":4,"name":"TableBorderFormat","url":"enums/roosterjs_editor_types.tableborderformat.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":365,"kind":16,"name":"DEFAULT","url":"enums/roosterjs_editor_types.tableborderformat.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":366,"kind":16,"name":"LIST_WITH_SIDE_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#list_with_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":367,"kind":16,"name":"NO_HEADER_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#no_header_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":368,"kind":16,"name":"NO_SIDE_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#no_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":369,"kind":16,"name":"FIRST_COLUMN_HEADER_EXTERNAL","url":"enums/roosterjs_editor_types.tableborderformat.html#first_column_header_external","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":370,"kind":16,"name":"ESPECIAL_TYPE_1","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":371,"kind":16,"name":"ESPECIAL_TYPE_2","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_2","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":372,"kind":16,"name":"ESPECIAL_TYPE_3","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_3","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":373,"kind":16,"name":"CLEAR","url":"enums/roosterjs_editor_types.tableborderformat.html#clear","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":374,"kind":4,"name":"PluginEventType","url":"enums/roosterjs_editor_types.plugineventtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":375,"kind":16,"name":"KeyDown","url":"enums/roosterjs_editor_types.plugineventtype.html#keydown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":376,"kind":16,"name":"KeyPress","url":"enums/roosterjs_editor_types.plugineventtype.html#keypress","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":377,"kind":16,"name":"KeyUp","url":"enums/roosterjs_editor_types.plugineventtype.html#keyup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":378,"kind":16,"name":"Input","url":"enums/roosterjs_editor_types.plugineventtype.html#input","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":379,"kind":16,"name":"CompositionEnd","url":"enums/roosterjs_editor_types.plugineventtype.html#compositionend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":380,"kind":16,"name":"MouseDown","url":"enums/roosterjs_editor_types.plugineventtype.html#mousedown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":381,"kind":16,"name":"MouseUp","url":"enums/roosterjs_editor_types.plugineventtype.html#mouseup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":382,"kind":16,"name":"ContentChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":383,"kind":16,"name":"ExtractContentWithDom","url":"enums/roosterjs_editor_types.plugineventtype.html#extractcontentwithdom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":384,"kind":16,"name":"BeforeCutCopy","url":"enums/roosterjs_editor_types.plugineventtype.html#beforecutcopy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":385,"kind":16,"name":"BeforePaste","url":"enums/roosterjs_editor_types.plugineventtype.html#beforepaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":386,"kind":16,"name":"EditorReady","url":"enums/roosterjs_editor_types.plugineventtype.html#editorready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":387,"kind":16,"name":"BeforeDispose","url":"enums/roosterjs_editor_types.plugineventtype.html#beforedispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":388,"kind":16,"name":"PendingFormatStateChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#pendingformatstatechanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":389,"kind":16,"name":"Scroll","url":"enums/roosterjs_editor_types.plugineventtype.html#scroll","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":390,"kind":16,"name":"EntityOperation","url":"enums/roosterjs_editor_types.plugineventtype.html#entityoperation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":391,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types.plugineventtype.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":392,"kind":16,"name":"EnteredShadowEdit","url":"enums/roosterjs_editor_types.plugineventtype.html#enteredshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":393,"kind":16,"name":"LeavingShadowEdit","url":"enums/roosterjs_editor_types.plugineventtype.html#leavingshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":394,"kind":16,"name":"EditImage","url":"enums/roosterjs_editor_types.plugineventtype.html#editimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":395,"kind":16,"name":"BeforeSetContent","url":"enums/roosterjs_editor_types.plugineventtype.html#beforesetcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":396,"kind":16,"name":"ZoomChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#zoomchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":397,"kind":16,"name":"SelectionChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#selectionchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":398,"kind":16,"name":"BeforeKeyboardEditing","url":"enums/roosterjs_editor_types.plugineventtype.html#beforekeyboardediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":399,"kind":4,"name":"SelectionRangeTypes","url":"enums/roosterjs_editor_types.selectionrangetypes.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":400,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types.selectionrangetypes.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":401,"kind":16,"name":"TableSelection","url":"enums/roosterjs_editor_types.selectionrangetypes.html#tableselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":402,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types.selectionrangetypes.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":403,"kind":4,"name":"NumberingListType","url":"enums/roosterjs_editor_types.numberinglisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":404,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types.numberinglisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":405,"kind":16,"name":"Decimal","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":406,"kind":16,"name":"DecimalDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimaldash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":407,"kind":16,"name":"DecimalParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimalparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":408,"kind":16,"name":"DecimalDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimaldoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":409,"kind":16,"name":"LowerAlpha","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":410,"kind":16,"name":"LowerAlphaParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":411,"kind":16,"name":"LowerAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":412,"kind":16,"name":"LowerAlphaDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":413,"kind":16,"name":"UpperAlpha","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":414,"kind":16,"name":"UpperAlphaParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":415,"kind":16,"name":"UpperAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":416,"kind":16,"name":"UpperAlphaDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":417,"kind":16,"name":"LowerRoman","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":418,"kind":16,"name":"LowerRomanParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":419,"kind":16,"name":"LowerRomanDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":420,"kind":16,"name":"LowerRomanDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":421,"kind":16,"name":"UpperRoman","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":422,"kind":16,"name":"UpperRomanParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":423,"kind":16,"name":"UpperRomanDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":424,"kind":16,"name":"UpperRomanDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":425,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types.numberinglisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":426,"kind":4,"name":"BulletListType","url":"enums/roosterjs_editor_types.bulletlisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":427,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types.bulletlisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":428,"kind":16,"name":"Disc","url":"enums/roosterjs_editor_types.bulletlisttype.html#disc","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":429,"kind":16,"name":"Dash","url":"enums/roosterjs_editor_types.bulletlisttype.html#dash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":430,"kind":16,"name":"Square","url":"enums/roosterjs_editor_types.bulletlisttype.html#square","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":431,"kind":16,"name":"ShortArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#shortarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":432,"kind":16,"name":"LongArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#longarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":433,"kind":16,"name":"UnfilledArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#unfilledarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":434,"kind":16,"name":"Hyphen","url":"enums/roosterjs_editor_types.bulletlisttype.html#hyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":435,"kind":16,"name":"DoubleLongArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#doublelongarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":436,"kind":16,"name":"Circle","url":"enums/roosterjs_editor_types.bulletlisttype.html#circle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":437,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types.bulletlisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":438,"kind":4,"name":"DefinitionType","url":"enums/roosterjs_editor_types.definitiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":439,"kind":16,"name":"Boolean","url":"enums/roosterjs_editor_types.definitiontype.html#boolean","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":440,"kind":16,"name":"Number","url":"enums/roosterjs_editor_types.definitiontype.html#number","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":441,"kind":16,"name":"String","url":"enums/roosterjs_editor_types.definitiontype.html#string","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":442,"kind":16,"name":"Array","url":"enums/roosterjs_editor_types.definitiontype.html#array","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":443,"kind":16,"name":"Object","url":"enums/roosterjs_editor_types.definitiontype.html#object","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":444,"kind":16,"name":"Customize","url":"enums/roosterjs_editor_types.definitiontype.html#customize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":445,"kind":4,"name":"PasteType","url":"enums/roosterjs_editor_types.pastetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":446,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types.pastetype.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":447,"kind":16,"name":"AsPlainText","url":"enums/roosterjs_editor_types.pastetype.html#asplaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":448,"kind":16,"name":"MergeFormat","url":"enums/roosterjs_editor_types.pastetype.html#mergeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":449,"kind":16,"name":"AsImage","url":"enums/roosterjs_editor_types.pastetype.html#asimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":450,"kind":256,"name":"BeforeCutCopyEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":451,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":452,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":453,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":454,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":455,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":456,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":457,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":458,"kind":256,"name":"BeforeCutCopyEventData","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":459,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":460,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":461,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":462,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":463,"kind":256,"name":"CompatibleBeforeCutCopyEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":464,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":465,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":466,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":467,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":468,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":469,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":470,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":471,"kind":256,"name":"BasePluginEvent","url":"interfaces/roosterjs_editor_types.basepluginevent.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":472,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.basepluginevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":473,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.basepluginevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":474,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.basepluginevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":475,"kind":256,"name":"BeforeDisposeEvent","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":476,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":477,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":478,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":479,"kind":256,"name":"CompatibleBeforeDisposeEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":480,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":481,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":482,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":483,"kind":256,"name":"BeforePasteEvent","url":"interfaces/roosterjs_editor_types.beforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":484,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":485,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":486,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":487,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":488,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":489,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":490,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":491,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":492,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":493,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":494,"kind":256,"name":"BeforePasteEventData","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":495,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":496,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":497,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":498,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":499,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":500,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":501,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":502,"kind":256,"name":"CompatibleBeforePasteEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":503,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":504,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":505,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":506,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":507,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":508,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":509,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":510,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":511,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":512,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":513,"kind":256,"name":"BeforeSetContentEvent","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":514,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":515,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":516,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":517,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":518,"kind":256,"name":"BeforeSetContentEventData","url":"interfaces/roosterjs_editor_types.beforesetcontenteventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":519,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.beforesetcontenteventdata.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeSetContentEventData"},{"id":520,"kind":256,"name":"CompatibleBeforeSetContentEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":521,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":522,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":523,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":524,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":525,"kind":256,"name":"ContentChangedEvent","url":"interfaces/roosterjs_editor_types.contentchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":526,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#source","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":527,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":528,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":529,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":530,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":531,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":532,"kind":256,"name":"ContentChangedEventData","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":533,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#source","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":534,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":535,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":536,"kind":256,"name":"CompatibleContentChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":537,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#source","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":538,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":539,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":540,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":541,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":542,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":543,"kind":256,"name":"EditImageEvent","url":"interfaces/roosterjs_editor_types.editimageevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":544,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.editimageevent.html#image","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":545,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":546,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":547,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":548,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.editimageevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":549,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.editimageevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":550,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editimageevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEvent"},{"id":551,"kind":256,"name":"EditImageEventData","url":"interfaces/roosterjs_editor_types.editimageeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":552,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":553,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":554,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":555,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":556,"kind":256,"name":"CompatibleEditImageEvent","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":557,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#image","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":558,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":559,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":560,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":561,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":562,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":563,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":564,"kind":256,"name":"EditorReadyEvent","url":"interfaces/roosterjs_editor_types.editorreadyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":565,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":566,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":567,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":568,"kind":256,"name":"CompatibleEditorReadyEvent","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":569,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":570,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":571,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":572,"kind":256,"name":"EntityOperationEvent","url":"interfaces/roosterjs_editor_types.entityoperationevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":573,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":574,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":575,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":576,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#state","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":577,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":578,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":579,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":580,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":581,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":582,"kind":256,"name":"EntityOperationEventData","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":583,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":584,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":585,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":586,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":587,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":588,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":589,"kind":256,"name":"CompatibleEntityOperationEvent","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":590,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":591,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":592,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":593,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#state","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":594,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":595,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":596,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":597,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":598,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":599,"kind":256,"name":"ExtractContentWithDomEvent","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":600,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":601,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":602,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":603,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":604,"kind":256,"name":"ExtractContentWithDomEventData","url":"interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":605,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractContentWithDomEventData"},{"id":606,"kind":256,"name":"CompatibleExtractContentWithDomEvent","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":607,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":608,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":609,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":610,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":611,"kind":256,"name":"PendingFormatStateChangedEvent","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":612,"kind":1024,"name":"formatState","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#formatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":613,"kind":1024,"name":"formatCallback","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#formatcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":614,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":615,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":616,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":617,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":618,"kind":256,"name":"CompatiblePendingFormatStateChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":619,"kind":1024,"name":"formatState","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#formatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":620,"kind":1024,"name":"formatCallback","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#formatcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":621,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":622,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":623,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":624,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":625,"kind":4194304,"name":"PluginDomEvent","url":"modules/roosterjs_editor_types.html#plugindomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":626,"kind":256,"name":"PluginDomEventBase","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":627,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":628,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":629,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":630,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":631,"kind":256,"name":"PluginCompositionEvent","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":632,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":633,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":634,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":635,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":636,"kind":256,"name":"PluginContextMenuEvent","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":637,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#items","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":638,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":639,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":640,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":641,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":642,"kind":4194304,"name":"PluginKeyboardEvent","url":"modules/roosterjs_editor_types.html#pluginkeyboardevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":643,"kind":256,"name":"PluginKeyDownEvent","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":644,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":645,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":646,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":647,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":648,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":649,"kind":256,"name":"PluginKeyPressEvent","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":650,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":651,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":652,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":653,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":654,"kind":256,"name":"PluginKeyUpEvent","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":655,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":656,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":657,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":658,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":659,"kind":4194304,"name":"PluginMouseEvent","url":"modules/roosterjs_editor_types.html#pluginmouseevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":660,"kind":256,"name":"PluginMouseDownEvent","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":661,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":662,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":663,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":664,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":665,"kind":256,"name":"PluginMouseUpEvent","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":666,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":667,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":668,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":669,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":670,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":671,"kind":256,"name":"PluginInputEvent","url":"interfaces/roosterjs_editor_types.plugininputevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":672,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugininputevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":673,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugininputevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":674,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugininputevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":675,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugininputevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":676,"kind":256,"name":"PluginScrollEvent","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":677,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":678,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":679,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":680,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":681,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":682,"kind":4194304,"name":"CompatiblePluginDomEvent","url":"modules/roosterjs_editor_types.html#compatibleplugindomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":683,"kind":256,"name":"CompatiblePluginCompositionEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":684,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":685,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":686,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":687,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":688,"kind":256,"name":"CompatiblePluginContextMenuEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":689,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#items","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":690,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":691,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":692,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":693,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":694,"kind":4194304,"name":"CompatiblePluginKeyboardEvent","url":"modules/roosterjs_editor_types.html#compatiblepluginkeyboardevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":695,"kind":256,"name":"CompatiblePluginKeyDownEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":696,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":697,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":698,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":699,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":700,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":701,"kind":256,"name":"CompatiblePluginKeyPressEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":702,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":703,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":704,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":705,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":706,"kind":256,"name":"CompatiblePluginKeyUpEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":707,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":708,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":709,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":710,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":711,"kind":4194304,"name":"CompatiblePluginMouseEvent","url":"modules/roosterjs_editor_types.html#compatiblepluginmouseevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":712,"kind":256,"name":"CompatiblePluginMouseDownEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":713,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":714,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":715,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":716,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":717,"kind":256,"name":"CompatiblePluginMouseUpEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":718,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":719,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":720,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":721,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":722,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":723,"kind":256,"name":"CompatiblePluginInputEvent","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":724,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":725,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":726,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":727,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":728,"kind":256,"name":"CompatiblePluginScrollEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":729,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":730,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":731,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":732,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":733,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":734,"kind":256,"name":"PluginScrollEventData","url":"interfaces/roosterjs_editor_types.pluginscrolleventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":735,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.pluginscrolleventdata.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginScrollEventData"},{"id":736,"kind":256,"name":"PluginMouseUpEventData","url":"interfaces/roosterjs_editor_types.pluginmouseupeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":737,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.pluginmouseupeventdata.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseUpEventData"},{"id":738,"kind":256,"name":"PluginContextMenuEventData","url":"interfaces/roosterjs_editor_types.plugincontextmenueventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":739,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.plugincontextmenueventdata.html#items","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginContextMenuEventData"},{"id":740,"kind":256,"name":"PluginKeyDownEventData","url":"interfaces/roosterjs_editor_types.pluginkeydowneventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":741,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.pluginkeydowneventdata.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyDownEventData"},{"id":742,"kind":4194304,"name":"PluginEvent","url":"modules/roosterjs_editor_types.html#pluginevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":743,"kind":4194304,"name":"PluginEventData","url":"modules/roosterjs_editor_types.html#plugineventdata","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":744,"kind":4194304,"name":"PluginEventDataGeneric","url":"modules/roosterjs_editor_types.html#plugineventdatageneric","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":745,"kind":4194304,"name":"PluginEventFromType","url":"modules/roosterjs_editor_types.html#plugineventfromtype","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":746,"kind":4194304,"name":"PluginEventFromTypeGeneric","url":"modules/roosterjs_editor_types.html#plugineventfromtypegeneric","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":747,"kind":256,"name":"EnterShadowEditEvent","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":748,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":749,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":750,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":751,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":752,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":753,"kind":256,"name":"LeaveShadowEditEvent","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":754,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":755,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":756,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":757,"kind":256,"name":"EnterShadowEditEventData","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":758,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEventData"},{"id":759,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEventData"},{"id":760,"kind":256,"name":"CompatibleEnterShadowEditEvent","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":761,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":762,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":763,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":764,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":765,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":766,"kind":256,"name":"CompatibleLeaveShadowEditEvent","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":767,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":768,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":769,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":770,"kind":256,"name":"ZoomChangedEvent","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":771,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":772,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":773,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":774,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":775,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":776,"kind":256,"name":"ZoomChangedEventData","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":777,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEventData"},{"id":778,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEventData"},{"id":779,"kind":256,"name":"CompatibleZoomChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":780,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":781,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":782,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":783,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":784,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":785,"kind":256,"name":"SelectionChangedEvent","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":786,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":787,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":788,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":789,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":790,"kind":256,"name":"SelectionChangedEventData","url":"interfaces/roosterjs_editor_types.selectionchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":791,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.selectionchangedeventdata.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionChangedEventData"},{"id":792,"kind":256,"name":"CompatibleSelectionChangedEvent","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":793,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":794,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":795,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":796,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":797,"kind":256,"name":"BeforeKeyboardEditingEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":798,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":799,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":800,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":801,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":802,"kind":256,"name":"BeforeKeyboardEditingData","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":803,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeKeyboardEditingData"},{"id":804,"kind":256,"name":"CompatibleBeforeKeyboardEditingEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":805,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":806,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":807,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":808,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":809,"kind":256,"name":"BlockElement","url":"interfaces/roosterjs_editor_types.blockelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":810,"kind":2048,"name":"collapseToSingleElement","url":"interfaces/roosterjs_editor_types.blockelement.html#collapsetosingleelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":811,"kind":2048,"name":"getStartNode","url":"interfaces/roosterjs_editor_types.blockelement.html#getstartnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":812,"kind":2048,"name":"getEndNode","url":"interfaces/roosterjs_editor_types.blockelement.html#getendnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":813,"kind":2048,"name":"equals","url":"interfaces/roosterjs_editor_types.blockelement.html#equals","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":814,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.blockelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":815,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.blockelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":816,"kind":2048,"name":"getTextContent","url":"interfaces/roosterjs_editor_types.blockelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":817,"kind":256,"name":"ClipboardData","url":"interfaces/roosterjs_editor_types.clipboarddata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":818,"kind":1024,"name":"types","url":"interfaces/roosterjs_editor_types.clipboarddata.html#types","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":819,"kind":1024,"name":"text","url":"interfaces/roosterjs_editor_types.clipboarddata.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":820,"kind":1024,"name":"rawHtml","url":"interfaces/roosterjs_editor_types.clipboarddata.html#rawhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":821,"kind":1024,"name":"linkPreview","url":"interfaces/roosterjs_editor_types.clipboarddata.html#linkpreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":822,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.clipboarddata.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":823,"kind":1024,"name":"files","url":"interfaces/roosterjs_editor_types.clipboarddata.html#files","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":824,"kind":1024,"name":"html","url":"interfaces/roosterjs_editor_types.clipboarddata.html#html","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":825,"kind":1024,"name":"snapshotBeforePaste","url":"interfaces/roosterjs_editor_types.clipboarddata.html#snapshotbeforepaste","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":826,"kind":1024,"name":"imageDataUri","url":"interfaces/roosterjs_editor_types.clipboarddata.html#imagedatauri","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":827,"kind":1024,"name":"htmlFirstLevelChildTags","url":"interfaces/roosterjs_editor_types.clipboarddata.html#htmlfirstlevelchildtags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":828,"kind":1024,"name":"customValues","url":"interfaces/roosterjs_editor_types.clipboarddata.html#customvalues","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":829,"kind":1024,"name":"pasteNativeEvent","url":"interfaces/roosterjs_editor_types.clipboarddata.html#pastenativeevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":830,"kind":256,"name":"ContextMenuProvider","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":831,"kind":1024,"name":"getContextMenuItems","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#getcontextmenuitems","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":832,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":833,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":834,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":835,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":836,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":837,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":838,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":839,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":840,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":841,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":842,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":843,"kind":256,"name":"CustomData","url":"interfaces/roosterjs_editor_types.customdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":844,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.customdata.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":845,"kind":1024,"name":"disposer","url":"interfaces/roosterjs_editor_types.customdata.html#disposer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":846,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customdata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":847,"kind":256,"name":"ContentChangedData","url":"interfaces/roosterjs_editor_types.contentchangeddata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":848,"kind":1024,"name":"formatApiName","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#formatapiname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":849,"kind":1024,"name":"getEntityState","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#getentitystate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":850,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":851,"kind":256,"name":"DefaultFormat","url":"interfaces/roosterjs_editor_types.defaultformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":852,"kind":1024,"name":"fontFamily","url":"interfaces/roosterjs_editor_types.defaultformat.html#fontfamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":853,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.defaultformat.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":854,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.defaultformat.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":855,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.defaultformat.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":856,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.defaultformat.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":857,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.defaultformat.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":858,"kind":1024,"name":"bold","url":"interfaces/roosterjs_editor_types.defaultformat.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":859,"kind":1024,"name":"italic","url":"interfaces/roosterjs_editor_types.defaultformat.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":860,"kind":1024,"name":"underline","url":"interfaces/roosterjs_editor_types.defaultformat.html#underline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":861,"kind":256,"name":"Entity","url":"interfaces/roosterjs_editor_types.entity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":862,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.entity.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":863,"kind":1024,"name":"id","url":"interfaces/roosterjs_editor_types.entity.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":864,"kind":1024,"name":"wrapper","url":"interfaces/roosterjs_editor_types.entity.html#wrapper","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":865,"kind":1024,"name":"isReadonly","url":"interfaces/roosterjs_editor_types.entity.html#isreadonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":866,"kind":256,"name":"FormatState","url":"interfaces/roosterjs_editor_types.formatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":867,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.formatstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.FormatState"},{"id":868,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.formatstate.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.FormatState"},{"id":869,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_editor_types.formatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":870,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_editor_types.formatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":871,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_editor_types.formatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":872,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_editor_types.formatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":873,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_editor_types.formatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":874,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_editor_types.formatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":875,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_editor_types.formatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":876,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_editor_types.formatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":877,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_editor_types.formatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":878,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_editor_types.formatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":879,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_editor_types.formatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":880,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_editor_types.formatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":881,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_editor_types.formatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":882,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_editor_types.formatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":883,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_editor_types.formatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":884,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_editor_types.formatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":885,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_editor_types.formatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":886,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_editor_types.formatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":887,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_editor_types.formatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":888,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_editor_types.formatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":889,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_editor_types.formatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":890,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.formatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":891,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.formatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":892,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.formatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":893,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.formatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":894,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.formatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":895,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_editor_types.formatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":896,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_editor_types.formatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":897,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_editor_types.formatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":898,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_editor_types.formatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":899,"kind":1024,"name":"direction","url":"interfaces/roosterjs_editor_types.formatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":900,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_editor_types.formatstate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":901,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_editor_types.formatstate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":902,"kind":256,"name":"PendableFormatState","url":"interfaces/roosterjs_editor_types.pendableformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":903,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":904,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":905,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":906,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":907,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":908,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":909,"kind":256,"name":"ElementBasedFormatState","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":910,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":911,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":912,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":913,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":914,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":915,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":916,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":917,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":918,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":919,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":920,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":921,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":922,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":923,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":924,"kind":256,"name":"StyleBasedFormatState","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":925,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":926,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":927,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":928,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":929,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":930,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":931,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":932,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":933,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":934,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":935,"kind":1024,"name":"direction","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":936,"kind":256,"name":"EditorUndoState","url":"interfaces/roosterjs_editor_types.editorundostate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":937,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_editor_types.editorundostate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorUndoState"},{"id":938,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_editor_types.editorundostate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorUndoState"},{"id":939,"kind":256,"name":"ExtractClipboardEventOption","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":940,"kind":1024,"name":"allowLinkPreview","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#allowlinkpreview","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":941,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":942,"kind":1024,"name":"getTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#gettempdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":943,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":944,"kind":1024,"name":"removeTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#removetempdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":945,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":946,"kind":256,"name":"ExtractClipboardItemsOption","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":947,"kind":1024,"name":"allowLinkPreview","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html#allowlinkpreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsOption"},{"id":948,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsOption"},{"id":949,"kind":256,"name":"ExtractClipboardItemsForIEOptions","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":950,"kind":1024,"name":"getTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#gettempdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":951,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":952,"kind":1024,"name":"removeTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#removetempdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":953,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":954,"kind":256,"name":"IContentTraverser","url":"interfaces/roosterjs_editor_types.icontenttraverser.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":955,"kind":1024,"name":"currentBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#currentblockelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":956,"kind":2048,"name":"getNextBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getnextblockelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":957,"kind":2048,"name":"getPreviousBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getpreviousblockelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":958,"kind":1024,"name":"currentInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#currentinlineelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":959,"kind":2048,"name":"getNextInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getnextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":960,"kind":2048,"name":"getPreviousInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getpreviousinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":961,"kind":256,"name":"InlineElement","url":"interfaces/roosterjs_editor_types.inlineelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":962,"kind":2048,"name":"getTextContent","url":"interfaces/roosterjs_editor_types.inlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":963,"kind":2048,"name":"getContainerNode","url":"interfaces/roosterjs_editor_types.inlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":964,"kind":2048,"name":"getParentBlock","url":"interfaces/roosterjs_editor_types.inlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":965,"kind":2048,"name":"getStartPosition","url":"interfaces/roosterjs_editor_types.inlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":966,"kind":2048,"name":"getEndPosition","url":"interfaces/roosterjs_editor_types.inlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":967,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.inlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":968,"kind":2048,"name":"isTextualInlineElement","url":"interfaces/roosterjs_editor_types.inlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":969,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.inlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":970,"kind":2048,"name":"applyStyle","url":"interfaces/roosterjs_editor_types.inlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":971,"kind":4194304,"name":"InsertOption","url":"modules/roosterjs_editor_types.html#insertoption","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":972,"kind":256,"name":"InsertOptionBase","url":"interfaces/roosterjs_editor_types.insertoptionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":973,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":974,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":975,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":976,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":977,"kind":256,"name":"InsertOptionBasic","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":978,"kind":1024,"name":"position","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":979,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":980,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":981,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":982,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":983,"kind":256,"name":"InsertOptionRange","url":"interfaces/roosterjs_editor_types.insertoptionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":984,"kind":1024,"name":"position","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":985,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":986,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":987,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":988,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":989,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":990,"kind":256,"name":"IPositionContentSearcher","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":991,"kind":2048,"name":"getWordBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getwordbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":992,"kind":2048,"name":"getInlineElementBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getinlineelementbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":993,"kind":2048,"name":"getInlineElementAfter","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getinlineelementafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":994,"kind":2048,"name":"getSubStringBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getsubstringbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":995,"kind":2048,"name":"getRangeFromText","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getrangefromtext","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":996,"kind":2048,"name":"forEachTextInlineElement","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#foreachtextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":997,"kind":2048,"name":"getNearestNonTextInlineElement","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getnearestnontextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":998,"kind":256,"name":"LinkData","url":"interfaces/roosterjs_editor_types.linkdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":999,"kind":1024,"name":"scheme","url":"interfaces/roosterjs_editor_types.linkdata.html#scheme","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1000,"kind":1024,"name":"originalUrl","url":"interfaces/roosterjs_editor_types.linkdata.html#originalurl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1001,"kind":1024,"name":"normalizedUrl","url":"interfaces/roosterjs_editor_types.linkdata.html#normalizedurl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1002,"kind":256,"name":"ModeIndependentColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1003,"kind":1024,"name":"darkModeColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html#darkmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ModeIndependentColor"},{"id":1004,"kind":1024,"name":"lightModeColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html#lightmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ModeIndependentColor"},{"id":1005,"kind":256,"name":"NodePosition","url":"interfaces/roosterjs_editor_types.nodeposition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1006,"kind":1024,"name":"node","url":"interfaces/roosterjs_editor_types.nodeposition.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1007,"kind":1024,"name":"element","url":"interfaces/roosterjs_editor_types.nodeposition.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1008,"kind":1024,"name":"offset","url":"interfaces/roosterjs_editor_types.nodeposition.html#offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1009,"kind":1024,"name":"isAtEnd","url":"interfaces/roosterjs_editor_types.nodeposition.html#isatend","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1010,"kind":2048,"name":"normalize","url":"interfaces/roosterjs_editor_types.nodeposition.html#normalize","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1011,"kind":2048,"name":"equalTo","url":"interfaces/roosterjs_editor_types.nodeposition.html#equalto","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1012,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.nodeposition.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1013,"kind":2048,"name":"move","url":"interfaces/roosterjs_editor_types.nodeposition.html#move","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1014,"kind":256,"name":"Rect","url":"interfaces/roosterjs_editor_types.rect.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1015,"kind":1024,"name":"top","url":"interfaces/roosterjs_editor_types.rect.html#top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1016,"kind":1024,"name":"bottom","url":"interfaces/roosterjs_editor_types.rect.html#bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1017,"kind":1024,"name":"left","url":"interfaces/roosterjs_editor_types.rect.html#left","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1018,"kind":1024,"name":"right","url":"interfaces/roosterjs_editor_types.rect.html#right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1019,"kind":256,"name":"Region","url":"interfaces/roosterjs_editor_types.region.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1020,"kind":1024,"name":"fullSelectionStart","url":"interfaces/roosterjs_editor_types.region.html#fullselectionstart","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Region"},{"id":1021,"kind":1024,"name":"fullSelectionEnd","url":"interfaces/roosterjs_editor_types.region.html#fullselectionend","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Region"},{"id":1022,"kind":1024,"name":"rootNode","url":"interfaces/roosterjs_editor_types.region.html#rootnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1023,"kind":1024,"name":"nodeBefore","url":"interfaces/roosterjs_editor_types.region.html#nodebefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1024,"kind":1024,"name":"nodeAfter","url":"interfaces/roosterjs_editor_types.region.html#nodeafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1025,"kind":1024,"name":"skipTags","url":"interfaces/roosterjs_editor_types.region.html#skiptags","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1026,"kind":256,"name":"RegionBase","url":"interfaces/roosterjs_editor_types.regionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1027,"kind":1024,"name":"rootNode","url":"interfaces/roosterjs_editor_types.regionbase.html#rootnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1028,"kind":1024,"name":"nodeBefore","url":"interfaces/roosterjs_editor_types.regionbase.html#nodebefore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1029,"kind":1024,"name":"nodeAfter","url":"interfaces/roosterjs_editor_types.regionbase.html#nodeafter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1030,"kind":1024,"name":"skipTags","url":"interfaces/roosterjs_editor_types.regionbase.html#skiptags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1031,"kind":256,"name":"SelectionPath","url":"interfaces/roosterjs_editor_types.selectionpath.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1032,"kind":1024,"name":"start","url":"interfaces/roosterjs_editor_types.selectionpath.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionPath"},{"id":1033,"kind":1024,"name":"end","url":"interfaces/roosterjs_editor_types.selectionpath.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionPath"},{"id":1034,"kind":256,"name":"Snapshots","url":"interfaces/roosterjs_editor_types.snapshots.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1035,"kind":1024,"name":"snapshots","url":"interfaces/roosterjs_editor_types.snapshots.html#snapshots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1036,"kind":1024,"name":"totalSize","url":"interfaces/roosterjs_editor_types.snapshots.html#totalsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1037,"kind":1024,"name":"currentIndex","url":"interfaces/roosterjs_editor_types.snapshots.html#currentindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1038,"kind":1024,"name":"autoCompleteIndex","url":"interfaces/roosterjs_editor_types.snapshots.html#autocompleteindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1039,"kind":1024,"name":"maxSize","url":"interfaces/roosterjs_editor_types.snapshots.html#maxsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1040,"kind":256,"name":"ContentMetadataBase","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1041,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentMetadataBase"},{"id":1042,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentMetadataBase"},{"id":1043,"kind":256,"name":"NormalContentMetadata","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1044,"kind":1024,"name":"start","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#start","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1045,"kind":1024,"name":"end","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#end","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1046,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1047,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1048,"kind":256,"name":"TableContentMetadata","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1049,"kind":1024,"name":"tableId","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#tableid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1050,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1051,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1052,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1053,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1054,"kind":256,"name":"ImageContentMetadata","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1055,"kind":1024,"name":"imageId","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#imageid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1056,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1057,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1058,"kind":4194304,"name":"ContentMetadata","url":"modules/roosterjs_editor_types.html#contentmetadata","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1059,"kind":256,"name":"Snapshot","url":"interfaces/roosterjs_editor_types.snapshot.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1060,"kind":1024,"name":"html","url":"interfaces/roosterjs_editor_types.snapshot.html#html","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1061,"kind":1024,"name":"metadata","url":"interfaces/roosterjs_editor_types.snapshot.html#metadata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1062,"kind":1024,"name":"knownColors","url":"interfaces/roosterjs_editor_types.snapshot.html#knowncolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1063,"kind":1024,"name":"entityStates","url":"interfaces/roosterjs_editor_types.snapshot.html#entitystates","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1064,"kind":256,"name":"EntityState","url":"interfaces/roosterjs_editor_types.entitystate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1065,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.entitystate.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1066,"kind":1024,"name":"id","url":"interfaces/roosterjs_editor_types.entitystate.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1067,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entitystate.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1068,"kind":256,"name":"TableFormat","url":"interfaces/roosterjs_editor_types.tableformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1069,"kind":1024,"name":"topBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#topbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1070,"kind":1024,"name":"bottomBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#bottombordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1071,"kind":1024,"name":"verticalBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#verticalbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1072,"kind":1024,"name":"hasHeaderRow","url":"interfaces/roosterjs_editor_types.tableformat.html#hasheaderrow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1073,"kind":1024,"name":"headerRowColor","url":"interfaces/roosterjs_editor_types.tableformat.html#headerrowcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1074,"kind":1024,"name":"hasFirstColumn","url":"interfaces/roosterjs_editor_types.tableformat.html#hasfirstcolumn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1075,"kind":1024,"name":"hasBandedColumns","url":"interfaces/roosterjs_editor_types.tableformat.html#hasbandedcolumns","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1076,"kind":1024,"name":"hasBandedRows","url":"interfaces/roosterjs_editor_types.tableformat.html#hasbandedrows","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1077,"kind":1024,"name":"bgColorEven","url":"interfaces/roosterjs_editor_types.tableformat.html#bgcoloreven","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1078,"kind":1024,"name":"bgColorOdd","url":"interfaces/roosterjs_editor_types.tableformat.html#bgcolorodd","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1079,"kind":1024,"name":"tableBorderFormat","url":"interfaces/roosterjs_editor_types.tableformat.html#tableborderformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1080,"kind":1024,"name":"keepCellShade","url":"interfaces/roosterjs_editor_types.tableformat.html#keepcellshade","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1081,"kind":1024,"name":"verticalAlign","url":"interfaces/roosterjs_editor_types.tableformat.html#verticalalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1082,"kind":4194304,"name":"TableCellMetadataFormat","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1083,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TableCellMetadataFormat"},{"id":1084,"kind":1024,"name":"bgColorOverride","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25.bgcoloroverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.TableCellMetadataFormat.__type"},{"id":1085,"kind":1024,"name":"vAlignOverride","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25.valignoverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.TableCellMetadataFormat.__type"},{"id":1086,"kind":256,"name":"TableSelection","url":"interfaces/roosterjs_editor_types.tableselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1087,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_editor_types.tableselection.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelection"},{"id":1088,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_editor_types.tableselection.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelection"},{"id":1089,"kind":256,"name":"Coordinates","url":"interfaces/roosterjs_editor_types.coordinates.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1090,"kind":1024,"name":"x","url":"interfaces/roosterjs_editor_types.coordinates.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Coordinates"},{"id":1091,"kind":1024,"name":"y","url":"interfaces/roosterjs_editor_types.coordinates.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Coordinates"},{"id":1092,"kind":256,"name":"HtmlSanitizerOptions","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1093,"kind":1024,"name":"elementCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#elementcallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1094,"kind":1024,"name":"attributeCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#attributecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1095,"kind":1024,"name":"cssStyleCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#cssstylecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1096,"kind":1024,"name":"additionalTagReplacements","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionaltagreplacements","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1097,"kind":1024,"name":"additionalAllowedAttributes","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalallowedattributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1098,"kind":1024,"name":"additionalAllowedCssClasses","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalallowedcssclasses","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1099,"kind":1024,"name":"additionalDefaultStyleValues","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionaldefaultstylevalues","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1100,"kind":1024,"name":"additionalGlobalStyleNodes","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalglobalstylenodes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1101,"kind":1024,"name":"additionalPredefinedCssForElement","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalpredefinedcssforelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1102,"kind":1024,"name":"preserveHtmlComments","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#preservehtmlcomments","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1103,"kind":1024,"name":"unknownTagReplacement","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#unknowntagreplacement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1104,"kind":256,"name":"SanitizeHtmlOptions","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1105,"kind":1024,"name":"currentElementOrStyle","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#currentelementorstyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1106,"kind":1024,"name":"convertCssOnly","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#convertcssonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1107,"kind":1024,"name":"elementCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#elementcallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1108,"kind":1024,"name":"attributeCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#attributecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1109,"kind":1024,"name":"cssStyleCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#cssstylecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1110,"kind":1024,"name":"additionalTagReplacements","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionaltagreplacements","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1111,"kind":1024,"name":"additionalAllowedAttributes","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalallowedattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1112,"kind":1024,"name":"additionalAllowedCssClasses","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalallowedcssclasses","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1113,"kind":1024,"name":"additionalDefaultStyleValues","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionaldefaultstylevalues","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1114,"kind":1024,"name":"additionalGlobalStyleNodes","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalglobalstylenodes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1115,"kind":1024,"name":"additionalPredefinedCssForElement","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalpredefinedcssforelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1116,"kind":1024,"name":"preserveHtmlComments","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#preservehtmlcomments","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1117,"kind":1024,"name":"unknownTagReplacement","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#unknowntagreplacement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1118,"kind":256,"name":"TargetWindowBase","url":"interfaces/roosterjs_editor_types.targetwindowbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1119,"kind":1024,"name":"Range","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1120,"kind":1024,"name":"Node","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1121,"kind":1024,"name":"ParentNode","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#parentnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1122,"kind":1024,"name":"Element","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1123,"kind":1024,"name":"HTMLElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1124,"kind":1024,"name":"HTMLUnknownElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlunknownelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1125,"kind":1024,"name":"HTMLUListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlulistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1126,"kind":1024,"name":"HTMLTrackElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltrackelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1127,"kind":1024,"name":"HTMLTitleElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltitleelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1128,"kind":1024,"name":"HTMLTimeElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltimeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1129,"kind":1024,"name":"HTMLTextAreaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltextareaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1130,"kind":1024,"name":"HTMLTemplateElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltemplateelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1131,"kind":1024,"name":"HTMLTableSectionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablesectionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1132,"kind":1024,"name":"HTMLTableRowElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablerowelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1133,"kind":1024,"name":"HTMLTableElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltableelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1134,"kind":1024,"name":"HTMLTableColElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecolelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1135,"kind":1024,"name":"HTMLTableCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1136,"kind":1024,"name":"HTMLTableHeaderCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltableheadercellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1137,"kind":1024,"name":"HTMLTableDataCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltabledatacellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1138,"kind":1024,"name":"HTMLTableCaptionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecaptionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1139,"kind":1024,"name":"HTMLStyleElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlstyleelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1140,"kind":1024,"name":"HTMLSpanElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlspanelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1141,"kind":1024,"name":"HTMLSourceElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlsourceelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1142,"kind":1024,"name":"HTMLSlotElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlslotelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1143,"kind":1024,"name":"HTMLSelectElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlselectelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1144,"kind":1024,"name":"HTMLScriptElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlscriptelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1145,"kind":1024,"name":"HTMLQuoteElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlquoteelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1146,"kind":1024,"name":"HTMLProgressElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlprogresselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1147,"kind":1024,"name":"HTMLPreElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlpreelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1148,"kind":1024,"name":"HTMLPictureElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlpictureelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1149,"kind":1024,"name":"HTMLParamElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlparamelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1150,"kind":1024,"name":"HTMLParagraphElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlparagraphelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1151,"kind":1024,"name":"HTMLOutputElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloutputelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1152,"kind":1024,"name":"HTMLOptionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloptionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1153,"kind":1024,"name":"HTMLOptGroupElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloptgroupelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1154,"kind":1024,"name":"HTMLObjectElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlobjectelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1155,"kind":1024,"name":"HTMLOListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlolistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1156,"kind":1024,"name":"HTMLModElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmodelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1157,"kind":1024,"name":"HTMLMeterElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmeterelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1158,"kind":1024,"name":"HTMLMetaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmetaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1159,"kind":1024,"name":"HTMLMenuElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmenuelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1160,"kind":1024,"name":"HTMLMediaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmediaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1161,"kind":1024,"name":"HTMLVideoElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlvideoelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1162,"kind":1024,"name":"HTMLAudioElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlaudioelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1163,"kind":1024,"name":"HTMLMarqueeElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmarqueeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1164,"kind":1024,"name":"HTMLMapElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmapelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1165,"kind":1024,"name":"HTMLLinkElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllinkelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1166,"kind":1024,"name":"HTMLLegendElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllegendelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1167,"kind":1024,"name":"HTMLLabelElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllabelelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1168,"kind":1024,"name":"HTMLLIElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllielement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1169,"kind":1024,"name":"HTMLInputElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlinputelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1170,"kind":1024,"name":"HTMLImageElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlimageelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1171,"kind":1024,"name":"HTMLIFrameElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmliframeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1172,"kind":1024,"name":"HTMLHtmlElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlhtmlelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1173,"kind":1024,"name":"HTMLHeadingElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlheadingelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1174,"kind":1024,"name":"HTMLHeadElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlheadelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1175,"kind":1024,"name":"HTMLHRElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlhrelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1176,"kind":1024,"name":"HTMLFrameSetElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlframesetelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1177,"kind":1024,"name":"HTMLFrameElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlframeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1178,"kind":1024,"name":"HTMLFormElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlformelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1179,"kind":1024,"name":"HTMLFontElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlfontelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1180,"kind":1024,"name":"HTMLFieldSetElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlfieldsetelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1181,"kind":1024,"name":"HTMLEmbedElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlembedelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1182,"kind":1024,"name":"HTMLDivElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldivelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1183,"kind":1024,"name":"HTMLDirectoryElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldirectoryelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1184,"kind":1024,"name":"HTMLDialogElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldialogelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1185,"kind":1024,"name":"HTMLDetailsElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldetailselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1186,"kind":1024,"name":"HTMLDataListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldatalistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1187,"kind":1024,"name":"HTMLDataElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldataelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1188,"kind":1024,"name":"HTMLDListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldlistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1189,"kind":1024,"name":"HTMLCanvasElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlcanvaselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1190,"kind":1024,"name":"HTMLButtonElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbuttonelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1191,"kind":1024,"name":"HTMLBodyElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbodyelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1192,"kind":1024,"name":"HTMLBaseElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbaseelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1193,"kind":1024,"name":"HTMLBRElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbrelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1194,"kind":1024,"name":"HTMLAreaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlareaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1195,"kind":1024,"name":"HTMLAnchorElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlanchorelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1196,"kind":1024,"name":"DocumentType","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#documenttype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1197,"kind":1024,"name":"DocumentFragment","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#documentfragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1198,"kind":1024,"name":"ShadowRoot","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#shadowroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1199,"kind":1024,"name":"Document","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#document","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1200,"kind":1024,"name":"XMLDocument","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#xmldocument","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1201,"kind":1024,"name":"HTMLDocument","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldocument","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1202,"kind":1024,"name":"ChildNode","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#childnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1203,"kind":1024,"name":"CharacterData","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#characterdata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1204,"kind":1024,"name":"Text","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1205,"kind":1024,"name":"CDATASection","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#cdatasection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1206,"kind":1024,"name":"ProcessingInstruction","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#processinginstruction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1207,"kind":1024,"name":"Comment","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#comment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1208,"kind":1024,"name":"Attr","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#attr","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1209,"kind":256,"name":"TargetWindow","url":"interfaces/roosterjs_editor_types.targetwindow.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1210,"kind":1024,"name":"SVGCursorElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#svgcursorelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1211,"kind":1024,"name":"HTMLBaseFontElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbasefontelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1212,"kind":1024,"name":"HTMLAppletElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlappletelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1213,"kind":1024,"name":"Range","url":"interfaces/roosterjs_editor_types.targetwindow.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1214,"kind":1024,"name":"Node","url":"interfaces/roosterjs_editor_types.targetwindow.html#node","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1215,"kind":1024,"name":"ParentNode","url":"interfaces/roosterjs_editor_types.targetwindow.html#parentnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1216,"kind":1024,"name":"Element","url":"interfaces/roosterjs_editor_types.targetwindow.html#element","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1217,"kind":1024,"name":"HTMLElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1218,"kind":1024,"name":"HTMLUnknownElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlunknownelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1219,"kind":1024,"name":"HTMLUListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlulistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1220,"kind":1024,"name":"HTMLTrackElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltrackelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1221,"kind":1024,"name":"HTMLTitleElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltitleelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1222,"kind":1024,"name":"HTMLTimeElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltimeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1223,"kind":1024,"name":"HTMLTextAreaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltextareaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1224,"kind":1024,"name":"HTMLTemplateElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltemplateelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1225,"kind":1024,"name":"HTMLTableSectionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablesectionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1226,"kind":1024,"name":"HTMLTableRowElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablerowelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1227,"kind":1024,"name":"HTMLTableElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltableelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1228,"kind":1024,"name":"HTMLTableColElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecolelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1229,"kind":1024,"name":"HTMLTableCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1230,"kind":1024,"name":"HTMLTableHeaderCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltableheadercellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1231,"kind":1024,"name":"HTMLTableDataCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltabledatacellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1232,"kind":1024,"name":"HTMLTableCaptionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecaptionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1233,"kind":1024,"name":"HTMLStyleElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlstyleelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1234,"kind":1024,"name":"HTMLSpanElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlspanelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1235,"kind":1024,"name":"HTMLSourceElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlsourceelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1236,"kind":1024,"name":"HTMLSlotElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlslotelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1237,"kind":1024,"name":"HTMLSelectElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlselectelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1238,"kind":1024,"name":"HTMLScriptElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlscriptelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1239,"kind":1024,"name":"HTMLQuoteElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlquoteelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1240,"kind":1024,"name":"HTMLProgressElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlprogresselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1241,"kind":1024,"name":"HTMLPreElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlpreelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1242,"kind":1024,"name":"HTMLPictureElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlpictureelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1243,"kind":1024,"name":"HTMLParamElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlparamelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1244,"kind":1024,"name":"HTMLParagraphElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlparagraphelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1245,"kind":1024,"name":"HTMLOutputElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloutputelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1246,"kind":1024,"name":"HTMLOptionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloptionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1247,"kind":1024,"name":"HTMLOptGroupElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloptgroupelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1248,"kind":1024,"name":"HTMLObjectElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlobjectelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1249,"kind":1024,"name":"HTMLOListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlolistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1250,"kind":1024,"name":"HTMLModElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmodelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1251,"kind":1024,"name":"HTMLMeterElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmeterelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1252,"kind":1024,"name":"HTMLMetaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmetaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1253,"kind":1024,"name":"HTMLMenuElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmenuelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1254,"kind":1024,"name":"HTMLMediaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmediaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1255,"kind":1024,"name":"HTMLVideoElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlvideoelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1256,"kind":1024,"name":"HTMLAudioElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlaudioelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1257,"kind":1024,"name":"HTMLMarqueeElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmarqueeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1258,"kind":1024,"name":"HTMLMapElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmapelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1259,"kind":1024,"name":"HTMLLinkElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllinkelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1260,"kind":1024,"name":"HTMLLegendElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllegendelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1261,"kind":1024,"name":"HTMLLabelElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllabelelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1262,"kind":1024,"name":"HTMLLIElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllielement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1263,"kind":1024,"name":"HTMLInputElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlinputelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1264,"kind":1024,"name":"HTMLImageElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlimageelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1265,"kind":1024,"name":"HTMLIFrameElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmliframeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1266,"kind":1024,"name":"HTMLHtmlElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlhtmlelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1267,"kind":1024,"name":"HTMLHeadingElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlheadingelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1268,"kind":1024,"name":"HTMLHeadElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlheadelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1269,"kind":1024,"name":"HTMLHRElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlhrelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1270,"kind":1024,"name":"HTMLFrameSetElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlframesetelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1271,"kind":1024,"name":"HTMLFrameElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlframeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1272,"kind":1024,"name":"HTMLFormElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlformelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1273,"kind":1024,"name":"HTMLFontElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlfontelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1274,"kind":1024,"name":"HTMLFieldSetElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlfieldsetelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1275,"kind":1024,"name":"HTMLEmbedElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlembedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1276,"kind":1024,"name":"HTMLDivElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldivelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1277,"kind":1024,"name":"HTMLDirectoryElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldirectoryelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1278,"kind":1024,"name":"HTMLDialogElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldialogelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1279,"kind":1024,"name":"HTMLDetailsElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldetailselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1280,"kind":1024,"name":"HTMLDataListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldatalistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1281,"kind":1024,"name":"HTMLDataElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldataelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1282,"kind":1024,"name":"HTMLDListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldlistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1283,"kind":1024,"name":"HTMLCanvasElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlcanvaselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1284,"kind":1024,"name":"HTMLButtonElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbuttonelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1285,"kind":1024,"name":"HTMLBodyElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbodyelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1286,"kind":1024,"name":"HTMLBaseElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbaseelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1287,"kind":1024,"name":"HTMLBRElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbrelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1288,"kind":1024,"name":"HTMLAreaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlareaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1289,"kind":1024,"name":"HTMLAnchorElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlanchorelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1290,"kind":1024,"name":"DocumentType","url":"interfaces/roosterjs_editor_types.targetwindow.html#documenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1291,"kind":1024,"name":"DocumentFragment","url":"interfaces/roosterjs_editor_types.targetwindow.html#documentfragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1292,"kind":1024,"name":"ShadowRoot","url":"interfaces/roosterjs_editor_types.targetwindow.html#shadowroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1293,"kind":1024,"name":"Document","url":"interfaces/roosterjs_editor_types.targetwindow.html#document","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1294,"kind":1024,"name":"XMLDocument","url":"interfaces/roosterjs_editor_types.targetwindow.html#xmldocument","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1295,"kind":1024,"name":"HTMLDocument","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldocument","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1296,"kind":1024,"name":"ChildNode","url":"interfaces/roosterjs_editor_types.targetwindow.html#childnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1297,"kind":1024,"name":"CharacterData","url":"interfaces/roosterjs_editor_types.targetwindow.html#characterdata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1298,"kind":1024,"name":"Text","url":"interfaces/roosterjs_editor_types.targetwindow.html#text","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1299,"kind":1024,"name":"CDATASection","url":"interfaces/roosterjs_editor_types.targetwindow.html#cdatasection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1300,"kind":1024,"name":"ProcessingInstruction","url":"interfaces/roosterjs_editor_types.targetwindow.html#processinginstruction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1301,"kind":1024,"name":"Comment","url":"interfaces/roosterjs_editor_types.targetwindow.html#comment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1302,"kind":1024,"name":"Attr","url":"interfaces/roosterjs_editor_types.targetwindow.html#attr","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1303,"kind":256,"name":"IEditor","url":"interfaces/roosterjs_editor_types.ieditor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1304,"kind":2048,"name":"dispose","url":"interfaces/roosterjs_editor_types.ieditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1305,"kind":2048,"name":"isDisposed","url":"interfaces/roosterjs_editor_types.ieditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1306,"kind":2048,"name":"insertNode","url":"interfaces/roosterjs_editor_types.ieditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1307,"kind":2048,"name":"deleteNode","url":"interfaces/roosterjs_editor_types.ieditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1308,"kind":2048,"name":"replaceNode","url":"interfaces/roosterjs_editor_types.ieditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1309,"kind":2048,"name":"getBlockElementAtNode","url":"interfaces/roosterjs_editor_types.ieditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1310,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.ieditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1311,"kind":2048,"name":"queryElements","url":"interfaces/roosterjs_editor_types.ieditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1312,"kind":2048,"name":"collapseNodes","url":"interfaces/roosterjs_editor_types.ieditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1313,"kind":2048,"name":"isEmpty","url":"interfaces/roosterjs_editor_types.ieditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1314,"kind":2048,"name":"getContent","url":"interfaces/roosterjs_editor_types.ieditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1315,"kind":2048,"name":"setContent","url":"interfaces/roosterjs_editor_types.ieditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1316,"kind":2048,"name":"insertContent","url":"interfaces/roosterjs_editor_types.ieditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1317,"kind":2048,"name":"deleteSelectedContent","url":"interfaces/roosterjs_editor_types.ieditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1318,"kind":2048,"name":"paste","url":"interfaces/roosterjs_editor_types.ieditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1319,"kind":2048,"name":"getSelectionRange","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1320,"kind":2048,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1321,"kind":2048,"name":"getSelectionPath","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1322,"kind":2048,"name":"hasFocus","url":"interfaces/roosterjs_editor_types.ieditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1323,"kind":2048,"name":"focus","url":"interfaces/roosterjs_editor_types.ieditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1324,"kind":2048,"name":"select","url":"interfaces/roosterjs_editor_types.ieditor.html#select","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1325,"kind":2048,"name":"getFocusedPosition","url":"interfaces/roosterjs_editor_types.ieditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1326,"kind":2048,"name":"getElementAtCursor","url":"interfaces/roosterjs_editor_types.ieditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1327,"kind":2048,"name":"isPositionAtBeginning","url":"interfaces/roosterjs_editor_types.ieditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1328,"kind":2048,"name":"getSelectedRegions","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1329,"kind":2048,"name":"addDomEventHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1330,"kind":2048,"name":"triggerPluginEvent","url":"interfaces/roosterjs_editor_types.ieditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1331,"kind":2048,"name":"triggerContentChangedEvent","url":"interfaces/roosterjs_editor_types.ieditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1332,"kind":2048,"name":"undo","url":"interfaces/roosterjs_editor_types.ieditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1333,"kind":2048,"name":"redo","url":"interfaces/roosterjs_editor_types.ieditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1334,"kind":2048,"name":"addUndoSnapshot","url":"interfaces/roosterjs_editor_types.ieditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1335,"kind":2048,"name":"getUndoState","url":"interfaces/roosterjs_editor_types.ieditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1336,"kind":2048,"name":"getDocument","url":"interfaces/roosterjs_editor_types.ieditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1337,"kind":2048,"name":"getScrollContainer","url":"interfaces/roosterjs_editor_types.ieditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1338,"kind":2048,"name":"getCustomData","url":"interfaces/roosterjs_editor_types.ieditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1339,"kind":2048,"name":"isInIME","url":"interfaces/roosterjs_editor_types.ieditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1340,"kind":2048,"name":"getDefaultFormat","url":"interfaces/roosterjs_editor_types.ieditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1341,"kind":2048,"name":"getBodyTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1342,"kind":2048,"name":"getSelectionTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1343,"kind":2048,"name":"getBlockTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1344,"kind":2048,"name":"getContentSearcherOfCursor","url":"interfaces/roosterjs_editor_types.ieditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1345,"kind":2048,"name":"runAsync","url":"interfaces/roosterjs_editor_types.ieditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1346,"kind":2048,"name":"setEditorDomAttribute","url":"interfaces/roosterjs_editor_types.ieditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1347,"kind":2048,"name":"getEditorDomAttribute","url":"interfaces/roosterjs_editor_types.ieditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1348,"kind":2048,"name":"getRelativeDistanceToEditor","url":"interfaces/roosterjs_editor_types.ieditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1349,"kind":2048,"name":"addContentEditFeature","url":"interfaces/roosterjs_editor_types.ieditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1350,"kind":2048,"name":"removeContentEditFeature","url":"interfaces/roosterjs_editor_types.ieditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1351,"kind":2048,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_editor_types.ieditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1352,"kind":2048,"name":"getPendableFormatState","url":"interfaces/roosterjs_editor_types.ieditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1353,"kind":2048,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_editor_types.ieditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1354,"kind":2048,"name":"setDarkModeState","url":"interfaces/roosterjs_editor_types.ieditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1355,"kind":2048,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.ieditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1356,"kind":2048,"name":"transformToDarkColor","url":"interfaces/roosterjs_editor_types.ieditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1357,"kind":2048,"name":"getDarkColorHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1358,"kind":2048,"name":"startShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1359,"kind":2048,"name":"stopShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1360,"kind":2048,"name":"isInShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1361,"kind":2048,"name":"isFeatureEnabled","url":"interfaces/roosterjs_editor_types.ieditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1362,"kind":2048,"name":"getTrustedHTMLHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1363,"kind":2048,"name":"getZoomScale","url":"interfaces/roosterjs_editor_types.ieditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1364,"kind":2048,"name":"setZoomScale","url":"interfaces/roosterjs_editor_types.ieditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1365,"kind":2048,"name":"getSizeTransformer","url":"interfaces/roosterjs_editor_types.ieditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1366,"kind":2048,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.ieditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1367,"kind":256,"name":"DarkColorHandler","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1368,"kind":2048,"name":"registerColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#registercolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1369,"kind":2048,"name":"reset","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#reset","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1370,"kind":2048,"name":"parseColorValue","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#parsecolorvalue","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1371,"kind":2048,"name":"getKnownColorsCopy","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#getknowncolorscopy","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1372,"kind":2048,"name":"findLightColorFromDarkColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#findlightcolorfromdarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1373,"kind":2048,"name":"transformElementColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#transformelementcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1374,"kind":256,"name":"ColorKeyAndValue","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1375,"kind":1024,"name":"key","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1376,"kind":1024,"name":"lightModeColor","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#lightmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1377,"kind":1024,"name":"darkModeColor","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#darkmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1378,"kind":4194304,"name":"ContentEditFeature","url":"modules/roosterjs_editor_types.html#contenteditfeature","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1379,"kind":256,"name":"GenericContentEditFeature","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1380,"kind":1024,"name":"keys","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1381,"kind":1024,"name":"shouldHandleEvent","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#shouldhandleevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1382,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1383,"kind":1024,"name":"handleEvent","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#handleevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1384,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1385,"kind":1024,"name":"allowFunctionKeys","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#allowfunctionkeys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1386,"kind":256,"name":"BuildInEditFeature","url":"interfaces/roosterjs_editor_types.buildineditfeature.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1387,"kind":1024,"name":"defaultDisabled","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#defaultdisabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1388,"kind":1024,"name":"keys","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1389,"kind":1024,"name":"shouldHandleEvent","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#shouldhandleevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1390,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1391,"kind":1024,"name":"handleEvent","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#handleevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1392,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1393,"kind":1024,"name":"allowFunctionKeys","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#allowfunctionkeys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1394,"kind":256,"name":"EditorPlugin","url":"interfaces/roosterjs_editor_types.editorplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1395,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.editorplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1396,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1397,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.editorplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1398,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1399,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.editorplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1400,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1401,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.editorplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1402,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1403,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.editorplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1404,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1405,"kind":256,"name":"PluginWithState","url":"interfaces/roosterjs_editor_types.pluginwithstate.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1406,"kind":2048,"name":"getState","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#getstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1407,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1408,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1409,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1410,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1411,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1412,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1413,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1414,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1415,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1416,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1417,"kind":256,"name":"CorePlugins","url":"interfaces/roosterjs_editor_types.coreplugins.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1418,"kind":1024,"name":"edit","url":"interfaces/roosterjs_editor_types.coreplugins.html#edit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1419,"kind":1024,"name":"undo","url":"interfaces/roosterjs_editor_types.coreplugins.html#undo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1420,"kind":1024,"name":"typeInContainer","url":"interfaces/roosterjs_editor_types.coreplugins.html#typeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1421,"kind":1024,"name":"domEvent","url":"interfaces/roosterjs_editor_types.coreplugins.html#domevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1422,"kind":1024,"name":"pendingFormatState","url":"interfaces/roosterjs_editor_types.coreplugins.html#pendingformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1423,"kind":1024,"name":"mouseUp","url":"interfaces/roosterjs_editor_types.coreplugins.html#mouseup","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1424,"kind":1024,"name":"typeAfterLink","url":"interfaces/roosterjs_editor_types.coreplugins.html#typeafterlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1425,"kind":1024,"name":"copyPaste","url":"interfaces/roosterjs_editor_types.coreplugins.html#copypaste","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1426,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.coreplugins.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1427,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_editor_types.coreplugins.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1428,"kind":1024,"name":"normalizeTable","url":"interfaces/roosterjs_editor_types.coreplugins.html#normalizetable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1429,"kind":1024,"name":"lifecycle","url":"interfaces/roosterjs_editor_types.coreplugins.html#lifecycle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1430,"kind":4194304,"name":"PluginKey","url":"modules/roosterjs_editor_types.html#pluginkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1431,"kind":4194304,"name":"KeyOfStatePlugin","url":"modules/roosterjs_editor_types.html#keyofstateplugin","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1432,"kind":4194304,"name":"GenericPluginState","url":"modules/roosterjs_editor_types.html#genericpluginstate","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1433,"kind":4194304,"name":"PluginState","url":"modules/roosterjs_editor_types.html#pluginstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1434,"kind":4194304,"name":"StatePluginKeys","url":"modules/roosterjs_editor_types.html#statepluginkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1435,"kind":4194304,"name":"TypeOfStatePlugin","url":"modules/roosterjs_editor_types.html#typeofstateplugin","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1436,"kind":256,"name":"EditorCore","url":"interfaces/roosterjs_editor_types.editorcore.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1437,"kind":1024,"name":"contentDiv","url":"interfaces/roosterjs_editor_types.editorcore.html#contentdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1438,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_editor_types.editorcore.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1439,"kind":1024,"name":"api","url":"interfaces/roosterjs_editor_types.editorcore.html#api","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1440,"kind":1024,"name":"originalApi","url":"interfaces/roosterjs_editor_types.editorcore.html#originalapi","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1441,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_editor_types.editorcore.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1442,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.editorcore.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1443,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_editor_types.editorcore.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1444,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.editorcore.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1445,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorcore.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1446,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_editor_types.editorcore.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1447,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_editor_types.editorcore.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1448,"kind":2048,"name":"edit","url":"interfaces/roosterjs_editor_types.editorcore.html#edit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1449,"kind":2048,"name":"undo","url":"interfaces/roosterjs_editor_types.editorcore.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1450,"kind":2048,"name":"domEvent","url":"interfaces/roosterjs_editor_types.editorcore.html#domevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1451,"kind":2048,"name":"pendingFormatState","url":"interfaces/roosterjs_editor_types.editorcore.html#pendingformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1452,"kind":2048,"name":"copyPaste","url":"interfaces/roosterjs_editor_types.editorcore.html#copypaste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1453,"kind":2048,"name":"entity","url":"interfaces/roosterjs_editor_types.editorcore.html#entity","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1454,"kind":2048,"name":"lifecycle","url":"interfaces/roosterjs_editor_types.editorcore.html#lifecycle","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1455,"kind":4194304,"name":"AddUndoSnapshot","url":"modules/roosterjs_editor_types.html#addundosnapshot","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1456,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#addundosnapshot.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AddUndoSnapshot"},{"id":1457,"kind":4194304,"name":"AttachDomEvent","url":"modules/roosterjs_editor_types.html#attachdomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1458,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#attachdomevent.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AttachDomEvent"},{"id":1459,"kind":256,"name":"CoreApiMap","url":"interfaces/roosterjs_editor_types.coreapimap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1460,"kind":1024,"name":"addUndoSnapshot","url":"interfaces/roosterjs_editor_types.coreapimap.html#addundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1461,"kind":1024,"name":"attachDomEvent","url":"interfaces/roosterjs_editor_types.coreapimap.html#attachdomevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1462,"kind":1024,"name":"createPasteFragment","url":"interfaces/roosterjs_editor_types.coreapimap.html#createpastefragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1463,"kind":1024,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_editor_types.coreapimap.html#ensuretypeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1464,"kind":1024,"name":"focus","url":"interfaces/roosterjs_editor_types.coreapimap.html#focus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1465,"kind":1024,"name":"getContent","url":"interfaces/roosterjs_editor_types.coreapimap.html#getcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1466,"kind":1024,"name":"getSelectionRange","url":"interfaces/roosterjs_editor_types.coreapimap.html#getselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1467,"kind":1024,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_editor_types.coreapimap.html#getselectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1468,"kind":1024,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_editor_types.coreapimap.html#getstylebasedformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1469,"kind":1024,"name":"getPendableFormatState","url":"interfaces/roosterjs_editor_types.coreapimap.html#getpendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1470,"kind":1024,"name":"hasFocus","url":"interfaces/roosterjs_editor_types.coreapimap.html#hasfocus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1471,"kind":1024,"name":"insertNode","url":"interfaces/roosterjs_editor_types.coreapimap.html#insertnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1472,"kind":1024,"name":"restoreUndoSnapshot","url":"interfaces/roosterjs_editor_types.coreapimap.html#restoreundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1473,"kind":1024,"name":"select","url":"interfaces/roosterjs_editor_types.coreapimap.html#select","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1474,"kind":1024,"name":"selectRange","url":"interfaces/roosterjs_editor_types.coreapimap.html#selectrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1475,"kind":1024,"name":"setContent","url":"interfaces/roosterjs_editor_types.coreapimap.html#setcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1476,"kind":1024,"name":"switchShadowEdit","url":"interfaces/roosterjs_editor_types.coreapimap.html#switchshadowedit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1477,"kind":1024,"name":"transformColor","url":"interfaces/roosterjs_editor_types.coreapimap.html#transformcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1478,"kind":1024,"name":"triggerEvent","url":"interfaces/roosterjs_editor_types.coreapimap.html#triggerevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1479,"kind":1024,"name":"selectTable","url":"interfaces/roosterjs_editor_types.coreapimap.html#selecttable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1480,"kind":1024,"name":"selectImage","url":"interfaces/roosterjs_editor_types.coreapimap.html#selectimage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1481,"kind":4194304,"name":"CreatePasteFragment","url":"modules/roosterjs_editor_types.html#createpastefragment","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1482,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#createpastefragment.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CreatePasteFragment"},{"id":1483,"kind":4194304,"name":"EnsureTypeInContainer","url":"modules/roosterjs_editor_types.html#ensuretypeincontainer","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1484,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#ensuretypeincontainer.__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.EnsureTypeInContainer"},{"id":1485,"kind":4194304,"name":"Focus","url":"modules/roosterjs_editor_types.html#focus","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1486,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#focus.__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.Focus"},{"id":1487,"kind":4194304,"name":"GetContent","url":"modules/roosterjs_editor_types.html#getcontent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1488,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getcontent.__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetContent"},{"id":1489,"kind":4194304,"name":"GetSelectionRange","url":"modules/roosterjs_editor_types.html#getselectionrange","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1490,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getselectionrange.__type-12","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetSelectionRange"},{"id":1491,"kind":4194304,"name":"GetSelectionRangeEx","url":"modules/roosterjs_editor_types.html#getselectionrangeex","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1492,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getselectionrangeex.__type-13","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetSelectionRangeEx"},{"id":1493,"kind":4194304,"name":"GetStyleBasedFormatState","url":"modules/roosterjs_editor_types.html#getstylebasedformatstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1494,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getstylebasedformatstate.__type-14","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetStyleBasedFormatState"},{"id":1495,"kind":4194304,"name":"GetPendableFormatState","url":"modules/roosterjs_editor_types.html#getpendableformatstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1496,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getpendableformatstate.__type-11","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetPendableFormatState"},{"id":1497,"kind":4194304,"name":"HasFocus","url":"modules/roosterjs_editor_types.html#hasfocus","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1498,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#hasfocus.__type-15","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.HasFocus"},{"id":1499,"kind":4194304,"name":"InsertNode","url":"modules/roosterjs_editor_types.html#insertnode","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1500,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#insertnode.__type-16","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.InsertNode"},{"id":1501,"kind":4194304,"name":"RestoreUndoSnapshot","url":"modules/roosterjs_editor_types.html#restoreundosnapshot","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1502,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#restoreundosnapshot.__type-17","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.RestoreUndoSnapshot"},{"id":1503,"kind":4194304,"name":"Select","url":"modules/roosterjs_editor_types.html#select","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1504,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#select.__type-18","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.Select"},{"id":1505,"kind":4194304,"name":"SelectRange","url":"modules/roosterjs_editor_types.html#selectrange","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1506,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selectrange.__type-20","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectRange"},{"id":1507,"kind":4194304,"name":"SetContent","url":"modules/roosterjs_editor_types.html#setcontent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1508,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#setcontent.__type-22","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SetContent"},{"id":1509,"kind":4194304,"name":"SwitchShadowEdit","url":"modules/roosterjs_editor_types.html#switchshadowedit","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1510,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#switchshadowedit.__type-24","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SwitchShadowEdit"},{"id":1511,"kind":4194304,"name":"TransformColor","url":"modules/roosterjs_editor_types.html#transformcolor","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1512,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#transformcolor.__type-26","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TransformColor"},{"id":1513,"kind":4194304,"name":"TriggerEvent","url":"modules/roosterjs_editor_types.html#triggerevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1514,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#triggerevent.__type-27","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TriggerEvent"},{"id":1515,"kind":4194304,"name":"SelectTable","url":"modules/roosterjs_editor_types.html#selecttable","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1516,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selecttable.__type-21","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectTable"},{"id":1517,"kind":4194304,"name":"SelectImage","url":"modules/roosterjs_editor_types.html#selectimage","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1518,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selectimage.__type-19","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectImage"},{"id":1519,"kind":256,"name":"EditorOptions","url":"interfaces/roosterjs_editor_types.editoroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1520,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_editor_types.editoroptions.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1521,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_editor_types.editoroptions.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1522,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_editor_types.editoroptions.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1523,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_editor_types.editoroptions.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1524,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_editor_types.editoroptions.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1525,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_editor_types.editoroptions.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1526,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_editor_types.editoroptions.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1527,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_editor_types.editoroptions.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1528,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_editor_types.editoroptions.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1529,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1530,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1531,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1532,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1533,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.editoroptions.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1534,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_editor_types.editoroptions.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1535,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_editor_types.editoroptions.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1536,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.editoroptions.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1537,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_editor_types.editoroptions.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1538,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.editoroptions.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1539,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_editor_types.editoroptions.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1540,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.editoroptions.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1541,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1542,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1543,"kind":256,"name":"ContentEditFeatureSettings","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1544,"kind":1024,"name":"autoBullet","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autobullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1545,"kind":1024,"name":"indentWhenTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhentab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1546,"kind":1024,"name":"outdentWhenShiftTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenshifttab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1547,"kind":1024,"name":"outdentWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1548,"kind":1024,"name":"outdentWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1549,"kind":1024,"name":"mergeInNewLineWhenBackspaceOnFirstChar","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#mergeinnewlinewhenbackspaceonfirstchar","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1550,"kind":1024,"name":"maintainListChain","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#maintainlistchain","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1551,"kind":1024,"name":"maintainListChainWhenDelete","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#maintainlistchainwhendelete","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1552,"kind":1024,"name":"autoBulletList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autobulletlist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1553,"kind":1024,"name":"autoNumberingList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autonumberinglist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1554,"kind":1024,"name":"mergeListOnBackspaceAfterList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#mergelistonbackspaceafterlist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1555,"kind":1024,"name":"indentWhenAltShiftRight","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhenaltshiftright","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1556,"kind":1024,"name":"outdentWhenAltShiftLeft","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenaltshiftleft","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1557,"kind":1024,"name":"unquoteWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unquotewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1558,"kind":1024,"name":"unquoteWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unquotewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1559,"kind":1024,"name":"tabInTable","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#tabintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1560,"kind":1024,"name":"upDownInTable","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#updownintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1561,"kind":1024,"name":"indentTableOnTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indenttableontab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1562,"kind":1024,"name":"deleteTableWithBackspace","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#deletetablewithbackspace","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1563,"kind":1024,"name":"insertLineBeforeStructuredNodeFeature","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#insertlinebeforestructurednodefeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1564,"kind":1024,"name":"autoLink","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autolink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1565,"kind":1024,"name":"unlinkWhenBackspaceAfterLink","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unlinkwhenbackspaceafterlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1566,"kind":1024,"name":"defaultShortcut","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#defaultshortcut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1567,"kind":1024,"name":"noCycleCursorMove","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#nocyclecursormove","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1568,"kind":1024,"name":"markdownBold","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1569,"kind":1024,"name":"markdownItalic","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1570,"kind":1024,"name":"markdownStrikethru","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownstrikethru","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1571,"kind":1024,"name":"markdownInlineCode","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdowninlinecode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1572,"kind":1024,"name":"clickOnEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#clickonentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1573,"kind":1024,"name":"escapeFromEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#escapefromentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1574,"kind":1024,"name":"enterBeforeReadonlyEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#enterbeforereadonlyentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1575,"kind":1024,"name":"backspaceAfterEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#backspaceafterentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1576,"kind":1024,"name":"deleteBeforeEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#deletebeforeentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1577,"kind":1024,"name":"moveBetweenDelimitersFeature","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#movebetweendelimitersfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1578,"kind":1024,"name":"removeEntityBetweenDelimiters","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removeentitybetweendelimiters","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1579,"kind":1024,"name":"indentWhenTabText","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1580,"kind":1024,"name":"outdentWhenTabText","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1581,"kind":1024,"name":"autoHyphen","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autohyphen","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1582,"kind":1024,"name":"removeCodeWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removecodewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1583,"kind":1024,"name":"removeCodeWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removecodewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1584,"kind":256,"name":"AutoLinkFeatureSettings","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1585,"kind":1024,"name":"autoLink","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html#autolink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.AutoLinkFeatureSettings"},{"id":1586,"kind":1024,"name":"unlinkWhenBackspaceAfterLink","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html#unlinkwhenbackspaceafterlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.AutoLinkFeatureSettings"},{"id":1587,"kind":256,"name":"CursorFeatureSettings","url":"interfaces/roosterjs_editor_types.cursorfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1588,"kind":1024,"name":"noCycleCursorMove","url":"interfaces/roosterjs_editor_types.cursorfeaturesettings.html#nocyclecursormove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CursorFeatureSettings"},{"id":1589,"kind":256,"name":"EntityFeatureSettings","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1590,"kind":1024,"name":"clickOnEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#clickonentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1591,"kind":1024,"name":"escapeFromEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#escapefromentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1592,"kind":1024,"name":"enterBeforeReadonlyEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#enterbeforereadonlyentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1593,"kind":1024,"name":"backspaceAfterEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#backspaceafterentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1594,"kind":1024,"name":"deleteBeforeEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#deletebeforeentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1595,"kind":1024,"name":"moveBetweenDelimitersFeature","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#movebetweendelimitersfeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1596,"kind":1024,"name":"removeEntityBetweenDelimiters","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#removeentitybetweendelimiters","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1597,"kind":256,"name":"ListFeatureSettings","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1598,"kind":1024,"name":"autoBullet","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autobullet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1599,"kind":1024,"name":"indentWhenTab","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#indentwhentab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1600,"kind":1024,"name":"outdentWhenShiftTab","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenshifttab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1601,"kind":1024,"name":"outdentWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1602,"kind":1024,"name":"outdentWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1603,"kind":1024,"name":"mergeInNewLineWhenBackspaceOnFirstChar","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#mergeinnewlinewhenbackspaceonfirstchar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1604,"kind":1024,"name":"maintainListChain","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#maintainlistchain","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1605,"kind":1024,"name":"maintainListChainWhenDelete","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#maintainlistchainwhendelete","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1606,"kind":1024,"name":"autoBulletList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autobulletlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1607,"kind":1024,"name":"autoNumberingList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autonumberinglist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1608,"kind":1024,"name":"mergeListOnBackspaceAfterList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#mergelistonbackspaceafterlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1609,"kind":1024,"name":"indentWhenAltShiftRight","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#indentwhenaltshiftright","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1610,"kind":1024,"name":"outdentWhenAltShiftLeft","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenaltshiftleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1611,"kind":256,"name":"MarkdownFeatureSettings","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1612,"kind":1024,"name":"markdownBold","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownbold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1613,"kind":1024,"name":"markdownItalic","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownitalic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1614,"kind":1024,"name":"markdownStrikethru","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownstrikethru","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1615,"kind":1024,"name":"markdownInlineCode","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdowninlinecode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1616,"kind":256,"name":"QuoteFeatureSettings","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1617,"kind":1024,"name":"unquoteWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html#unquotewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.QuoteFeatureSettings"},{"id":1618,"kind":1024,"name":"unquoteWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html#unquotewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.QuoteFeatureSettings"},{"id":1619,"kind":256,"name":"ShortcutFeatureSettings","url":"interfaces/roosterjs_editor_types.shortcutfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1620,"kind":1024,"name":"defaultShortcut","url":"interfaces/roosterjs_editor_types.shortcutfeaturesettings.html#defaultshortcut","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ShortcutFeatureSettings"},{"id":1621,"kind":256,"name":"StructuredNodeFeatureSettings","url":"interfaces/roosterjs_editor_types.structurednodefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1622,"kind":1024,"name":"insertLineBeforeStructuredNodeFeature","url":"interfaces/roosterjs_editor_types.structurednodefeaturesettings.html#insertlinebeforestructurednodefeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StructuredNodeFeatureSettings"},{"id":1623,"kind":256,"name":"TableFeatureSettings","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1624,"kind":1024,"name":"tabInTable","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#tabintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1625,"kind":1024,"name":"upDownInTable","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#updownintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1626,"kind":1024,"name":"indentTableOnTab","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#indenttableontab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1627,"kind":1024,"name":"deleteTableWithBackspace","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#deletetablewithbackspace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1628,"kind":256,"name":"TextFeatureSettings","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1629,"kind":1024,"name":"indentWhenTabText","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#indentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1630,"kind":1024,"name":"outdentWhenTabText","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#outdentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1631,"kind":1024,"name":"autoHyphen","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#autohyphen","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1632,"kind":256,"name":"CodeFeatureSettings","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1633,"kind":1024,"name":"removeCodeWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html#removecodewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CodeFeatureSettings"},{"id":1634,"kind":1024,"name":"removeCodeWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html#removecodewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CodeFeatureSettings"},{"id":1635,"kind":256,"name":"CustomReplacement","url":"interfaces/roosterjs_editor_types.customreplacement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1636,"kind":1024,"name":"sourceString","url":"interfaces/roosterjs_editor_types.customreplacement.html#sourcestring","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1637,"kind":1024,"name":"replacementHTML","url":"interfaces/roosterjs_editor_types.customreplacement.html#replacementhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1638,"kind":1024,"name":"matchSourceCaseSensitive","url":"interfaces/roosterjs_editor_types.customreplacement.html#matchsourcecasesensitive","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1639,"kind":1024,"name":"shouldReplace","url":"interfaces/roosterjs_editor_types.customreplacement.html#shouldreplace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1640,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customreplacement.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1641,"kind":256,"name":"UndoSnapshotsService","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1642,"kind":2048,"name":"canMove","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#canmove","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1643,"kind":2048,"name":"move","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#move","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1644,"kind":2048,"name":"addSnapshot","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#addsnapshot","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1645,"kind":2048,"name":"clearRedo","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#clearredo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1646,"kind":2048,"name":"canUndoAutoComplete","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#canundoautocomplete","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1647,"kind":256,"name":"PickerDataProvider","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1648,"kind":1024,"name":"onInitalize","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#oninitalize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1649,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1650,"kind":1024,"name":"onDispose","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#ondispose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1651,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1652,"kind":1024,"name":"onIsSuggestingChanged","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onissuggestingchanged","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1653,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1654,"kind":1024,"name":"queryStringUpdated","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#querystringupdated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1655,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1656,"kind":1024,"name":"selectOption","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#selectoption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1657,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1658,"kind":1024,"name":"shiftHighlight","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#shifthighlight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1659,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1660,"kind":1024,"name":"onRemove","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onremove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1661,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1662,"kind":1024,"name":"setCursorPoint","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#setcursorpoint","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1663,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1664,"kind":1024,"name":"onContentChanged","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#oncontentchanged","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1665,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1666,"kind":1024,"name":"getSelectedIndex","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#getselectedindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1667,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1668,"kind":1024,"name":"onScroll","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onscroll","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1669,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1670,"kind":256,"name":"PickerPluginOptions","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1671,"kind":1024,"name":"elementIdPrefix","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#elementidprefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1672,"kind":1024,"name":"changeSource","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#changesource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1673,"kind":1024,"name":"triggerCharacter","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#triggercharacter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1674,"kind":1024,"name":"isHorizontal","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#ishorizontal","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1675,"kind":1024,"name":"handleAutoComplete","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#handleautocomplete","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1676,"kind":1024,"name":"suggestionsLabel","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#suggestionslabel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1677,"kind":1024,"name":"suggestionLabelPrefix","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#suggestionlabelprefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1678,"kind":256,"name":"VCell","url":"interfaces/roosterjs_editor_types.vcell.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1679,"kind":1024,"name":"td","url":"interfaces/roosterjs_editor_types.vcell.html#td","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1680,"kind":1024,"name":"spanLeft","url":"interfaces/roosterjs_editor_types.vcell.html#spanleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1681,"kind":1024,"name":"spanAbove","url":"interfaces/roosterjs_editor_types.vcell.html#spanabove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1682,"kind":1024,"name":"width","url":"interfaces/roosterjs_editor_types.vcell.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1683,"kind":1024,"name":"height","url":"interfaces/roosterjs_editor_types.vcell.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1684,"kind":256,"name":"ImageEditOptions","url":"interfaces/roosterjs_editor_types.imageeditoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1685,"kind":1024,"name":"borderColor","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#bordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1686,"kind":1024,"name":"minWidth","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minwidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1687,"kind":1024,"name":"minHeight","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1688,"kind":1024,"name":"preserveRatio","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#preserveratio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1689,"kind":1024,"name":"minRotateDeg","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minrotatedeg","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1690,"kind":1024,"name":"imageSelector","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#imageselector","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1691,"kind":1024,"name":"rotateIconHTML","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#rotateiconhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1692,"kind":1024,"name":"disableSideResize","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablesideresize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1693,"kind":1024,"name":"disableRotate","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablerotate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1694,"kind":1024,"name":"disableCrop","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablecrop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1695,"kind":1024,"name":"onSelectState","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#onselectstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1696,"kind":256,"name":"CreateElementData","url":"interfaces/roosterjs_editor_types.createelementdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1697,"kind":1024,"name":"tag","url":"interfaces/roosterjs_editor_types.createelementdata.html#tag","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1698,"kind":1024,"name":"namespace","url":"interfaces/roosterjs_editor_types.createelementdata.html#namespace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1699,"kind":1024,"name":"className","url":"interfaces/roosterjs_editor_types.createelementdata.html#classname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1700,"kind":1024,"name":"style","url":"interfaces/roosterjs_editor_types.createelementdata.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1701,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_editor_types.createelementdata.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1702,"kind":1024,"name":"attributes","url":"interfaces/roosterjs_editor_types.createelementdata.html#attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1703,"kind":1024,"name":"children","url":"interfaces/roosterjs_editor_types.createelementdata.html#children","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1704,"kind":256,"name":"SelectionRangeExBase","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1705,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1706,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1707,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1708,"kind":256,"name":"NormalSelectionRange","url":"interfaces/roosterjs_editor_types.normalselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1709,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1710,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1711,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1712,"kind":256,"name":"TableSelectionRange","url":"interfaces/roosterjs_editor_types.tableselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1713,"kind":1024,"name":"table","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1714,"kind":1024,"name":"coordinates","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#coordinates","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1715,"kind":1024,"name":"isWholeTableSelected","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#iswholetableselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1716,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1717,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1718,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1719,"kind":256,"name":"ImageSelectionRange","url":"interfaces/roosterjs_editor_types.imageselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1720,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1721,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1722,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1723,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1724,"kind":4194304,"name":"SelectionRangeEx","url":"modules/roosterjs_editor_types.html#selectionrangeex","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1725,"kind":256,"name":"KnownEntityItem","url":"interfaces/roosterjs_editor_types.knownentityitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1726,"kind":1024,"name":"element","url":"interfaces/roosterjs_editor_types.knownentityitem.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1727,"kind":1024,"name":"isDeleted","url":"interfaces/roosterjs_editor_types.knownentityitem.html#isdeleted","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1728,"kind":1024,"name":"canPersist","url":"interfaces/roosterjs_editor_types.knownentityitem.html#canpersist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1729,"kind":4194304,"name":"AttributeCallback","url":"modules/roosterjs_editor_types.html#attributecallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1730,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#attributecallback.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AttributeCallback"},{"id":1731,"kind":4194304,"name":"AttributeCallbackMap","url":"modules/roosterjs_editor_types.html#attributecallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1732,"kind":4194304,"name":"CssStyleCallback","url":"modules/roosterjs_editor_types.html#cssstylecallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1733,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#cssstylecallback.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CssStyleCallback"},{"id":1734,"kind":4194304,"name":"CssStyleCallbackMap","url":"modules/roosterjs_editor_types.html#cssstylecallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1735,"kind":4194304,"name":"ElementCallback","url":"modules/roosterjs_editor_types.html#elementcallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1736,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#elementcallback.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.ElementCallback"},{"id":1737,"kind":4194304,"name":"StringMap","url":"modules/roosterjs_editor_types.html#stringmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1738,"kind":4194304,"name":"ElementCallbackMap","url":"modules/roosterjs_editor_types.html#elementcallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1739,"kind":4194304,"name":"PredefinedCssMap","url":"modules/roosterjs_editor_types.html#predefinedcssmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1740,"kind":4194304,"name":"DOMEventHandlerFunction","url":"modules/roosterjs_editor_types.html#domeventhandlerfunction","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1741,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#domeventhandlerfunction.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.DOMEventHandlerFunction"},{"id":1742,"kind":256,"name":"DOMEventHandlerObject","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1743,"kind":1024,"name":"pluginEventType","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html#plugineventtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventHandlerObject"},{"id":1744,"kind":1024,"name":"beforeDispatch","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html#beforedispatch","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventHandlerObject"},{"id":1745,"kind":4194304,"name":"DOMEventHandler","url":"modules/roosterjs_editor_types.html#domeventhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1746,"kind":4194304,"name":"TrustedHTMLHandler","url":"modules/roosterjs_editor_types.html#trustedhtmlhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1747,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#trustedhtmlhandler.__type-28","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TrustedHTMLHandler"},{"id":1748,"kind":4194304,"name":"SizeTransformer","url":"modules/roosterjs_editor_types.html#sizetransformer","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1749,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#sizetransformer.__type-23","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SizeTransformer"},{"id":1750,"kind":4194304,"name":"ArrayItemType","url":"modules/roosterjs_editor_types.html#arrayitemtype","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1751,"kind":256,"name":"DefinitionBase","url":"interfaces/roosterjs_editor_types.definitionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1752,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.definitionbase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1753,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.definitionbase.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1754,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.definitionbase.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1755,"kind":256,"name":"StringDefinition","url":"interfaces/roosterjs_editor_types.stringdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1756,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.stringdefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StringDefinition"},{"id":1757,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.stringdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1758,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.stringdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1759,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.stringdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1760,"kind":256,"name":"NumberDefinition","url":"interfaces/roosterjs_editor_types.numberdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1761,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.numberdefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1762,"kind":1024,"name":"minValue","url":"interfaces/roosterjs_editor_types.numberdefinition.html#minvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1763,"kind":1024,"name":"maxValue","url":"interfaces/roosterjs_editor_types.numberdefinition.html#maxvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1764,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.numberdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1765,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.numberdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1766,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.numberdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1767,"kind":256,"name":"BooleanDefinition","url":"interfaces/roosterjs_editor_types.booleandefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1768,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.booleandefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1769,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.booleandefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1770,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.booleandefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1771,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.booleandefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1772,"kind":256,"name":"ArrayDefinition","url":"interfaces/roosterjs_editor_types.arraydefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1773,"kind":1024,"name":"itemDef","url":"interfaces/roosterjs_editor_types.arraydefinition.html#itemdef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1774,"kind":1024,"name":"minLength","url":"interfaces/roosterjs_editor_types.arraydefinition.html#minlength","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1775,"kind":1024,"name":"maxLength","url":"interfaces/roosterjs_editor_types.arraydefinition.html#maxlength","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1776,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.arraydefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1777,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.arraydefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1778,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.arraydefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1779,"kind":256,"name":"ObjectDefinition","url":"interfaces/roosterjs_editor_types.objectdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1780,"kind":1024,"name":"propertyDef","url":"interfaces/roosterjs_editor_types.objectdefinition.html#propertydef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1781,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.objectdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1782,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.objectdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1783,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.objectdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1784,"kind":4194304,"name":"ObjectPropertyDefinition","url":"modules/roosterjs_editor_types.html#objectpropertydefinition","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1785,"kind":256,"name":"CustomizeDefinition","url":"interfaces/roosterjs_editor_types.customizedefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1786,"kind":1024,"name":"validator","url":"interfaces/roosterjs_editor_types.customizedefinition.html#validator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1787,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customizedefinition.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1788,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.customizedefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1789,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.customizedefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1790,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.customizedefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1791,"kind":4194304,"name":"Definition","url":"modules/roosterjs_editor_types.html#definition","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1792,"kind":4194304,"name":"CoreCreator","url":"modules/roosterjs_editor_types.html#corecreator","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1793,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#corecreator.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CoreCreator"},{"id":1794,"kind":4,"name":"CompatibleAlignment","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1795,"kind":16,"name":"Left","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1796,"kind":16,"name":"Center","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#center","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1797,"kind":16,"name":"Right","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1798,"kind":4,"name":"CompatibleBulletListType","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1799,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1800,"kind":16,"name":"Disc","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#disc","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1801,"kind":16,"name":"Dash","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#dash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1802,"kind":16,"name":"Square","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#square","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1803,"kind":16,"name":"ShortArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#shortarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1804,"kind":16,"name":"LongArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#longarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1805,"kind":16,"name":"UnfilledArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#unfilledarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1806,"kind":16,"name":"Hyphen","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#hyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1807,"kind":16,"name":"DoubleLongArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#doublelongarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1808,"kind":16,"name":"Circle","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#circle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1809,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1810,"kind":4,"name":"CompatibleCapitalization","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1811,"kind":16,"name":"Sentence","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#sentence","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1812,"kind":16,"name":"Lowercase","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#lowercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1813,"kind":16,"name":"Uppercase","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#uppercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1814,"kind":16,"name":"CapitalizeEachWord","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#capitalizeeachword","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1815,"kind":4,"name":"CompatibleChangeSource","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1816,"kind":16,"name":"AutoLink","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#autolink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1817,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1818,"kind":16,"name":"Format","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#format","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1819,"kind":16,"name":"ImageResize","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#imageresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1820,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1821,"kind":16,"name":"SetContent","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#setcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1822,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1823,"kind":16,"name":"Drop","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#drop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1824,"kind":16,"name":"InsertEntity","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#insertentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1825,"kind":16,"name":"SwitchToDarkMode","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#switchtodarkmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1826,"kind":16,"name":"SwitchToLightMode","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#switchtolightmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1827,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1828,"kind":16,"name":"Keyboard","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#keyboard","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1829,"kind":4,"name":"CompatibleClearFormatMode","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1830,"kind":16,"name":"Inline","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#inline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1831,"kind":16,"name":"Block","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#block","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1832,"kind":16,"name":"AutoDetect","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#autodetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1833,"kind":4,"name":"CompatibleColorTransformDirection","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1834,"kind":16,"name":"LightToDark","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html#lighttodark","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleColorTransformDirection"},{"id":1835,"kind":16,"name":"DarkToLight","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html#darktolight","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleColorTransformDirection"},{"id":1836,"kind":4,"name":"CompatibleContentPosition","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1837,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1838,"kind":16,"name":"End","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1839,"kind":16,"name":"DomEnd","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#domend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1840,"kind":16,"name":"SelectionStart","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#selectionstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1841,"kind":16,"name":"Outside","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#outside","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1842,"kind":16,"name":"Range","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1843,"kind":4,"name":"CompatibleContentTypePrefix","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1844,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentTypePrefix"},{"id":1845,"kind":16,"name":"Image","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html#image","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentTypePrefix"},{"id":1846,"kind":4,"name":"CompatibleContentType","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1847,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentType"},{"id":1848,"kind":16,"name":"HTML","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html#html","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentType"},{"id":1849,"kind":4,"name":"CompatibleDarkModeDatasetNames","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1850,"kind":16,"name":"OriginalStyleColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalstylecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1851,"kind":16,"name":"OriginalStyleBackgroundColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalstylebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1852,"kind":16,"name":"OriginalAttributeColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalattributecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1853,"kind":16,"name":"OriginalAttributeBackgroundColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalattributebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1854,"kind":4,"name":"CompatibleDefinitionType","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1855,"kind":16,"name":"Boolean","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#boolean","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1856,"kind":16,"name":"Number","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#number","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1857,"kind":16,"name":"String","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#string","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1858,"kind":16,"name":"Array","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#array","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1859,"kind":16,"name":"Object","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#object","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1860,"kind":16,"name":"Customize","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#customize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1861,"kind":4,"name":"CompatibleDelimiterClasses","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1862,"kind":16,"name":"DELIMITER_BEFORE","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html#delimiter_before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDelimiterClasses"},{"id":1863,"kind":16,"name":"DELIMITER_AFTER","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html#delimiter_after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDelimiterClasses"},{"id":1864,"kind":4,"name":"CompatibleDirection","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1865,"kind":16,"name":"LeftToRight","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html#lefttoright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDirection"},{"id":1866,"kind":16,"name":"RightToLeft","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html#righttoleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDirection"},{"id":1867,"kind":4,"name":"CompatibleDocumentCommand","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1868,"kind":16,"name":"AutoUrlDetect","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#autourldetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1869,"kind":16,"name":"BackColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#backcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1870,"kind":16,"name":"Bold","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1871,"kind":16,"name":"ClearAuthenticationCache","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#clearauthenticationcache","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1872,"kind":16,"name":"ContentReadOnly","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#contentreadonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1873,"kind":16,"name":"Copy","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#copy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1874,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1875,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1876,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1877,"kind":16,"name":"DefaultParagraphSeparator","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#defaultparagraphseparator","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1878,"kind":16,"name":"Delete","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1879,"kind":16,"name":"EnableInlineTableEditing","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#enableinlinetableediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1880,"kind":16,"name":"EnableObjectResizing","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#enableobjectresizing","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1881,"kind":16,"name":"FontName","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#fontname","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1882,"kind":16,"name":"FontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1883,"kind":16,"name":"ForeColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#forecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1884,"kind":16,"name":"FormatBlock","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#formatblock","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1885,"kind":16,"name":"ForwardDelete","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#forwarddelete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1886,"kind":16,"name":"Heading","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1887,"kind":16,"name":"HiliteColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#hilitecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1888,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1889,"kind":16,"name":"Indent","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#indent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1890,"kind":16,"name":"InsertBrOnReturn","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertbronreturn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1891,"kind":16,"name":"InsertHorizontalRule","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserthorizontalrule","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1892,"kind":16,"name":"InsertHTML","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserthtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1893,"kind":16,"name":"InsertImage","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1894,"kind":16,"name":"InsertOrderedList","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1895,"kind":16,"name":"InsertUnorderedList","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertunorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1896,"kind":16,"name":"InsertParagraph","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertparagraph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1897,"kind":16,"name":"InsertText","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserttext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1898,"kind":16,"name":"Italic","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1899,"kind":16,"name":"JustifyCenter","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifycenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1900,"kind":16,"name":"JustifyFull","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyfull","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1901,"kind":16,"name":"JustifyLeft","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1902,"kind":16,"name":"JustifyRight","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1903,"kind":16,"name":"Outdent","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#outdent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1904,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1905,"kind":16,"name":"Redo","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1906,"kind":16,"name":"RemoveFormat","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#removeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1907,"kind":16,"name":"SelectAll","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#selectall","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1908,"kind":16,"name":"StrikeThrough","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1909,"kind":16,"name":"Subscript","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1910,"kind":16,"name":"Superscript","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1911,"kind":16,"name":"Underline","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1912,"kind":16,"name":"Undo","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1913,"kind":16,"name":"Unlink","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#unlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1914,"kind":16,"name":"StyleWithCSS","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#stylewithcss","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1915,"kind":4,"name":"CompatibleDocumentPosition","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1916,"kind":16,"name":"Same","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#same","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1917,"kind":16,"name":"Disconnected","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1918,"kind":16,"name":"Preceding","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#preceding","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1919,"kind":16,"name":"Following","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#following","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1920,"kind":16,"name":"Contains","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#contains","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1921,"kind":16,"name":"ContainedBy","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#containedby","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1922,"kind":4,"name":"CompatibleEntityClasses","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1923,"kind":16,"name":"ENTITY_INFO_NAME","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_info_name","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1924,"kind":16,"name":"ENTITY_TYPE_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_type_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1925,"kind":16,"name":"ENTITY_ID_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_id_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1926,"kind":16,"name":"ENTITY_READONLY_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_readonly_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1927,"kind":4,"name":"CompatibleEntityOperation","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1928,"kind":16,"name":"NewEntity","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#newentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1929,"kind":16,"name":"Click","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#click","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1930,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1931,"kind":16,"name":"Escape","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1932,"kind":16,"name":"RemoveFromStart","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removefromstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1933,"kind":16,"name":"RemoveFromEnd","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removefromend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1934,"kind":16,"name":"Overwrite","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#overwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1935,"kind":16,"name":"PartialOverwrite","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#partialoverwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1936,"kind":16,"name":"ReplaceTemporaryContent","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#replacetemporarycontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1937,"kind":16,"name":"AddShadowRoot","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#addshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1938,"kind":16,"name":"RemoveShadowRoot","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removeshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1939,"kind":16,"name":"UpdateEntityState","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#updateentitystate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1940,"kind":4,"name":"CompatibleExperimentalFeatures","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1941,"kind":16,"name":"NewIndentation","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newindentation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1942,"kind":16,"name":"NewBullet","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newbullet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1943,"kind":16,"name":"NewNumbering","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newnumbering","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1944,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1945,"kind":16,"name":"MergePastedLine","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#mergepastedline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1946,"kind":16,"name":"SingleDirectionResize","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#singledirectionresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1947,"kind":16,"name":"PasteWithLinkPreview","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#pastewithlinkpreview","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1948,"kind":16,"name":"ImageRotate","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imagerotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1949,"kind":16,"name":"ImageCrop","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imagecrop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1950,"kind":16,"name":"AlwaysApplyDefaultFormat","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#alwaysapplydefaultformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1951,"kind":16,"name":"ConvertSingleImageBody","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#convertsingleimagebody","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1952,"kind":16,"name":"TableAlignment","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#tablealignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1953,"kind":16,"name":"AdaptiveHandlesResizer","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#adaptivehandlesresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1954,"kind":16,"name":"AutoHyphen","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#autohyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1955,"kind":16,"name":"PendingStyleBasedFormat","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#pendingstylebasedformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1956,"kind":16,"name":"NormalizeList","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#normalizelist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1957,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1958,"kind":16,"name":"VariableBasedDarkColor","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#variablebaseddarkcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1959,"kind":16,"name":"ListItemAlignment","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#listitemalignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1960,"kind":16,"name":"DefaultFormatInSpan","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#defaultformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1961,"kind":16,"name":"DefaultFormatOnContainer","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#defaultformatoncontainer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1962,"kind":16,"name":"ReusableContentModel","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#reusablecontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1963,"kind":16,"name":"EditWithContentModel","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#editwithcontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1964,"kind":16,"name":"TabKeyTextFeatures","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#tabkeytextfeatures","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1965,"kind":16,"name":"AutoFormatList","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#autoformatlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1966,"kind":16,"name":"ReuseAllAncestorListElements","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#reuseallancestorlistelements","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1967,"kind":16,"name":"DeleteTableWithBackspace","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#deletetablewithbackspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1968,"kind":16,"name":"InlineEntityReadOnlyDelimiters","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#inlineentityreadonlydelimiters","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1969,"kind":16,"name":"ContentModelPaste","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#contentmodelpaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1970,"kind":16,"name":"DisableListChain","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#disablelistchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1971,"kind":4,"name":"CompatibleFontSizeChange","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1972,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleFontSizeChange"},{"id":1973,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleFontSizeChange"},{"id":1974,"kind":4,"name":"CompatibleGetContentMode","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1975,"kind":16,"name":"CleanHTML","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#cleanhtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1976,"kind":16,"name":"RawHTMLOnly","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#rawhtmlonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1977,"kind":16,"name":"RawHTMLWithSelection","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#rawhtmlwithselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1978,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1979,"kind":16,"name":"PlainTextFast","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#plaintextfast","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1980,"kind":4,"name":"CompatibleImageEditOperation","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1981,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1982,"kind":16,"name":"CornerResize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#cornerresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1983,"kind":16,"name":"SideResize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#sideresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1984,"kind":16,"name":"Resize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#resize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1985,"kind":16,"name":"Rotate","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#rotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1986,"kind":16,"name":"ResizeAndRotate","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#resizeandrotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1987,"kind":16,"name":"Crop","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#crop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1988,"kind":16,"name":"All","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#all","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1989,"kind":4,"name":"CompatibleIndentation","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1990,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleIndentation"},{"id":1991,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleIndentation"},{"id":1992,"kind":4,"name":"CompatibleKeys","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1993,"kind":16,"name":"NULL","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#null","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1994,"kind":16,"name":"BACKSPACE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#backspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1995,"kind":16,"name":"TAB","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#tab","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1996,"kind":16,"name":"ENTER","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#enter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1997,"kind":16,"name":"SHIFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#shift","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1998,"kind":16,"name":"CTRL_LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#ctrl_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1999,"kind":16,"name":"ALT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#alt","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2000,"kind":16,"name":"ESCAPE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2001,"kind":16,"name":"SPACE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#space","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2002,"kind":16,"name":"PAGEUP","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#pageup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2003,"kind":16,"name":"END","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2004,"kind":16,"name":"HOME","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#home","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2005,"kind":16,"name":"LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2006,"kind":16,"name":"UP","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#up","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2007,"kind":16,"name":"RIGHT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2008,"kind":16,"name":"DOWN","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#down","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2009,"kind":16,"name":"PRINT_SCREEN","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#print_screen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2010,"kind":16,"name":"DELETE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2011,"kind":16,"name":"EIGHT_ASTIRISK","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#eight_astirisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2012,"kind":16,"name":"EIGHT_ASTERISK","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#eight_asterisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2013,"kind":16,"name":"B","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#b","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2014,"kind":16,"name":"I","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#i","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2015,"kind":16,"name":"U","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#u","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2016,"kind":16,"name":"Y","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#y","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2017,"kind":16,"name":"Z","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#z","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2018,"kind":16,"name":"META_LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#meta_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2019,"kind":16,"name":"COMMA","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#comma","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2020,"kind":16,"name":"DASH_UNDERSCORE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#dash_underscore","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2021,"kind":16,"name":"PERIOD","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#period","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2022,"kind":16,"name":"FORWARDSLASH","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#forwardslash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2023,"kind":16,"name":"FORWARD_SLASH","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#forward_slash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2024,"kind":16,"name":"GRAVE_TILDE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#grave_tilde","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2025,"kind":16,"name":"CONTENTCHANGED","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2026,"kind":16,"name":"RANGE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2027,"kind":16,"name":"Ctrl","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#ctrl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2028,"kind":16,"name":"Meta","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#meta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2029,"kind":16,"name":"Shift","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#shift-1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2030,"kind":4,"name":"CompatibleKnownCreateElementDataIndex","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2031,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2032,"kind":16,"name":"EmptyLine","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#emptyline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2033,"kind":16,"name":"BlockquoteWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#blockquotewrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2034,"kind":16,"name":"CopyPasteTempDiv","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#copypastetempdiv","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2035,"kind":16,"name":"BlockListItem","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#blocklistitem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2036,"kind":16,"name":"ContextMenuWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#contextmenuwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2037,"kind":16,"name":"ImageEditWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#imageeditwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2038,"kind":16,"name":"TableHorizontalResizer","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tablehorizontalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2039,"kind":16,"name":"TableVerticalResizer","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableverticalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2040,"kind":16,"name":"TableResizerLTR","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableresizerltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2041,"kind":16,"name":"TableResizerRTL","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableresizerrtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2042,"kind":16,"name":"TableSelector","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableselector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2043,"kind":16,"name":"EmptyLineFormatInSpan","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#emptylineformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2044,"kind":4,"name":"CompatibleKnownPasteSourceType","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2045,"kind":16,"name":"WordDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#worddesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2046,"kind":16,"name":"ExcelDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#exceldesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2047,"kind":16,"name":"ExcelOnline","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#excelonline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2048,"kind":16,"name":"PowerPointDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#powerpointdesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2049,"kind":16,"name":"GoogleSheets","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#googlesheets","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2050,"kind":16,"name":"WacComponents","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#waccomponents","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2051,"kind":16,"name":"Default","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2052,"kind":16,"name":"SingleImage","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#singleimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2053,"kind":4,"name":"CompatibleListType","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2054,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2055,"kind":16,"name":"Ordered","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#ordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2056,"kind":16,"name":"Unordered","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#unordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2057,"kind":4,"name":"CompatibleNodeType","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2058,"kind":16,"name":"Element","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2059,"kind":16,"name":"Attribute","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#attribute","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2060,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2061,"kind":16,"name":"ProcessingInstruction","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#processinginstruction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2062,"kind":16,"name":"Comment","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#comment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2063,"kind":16,"name":"Document","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#document","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2064,"kind":16,"name":"DocumentType","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#documenttype","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2065,"kind":16,"name":"DocumentFragment","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#documentfragment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2066,"kind":4,"name":"CompatibleNumberingListType","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2067,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2068,"kind":16,"name":"Decimal","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2069,"kind":16,"name":"DecimalDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimaldash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2070,"kind":16,"name":"DecimalParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimalparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2071,"kind":16,"name":"DecimalDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimaldoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2072,"kind":16,"name":"LowerAlpha","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2073,"kind":16,"name":"LowerAlphaParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2074,"kind":16,"name":"LowerAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2075,"kind":16,"name":"LowerAlphaDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2076,"kind":16,"name":"UpperAlpha","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2077,"kind":16,"name":"UpperAlphaParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2078,"kind":16,"name":"UpperAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2079,"kind":16,"name":"UpperAlphaDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2080,"kind":16,"name":"LowerRoman","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2081,"kind":16,"name":"LowerRomanParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2082,"kind":16,"name":"LowerRomanDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2083,"kind":16,"name":"LowerRomanDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2084,"kind":16,"name":"UpperRoman","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2085,"kind":16,"name":"UpperRomanParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2086,"kind":16,"name":"UpperRomanDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2087,"kind":16,"name":"UpperRomanDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2088,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2089,"kind":4,"name":"CompatiblePasteType","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2090,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2091,"kind":16,"name":"AsPlainText","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#asplaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2092,"kind":16,"name":"MergeFormat","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#mergeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2093,"kind":16,"name":"AsImage","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#asimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2094,"kind":4,"name":"CompatiblePluginEventType","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2095,"kind":16,"name":"KeyDown","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keydown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2096,"kind":16,"name":"KeyPress","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keypress","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2097,"kind":16,"name":"KeyUp","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keyup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2098,"kind":16,"name":"Input","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#input","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2099,"kind":16,"name":"CompositionEnd","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#compositionend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2100,"kind":16,"name":"MouseDown","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#mousedown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2101,"kind":16,"name":"MouseUp","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#mouseup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2102,"kind":16,"name":"ContentChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2103,"kind":16,"name":"ExtractContentWithDom","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#extractcontentwithdom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2104,"kind":16,"name":"BeforeCutCopy","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforecutcopy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2105,"kind":16,"name":"BeforePaste","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforepaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2106,"kind":16,"name":"EditorReady","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#editorready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2107,"kind":16,"name":"BeforeDispose","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforedispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2108,"kind":16,"name":"PendingFormatStateChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#pendingformatstatechanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2109,"kind":16,"name":"Scroll","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#scroll","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2110,"kind":16,"name":"EntityOperation","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#entityoperation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2111,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2112,"kind":16,"name":"EnteredShadowEdit","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#enteredshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2113,"kind":16,"name":"LeavingShadowEdit","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#leavingshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2114,"kind":16,"name":"EditImage","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#editimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2115,"kind":16,"name":"BeforeSetContent","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforesetcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2116,"kind":16,"name":"ZoomChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#zoomchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2117,"kind":16,"name":"SelectionChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#selectionchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2118,"kind":16,"name":"BeforeKeyboardEditing","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforekeyboardediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2119,"kind":4,"name":"CompatiblePositionType","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2120,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2121,"kind":16,"name":"End","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2122,"kind":16,"name":"Before","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2123,"kind":16,"name":"After","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2124,"kind":4,"name":"CompatibleQueryScope","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2125,"kind":16,"name":"Body","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#body","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2126,"kind":16,"name":"OnSelection","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#onselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2127,"kind":16,"name":"InSelection","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#inselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2128,"kind":4,"name":"CompatibleRegionType","url":"enums/roosterjs_editor_types_compatible.compatibleregiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2129,"kind":16,"name":"Table","url":"enums/roosterjs_editor_types_compatible.compatibleregiontype.html#table","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleRegionType"},{"id":2130,"kind":4,"name":"CompatibleSelectionRangeTypes","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2131,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2132,"kind":16,"name":"TableSelection","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#tableselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2133,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2134,"kind":4,"name":"CompatibleTableBorderFormat","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2135,"kind":16,"name":"DEFAULT","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2136,"kind":16,"name":"LIST_WITH_SIDE_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#list_with_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2137,"kind":16,"name":"NO_HEADER_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#no_header_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2138,"kind":16,"name":"NO_SIDE_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#no_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2139,"kind":16,"name":"FIRST_COLUMN_HEADER_EXTERNAL","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#first_column_header_external","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2140,"kind":16,"name":"ESPECIAL_TYPE_1","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2141,"kind":16,"name":"ESPECIAL_TYPE_2","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_2","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2142,"kind":16,"name":"ESPECIAL_TYPE_3","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_3","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2143,"kind":16,"name":"CLEAR","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#clear","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2144,"kind":4,"name":"CompatibleTableOperation","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2145,"kind":16,"name":"InsertAbove","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2146,"kind":16,"name":"InsertBelow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertbelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2147,"kind":16,"name":"InsertLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2148,"kind":16,"name":"InsertRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2149,"kind":16,"name":"DeleteTable","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deletetable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2150,"kind":16,"name":"DeleteColumn","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deletecolumn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2151,"kind":16,"name":"DeleteRow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deleterow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2152,"kind":16,"name":"MergeAbove","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2153,"kind":16,"name":"MergeBelow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergebelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2154,"kind":16,"name":"MergeLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2155,"kind":16,"name":"MergeRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2156,"kind":16,"name":"MergeCells","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergecells","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2157,"kind":16,"name":"SplitHorizontally","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#splithorizontally","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2158,"kind":16,"name":"SplitVertically","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#splitvertically","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2159,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2160,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2161,"kind":16,"name":"AlignRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2162,"kind":16,"name":"AlignCellLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2163,"kind":16,"name":"AlignCellCenter","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellcenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2164,"kind":16,"name":"AlignCellRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2165,"kind":16,"name":"AlignCellTop","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncelltop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2166,"kind":16,"name":"AlignCellMiddle","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellmiddle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2167,"kind":16,"name":"AlignCellBottom","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellbottom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2168,"kind":64,"name":"getBlockElementAtNode","url":"modules/roosterjs_editor_dom.html#getblockelementatnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2169,"kind":64,"name":"getFirstLastBlockElement","url":"modules/roosterjs_editor_dom.html#getfirstlastblockelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2170,"kind":128,"name":"ContentTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2171,"kind":2048,"name":"createBodyTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2172,"kind":2048,"name":"createSelectionTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2173,"kind":2048,"name":"createBlockTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2174,"kind":262144,"name":"currentBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#currentblockelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2175,"kind":2048,"name":"getNextBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getnextblockelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2176,"kind":2048,"name":"getPreviousBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getpreviousblockelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2177,"kind":262144,"name":"currentInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#currentinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2178,"kind":2048,"name":"getNextInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getnextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2179,"kind":2048,"name":"getPreviousInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getpreviousinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2180,"kind":128,"name":"PositionContentSearcher","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2181,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2182,"kind":2048,"name":"getWordBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getwordbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2183,"kind":2048,"name":"getInlineElementBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getinlineelementbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2184,"kind":2048,"name":"getInlineElementAfter","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getinlineelementafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2185,"kind":2048,"name":"getSubStringBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getsubstringbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2186,"kind":2048,"name":"getRangeFromText","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getrangefromtext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2187,"kind":2048,"name":"forEachTextInlineElement","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#foreachtextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2188,"kind":2048,"name":"getNearestNonTextInlineElement","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getnearestnontextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2189,"kind":64,"name":"addDelimiters","url":"modules/roosterjs_editor_dom.html#adddelimiters","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2190,"kind":64,"name":"addDelimiterAfter","url":"modules/roosterjs_editor_dom.html#adddelimiterafter","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2191,"kind":64,"name":"addDelimiterBefore","url":"modules/roosterjs_editor_dom.html#adddelimiterbefore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2192,"kind":64,"name":"getDelimiterFromElement","url":"modules/roosterjs_editor_dom.html#getdelimiterfromelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2193,"kind":64,"name":"getInlineElementAtNode","url":"modules/roosterjs_editor_dom.html#getinlineelementatnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2194,"kind":128,"name":"ImageInlineElement","url":"classes/roosterjs_editor_dom.imageinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2195,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.imageinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2196,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.imageinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2197,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2198,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2199,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2200,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2201,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.imageinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2202,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.imageinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2203,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.imageinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2204,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.imageinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2205,"kind":128,"name":"LinkInlineElement","url":"classes/roosterjs_editor_dom.linkinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2206,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.linkinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2207,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.linkinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2208,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2209,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2210,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2211,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2212,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.linkinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2213,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.linkinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2214,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.linkinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2215,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.linkinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2216,"kind":128,"name":"NodeInlineElement","url":"classes/roosterjs_editor_dom.nodeinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2217,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2218,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2219,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2220,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2221,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2222,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2223,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2224,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2225,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2226,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2227,"kind":128,"name":"PartialInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2228,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.partialinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2229,"kind":2048,"name":"getDecoratedInline","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getdecoratedinline","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2230,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2231,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2232,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.partialinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2233,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2234,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2235,"kind":262144,"name":"nextInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#nextinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2236,"kind":262144,"name":"previousInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#previousinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2237,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.partialinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2238,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2239,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.partialinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2240,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.partialinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2241,"kind":64,"name":"applyTextStyle","url":"modules/roosterjs_editor_dom.html#applytextstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2242,"kind":64,"name":"extractClipboardEvent","url":"modules/roosterjs_editor_dom.html#extractclipboardevent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2243,"kind":64,"name":"extractClipboardItems","url":"modules/roosterjs_editor_dom.html#extractclipboarditems","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2244,"kind":64,"name":"extractClipboardItemsForIE","url":"modules/roosterjs_editor_dom.html#extractclipboarditemsforie","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2245,"kind":64,"name":"handleImagePaste","url":"modules/roosterjs_editor_dom.html#handleimagepaste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2246,"kind":64,"name":"handleTextPaste","url":"modules/roosterjs_editor_dom.html#handletextpaste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2247,"kind":64,"name":"retrieveMetadataFromClipboard","url":"modules/roosterjs_editor_dom.html#retrievemetadatafromclipboard","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2248,"kind":64,"name":"sanitizePasteContent","url":"modules/roosterjs_editor_dom.html#sanitizepastecontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2249,"kind":64,"name":"getPasteType","url":"modules/roosterjs_editor_dom.html#getpastetype","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2250,"kind":32,"name":"Browser","url":"modules/roosterjs_editor_dom.html#browser","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2251,"kind":64,"name":"getBrowserInfo","url":"modules/roosterjs_editor_dom.html#getbrowserinfo","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2252,"kind":64,"name":"applyFormat","url":"modules/roosterjs_editor_dom.html#applyformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2253,"kind":64,"name":"changeElementTag","url":"modules/roosterjs_editor_dom.html#changeelementtag","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2254,"kind":64,"name":"collapseNodes","url":"modules/roosterjs_editor_dom.html#collapsenodes","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2255,"kind":64,"name":"contains","url":"modules/roosterjs_editor_dom.html#contains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2256,"kind":64,"name":"findClosestElementAncestor","url":"modules/roosterjs_editor_dom.html#findclosestelementancestor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2257,"kind":64,"name":"fromHtml","url":"modules/roosterjs_editor_dom.html#fromhtml","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2258,"kind":64,"name":"getComputedStyles","url":"modules/roosterjs_editor_dom.html#getcomputedstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2259,"kind":64,"name":"getComputedStyle","url":"modules/roosterjs_editor_dom.html#getcomputedstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2260,"kind":64,"name":"getPendableFormatState","url":"modules/roosterjs_editor_dom.html#getpendableformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2261,"kind":32,"name":"PendableFormatCommandMap","url":"modules/roosterjs_editor_dom.html#pendableformatcommandmap","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2262,"kind":4194304,"name":"PendableFormatNames","url":"modules/roosterjs_editor_dom.html#pendableformatnames","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2263,"kind":64,"name":"getTagOfNode","url":"modules/roosterjs_editor_dom.html#gettagofnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2264,"kind":64,"name":"isBlockElement","url":"modules/roosterjs_editor_dom.html#isblockelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2265,"kind":64,"name":"isNodeEmpty","url":"modules/roosterjs_editor_dom.html#isnodeempty","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2266,"kind":64,"name":"isVoidHtmlElement","url":"modules/roosterjs_editor_dom.html#isvoidhtmlelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2267,"kind":64,"name":"matchLink","url":"modules/roosterjs_editor_dom.html#matchlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2268,"kind":64,"name":"queryElements","url":"modules/roosterjs_editor_dom.html#queryelements","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2269,"kind":64,"name":"splitParentNode","url":"modules/roosterjs_editor_dom.html#splitparentnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2270,"kind":64,"name":"splitBalancedNodeRange","url":"modules/roosterjs_editor_dom.html#splitbalancednoderange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2271,"kind":64,"name":"unwrap","url":"modules/roosterjs_editor_dom.html#unwrap","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2272,"kind":64,"name":"wrap","url":"modules/roosterjs_editor_dom.html#wrap","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2273,"kind":64,"name":"getNextLeafSibling","url":"modules/roosterjs_editor_dom.html#getnextleafsibling","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2274,"kind":64,"name":"getPreviousLeafSibling","url":"modules/roosterjs_editor_dom.html#getpreviousleafsibling","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2275,"kind":64,"name":"getFirstLeafNode","url":"modules/roosterjs_editor_dom.html#getfirstleafnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2276,"kind":64,"name":"getLastLeafNode","url":"modules/roosterjs_editor_dom.html#getlastleafnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2277,"kind":64,"name":"splitTextNode","url":"modules/roosterjs_editor_dom.html#splittextnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2278,"kind":64,"name":"normalizeRect","url":"modules/roosterjs_editor_dom.html#normalizerect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2279,"kind":64,"name":"safeInstanceOf","url":"modules/roosterjs_editor_dom.html#safeinstanceof","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2280,"kind":64,"name":"readFile","url":"modules/roosterjs_editor_dom.html#readfile","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2281,"kind":64,"name":"getInnerHTML","url":"modules/roosterjs_editor_dom.html#getinnerhtml","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2282,"kind":64,"name":"setColor","url":"modules/roosterjs_editor_dom.html#setcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2283,"kind":64,"name":"matchesSelector","url":"modules/roosterjs_editor_dom.html#matchesselector","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2284,"kind":64,"name":"createElement","url":"modules/roosterjs_editor_dom.html#createelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2285,"kind":32,"name":"KnownCreateElementData","url":"modules/roosterjs_editor_dom.html#knowncreateelementdata","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2286,"kind":64,"name":"moveChildNodes","url":"modules/roosterjs_editor_dom.html#movechildnodes","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2287,"kind":64,"name":"getIntersectedRect","url":"modules/roosterjs_editor_dom.html#getintersectedrect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2288,"kind":64,"name":"isNodeAfter","url":"modules/roosterjs_editor_dom.html#isnodeafter","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2289,"kind":64,"name":"parseColor","url":"modules/roosterjs_editor_dom.html#parsecolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2290,"kind":128,"name":"VTable","url":"classes/roosterjs_editor_dom.vtable.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2291,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vtable.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2292,"kind":1024,"name":"table","url":"classes/roosterjs_editor_dom.vtable.html#table","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2293,"kind":1024,"name":"cells","url":"classes/roosterjs_editor_dom.vtable.html#cells","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2294,"kind":1024,"name":"row","url":"classes/roosterjs_editor_dom.vtable.html#row","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2295,"kind":1024,"name":"col","url":"classes/roosterjs_editor_dom.vtable.html#col","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2296,"kind":1024,"name":"formatInfo","url":"classes/roosterjs_editor_dom.vtable.html#formatinfo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2297,"kind":262144,"name":"selection","url":"classes/roosterjs_editor_dom.vtable.html#selection","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2298,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vtable.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2299,"kind":2048,"name":"applyFormat","url":"classes/roosterjs_editor_dom.vtable.html#applyformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2300,"kind":2048,"name":"edit","url":"classes/roosterjs_editor_dom.vtable.html#edit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2301,"kind":2048,"name":"setAlignmentToSelectedCells","url":"classes/roosterjs_editor_dom.vtable.html#setalignmenttoselectedcells","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2302,"kind":2048,"name":"forEachCellOfCurrentColumn","url":"classes/roosterjs_editor_dom.vtable.html#foreachcellofcurrentcolumn","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2303,"kind":2048,"name":"getCellsWithBorder","url":"classes/roosterjs_editor_dom.vtable.html#getcellswithborder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2304,"kind":2048,"name":"forEachCellOfCurrentRow","url":"classes/roosterjs_editor_dom.vtable.html#foreachcellofcurrentrow","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2305,"kind":2048,"name":"getCell","url":"classes/roosterjs_editor_dom.vtable.html#getcell","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2306,"kind":2048,"name":"getCurrentTd","url":"classes/roosterjs_editor_dom.vtable.html#getcurrenttd","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2307,"kind":2048,"name":"getTd","url":"classes/roosterjs_editor_dom.vtable.html#gettd","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2308,"kind":2048,"name":"normalizeTableCellSize","url":"classes/roosterjs_editor_dom.vtable.html#normalizetablecellsize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2309,"kind":64,"name":"isWholeTableSelected","url":"modules/roosterjs_editor_dom.html#iswholetableselected","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2310,"kind":128,"name":"VList","url":"classes/roosterjs_editor_dom.vlist.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2311,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vlist.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2312,"kind":1024,"name":"items","url":"classes/roosterjs_editor_dom.vlist.html#items","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2313,"kind":1024,"name":"rootList","url":"classes/roosterjs_editor_dom.vlist.html#rootlist","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2314,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.vlist.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2315,"kind":2048,"name":"getLastItemNumber","url":"classes/roosterjs_editor_dom.vlist.html#getlastitemnumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2316,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vlist.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2317,"kind":2048,"name":"split","url":"classes/roosterjs_editor_dom.vlist.html#split","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2318,"kind":2048,"name":"setIndentation","url":"classes/roosterjs_editor_dom.vlist.html#setindentation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2319,"kind":2048,"name":"setAlignment","url":"classes/roosterjs_editor_dom.vlist.html#setalignment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2320,"kind":2048,"name":"changeListType","url":"classes/roosterjs_editor_dom.vlist.html#changelisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2321,"kind":2048,"name":"setListStyleType","url":"classes/roosterjs_editor_dom.vlist.html#setliststyletype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2322,"kind":2048,"name":"appendItem","url":"classes/roosterjs_editor_dom.vlist.html#appenditem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2323,"kind":2048,"name":"mergeVList","url":"classes/roosterjs_editor_dom.vlist.html#mergevlist","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2324,"kind":2048,"name":"getListItemIndex","url":"classes/roosterjs_editor_dom.vlist.html#getlistitemindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2325,"kind":2048,"name":"getStart","url":"classes/roosterjs_editor_dom.vlist.html#getstart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2326,"kind":128,"name":"VListItem","url":"classes/roosterjs_editor_dom.vlistitem.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2327,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vlistitem.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2328,"kind":2048,"name":"getListType","url":"classes/roosterjs_editor_dom.vlistitem.html#getlisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2329,"kind":2048,"name":"getLevel","url":"classes/roosterjs_editor_dom.vlistitem.html#getlevel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2330,"kind":2048,"name":"getNode","url":"classes/roosterjs_editor_dom.vlistitem.html#getnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2331,"kind":2048,"name":"getNewListStart","url":"classes/roosterjs_editor_dom.vlistitem.html#getnewliststart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2332,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.vlistitem.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2333,"kind":2048,"name":"isDummy","url":"classes/roosterjs_editor_dom.vlistitem.html#isdummy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2334,"kind":2048,"name":"isOrphanItem","url":"classes/roosterjs_editor_dom.vlistitem.html#isorphanitem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2335,"kind":2048,"name":"canMerge","url":"classes/roosterjs_editor_dom.vlistitem.html#canmerge","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2336,"kind":2048,"name":"mergeItems","url":"classes/roosterjs_editor_dom.vlistitem.html#mergeitems","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2337,"kind":2048,"name":"indent","url":"classes/roosterjs_editor_dom.vlistitem.html#indent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2338,"kind":2048,"name":"outdent","url":"classes/roosterjs_editor_dom.vlistitem.html#outdent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2339,"kind":2048,"name":"addNegativeMargins","url":"classes/roosterjs_editor_dom.vlistitem.html#addnegativemargins","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2340,"kind":2048,"name":"changeListType","url":"classes/roosterjs_editor_dom.vlistitem.html#changelisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2341,"kind":2048,"name":"setIsDummy","url":"classes/roosterjs_editor_dom.vlistitem.html#setisdummy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2342,"kind":2048,"name":"setNewListStart","url":"classes/roosterjs_editor_dom.vlistitem.html#setnewliststart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2343,"kind":2048,"name":"applyListStyle","url":"classes/roosterjs_editor_dom.vlistitem.html#applyliststyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2344,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vlistitem.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2345,"kind":64,"name":"createVListFromRegion","url":"modules/roosterjs_editor_dom.html#createvlistfromregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2346,"kind":128,"name":"VListChain","url":"classes/roosterjs_editor_dom.vlistchain.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2347,"kind":2048,"name":"createListChains","url":"classes/roosterjs_editor_dom.vlistchain.html#createlistchains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.VListChain"},{"id":2348,"kind":2048,"name":"canAppendAtCursor","url":"classes/roosterjs_editor_dom.vlistchain.html#canappendatcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2349,"kind":2048,"name":"createVListAtBlock","url":"classes/roosterjs_editor_dom.vlistchain.html#createvlistatblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2350,"kind":2048,"name":"commit","url":"classes/roosterjs_editor_dom.vlistchain.html#commit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2351,"kind":64,"name":"setListItemStyle","url":"modules/roosterjs_editor_dom.html#setlistitemstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2352,"kind":64,"name":"getTableFormatInfo","url":"modules/roosterjs_editor_dom.html#gettableformatinfo","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2353,"kind":64,"name":"saveTableCellMetadata","url":"modules/roosterjs_editor_dom.html#savetablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2354,"kind":64,"name":"getTableCellMetadata","url":"modules/roosterjs_editor_dom.html#gettablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2355,"kind":64,"name":"getRegionsFromRange","url":"modules/roosterjs_editor_dom.html#getregionsfromrange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2356,"kind":64,"name":"getSelectedBlockElementsInRegion","url":"modules/roosterjs_editor_dom.html#getselectedblockelementsinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2357,"kind":64,"name":"collapseNodesInRegion","url":"modules/roosterjs_editor_dom.html#collapsenodesinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2358,"kind":64,"name":"isNodeInRegion","url":"modules/roosterjs_editor_dom.html#isnodeinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2359,"kind":64,"name":"getSelectionRangeInRegion","url":"modules/roosterjs_editor_dom.html#getselectionrangeinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2360,"kind":64,"name":"mergeBlocksInRegion","url":"modules/roosterjs_editor_dom.html#mergeblocksinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2361,"kind":128,"name":"Position","url":"classes/roosterjs_editor_dom.position.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2362,"kind":2048,"name":"getStart","url":"classes/roosterjs_editor_dom.position.html#getstart","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.Position"},{"id":2363,"kind":2048,"name":"getEnd","url":"classes/roosterjs_editor_dom.position.html#getend","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.Position"},{"id":2364,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.position.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2365,"kind":1024,"name":"node","url":"classes/roosterjs_editor_dom.position.html#node","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2366,"kind":1024,"name":"element","url":"classes/roosterjs_editor_dom.position.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2367,"kind":1024,"name":"offset","url":"classes/roosterjs_editor_dom.position.html#offset","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2368,"kind":1024,"name":"isAtEnd","url":"classes/roosterjs_editor_dom.position.html#isatend","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2369,"kind":2048,"name":"normalize","url":"classes/roosterjs_editor_dom.position.html#normalize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2370,"kind":2048,"name":"equalTo","url":"classes/roosterjs_editor_dom.position.html#equalto","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2371,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.position.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2372,"kind":2048,"name":"move","url":"classes/roosterjs_editor_dom.position.html#move","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2373,"kind":64,"name":"createRange","url":"modules/roosterjs_editor_dom.html#createrange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2374,"kind":64,"name":"getPositionRect","url":"modules/roosterjs_editor_dom.html#getpositionrect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2375,"kind":64,"name":"isPositionAtBeginningOf","url":"modules/roosterjs_editor_dom.html#ispositionatbeginningof","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2376,"kind":64,"name":"getSelectionPath","url":"modules/roosterjs_editor_dom.html#getselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2377,"kind":64,"name":"getHtmlWithSelectionPath","url":"modules/roosterjs_editor_dom.html#gethtmlwithselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2378,"kind":64,"name":"setHtmlWithSelectionPath","url":"modules/roosterjs_editor_dom.html#sethtmlwithselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2379,"kind":64,"name":"setHtmlWithMetadata","url":"modules/roosterjs_editor_dom.html#sethtmlwithmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2380,"kind":64,"name":"extractContentMetadata","url":"modules/roosterjs_editor_dom.html#extractcontentmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2381,"kind":64,"name":"addRangeToSelection","url":"modules/roosterjs_editor_dom.html#addrangetoselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2382,"kind":64,"name":"addSnapshot","url":"modules/roosterjs_editor_dom.html#addsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2383,"kind":64,"name":"addSnapshotV2","url":"modules/roosterjs_editor_dom.html#addsnapshotv2","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2384,"kind":64,"name":"canMoveCurrentSnapshot","url":"modules/roosterjs_editor_dom.html#canmovecurrentsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2385,"kind":64,"name":"clearProceedingSnapshots","url":"modules/roosterjs_editor_dom.html#clearproceedingsnapshots","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2386,"kind":64,"name":"clearProceedingSnapshotsV2","url":"modules/roosterjs_editor_dom.html#clearproceedingsnapshotsv2","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2387,"kind":64,"name":"moveCurrentSnapshot","url":"modules/roosterjs_editor_dom.html#movecurrentsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2388,"kind":64,"name":"moveCurrentSnapsnot","url":"modules/roosterjs_editor_dom.html#movecurrentsnapsnot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2389,"kind":64,"name":"createSnapshots","url":"modules/roosterjs_editor_dom.html#createsnapshots","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2390,"kind":64,"name":"canUndoAutoComplete","url":"modules/roosterjs_editor_dom.html#canundoautocomplete","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2391,"kind":128,"name":"HtmlSanitizer","url":"classes/roosterjs_editor_dom.htmlsanitizer.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2392,"kind":2048,"name":"convertInlineCss","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#convertinlinecss","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2393,"kind":2048,"name":"sanitizeHtml","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#sanitizehtml","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2394,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2395,"kind":2048,"name":"exec","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#exec","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2396,"kind":2048,"name":"sanitize","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#sanitize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2397,"kind":2048,"name":"convertGlobalCssToInlineCss","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#convertglobalcsstoinlinecss","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2398,"kind":64,"name":"getInheritableStyles","url":"modules/roosterjs_editor_dom.html#getinheritablestyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2399,"kind":64,"name":"createDefaultHtmlSanitizerOptions","url":"modules/roosterjs_editor_dom.html#createdefaulthtmlsanitizeroptions","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2400,"kind":64,"name":"chainSanitizerCallback","url":"modules/roosterjs_editor_dom.html#chainsanitizercallback","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2401,"kind":64,"name":"commitEntity","url":"modules/roosterjs_editor_dom.html#commitentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2402,"kind":64,"name":"getEntityFromElement","url":"modules/roosterjs_editor_dom.html#getentityfromelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2403,"kind":64,"name":"getEntitySelector","url":"modules/roosterjs_editor_dom.html#getentityselector","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2404,"kind":64,"name":"createEntityPlaceholder","url":"modules/roosterjs_editor_dom.html#createentityplaceholder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2405,"kind":64,"name":"moveContentWithEntityPlaceholders","url":"modules/roosterjs_editor_dom.html#movecontentwithentityplaceholders","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2406,"kind":64,"name":"restoreContentWithEntityPlaceholder","url":"modules/roosterjs_editor_dom.html#restorecontentwithentityplaceholder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2407,"kind":64,"name":"cacheGetEventData","url":"modules/roosterjs_editor_dom.html#cachegeteventdata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2408,"kind":64,"name":"clearEventDataCache","url":"modules/roosterjs_editor_dom.html#cleareventdatacache","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2409,"kind":64,"name":"isModifierKey","url":"modules/roosterjs_editor_dom.html#ismodifierkey","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2410,"kind":64,"name":"isCharacterValue","url":"modules/roosterjs_editor_dom.html#ischaractervalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2411,"kind":64,"name":"isCtrlOrMetaPressed","url":"modules/roosterjs_editor_dom.html#isctrlormetapressed","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2412,"kind":64,"name":"getStyles","url":"modules/roosterjs_editor_dom.html#getstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2413,"kind":64,"name":"setStyles","url":"modules/roosterjs_editor_dom.html#setstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2414,"kind":64,"name":"removeImportantStyleRule","url":"modules/roosterjs_editor_dom.html#removeimportantstylerule","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2415,"kind":64,"name":"setGlobalCssStyles","url":"modules/roosterjs_editor_dom.html#setglobalcssstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2416,"kind":64,"name":"removeGlobalCssStyle","url":"modules/roosterjs_editor_dom.html#removeglobalcssstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2417,"kind":64,"name":"adjustInsertPosition","url":"modules/roosterjs_editor_dom.html#adjustinsertposition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2418,"kind":64,"name":"deleteSelectedContent","url":"modules/roosterjs_editor_dom.html#deleteselectedcontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2419,"kind":64,"name":"getTextContent","url":"modules/roosterjs_editor_dom.html#gettextcontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2420,"kind":64,"name":"validate","url":"modules/roosterjs_editor_dom.html#validate","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2421,"kind":64,"name":"createNumberDefinition","url":"modules/roosterjs_editor_dom.html#createnumberdefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2422,"kind":64,"name":"createBooleanDefinition","url":"modules/roosterjs_editor_dom.html#createbooleandefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2423,"kind":64,"name":"createStringDefinition","url":"modules/roosterjs_editor_dom.html#createstringdefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2424,"kind":64,"name":"createArrayDefinition","url":"modules/roosterjs_editor_dom.html#createarraydefinition","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2425,"kind":64,"name":"createObjectDefinition","url":"modules/roosterjs_editor_dom.html#createobjectdefinition","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2426,"kind":64,"name":"getMetadata","url":"modules/roosterjs_editor_dom.html#getmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2427,"kind":64,"name":"setMetadata","url":"modules/roosterjs_editor_dom.html#setmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2428,"kind":64,"name":"removeMetadata","url":"modules/roosterjs_editor_dom.html#removemetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2429,"kind":64,"name":"arrayPush","url":"modules/roosterjs_editor_dom.html#arraypush","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2430,"kind":64,"name":"getObjectKeys","url":"modules/roosterjs_editor_dom.html#getobjectkeys","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2431,"kind":64,"name":"toArray","url":"modules/roosterjs_editor_dom.html#toarray","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2432,"kind":64,"name":"getPasteSource","url":"modules/roosterjs_editor_dom.html#getpastesource","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2433,"kind":128,"name":"Editor","url":"classes/roosterjs_editor_core.editor.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2434,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_core.editor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-core.Editor"},{"id":2435,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_core.editor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2436,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_editor_core.editor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2437,"kind":2048,"name":"insertNode","url":"classes/roosterjs_editor_core.editor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2438,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_editor_core.editor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2439,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_editor_core.editor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2440,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_editor_core.editor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2441,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_core.editor.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2442,"kind":2048,"name":"queryElements","url":"classes/roosterjs_editor_core.editor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2443,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_editor_core.editor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2444,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_editor_core.editor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2445,"kind":2048,"name":"getContent","url":"classes/roosterjs_editor_core.editor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2446,"kind":2048,"name":"setContent","url":"classes/roosterjs_editor_core.editor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2447,"kind":2048,"name":"insertContent","url":"classes/roosterjs_editor_core.editor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2448,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_editor_core.editor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2449,"kind":2048,"name":"paste","url":"classes/roosterjs_editor_core.editor.html#paste","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2450,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_editor_core.editor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2451,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_editor_core.editor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2452,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_editor_core.editor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2453,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_editor_core.editor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2454,"kind":2048,"name":"focus","url":"classes/roosterjs_editor_core.editor.html#focus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2455,"kind":2048,"name":"select","url":"classes/roosterjs_editor_core.editor.html#select","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2456,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_editor_core.editor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2457,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_editor_core.editor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2458,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_editor_core.editor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2459,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_editor_core.editor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2460,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_editor_core.editor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2461,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_editor_core.editor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2462,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_editor_core.editor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2463,"kind":2048,"name":"undo","url":"classes/roosterjs_editor_core.editor.html#undo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2464,"kind":2048,"name":"redo","url":"classes/roosterjs_editor_core.editor.html#redo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2465,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_editor_core.editor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2466,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_editor_core.editor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2467,"kind":2048,"name":"getDocument","url":"classes/roosterjs_editor_core.editor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2468,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_editor_core.editor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2469,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_editor_core.editor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2470,"kind":2048,"name":"isInIME","url":"classes/roosterjs_editor_core.editor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2471,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_editor_core.editor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2472,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_editor_core.editor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2473,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_editor_core.editor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2474,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_editor_core.editor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2475,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_editor_core.editor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2476,"kind":2048,"name":"runAsync","url":"classes/roosterjs_editor_core.editor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2477,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_editor_core.editor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2478,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_editor_core.editor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2479,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_editor_core.editor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2480,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_editor_core.editor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2481,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_editor_core.editor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2482,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_editor_core.editor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2483,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_editor_core.editor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2484,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_editor_core.editor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2485,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_editor_core.editor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2486,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_editor_core.editor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2487,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_editor_core.editor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2488,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_editor_core.editor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2489,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_editor_core.editor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2490,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_editor_core.editor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2491,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_editor_core.editor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2492,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_editor_core.editor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2493,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_editor_core.editor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2494,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_editor_core.editor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2495,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_editor_core.editor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2496,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_editor_core.editor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2497,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_editor_core.editor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2498,"kind":2048,"name":"getCore","url":"classes/roosterjs_editor_core.editor.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-core.Editor"},{"id":2499,"kind":128,"name":"EditorBase","url":"classes/roosterjs_editor_core.editorbase.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-core"},{"id":2500,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_core.editorbase.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2501,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_core.editorbase.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2502,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_editor_core.editorbase.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2503,"kind":2048,"name":"insertNode","url":"classes/roosterjs_editor_core.editorbase.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2504,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_editor_core.editorbase.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2505,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_editor_core.editorbase.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2506,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_editor_core.editorbase.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2507,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_core.editorbase.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2508,"kind":2048,"name":"queryElements","url":"classes/roosterjs_editor_core.editorbase.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2509,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_editor_core.editorbase.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2510,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_editor_core.editorbase.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2511,"kind":2048,"name":"getContent","url":"classes/roosterjs_editor_core.editorbase.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2512,"kind":2048,"name":"setContent","url":"classes/roosterjs_editor_core.editorbase.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2513,"kind":2048,"name":"insertContent","url":"classes/roosterjs_editor_core.editorbase.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2514,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_editor_core.editorbase.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2515,"kind":2048,"name":"paste","url":"classes/roosterjs_editor_core.editorbase.html#paste","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2516,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_editor_core.editorbase.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2517,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_editor_core.editorbase.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2518,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_editor_core.editorbase.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2519,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_editor_core.editorbase.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2520,"kind":2048,"name":"focus","url":"classes/roosterjs_editor_core.editorbase.html#focus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2521,"kind":2048,"name":"select","url":"classes/roosterjs_editor_core.editorbase.html#select","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2522,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_editor_core.editorbase.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2523,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_editor_core.editorbase.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2524,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_editor_core.editorbase.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2525,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_editor_core.editorbase.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2526,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_editor_core.editorbase.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2527,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_editor_core.editorbase.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2528,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_editor_core.editorbase.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2529,"kind":2048,"name":"undo","url":"classes/roosterjs_editor_core.editorbase.html#undo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2530,"kind":2048,"name":"redo","url":"classes/roosterjs_editor_core.editorbase.html#redo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2531,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_editor_core.editorbase.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2532,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_editor_core.editorbase.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2533,"kind":2048,"name":"getDocument","url":"classes/roosterjs_editor_core.editorbase.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2534,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_editor_core.editorbase.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2535,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_editor_core.editorbase.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2536,"kind":2048,"name":"isInIME","url":"classes/roosterjs_editor_core.editorbase.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2537,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_editor_core.editorbase.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2538,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2539,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2540,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2541,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_editor_core.editorbase.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2542,"kind":2048,"name":"runAsync","url":"classes/roosterjs_editor_core.editorbase.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2543,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_editor_core.editorbase.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2544,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_editor_core.editorbase.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2545,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_editor_core.editorbase.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2546,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_editor_core.editorbase.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2547,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_editor_core.editorbase.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2548,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_editor_core.editorbase.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2549,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_editor_core.editorbase.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2550,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_editor_core.editorbase.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2551,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_editor_core.editorbase.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2552,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_editor_core.editorbase.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2553,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_editor_core.editorbase.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2554,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_editor_core.editorbase.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2555,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2556,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2557,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2558,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_editor_core.editorbase.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2559,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_editor_core.editorbase.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2560,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_editor_core.editorbase.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2561,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_editor_core.editorbase.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2562,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_editor_core.editorbase.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2563,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_editor_core.editorbase.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2564,"kind":2048,"name":"getCore","url":"classes/roosterjs_editor_core.editorbase.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-core.EditorBase"},{"id":2565,"kind":64,"name":"isFeatureEnabled","url":"modules/roosterjs_editor_core.html#isfeatureenabled","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2566,"kind":64,"name":"createEditorCore","url":"modules/roosterjs_editor_core.html#createeditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2567,"kind":64,"name":"changeFontSize","url":"modules/roosterjs_editor_api.html#changefontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2568,"kind":32,"name":"FONT_SIZES","url":"modules/roosterjs_editor_api.html#font_sizes","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2569,"kind":64,"name":"clearBlockFormat","url":"modules/roosterjs_editor_api.html#clearblockformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2570,"kind":64,"name":"clearFormat","url":"modules/roosterjs_editor_api.html#clearformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2571,"kind":64,"name":"createLink","url":"modules/roosterjs_editor_api.html#createlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2572,"kind":64,"name":"getFormatState","url":"modules/roosterjs_editor_api.html#getformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2573,"kind":64,"name":"getElementBasedFormatState","url":"modules/roosterjs_editor_api.html#getelementbasedformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2574,"kind":64,"name":"insertEntity","url":"modules/roosterjs_editor_api.html#insertentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2575,"kind":64,"name":"insertImage","url":"modules/roosterjs_editor_api.html#insertimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2576,"kind":64,"name":"insertTable","url":"modules/roosterjs_editor_api.html#inserttable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2577,"kind":64,"name":"editTable","url":"modules/roosterjs_editor_api.html#edittable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2578,"kind":64,"name":"formatTable","url":"modules/roosterjs_editor_api.html#formattable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2579,"kind":64,"name":"removeLink","url":"modules/roosterjs_editor_api.html#removelink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2580,"kind":64,"name":"replaceWithNode","url":"modules/roosterjs_editor_api.html#replacewithnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2581,"kind":64,"name":"rotateElement","url":"modules/roosterjs_editor_api.html#rotateelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2582,"kind":64,"name":"setAlignment","url":"modules/roosterjs_editor_api.html#setalignment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2583,"kind":64,"name":"setBackgroundColor","url":"modules/roosterjs_editor_api.html#setbackgroundcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2584,"kind":64,"name":"setTextColor","url":"modules/roosterjs_editor_api.html#settextcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2585,"kind":64,"name":"setDirection","url":"modules/roosterjs_editor_api.html#setdirection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2586,"kind":64,"name":"setFontName","url":"modules/roosterjs_editor_api.html#setfontname","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2587,"kind":64,"name":"setFontSize","url":"modules/roosterjs_editor_api.html#setfontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2588,"kind":64,"name":"setImageAltText","url":"modules/roosterjs_editor_api.html#setimagealttext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2589,"kind":64,"name":"setIndentation","url":"modules/roosterjs_editor_api.html#setindentation","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2590,"kind":64,"name":"changeCapitalization","url":"modules/roosterjs_editor_api.html#changecapitalization","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2591,"kind":64,"name":"toggleBold","url":"modules/roosterjs_editor_api.html#togglebold","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2592,"kind":64,"name":"toggleBullet","url":"modules/roosterjs_editor_api.html#togglebullet","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2593,"kind":64,"name":"toggleItalic","url":"modules/roosterjs_editor_api.html#toggleitalic","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2594,"kind":64,"name":"toggleNumbering","url":"modules/roosterjs_editor_api.html#togglenumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2595,"kind":64,"name":"setOrderedListNumbering","url":"modules/roosterjs_editor_api.html#setorderedlistnumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2596,"kind":64,"name":"toggleBlockQuote","url":"modules/roosterjs_editor_api.html#toggleblockquote","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2597,"kind":64,"name":"toggleCodeBlock","url":"modules/roosterjs_editor_api.html#togglecodeblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2598,"kind":64,"name":"toggleStrikethrough","url":"modules/roosterjs_editor_api.html#togglestrikethrough","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2599,"kind":64,"name":"toggleSubscript","url":"modules/roosterjs_editor_api.html#togglesubscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2600,"kind":64,"name":"toggleSuperscript","url":"modules/roosterjs_editor_api.html#togglesuperscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2601,"kind":64,"name":"toggleUnderline","url":"modules/roosterjs_editor_api.html#toggleunderline","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2602,"kind":64,"name":"setHeadingLevel","url":"modules/roosterjs_editor_api.html#setheadinglevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2603,"kind":64,"name":"toggleHeader","url":"modules/roosterjs_editor_api.html#toggleheader","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2604,"kind":64,"name":"applyCellShading","url":"modules/roosterjs_editor_api.html#applycellshading","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2605,"kind":64,"name":"toggleListType","url":"modules/roosterjs_editor_api.html#togglelisttype","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2606,"kind":64,"name":"blockFormat","url":"modules/roosterjs_editor_api.html#blockformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2607,"kind":64,"name":"commitListChains","url":"modules/roosterjs_editor_api.html#commitlistchains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2608,"kind":64,"name":"experimentCommitListChains","url":"modules/roosterjs_editor_api.html#experimentcommitlistchains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2609,"kind":128,"name":"ContentEdit","url":"classes/roosterjs_editor_plugins.contentedit.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2610,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.contentedit.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2611,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.contentedit.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2612,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.contentedit.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2613,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.contentedit.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2614,"kind":64,"name":"getAllFeatures","url":"modules/roosterjs_editor_plugins.html#getallfeatures","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2615,"kind":128,"name":"ContextMenu","url":"classes/roosterjs_editor_plugins.contextmenu.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2616,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.contextmenu.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2617,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.contextmenu.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2618,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.contextmenu.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2619,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.contextmenu.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2620,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.contextmenu.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2621,"kind":256,"name":"ContextMenuOptions","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2622,"kind":1024,"name":"render","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#render","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2623,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2624,"kind":1024,"name":"dismiss","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#dismiss","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2625,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2626,"kind":1024,"name":"allowDefaultMenu","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#allowdefaultmenu","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2627,"kind":128,"name":"CustomReplace","url":"classes/roosterjs_editor_plugins.customreplace.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2628,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.customreplace.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2629,"kind":2048,"name":"updateReplacements","url":"classes/roosterjs_editor_plugins.customreplace.html#updatereplacements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2630,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.customreplace.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2631,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.customreplace.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2632,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.customreplace.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2633,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.customreplace.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2634,"kind":128,"name":"CutPasteListChain","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2635,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2636,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2637,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2638,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2639,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2640,"kind":128,"name":"HyperLink","url":"classes/roosterjs_editor_plugins.hyperlink.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2641,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.hyperlink.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2642,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.hyperlink.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2643,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.hyperlink.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2644,"kind":2048,"name":"onMouse","url":"classes/roosterjs_editor_plugins.hyperlink.html#onmouse","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2645,"kind":2048,"name":"onBlur","url":"classes/roosterjs_editor_plugins.hyperlink.html#onblur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2646,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.hyperlink.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2647,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.hyperlink.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2648,"kind":128,"name":"ImageEdit","url":"classes/roosterjs_editor_plugins.imageedit.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2649,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.imageedit.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2650,"kind":1024,"name":"editor","url":"classes/roosterjs_editor_plugins.imageedit.html#editor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2651,"kind":1024,"name":"options","url":"classes/roosterjs_editor_plugins.imageedit.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2652,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.imageedit.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2653,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.imageedit.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2654,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.imageedit.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2655,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.imageedit.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2656,"kind":2048,"name":"isOperationAllowed","url":"classes/roosterjs_editor_plugins.imageedit.html#isoperationallowed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2657,"kind":2048,"name":"setEditingImage","url":"classes/roosterjs_editor_plugins.imageedit.html#seteditingimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2658,"kind":2048,"name":"flipImage","url":"classes/roosterjs_editor_plugins.imageedit.html#flipimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2659,"kind":2048,"name":"rotateImage","url":"classes/roosterjs_editor_plugins.imageedit.html#rotateimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2660,"kind":64,"name":"canRegenerateImage","url":"modules/roosterjs_editor_plugins.html#canregenerateimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2661,"kind":64,"name":"resizeByPercentage","url":"modules/roosterjs_editor_plugins.html#resizebypercentage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2662,"kind":64,"name":"isResizedTo","url":"modules/roosterjs_editor_plugins.html#isresizedto","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2663,"kind":64,"name":"resetImage","url":"modules/roosterjs_editor_plugins.html#resetimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2664,"kind":256,"name":"OnShowResizeHandle","url":"interfaces/roosterjs_editor_plugins.onshowresizehandle.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2665,"kind":4194304,"name":"DNDDirectionX","url":"modules/roosterjs_editor_plugins.html#dnddirectionx","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2666,"kind":4194304,"name":"DnDDirectionY","url":"modules/roosterjs_editor_plugins.html#dnddirectiony","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2667,"kind":128,"name":"ImageResize","url":"classes/roosterjs_editor_plugins.imageresize.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2668,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.imageresize.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2669,"kind":2048,"name":"showResizeHandle","url":"classes/roosterjs_editor_plugins.imageresize.html#showresizehandle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2670,"kind":2048,"name":"hideResizeHandle","url":"classes/roosterjs_editor_plugins.imageresize.html#hideresizehandle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2671,"kind":1024,"name":"editor","url":"classes/roosterjs_editor_plugins.imageresize.html#editor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2672,"kind":1024,"name":"options","url":"classes/roosterjs_editor_plugins.imageresize.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2673,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.imageresize.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2674,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.imageresize.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2675,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.imageresize.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2676,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.imageresize.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2677,"kind":2048,"name":"isOperationAllowed","url":"classes/roosterjs_editor_plugins.imageresize.html#isoperationallowed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2678,"kind":2048,"name":"setEditingImage","url":"classes/roosterjs_editor_plugins.imageresize.html#seteditingimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2679,"kind":2048,"name":"flipImage","url":"classes/roosterjs_editor_plugins.imageresize.html#flipimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2680,"kind":2048,"name":"rotateImage","url":"classes/roosterjs_editor_plugins.imageresize.html#rotateimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2681,"kind":128,"name":"Paste","url":"classes/roosterjs_editor_plugins.paste.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2682,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.paste.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2683,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.paste.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2684,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.paste.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2685,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.paste.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2686,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.paste.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2687,"kind":128,"name":"PickerPlugin","url":"classes/roosterjs_editor_plugins.pickerplugin.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2688,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.pickerplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2689,"kind":1024,"name":"dataProvider","url":"classes/roosterjs_editor_plugins.pickerplugin.html#dataprovider","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2690,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.pickerplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2691,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.pickerplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2692,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.pickerplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2693,"kind":2048,"name":"willHandleEventExclusively","url":"classes/roosterjs_editor_plugins.pickerplugin.html#willhandleeventexclusively","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2694,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.pickerplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2695,"kind":128,"name":"TableResize","url":"classes/roosterjs_editor_plugins.tableresize.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2696,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.tableresize.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2697,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.tableresize.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2698,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.tableresize.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2699,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.tableresize.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2700,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.tableresize.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2701,"kind":128,"name":"Watermark","url":"classes/roosterjs_editor_plugins.watermark.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2702,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.watermark.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2703,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.watermark.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2704,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.watermark.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2705,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.watermark.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2706,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.watermark.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2707,"kind":128,"name":"TableCellSelection","url":"classes/roosterjs_editor_plugins.tablecellselection.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2708,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.tablecellselection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2709,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.tablecellselection.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2710,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.tablecellselection.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2711,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.tablecellselection.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2712,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.tablecellselection.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2713,"kind":128,"name":"AutoFormat","url":"classes/roosterjs_editor_plugins.autoformat.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2714,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.autoformat.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2715,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.autoformat.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2716,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.autoformat.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2717,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.autoformat.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2718,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.autoformat.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2719,"kind":64,"name":"getDarkColor","url":"modules/roosterjs_color_utils.html#getdarkcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-color-utils"},{"id":2720,"kind":4194304,"name":"LocalizedStrings","url":"modules/roosterjs_react.html#localizedstrings","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2721,"kind":4194304,"name":"OkButtonStringKey","url":"modules/roosterjs_react.html#okbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2722,"kind":4194304,"name":"CancelButtonStringKey","url":"modules/roosterjs_react.html#cancelbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2723,"kind":4194304,"name":"MenuItemSplitterKey0","url":"modules/roosterjs_react.html#menuitemsplitterkey0","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2724,"kind":256,"name":"UIUtilities","url":"interfaces/roosterjs_react.uiutilities.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2725,"kind":2048,"name":"renderComponent","url":"interfaces/roosterjs_react.uiutilities.html#rendercomponent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.UIUtilities"},{"id":2726,"kind":2048,"name":"isRightToLeft","url":"interfaces/roosterjs_react.uiutilities.html#isrighttoleft","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.UIUtilities"},{"id":2727,"kind":256,"name":"ReactEditorPlugin","url":"interfaces/roosterjs_react.reacteditorplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2728,"kind":2048,"name":"setUIUtilities","url":"interfaces/roosterjs_react.reacteditorplugin.html#setuiutilities","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2729,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.reacteditorplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2730,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2731,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.reacteditorplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2732,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2733,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.reacteditorplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2734,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2735,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.reacteditorplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2736,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2737,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.reacteditorplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2738,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2739,"kind":64,"name":"createUIUtilities","url":"modules/roosterjs_react.html#createuiutilities","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2740,"kind":64,"name":"getLocalizedString","url":"modules/roosterjs_react.html#getlocalizedstring","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2741,"kind":256,"name":"RoosterProps","url":"interfaces/roosterjs_react.roosterprops.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2742,"kind":1024,"name":"editorCreator","url":"interfaces/roosterjs_react.roosterprops.html#editorcreator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2743,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2744,"kind":1024,"name":"focusOnInit","url":"interfaces/roosterjs_react.roosterprops.html#focusoninit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2745,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_react.roosterprops.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2746,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_react.roosterprops.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2747,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_react.roosterprops.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2748,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_react.roosterprops.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2749,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_react.roosterprops.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2750,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_react.roosterprops.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2751,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_react.roosterprops.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2752,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_react.roosterprops.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2753,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_react.roosterprops.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2754,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2755,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_react.roosterprops.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2756,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2757,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_react.roosterprops.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2758,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_react.roosterprops.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2759,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_react.roosterprops.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2760,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_react.roosterprops.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2761,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_react.roosterprops.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2762,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_react.roosterprops.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2763,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_react.roosterprops.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2764,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_react.roosterprops.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2765,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_react.roosterprops.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2766,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2767,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_react.roosterprops.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2768,"kind":4,"name":"UpdateMode","url":"enums/roosterjs_react.updatemode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2769,"kind":16,"name":"Force","url":"enums/roosterjs_react.updatemode.html#force","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2770,"kind":16,"name":"OnInitialize","url":"enums/roosterjs_react.updatemode.html#oninitialize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2771,"kind":16,"name":"OnDispose","url":"enums/roosterjs_react.updatemode.html#ondispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2772,"kind":16,"name":"OnUserInput","url":"enums/roosterjs_react.updatemode.html#onuserinput","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2773,"kind":16,"name":"OnContentChangedEvent","url":"enums/roosterjs_react.updatemode.html#oncontentchangedevent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2774,"kind":16,"name":"OnBlur","url":"enums/roosterjs_react.updatemode.html#onblur","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2775,"kind":256,"name":"UpdateContentPlugin","url":"interfaces/roosterjs_react.updatecontentplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2776,"kind":1024,"name":"forceUpdate","url":"interfaces/roosterjs_react.updatecontentplugin.html#forceupdate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2777,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2778,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.updatecontentplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2779,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2780,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.updatecontentplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2781,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2782,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.updatecontentplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2783,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2784,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.updatecontentplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2785,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2786,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.updatecontentplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2787,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2788,"kind":64,"name":"Rooster","url":"modules/roosterjs_react.html#rooster","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2789,"kind":64,"name":"createUpdateContentPlugin","url":"modules/roosterjs_react.html#createupdatecontentplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2790,"kind":256,"name":"RibbonPlugin","url":"interfaces/roosterjs_react.ribbonplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2791,"kind":1024,"name":"registerFormatChangedCallback","url":"interfaces/roosterjs_react.ribbonplugin.html#registerformatchangedcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2792,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2793,"kind":1024,"name":"onButtonClick","url":"interfaces/roosterjs_react.ribbonplugin.html#onbuttonclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2794,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-react.RibbonPlugin"},{"id":2795,"kind":1024,"name":"startLivePreview","url":"interfaces/roosterjs_react.ribbonplugin.html#startlivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2796,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-react.RibbonPlugin"},{"id":2797,"kind":1024,"name":"stopLivePreview","url":"interfaces/roosterjs_react.ribbonplugin.html#stoplivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2798,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2799,"kind":2048,"name":"setUIUtilities","url":"interfaces/roosterjs_react.ribbonplugin.html#setuiutilities","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2800,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.ribbonplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2801,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2802,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.ribbonplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2803,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2804,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.ribbonplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2805,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2806,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.ribbonplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2807,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2808,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.ribbonplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2809,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2810,"kind":256,"name":"RibbonButton","url":"interfaces/roosterjs_react.ribbonbutton.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2811,"kind":1024,"name":"key","url":"interfaces/roosterjs_react.ribbonbutton.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2812,"kind":1024,"name":"iconName","url":"interfaces/roosterjs_react.ribbonbutton.html#iconname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2813,"kind":1024,"name":"flipWhenRtl","url":"interfaces/roosterjs_react.ribbonbutton.html#flipwhenrtl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2814,"kind":1024,"name":"unlocalizedText","url":"interfaces/roosterjs_react.ribbonbutton.html#unlocalizedtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2815,"kind":1024,"name":"onClick","url":"interfaces/roosterjs_react.ribbonbutton.html#onclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2816,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2817,"kind":1024,"name":"isChecked","url":"interfaces/roosterjs_react.ribbonbutton.html#ischecked","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2818,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2819,"kind":1024,"name":"isDisabled","url":"interfaces/roosterjs_react.ribbonbutton.html#isdisabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2820,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2821,"kind":1024,"name":"dropDownMenu","url":"interfaces/roosterjs_react.ribbonbutton.html#dropdownmenu","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2822,"kind":1024,"name":"commandBarProperties","url":"interfaces/roosterjs_react.ribbonbutton.html#commandbarproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2823,"kind":256,"name":"RibbonButtonDropDown","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2824,"kind":1024,"name":"items","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#items","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2825,"kind":1024,"name":"itemClassName","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#itemclassname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2826,"kind":1024,"name":"allowLivePreview","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#allowlivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2827,"kind":1024,"name":"itemRender","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#itemrender","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2828,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2829,"kind":1024,"name":"getSelectedItemKey","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#getselecteditemkey","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2830,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2831,"kind":1024,"name":"commandBarSubMenuProperties","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#commandbarsubmenuproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2832,"kind":256,"name":"RibbonProps","url":"interfaces/roosterjs_react.ribbonprops.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2833,"kind":1024,"name":"plugin","url":"interfaces/roosterjs_react.ribbonprops.html#plugin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2834,"kind":1024,"name":"buttons","url":"interfaces/roosterjs_react.ribbonprops.html#buttons","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2835,"kind":1024,"name":"strings","url":"interfaces/roosterjs_react.ribbonprops.html#strings","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2836,"kind":4,"name":"KnownRibbonButtonKey","url":"enums/roosterjs_react.knownribbonbuttonkey.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2837,"kind":16,"name":"Bold","url":"enums/roosterjs_react.knownribbonbuttonkey.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2838,"kind":16,"name":"Italic","url":"enums/roosterjs_react.knownribbonbuttonkey.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2839,"kind":16,"name":"Underline","url":"enums/roosterjs_react.knownribbonbuttonkey.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2840,"kind":16,"name":"Font","url":"enums/roosterjs_react.knownribbonbuttonkey.html#font","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2841,"kind":16,"name":"FontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2842,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2843,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2844,"kind":16,"name":"TextColor","url":"enums/roosterjs_react.knownribbonbuttonkey.html#textcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2845,"kind":16,"name":"BackgroundColor","url":"enums/roosterjs_react.knownribbonbuttonkey.html#backgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2846,"kind":16,"name":"BulletedList","url":"enums/roosterjs_react.knownribbonbuttonkey.html#bulletedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2847,"kind":16,"name":"NumberedList","url":"enums/roosterjs_react.knownribbonbuttonkey.html#numberedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2848,"kind":16,"name":"DecreaseIndent","url":"enums/roosterjs_react.knownribbonbuttonkey.html#decreaseindent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2849,"kind":16,"name":"IncreaseIndent","url":"enums/roosterjs_react.knownribbonbuttonkey.html#increaseindent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2850,"kind":16,"name":"Quote","url":"enums/roosterjs_react.knownribbonbuttonkey.html#quote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2851,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_react.knownribbonbuttonkey.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2852,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_react.knownribbonbuttonkey.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2853,"kind":16,"name":"AlignRight","url":"enums/roosterjs_react.knownribbonbuttonkey.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2854,"kind":16,"name":"InsertLink","url":"enums/roosterjs_react.knownribbonbuttonkey.html#insertlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2855,"kind":16,"name":"RemoveLink","url":"enums/roosterjs_react.knownribbonbuttonkey.html#removelink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2856,"kind":16,"name":"InsertTable","url":"enums/roosterjs_react.knownribbonbuttonkey.html#inserttable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2857,"kind":16,"name":"InsertImage","url":"enums/roosterjs_react.knownribbonbuttonkey.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2858,"kind":16,"name":"Superscript","url":"enums/roosterjs_react.knownribbonbuttonkey.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2859,"kind":16,"name":"Subscript","url":"enums/roosterjs_react.knownribbonbuttonkey.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2860,"kind":16,"name":"Strikethrough","url":"enums/roosterjs_react.knownribbonbuttonkey.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2861,"kind":16,"name":"Heading","url":"enums/roosterjs_react.knownribbonbuttonkey.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2862,"kind":16,"name":"Code","url":"enums/roosterjs_react.knownribbonbuttonkey.html#code","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2863,"kind":16,"name":"Ltr","url":"enums/roosterjs_react.knownribbonbuttonkey.html#ltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2864,"kind":16,"name":"Rtl","url":"enums/roosterjs_react.knownribbonbuttonkey.html#rtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2865,"kind":16,"name":"Undo","url":"enums/roosterjs_react.knownribbonbuttonkey.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2866,"kind":16,"name":"Redo","url":"enums/roosterjs_react.knownribbonbuttonkey.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2867,"kind":16,"name":"ClearFormat","url":"enums/roosterjs_react.knownribbonbuttonkey.html#clearformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2868,"kind":16,"name":"Header","url":"enums/roosterjs_react.knownribbonbuttonkey.html#header","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2869,"kind":4194304,"name":"BoldButtonStringKey","url":"modules/roosterjs_react.html#boldbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2870,"kind":4194304,"name":"ItalicButtonStringKey","url":"modules/roosterjs_react.html#italicbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2871,"kind":4194304,"name":"UnderlineButtonStringKey","url":"modules/roosterjs_react.html#underlinebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2872,"kind":4194304,"name":"FontButtonStringKey","url":"modules/roosterjs_react.html#fontbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2873,"kind":4194304,"name":"FontSizeButtonStringKey","url":"modules/roosterjs_react.html#fontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2874,"kind":4194304,"name":"IncreaseFontSizeButtonStringKey","url":"modules/roosterjs_react.html#increasefontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2875,"kind":4194304,"name":"DecreaseFontSizeButtonStringKey","url":"modules/roosterjs_react.html#decreasefontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2876,"kind":4194304,"name":"TextColorButtonStringKey","url":"modules/roosterjs_react.html#textcolorbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2877,"kind":4194304,"name":"BackgroundColorButtonStringKey","url":"modules/roosterjs_react.html#backgroundcolorbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2878,"kind":4194304,"name":"BulletedListButtonStringKey","url":"modules/roosterjs_react.html#bulletedlistbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2879,"kind":4194304,"name":"NumberedListButtonStringKey","url":"modules/roosterjs_react.html#numberedlistbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2880,"kind":4194304,"name":"MoreCommandsButtonStringKey","url":"modules/roosterjs_react.html#morecommandsbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2881,"kind":4194304,"name":"DecreaseIndentButtonStringKey","url":"modules/roosterjs_react.html#decreaseindentbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2882,"kind":4194304,"name":"IncreaseIndentButtonStringKey","url":"modules/roosterjs_react.html#increaseindentbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2883,"kind":4194304,"name":"QuoteButtonStringKey","url":"modules/roosterjs_react.html#quotebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2884,"kind":4194304,"name":"AlignLeftButtonStringKey","url":"modules/roosterjs_react.html#alignleftbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2885,"kind":4194304,"name":"AlignCenterButtonStringKey","url":"modules/roosterjs_react.html#aligncenterbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2886,"kind":4194304,"name":"AlignRightButtonStringKey","url":"modules/roosterjs_react.html#alignrightbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2887,"kind":4194304,"name":"InsertLinkButtonStringKey","url":"modules/roosterjs_react.html#insertlinkbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2888,"kind":4194304,"name":"RemoveLinkButtonStringKey","url":"modules/roosterjs_react.html#removelinkbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2889,"kind":4194304,"name":"InsertTableButtonStringKey","url":"modules/roosterjs_react.html#inserttablebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2890,"kind":4194304,"name":"InsertImageButtonStringKey","url":"modules/roosterjs_react.html#insertimagebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2891,"kind":4194304,"name":"SuperscriptButtonStringKey","url":"modules/roosterjs_react.html#superscriptbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2892,"kind":4194304,"name":"SubscriptButtonStringKey","url":"modules/roosterjs_react.html#subscriptbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2893,"kind":4194304,"name":"StrikethroughButtonStringKey","url":"modules/roosterjs_react.html#strikethroughbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2894,"kind":4194304,"name":"HeadingButtonStringKey","url":"modules/roosterjs_react.html#headingbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2895,"kind":4194304,"name":"HeaderButtonStringKey","url":"modules/roosterjs_react.html#headerbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2896,"kind":4194304,"name":"CodeButtonStringKey","url":"modules/roosterjs_react.html#codebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2897,"kind":4194304,"name":"LtrButtonStringKey","url":"modules/roosterjs_react.html#ltrbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2898,"kind":4194304,"name":"RtlButtonStringKey","url":"modules/roosterjs_react.html#rtlbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2899,"kind":4194304,"name":"UndoButtonStringKey","url":"modules/roosterjs_react.html#undobuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2900,"kind":4194304,"name":"RedoButtonStringKey","url":"modules/roosterjs_react.html#redobuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2901,"kind":4194304,"name":"ClearFormatButtonStringKey","url":"modules/roosterjs_react.html#clearformatbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2902,"kind":4194304,"name":"AllButtonStringKeys","url":"modules/roosterjs_react.html#allbuttonstringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2903,"kind":4194304,"name":"CellShadeButtonStringKey","url":"modules/roosterjs_react.html#cellshadebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2904,"kind":64,"name":"Ribbon","url":"modules/roosterjs_react.html#ribbon","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2905,"kind":64,"name":"getButtons","url":"modules/roosterjs_react.html#getbuttons","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2906,"kind":32,"name":"AllButtonKeys","url":"modules/roosterjs_react.html#allbuttonkeys","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2907,"kind":64,"name":"createRibbonPlugin","url":"modules/roosterjs_react.html#createribbonplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2908,"kind":64,"name":"createContextMenuPlugin","url":"modules/roosterjs_react.html#createcontextmenuplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2909,"kind":64,"name":"createContextMenuProvider","url":"modules/roosterjs_react.html#createcontextmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2910,"kind":64,"name":"createListEditMenuProvider","url":"modules/roosterjs_react.html#createlisteditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2911,"kind":64,"name":"createImageEditMenuProvider","url":"modules/roosterjs_react.html#createimageeditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2912,"kind":64,"name":"createTableEditMenuProvider","url":"modules/roosterjs_react.html#createtableeditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2913,"kind":256,"name":"ContextMenuItem","url":"interfaces/roosterjs_react.contextmenuitem.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2914,"kind":1024,"name":"key","url":"interfaces/roosterjs_react.contextmenuitem.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2915,"kind":1024,"name":"unlocalizedText","url":"interfaces/roosterjs_react.contextmenuitem.html#unlocalizedtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2916,"kind":1024,"name":"onClick","url":"interfaces/roosterjs_react.contextmenuitem.html#onclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2917,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2918,"kind":1024,"name":"shouldShow","url":"interfaces/roosterjs_react.contextmenuitem.html#shouldshow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2919,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2920,"kind":1024,"name":"subItems","url":"interfaces/roosterjs_react.contextmenuitem.html#subitems","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2921,"kind":1024,"name":"itemRender","url":"interfaces/roosterjs_react.contextmenuitem.html#itemrender","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2922,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2923,"kind":1024,"name":"itemClassName","url":"interfaces/roosterjs_react.contextmenuitem.html#itemclassname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2924,"kind":1024,"name":"commandBarSubMenuProperties","url":"interfaces/roosterjs_react.contextmenuitem.html#commandbarsubmenuproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2925,"kind":4194304,"name":"ListNumberMenuItemStringKey","url":"modules/roosterjs_react.html#listnumbermenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2926,"kind":4194304,"name":"ImageEditMenuItemStringKey","url":"modules/roosterjs_react.html#imageeditmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2927,"kind":4194304,"name":"TableEditInsertMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditinsertmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2928,"kind":4194304,"name":"TableEditDeleteMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditdeletemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2929,"kind":4194304,"name":"TableEditMergeMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditmergemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2930,"kind":4194304,"name":"TableEditSplitMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditsplitmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2931,"kind":4194304,"name":"TableEditAlignMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditalignmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2932,"kind":4194304,"name":"TableEditShadeMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditshademenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2933,"kind":4194304,"name":"TableEditMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2934,"kind":4194304,"name":"TableEditAlignTableMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditaligntablemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2935,"kind":4194304,"name":"PasteOptionButtonKeys","url":"modules/roosterjs_react.html#pasteoptionbuttonkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2936,"kind":4194304,"name":"PasteOptionStringKeys","url":"modules/roosterjs_react.html#pasteoptionstringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2937,"kind":64,"name":"createPasteOptionPlugin","url":"modules/roosterjs_react.html#createpasteoptionplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2938,"kind":4194304,"name":"BackgroundColorKeys","url":"modules/roosterjs_react.html#backgroundcolorkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2939,"kind":4194304,"name":"TextColorKeys","url":"modules/roosterjs_react.html#textcolorkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2940,"kind":64,"name":"getBackgroundColorValue","url":"modules/roosterjs_react.html#getbackgroundcolorvalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2941,"kind":64,"name":"getTextColorValue","url":"modules/roosterjs_react.html#gettextcolorvalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2942,"kind":64,"name":"createEmojiPlugin","url":"modules/roosterjs_react.html#createemojiplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2943,"kind":4194304,"name":"EmojiStringKeys","url":"modules/roosterjs_react.html#emojistringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2944,"kind":64,"name":"showInputDialog","url":"modules/roosterjs_react.html#showinputdialog","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2945,"kind":256,"name":"DialogItem","url":"interfaces/roosterjs_react.dialogitem.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2946,"kind":1024,"name":"labelKey","url":"interfaces/roosterjs_react.dialogitem.html#labelkey","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2947,"kind":1024,"name":"unlocalizedLabel","url":"interfaces/roosterjs_react.dialogitem.html#unlocalizedlabel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2948,"kind":1024,"name":"initValue","url":"interfaces/roosterjs_react.dialogitem.html#initvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2949,"kind":1024,"name":"autoFocus","url":"interfaces/roosterjs_react.dialogitem.html#autofocus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2950,"kind":64,"name":"createEditor","url":"modules/roosterjs.html#createeditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs"},{"id":2951,"kind":4194304,"name":"ContentModelSegmentFormat","url":"modules/roosterjs_content_model_types.html#contentmodelsegmentformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2952,"kind":256,"name":"ContentModelWithFormat","url":"interfaces/roosterjs_content_model_types.contentmodelwithformat.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2953,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelwithformat.html#format","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelWithFormat"},{"id":2954,"kind":4194304,"name":"ContentModelTableFormat","url":"modules/roosterjs_content_model_types.html#contentmodeltableformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2955,"kind":256,"name":"ContentModelWithDataset","url":"interfaces/roosterjs_content_model_types.contentmodelwithdataset.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2956,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelwithdataset.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelWithDataset"},{"id":2957,"kind":4194304,"name":"ContentModelBlockFormat","url":"modules/roosterjs_content_model_types.html#contentmodelblockformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2958,"kind":4194304,"name":"ContentModelTableCellFormat","url":"modules/roosterjs_content_model_types.html#contentmodeltablecellformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2959,"kind":4194304,"name":"ContentModelListItemFormat","url":"modules/roosterjs_content_model_types.html#contentmodellistitemformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2960,"kind":4194304,"name":"ContentModelListItemLevelFormat","url":"modules/roosterjs_content_model_types.html#contentmodellistitemlevelformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2961,"kind":4194304,"name":"ContentModelHyperLinkFormat","url":"modules/roosterjs_content_model_types.html#contentmodelhyperlinkformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2962,"kind":4194304,"name":"ContentModelCodeFormat","url":"modules/roosterjs_content_model_types.html#contentmodelcodeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2963,"kind":4194304,"name":"ContentModelFormatContainerFormat","url":"modules/roosterjs_content_model_types.html#contentmodelformatcontainerformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2964,"kind":4194304,"name":"ContentModelDividerFormat","url":"modules/roosterjs_content_model_types.html#contentmodeldividerformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2965,"kind":4194304,"name":"ContentModelFormatBase","url":"modules/roosterjs_content_model_types.html#contentmodelformatbase","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2966,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelformatbase.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelFormatBase"},{"id":2967,"kind":256,"name":"ContentModelFormatMap","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2968,"kind":1024,"name":"block","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#block","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2969,"kind":1024,"name":"styleBasedSegment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#stylebasedsegment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2970,"kind":1024,"name":"elementBasedSegment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#elementbasedsegment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2971,"kind":1024,"name":"segment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2972,"kind":1024,"name":"segmentOnBlock","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentonblock","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2973,"kind":1024,"name":"segmentOnTableCell","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentontablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2974,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2975,"kind":1024,"name":"tableCell","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2976,"kind":1024,"name":"tableRow","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablerow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2977,"kind":1024,"name":"tableBorder","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tableborder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2978,"kind":1024,"name":"tableCellBorder","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablecellborder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2979,"kind":1024,"name":"listItemElement","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listitemelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2980,"kind":1024,"name":"listItem","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listitem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2981,"kind":1024,"name":"listLevel","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listlevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2982,"kind":1024,"name":"image","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2983,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2984,"kind":1024,"name":"segmentUnderLink","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentunderlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2985,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2986,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2987,"kind":1024,"name":"divider","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#divider","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2988,"kind":1024,"name":"container","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#container","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2989,"kind":4194304,"name":"ContentModelImageFormat","url":"modules/roosterjs_content_model_types.html#contentmodelimageformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2990,"kind":256,"name":"FormatHandlerTypeMap","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2991,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2992,"kind":1024,"name":"bold","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2993,"kind":1024,"name":"border","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#border","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2994,"kind":1024,"name":"borderBox","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#borderbox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2995,"kind":1024,"name":"boxShadow","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#boxshadow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2996,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2997,"kind":1024,"name":"direction","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2998,"kind":1024,"name":"display","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#display","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2999,"kind":1024,"name":"float","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#float","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3000,"kind":1024,"name":"fontFamily","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#fontfamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3001,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3002,"kind":1024,"name":"htmlAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#htmlalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3003,"kind":1024,"name":"id","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3004,"kind":1024,"name":"italic","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3005,"kind":1024,"name":"letterSpacing","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#letterspacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3006,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3007,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3008,"kind":1024,"name":"listItemThread","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#listitemthread","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3009,"kind":1024,"name":"listLevelThread","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#listlevelthread","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3010,"kind":1024,"name":"listStylePosition","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#liststyleposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3011,"kind":1024,"name":"margin","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#margin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3012,"kind":1024,"name":"padding","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#padding","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3013,"kind":1024,"name":"size","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3014,"kind":1024,"name":"strike","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#strike","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3015,"kind":1024,"name":"superOrSubScript","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#superorsubscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3016,"kind":1024,"name":"tableLayout","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#tablelayout","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3017,"kind":1024,"name":"tableSpacing","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#tablespacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3018,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3019,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3020,"kind":1024,"name":"textColorOnTableCell","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textcolorontablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3021,"kind":1024,"name":"underline","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#underline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3022,"kind":1024,"name":"verticalAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#verticalalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3023,"kind":1024,"name":"whiteSpace","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#whitespace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3024,"kind":1024,"name":"wordBreak","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#wordbreak","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3025,"kind":4194304,"name":"FormatKey","url":"modules/roosterjs_content_model_types.html#formatkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3026,"kind":4194304,"name":"BackgroundColorFormat","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3027,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BackgroundColorFormat"},{"id":3028,"kind":1024,"name":"backgroundColor","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat.__type.backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BackgroundColorFormat.__type"},{"id":3029,"kind":4194304,"name":"BoldFormat","url":"modules/roosterjs_content_model_types.html#boldformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3030,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#boldformat.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BoldFormat"},{"id":3031,"kind":1024,"name":"fontWeight","url":"modules/roosterjs_content_model_types.html#boldformat.__type-1.fontweight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BoldFormat.__type"},{"id":3032,"kind":4194304,"name":"FontFamilyFormat","url":"modules/roosterjs_content_model_types.html#fontfamilyformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3033,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#fontfamilyformat.__type-13","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FontFamilyFormat"},{"id":3034,"kind":1024,"name":"fontFamily","url":"modules/roosterjs_content_model_types.html#fontfamilyformat.__type-13.fontfamily","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FontFamilyFormat.__type"},{"id":3035,"kind":4194304,"name":"FontSizeFormat","url":"modules/roosterjs_content_model_types.html#fontsizeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3036,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#fontsizeformat.__type-14","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FontSizeFormat"},{"id":3037,"kind":1024,"name":"fontSize","url":"modules/roosterjs_content_model_types.html#fontsizeformat.__type-14.fontsize","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FontSizeFormat.__type"},{"id":3038,"kind":4194304,"name":"ItalicFormat","url":"modules/roosterjs_content_model_types.html#italicformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3039,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#italicformat.__type-22","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ItalicFormat"},{"id":3040,"kind":1024,"name":"italic","url":"modules/roosterjs_content_model_types.html#italicformat.__type-22.italic","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ItalicFormat.__type"},{"id":3041,"kind":4194304,"name":"LetterSpacingFormat","url":"modules/roosterjs_content_model_types.html#letterspacingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3042,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#letterspacingformat.__type-23","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LetterSpacingFormat"},{"id":3043,"kind":1024,"name":"letterSpacing","url":"modules/roosterjs_content_model_types.html#letterspacingformat.__type-23.letterspacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LetterSpacingFormat.__type"},{"id":3044,"kind":4194304,"name":"LineHeightFormat","url":"modules/roosterjs_content_model_types.html#lineheightformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3045,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#lineheightformat.__type-24","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LineHeightFormat"},{"id":3046,"kind":1024,"name":"lineHeight","url":"modules/roosterjs_content_model_types.html#lineheightformat.__type-24.lineheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LineHeightFormat.__type"},{"id":3047,"kind":4194304,"name":"StrikeFormat","url":"modules/roosterjs_content_model_types.html#strikeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3048,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#strikeformat.__type-34","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.StrikeFormat"},{"id":3049,"kind":1024,"name":"strikethrough","url":"modules/roosterjs_content_model_types.html#strikeformat.__type-34.strikethrough","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.StrikeFormat.__type"},{"id":3050,"kind":4194304,"name":"SuperOrSubScriptFormat","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3051,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat.__type-35","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SuperOrSubScriptFormat"},{"id":3052,"kind":1024,"name":"superOrSubScriptSequence","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat.__type-35.superorsubscriptsequence","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SuperOrSubScriptFormat.__type"},{"id":3053,"kind":4194304,"name":"TextColorFormat","url":"modules/roosterjs_content_model_types.html#textcolorformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3054,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#textcolorformat.__type-39","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TextColorFormat"},{"id":3055,"kind":1024,"name":"textColor","url":"modules/roosterjs_content_model_types.html#textcolorformat.__type-39.textcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TextColorFormat.__type"},{"id":3056,"kind":4194304,"name":"UnderlineFormat","url":"modules/roosterjs_content_model_types.html#underlineformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3057,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#underlineformat.__type-40","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.UnderlineFormat"},{"id":3058,"kind":1024,"name":"underline","url":"modules/roosterjs_content_model_types.html#underlineformat.__type-40.underline","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.UnderlineFormat.__type"},{"id":3059,"kind":4194304,"name":"BorderBoxFormat","url":"modules/roosterjs_content_model_types.html#borderboxformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3060,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#borderboxformat.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BorderBoxFormat"},{"id":3061,"kind":1024,"name":"useBorderBox","url":"modules/roosterjs_content_model_types.html#borderboxformat.__type-2.useborderbox","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderBoxFormat.__type"},{"id":3062,"kind":4194304,"name":"VerticalAlignFormat","url":"modules/roosterjs_content_model_types.html#verticalalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3063,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#verticalalignformat.__type-41","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.VerticalAlignFormat"},{"id":3064,"kind":1024,"name":"verticalAlign","url":"modules/roosterjs_content_model_types.html#verticalalignformat.__type-41.verticalalign-1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.VerticalAlignFormat.__type"},{"id":3065,"kind":4194304,"name":"WordBreakFormat","url":"modules/roosterjs_content_model_types.html#wordbreakformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3066,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#wordbreakformat.__type-43","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.WordBreakFormat"},{"id":3067,"kind":1024,"name":"wordBreak","url":"modules/roosterjs_content_model_types.html#wordbreakformat.__type-43.wordbreak","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.WordBreakFormat.__type"},{"id":3068,"kind":4194304,"name":"BorderFormat","url":"modules/roosterjs_content_model_types.html#borderformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3069,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BorderFormat"},{"id":3070,"kind":1024,"name":"borderTop","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.bordertop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3071,"kind":1024,"name":"borderRight","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3072,"kind":1024,"name":"borderBottom","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3073,"kind":1024,"name":"borderLeft","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3074,"kind":1024,"name":"borderRadius","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderradius","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3075,"kind":4194304,"name":"DirectionFormat","url":"modules/roosterjs_content_model_types.html#directionformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3076,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#directionformat.__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.DirectionFormat"},{"id":3077,"kind":1024,"name":"direction","url":"modules/roosterjs_content_model_types.html#directionformat.__type-9.direction","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.DirectionFormat.__type"},{"id":3078,"kind":4194304,"name":"HtmlAlignFormat","url":"modules/roosterjs_content_model_types.html#htmlalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3079,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#htmlalignformat.__type-17","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.HtmlAlignFormat"},{"id":3080,"kind":1024,"name":"htmlAlign","url":"modules/roosterjs_content_model_types.html#htmlalignformat.__type-17.htmlalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.HtmlAlignFormat.__type"},{"id":3081,"kind":4194304,"name":"MarginFormat","url":"modules/roosterjs_content_model_types.html#marginformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3082,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.MarginFormat"},{"id":3083,"kind":1024,"name":"marginTop","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.margintop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3084,"kind":1024,"name":"marginRight","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3085,"kind":1024,"name":"marginBottom","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3086,"kind":1024,"name":"marginLeft","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3087,"kind":4194304,"name":"PaddingFormat","url":"modules/roosterjs_content_model_types.html#paddingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3088,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.PaddingFormat"},{"id":3089,"kind":1024,"name":"paddingTop","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingtop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3090,"kind":1024,"name":"paddingRight","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3091,"kind":1024,"name":"paddingBottom","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3092,"kind":1024,"name":"paddingLeft","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3093,"kind":4194304,"name":"TextAlignFormat","url":"modules/roosterjs_content_model_types.html#textalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3094,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#textalignformat.__type-38","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TextAlignFormat"},{"id":3095,"kind":1024,"name":"textAlign","url":"modules/roosterjs_content_model_types.html#textalignformat.__type-38.textalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TextAlignFormat.__type"},{"id":3096,"kind":4194304,"name":"WhiteSpaceFormat","url":"modules/roosterjs_content_model_types.html#whitespaceformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3097,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#whitespaceformat.__type-42","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.WhiteSpaceFormat"},{"id":3098,"kind":1024,"name":"whiteSpace","url":"modules/roosterjs_content_model_types.html#whitespaceformat.__type-42.whitespace","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.WhiteSpaceFormat.__type"},{"id":3099,"kind":4194304,"name":"DisplayFormat","url":"modules/roosterjs_content_model_types.html#displayformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3100,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#displayformat.__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.DisplayFormat"},{"id":3101,"kind":1024,"name":"display","url":"modules/roosterjs_content_model_types.html#displayformat.__type-10.display","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.DisplayFormat.__type"},{"id":3102,"kind":4194304,"name":"IdFormat","url":"modules/roosterjs_content_model_types.html#idformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3103,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#idformat.__type-18","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.IdFormat"},{"id":3104,"kind":1024,"name":"id","url":"modules/roosterjs_content_model_types.html#idformat.__type-18.id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.IdFormat.__type"},{"id":3105,"kind":4194304,"name":"SpacingFormat","url":"modules/roosterjs_content_model_types.html#spacingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3106,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#spacingformat.__type-33","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SpacingFormat"},{"id":3107,"kind":1024,"name":"borderCollapse","url":"modules/roosterjs_content_model_types.html#spacingformat.__type-33.bordercollapse","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SpacingFormat.__type"},{"id":3108,"kind":4194304,"name":"TableLayoutFormat","url":"modules/roosterjs_content_model_types.html#tablelayoutformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3109,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#tablelayoutformat.__type-36","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TableLayoutFormat"},{"id":3110,"kind":1024,"name":"tableLayout","url":"modules/roosterjs_content_model_types.html#tablelayoutformat.__type-36.tablelayout","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableLayoutFormat.__type"},{"id":3111,"kind":4194304,"name":"LinkFormat","url":"modules/roosterjs_content_model_types.html#linkformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3112,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LinkFormat"},{"id":3113,"kind":1024,"name":"name","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.name","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3114,"kind":1024,"name":"href","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.href","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3115,"kind":1024,"name":"target","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.target","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3116,"kind":1024,"name":"anchorId","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchorid","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3117,"kind":1024,"name":"anchorClass","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchorclass","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3118,"kind":1024,"name":"anchorTitle","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchortitle","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3119,"kind":1024,"name":"relationship","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.relationship","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3120,"kind":4194304,"name":"SizeFormat","url":"modules/roosterjs_content_model_types.html#sizeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3121,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SizeFormat"},{"id":3122,"kind":1024,"name":"width","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3123,"kind":1024,"name":"height","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3124,"kind":1024,"name":"maxWidth","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.maxwidth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3125,"kind":1024,"name":"maxHeight","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.maxheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3126,"kind":1024,"name":"minWidth","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.minwidth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3127,"kind":1024,"name":"minHeight","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.minheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3128,"kind":4194304,"name":"BoxShadowFormat","url":"modules/roosterjs_content_model_types.html#boxshadowformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3129,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#boxshadowformat.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BoxShadowFormat"},{"id":3130,"kind":1024,"name":"boxShadow","url":"modules/roosterjs_content_model_types.html#boxshadowformat.__type-4.boxshadow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BoxShadowFormat.__type"},{"id":3131,"kind":4194304,"name":"ListThreadFormat","url":"modules/roosterjs_content_model_types.html#listthreadformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3132,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListThreadFormat"},{"id":3133,"kind":1024,"name":"startNumberOverride","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28.startnumberoverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListThreadFormat.__type"},{"id":3134,"kind":1024,"name":"displayForDummyItem","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28.displayfordummyitem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListThreadFormat.__type"},{"id":3135,"kind":4194304,"name":"ListStylePositionFormat","url":"modules/roosterjs_content_model_types.html#liststylepositionformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3136,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#liststylepositionformat.__type-27","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListStylePositionFormat"},{"id":3137,"kind":1024,"name":"listStylePosition","url":"modules/roosterjs_content_model_types.html#liststylepositionformat.__type-27.liststyleposition","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListStylePositionFormat.__type"},{"id":3138,"kind":4194304,"name":"FloatFormat","url":"modules/roosterjs_content_model_types.html#floatformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3139,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#floatformat.__type-12","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FloatFormat"},{"id":3140,"kind":1024,"name":"float","url":"modules/roosterjs_content_model_types.html#floatformat.__type-12.float","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FloatFormat.__type"},{"id":3141,"kind":4194304,"name":"DatasetFormat","url":"modules/roosterjs_content_model_types.html#datasetformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3142,"kind":4194304,"name":"TableMetadataFormat","url":"modules/roosterjs_content_model_types.html#tablemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3143,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TableMetadataFormat"},{"id":3144,"kind":1024,"name":"topBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.topbordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3145,"kind":1024,"name":"bottomBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bottombordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3146,"kind":1024,"name":"verticalBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.verticalbordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3147,"kind":1024,"name":"hasHeaderRow","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasheaderrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3148,"kind":1024,"name":"headerRowColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.headerrowcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3149,"kind":1024,"name":"hasFirstColumn","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasfirstcolumn","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3150,"kind":1024,"name":"hasBandedColumns","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasbandedcolumns","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3151,"kind":1024,"name":"hasBandedRows","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasbandedrows","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3152,"kind":1024,"name":"bgColorEven","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bgcoloreven","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3153,"kind":1024,"name":"bgColorOdd","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bgcolorodd","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3154,"kind":1024,"name":"tableBorderFormat","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.tableborderformat","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3155,"kind":1024,"name":"verticalAlign","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.verticalalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3156,"kind":4194304,"name":"ListMetadataFormat","url":"modules/roosterjs_content_model_types.html#listmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3157,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListMetadataFormat"},{"id":3158,"kind":1024,"name":"orderedStyleType","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26.orderedstyletype","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListMetadataFormat.__type"},{"id":3159,"kind":1024,"name":"unorderedStyleType","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26.unorderedstyletype","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListMetadataFormat.__type"},{"id":3160,"kind":4194304,"name":"ImageResizeMetadataFormat","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3161,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat"},{"id":3162,"kind":1024,"name":"widthPx","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20.widthpx","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat.__type"},{"id":3163,"kind":1024,"name":"heightPx","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20.heightpx","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat.__type"},{"id":3164,"kind":4194304,"name":"ImageCropMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3165,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageCropMetadataFormat"},{"id":3166,"kind":1024,"name":"leftPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.leftpercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3167,"kind":1024,"name":"rightPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.rightpercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3168,"kind":1024,"name":"topPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.toppercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3169,"kind":1024,"name":"bottomPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.bottompercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3170,"kind":4194304,"name":"ImageMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3171,"kind":4194304,"name":"ImageRotateMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3172,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat.__type-21","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageRotateMetadataFormat"},{"id":3173,"kind":1024,"name":"angleRad","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat.__type-21.anglerad","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageRotateMetadataFormat.__type"},{"id":3174,"kind":4194304,"name":"ContentModelBlockGroupType","url":"modules/roosterjs_content_model_types.html#contentmodelblockgrouptype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3175,"kind":4194304,"name":"ContentModelBlockType","url":"modules/roosterjs_content_model_types.html#contentmodelblocktype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3176,"kind":4194304,"name":"ContentModelSegmentType","url":"modules/roosterjs_content_model_types.html#contentmodelsegmenttype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3177,"kind":4194304,"name":"ContentModelBlock","url":"modules/roosterjs_content_model_types.html#contentmodelblock","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3178,"kind":256,"name":"ContentModelParagraph","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3179,"kind":1024,"name":"segments","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#segments","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3180,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3181,"kind":1024,"name":"decorator","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#decorator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3182,"kind":1024,"name":"isImplicit","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#isimplicit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3183,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3184,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3185,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3186,"kind":256,"name":"ContentModelTable","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3187,"kind":1024,"name":"widths","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#widths","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3188,"kind":1024,"name":"rows","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#rows","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3189,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3190,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3191,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3192,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3193,"kind":256,"name":"ContentModelDivider","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3194,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3195,"kind":1024,"name":"size","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3196,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3197,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3198,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3199,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3200,"kind":256,"name":"ContentModelBlockBase","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3201,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockBase"},{"id":3202,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBlockBase"},{"id":3203,"kind":256,"name":"ContentModelBlockWithCache","url":"interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3204,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockWithCache"},{"id":3205,"kind":256,"name":"ContentModelTableRow","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3206,"kind":1024,"name":"height","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3207,"kind":1024,"name":"cells","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#cells","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3208,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3209,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3210,"kind":256,"name":"ContentModelEntity","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3211,"kind":1024,"name":"wrapper","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#wrapper","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3212,"kind":1024,"name":"isReadonly","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#isreadonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3213,"kind":1024,"name":"type","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3214,"kind":1024,"name":"id","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3215,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3216,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3217,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3218,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3219,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3220,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3221,"kind":256,"name":"ContentModelDocument","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3222,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3223,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3224,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3225,"kind":256,"name":"ContentModelBlockGroupBase","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3226,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockGroupBase"},{"id":3227,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockGroupBase"},{"id":3228,"kind":256,"name":"ContentModelFormatContainer","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3229,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3230,"kind":1024,"name":"zeroFontSize","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#zerofontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3231,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3232,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3233,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3234,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3235,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3236,"kind":256,"name":"ContentModelGeneralBlock","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3237,"kind":1024,"name":"element","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3238,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3239,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3240,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3241,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3242,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3243,"kind":256,"name":"ContentModelListItem","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3244,"kind":1024,"name":"levels","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#levels","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3245,"kind":1024,"name":"formatHolder","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#formatholder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3246,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3247,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3248,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3249,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3250,"kind":256,"name":"ContentModelTableCell","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3251,"kind":1024,"name":"spanLeft","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#spanleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3252,"kind":1024,"name":"spanAbove","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#spanabove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3253,"kind":1024,"name":"isHeader","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#isheader","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3254,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3255,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3256,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3257,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3258,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3259,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3260,"kind":4194304,"name":"ContentModelBlockGroup","url":"modules/roosterjs_content_model_types.html#contentmodelblockgroup","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3261,"kind":256,"name":"ContentModelBr","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3262,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3263,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3264,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3265,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3266,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3267,"kind":256,"name":"ContentModelGeneralSegment","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3268,"kind":1024,"name":"element","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#element","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3269,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3270,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3271,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3272,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3273,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3274,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3275,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3276,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3277,"kind":256,"name":"ContentModelImage","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3278,"kind":1024,"name":"src","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#src","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3279,"kind":1024,"name":"alt","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#alt","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3280,"kind":1024,"name":"title","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3281,"kind":1024,"name":"isSelectedAsImageSelection","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#isselectedasimageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3282,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3283,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3284,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3285,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3286,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3287,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3288,"kind":256,"name":"ContentModelText","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3289,"kind":1024,"name":"text","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3290,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3291,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3292,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3293,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3294,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3295,"kind":256,"name":"ContentModelSelectionMarker","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3296,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3297,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3298,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3299,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3300,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3301,"kind":256,"name":"ContentModelSegmentBase","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3302,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3303,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3304,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3305,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3306,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3307,"kind":4194304,"name":"ContentModelSegment","url":"modules/roosterjs_content_model_types.html#contentmodelsegment","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3308,"kind":256,"name":"ContentModelCode","url":"interfaces/roosterjs_content_model_types.contentmodelcode.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3309,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelcode.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelCode"},{"id":3310,"kind":256,"name":"ContentModelLink","url":"interfaces/roosterjs_content_model_types.contentmodellink.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3311,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellink.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelLink"},{"id":3312,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodellink.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelLink"},{"id":3313,"kind":256,"name":"ContentModelParagraphDecorator","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3314,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraphDecorator"},{"id":3315,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraphDecorator"},{"id":3316,"kind":4194304,"name":"ContentModelDecorator","url":"modules/roosterjs_content_model_types.html#contentmodeldecorator","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3317,"kind":256,"name":"ContentModelListLevel","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3318,"kind":1024,"name":"listType","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#listtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3319,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3320,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3321,"kind":256,"name":"Selectable","url":"interfaces/roosterjs_content_model_types.selectable.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3322,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.selectable.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.Selectable"},{"id":3323,"kind":4194304,"name":"ContentModelHandlerMap","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3324,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelHandlerMap"},{"id":3325,"kind":1024,"name":"block","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.block","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3326,"kind":1024,"name":"blockGroupChildren","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.blockgroupchildren","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3327,"kind":1024,"name":"br","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.br","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3328,"kind":1024,"name":"entity","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.entity","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3329,"kind":1024,"name":"general","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.general","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3330,"kind":1024,"name":"divider","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.divider","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3331,"kind":1024,"name":"image","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.image","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3332,"kind":1024,"name":"list","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.list","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3333,"kind":1024,"name":"listItem","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.listitem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3334,"kind":1024,"name":"paragraph","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.paragraph","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3335,"kind":1024,"name":"formatContainer","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.formatcontainer","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3336,"kind":1024,"name":"segment","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.segment","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3337,"kind":1024,"name":"segmentDecorator","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.segmentdecorator","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3338,"kind":1024,"name":"table","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.table","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3339,"kind":1024,"name":"text","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.text","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3340,"kind":4194304,"name":"DefaultImplicitFormatMap","url":"modules/roosterjs_content_model_types.html#defaultimplicitformatmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3341,"kind":4194304,"name":"FormatAppliers","url":"modules/roosterjs_content_model_types.html#formatappliers","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3342,"kind":4194304,"name":"FormatAppliersPerCategory","url":"modules/roosterjs_content_model_types.html#formatapplierspercategory","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3343,"kind":4194304,"name":"OnNodeCreated","url":"modules/roosterjs_content_model_types.html#onnodecreated","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3344,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#onnodecreated.__type-30","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.OnNodeCreated"},{"id":3345,"kind":256,"name":"ModelToDomSettings","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3346,"kind":1024,"name":"modelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#modelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3347,"kind":1024,"name":"formatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#formatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3348,"kind":1024,"name":"defaultImplicitFormatMap","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultimplicitformatmap","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3349,"kind":1024,"name":"defaultModelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultmodelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3350,"kind":1024,"name":"defaultFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3351,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3352,"kind":4194304,"name":"FormatApplier","url":"modules/roosterjs_content_model_types.html#formatapplier","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3353,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#formatapplier.__type-15","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FormatApplier"},{"id":3354,"kind":4194304,"name":"DefaultStyleMap","url":"modules/roosterjs_content_model_types.html#defaultstylemap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3355,"kind":4194304,"name":"ElementProcessorMap","url":"modules/roosterjs_content_model_types.html#elementprocessormap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3356,"kind":4194304,"name":"FormatParsers","url":"modules/roosterjs_content_model_types.html#formatparsers","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3357,"kind":4194304,"name":"FormatParsersPerCategory","url":"modules/roosterjs_content_model_types.html#formatparserspercategory","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3358,"kind":256,"name":"DomToModelSettings","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3359,"kind":1024,"name":"elementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#elementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3360,"kind":1024,"name":"defaultStyles","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultstyles","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3361,"kind":1024,"name":"formatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#formatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3362,"kind":1024,"name":"defaultElementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultelementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3363,"kind":1024,"name":"defaultFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3364,"kind":4194304,"name":"FormatParser","url":"modules/roosterjs_content_model_types.html#formatparser","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3365,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#formatparser.__type-16","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FormatParser"},{"id":3366,"kind":256,"name":"DomToModelContext","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3367,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3368,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3369,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3370,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3371,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3372,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3373,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3374,"kind":1024,"name":"isInSelection","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isinselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3375,"kind":1024,"name":"rangeEx","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#rangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3376,"kind":1024,"name":"blockFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#blockformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3377,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3378,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3379,"kind":1024,"name":"elementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#elementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3380,"kind":1024,"name":"defaultStyles","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultstyles","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3381,"kind":1024,"name":"formatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#formatparsers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3382,"kind":1024,"name":"defaultElementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultelementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3383,"kind":1024,"name":"defaultFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3384,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3385,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3386,"kind":1024,"name":"blockDecorator","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#blockdecorator","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3387,"kind":4194304,"name":"ElementProcessor","url":"modules/roosterjs_content_model_types.html#elementprocessor","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3388,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#elementprocessor.__type-11","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ElementProcessor"},{"id":3389,"kind":256,"name":"DomToModelSelectionContext","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3390,"kind":1024,"name":"isInSelection","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html#isinselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSelectionContext"},{"id":3391,"kind":1024,"name":"rangeEx","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html#rangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSelectionContext"},{"id":3392,"kind":256,"name":"EditorContext","url":"interfaces/roosterjs_content_model_types.editorcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3393,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.editorcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3394,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.editorcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3395,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.editorcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3396,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.editorcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3397,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.editorcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3398,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.editorcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3399,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.editorcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3400,"kind":256,"name":"DomToModelFormatContext","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3401,"kind":1024,"name":"blockFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#blockformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3402,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3403,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3404,"kind":256,"name":"DomToModelDecoratorContext","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3405,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3406,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3407,"kind":1024,"name":"blockDecorator","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#blockdecorator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3408,"kind":256,"name":"DomToModelListFormat","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3409,"kind":1024,"name":"threadItemCounts","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#threaditemcounts","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3410,"kind":1024,"name":"listParent","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#listparent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3411,"kind":1024,"name":"levels","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#levels","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3412,"kind":256,"name":"ModelToDomContext","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3413,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3414,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3415,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3416,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3417,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3418,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3419,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3420,"kind":1024,"name":"regularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#regularselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3421,"kind":1024,"name":"tableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#tableselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3422,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3423,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3424,"kind":1024,"name":"implicitFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#implicitformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3425,"kind":1024,"name":"modelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#modelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3426,"kind":1024,"name":"formatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#formatappliers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3427,"kind":1024,"name":"defaultImplicitFormatMap","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultimplicitformatmap","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3428,"kind":1024,"name":"defaultModelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultmodelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3429,"kind":1024,"name":"defaultFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3430,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3431,"kind":256,"name":"ModelToDomBlockAndSegmentNode","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3432,"kind":1024,"name":"block","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html#block","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomBlockAndSegmentNode"},{"id":3433,"kind":1024,"name":"segment","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html#segment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomBlockAndSegmentNode"},{"id":3434,"kind":256,"name":"ModelToDomRegularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3435,"kind":1024,"name":"start","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3436,"kind":1024,"name":"end","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3437,"kind":1024,"name":"current","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#current","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3438,"kind":256,"name":"ModelToDomTableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3439,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3440,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3441,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3442,"kind":256,"name":"ModelToDomImageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomimageselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3443,"kind":1024,"name":"image","url":"interfaces/roosterjs_content_model_types.modeltodomimageselection.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomImageSelection"},{"id":3444,"kind":256,"name":"ModelToDomSelectionContext","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3445,"kind":1024,"name":"regularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#regularselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3446,"kind":1024,"name":"tableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#tableselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3447,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3448,"kind":256,"name":"ModelToDomListStackItem","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3449,"kind":1024,"name":"node","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3450,"kind":1024,"name":"listType","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#listtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3451,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3452,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3453,"kind":256,"name":"ModelToDomListContext","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3454,"kind":1024,"name":"threadItemCounts","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html#threaditemcounts","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListContext"},{"id":3455,"kind":1024,"name":"nodeStack","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html#nodestack","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListContext"},{"id":3456,"kind":256,"name":"ModelToDomFormatContext","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3457,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomFormatContext"},{"id":3458,"kind":1024,"name":"implicitFormat","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html#implicitformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomFormatContext"},{"id":3459,"kind":4194304,"name":"ContentModelHandler","url":"modules/roosterjs_content_model_types.html#contentmodelhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3460,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelhandler.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelHandler"},{"id":3461,"kind":4194304,"name":"ContentModelBlockHandler","url":"modules/roosterjs_content_model_types.html#contentmodelblockhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3462,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelblockhandler.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelBlockHandler"},{"id":3463,"kind":256,"name":"DomToModelOption","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3464,"kind":1024,"name":"processorOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#processoroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3465,"kind":1024,"name":"defaultStyleOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#defaultstyleoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3466,"kind":1024,"name":"formatParserOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#formatparseroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3467,"kind":1024,"name":"additionalFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#additionalformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3468,"kind":256,"name":"ModelToDomOption","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3469,"kind":1024,"name":"formatApplierOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#formatapplieroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3470,"kind":1024,"name":"additionalFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#additionalformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3471,"kind":1024,"name":"modelHandlerOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#modelhandleroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3472,"kind":1024,"name":"defaultImplicitFormatOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#defaultimplicitformatoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3473,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3474,"kind":64,"name":"domToContentModel","url":"modules/roosterjs_content_model_dom.html#domtocontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3475,"kind":64,"name":"contentModelToDom","url":"modules/roosterjs_content_model_dom.html#contentmodeltodom","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3476,"kind":64,"name":"childProcessor","url":"modules/roosterjs_content_model_dom.html#childprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3477,"kind":64,"name":"handleRegularSelection","url":"modules/roosterjs_content_model_dom.html#handleregularselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3478,"kind":64,"name":"processChildNode","url":"modules/roosterjs_content_model_dom.html#processchildnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3479,"kind":64,"name":"entityProcessor","url":"modules/roosterjs_content_model_dom.html#entityprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3480,"kind":64,"name":"tableProcessor","url":"modules/roosterjs_content_model_dom.html#tableprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3481,"kind":64,"name":"getRegularSelectionOffsets","url":"modules/roosterjs_content_model_dom.html#getregularselectionoffsets","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3482,"kind":64,"name":"parseFormat","url":"modules/roosterjs_content_model_dom.html#parseformat","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3483,"kind":64,"name":"areSameFormats","url":"modules/roosterjs_content_model_dom.html#aresameformats","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3484,"kind":64,"name":"updateMetadata","url":"modules/roosterjs_content_model_dom.html#updatemetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3485,"kind":64,"name":"hasMetadata","url":"modules/roosterjs_content_model_dom.html#hasmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3486,"kind":64,"name":"updateListMetadata","url":"modules/roosterjs_content_model_dom.html#updatelistmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3487,"kind":64,"name":"isNodeOfType","url":"modules/roosterjs_content_model_dom.html#isnodeoftype","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3488,"kind":256,"name":"NodeTypeMap","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3489,"kind":1024,"name":"2","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#2","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3490,"kind":1024,"name":"8","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#8","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3491,"kind":1024,"name":"11","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#11","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3492,"kind":1024,"name":"9","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#9","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3493,"kind":1024,"name":"10","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#10","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3494,"kind":1024,"name":"1","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#1","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3495,"kind":1024,"name":"7","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#7","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3496,"kind":1024,"name":"3","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#3","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3497,"kind":64,"name":"createBr","url":"modules/roosterjs_content_model_dom.html#createbr","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3498,"kind":64,"name":"createListItem","url":"modules/roosterjs_content_model_dom.html#createlistitem","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3499,"kind":64,"name":"createFormatContainer","url":"modules/roosterjs_content_model_dom.html#createformatcontainer","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3500,"kind":64,"name":"createParagraph","url":"modules/roosterjs_content_model_dom.html#createparagraph","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3501,"kind":64,"name":"createSelectionMarker","url":"modules/roosterjs_content_model_dom.html#createselectionmarker","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3502,"kind":64,"name":"createTable","url":"modules/roosterjs_content_model_dom.html#createtable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3503,"kind":64,"name":"createTableCell","url":"modules/roosterjs_content_model_dom.html#createtablecell","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3504,"kind":64,"name":"createText","url":"modules/roosterjs_content_model_dom.html#createtext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3505,"kind":64,"name":"createImage","url":"modules/roosterjs_content_model_dom.html#createimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3506,"kind":64,"name":"createContentModelDocument","url":"modules/roosterjs_content_model_dom.html#createcontentmodeldocument","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3507,"kind":64,"name":"createParagraphDecorator","url":"modules/roosterjs_content_model_dom.html#createparagraphdecorator","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3508,"kind":64,"name":"createGeneralSegment","url":"modules/roosterjs_content_model_dom.html#creategeneralsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3509,"kind":64,"name":"createGeneralBlock","url":"modules/roosterjs_content_model_dom.html#creategeneralblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3510,"kind":64,"name":"createEntity","url":"modules/roosterjs_content_model_dom.html#createentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3511,"kind":64,"name":"createDivider","url":"modules/roosterjs_content_model_dom.html#createdivider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3512,"kind":64,"name":"createListLevel","url":"modules/roosterjs_content_model_dom.html#createlistlevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3513,"kind":64,"name":"addBlock","url":"modules/roosterjs_content_model_dom.html#addblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3514,"kind":64,"name":"addCode","url":"modules/roosterjs_content_model_dom.html#addcode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3515,"kind":64,"name":"addLink","url":"modules/roosterjs_content_model_dom.html#addlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3516,"kind":64,"name":"normalizeContentModel","url":"modules/roosterjs_content_model_dom.html#normalizecontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3517,"kind":64,"name":"isGeneralSegment","url":"modules/roosterjs_content_model_dom.html#isgeneralsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3518,"kind":64,"name":"unwrapBlock","url":"modules/roosterjs_content_model_dom.html#unwrapblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3519,"kind":64,"name":"addSegment","url":"modules/roosterjs_content_model_dom.html#addsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3520,"kind":64,"name":"isWhiteSpacePreserved","url":"modules/roosterjs_content_model_dom.html#iswhitespacepreserved","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3521,"kind":64,"name":"normalizeSingleSegment","url":"modules/roosterjs_content_model_dom.html#normalizesinglesegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3522,"kind":64,"name":"setParagraphNotImplicit","url":"modules/roosterjs_content_model_dom.html#setparagraphnotimplicit","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3523,"kind":64,"name":"parseValueWithUnit","url":"modules/roosterjs_content_model_dom.html#parsevaluewithunit","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3524,"kind":32,"name":"BorderKeys","url":"modules/roosterjs_content_model_dom.html#borderkeys","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3525,"kind":32,"name":"DeprecatedColors","url":"modules/roosterjs_content_model_dom.html#deprecatedcolors","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3526,"kind":32,"name":"defaultImplicitFormatMap","url":"modules/roosterjs_content_model_dom.html#defaultimplicitformatmap","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3527,"kind":64,"name":"createDomToModelContext","url":"modules/roosterjs_content_model_dom.html#createdomtomodelcontext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3528,"kind":256,"name":"ContentModelFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3529,"kind":1024,"name":"imageFormat","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#imageformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3530,"kind":1024,"name":"letterSpacing","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#letterspacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3531,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3532,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3533,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3534,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3535,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3536,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3537,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3538,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3539,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3540,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3541,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3542,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3543,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3544,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3545,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3546,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3547,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3548,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3549,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3550,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3551,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3552,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3553,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3554,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3555,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3556,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3557,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3558,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3559,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3560,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3561,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3562,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3563,"kind":1024,"name":"direction","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3564,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3565,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3566,"kind":256,"name":"ImageFormatState","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3567,"kind":1024,"name":"borderColor","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#bordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3568,"kind":1024,"name":"borderWidth","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderwidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3569,"kind":1024,"name":"borderStyle","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderstyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3570,"kind":1024,"name":"borderRadius","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderradius","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3571,"kind":1024,"name":"boxShadow","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#boxshadow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3572,"kind":256,"name":"Border","url":"interfaces/roosterjs_content_model_editor.border.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3573,"kind":1024,"name":"width","url":"interfaces/roosterjs_content_model_editor.border.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3574,"kind":1024,"name":"style","url":"interfaces/roosterjs_content_model_editor.border.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3575,"kind":1024,"name":"color","url":"interfaces/roosterjs_content_model_editor.border.html#color","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3576,"kind":4194304,"name":"CreateEditorContext","url":"modules/roosterjs_content_model_editor.html#createeditorcontext","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3577,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#createeditorcontext.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.CreateEditorContext"},{"id":3578,"kind":256,"name":"ContentModelCoreApiMap","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3579,"kind":1024,"name":"createEditorContext","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createeditorcontext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3580,"kind":1024,"name":"createContentModel","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createcontentmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3581,"kind":1024,"name":"setContentModel","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#setcontentmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3582,"kind":1024,"name":"addUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#addundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3583,"kind":1024,"name":"attachDomEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#attachdomevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3584,"kind":1024,"name":"createPasteFragment","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createpastefragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3585,"kind":1024,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#ensuretypeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3586,"kind":1024,"name":"focus","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#focus","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3587,"kind":1024,"name":"getContent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3588,"kind":1024,"name":"getSelectionRange","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3589,"kind":1024,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getselectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3590,"kind":1024,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getstylebasedformatstate","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3591,"kind":1024,"name":"getPendableFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getpendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3592,"kind":1024,"name":"hasFocus","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#hasfocus","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3593,"kind":1024,"name":"insertNode","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#insertnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3594,"kind":1024,"name":"restoreUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#restoreundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3595,"kind":1024,"name":"select","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#select","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3596,"kind":1024,"name":"selectRange","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selectrange","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3597,"kind":1024,"name":"setContent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#setcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3598,"kind":1024,"name":"switchShadowEdit","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#switchshadowedit","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3599,"kind":1024,"name":"transformColor","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#transformcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3600,"kind":1024,"name":"triggerEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#triggerevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3601,"kind":1024,"name":"selectTable","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selecttable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3602,"kind":1024,"name":"selectImage","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selectimage","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3603,"kind":256,"name":"ContentModelEditorCore","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3604,"kind":1024,"name":"api","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#api","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3605,"kind":1024,"name":"originalApi","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#originalapi","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3606,"kind":1024,"name":"cachedModel","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#cachedmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3607,"kind":1024,"name":"cachedRangeEx","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#cachedrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3608,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3609,"kind":1024,"name":"defaultDomToModelOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultdomtomodeloptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3610,"kind":1024,"name":"defaultModelToDomOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultmodeltodomoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3611,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3612,"kind":1024,"name":"contentDiv","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#contentdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3613,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3614,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3615,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3616,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3617,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3618,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3619,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3620,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3621,"kind":2048,"name":"edit","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#edit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3622,"kind":2048,"name":"undo","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3623,"kind":2048,"name":"domEvent","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#domevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3624,"kind":2048,"name":"pendingFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#pendingformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3625,"kind":2048,"name":"copyPaste","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#copypaste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3626,"kind":2048,"name":"entity","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#entity","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3627,"kind":2048,"name":"lifecycle","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#lifecycle","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3628,"kind":4194304,"name":"CreateContentModel","url":"modules/roosterjs_content_model_editor.html#createcontentmodel","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3629,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#createcontentmodel.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.CreateContentModel"},{"id":3630,"kind":4194304,"name":"SetContentModel","url":"modules/roosterjs_content_model_editor.html#setcontentmodel","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3631,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#setcontentmodel.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.SetContentModel"},{"id":3632,"kind":256,"name":"ContentModelBeforePasteEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3633,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3634,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3635,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3636,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3637,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3638,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3639,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3640,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3641,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3642,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3643,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3644,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3645,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3646,"kind":256,"name":"ContentModelBeforePasteEventData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3647,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3648,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3649,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3650,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3651,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3652,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3653,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3654,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3655,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3656,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3657,"kind":256,"name":"CompatibleContentModelBeforePasteEvent","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3658,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3659,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3660,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3661,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3662,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3663,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3664,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3665,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3666,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3667,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3668,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3669,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3670,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3671,"kind":256,"name":"IContentModelEditor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3672,"kind":2048,"name":"createContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#createcontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3673,"kind":2048,"name":"setContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setcontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3674,"kind":2048,"name":"cacheContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#cachecontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3675,"kind":2048,"name":"getContentModelDefaultFormat","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontentmodeldefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3676,"kind":2048,"name":"dispose","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3677,"kind":2048,"name":"isDisposed","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3678,"kind":2048,"name":"insertNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3679,"kind":2048,"name":"deleteNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3680,"kind":2048,"name":"replaceNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3681,"kind":2048,"name":"getBlockElementAtNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3682,"kind":2048,"name":"contains","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3683,"kind":2048,"name":"queryElements","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3684,"kind":2048,"name":"collapseNodes","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3685,"kind":2048,"name":"isEmpty","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3686,"kind":2048,"name":"getContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3687,"kind":2048,"name":"setContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3688,"kind":2048,"name":"insertContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3689,"kind":2048,"name":"deleteSelectedContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3690,"kind":2048,"name":"paste","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3691,"kind":2048,"name":"getSelectionRange","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3692,"kind":2048,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3693,"kind":2048,"name":"getSelectionPath","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3694,"kind":2048,"name":"hasFocus","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3695,"kind":2048,"name":"focus","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3696,"kind":2048,"name":"select","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#select","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3697,"kind":2048,"name":"getFocusedPosition","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3698,"kind":2048,"name":"getElementAtCursor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3699,"kind":2048,"name":"isPositionAtBeginning","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3700,"kind":2048,"name":"getSelectedRegions","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3701,"kind":2048,"name":"addDomEventHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3702,"kind":2048,"name":"triggerPluginEvent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3703,"kind":2048,"name":"triggerContentChangedEvent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3704,"kind":2048,"name":"undo","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3705,"kind":2048,"name":"redo","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3706,"kind":2048,"name":"addUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3707,"kind":2048,"name":"getUndoState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3708,"kind":2048,"name":"getDocument","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3709,"kind":2048,"name":"getScrollContainer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3710,"kind":2048,"name":"getCustomData","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3711,"kind":2048,"name":"isInIME","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3712,"kind":2048,"name":"getDefaultFormat","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3713,"kind":2048,"name":"getBodyTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3714,"kind":2048,"name":"getSelectionTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3715,"kind":2048,"name":"getBlockTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3716,"kind":2048,"name":"getContentSearcherOfCursor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3717,"kind":2048,"name":"runAsync","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3718,"kind":2048,"name":"setEditorDomAttribute","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3719,"kind":2048,"name":"getEditorDomAttribute","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3720,"kind":2048,"name":"getRelativeDistanceToEditor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3721,"kind":2048,"name":"addContentEditFeature","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3722,"kind":2048,"name":"removeContentEditFeature","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3723,"kind":2048,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3724,"kind":2048,"name":"getPendableFormatState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3725,"kind":2048,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3726,"kind":2048,"name":"setDarkModeState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3727,"kind":2048,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3728,"kind":2048,"name":"transformToDarkColor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3729,"kind":2048,"name":"getDarkColorHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3730,"kind":2048,"name":"startShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3731,"kind":2048,"name":"stopShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3732,"kind":2048,"name":"isInShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3733,"kind":2048,"name":"isFeatureEnabled","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3734,"kind":2048,"name":"getTrustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3735,"kind":2048,"name":"getZoomScale","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3736,"kind":2048,"name":"setZoomScale","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3737,"kind":2048,"name":"getSizeTransformer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3738,"kind":2048,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3739,"kind":256,"name":"ContentModelEditorOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3740,"kind":1024,"name":"defaultDomToModelOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultdomtomodeloptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3741,"kind":1024,"name":"defaultModelToDomOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultmodeltodomoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3742,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3743,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3744,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3745,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3746,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3747,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3748,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3749,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3750,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3751,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3752,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3753,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3754,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3755,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3756,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3757,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3758,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3759,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3760,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3761,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3762,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3763,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3764,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3765,"kind":256,"name":"InsertPoint","url":"interfaces/roosterjs_content_model_editor.insertpoint.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3766,"kind":1024,"name":"marker","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#marker","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3767,"kind":1024,"name":"paragraph","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#paragraph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3768,"kind":1024,"name":"path","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3769,"kind":1024,"name":"tableContext","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#tablecontext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3770,"kind":256,"name":"TableSelectionContext","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3771,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3772,"kind":1024,"name":"rowIndex","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#rowindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3773,"kind":1024,"name":"colIndex","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#colindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3774,"kind":1024,"name":"isWholeTableSelected","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#iswholetableselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3775,"kind":256,"name":"DeletedEntity","url":"interfaces/roosterjs_content_model_editor.deletedentity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3776,"kind":1024,"name":"entity","url":"interfaces/roosterjs_content_model_editor.deletedentity.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.DeletedEntity"},{"id":3777,"kind":1024,"name":"operation","url":"interfaces/roosterjs_content_model_editor.deletedentity.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.DeletedEntity"},{"id":3778,"kind":256,"name":"FormatWithContentModelContext","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3779,"kind":1024,"name":"deletedEntities","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#deletedentities","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3780,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3781,"kind":1024,"name":"skipUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#skipundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3782,"kind":256,"name":"FormatWithContentModelOptions","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3783,"kind":1024,"name":"preservePendingFormat","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#preservependingformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3784,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3785,"kind":1024,"name":"changeSource","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#changesource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3786,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3787,"kind":1024,"name":"getChangeData","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#getchangedata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3788,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3789,"kind":1024,"name":"selectionOverride","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#selectionoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3790,"kind":4194304,"name":"ContentModelFormatter","url":"modules/roosterjs_content_model_editor.html#contentmodelformatter","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3791,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#contentmodelformatter.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.ContentModelFormatter"},{"id":3792,"kind":256,"name":"InsertEntityOptions","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3793,"kind":1024,"name":"contentNode","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#contentnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3794,"kind":1024,"name":"focusAfterEntity","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#focusafterentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3795,"kind":1024,"name":"wrapperDisplay","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#wrapperdisplay","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3796,"kind":1024,"name":"skipUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#skipundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3797,"kind":4194304,"name":"InsertEntityPosition","url":"modules/roosterjs_content_model_editor.html#insertentityposition","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3798,"kind":64,"name":"insertTable","url":"modules/roosterjs_content_model_editor.html#inserttable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3799,"kind":64,"name":"formatTable","url":"modules/roosterjs_content_model_editor.html#formattable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3800,"kind":64,"name":"setTableCellShade","url":"modules/roosterjs_content_model_editor.html#settablecellshade","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3801,"kind":64,"name":"editTable","url":"modules/roosterjs_content_model_editor.html#edittable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3802,"kind":64,"name":"toggleBullet","url":"modules/roosterjs_content_model_editor.html#togglebullet","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3803,"kind":64,"name":"toggleNumbering","url":"modules/roosterjs_content_model_editor.html#togglenumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3804,"kind":64,"name":"toggleBold","url":"modules/roosterjs_content_model_editor.html#togglebold","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3805,"kind":64,"name":"toggleItalic","url":"modules/roosterjs_content_model_editor.html#toggleitalic","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3806,"kind":64,"name":"toggleUnderline","url":"modules/roosterjs_content_model_editor.html#toggleunderline","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3807,"kind":64,"name":"toggleStrikethrough","url":"modules/roosterjs_content_model_editor.html#togglestrikethrough","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3808,"kind":64,"name":"toggleSubscript","url":"modules/roosterjs_content_model_editor.html#togglesubscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3809,"kind":64,"name":"toggleSuperscript","url":"modules/roosterjs_content_model_editor.html#togglesuperscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3810,"kind":64,"name":"setBackgroundColor","url":"modules/roosterjs_content_model_editor.html#setbackgroundcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3811,"kind":64,"name":"setFontName","url":"modules/roosterjs_content_model_editor.html#setfontname","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3812,"kind":64,"name":"setFontSize","url":"modules/roosterjs_content_model_editor.html#setfontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3813,"kind":64,"name":"setTextColor","url":"modules/roosterjs_content_model_editor.html#settextcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3814,"kind":64,"name":"changeFontSize","url":"modules/roosterjs_content_model_editor.html#changefontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3815,"kind":64,"name":"applySegmentFormat","url":"modules/roosterjs_content_model_editor.html#applysegmentformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3816,"kind":64,"name":"changeCapitalization","url":"modules/roosterjs_content_model_editor.html#changecapitalization","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3817,"kind":64,"name":"insertImage","url":"modules/roosterjs_content_model_editor.html#insertimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3818,"kind":64,"name":"setListStyle","url":"modules/roosterjs_content_model_editor.html#setliststyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3819,"kind":64,"name":"setListStartNumber","url":"modules/roosterjs_content_model_editor.html#setliststartnumber","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3820,"kind":64,"name":"hasSelectionInBlock","url":"modules/roosterjs_content_model_editor.html#hasselectioninblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3821,"kind":64,"name":"hasSelectionInSegment","url":"modules/roosterjs_content_model_editor.html#hasselectioninsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3822,"kind":64,"name":"hasSelectionInBlockGroup","url":"modules/roosterjs_content_model_editor.html#hasselectioninblockgroup","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3823,"kind":64,"name":"getSelectedSegments","url":"modules/roosterjs_content_model_editor.html#getselectedsegments","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3824,"kind":64,"name":"setIndentation","url":"modules/roosterjs_content_model_editor.html#setindentation","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3825,"kind":64,"name":"setAlignment","url":"modules/roosterjs_content_model_editor.html#setalignment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3826,"kind":64,"name":"setDirection","url":"modules/roosterjs_content_model_editor.html#setdirection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3827,"kind":64,"name":"setHeadingLevel","url":"modules/roosterjs_content_model_editor.html#setheadinglevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3828,"kind":64,"name":"toggleBlockQuote","url":"modules/roosterjs_content_model_editor.html#toggleblockquote","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3829,"kind":64,"name":"setSpacing","url":"modules/roosterjs_content_model_editor.html#setspacing","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3830,"kind":64,"name":"setImageBorder","url":"modules/roosterjs_content_model_editor.html#setimageborder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3831,"kind":64,"name":"setImageBoxShadow","url":"modules/roosterjs_content_model_editor.html#setimageboxshadow","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3832,"kind":64,"name":"changeImage","url":"modules/roosterjs_content_model_editor.html#changeimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3833,"kind":64,"name":"getFormatState","url":"modules/roosterjs_content_model_editor.html#getformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3834,"kind":64,"name":"applyPendingFormat","url":"modules/roosterjs_content_model_editor.html#applypendingformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3835,"kind":64,"name":"clearFormat","url":"modules/roosterjs_content_model_editor.html#clearformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3836,"kind":64,"name":"insertLink","url":"modules/roosterjs_content_model_editor.html#insertlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3837,"kind":64,"name":"removeLink","url":"modules/roosterjs_content_model_editor.html#removelink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3838,"kind":64,"name":"adjustLinkSelection","url":"modules/roosterjs_content_model_editor.html#adjustlinkselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3839,"kind":64,"name":"setImageAltText","url":"modules/roosterjs_content_model_editor.html#setimagealttext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3840,"kind":64,"name":"adjustImageSelection","url":"modules/roosterjs_content_model_editor.html#adjustimageselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3841,"kind":64,"name":"setParagraphMargin","url":"modules/roosterjs_content_model_editor.html#setparagraphmargin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3842,"kind":64,"name":"toggleCode","url":"modules/roosterjs_content_model_editor.html#togglecode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3843,"kind":64,"name":"paste","url":"modules/roosterjs_content_model_editor.html#paste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3844,"kind":64,"name":"insertEntity","url":"modules/roosterjs_content_model_editor.html#insertentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3845,"kind":64,"name":"formatWithContentModel","url":"modules/roosterjs_content_model_editor.html#formatwithcontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3846,"kind":128,"name":"ContentModelEditor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3847,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3848,"kind":2048,"name":"createContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#createcontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3849,"kind":2048,"name":"setContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setcontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3850,"kind":2048,"name":"cacheContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#cachecontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3851,"kind":2048,"name":"getContentModelDefaultFormat","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontentmodeldefaultformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3852,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3853,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3854,"kind":2048,"name":"insertNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3855,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3856,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3857,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3858,"kind":2048,"name":"contains","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3859,"kind":2048,"name":"queryElements","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3860,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3861,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3862,"kind":2048,"name":"getContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3863,"kind":2048,"name":"setContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3864,"kind":2048,"name":"insertContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3865,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3866,"kind":2048,"name":"paste","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3867,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3868,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3869,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3870,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3871,"kind":2048,"name":"focus","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3872,"kind":2048,"name":"select","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#select","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3873,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3874,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3875,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3876,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3877,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3878,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3879,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3880,"kind":2048,"name":"undo","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3881,"kind":2048,"name":"redo","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3882,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3883,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3884,"kind":2048,"name":"getDocument","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3885,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3886,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3887,"kind":2048,"name":"isInIME","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3888,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3889,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3890,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3891,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3892,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3893,"kind":2048,"name":"runAsync","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3894,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3895,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3896,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3897,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3898,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3899,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3900,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3901,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3902,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3903,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3904,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3905,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3906,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3907,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3908,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3909,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3910,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3911,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3912,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3913,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3914,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3915,"kind":2048,"name":"getCore","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3916,"kind":64,"name":"isContentModelEditor","url":"modules/roosterjs_content_model_editor.html#iscontentmodeleditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3917,"kind":128,"name":"ContentModelFormatPlugin","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3918,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3919,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3920,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3921,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3922,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3923,"kind":128,"name":"ContentModelEditPlugin","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3924,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3925,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3926,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3927,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3928,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3929,"kind":128,"name":"ContentModelPastePlugin","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3930,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3931,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3932,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3933,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3934,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3935,"kind":128,"name":"ContentModelTypeInContainerPlugin","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3936,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3937,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3938,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3939,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3940,"kind":128,"name":"ContentModelCopyPastePlugin","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3941,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3942,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3943,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3944,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3945,"kind":2048,"name":"getState","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#getstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3946,"kind":64,"name":"createContentModelEditorCore","url":"modules/roosterjs_content_model_editor.html#createcontentmodeleditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3947,"kind":64,"name":"promoteToContentModelEditorCore","url":"modules/roosterjs_content_model_editor.html#promotetocontentmodeleditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3948,"kind":64,"name":"combineBorderValue","url":"modules/roosterjs_content_model_editor.html#combinebordervalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3949,"kind":64,"name":"extractBorderValues","url":"modules/roosterjs_content_model_editor.html#extractbordervalues","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3950,"kind":64,"name":"updateImageMetadata","url":"modules/roosterjs_content_model_editor.html#updateimagemetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3951,"kind":64,"name":"updateTableCellMetadata","url":"modules/roosterjs_content_model_editor.html#updatetablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3952,"kind":64,"name":"updateTableMetadata","url":"modules/roosterjs_content_model_editor.html#updatetablemetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3953,"kind":64,"name":"createContentModelEditor","url":"modules/roosterjs_content_model.html#createcontentmodeleditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,0.001,1,1.909,2,9.176]],["parent/0",[]],["name/1",[0,0.001,1,1.559,2,7.493,3,21.02]],["parent/1",[]],["name/2",[0,0.001,1,1.909,4,17.026]],["parent/2",[]],["name/3",[0,0.001,1,1.909,5,36.345]],["parent/3",[]],["name/4",[0,0.001,1,1.909,6,24.671]],["parent/4",[]],["name/5",[0,0.001,1,1.909,7,27.255]],["parent/5",[]],["name/6",[0,0.001,8,38.843,9,40.702]],["parent/6",[]],["name/7",[0,0.001,10,27.318]],["parent/7",[]],["name/8",[0,0.001]],["parent/8",[]],["name/9",[0,0.001,2,7.493,11,6.171,12,6.171]],["parent/9",[]],["name/10",[0,0.001,4,13.905,11,6.171,12,6.171]],["parent/10",[]],["name/11",[0,0.001,1,1.559,11,6.171,12,6.171]],["parent/11",[]],["name/12",[0,0.001,11,7.556,12,7.556]],["parent/12",[]],["name/13",[13,78.992]],["parent/13",[0,0,1,0.358,2,1.721]],["name/14",[14,78.992]],["parent/14",[0,0,1,0.358,15,5.965]],["name/15",[16,78.992]],["parent/15",[0,0,1,0.358,15,5.965]],["name/16",[17,78.992]],["parent/16",[0,0,1,0.358,15,5.965]],["name/17",[18,78.992]],["parent/17",[0,0,1,0.358,15,5.965]],["name/18",[19,78.992]],["parent/18",[0,0,1,0.358,15,5.965]],["name/19",[20,78.992]],["parent/19",[0,0,1,0.358,15,5.965]],["name/20",[21,78.992]],["parent/20",[0,0,1,0.358,15,5.965]],["name/21",[22,78.992]],["parent/21",[0,0,1,0.358,15,5.965]],["name/22",[23,78.992]],["parent/22",[0,0,1,0.358,15,5.965]],["name/23",[24,78.992]],["parent/23",[0,0,1,0.358,15,5.965]],["name/24",[25,78.992]],["parent/24",[0,0,1,0.358,15,5.965]],["name/25",[26,78.992]],["parent/25",[0,0,1,0.358,15,5.965]],["name/26",[27,78.992]],["parent/26",[0,0,1,0.358,2,1.721]],["name/27",[28,78.992]],["parent/27",[0,0,1,0.358,29,6.816]],["name/28",[30,78.992]],["parent/28",[0,0,1,0.358,29,6.816]],["name/29",[31,73.869]],["parent/29",[0,0,1,0.358,29,6.816]],["name/30",[32,53.271]],["parent/30",[0,0,1,0.358,29,6.816]],["name/31",[33,78.992]],["parent/31",[0,0,1,0.358,29,6.816]],["name/32",[34,78.992]],["parent/32",[0,0,1,0.358,2,1.721]],["name/33",[35,64.288]],["parent/33",[0,0,1,0.358,36,6.494]],["name/34",[37,62.853]],["parent/34",[0,0,1,0.358,36,6.494]],["name/35",[38,78.992]],["parent/35",[0,0,1,0.358,36,6.494]],["name/36",[39,73.869]],["parent/36",[0,0,1,0.358,36,6.494]],["name/37",[40,78.992]],["parent/37",[0,0,1,0.358,36,6.494]],["name/38",[41,78.992]],["parent/38",[0,0,1,0.358,36,6.494]],["name/39",[42,73.869]],["parent/39",[0,0,1,0.358,36,6.494]],["name/40",[43,78.992]],["parent/40",[0,0,1,0.358,2,1.721]],["name/41",[44,78.992]],["parent/41",[0,0,1,0.358,45,8.162]],["name/42",[46,78.992]],["parent/42",[0,0,1,0.358,2,1.721]],["name/43",[47,78.992]],["parent/43",[0,0,1,0.358,48,6.816]],["name/44",[49,28.994]],["parent/44",[0,0,1,0.358,48,6.816]],["name/45",[50,78.992]],["parent/45",[0,0,1,0.358,51,7.633]],["name/46",[52,78.992]],["parent/46",[0,0,1,0.358,51,7.633]],["name/47",[53,78.992]],["parent/47",[0,0,1,0.358,48,6.816]],["name/48",[54,78.992]],["parent/48",[0,0,1,0.358,48,6.816]],["name/49",[55,78.992]],["parent/49",[0,0,1,0.358,48,6.816]],["name/50",[56,78.992]],["parent/50",[0,0,1,0.358,2,1.721]],["name/51",[57,73.869]],["parent/51",[0,0,1,0.358,58,5.885]],["name/52",[59,60.482]],["parent/52",[0,0,1,0.358,58,5.885]],["name/53",[60,55.573]],["parent/53",[0,0,1,0.358,58,5.885]],["name/54",[61,65.963]],["parent/54",[0,0,1,0.358,58,5.885]],["name/55",[49,28.994]],["parent/55",[0,0,1,0.358,58,5.885]],["name/56",[62,67.975]],["parent/56",[0,0,1,0.358,58,5.885]],["name/57",[49,28.994]],["parent/57",[0,0,1,0.358,58,5.885]],["name/58",[63,65.963]],["parent/58",[0,0,1,0.358,58,5.885]],["name/59",[64,78.992]],["parent/59",[0,0,1,0.358,58,5.885]],["name/60",[65,78.992]],["parent/60",[0,0,1,0.358,58,5.885]],["name/61",[66,78.992]],["parent/61",[0,0,1,0.358,58,5.885]],["name/62",[67,78.992]],["parent/62",[0,0,1,0.358,58,5.885]],["name/63",[68,78.992]],["parent/63",[0,0,1,0.358,58,5.885]],["name/64",[69,78.992]],["parent/64",[0,0,1,0.358,2,1.721]],["name/65",[70,73.869]],["parent/65",[0,0,1,0.358,71,7.284]],["name/66",[72,78.992]],["parent/66",[0,0,1,0.358,71,7.284]],["name/67",[73,78.992]],["parent/67",[0,0,1,0.358,71,7.284]],["name/68",[74,78.992]],["parent/68",[0,0,1,0.358,2,1.721]],["name/69",[75,78.992]],["parent/69",[0,0,1,0.358,76,6.816]],["name/70",[77,78.992]],["parent/70",[0,0,1,0.358,76,6.816]],["name/71",[78,78.992]],["parent/71",[0,0,1,0.358,76,6.816]],["name/72",[79,78.992]],["parent/72",[0,0,1,0.358,76,6.816]],["name/73",[80,78.992]],["parent/73",[0,0,1,0.358,76,6.816]],["name/74",[81,78.992]],["parent/74",[0,0,1,0.358,2,1.721]],["name/75",[82,64.288]],["parent/75",[0,0,1,0.358,83,8.162]],["name/76",[84,78.992]],["parent/76",[0,0,1,0.358,2,1.721]],["name/77",[85,73.869]],["parent/77",[0,0,1,0.358,86,4.582]],["name/78",[87,73.869]],["parent/78",[0,0,1,0.358,86,4.582]],["name/79",[88,65.963]],["parent/79",[0,0,1,0.358,86,4.582]],["name/80",[89,73.869]],["parent/80",[0,0,1,0.358,86,4.582]],["name/81",[90,73.869]],["parent/81",[0,0,1,0.358,86,4.582]],["name/82",[91,73.869]],["parent/82",[0,0,1,0.358,86,4.582]],["name/83",[92,65.963]],["parent/83",[0,0,1,0.358,86,4.582]],["name/84",[93,67.975]],["parent/84",[0,0,1,0.358,86,4.582]],["name/85",[94,70.495]],["parent/85",[0,0,1,0.358,86,4.582]],["name/86",[95,73.869]],["parent/86",[0,0,1,0.358,86,4.582]],["name/87",[96,67.975]],["parent/87",[0,0,1,0.358,86,4.582]],["name/88",[97,73.869]],["parent/88",[0,0,1,0.358,86,4.582]],["name/89",[98,73.869]],["parent/89",[0,0,1,0.358,86,4.582]],["name/90",[99,65.963]],["parent/90",[0,0,1,0.358,86,4.582]],["name/91",[100,60.482]],["parent/91",[0,0,1,0.358,86,4.582]],["name/92",[101,73.869]],["parent/92",[0,0,1,0.358,86,4.582]],["name/93",[102,73.869]],["parent/93",[0,0,1,0.358,86,4.582]],["name/94",[103,73.869]],["parent/94",[0,0,1,0.358,86,4.582]],["name/95",[104,70.495]],["parent/95",[0,0,1,0.358,86,4.582]],["name/96",[105,73.869]],["parent/96",[0,0,1,0.358,86,4.582]],["name/97",[106,70.495]],["parent/97",[0,0,1,0.358,86,4.582]],["name/98",[107,70.495]],["parent/98",[0,0,1,0.358,86,4.582]],["name/99",[108,73.869]],["parent/99",[0,0,1,0.358,86,4.582]],["name/100",[109,73.869]],["parent/100",[0,0,1,0.358,86,4.582]],["name/101",[110,73.869]],["parent/101",[0,0,1,0.358,86,4.582]],["name/102",[111,65.963]],["parent/102",[0,0,1,0.358,86,4.582]],["name/103",[112,73.869]],["parent/103",[0,0,1,0.358,86,4.582]],["name/104",[113,73.869]],["parent/104",[0,0,1,0.358,86,4.582]],["name/105",[114,73.869]],["parent/105",[0,0,1,0.358,86,4.582]],["name/106",[115,73.869]],["parent/106",[0,0,1,0.358,86,4.582]],["name/107",[116,64.288]],["parent/107",[0,0,1,0.358,86,4.582]],["name/108",[117,73.869]],["parent/108",[0,0,1,0.358,86,4.582]],["name/109",[118,73.869]],["parent/109",[0,0,1,0.358,86,4.582]],["name/110",[119,73.869]],["parent/110",[0,0,1,0.358,86,4.582]],["name/111",[120,73.869]],["parent/111",[0,0,1,0.358,86,4.582]],["name/112",[121,70.495]],["parent/112",[0,0,1,0.358,86,4.582]],["name/113",[122,58.566]],["parent/113",[0,0,1,0.358,86,4.582]],["name/114",[123,61.598]],["parent/114",[0,0,1,0.358,86,4.582]],["name/115",[124,73.869]],["parent/115",[0,0,1,0.358,86,4.582]],["name/116",[125,73.869]],["parent/116",[0,0,1,0.358,86,4.582]],["name/117",[126,67.975]],["parent/117",[0,0,1,0.358,86,4.582]],["name/118",[127,70.495]],["parent/118",[0,0,1,0.358,86,4.582]],["name/119",[128,70.495]],["parent/119",[0,0,1,0.358,86,4.582]],["name/120",[129,64.288]],["parent/120",[0,0,1,0.358,86,4.582]],["name/121",[130,58.566]],["parent/121",[0,0,1,0.358,86,4.582]],["name/122",[131,73.869]],["parent/122",[0,0,1,0.358,86,4.582]],["name/123",[132,73.869]],["parent/123",[0,0,1,0.358,86,4.582]],["name/124",[133,78.992]],["parent/124",[0,0,1,0.358,2,1.721]],["name/125",[134,73.869]],["parent/125",[0,0,1,0.358,135,6.642]],["name/126",[136,73.869]],["parent/126",[0,0,1,0.358,135,6.642]],["name/127",[137,73.869]],["parent/127",[0,0,1,0.358,135,6.642]],["name/128",[138,73.869]],["parent/128",[0,0,1,0.358,135,6.642]],["name/129",[139,54.946]],["parent/129",[0,0,1,0.358,135,6.642]],["name/130",[140,73.869]],["parent/130",[0,0,1,0.358,135,6.642]],["name/131",[141,70.495]],["parent/131",[0,0,1,0.358,2,1.721]],["name/132",[142,73.869]],["parent/132",[0,0,1,0.358,143,4.827]],["name/133",[144,73.869]],["parent/133",[0,0,1,0.358,143,4.827]],["name/134",[145,73.869]],["parent/134",[0,0,1,0.358,143,4.827]],["name/135",[146,73.869]],["parent/135",[0,0,1,0.358,143,4.827]],["name/136",[147,67.975]],["parent/136",[0,0,1,0.358,143,4.827]],["name/137",[148,73.869]],["parent/137",[0,0,1,0.358,143,4.827]],["name/138",[149,70.495]],["parent/138",[0,0,1,0.358,143,4.827]],["name/139",[150,67.975]],["parent/139",[0,0,1,0.358,143,4.827]],["name/140",[151,73.869]],["parent/140",[0,0,1,0.358,143,4.827]],["name/141",[152,73.869]],["parent/141",[0,0,1,0.358,143,4.827]],["name/142",[153,60.482]],["parent/142",[0,0,1,0.358,143,4.827]],["name/143",[154,73.869]],["parent/143",[0,0,1,0.358,143,4.827]],["name/144",[155,65.963]],["parent/144",[0,0,1,0.358,143,4.827]],["name/145",[156,73.869]],["parent/145",[0,0,1,0.358,143,4.827]],["name/146",[157,65.963]],["parent/146",[0,0,1,0.358,143,4.827]],["name/147",[158,73.869]],["parent/147",[0,0,1,0.358,143,4.827]],["name/148",[159,73.869]],["parent/148",[0,0,1,0.358,143,4.827]],["name/149",[96,67.975]],["parent/149",[0,0,1,0.358,143,4.827]],["name/150",[160,73.869]],["parent/150",[0,0,1,0.358,143,4.827]],["name/151",[161,73.869]],["parent/151",[0,0,1,0.358,143,4.827]],["name/152",[162,73.869]],["parent/152",[0,0,1,0.358,143,4.827]],["name/153",[163,73.869]],["parent/153",[0,0,1,0.358,143,4.827]],["name/154",[164,73.869]],["parent/154",[0,0,1,0.358,143,4.827]],["name/155",[165,70.495]],["parent/155",[0,0,1,0.358,143,4.827]],["name/156",[166,73.869]],["parent/156",[0,0,1,0.358,143,4.827]],["name/157",[167,73.869]],["parent/157",[0,0,1,0.358,143,4.827]],["name/158",[168,73.869]],["parent/158",[0,0,1,0.358,143,4.827]],["name/159",[169,73.869]],["parent/159",[0,0,1,0.358,143,4.827]],["name/160",[170,73.869]],["parent/160",[0,0,1,0.358,143,4.827]],["name/161",[171,73.869]],["parent/161",[0,0,1,0.358,143,4.827]],["name/162",[172,73.869]],["parent/162",[0,0,1,0.358,143,4.827]],["name/163",[173,73.869]],["parent/163",[0,0,1,0.358,143,4.827]],["name/164",[174,67.975]],["parent/164",[0,0,1,0.358,143,4.827]],["name/165",[175,59.479]],["parent/165",[0,0,1,0.358,143,4.827]],["name/166",[176,73.869]],["parent/166",[0,0,1,0.358,143,4.827]],["name/167",[177,73.869]],["parent/167",[0,0,1,0.358,143,4.827]],["name/168",[147,67.975]],["parent/168",[0,0,1,0.358,143,4.827]],["name/169",[178,78.992]],["parent/169",[0,0,1,0.358,2,1.721]],["name/170",[179,60.482]],["parent/170",[0,0,1,0.358,180,6.365]],["name/171",[181,73.869]],["parent/171",[0,0,1,0.358,180,6.365]],["name/172",[182,60.482]],["parent/172",[0,0,1,0.358,180,6.365]],["name/173",[183,67.975]],["parent/173",[0,0,1,0.358,180,6.365]],["name/174",[184,67.975]],["parent/174",[0,0,1,0.358,180,6.365]],["name/175",[185,67.975]],["parent/175",[0,0,1,0.358,180,6.365]],["name/176",[186,67.975]],["parent/176",[0,0,1,0.358,180,6.365]],["name/177",[187,67.975]],["parent/177",[0,0,1,0.358,180,6.365]],["name/178",[188,78.992]],["parent/178",[0,0,1,0.358,2,1.721]],["name/179",[182,60.482]],["parent/179",[0,0,1,0.358,189,7.633]],["name/180",[190,59.479]],["parent/180",[0,0,1,0.358,189,7.633]],["name/181",[191,78.992]],["parent/181",[0,0,1,0.358,2,1.721]],["name/182",[192,67.975]],["parent/182",[0,0,1,0.358,193,7.633]],["name/183",[194,67.975]],["parent/183",[0,0,1,0.358,193,7.633]],["name/184",[195,78.992]],["parent/184",[0,0,1,0.358,2,1.721]],["name/185",[155,65.963]],["parent/185",[0,0,1,0.358,196,7.284]],["name/186",[197,73.869]],["parent/186",[0,0,1,0.358,196,7.284]],["name/187",[157,65.963]],["parent/187",[0,0,1,0.358,196,7.284]],["name/188",[198,70.495]],["parent/188",[0,0,1,0.358,2,1.721]],["name/189",[199,67.975]],["parent/189",[0,0,1,0.358,200,5.885]],["name/190",[92,65.963]],["parent/190",[0,0,1,0.358,200,5.885]],["name/191",[201,50.581]],["parent/191",[0,0,1,0.358,200,5.885]],["name/192",[202,70.495]],["parent/192",[0,0,1,0.358,200,5.885]],["name/193",[122,58.566]],["parent/193",[0,0,1,0.358,200,5.885]],["name/194",[203,59.479]],["parent/194",[0,0,1,0.358,200,5.885]],["name/195",[93,67.975]],["parent/195",[0,0,1,0.358,200,5.885]],["name/196",[204,73.869]],["parent/196",[0,0,1,0.358,200,5.885]],["name/197",[205,67.975]],["parent/197",[0,0,1,0.358,200,5.885]],["name/198",[206,73.869]],["parent/198",[0,0,1,0.358,200,5.885]],["name/199",[207,73.869]],["parent/199",[0,0,1,0.358,200,5.885]],["name/200",[208,67.975]],["parent/200",[0,0,1,0.358,200,5.885]],["name/201",[209,73.869]],["parent/201",[0,0,1,0.358,200,5.885]],["name/202",[210,78.992]],["parent/202",[0,0,1,0.358,2,1.721]],["name/203",[211,73.869]],["parent/203",[0,0,1,0.358,212,7.633]],["name/204",[213,73.869]],["parent/204",[0,0,1,0.358,212,7.633]],["name/205",[214,78.992]],["parent/205",[0,0,1,0.358,2,1.721]],["name/206",[215,67.975]],["parent/206",[0,0,1,0.358,216,6.642]],["name/207",[153,60.482]],["parent/207",[0,0,1,0.358,216,6.642]],["name/208",[217,73.869]],["parent/208",[0,0,1,0.358,216,6.642]],["name/209",[218,73.869]],["parent/209",[0,0,1,0.358,216,6.642]],["name/210",[219,73.869]],["parent/210",[0,0,1,0.358,216,6.642]],["name/211",[175,59.479]],["parent/211",[0,0,1,0.358,216,6.642]],["name/212",[220,78.992]],["parent/212",[0,0,1,0.358,2,1.721]],["name/213",[221,73.869]],["parent/213",[0,0,1,0.358,222,7.024]],["name/214",[223,73.869]],["parent/214",[0,0,1,0.358,222,7.024]],["name/215",[224,73.869]],["parent/215",[0,0,1,0.358,222,7.024]],["name/216",[225,73.869]],["parent/216",[0,0,1,0.358,222,7.024]],["name/217",[226,78.992]],["parent/217",[0,0,1,0.358,2,1.721]],["name/218",[227,73.869]],["parent/218",[0,0,1,0.358,228,7.633]],["name/219",[229,73.869]],["parent/219",[0,0,1,0.358,228,7.633]],["name/220",[230,64.288]],["parent/220",[0,0,1,0.358,2,1.721]],["name/221",[231,73.869]],["parent/221",[0,0,1,0.358,232,7.633]],["name/222",[233,73.869]],["parent/222",[0,0,1,0.358,232,7.633]],["name/223",[234,78.992]],["parent/223",[0,0,1,0.358,2,1.721]],["name/224",[235,73.869]],["parent/224",[0,0,1,0.358,236,7.024]],["name/225",[237,73.869]],["parent/225",[0,0,1,0.358,236,7.024]],["name/226",[238,73.869]],["parent/226",[0,0,1,0.358,236,7.024]],["name/227",[239,73.869]],["parent/227",[0,0,1,0.358,236,7.024]],["name/228",[240,70.495]],["parent/228",[0,0,1,0.358,2,1.721]],["name/229",[241,73.869]],["parent/229",[0,0,1,0.358,242,5.965]],["name/230",[243,73.869]],["parent/230",[0,0,1,0.358,242,5.965]],["name/231",[244,65.963]],["parent/231",[0,0,1,0.358,242,5.965]],["name/232",[150,67.975]],["parent/232",[0,0,1,0.358,242,5.965]],["name/233",[245,73.869]],["parent/233",[0,0,1,0.358,242,5.965]],["name/234",[246,73.869]],["parent/234",[0,0,1,0.358,242,5.965]],["name/235",[247,73.869]],["parent/235",[0,0,1,0.358,242,5.965]],["name/236",[248,73.869]],["parent/236",[0,0,1,0.358,242,5.965]],["name/237",[249,73.869]],["parent/237",[0,0,1,0.358,242,5.965]],["name/238",[250,73.869]],["parent/238",[0,0,1,0.358,242,5.965]],["name/239",[251,73.869]],["parent/239",[0,0,1,0.358,242,5.965]],["name/240",[252,73.869]],["parent/240",[0,0,1,0.358,242,5.965]],["name/241",[63,65.963]],["parent/241",[0,0,1,0.358,2,1.721]],["name/242",[253,73.869]],["parent/242",[0,0,1,0.358,254,5.041]],["name/243",[255,73.869]],["parent/243",[0,0,1,0.358,254,5.041]],["name/244",[256,73.869]],["parent/244",[0,0,1,0.358,254,5.041]],["name/245",[208,67.975]],["parent/245",[0,0,1,0.358,254,5.041]],["name/246",[257,73.869]],["parent/246",[0,0,1,0.358,254,5.041]],["name/247",[258,73.869]],["parent/247",[0,0,1,0.358,254,5.041]],["name/248",[259,73.869]],["parent/248",[0,0,1,0.358,254,5.041]],["name/249",[260,73.869]],["parent/249",[0,0,1,0.358,254,5.041]],["name/250",[261,73.869]],["parent/250",[0,0,1,0.358,254,5.041]],["name/251",[262,73.869]],["parent/251",[0,0,1,0.358,254,5.041]],["name/252",[263,73.869]],["parent/252",[0,0,1,0.358,254,5.041]],["name/253",[264,73.869]],["parent/253",[0,0,1,0.358,254,5.041]],["name/254",[265,73.869]],["parent/254",[0,0,1,0.358,254,5.041]],["name/255",[266,67.975]],["parent/255",[0,0,1,0.358,254,5.041]],["name/256",[267,73.869]],["parent/256",[0,0,1,0.358,254,5.041]],["name/257",[268,73.869]],["parent/257",[0,0,1,0.358,254,5.041]],["name/258",[269,62.853]],["parent/258",[0,0,1,0.358,254,5.041]],["name/259",[270,73.869]],["parent/259",[0,0,1,0.358,254,5.041]],["name/260",[271,73.869]],["parent/260",[0,0,1,0.358,254,5.041]],["name/261",[272,73.869]],["parent/261",[0,0,1,0.358,254,5.041]],["name/262",[273,73.869]],["parent/262",[0,0,1,0.358,254,5.041]],["name/263",[274,73.869]],["parent/263",[0,0,1,0.358,254,5.041]],["name/264",[275,73.869]],["parent/264",[0,0,1,0.358,254,5.041]],["name/265",[276,73.869]],["parent/265",[0,0,1,0.358,254,5.041]],["name/266",[277,73.869]],["parent/266",[0,0,1,0.358,254,5.041]],["name/267",[278,73.869]],["parent/267",[0,0,1,0.358,254,5.041]],["name/268",[279,67.975]],["parent/268",[0,0,1,0.358,254,5.041]],["name/269",[280,73.869]],["parent/269",[0,0,1,0.358,254,5.041]],["name/270",[281,73.869]],["parent/270",[0,0,1,0.358,254,5.041]],["name/271",[282,73.869]],["parent/271",[0,0,1,0.358,254,5.041]],["name/272",[283,78.992]],["parent/272",[0,0,1,0.358,2,1.721]],["name/273",[284,67.975]],["parent/273",[0,0,1,0.358,285,7.633]],["name/274",[286,67.975]],["parent/274",[0,0,1,0.358,285,7.633]],["name/275",[287,78.992]],["parent/275",[0,0,1,0.358,2,1.721]],["name/276",[288,73.869]],["parent/276",[0,0,1,0.358,289,6.816]],["name/277",[290,73.869]],["parent/277",[0,0,1,0.358,289,6.816]],["name/278",[291,73.869]],["parent/278",[0,0,1,0.358,289,6.816]],["name/279",[192,67.975]],["parent/279",[0,0,1,0.358,289,6.816]],["name/280",[292,73.869]],["parent/280",[0,0,1,0.358,289,6.816]],["name/281",[293,78.992]],["parent/281",[0,0,1,0.358,2,1.721]],["name/282",[284,67.975]],["parent/282",[0,0,1,0.358,294,7.633]],["name/283",[286,67.975]],["parent/283",[0,0,1,0.358,294,7.633]],["name/284",[295,78.992]],["parent/284",[0,0,1,0.358,2,1.721]],["name/285",[296,73.869]],["parent/285",[0,0,1,0.358,297,7.024]],["name/286",[298,73.869]],["parent/286",[0,0,1,0.358,297,7.024]],["name/287",[299,73.869]],["parent/287",[0,0,1,0.358,297,7.024]],["name/288",[300,73.869]],["parent/288",[0,0,1,0.358,297,7.024]],["name/289",[301,70.495]],["parent/289",[0,0,1,0.358,2,1.721]],["name/290",[302,64.288]],["parent/290",[0,0,1,0.358,303,7.284]],["name/291",[304,73.869]],["parent/291",[0,0,1,0.358,303,7.284]],["name/292",[305,73.869]],["parent/292",[0,0,1,0.358,303,7.284]],["name/293",[306,78.992]],["parent/293",[0,0,1,0.358,2,1.721]],["name/294",[215,67.975]],["parent/294",[0,0,1,0.358,307,7.024]],["name/295",[153,60.482]],["parent/295",[0,0,1,0.358,307,7.024]],["name/296",[308,73.869]],["parent/296",[0,0,1,0.358,307,7.024]],["name/297",[309,73.869]],["parent/297",[0,0,1,0.358,307,7.024]],["name/298",[310,78.992]],["parent/298",[0,0,1,0.358,2,1.721]],["name/299",[311,73.869]],["parent/299",[0,0,1,0.358,312,7.284]],["name/300",[313,73.869]],["parent/300",[0,0,1,0.358,312,7.284]],["name/301",[314,73.869]],["parent/301",[0,0,1,0.358,312,7.284]],["name/302",[315,78.992]],["parent/302",[0,0,1,0.358,2,1.721]],["name/303",[316,61.598]],["parent/303",[0,0,1,0.358,317,8.162]],["name/304",[318,78.992]],["parent/304",[0,0,1,0.358,2,1.721]],["name/305",[319,73.869]],["parent/305",[0,0,1,0.358,320,5.311]],["name/306",[321,73.869]],["parent/306",[0,0,1,0.358,320,5.311]],["name/307",[322,73.869]],["parent/307",[0,0,1,0.358,320,5.311]],["name/308",[323,73.869]],["parent/308",[0,0,1,0.358,320,5.311]],["name/309",[324,73.869]],["parent/309",[0,0,1,0.358,320,5.311]],["name/310",[325,73.869]],["parent/310",[0,0,1,0.358,320,5.311]],["name/311",[326,73.869]],["parent/311",[0,0,1,0.358,320,5.311]],["name/312",[327,73.869]],["parent/312",[0,0,1,0.358,320,5.311]],["name/313",[328,73.869]],["parent/313",[0,0,1,0.358,320,5.311]],["name/314",[329,73.869]],["parent/314",[0,0,1,0.358,320,5.311]],["name/315",[330,73.869]],["parent/315",[0,0,1,0.358,320,5.311]],["name/316",[331,73.869]],["parent/316",[0,0,1,0.358,320,5.311]],["name/317",[332,73.869]],["parent/317",[0,0,1,0.358,320,5.311]],["name/318",[333,73.869]],["parent/318",[0,0,1,0.358,320,5.311]],["name/319",[334,70.495]],["parent/319",[0,0,1,0.358,320,5.311]],["name/320",[335,70.495]],["parent/320",[0,0,1,0.358,320,5.311]],["name/321",[336,70.495]],["parent/321",[0,0,1,0.358,320,5.311]],["name/322",[337,73.869]],["parent/322",[0,0,1,0.358,320,5.311]],["name/323",[338,73.869]],["parent/323",[0,0,1,0.358,320,5.311]],["name/324",[339,73.869]],["parent/324",[0,0,1,0.358,320,5.311]],["name/325",[340,73.869]],["parent/325",[0,0,1,0.358,320,5.311]],["name/326",[341,73.869]],["parent/326",[0,0,1,0.358,320,5.311]],["name/327",[342,73.869]],["parent/327",[0,0,1,0.358,320,5.311]],["name/328",[343,78.992]],["parent/328",[0,0,1,0.358,2,1.721]],["name/329",[302,64.288]],["parent/329",[0,0,1,0.358,344,6.365]],["name/330",[345,73.869]],["parent/330",[0,0,1,0.358,344,6.365]],["name/331",[346,73.869]],["parent/331",[0,0,1,0.358,344,6.365]],["name/332",[347,73.869]],["parent/332",[0,0,1,0.358,344,6.365]],["name/333",[348,73.869]],["parent/333",[0,0,1,0.358,344,6.365]],["name/334",[349,73.869]],["parent/334",[0,0,1,0.358,344,6.365]],["name/335",[350,73.869]],["parent/335",[0,0,1,0.358,344,6.365]],["name/336",[351,73.869]],["parent/336",[0,0,1,0.358,344,6.365]],["name/337",[352,78.992]],["parent/337",[0,0,1,0.358,2,1.721]],["name/338",[353,73.869]],["parent/338",[0,0,1,0.358,354,7.284]],["name/339",[355,65.963]],["parent/339",[0,0,1,0.358,354,7.284]],["name/340",[356,73.869]],["parent/340",[0,0,1,0.358,354,7.284]],["name/341",[357,78.992]],["parent/341",[0,0,1,0.358,2,1.721]],["name/342",[302,64.288]],["parent/342",[0,0,1,0.358,358,5.885]],["name/343",[359,73.869]],["parent/343",[0,0,1,0.358,358,5.885]],["name/344",[360,73.869]],["parent/344",[0,0,1,0.358,358,5.885]],["name/345",[361,73.869]],["parent/345",[0,0,1,0.358,358,5.885]],["name/346",[362,73.869]],["parent/346",[0,0,1,0.358,358,5.885]],["name/347",[363,73.869]],["parent/347",[0,0,1,0.358,358,5.885]],["name/348",[364,73.869]],["parent/348",[0,0,1,0.358,358,5.885]],["name/349",[365,73.869]],["parent/349",[0,0,1,0.358,358,5.885]],["name/350",[366,73.869]],["parent/350",[0,0,1,0.358,358,5.885]],["name/351",[367,73.869]],["parent/351",[0,0,1,0.358,358,5.885]],["name/352",[368,73.869]],["parent/352",[0,0,1,0.358,358,5.885]],["name/353",[369,73.869]],["parent/353",[0,0,1,0.358,358,5.885]],["name/354",[370,73.869]],["parent/354",[0,0,1,0.358,358,5.885]],["name/355",[371,78.992]],["parent/355",[0,0,1,0.358,2,1.721]],["name/356",[372,73.869]],["parent/356",[0,0,1,0.358,373,6.365]],["name/357",[374,73.869]],["parent/357",[0,0,1,0.358,373,6.365]],["name/358",[375,73.869]],["parent/358",[0,0,1,0.358,373,6.365]],["name/359",[376,73.869]],["parent/359",[0,0,1,0.358,373,6.365]],["name/360",[377,73.869]],["parent/360",[0,0,1,0.358,373,6.365]],["name/361",[378,73.869]],["parent/361",[0,0,1,0.358,373,6.365]],["name/362",[379,67.975]],["parent/362",[0,0,1,0.358,373,6.365]],["name/363",[380,73.869]],["parent/363",[0,0,1,0.358,373,6.365]],["name/364",[381,70.495]],["parent/364",[0,0,1,0.358,2,1.721]],["name/365",[379,67.975]],["parent/365",[0,0,1,0.358,382,6.249]],["name/366",[383,73.869]],["parent/366",[0,0,1,0.358,382,6.249]],["name/367",[384,73.869]],["parent/367",[0,0,1,0.358,382,6.249]],["name/368",[385,73.869]],["parent/368",[0,0,1,0.358,382,6.249]],["name/369",[386,73.869]],["parent/369",[0,0,1,0.358,382,6.249]],["name/370",[387,73.869]],["parent/370",[0,0,1,0.358,382,6.249]],["name/371",[388,73.869]],["parent/371",[0,0,1,0.358,382,6.249]],["name/372",[389,73.869]],["parent/372",[0,0,1,0.358,382,6.249]],["name/373",[390,73.869]],["parent/373",[0,0,1,0.358,382,6.249]],["name/374",[391,73.869]],["parent/374",[0,0,1,0.358,2,1.721]],["name/375",[392,73.869]],["parent/375",[0,0,1,0.358,393,5.268]],["name/376",[394,73.869]],["parent/376",[0,0,1,0.358,393,5.268]],["name/377",[395,73.869]],["parent/377",[0,0,1,0.358,393,5.268]],["name/378",[396,73.869]],["parent/378",[0,0,1,0.358,393,5.268]],["name/379",[397,73.869]],["parent/379",[0,0,1,0.358,393,5.268]],["name/380",[398,73.869]],["parent/380",[0,0,1,0.358,393,5.268]],["name/381",[399,70.495]],["parent/381",[0,0,1,0.358,393,5.268]],["name/382",[174,67.975]],["parent/382",[0,0,1,0.358,393,5.268]],["name/383",[400,73.869]],["parent/383",[0,0,1,0.358,393,5.268]],["name/384",[401,73.869]],["parent/384",[0,0,1,0.358,393,5.268]],["name/385",[402,73.869]],["parent/385",[0,0,1,0.358,393,5.268]],["name/386",[403,73.869]],["parent/386",[0,0,1,0.358,393,5.268]],["name/387",[404,73.869]],["parent/387",[0,0,1,0.358,393,5.268]],["name/388",[405,73.869]],["parent/388",[0,0,1,0.358,393,5.268]],["name/389",[406,73.869]],["parent/389",[0,0,1,0.358,393,5.268]],["name/390",[240,70.495]],["parent/390",[0,0,1,0.358,393,5.268]],["name/391",[244,65.963]],["parent/391",[0,0,1,0.358,393,5.268]],["name/392",[407,73.869]],["parent/392",[0,0,1,0.358,393,5.268]],["name/393",[408,73.869]],["parent/393",[0,0,1,0.358,393,5.268]],["name/394",[409,73.869]],["parent/394",[0,0,1,0.358,393,5.268]],["name/395",[410,73.869]],["parent/395",[0,0,1,0.358,393,5.268]],["name/396",[411,73.869]],["parent/396",[0,0,1,0.358,393,5.268]],["name/397",[412,73.869]],["parent/397",[0,0,1,0.358,393,5.268]],["name/398",[413,73.869]],["parent/398",[0,0,1,0.358,393,5.268]],["name/399",[414,78.992]],["parent/399",[0,0,1,0.358,2,1.721]],["name/400",[415,67.975]],["parent/400",[0,0,1,0.358,416,7.284]],["name/401",[417,65.963]],["parent/401",[0,0,1,0.358,416,7.284]],["name/402",[269,62.853]],["parent/402",[0,0,1,0.358,416,7.284]],["name/403",[418,78.992]],["parent/403",[0,0,1,0.358,2,1.721]],["name/404",[419,67.975]],["parent/404",[0,0,1,0.358,420,5.356]],["name/405",[421,73.869]],["parent/405",[0,0,1,0.358,420,5.356]],["name/406",[422,73.869]],["parent/406",[0,0,1,0.358,420,5.356]],["name/407",[423,73.869]],["parent/407",[0,0,1,0.358,420,5.356]],["name/408",[424,73.869]],["parent/408",[0,0,1,0.358,420,5.356]],["name/409",[425,73.869]],["parent/409",[0,0,1,0.358,420,5.356]],["name/410",[426,73.869]],["parent/410",[0,0,1,0.358,420,5.356]],["name/411",[427,73.869]],["parent/411",[0,0,1,0.358,420,5.356]],["name/412",[428,73.869]],["parent/412",[0,0,1,0.358,420,5.356]],["name/413",[429,73.869]],["parent/413",[0,0,1,0.358,420,5.356]],["name/414",[430,73.869]],["parent/414",[0,0,1,0.358,420,5.356]],["name/415",[431,73.869]],["parent/415",[0,0,1,0.358,420,5.356]],["name/416",[432,73.869]],["parent/416",[0,0,1,0.358,420,5.356]],["name/417",[433,73.869]],["parent/417",[0,0,1,0.358,420,5.356]],["name/418",[434,73.869]],["parent/418",[0,0,1,0.358,420,5.356]],["name/419",[435,73.869]],["parent/419",[0,0,1,0.358,420,5.356]],["name/420",[436,73.869]],["parent/420",[0,0,1,0.358,420,5.356]],["name/421",[437,73.869]],["parent/421",[0,0,1,0.358,420,5.356]],["name/422",[438,73.869]],["parent/422",[0,0,1,0.358,420,5.356]],["name/423",[439,73.869]],["parent/423",[0,0,1,0.358,420,5.356]],["name/424",[440,73.869]],["parent/424",[0,0,1,0.358,420,5.356]],["name/425",[441,67.975]],["parent/425",[0,0,1,0.358,420,5.356]],["name/426",[442,78.992]],["parent/426",[0,0,1,0.358,2,1.721]],["name/427",[419,67.975]],["parent/427",[0,0,1,0.358,443,6.051]],["name/428",[444,73.869]],["parent/428",[0,0,1,0.358,443,6.051]],["name/429",[445,73.869]],["parent/429",[0,0,1,0.358,443,6.051]],["name/430",[446,73.869]],["parent/430",[0,0,1,0.358,443,6.051]],["name/431",[447,73.869]],["parent/431",[0,0,1,0.358,443,6.051]],["name/432",[448,73.869]],["parent/432",[0,0,1,0.358,443,6.051]],["name/433",[449,73.869]],["parent/433",[0,0,1,0.358,443,6.051]],["name/434",[450,73.869]],["parent/434",[0,0,1,0.358,443,6.051]],["name/435",[451,73.869]],["parent/435",[0,0,1,0.358,443,6.051]],["name/436",[452,73.869]],["parent/436",[0,0,1,0.358,443,6.051]],["name/437",[441,67.975]],["parent/437",[0,0,1,0.358,443,6.051]],["name/438",[453,78.992]],["parent/438",[0,0,1,0.358,2,1.721]],["name/439",[454,73.869]],["parent/439",[0,0,1,0.358,455,6.642]],["name/440",[456,73.869]],["parent/440",[0,0,1,0.358,455,6.642]],["name/441",[457,73.869]],["parent/441",[0,0,1,0.358,455,6.642]],["name/442",[458,73.869]],["parent/442",[0,0,1,0.358,455,6.642]],["name/443",[459,73.869]],["parent/443",[0,0,1,0.358,455,6.642]],["name/444",[460,73.869]],["parent/444",[0,0,1,0.358,455,6.642]],["name/445",[461,62.853]],["parent/445",[0,0,1,0.358,2,1.721]],["name/446",[415,67.975]],["parent/446",[0,0,1,0.358,462,7.024]],["name/447",[463,73.869]],["parent/447",[0,0,1,0.358,462,7.024]],["name/448",[464,73.869]],["parent/448",[0,0,1,0.358,462,7.024]],["name/449",[465,73.869]],["parent/449",[0,0,1,0.358,462,7.024]],["name/450",[466,78.992]],["parent/450",[0,0,1,0.358,2,1.721]],["name/451",[467,48.785]],["parent/451",[0,0,1,0.358,468,6.494]],["name/452",[469,64.288]],["parent/452",[0,0,1,0.358,468,6.494]],["name/453",[175,59.479]],["parent/453",[0,0,1,0.358,468,6.494]],["name/454",[470,70.495]],["parent/454",[0,0,1,0.358,468,6.494]],["name/455",[471,43.339]],["parent/455",[0,0,1,0.358,468,6.494]],["name/456",[472,43.339]],["parent/456",[0,0,1,0.358,468,6.494]],["name/457",[49,28.994]],["parent/457",[0,0,1,0.358,468,6.494]],["name/458",[473,78.992]],["parent/458",[0,0,1,0.358,2,1.721]],["name/459",[467,48.785]],["parent/459",[0,0,1,0.358,474,7.024]],["name/460",[469,64.288]],["parent/460",[0,0,1,0.358,474,7.024]],["name/461",[175,59.479]],["parent/461",[0,0,1,0.358,474,7.024]],["name/462",[470,70.495]],["parent/462",[0,0,1,0.358,474,7.024]],["name/463",[475,78.992]],["parent/463",[0,0,1,0.358,2,1.721]],["name/464",[467,48.785]],["parent/464",[0,0,1,0.358,476,6.494]],["name/465",[469,64.288]],["parent/465",[0,0,1,0.358,476,6.494]],["name/466",[175,59.479]],["parent/466",[0,0,1,0.358,476,6.494]],["name/467",[470,70.495]],["parent/467",[0,0,1,0.358,476,6.494]],["name/468",[471,43.339]],["parent/468",[0,0,1,0.358,476,6.494]],["name/469",[472,43.339]],["parent/469",[0,0,1,0.358,476,6.494]],["name/470",[49,28.994]],["parent/470",[0,0,1,0.358,476,6.494]],["name/471",[477,78.992]],["parent/471",[0,0,1,0.358,2,1.721]],["name/472",[471,43.339]],["parent/472",[0,0,1,0.358,478,7.284]],["name/473",[472,43.339]],["parent/473",[0,0,1,0.358,478,7.284]],["name/474",[49,28.994]],["parent/474",[0,0,1,0.358,478,7.284]],["name/475",[479,78.992]],["parent/475",[0,0,1,0.358,2,1.721]],["name/476",[471,43.339]],["parent/476",[0,0,1,0.358,480,7.284]],["name/477",[472,43.339]],["parent/477",[0,0,1,0.358,480,7.284]],["name/478",[49,28.994]],["parent/478",[0,0,1,0.358,480,7.284]],["name/479",[481,78.992]],["parent/479",[0,0,1,0.358,2,1.721]],["name/480",[471,43.339]],["parent/480",[0,0,1,0.358,482,7.284]],["name/481",[472,43.339]],["parent/481",[0,0,1,0.358,482,7.284]],["name/482",[49,28.994]],["parent/482",[0,0,1,0.358,482,7.284]],["name/483",[483,78.992]],["parent/483",[0,0,1,0.358,2,1.721]],["name/484",[484,62.853]],["parent/484",[0,0,1,0.358,485,6.146]],["name/485",[486,60.482]],["parent/485",[0,0,1,0.358,485,6.146]],["name/486",[487,64.288]],["parent/486",[0,0,1,0.358,485,6.146]],["name/487",[488,64.288]],["parent/487",[0,0,1,0.358,485,6.146]],["name/488",[489,64.288]],["parent/488",[0,0,1,0.358,485,6.146]],["name/489",[490,64.288]],["parent/489",[0,0,1,0.358,485,6.146]],["name/490",[461,62.853]],["parent/490",[0,0,1,0.358,485,6.146]],["name/491",[471,43.339]],["parent/491",[0,0,1,0.358,485,6.146]],["name/492",[472,43.339]],["parent/492",[0,0,1,0.358,485,6.146]],["name/493",[49,28.994]],["parent/493",[0,0,1,0.358,485,6.146]],["name/494",[491,78.992]],["parent/494",[0,0,1,0.358,2,1.721]],["name/495",[484,62.853]],["parent/495",[0,0,1,0.358,492,6.494]],["name/496",[486,60.482]],["parent/496",[0,0,1,0.358,492,6.494]],["name/497",[487,64.288]],["parent/497",[0,0,1,0.358,492,6.494]],["name/498",[488,64.288]],["parent/498",[0,0,1,0.358,492,6.494]],["name/499",[489,64.288]],["parent/499",[0,0,1,0.358,492,6.494]],["name/500",[490,64.288]],["parent/500",[0,0,1,0.358,492,6.494]],["name/501",[461,62.853]],["parent/501",[0,0,1,0.358,492,6.494]],["name/502",[493,78.992]],["parent/502",[0,0,1,0.358,2,1.721]],["name/503",[484,62.853]],["parent/503",[0,0,1,0.358,494,6.146]],["name/504",[486,60.482]],["parent/504",[0,0,1,0.358,494,6.146]],["name/505",[487,64.288]],["parent/505",[0,0,1,0.358,494,6.146]],["name/506",[488,64.288]],["parent/506",[0,0,1,0.358,494,6.146]],["name/507",[489,64.288]],["parent/507",[0,0,1,0.358,494,6.146]],["name/508",[490,64.288]],["parent/508",[0,0,1,0.358,494,6.146]],["name/509",[461,62.853]],["parent/509",[0,0,1,0.358,494,6.146]],["name/510",[471,43.339]],["parent/510",[0,0,1,0.358,494,6.146]],["name/511",[472,43.339]],["parent/511",[0,0,1,0.358,494,6.146]],["name/512",[49,28.994]],["parent/512",[0,0,1,0.358,494,6.146]],["name/513",[495,78.992]],["parent/513",[0,0,1,0.358,2,1.721]],["name/514",[496,70.495]],["parent/514",[0,0,1,0.358,497,7.024]],["name/515",[471,43.339]],["parent/515",[0,0,1,0.358,497,7.024]],["name/516",[472,43.339]],["parent/516",[0,0,1,0.358,497,7.024]],["name/517",[49,28.994]],["parent/517",[0,0,1,0.358,497,7.024]],["name/518",[498,78.992]],["parent/518",[0,0,1,0.358,2,1.721]],["name/519",[496,70.495]],["parent/519",[0,0,1,0.358,499,8.162]],["name/520",[500,78.992]],["parent/520",[0,0,1,0.358,2,1.721]],["name/521",[496,70.495]],["parent/521",[0,0,1,0.358,501,7.024]],["name/522",[471,43.339]],["parent/522",[0,0,1,0.358,501,7.024]],["name/523",[472,43.339]],["parent/523",[0,0,1,0.358,501,7.024]],["name/524",[49,28.994]],["parent/524",[0,0,1,0.358,501,7.024]],["name/525",[502,78.992]],["parent/525",[0,0,1,0.358,2,1.721]],["name/526",[503,70.495]],["parent/526",[0,0,1,0.358,504,6.642]],["name/527",[505,70.495]],["parent/527",[0,0,1,0.358,504,6.642]],["name/528",[506,70.495]],["parent/528",[0,0,1,0.358,504,6.642]],["name/529",[471,43.339]],["parent/529",[0,0,1,0.358,504,6.642]],["name/530",[472,43.339]],["parent/530",[0,0,1,0.358,504,6.642]],["name/531",[49,28.994]],["parent/531",[0,0,1,0.358,504,6.642]],["name/532",[507,78.992]],["parent/532",[0,0,1,0.358,2,1.721]],["name/533",[503,70.495]],["parent/533",[0,0,1,0.358,508,7.284]],["name/534",[505,70.495]],["parent/534",[0,0,1,0.358,508,7.284]],["name/535",[506,70.495]],["parent/535",[0,0,1,0.358,508,7.284]],["name/536",[509,78.992]],["parent/536",[0,0,1,0.358,2,1.721]],["name/537",[503,70.495]],["parent/537",[0,0,1,0.358,510,6.642]],["name/538",[505,70.495]],["parent/538",[0,0,1,0.358,510,6.642]],["name/539",[506,70.495]],["parent/539",[0,0,1,0.358,510,6.642]],["name/540",[471,43.339]],["parent/540",[0,0,1,0.358,510,6.642]],["name/541",[472,43.339]],["parent/541",[0,0,1,0.358,510,6.642]],["name/542",[49,28.994]],["parent/542",[0,0,1,0.358,510,6.642]],["name/543",[511,78.992]],["parent/543",[0,0,1,0.358,2,1.721]],["name/544",[190,59.479]],["parent/544",[0,0,1,0.358,512,6.494]],["name/545",[513,70.495]],["parent/545",[0,0,1,0.358,512,6.494]],["name/546",[514,70.495]],["parent/546",[0,0,1,0.358,512,6.494]],["name/547",[515,70.495]],["parent/547",[0,0,1,0.358,512,6.494]],["name/548",[471,43.339]],["parent/548",[0,0,1,0.358,512,6.494]],["name/549",[472,43.339]],["parent/549",[0,0,1,0.358,512,6.494]],["name/550",[49,28.994]],["parent/550",[0,0,1,0.358,512,6.494]],["name/551",[516,78.992]],["parent/551",[0,0,1,0.358,2,1.721]],["name/552",[190,59.479]],["parent/552",[0,0,1,0.358,517,7.024]],["name/553",[513,70.495]],["parent/553",[0,0,1,0.358,517,7.024]],["name/554",[514,70.495]],["parent/554",[0,0,1,0.358,517,7.024]],["name/555",[515,70.495]],["parent/555",[0,0,1,0.358,517,7.024]],["name/556",[518,78.992]],["parent/556",[0,0,1,0.358,2,1.721]],["name/557",[190,59.479]],["parent/557",[0,0,1,0.358,519,6.494]],["name/558",[513,70.495]],["parent/558",[0,0,1,0.358,519,6.494]],["name/559",[514,70.495]],["parent/559",[0,0,1,0.358,519,6.494]],["name/560",[515,70.495]],["parent/560",[0,0,1,0.358,519,6.494]],["name/561",[471,43.339]],["parent/561",[0,0,1,0.358,519,6.494]],["name/562",[472,43.339]],["parent/562",[0,0,1,0.358,519,6.494]],["name/563",[49,28.994]],["parent/563",[0,0,1,0.358,519,6.494]],["name/564",[520,78.992]],["parent/564",[0,0,1,0.358,2,1.721]],["name/565",[471,43.339]],["parent/565",[0,0,1,0.358,521,7.284]],["name/566",[472,43.339]],["parent/566",[0,0,1,0.358,521,7.284]],["name/567",[49,28.994]],["parent/567",[0,0,1,0.358,521,7.284]],["name/568",[522,78.992]],["parent/568",[0,0,1,0.358,2,1.721]],["name/569",[471,43.339]],["parent/569",[0,0,1,0.358,523,7.284]],["name/570",[472,43.339]],["parent/570",[0,0,1,0.358,523,7.284]],["name/571",[49,28.994]],["parent/571",[0,0,1,0.358,523,7.284]],["name/572",[524,78.992]],["parent/572",[0,0,1,0.358,2,1.721]],["name/573",[525,67.975]],["parent/573",[0,0,1,0.358,526,6.249]],["name/574",[527,60.482]],["parent/574",[0,0,1,0.358,526,6.249]],["name/575",[467,48.785]],["parent/575",[0,0,1,0.358,526,6.249]],["name/576",[528,67.975]],["parent/576",[0,0,1,0.358,526,6.249]],["name/577",[529,70.495]],["parent/577",[0,0,1,0.358,526,6.249]],["name/578",[530,70.495]],["parent/578",[0,0,1,0.358,526,6.249]],["name/579",[471,43.339]],["parent/579",[0,0,1,0.358,526,6.249]],["name/580",[472,43.339]],["parent/580",[0,0,1,0.358,526,6.249]],["name/581",[49,28.994]],["parent/581",[0,0,1,0.358,526,6.249]],["name/582",[531,78.992]],["parent/582",[0,0,1,0.358,2,1.721]],["name/583",[525,67.975]],["parent/583",[0,0,1,0.358,532,6.642]],["name/584",[527,60.482]],["parent/584",[0,0,1,0.358,532,6.642]],["name/585",[467,48.785]],["parent/585",[0,0,1,0.358,532,6.642]],["name/586",[528,67.975]],["parent/586",[0,0,1,0.358,532,6.642]],["name/587",[529,70.495]],["parent/587",[0,0,1,0.358,532,6.642]],["name/588",[530,70.495]],["parent/588",[0,0,1,0.358,532,6.642]],["name/589",[533,78.992]],["parent/589",[0,0,1,0.358,2,1.721]],["name/590",[525,67.975]],["parent/590",[0,0,1,0.358,534,6.249]],["name/591",[527,60.482]],["parent/591",[0,0,1,0.358,534,6.249]],["name/592",[467,48.785]],["parent/592",[0,0,1,0.358,534,6.249]],["name/593",[528,67.975]],["parent/593",[0,0,1,0.358,534,6.249]],["name/594",[529,70.495]],["parent/594",[0,0,1,0.358,534,6.249]],["name/595",[530,70.495]],["parent/595",[0,0,1,0.358,534,6.249]],["name/596",[471,43.339]],["parent/596",[0,0,1,0.358,534,6.249]],["name/597",[472,43.339]],["parent/597",[0,0,1,0.358,534,6.249]],["name/598",[49,28.994]],["parent/598",[0,0,1,0.358,534,6.249]],["name/599",[535,78.992]],["parent/599",[0,0,1,0.358,2,1.721]],["name/600",[469,64.288]],["parent/600",[0,0,1,0.358,536,7.024]],["name/601",[471,43.339]],["parent/601",[0,0,1,0.358,536,7.024]],["name/602",[472,43.339]],["parent/602",[0,0,1,0.358,536,7.024]],["name/603",[49,28.994]],["parent/603",[0,0,1,0.358,536,7.024]],["name/604",[537,78.992]],["parent/604",[0,0,1,0.358,2,1.721]],["name/605",[469,64.288]],["parent/605",[0,0,1,0.358,538,8.162]],["name/606",[539,78.992]],["parent/606",[0,0,1,0.358,2,1.721]],["name/607",[469,64.288]],["parent/607",[0,0,1,0.358,540,7.024]],["name/608",[471,43.339]],["parent/608",[0,0,1,0.358,540,7.024]],["name/609",[472,43.339]],["parent/609",[0,0,1,0.358,540,7.024]],["name/610",[49,28.994]],["parent/610",[0,0,1,0.358,540,7.024]],["name/611",[541,78.992]],["parent/611",[0,0,1,0.358,2,1.721]],["name/612",[542,70.495]],["parent/612",[0,0,1,0.358,543,6.642]],["name/613",[544,73.869]],["parent/613",[0,0,1,0.358,543,6.642]],["name/614",[49,28.994]],["parent/614",[0,0,1,0.358,543,6.642]],["name/615",[471,43.339]],["parent/615",[0,0,1,0.358,543,6.642]],["name/616",[472,43.339]],["parent/616",[0,0,1,0.358,543,6.642]],["name/617",[49,28.994]],["parent/617",[0,0,1,0.358,543,6.642]],["name/618",[545,78.992]],["parent/618",[0,0,1,0.358,2,1.721]],["name/619",[542,70.495]],["parent/619",[0,0,1,0.358,546,6.642]],["name/620",[544,73.869]],["parent/620",[0,0,1,0.358,546,6.642]],["name/621",[49,28.994]],["parent/621",[0,0,1,0.358,546,6.642]],["name/622",[471,43.339]],["parent/622",[0,0,1,0.358,546,6.642]],["name/623",[472,43.339]],["parent/623",[0,0,1,0.358,546,6.642]],["name/624",[49,28.994]],["parent/624",[0,0,1,0.358,546,6.642]],["name/625",[547,78.992]],["parent/625",[0,0,1,0.358,2,1.721]],["name/626",[548,78.992]],["parent/626",[0,0,1,0.358,2,1.721]],["name/627",[467,48.785]],["parent/627",[0,0,1,0.358,549,7.024]],["name/628",[471,43.339]],["parent/628",[0,0,1,0.358,549,7.024]],["name/629",[472,43.339]],["parent/629",[0,0,1,0.358,549,7.024]],["name/630",[49,28.994]],["parent/630",[0,0,1,0.358,549,7.024]],["name/631",[550,78.992]],["parent/631",[0,0,1,0.358,2,1.721]],["name/632",[467,48.785]],["parent/632",[0,0,1,0.358,551,7.024]],["name/633",[471,43.339]],["parent/633",[0,0,1,0.358,551,7.024]],["name/634",[472,43.339]],["parent/634",[0,0,1,0.358,551,7.024]],["name/635",[49,28.994]],["parent/635",[0,0,1,0.358,551,7.024]],["name/636",[552,78.992]],["parent/636",[0,0,1,0.358,2,1.721]],["name/637",[553,65.963]],["parent/637",[0,0,1,0.358,554,6.816]],["name/638",[467,48.785]],["parent/638",[0,0,1,0.358,554,6.816]],["name/639",[471,43.339]],["parent/639",[0,0,1,0.358,554,6.816]],["name/640",[472,43.339]],["parent/640",[0,0,1,0.358,554,6.816]],["name/641",[49,28.994]],["parent/641",[0,0,1,0.358,554,6.816]],["name/642",[555,78.992]],["parent/642",[0,0,1,0.358,2,1.721]],["name/643",[556,78.992]],["parent/643",[0,0,1,0.358,2,1.721]],["name/644",[557,70.495]],["parent/644",[0,0,1,0.358,558,6.816]],["name/645",[467,48.785]],["parent/645",[0,0,1,0.358,558,6.816]],["name/646",[471,43.339]],["parent/646",[0,0,1,0.358,558,6.816]],["name/647",[472,43.339]],["parent/647",[0,0,1,0.358,558,6.816]],["name/648",[49,28.994]],["parent/648",[0,0,1,0.358,558,6.816]],["name/649",[559,78.992]],["parent/649",[0,0,1,0.358,2,1.721]],["name/650",[467,48.785]],["parent/650",[0,0,1,0.358,560,7.024]],["name/651",[471,43.339]],["parent/651",[0,0,1,0.358,560,7.024]],["name/652",[472,43.339]],["parent/652",[0,0,1,0.358,560,7.024]],["name/653",[49,28.994]],["parent/653",[0,0,1,0.358,560,7.024]],["name/654",[561,78.992]],["parent/654",[0,0,1,0.358,2,1.721]],["name/655",[467,48.785]],["parent/655",[0,0,1,0.358,562,7.024]],["name/656",[471,43.339]],["parent/656",[0,0,1,0.358,562,7.024]],["name/657",[472,43.339]],["parent/657",[0,0,1,0.358,562,7.024]],["name/658",[49,28.994]],["parent/658",[0,0,1,0.358,562,7.024]],["name/659",[563,78.992]],["parent/659",[0,0,1,0.358,2,1.721]],["name/660",[564,78.992]],["parent/660",[0,0,1,0.358,2,1.721]],["name/661",[467,48.785]],["parent/661",[0,0,1,0.358,565,7.024]],["name/662",[471,43.339]],["parent/662",[0,0,1,0.358,565,7.024]],["name/663",[472,43.339]],["parent/663",[0,0,1,0.358,565,7.024]],["name/664",[49,28.994]],["parent/664",[0,0,1,0.358,565,7.024]],["name/665",[566,78.992]],["parent/665",[0,0,1,0.358,2,1.721]],["name/666",[567,70.495]],["parent/666",[0,0,1,0.358,568,6.816]],["name/667",[467,48.785]],["parent/667",[0,0,1,0.358,568,6.816]],["name/668",[471,43.339]],["parent/668",[0,0,1,0.358,568,6.816]],["name/669",[472,43.339]],["parent/669",[0,0,1,0.358,568,6.816]],["name/670",[49,28.994]],["parent/670",[0,0,1,0.358,568,6.816]],["name/671",[569,78.992]],["parent/671",[0,0,1,0.358,2,1.721]],["name/672",[467,48.785]],["parent/672",[0,0,1,0.358,570,7.024]],["name/673",[471,43.339]],["parent/673",[0,0,1,0.358,570,7.024]],["name/674",[472,43.339]],["parent/674",[0,0,1,0.358,570,7.024]],["name/675",[49,28.994]],["parent/675",[0,0,1,0.358,570,7.024]],["name/676",[571,78.992]],["parent/676",[0,0,1,0.358,2,1.721]],["name/677",[37,62.853]],["parent/677",[0,0,1,0.358,572,6.816]],["name/678",[467,48.785]],["parent/678",[0,0,1,0.358,572,6.816]],["name/679",[471,43.339]],["parent/679",[0,0,1,0.358,572,6.816]],["name/680",[472,43.339]],["parent/680",[0,0,1,0.358,572,6.816]],["name/681",[49,28.994]],["parent/681",[0,0,1,0.358,572,6.816]],["name/682",[573,78.992]],["parent/682",[0,0,1,0.358,2,1.721]],["name/683",[574,78.992]],["parent/683",[0,0,1,0.358,2,1.721]],["name/684",[467,48.785]],["parent/684",[0,0,1,0.358,575,7.024]],["name/685",[471,43.339]],["parent/685",[0,0,1,0.358,575,7.024]],["name/686",[472,43.339]],["parent/686",[0,0,1,0.358,575,7.024]],["name/687",[49,28.994]],["parent/687",[0,0,1,0.358,575,7.024]],["name/688",[576,78.992]],["parent/688",[0,0,1,0.358,2,1.721]],["name/689",[553,65.963]],["parent/689",[0,0,1,0.358,577,6.816]],["name/690",[467,48.785]],["parent/690",[0,0,1,0.358,577,6.816]],["name/691",[471,43.339]],["parent/691",[0,0,1,0.358,577,6.816]],["name/692",[472,43.339]],["parent/692",[0,0,1,0.358,577,6.816]],["name/693",[49,28.994]],["parent/693",[0,0,1,0.358,577,6.816]],["name/694",[578,78.992]],["parent/694",[0,0,1,0.358,2,1.721]],["name/695",[579,78.992]],["parent/695",[0,0,1,0.358,2,1.721]],["name/696",[557,70.495]],["parent/696",[0,0,1,0.358,580,6.816]],["name/697",[467,48.785]],["parent/697",[0,0,1,0.358,580,6.816]],["name/698",[471,43.339]],["parent/698",[0,0,1,0.358,580,6.816]],["name/699",[472,43.339]],["parent/699",[0,0,1,0.358,580,6.816]],["name/700",[49,28.994]],["parent/700",[0,0,1,0.358,580,6.816]],["name/701",[581,78.992]],["parent/701",[0,0,1,0.358,2,1.721]],["name/702",[467,48.785]],["parent/702",[0,0,1,0.358,582,7.024]],["name/703",[471,43.339]],["parent/703",[0,0,1,0.358,582,7.024]],["name/704",[472,43.339]],["parent/704",[0,0,1,0.358,582,7.024]],["name/705",[49,28.994]],["parent/705",[0,0,1,0.358,582,7.024]],["name/706",[583,78.992]],["parent/706",[0,0,1,0.358,2,1.721]],["name/707",[467,48.785]],["parent/707",[0,0,1,0.358,584,7.024]],["name/708",[471,43.339]],["parent/708",[0,0,1,0.358,584,7.024]],["name/709",[472,43.339]],["parent/709",[0,0,1,0.358,584,7.024]],["name/710",[49,28.994]],["parent/710",[0,0,1,0.358,584,7.024]],["name/711",[585,78.992]],["parent/711",[0,0,1,0.358,2,1.721]],["name/712",[586,78.992]],["parent/712",[0,0,1,0.358,2,1.721]],["name/713",[467,48.785]],["parent/713",[0,0,1,0.358,587,7.024]],["name/714",[471,43.339]],["parent/714",[0,0,1,0.358,587,7.024]],["name/715",[472,43.339]],["parent/715",[0,0,1,0.358,587,7.024]],["name/716",[49,28.994]],["parent/716",[0,0,1,0.358,587,7.024]],["name/717",[588,78.992]],["parent/717",[0,0,1,0.358,2,1.721]],["name/718",[567,70.495]],["parent/718",[0,0,1,0.358,589,6.816]],["name/719",[467,48.785]],["parent/719",[0,0,1,0.358,589,6.816]],["name/720",[471,43.339]],["parent/720",[0,0,1,0.358,589,6.816]],["name/721",[472,43.339]],["parent/721",[0,0,1,0.358,589,6.816]],["name/722",[49,28.994]],["parent/722",[0,0,1,0.358,589,6.816]],["name/723",[590,78.992]],["parent/723",[0,0,1,0.358,2,1.721]],["name/724",[467,48.785]],["parent/724",[0,0,1,0.358,591,7.024]],["name/725",[471,43.339]],["parent/725",[0,0,1,0.358,591,7.024]],["name/726",[472,43.339]],["parent/726",[0,0,1,0.358,591,7.024]],["name/727",[49,28.994]],["parent/727",[0,0,1,0.358,591,7.024]],["name/728",[592,78.992]],["parent/728",[0,0,1,0.358,2,1.721]],["name/729",[37,62.853]],["parent/729",[0,0,1,0.358,593,6.816]],["name/730",[467,48.785]],["parent/730",[0,0,1,0.358,593,6.816]],["name/731",[471,43.339]],["parent/731",[0,0,1,0.358,593,6.816]],["name/732",[472,43.339]],["parent/732",[0,0,1,0.358,593,6.816]],["name/733",[49,28.994]],["parent/733",[0,0,1,0.358,593,6.816]],["name/734",[594,78.992]],["parent/734",[0,0,1,0.358,2,1.721]],["name/735",[37,62.853]],["parent/735",[0,0,1,0.358,595,8.162]],["name/736",[596,78.992]],["parent/736",[0,0,1,0.358,2,1.721]],["name/737",[567,70.495]],["parent/737",[0,0,1,0.358,597,8.162]],["name/738",[598,78.992]],["parent/738",[0,0,1,0.358,2,1.721]],["name/739",[553,65.963]],["parent/739",[0,0,1,0.358,599,8.162]],["name/740",[600,78.992]],["parent/740",[0,0,1,0.358,2,1.721]],["name/741",[557,70.495]],["parent/741",[0,0,1,0.358,601,8.162]],["name/742",[602,78.992]],["parent/742",[0,0,1,0.358,2,1.721]],["name/743",[603,78.992]],["parent/743",[0,0,1,0.358,2,1.721]],["name/744",[604,78.992]],["parent/744",[0,0,1,0.358,2,1.721]],["name/745",[605,78.992]],["parent/745",[0,0,1,0.358,2,1.721]],["name/746",[606,78.992]],["parent/746",[0,0,1,0.358,2,1.721]],["name/747",[607,78.992]],["parent/747",[0,0,1,0.358,2,1.721]],["name/748",[486,60.482]],["parent/748",[0,0,1,0.358,608,6.816]],["name/749",[609,67.975]],["parent/749",[0,0,1,0.358,608,6.816]],["name/750",[471,43.339]],["parent/750",[0,0,1,0.358,608,6.816]],["name/751",[472,43.339]],["parent/751",[0,0,1,0.358,608,6.816]],["name/752",[49,28.994]],["parent/752",[0,0,1,0.358,608,6.816]],["name/753",[610,78.992]],["parent/753",[0,0,1,0.358,2,1.721]],["name/754",[471,43.339]],["parent/754",[0,0,1,0.358,611,7.284]],["name/755",[472,43.339]],["parent/755",[0,0,1,0.358,611,7.284]],["name/756",[49,28.994]],["parent/756",[0,0,1,0.358,611,7.284]],["name/757",[612,78.992]],["parent/757",[0,0,1,0.358,2,1.721]],["name/758",[486,60.482]],["parent/758",[0,0,1,0.358,613,7.633]],["name/759",[609,67.975]],["parent/759",[0,0,1,0.358,613,7.633]],["name/760",[614,78.992]],["parent/760",[0,0,1,0.358,2,1.721]],["name/761",[486,60.482]],["parent/761",[0,0,1,0.358,615,6.816]],["name/762",[609,67.975]],["parent/762",[0,0,1,0.358,615,6.816]],["name/763",[471,43.339]],["parent/763",[0,0,1,0.358,615,6.816]],["name/764",[472,43.339]],["parent/764",[0,0,1,0.358,615,6.816]],["name/765",[49,28.994]],["parent/765",[0,0,1,0.358,615,6.816]],["name/766",[616,78.992]],["parent/766",[0,0,1,0.358,2,1.721]],["name/767",[471,43.339]],["parent/767",[0,0,1,0.358,617,7.284]],["name/768",[472,43.339]],["parent/768",[0,0,1,0.358,617,7.284]],["name/769",[49,28.994]],["parent/769",[0,0,1,0.358,617,7.284]],["name/770",[618,78.992]],["parent/770",[0,0,1,0.358,2,1.721]],["name/771",[619,70.495]],["parent/771",[0,0,1,0.358,620,6.816]],["name/772",[621,70.495]],["parent/772",[0,0,1,0.358,620,6.816]],["name/773",[471,43.339]],["parent/773",[0,0,1,0.358,620,6.816]],["name/774",[472,43.339]],["parent/774",[0,0,1,0.358,620,6.816]],["name/775",[49,28.994]],["parent/775",[0,0,1,0.358,620,6.816]],["name/776",[622,78.992]],["parent/776",[0,0,1,0.358,2,1.721]],["name/777",[619,70.495]],["parent/777",[0,0,1,0.358,623,7.633]],["name/778",[621,70.495]],["parent/778",[0,0,1,0.358,623,7.633]],["name/779",[624,78.992]],["parent/779",[0,0,1,0.358,2,1.721]],["name/780",[619,70.495]],["parent/780",[0,0,1,0.358,625,6.816]],["name/781",[621,70.495]],["parent/781",[0,0,1,0.358,625,6.816]],["name/782",[471,43.339]],["parent/782",[0,0,1,0.358,625,6.816]],["name/783",[472,43.339]],["parent/783",[0,0,1,0.358,625,6.816]],["name/784",[49,28.994]],["parent/784",[0,0,1,0.358,625,6.816]],["name/785",[626,78.992]],["parent/785",[0,0,1,0.358,2,1.721]],["name/786",[627,67.975]],["parent/786",[0,0,1,0.358,628,7.024]],["name/787",[471,43.339]],["parent/787",[0,0,1,0.358,628,7.024]],["name/788",[472,43.339]],["parent/788",[0,0,1,0.358,628,7.024]],["name/789",[49,28.994]],["parent/789",[0,0,1,0.358,628,7.024]],["name/790",[629,78.992]],["parent/790",[0,0,1,0.358,2,1.721]],["name/791",[627,67.975]],["parent/791",[0,0,1,0.358,630,8.162]],["name/792",[631,78.992]],["parent/792",[0,0,1,0.358,2,1.721]],["name/793",[627,67.975]],["parent/793",[0,0,1,0.358,632,7.024]],["name/794",[471,43.339]],["parent/794",[0,0,1,0.358,632,7.024]],["name/795",[472,43.339]],["parent/795",[0,0,1,0.358,632,7.024]],["name/796",[49,28.994]],["parent/796",[0,0,1,0.358,632,7.024]],["name/797",[633,78.992]],["parent/797",[0,0,1,0.358,2,1.721]],["name/798",[467,48.785]],["parent/798",[0,0,1,0.358,634,7.024]],["name/799",[471,43.339]],["parent/799",[0,0,1,0.358,634,7.024]],["name/800",[472,43.339]],["parent/800",[0,0,1,0.358,634,7.024]],["name/801",[49,28.994]],["parent/801",[0,0,1,0.358,634,7.024]],["name/802",[635,78.992]],["parent/802",[0,0,1,0.358,2,1.721]],["name/803",[467,48.785]],["parent/803",[0,0,1,0.358,636,8.162]],["name/804",[637,78.992]],["parent/804",[0,0,1,0.358,2,1.721]],["name/805",[467,48.785]],["parent/805",[0,0,1,0.358,638,7.024]],["name/806",[471,43.339]],["parent/806",[0,0,1,0.358,638,7.024]],["name/807",[472,43.339]],["parent/807",[0,0,1,0.358,638,7.024]],["name/808",[49,28.994]],["parent/808",[0,0,1,0.358,638,7.024]],["name/809",[639,78.992]],["parent/809",[0,0,1,0.358,2,1.721]],["name/810",[640,78.992]],["parent/810",[0,0,1,0.358,641,6.494]],["name/811",[642,78.992]],["parent/811",[0,0,1,0.358,641,6.494]],["name/812",[643,78.992]],["parent/812",[0,0,1,0.358,641,6.494]],["name/813",[644,78.992]],["parent/813",[0,0,1,0.358,641,6.494]],["name/814",[645,61.598]],["parent/814",[0,0,1,0.358,641,6.494]],["name/815",[139,54.946]],["parent/815",[0,0,1,0.358,641,6.494]],["name/816",[646,62.853]],["parent/816",[0,0,1,0.358,641,6.494]],["name/817",[484,62.853]],["parent/817",[0,0,1,0.358,2,1.721]],["name/818",[2,16.653]],["parent/818",[0,0,1,0.358,647,5.965]],["name/819",[182,60.482]],["parent/819",[0,0,1,0.358,647,5.965]],["name/820",[648,78.992]],["parent/820",[0,0,1,0.358,647,5.965]],["name/821",[649,78.992]],["parent/821",[0,0,1,0.358,647,5.965]],["name/822",[190,59.479]],["parent/822",[0,0,1,0.358,647,5.965]],["name/823",[650,78.992]],["parent/823",[0,0,1,0.358,647,5.965]],["name/824",[194,67.975]],["parent/824",[0,0,1,0.358,647,5.965]],["name/825",[651,78.992]],["parent/825",[0,0,1,0.358,647,5.965]],["name/826",[652,78.992]],["parent/826",[0,0,1,0.358,647,5.965]],["name/827",[653,78.992]],["parent/827",[0,0,1,0.358,647,5.965]],["name/828",[654,78.992]],["parent/828",[0,0,1,0.358,647,5.965]],["name/829",[655,78.992]],["parent/829",[0,0,1,0.358,647,5.965]],["name/830",[656,78.992]],["parent/830",[0,0,1,0.358,2,1.721]],["name/831",[657,78.992]],["parent/831",[0,0,1,0.358,658,5.965]],["name/832",[49,28.994]],["parent/832",[0,0,1,0.358,658,5.965]],["name/833",[659,50.982]],["parent/833",[0,0,1,0.358,658,5.965]],["name/834",[49,28.994]],["parent/834",[0,0,1,0.358,658,5.965]],["name/835",[660,50.982]],["parent/835",[0,0,1,0.358,658,5.965]],["name/836",[49,28.994]],["parent/836",[0,0,1,0.358,658,5.965]],["name/837",[661,49.12]],["parent/837",[0,0,1,0.358,658,5.965]],["name/838",[49,28.994]],["parent/838",[0,0,1,0.358,658,5.965]],["name/839",[662,62.853]],["parent/839",[0,0,1,0.358,658,5.965]],["name/840",[49,28.994]],["parent/840",[0,0,1,0.358,658,5.965]],["name/841",[663,52.292]],["parent/841",[0,0,1,0.358,658,5.965]],["name/842",[49,28.994]],["parent/842",[0,0,1,0.358,658,5.965]],["name/843",[57,73.869]],["parent/843",[0,0,1,0.358,2,1.721]],["name/844",[664,67.975]],["parent/844",[0,0,1,0.358,665,7.284]],["name/845",[666,78.992]],["parent/845",[0,0,1,0.358,665,7.284]],["name/846",[49,28.994]],["parent/846",[0,0,1,0.358,665,7.284]],["name/847",[667,78.992]],["parent/847",[0,0,1,0.358,2,1.721]],["name/848",[668,78.992]],["parent/848",[0,0,1,0.358,669,7.284]],["name/849",[670,78.992]],["parent/849",[0,0,1,0.358,669,7.284]],["name/850",[49,28.994]],["parent/850",[0,0,1,0.358,669,7.284]],["name/851",[59,60.482]],["parent/851",[0,0,1,0.358,2,1.721]],["name/852",[671,70.495]],["parent/852",[0,0,1,0.358,672,6.249]],["name/853",[100,60.482]],["parent/853",[0,0,1,0.358,672,6.249]],["name/854",[673,62.853]],["parent/854",[0,0,1,0.358,672,6.249]],["name/855",[674,67.975]],["parent/855",[0,0,1,0.358,672,6.249]],["name/856",[675,62.853]],["parent/856",[0,0,1,0.358,672,6.249]],["name/857",[676,67.975]],["parent/857",[0,0,1,0.358,672,6.249]],["name/858",[88,65.963]],["parent/858",[0,0,1,0.358,672,6.249]],["name/859",[116,64.288]],["parent/859",[0,0,1,0.358,672,6.249]],["name/860",[129,64.288]],["parent/860",[0,0,1,0.358,672,6.249]],["name/861",[527,60.482]],["parent/861",[0,0,1,0.358,2,1.721]],["name/862",[32,53.271]],["parent/862",[0,0,1,0.358,677,7.024]],["name/863",[678,65.963]],["parent/863",[0,0,1,0.358,677,7.024]],["name/864",[679,73.869]],["parent/864",[0,0,1,0.358,677,7.024]],["name/865",[680,73.869]],["parent/865",[0,0,1,0.358,677,7.024]],["name/866",[542,70.495]],["parent/866",[0,0,1,0.358,2,1.721]],["name/867",[60,55.573]],["parent/867",[0,0,1,0.358,681,4.883]],["name/868",[682,59.479]],["parent/868",[0,0,1,0.358,681,4.883]],["name/869",[683,70.495]],["parent/869",[0,0,1,0.358,681,4.883]],["name/870",[684,70.495]],["parent/870",[0,0,1,0.358,681,4.883]],["name/871",[685,70.495]],["parent/871",[0,0,1,0.358,681,4.883]],["name/872",[686,70.495]],["parent/872",[0,0,1,0.358,681,4.883]],["name/873",[687,70.495]],["parent/873",[0,0,1,0.358,681,4.883]],["name/874",[688,70.495]],["parent/874",[0,0,1,0.358,681,4.883]],["name/875",[689,70.495]],["parent/875",[0,0,1,0.358,681,4.883]],["name/876",[690,70.495]],["parent/876",[0,0,1,0.358,681,4.883]],["name/877",[691,70.495]],["parent/877",[0,0,1,0.358,681,4.883]],["name/878",[692,70.495]],["parent/878",[0,0,1,0.358,681,4.883]],["name/879",[693,70.495]],["parent/879",[0,0,1,0.358,681,4.883]],["name/880",[694,70.495]],["parent/880",[0,0,1,0.358,681,4.883]],["name/881",[695,70.495]],["parent/881",[0,0,1,0.358,681,4.883]],["name/882",[696,70.495]],["parent/882",[0,0,1,0.358,681,4.883]],["name/883",[697,70.495]],["parent/883",[0,0,1,0.358,681,4.883]],["name/884",[698,70.495]],["parent/884",[0,0,1,0.358,681,4.883]],["name/885",[699,70.495]],["parent/885",[0,0,1,0.358,681,4.883]],["name/886",[700,67.975]],["parent/886",[0,0,1,0.358,681,4.883]],["name/887",[701,70.495]],["parent/887",[0,0,1,0.358,681,4.883]],["name/888",[702,70.495]],["parent/888",[0,0,1,0.358,681,4.883]],["name/889",[99,65.963]],["parent/889",[0,0,1,0.358,681,4.883]],["name/890",[100,60.482]],["parent/890",[0,0,1,0.358,681,4.883]],["name/891",[675,62.853]],["parent/891",[0,0,1,0.358,681,4.883]],["name/892",[676,67.975]],["parent/892",[0,0,1,0.358,681,4.883]],["name/893",[673,62.853]],["parent/893",[0,0,1,0.358,681,4.883]],["name/894",[674,67.975]],["parent/894",[0,0,1,0.358,681,4.883]],["name/895",[703,65.963]],["parent/895",[0,0,1,0.358,681,4.883]],["name/896",[704,67.975]],["parent/896",[0,0,1,0.358,681,4.883]],["name/897",[705,67.975]],["parent/897",[0,0,1,0.358,681,4.883]],["name/898",[706,65.963]],["parent/898",[0,0,1,0.358,681,4.883]],["name/899",[230,64.288]],["parent/899",[0,0,1,0.358,681,4.883]],["name/900",[707,70.495]],["parent/900",[0,0,1,0.358,681,4.883]],["name/901",[708,70.495]],["parent/901",[0,0,1,0.358,681,4.883]],["name/902",[70,73.869]],["parent/902",[0,0,1,0.358,2,1.721]],["name/903",[683,70.495]],["parent/903",[0,0,1,0.358,709,6.642]],["name/904",[684,70.495]],["parent/904",[0,0,1,0.358,709,6.642]],["name/905",[685,70.495]],["parent/905",[0,0,1,0.358,709,6.642]],["name/906",[686,70.495]],["parent/906",[0,0,1,0.358,709,6.642]],["name/907",[687,70.495]],["parent/907",[0,0,1,0.358,709,6.642]],["name/908",[688,70.495]],["parent/908",[0,0,1,0.358,709,6.642]],["name/909",[710,78.992]],["parent/909",[0,0,1,0.358,2,1.721]],["name/910",[689,70.495]],["parent/910",[0,0,1,0.358,711,5.811]],["name/911",[690,70.495]],["parent/911",[0,0,1,0.358,711,5.811]],["name/912",[691,70.495]],["parent/912",[0,0,1,0.358,711,5.811]],["name/913",[692,70.495]],["parent/913",[0,0,1,0.358,711,5.811]],["name/914",[693,70.495]],["parent/914",[0,0,1,0.358,711,5.811]],["name/915",[694,70.495]],["parent/915",[0,0,1,0.358,711,5.811]],["name/916",[695,70.495]],["parent/916",[0,0,1,0.358,711,5.811]],["name/917",[696,70.495]],["parent/917",[0,0,1,0.358,711,5.811]],["name/918",[697,70.495]],["parent/918",[0,0,1,0.358,711,5.811]],["name/919",[698,70.495]],["parent/919",[0,0,1,0.358,711,5.811]],["name/920",[699,70.495]],["parent/920",[0,0,1,0.358,711,5.811]],["name/921",[700,67.975]],["parent/921",[0,0,1,0.358,711,5.811]],["name/922",[701,70.495]],["parent/922",[0,0,1,0.358,711,5.811]],["name/923",[702,70.495]],["parent/923",[0,0,1,0.358,711,5.811]],["name/924",[712,78.992]],["parent/924",[0,0,1,0.358,2,1.721]],["name/925",[99,65.963]],["parent/925",[0,0,1,0.358,713,6.051]],["name/926",[100,60.482]],["parent/926",[0,0,1,0.358,713,6.051]],["name/927",[675,62.853]],["parent/927",[0,0,1,0.358,713,6.051]],["name/928",[676,67.975]],["parent/928",[0,0,1,0.358,713,6.051]],["name/929",[673,62.853]],["parent/929",[0,0,1,0.358,713,6.051]],["name/930",[674,67.975]],["parent/930",[0,0,1,0.358,713,6.051]],["name/931",[703,65.963]],["parent/931",[0,0,1,0.358,713,6.051]],["name/932",[704,67.975]],["parent/932",[0,0,1,0.358,713,6.051]],["name/933",[705,67.975]],["parent/933",[0,0,1,0.358,713,6.051]],["name/934",[706,65.963]],["parent/934",[0,0,1,0.358,713,6.051]],["name/935",[230,64.288]],["parent/935",[0,0,1,0.358,713,6.051]],["name/936",[714,78.992]],["parent/936",[0,0,1,0.358,2,1.721]],["name/937",[707,70.495]],["parent/937",[0,0,1,0.358,715,7.633]],["name/938",[708,70.495]],["parent/938",[0,0,1,0.358,715,7.633]],["name/939",[716,78.992]],["parent/939",[0,0,1,0.358,2,1.721]],["name/940",[717,73.869]],["parent/940",[0,0,1,0.358,718,6.642]],["name/941",[82,64.288]],["parent/941",[0,0,1,0.358,718,6.642]],["name/942",[719,73.869]],["parent/942",[0,0,1,0.358,718,6.642]],["name/943",[49,28.994]],["parent/943",[0,0,1,0.358,718,6.642]],["name/944",[720,73.869]],["parent/944",[0,0,1,0.358,718,6.642]],["name/945",[49,28.994]],["parent/945",[0,0,1,0.358,718,6.642]],["name/946",[721,78.992]],["parent/946",[0,0,1,0.358,2,1.721]],["name/947",[717,73.869]],["parent/947",[0,0,1,0.358,722,7.633]],["name/948",[82,64.288]],["parent/948",[0,0,1,0.358,722,7.633]],["name/949",[723,78.992]],["parent/949",[0,0,1,0.358,2,1.721]],["name/950",[719,73.869]],["parent/950",[0,0,1,0.358,724,7.024]],["name/951",[49,28.994]],["parent/951",[0,0,1,0.358,724,7.024]],["name/952",[720,73.869]],["parent/952",[0,0,1,0.358,724,7.024]],["name/953",[49,28.994]],["parent/953",[0,0,1,0.358,724,7.024]],["name/954",[725,78.992]],["parent/954",[0,0,1,0.358,2,1.721]],["name/955",[726,73.869]],["parent/955",[0,0,1,0.358,727,6.642]],["name/956",[728,73.869]],["parent/956",[0,0,1,0.358,727,6.642]],["name/957",[729,73.869]],["parent/957",[0,0,1,0.358,727,6.642]],["name/958",[730,73.869]],["parent/958",[0,0,1,0.358,727,6.642]],["name/959",[731,73.869]],["parent/959",[0,0,1,0.358,727,6.642]],["name/960",[732,73.869]],["parent/960",[0,0,1,0.358,727,6.642]],["name/961",[733,78.992]],["parent/961",[0,0,1,0.358,2,1.721]],["name/962",[646,62.853]],["parent/962",[0,0,1,0.358,734,6.249]],["name/963",[735,65.963]],["parent/963",[0,0,1,0.358,734,6.249]],["name/964",[736,65.963]],["parent/964",[0,0,1,0.358,734,6.249]],["name/965",[737,65.963]],["parent/965",[0,0,1,0.358,734,6.249]],["name/966",[738,65.963]],["parent/966",[0,0,1,0.358,734,6.249]],["name/967",[645,61.598]],["parent/967",[0,0,1,0.358,734,6.249]],["name/968",[739,65.963]],["parent/968",[0,0,1,0.358,734,6.249]],["name/969",[139,54.946]],["parent/969",[0,0,1,0.358,734,6.249]],["name/970",[740,65.963]],["parent/970",[0,0,1,0.358,734,6.249]],["name/971",[741,78.992]],["parent/971",[0,0,1,0.358,2,1.721]],["name/972",[742,78.992]],["parent/972",[0,0,1,0.358,2,1.721]],["name/973",[743,70.495]],["parent/973",[0,0,1,0.358,744,7.024]],["name/974",[745,70.495]],["parent/974",[0,0,1,0.358,744,7.024]],["name/975",[746,70.495]],["parent/975",[0,0,1,0.358,744,7.024]],["name/976",[747,70.495]],["parent/976",[0,0,1,0.358,744,7.024]],["name/977",[748,78.992]],["parent/977",[0,0,1,0.358,2,1.721]],["name/978",[749,70.495]],["parent/978",[0,0,1,0.358,750,6.816]],["name/979",[743,70.495]],["parent/979",[0,0,1,0.358,750,6.816]],["name/980",[745,70.495]],["parent/980",[0,0,1,0.358,750,6.816]],["name/981",[746,70.495]],["parent/981",[0,0,1,0.358,750,6.816]],["name/982",[747,70.495]],["parent/982",[0,0,1,0.358,750,6.816]],["name/983",[751,78.992]],["parent/983",[0,0,1,0.358,2,1.721]],["name/984",[749,70.495]],["parent/984",[0,0,1,0.358,752,6.642]],["name/985",[175,59.479]],["parent/985",[0,0,1,0.358,752,6.642]],["name/986",[743,70.495]],["parent/986",[0,0,1,0.358,752,6.642]],["name/987",[745,70.495]],["parent/987",[0,0,1,0.358,752,6.642]],["name/988",[746,70.495]],["parent/988",[0,0,1,0.358,752,6.642]],["name/989",[747,70.495]],["parent/989",[0,0,1,0.358,752,6.642]],["name/990",[753,78.992]],["parent/990",[0,0,1,0.358,2,1.721]],["name/991",[754,73.869]],["parent/991",[0,0,1,0.358,755,6.494]],["name/992",[756,73.869]],["parent/992",[0,0,1,0.358,755,6.494]],["name/993",[757,73.869]],["parent/993",[0,0,1,0.358,755,6.494]],["name/994",[758,73.869]],["parent/994",[0,0,1,0.358,755,6.494]],["name/995",[759,73.869]],["parent/995",[0,0,1,0.358,755,6.494]],["name/996",[760,73.869]],["parent/996",[0,0,1,0.358,755,6.494]],["name/997",[761,73.869]],["parent/997",[0,0,1,0.358,755,6.494]],["name/998",[762,78.992]],["parent/998",[0,0,1,0.358,2,1.721]],["name/999",[763,78.992]],["parent/999",[0,0,1,0.358,764,7.284]],["name/1000",[765,78.992]],["parent/1000",[0,0,1,0.358,764,7.284]],["name/1001",[766,78.992]],["parent/1001",[0,0,1,0.358,764,7.284]],["name/1002",[767,78.992]],["parent/1002",[0,0,1,0.358,2,1.721]],["name/1003",[768,73.869]],["parent/1003",[0,0,1,0.358,769,7.633]],["name/1004",[770,73.869]],["parent/1004",[0,0,1,0.358,769,7.633]],["name/1005",[771,78.992]],["parent/1005",[0,0,1,0.358,2,1.721]],["name/1006",[772,65.963]],["parent/1006",[0,0,1,0.358,773,6.365]],["name/1007",[179,60.482]],["parent/1007",[0,0,1,0.358,773,6.365]],["name/1008",[774,73.869]],["parent/1008",[0,0,1,0.358,773,6.365]],["name/1009",[775,73.869]],["parent/1009",[0,0,1,0.358,773,6.365]],["name/1010",[776,73.869]],["parent/1010",[0,0,1,0.358,773,6.365]],["name/1011",[777,73.869]],["parent/1011",[0,0,1,0.358,773,6.365]],["name/1012",[645,61.598]],["parent/1012",[0,0,1,0.358,773,6.365]],["name/1013",[778,70.495]],["parent/1013",[0,0,1,0.358,773,6.365]],["name/1014",[779,78.992]],["parent/1014",[0,0,1,0.358,2,1.721]],["name/1015",[780,78.992]],["parent/1015",[0,0,1,0.358,781,7.024]],["name/1016",[782,78.992]],["parent/1016",[0,0,1,0.358,781,7.024]],["name/1017",[155,65.963]],["parent/1017",[0,0,1,0.358,781,7.024]],["name/1018",[157,65.963]],["parent/1018",[0,0,1,0.358,781,7.024]],["name/1019",[783,78.992]],["parent/1019",[0,0,1,0.358,2,1.721]],["name/1020",[784,78.992]],["parent/1020",[0,0,1,0.358,785,6.642]],["name/1021",[786,78.992]],["parent/1021",[0,0,1,0.358,785,6.642]],["name/1022",[787,73.869]],["parent/1022",[0,0,1,0.358,785,6.642]],["name/1023",[788,73.869]],["parent/1023",[0,0,1,0.358,785,6.642]],["name/1024",[789,73.869]],["parent/1024",[0,0,1,0.358,785,6.642]],["name/1025",[790,73.869]],["parent/1025",[0,0,1,0.358,785,6.642]],["name/1026",[791,78.992]],["parent/1026",[0,0,1,0.358,2,1.721]],["name/1027",[787,73.869]],["parent/1027",[0,0,1,0.358,792,7.024]],["name/1028",[788,73.869]],["parent/1028",[0,0,1,0.358,792,7.024]],["name/1029",[789,73.869]],["parent/1029",[0,0,1,0.358,792,7.024]],["name/1030",[790,73.869]],["parent/1030",[0,0,1,0.358,792,7.024]],["name/1031",[609,67.975]],["parent/1031",[0,0,1,0.358,2,1.721]],["name/1032",[793,70.495]],["parent/1032",[0,0,1,0.358,794,7.633]],["name/1033",[153,60.482]],["parent/1033",[0,0,1,0.358,794,7.633]],["name/1034",[795,73.869]],["parent/1034",[0,0,1,0.358,2,1.721]],["name/1035",[795,73.869]],["parent/1035",[0,0,1,0.358,796,6.816]],["name/1036",[797,78.992]],["parent/1036",[0,0,1,0.358,796,6.816]],["name/1037",[798,78.992]],["parent/1037",[0,0,1,0.358,796,6.816]],["name/1038",[799,78.992]],["parent/1038",[0,0,1,0.358,796,6.816]],["name/1039",[800,78.992]],["parent/1039",[0,0,1,0.358,796,6.816]],["name/1040",[801,78.992]],["parent/1040",[0,0,1,0.358,2,1.721]],["name/1041",[60,55.573]],["parent/1041",[0,0,1,0.358,802,7.633]],["name/1042",[32,53.271]],["parent/1042",[0,0,1,0.358,802,7.633]],["name/1043",[803,78.992]],["parent/1043",[0,0,1,0.358,2,1.721]],["name/1044",[793,70.495]],["parent/1044",[0,0,1,0.358,804,7.024]],["name/1045",[153,60.482]],["parent/1045",[0,0,1,0.358,804,7.024]],["name/1046",[60,55.573]],["parent/1046",[0,0,1,0.358,804,7.024]],["name/1047",[32,53.271]],["parent/1047",[0,0,1,0.358,804,7.024]],["name/1048",[805,78.992]],["parent/1048",[0,0,1,0.358,2,1.721]],["name/1049",[806,78.992]],["parent/1049",[0,0,1,0.358,807,6.816]],["name/1050",[808,70.495]],["parent/1050",[0,0,1,0.358,807,6.816]],["name/1051",[809,70.495]],["parent/1051",[0,0,1,0.358,807,6.816]],["name/1052",[60,55.573]],["parent/1052",[0,0,1,0.358,807,6.816]],["name/1053",[32,53.271]],["parent/1053",[0,0,1,0.358,807,6.816]],["name/1054",[810,78.992]],["parent/1054",[0,0,1,0.358,2,1.721]],["name/1055",[811,78.992]],["parent/1055",[0,0,1,0.358,812,7.284]],["name/1056",[60,55.573]],["parent/1056",[0,0,1,0.358,812,7.284]],["name/1057",[32,53.271]],["parent/1057",[0,0,1,0.358,812,7.284]],["name/1058",[813,78.992]],["parent/1058",[0,0,1,0.358,2,1.721]],["name/1059",[814,78.992]],["parent/1059",[0,0,1,0.358,2,1.721]],["name/1060",[194,67.975]],["parent/1060",[0,0,1,0.358,815,7.024]],["name/1061",[816,78.992]],["parent/1061",[0,0,1,0.358,815,7.024]],["name/1062",[817,78.992]],["parent/1062",[0,0,1,0.358,815,7.024]],["name/1063",[818,78.992]],["parent/1063",[0,0,1,0.358,815,7.024]],["name/1064",[819,78.992]],["parent/1064",[0,0,1,0.358,2,1.721]],["name/1065",[32,53.271]],["parent/1065",[0,0,1,0.358,820,7.284]],["name/1066",[678,65.963]],["parent/1066",[0,0,1,0.358,820,7.284]],["name/1067",[528,67.975]],["parent/1067",[0,0,1,0.358,820,7.284]],["name/1068",[700,67.975]],["parent/1068",[0,0,1,0.358,2,1.721]],["name/1069",[821,73.869]],["parent/1069",[0,0,1,0.358,822,5.885]],["name/1070",[823,73.869]],["parent/1070",[0,0,1,0.358,822,5.885]],["name/1071",[824,73.869]],["parent/1071",[0,0,1,0.358,822,5.885]],["name/1072",[825,73.869]],["parent/1072",[0,0,1,0.358,822,5.885]],["name/1073",[826,73.869]],["parent/1073",[0,0,1,0.358,822,5.885]],["name/1074",[827,73.869]],["parent/1074",[0,0,1,0.358,822,5.885]],["name/1075",[828,73.869]],["parent/1075",[0,0,1,0.358,822,5.885]],["name/1076",[829,73.869]],["parent/1076",[0,0,1,0.358,822,5.885]],["name/1077",[830,73.869]],["parent/1077",[0,0,1,0.358,822,5.885]],["name/1078",[831,73.869]],["parent/1078",[0,0,1,0.358,822,5.885]],["name/1079",[381,70.495]],["parent/1079",[0,0,1,0.358,822,5.885]],["name/1080",[832,78.992]],["parent/1080",[0,0,1,0.358,822,5.885]],["name/1081",[833,67.975]],["parent/1081",[0,0,1,0.358,822,5.885]],["name/1082",[834,78.992]],["parent/1082",[0,0,1,0.358,2,1.721]],["name/1083",[49,28.994]],["parent/1083",[0,0,1,0.358,835,8.162]],["name/1084",[836,78.992]],["parent/1084",[0,0,1,0.358,837,7.633]],["name/1085",[838,78.992]],["parent/1085",[0,0,1,0.358,837,7.633]],["name/1086",[417,65.963]],["parent/1086",[0,0,1,0.358,2,1.721]],["name/1087",[808,70.495]],["parent/1087",[0,0,1,0.358,839,7.633]],["name/1088",[809,70.495]],["parent/1088",[0,0,1,0.358,839,7.633]],["name/1089",[840,73.869]],["parent/1089",[0,0,1,0.358,2,1.721]],["name/1090",[841,78.992]],["parent/1090",[0,0,1,0.358,842,7.633]],["name/1091",[165,70.495]],["parent/1091",[0,0,1,0.358,842,7.633]],["name/1092",[843,78.992]],["parent/1092",[0,0,1,0.358,2,1.721]],["name/1093",[844,73.869]],["parent/1093",[0,0,1,0.358,845,6.051]],["name/1094",[846,73.869]],["parent/1094",[0,0,1,0.358,845,6.051]],["name/1095",[847,73.869]],["parent/1095",[0,0,1,0.358,845,6.051]],["name/1096",[848,73.869]],["parent/1096",[0,0,1,0.358,845,6.051]],["name/1097",[849,73.869]],["parent/1097",[0,0,1,0.358,845,6.051]],["name/1098",[850,73.869]],["parent/1098",[0,0,1,0.358,845,6.051]],["name/1099",[851,73.869]],["parent/1099",[0,0,1,0.358,845,6.051]],["name/1100",[852,73.869]],["parent/1100",[0,0,1,0.358,845,6.051]],["name/1101",[853,73.869]],["parent/1101",[0,0,1,0.358,845,6.051]],["name/1102",[854,73.869]],["parent/1102",[0,0,1,0.358,845,6.051]],["name/1103",[855,73.869]],["parent/1103",[0,0,1,0.358,845,6.051]],["name/1104",[856,78.992]],["parent/1104",[0,0,1,0.358,2,1.721]],["name/1105",[857,78.992]],["parent/1105",[0,0,1,0.358,858,5.885]],["name/1106",[859,78.992]],["parent/1106",[0,0,1,0.358,858,5.885]],["name/1107",[844,73.869]],["parent/1107",[0,0,1,0.358,858,5.885]],["name/1108",[846,73.869]],["parent/1108",[0,0,1,0.358,858,5.885]],["name/1109",[847,73.869]],["parent/1109",[0,0,1,0.358,858,5.885]],["name/1110",[848,73.869]],["parent/1110",[0,0,1,0.358,858,5.885]],["name/1111",[849,73.869]],["parent/1111",[0,0,1,0.358,858,5.885]],["name/1112",[850,73.869]],["parent/1112",[0,0,1,0.358,858,5.885]],["name/1113",[851,73.869]],["parent/1113",[0,0,1,0.358,858,5.885]],["name/1114",[852,73.869]],["parent/1114",[0,0,1,0.358,858,5.885]],["name/1115",[853,73.869]],["parent/1115",[0,0,1,0.358,858,5.885]],["name/1116",[854,73.869]],["parent/1116",[0,0,1,0.358,858,5.885]],["name/1117",[855,73.869]],["parent/1117",[0,0,1,0.358,858,5.885]],["name/1118",[860,78.992]],["parent/1118",[0,0,1,0.358,2,1.721]],["name/1119",[175,59.479]],["parent/1119",[0,0,1,0.358,861,3.914]],["name/1120",[772,65.963]],["parent/1120",[0,0,1,0.358,861,3.914]],["name/1121",[862,73.869]],["parent/1121",[0,0,1,0.358,861,3.914]],["name/1122",[179,60.482]],["parent/1122",[0,0,1,0.358,861,3.914]],["name/1123",[863,73.869]],["parent/1123",[0,0,1,0.358,861,3.914]],["name/1124",[864,73.869]],["parent/1124",[0,0,1,0.358,861,3.914]],["name/1125",[865,73.869]],["parent/1125",[0,0,1,0.358,861,3.914]],["name/1126",[866,73.869]],["parent/1126",[0,0,1,0.358,861,3.914]],["name/1127",[867,73.869]],["parent/1127",[0,0,1,0.358,861,3.914]],["name/1128",[868,73.869]],["parent/1128",[0,0,1,0.358,861,3.914]],["name/1129",[869,73.869]],["parent/1129",[0,0,1,0.358,861,3.914]],["name/1130",[870,73.869]],["parent/1130",[0,0,1,0.358,861,3.914]],["name/1131",[871,73.869]],["parent/1131",[0,0,1,0.358,861,3.914]],["name/1132",[872,73.869]],["parent/1132",[0,0,1,0.358,861,3.914]],["name/1133",[873,73.869]],["parent/1133",[0,0,1,0.358,861,3.914]],["name/1134",[874,73.869]],["parent/1134",[0,0,1,0.358,861,3.914]],["name/1135",[875,73.869]],["parent/1135",[0,0,1,0.358,861,3.914]],["name/1136",[876,73.869]],["parent/1136",[0,0,1,0.358,861,3.914]],["name/1137",[877,73.869]],["parent/1137",[0,0,1,0.358,861,3.914]],["name/1138",[878,73.869]],["parent/1138",[0,0,1,0.358,861,3.914]],["name/1139",[879,73.869]],["parent/1139",[0,0,1,0.358,861,3.914]],["name/1140",[880,73.869]],["parent/1140",[0,0,1,0.358,861,3.914]],["name/1141",[881,73.869]],["parent/1141",[0,0,1,0.358,861,3.914]],["name/1142",[882,73.869]],["parent/1142",[0,0,1,0.358,861,3.914]],["name/1143",[883,73.869]],["parent/1143",[0,0,1,0.358,861,3.914]],["name/1144",[884,73.869]],["parent/1144",[0,0,1,0.358,861,3.914]],["name/1145",[885,73.869]],["parent/1145",[0,0,1,0.358,861,3.914]],["name/1146",[886,73.869]],["parent/1146",[0,0,1,0.358,861,3.914]],["name/1147",[887,73.869]],["parent/1147",[0,0,1,0.358,861,3.914]],["name/1148",[888,73.869]],["parent/1148",[0,0,1,0.358,861,3.914]],["name/1149",[889,73.869]],["parent/1149",[0,0,1,0.358,861,3.914]],["name/1150",[890,73.869]],["parent/1150",[0,0,1,0.358,861,3.914]],["name/1151",[891,73.869]],["parent/1151",[0,0,1,0.358,861,3.914]],["name/1152",[892,73.869]],["parent/1152",[0,0,1,0.358,861,3.914]],["name/1153",[893,73.869]],["parent/1153",[0,0,1,0.358,861,3.914]],["name/1154",[894,73.869]],["parent/1154",[0,0,1,0.358,861,3.914]],["name/1155",[895,73.869]],["parent/1155",[0,0,1,0.358,861,3.914]],["name/1156",[896,73.869]],["parent/1156",[0,0,1,0.358,861,3.914]],["name/1157",[897,73.869]],["parent/1157",[0,0,1,0.358,861,3.914]],["name/1158",[898,73.869]],["parent/1158",[0,0,1,0.358,861,3.914]],["name/1159",[899,73.869]],["parent/1159",[0,0,1,0.358,861,3.914]],["name/1160",[900,73.869]],["parent/1160",[0,0,1,0.358,861,3.914]],["name/1161",[901,73.869]],["parent/1161",[0,0,1,0.358,861,3.914]],["name/1162",[902,73.869]],["parent/1162",[0,0,1,0.358,861,3.914]],["name/1163",[903,73.869]],["parent/1163",[0,0,1,0.358,861,3.914]],["name/1164",[904,73.869]],["parent/1164",[0,0,1,0.358,861,3.914]],["name/1165",[905,73.869]],["parent/1165",[0,0,1,0.358,861,3.914]],["name/1166",[906,73.869]],["parent/1166",[0,0,1,0.358,861,3.914]],["name/1167",[907,73.869]],["parent/1167",[0,0,1,0.358,861,3.914]],["name/1168",[908,73.869]],["parent/1168",[0,0,1,0.358,861,3.914]],["name/1169",[909,73.869]],["parent/1169",[0,0,1,0.358,861,3.914]],["name/1170",[910,73.869]],["parent/1170",[0,0,1,0.358,861,3.914]],["name/1171",[911,73.869]],["parent/1171",[0,0,1,0.358,861,3.914]],["name/1172",[912,73.869]],["parent/1172",[0,0,1,0.358,861,3.914]],["name/1173",[913,73.869]],["parent/1173",[0,0,1,0.358,861,3.914]],["name/1174",[914,73.869]],["parent/1174",[0,0,1,0.358,861,3.914]],["name/1175",[915,73.869]],["parent/1175",[0,0,1,0.358,861,3.914]],["name/1176",[916,73.869]],["parent/1176",[0,0,1,0.358,861,3.914]],["name/1177",[917,73.869]],["parent/1177",[0,0,1,0.358,861,3.914]],["name/1178",[918,73.869]],["parent/1178",[0,0,1,0.358,861,3.914]],["name/1179",[919,73.869]],["parent/1179",[0,0,1,0.358,861,3.914]],["name/1180",[920,73.869]],["parent/1180",[0,0,1,0.358,861,3.914]],["name/1181",[921,73.869]],["parent/1181",[0,0,1,0.358,861,3.914]],["name/1182",[922,73.869]],["parent/1182",[0,0,1,0.358,861,3.914]],["name/1183",[923,73.869]],["parent/1183",[0,0,1,0.358,861,3.914]],["name/1184",[924,73.869]],["parent/1184",[0,0,1,0.358,861,3.914]],["name/1185",[925,73.869]],["parent/1185",[0,0,1,0.358,861,3.914]],["name/1186",[926,73.869]],["parent/1186",[0,0,1,0.358,861,3.914]],["name/1187",[927,73.869]],["parent/1187",[0,0,1,0.358,861,3.914]],["name/1188",[928,73.869]],["parent/1188",[0,0,1,0.358,861,3.914]],["name/1189",[929,73.869]],["parent/1189",[0,0,1,0.358,861,3.914]],["name/1190",[930,73.869]],["parent/1190",[0,0,1,0.358,861,3.914]],["name/1191",[931,73.869]],["parent/1191",[0,0,1,0.358,861,3.914]],["name/1192",[932,73.869]],["parent/1192",[0,0,1,0.358,861,3.914]],["name/1193",[933,73.869]],["parent/1193",[0,0,1,0.358,861,3.914]],["name/1194",[934,73.869]],["parent/1194",[0,0,1,0.358,861,3.914]],["name/1195",[935,73.869]],["parent/1195",[0,0,1,0.358,861,3.914]],["name/1196",[186,67.975]],["parent/1196",[0,0,1,0.358,861,3.914]],["name/1197",[187,67.975]],["parent/1197",[0,0,1,0.358,861,3.914]],["name/1198",[936,73.869]],["parent/1198",[0,0,1,0.358,861,3.914]],["name/1199",[185,67.975]],["parent/1199",[0,0,1,0.358,861,3.914]],["name/1200",[937,73.869]],["parent/1200",[0,0,1,0.358,861,3.914]],["name/1201",[938,73.869]],["parent/1201",[0,0,1,0.358,861,3.914]],["name/1202",[939,73.869]],["parent/1202",[0,0,1,0.358,861,3.914]],["name/1203",[940,73.869]],["parent/1203",[0,0,1,0.358,861,3.914]],["name/1204",[182,60.482]],["parent/1204",[0,0,1,0.358,861,3.914]],["name/1205",[941,73.869]],["parent/1205",[0,0,1,0.358,861,3.914]],["name/1206",[183,67.975]],["parent/1206",[0,0,1,0.358,861,3.914]],["name/1207",[184,67.975]],["parent/1207",[0,0,1,0.358,861,3.914]],["name/1208",[942,73.869]],["parent/1208",[0,0,1,0.358,861,3.914]],["name/1209",[943,78.992]],["parent/1209",[0,0,1,0.358,2,1.721]],["name/1210",[944,78.992]],["parent/1210",[0,0,1,0.358,945,3.88]],["name/1211",[946,78.992]],["parent/1211",[0,0,1,0.358,945,3.88]],["name/1212",[947,78.992]],["parent/1212",[0,0,1,0.358,945,3.88]],["name/1213",[175,59.479]],["parent/1213",[0,0,1,0.358,945,3.88]],["name/1214",[772,65.963]],["parent/1214",[0,0,1,0.358,945,3.88]],["name/1215",[862,73.869]],["parent/1215",[0,0,1,0.358,945,3.88]],["name/1216",[179,60.482]],["parent/1216",[0,0,1,0.358,945,3.88]],["name/1217",[863,73.869]],["parent/1217",[0,0,1,0.358,945,3.88]],["name/1218",[864,73.869]],["parent/1218",[0,0,1,0.358,945,3.88]],["name/1219",[865,73.869]],["parent/1219",[0,0,1,0.358,945,3.88]],["name/1220",[866,73.869]],["parent/1220",[0,0,1,0.358,945,3.88]],["name/1221",[867,73.869]],["parent/1221",[0,0,1,0.358,945,3.88]],["name/1222",[868,73.869]],["parent/1222",[0,0,1,0.358,945,3.88]],["name/1223",[869,73.869]],["parent/1223",[0,0,1,0.358,945,3.88]],["name/1224",[870,73.869]],["parent/1224",[0,0,1,0.358,945,3.88]],["name/1225",[871,73.869]],["parent/1225",[0,0,1,0.358,945,3.88]],["name/1226",[872,73.869]],["parent/1226",[0,0,1,0.358,945,3.88]],["name/1227",[873,73.869]],["parent/1227",[0,0,1,0.358,945,3.88]],["name/1228",[874,73.869]],["parent/1228",[0,0,1,0.358,945,3.88]],["name/1229",[875,73.869]],["parent/1229",[0,0,1,0.358,945,3.88]],["name/1230",[876,73.869]],["parent/1230",[0,0,1,0.358,945,3.88]],["name/1231",[877,73.869]],["parent/1231",[0,0,1,0.358,945,3.88]],["name/1232",[878,73.869]],["parent/1232",[0,0,1,0.358,945,3.88]],["name/1233",[879,73.869]],["parent/1233",[0,0,1,0.358,945,3.88]],["name/1234",[880,73.869]],["parent/1234",[0,0,1,0.358,945,3.88]],["name/1235",[881,73.869]],["parent/1235",[0,0,1,0.358,945,3.88]],["name/1236",[882,73.869]],["parent/1236",[0,0,1,0.358,945,3.88]],["name/1237",[883,73.869]],["parent/1237",[0,0,1,0.358,945,3.88]],["name/1238",[884,73.869]],["parent/1238",[0,0,1,0.358,945,3.88]],["name/1239",[885,73.869]],["parent/1239",[0,0,1,0.358,945,3.88]],["name/1240",[886,73.869]],["parent/1240",[0,0,1,0.358,945,3.88]],["name/1241",[887,73.869]],["parent/1241",[0,0,1,0.358,945,3.88]],["name/1242",[888,73.869]],["parent/1242",[0,0,1,0.358,945,3.88]],["name/1243",[889,73.869]],["parent/1243",[0,0,1,0.358,945,3.88]],["name/1244",[890,73.869]],["parent/1244",[0,0,1,0.358,945,3.88]],["name/1245",[891,73.869]],["parent/1245",[0,0,1,0.358,945,3.88]],["name/1246",[892,73.869]],["parent/1246",[0,0,1,0.358,945,3.88]],["name/1247",[893,73.869]],["parent/1247",[0,0,1,0.358,945,3.88]],["name/1248",[894,73.869]],["parent/1248",[0,0,1,0.358,945,3.88]],["name/1249",[895,73.869]],["parent/1249",[0,0,1,0.358,945,3.88]],["name/1250",[896,73.869]],["parent/1250",[0,0,1,0.358,945,3.88]],["name/1251",[897,73.869]],["parent/1251",[0,0,1,0.358,945,3.88]],["name/1252",[898,73.869]],["parent/1252",[0,0,1,0.358,945,3.88]],["name/1253",[899,73.869]],["parent/1253",[0,0,1,0.358,945,3.88]],["name/1254",[900,73.869]],["parent/1254",[0,0,1,0.358,945,3.88]],["name/1255",[901,73.869]],["parent/1255",[0,0,1,0.358,945,3.88]],["name/1256",[902,73.869]],["parent/1256",[0,0,1,0.358,945,3.88]],["name/1257",[903,73.869]],["parent/1257",[0,0,1,0.358,945,3.88]],["name/1258",[904,73.869]],["parent/1258",[0,0,1,0.358,945,3.88]],["name/1259",[905,73.869]],["parent/1259",[0,0,1,0.358,945,3.88]],["name/1260",[906,73.869]],["parent/1260",[0,0,1,0.358,945,3.88]],["name/1261",[907,73.869]],["parent/1261",[0,0,1,0.358,945,3.88]],["name/1262",[908,73.869]],["parent/1262",[0,0,1,0.358,945,3.88]],["name/1263",[909,73.869]],["parent/1263",[0,0,1,0.358,945,3.88]],["name/1264",[910,73.869]],["parent/1264",[0,0,1,0.358,945,3.88]],["name/1265",[911,73.869]],["parent/1265",[0,0,1,0.358,945,3.88]],["name/1266",[912,73.869]],["parent/1266",[0,0,1,0.358,945,3.88]],["name/1267",[913,73.869]],["parent/1267",[0,0,1,0.358,945,3.88]],["name/1268",[914,73.869]],["parent/1268",[0,0,1,0.358,945,3.88]],["name/1269",[915,73.869]],["parent/1269",[0,0,1,0.358,945,3.88]],["name/1270",[916,73.869]],["parent/1270",[0,0,1,0.358,945,3.88]],["name/1271",[917,73.869]],["parent/1271",[0,0,1,0.358,945,3.88]],["name/1272",[918,73.869]],["parent/1272",[0,0,1,0.358,945,3.88]],["name/1273",[919,73.869]],["parent/1273",[0,0,1,0.358,945,3.88]],["name/1274",[920,73.869]],["parent/1274",[0,0,1,0.358,945,3.88]],["name/1275",[921,73.869]],["parent/1275",[0,0,1,0.358,945,3.88]],["name/1276",[922,73.869]],["parent/1276",[0,0,1,0.358,945,3.88]],["name/1277",[923,73.869]],["parent/1277",[0,0,1,0.358,945,3.88]],["name/1278",[924,73.869]],["parent/1278",[0,0,1,0.358,945,3.88]],["name/1279",[925,73.869]],["parent/1279",[0,0,1,0.358,945,3.88]],["name/1280",[926,73.869]],["parent/1280",[0,0,1,0.358,945,3.88]],["name/1281",[927,73.869]],["parent/1281",[0,0,1,0.358,945,3.88]],["name/1282",[928,73.869]],["parent/1282",[0,0,1,0.358,945,3.88]],["name/1283",[929,73.869]],["parent/1283",[0,0,1,0.358,945,3.88]],["name/1284",[930,73.869]],["parent/1284",[0,0,1,0.358,945,3.88]],["name/1285",[931,73.869]],["parent/1285",[0,0,1,0.358,945,3.88]],["name/1286",[932,73.869]],["parent/1286",[0,0,1,0.358,945,3.88]],["name/1287",[933,73.869]],["parent/1287",[0,0,1,0.358,945,3.88]],["name/1288",[934,73.869]],["parent/1288",[0,0,1,0.358,945,3.88]],["name/1289",[935,73.869]],["parent/1289",[0,0,1,0.358,945,3.88]],["name/1290",[186,67.975]],["parent/1290",[0,0,1,0.358,945,3.88]],["name/1291",[187,67.975]],["parent/1291",[0,0,1,0.358,945,3.88]],["name/1292",[936,73.869]],["parent/1292",[0,0,1,0.358,945,3.88]],["name/1293",[185,67.975]],["parent/1293",[0,0,1,0.358,945,3.88]],["name/1294",[937,73.869]],["parent/1294",[0,0,1,0.358,945,3.88]],["name/1295",[938,73.869]],["parent/1295",[0,0,1,0.358,945,3.88]],["name/1296",[939,73.869]],["parent/1296",[0,0,1,0.358,945,3.88]],["name/1297",[940,73.869]],["parent/1297",[0,0,1,0.358,945,3.88]],["name/1298",[182,60.482]],["parent/1298",[0,0,1,0.358,945,3.88]],["name/1299",[941,73.869]],["parent/1299",[0,0,1,0.358,945,3.88]],["name/1300",[183,67.975]],["parent/1300",[0,0,1,0.358,945,3.88]],["name/1301",[184,67.975]],["parent/1301",[0,0,1,0.358,945,3.88]],["name/1302",[942,73.869]],["parent/1302",[0,0,1,0.358,945,3.88]],["name/1303",[948,78.992]],["parent/1303",[0,0,1,0.358,2,1.721]],["name/1304",[661,49.12]],["parent/1304",[0,0,1,0.358,949,4.281]],["name/1305",[950,65.963]],["parent/1305",[0,0,1,0.358,949,4.281]],["name/1306",[951,61.598]],["parent/1306",[0,0,1,0.358,949,4.281]],["name/1307",[952,65.963]],["parent/1307",[0,0,1,0.358,949,4.281]],["name/1308",[953,65.963]],["parent/1308",[0,0,1,0.358,949,4.281]],["name/1309",[954,64.288]],["parent/1309",[0,0,1,0.358,949,4.281]],["name/1310",[139,54.946]],["parent/1310",[0,0,1,0.358,949,4.281]],["name/1311",[955,64.288]],["parent/1311",[0,0,1,0.358,949,4.281]],["name/1312",[956,64.288]],["parent/1312",[0,0,1,0.358,949,4.281]],["name/1313",[957,65.963]],["parent/1313",[0,0,1,0.358,949,4.281]],["name/1314",[958,61.598]],["parent/1314",[0,0,1,0.358,949,4.281]],["name/1315",[203,59.479]],["parent/1315",[0,0,1,0.358,949,4.281]],["name/1316",[959,65.963]],["parent/1316",[0,0,1,0.358,949,4.281]],["name/1317",[960,64.288]],["parent/1317",[0,0,1,0.358,949,4.281]],["name/1318",[122,58.566]],["parent/1318",[0,0,1,0.358,949,4.281]],["name/1319",[961,61.598]],["parent/1319",[0,0,1,0.358,949,4.281]],["name/1320",[962,61.598]],["parent/1320",[0,0,1,0.358,949,4.281]],["name/1321",[963,64.288]],["parent/1321",[0,0,1,0.358,949,4.281]],["name/1322",[964,61.598]],["parent/1322",[0,0,1,0.358,949,4.281]],["name/1323",[965,61.598]],["parent/1323",[0,0,1,0.358,949,4.281]],["name/1324",[966,61.598]],["parent/1324",[0,0,1,0.358,949,4.281]],["name/1325",[967,65.963]],["parent/1325",[0,0,1,0.358,949,4.281]],["name/1326",[968,65.963]],["parent/1326",[0,0,1,0.358,949,4.281]],["name/1327",[969,65.963]],["parent/1327",[0,0,1,0.358,949,4.281]],["name/1328",[970,65.963]],["parent/1328",[0,0,1,0.358,949,4.281]],["name/1329",[971,65.963]],["parent/1329",[0,0,1,0.358,949,4.281]],["name/1330",[972,65.963]],["parent/1330",[0,0,1,0.358,949,4.281]],["name/1331",[973,65.963]],["parent/1331",[0,0,1,0.358,949,4.281]],["name/1332",[130,58.566]],["parent/1332",[0,0,1,0.358,949,4.281]],["name/1333",[123,61.598]],["parent/1333",[0,0,1,0.358,949,4.281]],["name/1334",[974,61.598]],["parent/1334",[0,0,1,0.358,949,4.281]],["name/1335",[975,65.963]],["parent/1335",[0,0,1,0.358,949,4.281]],["name/1336",[976,65.963]],["parent/1336",[0,0,1,0.358,949,4.281]],["name/1337",[977,65.963]],["parent/1337",[0,0,1,0.358,949,4.281]],["name/1338",[978,65.963]],["parent/1338",[0,0,1,0.358,949,4.281]],["name/1339",[35,64.288]],["parent/1339",[0,0,1,0.358,949,4.281]],["name/1340",[979,65.963]],["parent/1340",[0,0,1,0.358,949,4.281]],["name/1341",[980,65.963]],["parent/1341",[0,0,1,0.358,949,4.281]],["name/1342",[981,65.963]],["parent/1342",[0,0,1,0.358,949,4.281]],["name/1343",[982,65.963]],["parent/1343",[0,0,1,0.358,949,4.281]],["name/1344",[983,65.963]],["parent/1344",[0,0,1,0.358,949,4.281]],["name/1345",[984,65.963]],["parent/1345",[0,0,1,0.358,949,4.281]],["name/1346",[985,65.963]],["parent/1346",[0,0,1,0.358,949,4.281]],["name/1347",[986,65.963]],["parent/1347",[0,0,1,0.358,949,4.281]],["name/1348",[987,65.963]],["parent/1348",[0,0,1,0.358,949,4.281]],["name/1349",[988,65.963]],["parent/1349",[0,0,1,0.358,949,4.281]],["name/1350",[989,65.963]],["parent/1350",[0,0,1,0.358,949,4.281]],["name/1351",[990,61.598]],["parent/1351",[0,0,1,0.358,949,4.281]],["name/1352",[991,60.482]],["parent/1352",[0,0,1,0.358,949,4.281]],["name/1353",[992,61.598]],["parent/1353",[0,0,1,0.358,949,4.281]],["name/1354",[993,65.963]],["parent/1354",[0,0,1,0.358,949,4.281]],["name/1355",[60,55.573]],["parent/1355",[0,0,1,0.358,949,4.281]],["name/1356",[994,65.963]],["parent/1356",[0,0,1,0.358,949,4.281]],["name/1357",[995,65.963]],["parent/1357",[0,0,1,0.358,949,4.281]],["name/1358",[996,65.963]],["parent/1358",[0,0,1,0.358,949,4.281]],["name/1359",[997,65.963]],["parent/1359",[0,0,1,0.358,949,4.281]],["name/1360",[998,65.963]],["parent/1360",[0,0,1,0.358,949,4.281]],["name/1361",[999,64.288]],["parent/1361",[0,0,1,0.358,949,4.281]],["name/1362",[1000,65.963]],["parent/1362",[0,0,1,0.358,949,4.281]],["name/1363",[1001,65.963]],["parent/1363",[0,0,1,0.358,949,4.281]],["name/1364",[1002,65.963]],["parent/1364",[0,0,1,0.358,949,4.281]],["name/1365",[1003,65.963]],["parent/1365",[0,0,1,0.358,949,4.281]],["name/1366",[1004,59.479]],["parent/1366",[0,0,1,0.358,949,4.281]],["name/1367",[1005,64.288]],["parent/1367",[0,0,1,0.358,2,1.721]],["name/1368",[1006,78.992]],["parent/1368",[0,0,1,0.358,1007,6.642]],["name/1369",[1008,78.992]],["parent/1369",[0,0,1,0.358,1007,6.642]],["name/1370",[1009,78.992]],["parent/1370",[0,0,1,0.358,1007,6.642]],["name/1371",[1010,78.992]],["parent/1371",[0,0,1,0.358,1007,6.642]],["name/1372",[1011,78.992]],["parent/1372",[0,0,1,0.358,1007,6.642]],["name/1373",[1012,78.992]],["parent/1373",[0,0,1,0.358,1007,6.642]],["name/1374",[1013,78.992]],["parent/1374",[0,0,1,0.358,2,1.721]],["name/1375",[1014,70.495]],["parent/1375",[0,0,1,0.358,1015,7.284]],["name/1376",[770,73.869]],["parent/1376",[0,0,1,0.358,1015,7.284]],["name/1377",[768,73.869]],["parent/1377",[0,0,1,0.358,1015,7.284]],["name/1378",[1016,78.992]],["parent/1378",[0,0,1,0.358,2,1.721]],["name/1379",[1017,78.992]],["parent/1379",[0,0,1,0.358,2,1.721]],["name/1380",[141,70.495]],["parent/1380",[0,0,1,0.358,1018,6.642]],["name/1381",[1019,73.869]],["parent/1381",[0,0,1,0.358,1018,6.642]],["name/1382",[49,28.994]],["parent/1382",[0,0,1,0.358,1018,6.642]],["name/1383",[1020,73.869]],["parent/1383",[0,0,1,0.358,1018,6.642]],["name/1384",[49,28.994]],["parent/1384",[0,0,1,0.358,1018,6.642]],["name/1385",[1021,73.869]],["parent/1385",[0,0,1,0.358,1018,6.642]],["name/1386",[1022,78.992]],["parent/1386",[0,0,1,0.358,2,1.721]],["name/1387",[1023,78.992]],["parent/1387",[0,0,1,0.358,1024,6.494]],["name/1388",[141,70.495]],["parent/1388",[0,0,1,0.358,1024,6.494]],["name/1389",[1019,73.869]],["parent/1389",[0,0,1,0.358,1024,6.494]],["name/1390",[49,28.994]],["parent/1390",[0,0,1,0.358,1024,6.494]],["name/1391",[1020,73.869]],["parent/1391",[0,0,1,0.358,1024,6.494]],["name/1392",[49,28.994]],["parent/1392",[0,0,1,0.358,1024,6.494]],["name/1393",[1021,73.869]],["parent/1393",[0,0,1,0.358,1024,6.494]],["name/1394",[1025,78.992]],["parent/1394",[0,0,1,0.358,2,1.721]],["name/1395",[659,50.982]],["parent/1395",[0,0,1,0.358,1026,6.146]],["name/1396",[49,28.994]],["parent/1396",[0,0,1,0.358,1026,6.146]],["name/1397",[660,50.982]],["parent/1397",[0,0,1,0.358,1026,6.146]],["name/1398",[49,28.994]],["parent/1398",[0,0,1,0.358,1026,6.146]],["name/1399",[661,49.12]],["parent/1399",[0,0,1,0.358,1026,6.146]],["name/1400",[49,28.994]],["parent/1400",[0,0,1,0.358,1026,6.146]],["name/1401",[662,62.853]],["parent/1401",[0,0,1,0.358,1026,6.146]],["name/1402",[49,28.994]],["parent/1402",[0,0,1,0.358,1026,6.146]],["name/1403",[663,52.292]],["parent/1403",[0,0,1,0.358,1026,6.146]],["name/1404",[49,28.994]],["parent/1404",[0,0,1,0.358,1026,6.146]],["name/1405",[1027,78.992]],["parent/1405",[0,0,1,0.358,2,1.721]],["name/1406",[1028,73.869]],["parent/1406",[0,0,1,0.358,1029,6.051]],["name/1407",[659,50.982]],["parent/1407",[0,0,1,0.358,1029,6.051]],["name/1408",[49,28.994]],["parent/1408",[0,0,1,0.358,1029,6.051]],["name/1409",[660,50.982]],["parent/1409",[0,0,1,0.358,1029,6.051]],["name/1410",[49,28.994]],["parent/1410",[0,0,1,0.358,1029,6.051]],["name/1411",[661,49.12]],["parent/1411",[0,0,1,0.358,1029,6.051]],["name/1412",[49,28.994]],["parent/1412",[0,0,1,0.358,1029,6.051]],["name/1413",[662,62.853]],["parent/1413",[0,0,1,0.358,1029,6.051]],["name/1414",[49,28.994]],["parent/1414",[0,0,1,0.358,1029,6.051]],["name/1415",[663,52.292]],["parent/1415",[0,0,1,0.358,1029,6.051]],["name/1416",[49,28.994]],["parent/1416",[0,0,1,0.358,1029,6.051]],["name/1417",[1030,78.992]],["parent/1417",[0,0,1,0.358,2,1.721]],["name/1418",[1031,67.975]],["parent/1418",[0,0,1,0.358,1032,5.965]],["name/1419",[130,58.566]],["parent/1419",[0,0,1,0.358,1032,5.965]],["name/1420",[1033,78.992]],["parent/1420",[0,0,1,0.358,1032,5.965]],["name/1421",[1034,70.495]],["parent/1421",[0,0,1,0.358,1032,5.965]],["name/1422",[1035,70.495]],["parent/1422",[0,0,1,0.358,1032,5.965]],["name/1423",[399,70.495]],["parent/1423",[0,0,1,0.358,1032,5.965]],["name/1424",[1036,78.992]],["parent/1424",[0,0,1,0.358,1032,5.965]],["name/1425",[1037,70.495]],["parent/1425",[0,0,1,0.358,1032,5.965]],["name/1426",[527,60.482]],["parent/1426",[0,0,1,0.358,1032,5.965]],["name/1427",[269,62.853]],["parent/1427",[0,0,1,0.358,1032,5.965]],["name/1428",[1038,78.992]],["parent/1428",[0,0,1,0.358,1032,5.965]],["name/1429",[1039,70.495]],["parent/1429",[0,0,1,0.358,1032,5.965]],["name/1430",[1040,78.992]],["parent/1430",[0,0,1,0.358,2,1.721]],["name/1431",[1041,78.992]],["parent/1431",[0,0,1,0.358,2,1.721]],["name/1432",[1042,78.992]],["parent/1432",[0,0,1,0.358,2,1.721]],["name/1433",[1043,78.992]],["parent/1433",[0,0,1,0.358,2,1.721]],["name/1434",[1044,78.992]],["parent/1434",[0,0,1,0.358,2,1.721]],["name/1435",[1045,78.992]],["parent/1435",[0,0,1,0.358,2,1.721]],["name/1436",[1046,78.992]],["parent/1436",[0,0,1,0.358,2,1.721]],["name/1437",[1047,73.869]],["parent/1437",[0,0,1,0.358,1048,5.559]],["name/1438",[7,49.466]],["parent/1438",[0,0,1,0.358,1048,5.559]],["name/1439",[6,44.774]],["parent/1439",[0,0,1,0.358,1048,5.559]],["name/1440",[1049,73.869]],["parent/1440",[0,0,1,0.358,1048,5.559]],["name/1441",[1050,64.288]],["parent/1441",[0,0,1,0.358,1048,5.559]],["name/1442",[682,59.479]],["parent/1442",[0,0,1,0.358,1048,5.559]],["name/1443",[1051,64.288]],["parent/1443",[0,0,1,0.358,1048,5.559]],["name/1444",[1004,59.479]],["parent/1444",[0,0,1,0.358,1048,5.559]],["name/1445",[49,28.994]],["parent/1445",[0,0,1,0.358,1048,5.559]],["name/1446",[1052,65.963]],["parent/1446",[0,0,1,0.358,1048,5.559]],["name/1447",[1005,64.288]],["parent/1447",[0,0,1,0.358,1048,5.559]],["name/1448",[1031,67.975]],["parent/1448",[0,0,1,0.358,1048,5.559]],["name/1449",[130,58.566]],["parent/1449",[0,0,1,0.358,1048,5.559]],["name/1450",[1034,70.495]],["parent/1450",[0,0,1,0.358,1048,5.559]],["name/1451",[1035,70.495]],["parent/1451",[0,0,1,0.358,1048,5.559]],["name/1452",[1037,70.495]],["parent/1452",[0,0,1,0.358,1048,5.559]],["name/1453",[527,60.482]],["parent/1453",[0,0,1,0.358,1048,5.559]],["name/1454",[1039,70.495]],["parent/1454",[0,0,1,0.358,1048,5.559]],["name/1455",[974,61.598]],["parent/1455",[0,0,1,0.358,2,1.721]],["name/1456",[49,28.994]],["parent/1456",[0,0,1,0.358,1053,8.162]],["name/1457",[1054,70.495]],["parent/1457",[0,0,1,0.358,2,1.721]],["name/1458",[49,28.994]],["parent/1458",[0,0,1,0.358,1055,8.162]],["name/1459",[1056,78.992]],["parent/1459",[0,0,1,0.358,2,1.721]],["name/1460",[974,61.598]],["parent/1460",[0,0,1,0.358,1057,5.403]],["name/1461",[1054,70.495]],["parent/1461",[0,0,1,0.358,1057,5.403]],["name/1462",[1058,70.495]],["parent/1462",[0,0,1,0.358,1057,5.403]],["name/1463",[992,61.598]],["parent/1463",[0,0,1,0.358,1057,5.403]],["name/1464",[965,61.598]],["parent/1464",[0,0,1,0.358,1057,5.403]],["name/1465",[958,61.598]],["parent/1465",[0,0,1,0.358,1057,5.403]],["name/1466",[961,61.598]],["parent/1466",[0,0,1,0.358,1057,5.403]],["name/1467",[962,61.598]],["parent/1467",[0,0,1,0.358,1057,5.403]],["name/1468",[990,61.598]],["parent/1468",[0,0,1,0.358,1057,5.403]],["name/1469",[991,60.482]],["parent/1469",[0,0,1,0.358,1057,5.403]],["name/1470",[964,61.598]],["parent/1470",[0,0,1,0.358,1057,5.403]],["name/1471",[951,61.598]],["parent/1471",[0,0,1,0.358,1057,5.403]],["name/1472",[1059,70.495]],["parent/1472",[0,0,1,0.358,1057,5.403]],["name/1473",[966,61.598]],["parent/1473",[0,0,1,0.358,1057,5.403]],["name/1474",[1060,70.495]],["parent/1474",[0,0,1,0.358,1057,5.403]],["name/1475",[203,59.479]],["parent/1475",[0,0,1,0.358,1057,5.403]],["name/1476",[1061,70.495]],["parent/1476",[0,0,1,0.358,1057,5.403]],["name/1477",[1062,70.495]],["parent/1477",[0,0,1,0.358,1057,5.403]],["name/1478",[1063,70.495]],["parent/1478",[0,0,1,0.358,1057,5.403]],["name/1479",[1064,70.495]],["parent/1479",[0,0,1,0.358,1057,5.403]],["name/1480",[1065,70.495]],["parent/1480",[0,0,1,0.358,1057,5.403]],["name/1481",[1058,70.495]],["parent/1481",[0,0,1,0.358,2,1.721]],["name/1482",[49,28.994]],["parent/1482",[0,0,1,0.358,1066,8.162]],["name/1483",[992,61.598]],["parent/1483",[0,0,1,0.358,2,1.721]],["name/1484",[49,28.994]],["parent/1484",[0,0,1,0.358,1067,8.162]],["name/1485",[965,61.598]],["parent/1485",[0,0,1,0.358,2,1.721]],["name/1486",[49,28.994]],["parent/1486",[0,0,1,0.358,1068,8.162]],["name/1487",[958,61.598]],["parent/1487",[0,0,1,0.358,2,1.721]],["name/1488",[49,28.994]],["parent/1488",[0,0,1,0.358,1069,8.162]],["name/1489",[961,61.598]],["parent/1489",[0,0,1,0.358,2,1.721]],["name/1490",[49,28.994]],["parent/1490",[0,0,1,0.358,1070,8.162]],["name/1491",[962,61.598]],["parent/1491",[0,0,1,0.358,2,1.721]],["name/1492",[49,28.994]],["parent/1492",[0,0,1,0.358,1071,8.162]],["name/1493",[990,61.598]],["parent/1493",[0,0,1,0.358,2,1.721]],["name/1494",[49,28.994]],["parent/1494",[0,0,1,0.358,1072,8.162]],["name/1495",[991,60.482]],["parent/1495",[0,0,1,0.358,2,1.721]],["name/1496",[49,28.994]],["parent/1496",[0,0,1,0.358,1073,8.162]],["name/1497",[964,61.598]],["parent/1497",[0,0,1,0.358,2,1.721]],["name/1498",[49,28.994]],["parent/1498",[0,0,1,0.358,1074,8.162]],["name/1499",[951,61.598]],["parent/1499",[0,0,1,0.358,2,1.721]],["name/1500",[49,28.994]],["parent/1500",[0,0,1,0.358,1075,8.162]],["name/1501",[1059,70.495]],["parent/1501",[0,0,1,0.358,2,1.721]],["name/1502",[49,28.994]],["parent/1502",[0,0,1,0.358,1076,8.162]],["name/1503",[966,61.598]],["parent/1503",[0,0,1,0.358,2,1.721]],["name/1504",[49,28.994]],["parent/1504",[0,0,1,0.358,1077,8.162]],["name/1505",[1060,70.495]],["parent/1505",[0,0,1,0.358,2,1.721]],["name/1506",[49,28.994]],["parent/1506",[0,0,1,0.358,1078,8.162]],["name/1507",[203,59.479]],["parent/1507",[0,0,1,0.358,2,1.721]],["name/1508",[49,28.994]],["parent/1508",[0,0,1,0.358,1079,8.162]],["name/1509",[1061,70.495]],["parent/1509",[0,0,1,0.358,2,1.721]],["name/1510",[49,28.994]],["parent/1510",[0,0,1,0.358,1080,8.162]],["name/1511",[1062,70.495]],["parent/1511",[0,0,1,0.358,2,1.721]],["name/1512",[49,28.994]],["parent/1512",[0,0,1,0.358,1081,8.162]],["name/1513",[1063,70.495]],["parent/1513",[0,0,1,0.358,2,1.721]],["name/1514",[49,28.994]],["parent/1514",[0,0,1,0.358,1082,8.162]],["name/1515",[1064,70.495]],["parent/1515",[0,0,1,0.358,2,1.721]],["name/1516",[49,28.994]],["parent/1516",[0,0,1,0.358,1083,8.162]],["name/1517",[1065,70.495]],["parent/1517",[0,0,1,0.358,2,1.721]],["name/1518",[49,28.994]],["parent/1518",[0,0,1,0.358,1084,8.162]],["name/1519",[1085,78.992]],["parent/1519",[0,0,1,0.358,2,1.721]],["name/1520",[7,49.466]],["parent/1520",[0,0,1,0.358,1086,5.311]],["name/1521",[59,60.482]],["parent/1521",[0,0,1,0.358,1086,5.311]],["name/1522",[1087,70.495]],["parent/1522",[0,0,1,0.358,1086,5.311]],["name/1523",[1088,70.495]],["parent/1523",[0,0,1,0.358,1086,5.311]],["name/1524",[1089,70.495]],["parent/1524",[0,0,1,0.358,1086,5.311]],["name/1525",[1090,70.495]],["parent/1525",[0,0,1,0.358,1086,5.311]],["name/1526",[1091,70.495]],["parent/1526",[0,0,1,0.358,1086,5.311]],["name/1527",[1092,70.495]],["parent/1527",[0,0,1,0.358,1086,5.311]],["name/1528",[62,67.975]],["parent/1528",[0,0,1,0.358,1086,5.311]],["name/1529",[49,28.994]],["parent/1529",[0,0,1,0.358,1086,5.311]],["name/1530",[61,65.963]],["parent/1530",[0,0,1,0.358,1086,5.311]],["name/1531",[49,28.994]],["parent/1531",[0,0,1,0.358,1086,5.311]],["name/1532",[1093,70.495]],["parent/1532",[0,0,1,0.358,1086,5.311]],["name/1533",[37,62.853]],["parent/1533",[0,0,1,0.358,1086,5.311]],["name/1534",[63,65.963]],["parent/1534",[0,0,1,0.358,1086,5.311]],["name/1535",[1094,70.495]],["parent/1535",[0,0,1,0.358,1086,5.311]],["name/1536",[82,64.288]],["parent/1536",[0,0,1,0.358,1086,5.311]],["name/1537",[1050,64.288]],["parent/1537",[0,0,1,0.358,1086,5.311]],["name/1538",[682,59.479]],["parent/1538",[0,0,1,0.358,1086,5.311]],["name/1539",[1051,64.288]],["parent/1539",[0,0,1,0.358,1086,5.311]],["name/1540",[1004,59.479]],["parent/1540",[0,0,1,0.358,1086,5.311]],["name/1541",[49,28.994]],["parent/1541",[0,0,1,0.358,1086,5.311]],["name/1542",[1052,65.963]],["parent/1542",[0,0,1,0.358,1086,5.311]],["name/1543",[1095,78.992]],["parent/1543",[0,0,1,0.358,2,1.721]],["name/1544",[1096,73.869]],["parent/1544",[0,0,1,0.358,1097,4.747]],["name/1545",[1098,73.869]],["parent/1545",[0,0,1,0.358,1097,4.747]],["name/1546",[1099,73.869]],["parent/1546",[0,0,1,0.358,1097,4.747]],["name/1547",[1100,73.869]],["parent/1547",[0,0,1,0.358,1097,4.747]],["name/1548",[1101,73.869]],["parent/1548",[0,0,1,0.358,1097,4.747]],["name/1549",[1102,73.869]],["parent/1549",[0,0,1,0.358,1097,4.747]],["name/1550",[1103,73.869]],["parent/1550",[0,0,1,0.358,1097,4.747]],["name/1551",[1104,73.869]],["parent/1551",[0,0,1,0.358,1097,4.747]],["name/1552",[1105,73.869]],["parent/1552",[0,0,1,0.358,1097,4.747]],["name/1553",[1106,73.869]],["parent/1553",[0,0,1,0.358,1097,4.747]],["name/1554",[1107,73.869]],["parent/1554",[0,0,1,0.358,1097,4.747]],["name/1555",[1108,73.869]],["parent/1555",[0,0,1,0.358,1097,4.747]],["name/1556",[1109,73.869]],["parent/1556",[0,0,1,0.358,1097,4.747]],["name/1557",[1110,73.869]],["parent/1557",[0,0,1,0.358,1097,4.747]],["name/1558",[1111,73.869]],["parent/1558",[0,0,1,0.358,1097,4.747]],["name/1559",[1112,73.869]],["parent/1559",[0,0,1,0.358,1097,4.747]],["name/1560",[1113,73.869]],["parent/1560",[0,0,1,0.358,1097,4.747]],["name/1561",[1114,73.869]],["parent/1561",[0,0,1,0.358,1097,4.747]],["name/1562",[279,67.975]],["parent/1562",[0,0,1,0.358,1097,4.747]],["name/1563",[1115,73.869]],["parent/1563",[0,0,1,0.358,1097,4.747]],["name/1564",[199,67.975]],["parent/1564",[0,0,1,0.358,1097,4.747]],["name/1565",[1116,73.869]],["parent/1565",[0,0,1,0.358,1097,4.747]],["name/1566",[1117,73.869]],["parent/1566",[0,0,1,0.358,1097,4.747]],["name/1567",[1118,73.869]],["parent/1567",[0,0,1,0.358,1097,4.747]],["name/1568",[1119,73.869]],["parent/1568",[0,0,1,0.358,1097,4.747]],["name/1569",[1120,73.869]],["parent/1569",[0,0,1,0.358,1097,4.747]],["name/1570",[1121,73.869]],["parent/1570",[0,0,1,0.358,1097,4.747]],["name/1571",[1122,73.869]],["parent/1571",[0,0,1,0.358,1097,4.747]],["name/1572",[1123,73.869]],["parent/1572",[0,0,1,0.358,1097,4.747]],["name/1573",[1124,73.869]],["parent/1573",[0,0,1,0.358,1097,4.747]],["name/1574",[1125,73.869]],["parent/1574",[0,0,1,0.358,1097,4.747]],["name/1575",[1126,73.869]],["parent/1575",[0,0,1,0.358,1097,4.747]],["name/1576",[1127,73.869]],["parent/1576",[0,0,1,0.358,1097,4.747]],["name/1577",[1128,73.869]],["parent/1577",[0,0,1,0.358,1097,4.747]],["name/1578",[1129,73.869]],["parent/1578",[0,0,1,0.358,1097,4.747]],["name/1579",[1130,73.869]],["parent/1579",[0,0,1,0.358,1097,4.747]],["name/1580",[1131,73.869]],["parent/1580",[0,0,1,0.358,1097,4.747]],["name/1581",[266,67.975]],["parent/1581",[0,0,1,0.358,1097,4.747]],["name/1582",[1132,73.869]],["parent/1582",[0,0,1,0.358,1097,4.747]],["name/1583",[1133,73.869]],["parent/1583",[0,0,1,0.358,1097,4.747]],["name/1584",[1134,78.992]],["parent/1584",[0,0,1,0.358,2,1.721]],["name/1585",[199,67.975]],["parent/1585",[0,0,1,0.358,1135,7.633]],["name/1586",[1116,73.869]],["parent/1586",[0,0,1,0.358,1135,7.633]],["name/1587",[1136,78.992]],["parent/1587",[0,0,1,0.358,2,1.721]],["name/1588",[1118,73.869]],["parent/1588",[0,0,1,0.358,1137,8.162]],["name/1589",[1138,78.992]],["parent/1589",[0,0,1,0.358,2,1.721]],["name/1590",[1123,73.869]],["parent/1590",[0,0,1,0.358,1139,6.494]],["name/1591",[1124,73.869]],["parent/1591",[0,0,1,0.358,1139,6.494]],["name/1592",[1125,73.869]],["parent/1592",[0,0,1,0.358,1139,6.494]],["name/1593",[1126,73.869]],["parent/1593",[0,0,1,0.358,1139,6.494]],["name/1594",[1127,73.869]],["parent/1594",[0,0,1,0.358,1139,6.494]],["name/1595",[1128,73.869]],["parent/1595",[0,0,1,0.358,1139,6.494]],["name/1596",[1129,73.869]],["parent/1596",[0,0,1,0.358,1139,6.494]],["name/1597",[1140,78.992]],["parent/1597",[0,0,1,0.358,2,1.721]],["name/1598",[1096,73.869]],["parent/1598",[0,0,1,0.358,1141,5.885]],["name/1599",[1098,73.869]],["parent/1599",[0,0,1,0.358,1141,5.885]],["name/1600",[1099,73.869]],["parent/1600",[0,0,1,0.358,1141,5.885]],["name/1601",[1100,73.869]],["parent/1601",[0,0,1,0.358,1141,5.885]],["name/1602",[1101,73.869]],["parent/1602",[0,0,1,0.358,1141,5.885]],["name/1603",[1102,73.869]],["parent/1603",[0,0,1,0.358,1141,5.885]],["name/1604",[1103,73.869]],["parent/1604",[0,0,1,0.358,1141,5.885]],["name/1605",[1104,73.869]],["parent/1605",[0,0,1,0.358,1141,5.885]],["name/1606",[1105,73.869]],["parent/1606",[0,0,1,0.358,1141,5.885]],["name/1607",[1106,73.869]],["parent/1607",[0,0,1,0.358,1141,5.885]],["name/1608",[1107,73.869]],["parent/1608",[0,0,1,0.358,1141,5.885]],["name/1609",[1108,73.869]],["parent/1609",[0,0,1,0.358,1141,5.885]],["name/1610",[1109,73.869]],["parent/1610",[0,0,1,0.358,1141,5.885]],["name/1611",[1142,78.992]],["parent/1611",[0,0,1,0.358,2,1.721]],["name/1612",[1119,73.869]],["parent/1612",[0,0,1,0.358,1143,7.024]],["name/1613",[1120,73.869]],["parent/1613",[0,0,1,0.358,1143,7.024]],["name/1614",[1121,73.869]],["parent/1614",[0,0,1,0.358,1143,7.024]],["name/1615",[1122,73.869]],["parent/1615",[0,0,1,0.358,1143,7.024]],["name/1616",[1144,78.992]],["parent/1616",[0,0,1,0.358,2,1.721]],["name/1617",[1110,73.869]],["parent/1617",[0,0,1,0.358,1145,7.633]],["name/1618",[1111,73.869]],["parent/1618",[0,0,1,0.358,1145,7.633]],["name/1619",[1146,78.992]],["parent/1619",[0,0,1,0.358,2,1.721]],["name/1620",[1117,73.869]],["parent/1620",[0,0,1,0.358,1147,8.162]],["name/1621",[1148,78.992]],["parent/1621",[0,0,1,0.358,2,1.721]],["name/1622",[1115,73.869]],["parent/1622",[0,0,1,0.358,1149,8.162]],["name/1623",[1150,78.992]],["parent/1623",[0,0,1,0.358,2,1.721]],["name/1624",[1112,73.869]],["parent/1624",[0,0,1,0.358,1151,7.024]],["name/1625",[1113,73.869]],["parent/1625",[0,0,1,0.358,1151,7.024]],["name/1626",[1114,73.869]],["parent/1626",[0,0,1,0.358,1151,7.024]],["name/1627",[279,67.975]],["parent/1627",[0,0,1,0.358,1151,7.024]],["name/1628",[1152,78.992]],["parent/1628",[0,0,1,0.358,2,1.721]],["name/1629",[1130,73.869]],["parent/1629",[0,0,1,0.358,1153,7.284]],["name/1630",[1131,73.869]],["parent/1630",[0,0,1,0.358,1153,7.284]],["name/1631",[266,67.975]],["parent/1631",[0,0,1,0.358,1153,7.284]],["name/1632",[1154,78.992]],["parent/1632",[0,0,1,0.358,2,1.721]],["name/1633",[1132,73.869]],["parent/1633",[0,0,1,0.358,1155,7.633]],["name/1634",[1133,73.869]],["parent/1634",[0,0,1,0.358,1155,7.633]],["name/1635",[1156,78.992]],["parent/1635",[0,0,1,0.358,2,1.721]],["name/1636",[1157,78.992]],["parent/1636",[0,0,1,0.358,1158,6.816]],["name/1637",[1159,78.992]],["parent/1637",[0,0,1,0.358,1158,6.816]],["name/1638",[1160,78.992]],["parent/1638",[0,0,1,0.358,1158,6.816]],["name/1639",[1161,78.992]],["parent/1639",[0,0,1,0.358,1158,6.816]],["name/1640",[49,28.994]],["parent/1640",[0,0,1,0.358,1158,6.816]],["name/1641",[1162,78.992]],["parent/1641",[0,0,1,0.358,2,1.721]],["name/1642",[1163,78.992]],["parent/1642",[0,0,1,0.358,1164,6.816]],["name/1643",[778,70.495]],["parent/1643",[0,0,1,0.358,1164,6.816]],["name/1644",[1165,73.869]],["parent/1644",[0,0,1,0.358,1164,6.816]],["name/1645",[1166,78.992]],["parent/1645",[0,0,1,0.358,1164,6.816]],["name/1646",[1167,73.869]],["parent/1646",[0,0,1,0.358,1164,6.816]],["name/1647",[1168,78.992]],["parent/1647",[0,0,1,0.358,2,1.721]],["name/1648",[1169,78.992]],["parent/1648",[0,0,1,0.358,1170,5.356]],["name/1649",[49,28.994]],["parent/1649",[0,0,1,0.358,1170,5.356]],["name/1650",[1171,73.869]],["parent/1650",[0,0,1,0.358,1170,5.356]],["name/1651",[49,28.994]],["parent/1651",[0,0,1,0.358,1170,5.356]],["name/1652",[1172,78.992]],["parent/1652",[0,0,1,0.358,1170,5.356]],["name/1653",[49,28.994]],["parent/1653",[0,0,1,0.358,1170,5.356]],["name/1654",[1173,78.992]],["parent/1654",[0,0,1,0.358,1170,5.356]],["name/1655",[49,28.994]],["parent/1655",[0,0,1,0.358,1170,5.356]],["name/1656",[1174,78.992]],["parent/1656",[0,0,1,0.358,1170,5.356]],["name/1657",[49,28.994]],["parent/1657",[0,0,1,0.358,1170,5.356]],["name/1658",[1175,78.992]],["parent/1658",[0,0,1,0.358,1170,5.356]],["name/1659",[49,28.994]],["parent/1659",[0,0,1,0.358,1170,5.356]],["name/1660",[1176,78.992]],["parent/1660",[0,0,1,0.358,1170,5.356]],["name/1661",[49,28.994]],["parent/1661",[0,0,1,0.358,1170,5.356]],["name/1662",[1177,78.992]],["parent/1662",[0,0,1,0.358,1170,5.356]],["name/1663",[49,28.994]],["parent/1663",[0,0,1,0.358,1170,5.356]],["name/1664",[1178,78.992]],["parent/1664",[0,0,1,0.358,1170,5.356]],["name/1665",[49,28.994]],["parent/1665",[0,0,1,0.358,1170,5.356]],["name/1666",[1179,78.992]],["parent/1666",[0,0,1,0.358,1170,5.356]],["name/1667",[49,28.994]],["parent/1667",[0,0,1,0.358,1170,5.356]],["name/1668",[1180,78.992]],["parent/1668",[0,0,1,0.358,1170,5.356]],["name/1669",[49,28.994]],["parent/1669",[0,0,1,0.358,1170,5.356]],["name/1670",[1181,78.992]],["parent/1670",[0,0,1,0.358,2,1.721]],["name/1671",[1182,78.992]],["parent/1671",[0,0,1,0.358,1183,6.494]],["name/1672",[198,70.495]],["parent/1672",[0,0,1,0.358,1183,6.494]],["name/1673",[1184,78.992]],["parent/1673",[0,0,1,0.358,1183,6.494]],["name/1674",[1185,78.992]],["parent/1674",[0,0,1,0.358,1183,6.494]],["name/1675",[1186,78.992]],["parent/1675",[0,0,1,0.358,1183,6.494]],["name/1676",[1187,78.992]],["parent/1676",[0,0,1,0.358,1183,6.494]],["name/1677",[1188,78.992]],["parent/1677",[0,0,1,0.358,1183,6.494]],["name/1678",[1189,78.992]],["parent/1678",[0,0,1,0.358,2,1.721]],["name/1679",[1190,78.992]],["parent/1679",[0,0,1,0.358,1191,6.816]],["name/1680",[1192,73.869]],["parent/1680",[0,0,1,0.358,1191,6.816]],["name/1681",[1193,73.869]],["parent/1681",[0,0,1,0.358,1191,6.816]],["name/1682",[1194,70.495]],["parent/1682",[0,0,1,0.358,1191,6.816]],["name/1683",[1195,70.495]],["parent/1683",[0,0,1,0.358,1191,6.816]],["name/1684",[1196,78.992]],["parent/1684",[0,0,1,0.358,2,1.721]],["name/1685",[1197,73.869]],["parent/1685",[0,0,1,0.358,1198,6.051]],["name/1686",[1199,73.869]],["parent/1686",[0,0,1,0.358,1198,6.051]],["name/1687",[1200,73.869]],["parent/1687",[0,0,1,0.358,1198,6.051]],["name/1688",[1201,78.992]],["parent/1688",[0,0,1,0.358,1198,6.051]],["name/1689",[1202,78.992]],["parent/1689",[0,0,1,0.358,1198,6.051]],["name/1690",[1203,78.992]],["parent/1690",[0,0,1,0.358,1198,6.051]],["name/1691",[1204,78.992]],["parent/1691",[0,0,1,0.358,1198,6.051]],["name/1692",[1205,78.992]],["parent/1692",[0,0,1,0.358,1198,6.051]],["name/1693",[1206,78.992]],["parent/1693",[0,0,1,0.358,1198,6.051]],["name/1694",[1207,78.992]],["parent/1694",[0,0,1,0.358,1198,6.051]],["name/1695",[1208,78.992]],["parent/1695",[0,0,1,0.358,1198,6.051]],["name/1696",[1209,78.992]],["parent/1696",[0,0,1,0.358,2,1.721]],["name/1697",[1210,78.992]],["parent/1697",[0,0,1,0.358,1211,6.494]],["name/1698",[1212,78.992]],["parent/1698",[0,0,1,0.358,1211,6.494]],["name/1699",[1213,78.992]],["parent/1699",[0,0,1,0.358,1211,6.494]],["name/1700",[1214,73.869]],["parent/1700",[0,0,1,0.358,1211,6.494]],["name/1701",[1215,59.479]],["parent/1701",[0,0,1,0.358,1211,6.494]],["name/1702",[1216,78.992]],["parent/1702",[0,0,1,0.358,1211,6.494]],["name/1703",[1217,78.992]],["parent/1703",[0,0,1,0.358,1211,6.494]],["name/1704",[1218,78.992]],["parent/1704",[0,0,1,0.358,2,1.721]],["name/1705",[32,53.271]],["parent/1705",[0,0,1,0.358,1219,7.284]],["name/1706",[1220,67.975]],["parent/1706",[0,0,1,0.358,1219,7.284]],["name/1707",[1221,67.975]],["parent/1707",[0,0,1,0.358,1219,7.284]],["name/1708",[1222,78.992]],["parent/1708",[0,0,1,0.358,2,1.721]],["name/1709",[32,53.271]],["parent/1709",[0,0,1,0.358,1223,7.284]],["name/1710",[1220,67.975]],["parent/1710",[0,0,1,0.358,1223,7.284]],["name/1711",[1221,67.975]],["parent/1711",[0,0,1,0.358,1223,7.284]],["name/1712",[39,73.869]],["parent/1712",[0,0,1,0.358,2,1.721]],["name/1713",[316,61.598]],["parent/1713",[0,0,1,0.358,1224,6.642]],["name/1714",[840,73.869]],["parent/1714",[0,0,1,0.358,1224,6.642]],["name/1715",[1225,70.495]],["parent/1715",[0,0,1,0.358,1224,6.642]],["name/1716",[32,53.271]],["parent/1716",[0,0,1,0.358,1224,6.642]],["name/1717",[1220,67.975]],["parent/1717",[0,0,1,0.358,1224,6.642]],["name/1718",[1221,67.975]],["parent/1718",[0,0,1,0.358,1224,6.642]],["name/1719",[42,73.869]],["parent/1719",[0,0,1,0.358,2,1.721]],["name/1720",[190,59.479]],["parent/1720",[0,0,1,0.358,1226,7.024]],["name/1721",[32,53.271]],["parent/1721",[0,0,1,0.358,1226,7.024]],["name/1722",[1220,67.975]],["parent/1722",[0,0,1,0.358,1226,7.024]],["name/1723",[1221,67.975]],["parent/1723",[0,0,1,0.358,1226,7.024]],["name/1724",[627,67.975]],["parent/1724",[0,0,1,0.358,2,1.721]],["name/1725",[1227,78.992]],["parent/1725",[0,0,1,0.358,2,1.721]],["name/1726",[179,60.482]],["parent/1726",[0,0,1,0.358,1228,7.284]],["name/1727",[1229,78.992]],["parent/1727",[0,0,1,0.358,1228,7.284]],["name/1728",[1230,78.992]],["parent/1728",[0,0,1,0.358,1228,7.284]],["name/1729",[1231,78.992]],["parent/1729",[0,0,1,0.358,2,1.721]],["name/1730",[49,28.994]],["parent/1730",[0,0,1,0.358,1232,8.162]],["name/1731",[1233,78.992]],["parent/1731",[0,0,1,0.358,2,1.721]],["name/1732",[1234,78.992]],["parent/1732",[0,0,1,0.358,2,1.721]],["name/1733",[49,28.994]],["parent/1733",[0,0,1,0.358,1235,8.162]],["name/1734",[1236,78.992]],["parent/1734",[0,0,1,0.358,2,1.721]],["name/1735",[1237,78.992]],["parent/1735",[0,0,1,0.358,2,1.721]],["name/1736",[49,28.994]],["parent/1736",[0,0,1,0.358,1238,8.162]],["name/1737",[1239,78.992]],["parent/1737",[0,0,1,0.358,2,1.721]],["name/1738",[1240,78.992]],["parent/1738",[0,0,1,0.358,2,1.721]],["name/1739",[1241,78.992]],["parent/1739",[0,0,1,0.358,2,1.721]],["name/1740",[1242,78.992]],["parent/1740",[0,0,1,0.358,2,1.721]],["name/1741",[49,28.994]],["parent/1741",[0,0,1,0.358,1243,8.162]],["name/1742",[1244,78.992]],["parent/1742",[0,0,1,0.358,2,1.721]],["name/1743",[391,73.869]],["parent/1743",[0,0,1,0.358,1245,7.633]],["name/1744",[1246,78.992]],["parent/1744",[0,0,1,0.358,1245,7.633]],["name/1745",[1247,78.992]],["parent/1745",[0,0,1,0.358,2,1.721]],["name/1746",[1050,64.288]],["parent/1746",[0,0,1,0.358,2,1.721]],["name/1747",[49,28.994]],["parent/1747",[0,0,1,0.358,1248,8.162]],["name/1748",[1051,64.288]],["parent/1748",[0,0,1,0.358,2,1.721]],["name/1749",[49,28.994]],["parent/1749",[0,0,1,0.358,1249,8.162]],["name/1750",[1250,78.992]],["parent/1750",[0,0,1,0.358,2,1.721]],["name/1751",[1251,78.992]],["parent/1751",[0,0,1,0.358,2,1.721]],["name/1752",[32,53.271]],["parent/1752",[0,0,1,0.358,1252,7.284]],["name/1753",[1253,62.853]],["parent/1753",[0,0,1,0.358,1252,7.284]],["name/1754",[1254,62.853]],["parent/1754",[0,0,1,0.358,1252,7.284]],["name/1755",[1255,78.992]],["parent/1755",[0,0,1,0.358,2,1.721]],["name/1756",[664,67.975]],["parent/1756",[0,0,1,0.358,1256,7.024]],["name/1757",[32,53.271]],["parent/1757",[0,0,1,0.358,1256,7.024]],["name/1758",[1253,62.853]],["parent/1758",[0,0,1,0.358,1256,7.024]],["name/1759",[1254,62.853]],["parent/1759",[0,0,1,0.358,1256,7.024]],["name/1760",[1257,78.992]],["parent/1760",[0,0,1,0.358,2,1.721]],["name/1761",[664,67.975]],["parent/1761",[0,0,1,0.358,1258,6.642]],["name/1762",[1259,78.992]],["parent/1762",[0,0,1,0.358,1258,6.642]],["name/1763",[1260,78.992]],["parent/1763",[0,0,1,0.358,1258,6.642]],["name/1764",[32,53.271]],["parent/1764",[0,0,1,0.358,1258,6.642]],["name/1765",[1253,62.853]],["parent/1765",[0,0,1,0.358,1258,6.642]],["name/1766",[1254,62.853]],["parent/1766",[0,0,1,0.358,1258,6.642]],["name/1767",[1261,78.992]],["parent/1767",[0,0,1,0.358,2,1.721]],["name/1768",[664,67.975]],["parent/1768",[0,0,1,0.358,1262,7.024]],["name/1769",[32,53.271]],["parent/1769",[0,0,1,0.358,1262,7.024]],["name/1770",[1253,62.853]],["parent/1770",[0,0,1,0.358,1262,7.024]],["name/1771",[1254,62.853]],["parent/1771",[0,0,1,0.358,1262,7.024]],["name/1772",[1263,78.992]],["parent/1772",[0,0,1,0.358,2,1.721]],["name/1773",[1264,78.992]],["parent/1773",[0,0,1,0.358,1265,6.642]],["name/1774",[1266,78.992]],["parent/1774",[0,0,1,0.358,1265,6.642]],["name/1775",[1267,78.992]],["parent/1775",[0,0,1,0.358,1265,6.642]],["name/1776",[32,53.271]],["parent/1776",[0,0,1,0.358,1265,6.642]],["name/1777",[1253,62.853]],["parent/1777",[0,0,1,0.358,1265,6.642]],["name/1778",[1254,62.853]],["parent/1778",[0,0,1,0.358,1265,6.642]],["name/1779",[1268,78.992]],["parent/1779",[0,0,1,0.358,2,1.721]],["name/1780",[1269,78.992]],["parent/1780",[0,0,1,0.358,1270,7.024]],["name/1781",[32,53.271]],["parent/1781",[0,0,1,0.358,1270,7.024]],["name/1782",[1253,62.853]],["parent/1782",[0,0,1,0.358,1270,7.024]],["name/1783",[1254,62.853]],["parent/1783",[0,0,1,0.358,1270,7.024]],["name/1784",[1271,78.992]],["parent/1784",[0,0,1,0.358,2,1.721]],["name/1785",[1272,78.992]],["parent/1785",[0,0,1,0.358,2,1.721]],["name/1786",[1273,78.992]],["parent/1786",[0,0,1,0.358,1274,6.816]],["name/1787",[49,28.994]],["parent/1787",[0,0,1,0.358,1274,6.816]],["name/1788",[32,53.271]],["parent/1788",[0,0,1,0.358,1274,6.816]],["name/1789",[1253,62.853]],["parent/1789",[0,0,1,0.358,1274,6.816]],["name/1790",[1254,62.853]],["parent/1790",[0,0,1,0.358,1274,6.816]],["name/1791",[1275,78.992]],["parent/1791",[0,0,1,0.358,2,1.721]],["name/1792",[1276,78.992]],["parent/1792",[0,0,1,0.358,2,1.721]],["name/1793",[49,28.994]],["parent/1793",[0,0,1,0.358,1277,8.162]],["name/1794",[1278,78.992]],["parent/1794",[0,0,1,0.317,2,1.524,3,4.274]],["name/1795",[155,65.963]],["parent/1795",[0,0,1,0.317,2,1.524,1279,6.45]],["name/1796",[197,73.869]],["parent/1796",[0,0,1,0.317,2,1.524,1279,6.45]],["name/1797",[157,65.963]],["parent/1797",[0,0,1,0.317,2,1.524,1279,6.45]],["name/1798",[1280,78.992]],["parent/1798",[0,0,1,0.317,2,1.524,3,4.274]],["name/1799",[419,67.975]],["parent/1799",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1800",[444,73.869]],["parent/1800",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1801",[445,73.869]],["parent/1801",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1802",[446,73.869]],["parent/1802",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1803",[447,73.869]],["parent/1803",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1804",[448,73.869]],["parent/1804",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1805",[449,73.869]],["parent/1805",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1806",[450,73.869]],["parent/1806",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1807",[451,73.869]],["parent/1807",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1808",[452,73.869]],["parent/1808",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1809",[441,67.975]],["parent/1809",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1810",[1282,78.992]],["parent/1810",[0,0,1,0.317,2,1.524,3,4.274]],["name/1811",[296,73.869]],["parent/1811",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1812",[298,73.869]],["parent/1812",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1813",[299,73.869]],["parent/1813",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1814",[300,73.869]],["parent/1814",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1815",[1284,78.992]],["parent/1815",[0,0,1,0.317,2,1.524,3,4.274]],["name/1816",[199,67.975]],["parent/1816",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1817",[92,65.963]],["parent/1817",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1818",[201,50.581]],["parent/1818",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1819",[202,70.495]],["parent/1819",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1820",[122,58.566]],["parent/1820",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1821",[203,59.479]],["parent/1821",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1822",[93,67.975]],["parent/1822",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1823",[204,73.869]],["parent/1823",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1824",[205,67.975]],["parent/1824",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1825",[206,73.869]],["parent/1825",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1826",[207,73.869]],["parent/1826",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1827",[208,67.975]],["parent/1827",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1828",[209,73.869]],["parent/1828",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1829",[1286,78.992]],["parent/1829",[0,0,1,0.317,2,1.524,3,4.274]],["name/1830",[353,73.869]],["parent/1830",[0,0,1,0.317,2,1.524,1287,6.45]],["name/1831",[355,65.963]],["parent/1831",[0,0,1,0.317,2,1.524,1287,6.45]],["name/1832",[356,73.869]],["parent/1832",[0,0,1,0.317,2,1.524,1287,6.45]],["name/1833",[1288,78.992]],["parent/1833",[0,0,1,0.317,2,1.524,3,4.274]],["name/1834",[211,73.869]],["parent/1834",[0,0,1,0.317,2,1.524,1289,6.759]],["name/1835",[213,73.869]],["parent/1835",[0,0,1,0.317,2,1.524,1289,6.759]],["name/1836",[1290,78.992]],["parent/1836",[0,0,1,0.317,2,1.524,3,4.274]],["name/1837",[215,67.975]],["parent/1837",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1838",[153,60.482]],["parent/1838",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1839",[217,73.869]],["parent/1839",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1840",[218,73.869]],["parent/1840",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1841",[219,73.869]],["parent/1841",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1842",[175,59.479]],["parent/1842",[0,0,1,0.317,2,1.524,1291,5.882]],["name/1843",[1292,78.992]],["parent/1843",[0,0,1,0.317,2,1.524,3,4.274]],["name/1844",[182,60.482]],["parent/1844",[0,0,1,0.317,2,1.524,1293,6.759]],["name/1845",[190,59.479]],["parent/1845",[0,0,1,0.317,2,1.524,1293,6.759]],["name/1846",[1294,78.992]],["parent/1846",[0,0,1,0.317,2,1.524,3,4.274]],["name/1847",[192,67.975]],["parent/1847",[0,0,1,0.317,2,1.524,1295,6.759]],["name/1848",[194,67.975]],["parent/1848",[0,0,1,0.317,2,1.524,1295,6.759]],["name/1849",[1296,78.992]],["parent/1849",[0,0,1,0.317,2,1.524,3,4.274]],["name/1850",[221,73.869]],["parent/1850",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1851",[223,73.869]],["parent/1851",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1852",[224,73.869]],["parent/1852",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1853",[225,73.869]],["parent/1853",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1854",[1298,78.992]],["parent/1854",[0,0,1,0.317,2,1.524,3,4.274]],["name/1855",[454,73.869]],["parent/1855",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1856",[456,73.869]],["parent/1856",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1857",[457,73.869]],["parent/1857",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1858",[458,73.869]],["parent/1858",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1859",[459,73.869]],["parent/1859",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1860",[460,73.869]],["parent/1860",[0,0,1,0.317,2,1.524,1299,5.882]],["name/1861",[1300,78.992]],["parent/1861",[0,0,1,0.317,2,1.524,3,4.274]],["name/1862",[227,73.869]],["parent/1862",[0,0,1,0.317,2,1.524,1301,6.759]],["name/1863",[229,73.869]],["parent/1863",[0,0,1,0.317,2,1.524,1301,6.759]],["name/1864",[1302,78.992]],["parent/1864",[0,0,1,0.317,2,1.524,3,4.274]],["name/1865",[231,73.869]],["parent/1865",[0,0,1,0.317,2,1.524,1303,6.759]],["name/1866",[233,73.869]],["parent/1866",[0,0,1,0.317,2,1.524,1303,6.759]],["name/1867",[1304,78.992]],["parent/1867",[0,0,1,0.317,2,1.524,3,4.274]],["name/1868",[85,73.869]],["parent/1868",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1869",[87,73.869]],["parent/1869",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1870",[88,65.963]],["parent/1870",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1871",[89,73.869]],["parent/1871",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1872",[90,73.869]],["parent/1872",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1873",[91,73.869]],["parent/1873",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1874",[92,65.963]],["parent/1874",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1875",[93,67.975]],["parent/1875",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1876",[94,70.495]],["parent/1876",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1877",[95,73.869]],["parent/1877",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1878",[96,67.975]],["parent/1878",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1879",[97,73.869]],["parent/1879",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1880",[98,73.869]],["parent/1880",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1881",[99,65.963]],["parent/1881",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1882",[100,60.482]],["parent/1882",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1883",[101,73.869]],["parent/1883",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1884",[102,73.869]],["parent/1884",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1885",[103,73.869]],["parent/1885",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1886",[104,70.495]],["parent/1886",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1887",[105,73.869]],["parent/1887",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1888",[106,70.495]],["parent/1888",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1889",[107,70.495]],["parent/1889",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1890",[108,73.869]],["parent/1890",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1891",[109,73.869]],["parent/1891",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1892",[110,73.869]],["parent/1892",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1893",[111,65.963]],["parent/1893",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1894",[112,73.869]],["parent/1894",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1895",[113,73.869]],["parent/1895",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1896",[114,73.869]],["parent/1896",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1897",[115,73.869]],["parent/1897",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1898",[116,64.288]],["parent/1898",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1899",[117,73.869]],["parent/1899",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1900",[118,73.869]],["parent/1900",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1901",[119,73.869]],["parent/1901",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1902",[120,73.869]],["parent/1902",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1903",[121,70.495]],["parent/1903",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1904",[122,58.566]],["parent/1904",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1905",[123,61.598]],["parent/1905",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1906",[124,73.869]],["parent/1906",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1907",[125,73.869]],["parent/1907",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1908",[126,67.975]],["parent/1908",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1909",[127,70.495]],["parent/1909",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1910",[128,70.495]],["parent/1910",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1911",[129,64.288]],["parent/1911",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1912",[130,58.566]],["parent/1912",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1913",[131,73.869]],["parent/1913",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1914",[132,73.869]],["parent/1914",[0,0,1,0.317,2,1.524,1305,4.057]],["name/1915",[1306,78.992]],["parent/1915",[0,0,1,0.317,2,1.524,3,4.274]],["name/1916",[134,73.869]],["parent/1916",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1917",[136,73.869]],["parent/1917",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1918",[137,73.869]],["parent/1918",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1919",[138,73.869]],["parent/1919",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1920",[139,54.946]],["parent/1920",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1921",[140,73.869]],["parent/1921",[0,0,1,0.317,2,1.524,1307,5.882]],["name/1922",[1308,78.992]],["parent/1922",[0,0,1,0.317,2,1.524,3,4.274]],["name/1923",[235,73.869]],["parent/1923",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1924",[237,73.869]],["parent/1924",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1925",[238,73.869]],["parent/1925",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1926",[239,73.869]],["parent/1926",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1927",[1310,78.992]],["parent/1927",[0,0,1,0.317,2,1.524,3,4.274]],["name/1928",[241,73.869]],["parent/1928",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1929",[243,73.869]],["parent/1929",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1930",[244,65.963]],["parent/1930",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1931",[150,67.975]],["parent/1931",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1932",[245,73.869]],["parent/1932",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1933",[246,73.869]],["parent/1933",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1934",[247,73.869]],["parent/1934",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1935",[248,73.869]],["parent/1935",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1936",[249,73.869]],["parent/1936",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1937",[250,73.869]],["parent/1937",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1938",[251,73.869]],["parent/1938",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1939",[252,73.869]],["parent/1939",[0,0,1,0.317,2,1.524,1311,5.282]],["name/1940",[1312,78.992]],["parent/1940",[0,0,1,0.317,2,1.524,3,4.274]],["name/1941",[253,73.869]],["parent/1941",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1942",[255,73.869]],["parent/1942",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1943",[256,73.869]],["parent/1943",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1944",[208,67.975]],["parent/1944",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1945",[257,73.869]],["parent/1945",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1946",[258,73.869]],["parent/1946",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1947",[259,73.869]],["parent/1947",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1948",[260,73.869]],["parent/1948",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1949",[261,73.869]],["parent/1949",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1950",[262,73.869]],["parent/1950",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1951",[263,73.869]],["parent/1951",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1952",[264,73.869]],["parent/1952",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1953",[265,73.869]],["parent/1953",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1954",[266,67.975]],["parent/1954",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1955",[267,73.869]],["parent/1955",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1956",[268,73.869]],["parent/1956",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1957",[269,62.853]],["parent/1957",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1958",[270,73.869]],["parent/1958",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1959",[271,73.869]],["parent/1959",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1960",[272,73.869]],["parent/1960",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1961",[273,73.869]],["parent/1961",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1962",[274,73.869]],["parent/1962",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1963",[275,73.869]],["parent/1963",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1964",[276,73.869]],["parent/1964",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1965",[277,73.869]],["parent/1965",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1966",[278,73.869]],["parent/1966",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1967",[279,67.975]],["parent/1967",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1968",[280,73.869]],["parent/1968",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1969",[281,73.869]],["parent/1969",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1970",[282,73.869]],["parent/1970",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1971",[1314,78.992]],["parent/1971",[0,0,1,0.317,2,1.524,3,4.274]],["name/1972",[284,67.975]],["parent/1972",[0,0,1,0.317,2,1.524,1315,6.759]],["name/1973",[286,67.975]],["parent/1973",[0,0,1,0.317,2,1.524,1315,6.759]],["name/1974",[1316,78.992]],["parent/1974",[0,0,1,0.317,2,1.524,3,4.274]],["name/1975",[288,73.869]],["parent/1975",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1976",[290,73.869]],["parent/1976",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1977",[291,73.869]],["parent/1977",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1978",[192,67.975]],["parent/1978",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1979",[292,73.869]],["parent/1979",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1980",[1318,78.992]],["parent/1980",[0,0,1,0.317,2,1.524,3,4.274]],["name/1981",[302,64.288]],["parent/1981",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1982",[345,73.869]],["parent/1982",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1983",[346,73.869]],["parent/1983",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1984",[347,73.869]],["parent/1984",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1985",[348,73.869]],["parent/1985",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1986",[349,73.869]],["parent/1986",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1987",[350,73.869]],["parent/1987",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1988",[351,73.869]],["parent/1988",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1989",[1320,78.992]],["parent/1989",[0,0,1,0.317,2,1.524,3,4.274]],["name/1990",[284,67.975]],["parent/1990",[0,0,1,0.317,2,1.524,1321,6.759]],["name/1991",[286,67.975]],["parent/1991",[0,0,1,0.317,2,1.524,1321,6.759]],["name/1992",[1322,78.992]],["parent/1992",[0,0,1,0.317,2,1.524,3,4.274]],["name/1993",[142,73.869]],["parent/1993",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1994",[144,73.869]],["parent/1994",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1995",[145,73.869]],["parent/1995",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1996",[146,73.869]],["parent/1996",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1997",[147,67.975]],["parent/1997",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1998",[148,73.869]],["parent/1998",[0,0,1,0.317,2,1.524,1323,4.274]],["name/1999",[149,70.495]],["parent/1999",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2000",[150,67.975]],["parent/2000",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2001",[151,73.869]],["parent/2001",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2002",[152,73.869]],["parent/2002",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2003",[153,60.482]],["parent/2003",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2004",[154,73.869]],["parent/2004",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2005",[155,65.963]],["parent/2005",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2006",[156,73.869]],["parent/2006",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2007",[157,65.963]],["parent/2007",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2008",[158,73.869]],["parent/2008",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2009",[159,73.869]],["parent/2009",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2010",[96,67.975]],["parent/2010",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2011",[160,73.869]],["parent/2011",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2012",[161,73.869]],["parent/2012",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2013",[162,73.869]],["parent/2013",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2014",[163,73.869]],["parent/2014",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2015",[164,73.869]],["parent/2015",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2016",[165,70.495]],["parent/2016",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2017",[166,73.869]],["parent/2017",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2018",[167,73.869]],["parent/2018",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2019",[168,73.869]],["parent/2019",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2020",[169,73.869]],["parent/2020",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2021",[170,73.869]],["parent/2021",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2022",[171,73.869]],["parent/2022",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2023",[172,73.869]],["parent/2023",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2024",[173,73.869]],["parent/2024",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2025",[174,67.975]],["parent/2025",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2026",[175,59.479]],["parent/2026",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2027",[176,73.869]],["parent/2027",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2028",[177,73.869]],["parent/2028",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2029",[147,67.975]],["parent/2029",[0,0,1,0.317,2,1.524,1323,4.274]],["name/2030",[1324,78.992]],["parent/2030",[0,0,1,0.317,2,1.524,3,4.274]],["name/2031",[302,64.288]],["parent/2031",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2032",[359,73.869]],["parent/2032",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2033",[360,73.869]],["parent/2033",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2034",[361,73.869]],["parent/2034",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2035",[362,73.869]],["parent/2035",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2036",[363,73.869]],["parent/2036",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2037",[364,73.869]],["parent/2037",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2038",[365,73.869]],["parent/2038",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2039",[366,73.869]],["parent/2039",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2040",[367,73.869]],["parent/2040",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2041",[368,73.869]],["parent/2041",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2042",[369,73.869]],["parent/2042",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2043",[370,73.869]],["parent/2043",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2044",[1326,78.992]],["parent/2044",[0,0,1,0.317,2,1.524,3,4.274]],["name/2045",[372,73.869]],["parent/2045",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2046",[374,73.869]],["parent/2046",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2047",[375,73.869]],["parent/2047",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2048",[376,73.869]],["parent/2048",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2049",[377,73.869]],["parent/2049",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2050",[378,73.869]],["parent/2050",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2051",[379,67.975]],["parent/2051",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2052",[380,73.869]],["parent/2052",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2053",[1328,78.992]],["parent/2053",[0,0,1,0.317,2,1.524,3,4.274]],["name/2054",[302,64.288]],["parent/2054",[0,0,1,0.317,2,1.524,1329,6.45]],["name/2055",[304,73.869]],["parent/2055",[0,0,1,0.317,2,1.524,1329,6.45]],["name/2056",[305,73.869]],["parent/2056",[0,0,1,0.317,2,1.524,1329,6.45]],["name/2057",[1330,78.992]],["parent/2057",[0,0,1,0.317,2,1.524,3,4.274]],["name/2058",[179,60.482]],["parent/2058",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2059",[181,73.869]],["parent/2059",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2060",[182,60.482]],["parent/2060",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2061",[183,67.975]],["parent/2061",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2062",[184,67.975]],["parent/2062",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2063",[185,67.975]],["parent/2063",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2064",[186,67.975]],["parent/2064",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2065",[187,67.975]],["parent/2065",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2066",[1332,78.992]],["parent/2066",[0,0,1,0.317,2,1.524,3,4.274]],["name/2067",[419,67.975]],["parent/2067",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2068",[421,73.869]],["parent/2068",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2069",[422,73.869]],["parent/2069",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2070",[423,73.869]],["parent/2070",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2071",[424,73.869]],["parent/2071",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2072",[425,73.869]],["parent/2072",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2073",[426,73.869]],["parent/2073",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2074",[427,73.869]],["parent/2074",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2075",[428,73.869]],["parent/2075",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2076",[429,73.869]],["parent/2076",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2077",[430,73.869]],["parent/2077",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2078",[431,73.869]],["parent/2078",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2079",[432,73.869]],["parent/2079",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2080",[433,73.869]],["parent/2080",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2081",[434,73.869]],["parent/2081",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2082",[435,73.869]],["parent/2082",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2083",[436,73.869]],["parent/2083",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2084",[437,73.869]],["parent/2084",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2085",[438,73.869]],["parent/2085",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2086",[439,73.869]],["parent/2086",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2087",[440,73.869]],["parent/2087",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2088",[441,67.975]],["parent/2088",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2089",[1334,78.992]],["parent/2089",[0,0,1,0.317,2,1.524,3,4.274]],["name/2090",[415,67.975]],["parent/2090",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2091",[463,73.869]],["parent/2091",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2092",[464,73.869]],["parent/2092",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2093",[465,73.869]],["parent/2093",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2094",[1336,78.992]],["parent/2094",[0,0,1,0.317,2,1.524,3,4.274]],["name/2095",[392,73.869]],["parent/2095",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2096",[394,73.869]],["parent/2096",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2097",[395,73.869]],["parent/2097",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2098",[396,73.869]],["parent/2098",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2099",[397,73.869]],["parent/2099",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2100",[398,73.869]],["parent/2100",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2101",[399,70.495]],["parent/2101",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2102",[174,67.975]],["parent/2102",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2103",[400,73.869]],["parent/2103",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2104",[401,73.869]],["parent/2104",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2105",[402,73.869]],["parent/2105",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2106",[403,73.869]],["parent/2106",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2107",[404,73.869]],["parent/2107",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2108",[405,73.869]],["parent/2108",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2109",[406,73.869]],["parent/2109",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2110",[240,70.495]],["parent/2110",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2111",[244,65.963]],["parent/2111",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2112",[407,73.869]],["parent/2112",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2113",[408,73.869]],["parent/2113",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2114",[409,73.869]],["parent/2114",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2115",[410,73.869]],["parent/2115",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2116",[411,73.869]],["parent/2116",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2117",[412,73.869]],["parent/2117",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2118",[413,73.869]],["parent/2118",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2119",[1338,78.992]],["parent/2119",[0,0,1,0.317,2,1.524,3,4.274]],["name/2120",[215,67.975]],["parent/2120",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2121",[153,60.482]],["parent/2121",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2122",[308,73.869]],["parent/2122",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2123",[309,73.869]],["parent/2123",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2124",[1340,78.992]],["parent/2124",[0,0,1,0.317,2,1.524,3,4.274]],["name/2125",[311,73.869]],["parent/2125",[0,0,1,0.317,2,1.524,1341,6.45]],["name/2126",[313,73.869]],["parent/2126",[0,0,1,0.317,2,1.524,1341,6.45]],["name/2127",[314,73.869]],["parent/2127",[0,0,1,0.317,2,1.524,1341,6.45]],["name/2128",[1342,78.992]],["parent/2128",[0,0,1,0.317,2,1.524,3,4.274]],["name/2129",[316,61.598]],["parent/2129",[0,0,1,0.317,2,1.524,1343,7.228]],["name/2130",[1344,78.992]],["parent/2130",[0,0,1,0.317,2,1.524,3,4.274]],["name/2131",[415,67.975]],["parent/2131",[0,0,1,0.317,2,1.524,1345,6.45]],["name/2132",[417,65.963]],["parent/2132",[0,0,1,0.317,2,1.524,1345,6.45]],["name/2133",[269,62.853]],["parent/2133",[0,0,1,0.317,2,1.524,1345,6.45]],["name/2134",[1346,78.992]],["parent/2134",[0,0,1,0.317,2,1.524,3,4.274]],["name/2135",[379,67.975]],["parent/2135",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2136",[383,73.869]],["parent/2136",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2137",[384,73.869]],["parent/2137",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2138",[385,73.869]],["parent/2138",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2139",[386,73.869]],["parent/2139",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2140",[387,73.869]],["parent/2140",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2141",[388,73.869]],["parent/2141",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2142",[389,73.869]],["parent/2142",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2143",[390,73.869]],["parent/2143",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2144",[1348,78.992]],["parent/2144",[0,0,1,0.317,2,1.524,3,4.274]],["name/2145",[319,73.869]],["parent/2145",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2146",[321,73.869]],["parent/2146",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2147",[322,73.869]],["parent/2147",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2148",[323,73.869]],["parent/2148",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2149",[324,73.869]],["parent/2149",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2150",[325,73.869]],["parent/2150",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2151",[326,73.869]],["parent/2151",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2152",[327,73.869]],["parent/2152",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2153",[328,73.869]],["parent/2153",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2154",[329,73.869]],["parent/2154",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2155",[330,73.869]],["parent/2155",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2156",[331,73.869]],["parent/2156",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2157",[332,73.869]],["parent/2157",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2158",[333,73.869]],["parent/2158",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2159",[334,70.495]],["parent/2159",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2160",[335,70.495]],["parent/2160",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2161",[336,70.495]],["parent/2161",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2162",[337,73.869]],["parent/2162",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2163",[338,73.869]],["parent/2163",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2164",[339,73.869]],["parent/2164",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2165",[340,73.869]],["parent/2165",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2166",[341,73.869]],["parent/2166",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2167",[342,73.869]],["parent/2167",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2168",[954,64.288]],["parent/2168",[0,0,1,0.358,4,3.193]],["name/2169",[1350,78.992]],["parent/2169",[0,0,1,0.358,4,3.193]],["name/2170",[1351,78.992]],["parent/2170",[0,0,1,0.358,4,3.193]],["name/2171",[1352,78.992]],["parent/2171",[0,0,1,0.358,1353,6.249]],["name/2172",[1354,78.992]],["parent/2172",[0,0,1,0.358,1353,6.249]],["name/2173",[1355,78.992]],["parent/2173",[0,0,1,0.358,1353,6.249]],["name/2174",[726,73.869]],["parent/2174",[0,0,1,0.358,1353,6.249]],["name/2175",[728,73.869]],["parent/2175",[0,0,1,0.358,1353,6.249]],["name/2176",[729,73.869]],["parent/2176",[0,0,1,0.358,1353,6.249]],["name/2177",[730,73.869]],["parent/2177",[0,0,1,0.358,1353,6.249]],["name/2178",[731,73.869]],["parent/2178",[0,0,1,0.358,1353,6.249]],["name/2179",[732,73.869]],["parent/2179",[0,0,1,0.358,1353,6.249]],["name/2180",[1356,78.992]],["parent/2180",[0,0,1,0.358,4,3.193]],["name/2181",[1357,48.462]],["parent/2181",[0,0,1,0.358,1358,6.365]],["name/2182",[754,73.869]],["parent/2182",[0,0,1,0.358,1358,6.365]],["name/2183",[756,73.869]],["parent/2183",[0,0,1,0.358,1358,6.365]],["name/2184",[757,73.869]],["parent/2184",[0,0,1,0.358,1358,6.365]],["name/2185",[758,73.869]],["parent/2185",[0,0,1,0.358,1358,6.365]],["name/2186",[759,73.869]],["parent/2186",[0,0,1,0.358,1358,6.365]],["name/2187",[760,73.869]],["parent/2187",[0,0,1,0.358,1358,6.365]],["name/2188",[761,73.869]],["parent/2188",[0,0,1,0.358,1358,6.365]],["name/2189",[1359,78.992]],["parent/2189",[0,0,1,0.358,4,3.193]],["name/2190",[1360,78.992]],["parent/2190",[0,0,1,0.358,4,3.193]],["name/2191",[1361,78.992]],["parent/2191",[0,0,1,0.358,4,3.193]],["name/2192",[1362,78.992]],["parent/2192",[0,0,1,0.358,4,3.193]],["name/2193",[1363,78.992]],["parent/2193",[0,0,1,0.358,4,3.193]],["name/2194",[1364,78.992]],["parent/2194",[0,0,1,0.358,4,3.193]],["name/2195",[1357,48.462]],["parent/2195",[0,0,1,0.358,1365,6.146]],["name/2196",[646,62.853]],["parent/2196",[0,0,1,0.358,1365,6.146]],["name/2197",[735,65.963]],["parent/2197",[0,0,1,0.358,1365,6.146]],["name/2198",[736,65.963]],["parent/2198",[0,0,1,0.358,1365,6.146]],["name/2199",[737,65.963]],["parent/2199",[0,0,1,0.358,1365,6.146]],["name/2200",[738,65.963]],["parent/2200",[0,0,1,0.358,1365,6.146]],["name/2201",[739,65.963]],["parent/2201",[0,0,1,0.358,1365,6.146]],["name/2202",[645,61.598]],["parent/2202",[0,0,1,0.358,1365,6.146]],["name/2203",[139,54.946]],["parent/2203",[0,0,1,0.358,1365,6.146]],["name/2204",[740,65.963]],["parent/2204",[0,0,1,0.358,1365,6.146]],["name/2205",[1366,78.992]],["parent/2205",[0,0,1,0.358,4,3.193]],["name/2206",[1357,48.462]],["parent/2206",[0,0,1,0.358,1367,6.146]],["name/2207",[646,62.853]],["parent/2207",[0,0,1,0.358,1367,6.146]],["name/2208",[735,65.963]],["parent/2208",[0,0,1,0.358,1367,6.146]],["name/2209",[736,65.963]],["parent/2209",[0,0,1,0.358,1367,6.146]],["name/2210",[737,65.963]],["parent/2210",[0,0,1,0.358,1367,6.146]],["name/2211",[738,65.963]],["parent/2211",[0,0,1,0.358,1367,6.146]],["name/2212",[739,65.963]],["parent/2212",[0,0,1,0.358,1367,6.146]],["name/2213",[645,61.598]],["parent/2213",[0,0,1,0.358,1367,6.146]],["name/2214",[139,54.946]],["parent/2214",[0,0,1,0.358,1367,6.146]],["name/2215",[740,65.963]],["parent/2215",[0,0,1,0.358,1367,6.146]],["name/2216",[1368,78.992]],["parent/2216",[0,0,1,0.358,4,3.193]],["name/2217",[1357,48.462]],["parent/2217",[0,0,1,0.358,1369,6.146]],["name/2218",[646,62.853]],["parent/2218",[0,0,1,0.358,1369,6.146]],["name/2219",[735,65.963]],["parent/2219",[0,0,1,0.358,1369,6.146]],["name/2220",[736,65.963]],["parent/2220",[0,0,1,0.358,1369,6.146]],["name/2221",[737,65.963]],["parent/2221",[0,0,1,0.358,1369,6.146]],["name/2222",[738,65.963]],["parent/2222",[0,0,1,0.358,1369,6.146]],["name/2223",[739,65.963]],["parent/2223",[0,0,1,0.358,1369,6.146]],["name/2224",[645,61.598]],["parent/2224",[0,0,1,0.358,1369,6.146]],["name/2225",[139,54.946]],["parent/2225",[0,0,1,0.358,1369,6.146]],["name/2226",[740,65.963]],["parent/2226",[0,0,1,0.358,1369,6.146]],["name/2227",[1370,78.992]],["parent/2227",[0,0,1,0.358,4,3.193]],["name/2228",[1357,48.462]],["parent/2228",[0,0,1,0.358,1371,5.885]],["name/2229",[1372,78.992]],["parent/2229",[0,0,1,0.358,1371,5.885]],["name/2230",[735,65.963]],["parent/2230",[0,0,1,0.358,1371,5.885]],["name/2231",[736,65.963]],["parent/2231",[0,0,1,0.358,1371,5.885]],["name/2232",[646,62.853]],["parent/2232",[0,0,1,0.358,1371,5.885]],["name/2233",[737,65.963]],["parent/2233",[0,0,1,0.358,1371,5.885]],["name/2234",[738,65.963]],["parent/2234",[0,0,1,0.358,1371,5.885]],["name/2235",[1373,78.992]],["parent/2235",[0,0,1,0.358,1371,5.885]],["name/2236",[1374,78.992]],["parent/2236",[0,0,1,0.358,1371,5.885]],["name/2237",[139,54.946]],["parent/2237",[0,0,1,0.358,1371,5.885]],["name/2238",[739,65.963]],["parent/2238",[0,0,1,0.358,1371,5.885]],["name/2239",[645,61.598]],["parent/2239",[0,0,1,0.358,1371,5.885]],["name/2240",[740,65.963]],["parent/2240",[0,0,1,0.358,1371,5.885]],["name/2241",[1375,78.992]],["parent/2241",[0,0,1,0.358,4,3.193]],["name/2242",[1376,78.992]],["parent/2242",[0,0,1,0.358,4,3.193]],["name/2243",[1377,78.992]],["parent/2243",[0,0,1,0.358,4,3.193]],["name/2244",[1378,78.992]],["parent/2244",[0,0,1,0.358,4,3.193]],["name/2245",[1379,78.992]],["parent/2245",[0,0,1,0.358,4,3.193]],["name/2246",[1380,78.992]],["parent/2246",[0,0,1,0.358,4,3.193]],["name/2247",[1381,78.992]],["parent/2247",[0,0,1,0.358,4,3.193]],["name/2248",[1382,78.992]],["parent/2248",[0,0,1,0.358,4,3.193]],["name/2249",[1383,78.992]],["parent/2249",[0,0,1,0.358,4,3.193]],["name/2250",[1384,78.992]],["parent/2250",[0,0,1,0.358,4,3.193]],["name/2251",[1385,78.992]],["parent/2251",[0,0,1,0.358,4,3.193]],["name/2252",[1386,73.869]],["parent/2252",[0,0,1,0.358,4,3.193]],["name/2253",[1387,78.992]],["parent/2253",[0,0,1,0.358,4,3.193]],["name/2254",[956,64.288]],["parent/2254",[0,0,1,0.358,4,3.193]],["name/2255",[139,54.946]],["parent/2255",[0,0,1,0.358,4,3.193]],["name/2256",[1388,78.992]],["parent/2256",[0,0,1,0.358,4,3.193]],["name/2257",[1389,78.992]],["parent/2257",[0,0,1,0.358,4,3.193]],["name/2258",[1390,78.992]],["parent/2258",[0,0,1,0.358,4,3.193]],["name/2259",[1391,78.992]],["parent/2259",[0,0,1,0.358,4,3.193]],["name/2260",[991,60.482]],["parent/2260",[0,0,1,0.358,4,3.193]],["name/2261",[1392,78.992]],["parent/2261",[0,0,1,0.358,4,3.193]],["name/2262",[1393,78.992]],["parent/2262",[0,0,1,0.358,4,3.193]],["name/2263",[1394,78.992]],["parent/2263",[0,0,1,0.358,4,3.193]],["name/2264",[1395,78.992]],["parent/2264",[0,0,1,0.358,4,3.193]],["name/2265",[1396,78.992]],["parent/2265",[0,0,1,0.358,4,3.193]],["name/2266",[1397,78.992]],["parent/2266",[0,0,1,0.358,4,3.193]],["name/2267",[1398,78.992]],["parent/2267",[0,0,1,0.358,4,3.193]],["name/2268",[955,64.288]],["parent/2268",[0,0,1,0.358,4,3.193]],["name/2269",[1399,78.992]],["parent/2269",[0,0,1,0.358,4,3.193]],["name/2270",[1400,78.992]],["parent/2270",[0,0,1,0.358,4,3.193]],["name/2271",[1401,78.992]],["parent/2271",[0,0,1,0.358,4,3.193]],["name/2272",[1402,78.992]],["parent/2272",[0,0,1,0.358,4,3.193]],["name/2273",[1403,78.992]],["parent/2273",[0,0,1,0.358,4,3.193]],["name/2274",[1404,78.992]],["parent/2274",[0,0,1,0.358,4,3.193]],["name/2275",[1405,78.992]],["parent/2275",[0,0,1,0.358,4,3.193]],["name/2276",[1406,78.992]],["parent/2276",[0,0,1,0.358,4,3.193]],["name/2277",[1407,78.992]],["parent/2277",[0,0,1,0.358,4,3.193]],["name/2278",[1408,78.992]],["parent/2278",[0,0,1,0.358,4,3.193]],["name/2279",[1409,78.992]],["parent/2279",[0,0,1,0.358,4,3.193]],["name/2280",[1410,78.992]],["parent/2280",[0,0,1,0.358,4,3.193]],["name/2281",[1411,78.992]],["parent/2281",[0,0,1,0.358,4,3.193]],["name/2282",[1412,78.992]],["parent/2282",[0,0,1,0.358,4,3.193]],["name/2283",[1413,78.992]],["parent/2283",[0,0,1,0.358,4,3.193]],["name/2284",[1414,78.992]],["parent/2284",[0,0,1,0.358,4,3.193]],["name/2285",[1415,78.992]],["parent/2285",[0,0,1,0.358,4,3.193]],["name/2286",[1416,78.992]],["parent/2286",[0,0,1,0.358,4,3.193]],["name/2287",[1417,78.992]],["parent/2287",[0,0,1,0.358,4,3.193]],["name/2288",[1418,78.992]],["parent/2288",[0,0,1,0.358,4,3.193]],["name/2289",[1419,78.992]],["parent/2289",[0,0,1,0.358,4,3.193]],["name/2290",[1420,78.992]],["parent/2290",[0,0,1,0.358,4,3.193]],["name/2291",[1357,48.462]],["parent/2291",[0,0,1,0.358,1421,5.559]],["name/2292",[316,61.598]],["parent/2292",[0,0,1,0.358,1421,5.559]],["name/2293",[1422,73.869]],["parent/2293",[0,0,1,0.358,1421,5.559]],["name/2294",[1423,78.992]],["parent/2294",[0,0,1,0.358,1421,5.559]],["name/2295",[1424,78.992]],["parent/2295",[0,0,1,0.358,1421,5.559]],["name/2296",[1425,78.992]],["parent/2296",[0,0,1,0.358,1421,5.559]],["name/2297",[1426,78.992]],["parent/2297",[0,0,1,0.358,1421,5.559]],["name/2298",[1427,70.495]],["parent/2298",[0,0,1,0.358,1421,5.559]],["name/2299",[1386,73.869]],["parent/2299",[0,0,1,0.358,1421,5.559]],["name/2300",[1031,67.975]],["parent/2300",[0,0,1,0.358,1421,5.559]],["name/2301",[1428,78.992]],["parent/2301",[0,0,1,0.358,1421,5.559]],["name/2302",[1429,78.992]],["parent/2302",[0,0,1,0.358,1421,5.559]],["name/2303",[1430,78.992]],["parent/2303",[0,0,1,0.358,1421,5.559]],["name/2304",[1431,78.992]],["parent/2304",[0,0,1,0.358,1421,5.559]],["name/2305",[1432,78.992]],["parent/2305",[0,0,1,0.358,1421,5.559]],["name/2306",[1433,78.992]],["parent/2306",[0,0,1,0.358,1421,5.559]],["name/2307",[1434,78.992]],["parent/2307",[0,0,1,0.358,1421,5.559]],["name/2308",[1435,78.992]],["parent/2308",[0,0,1,0.358,1421,5.559]],["name/2309",[1225,70.495]],["parent/2309",[0,0,1,0.358,4,3.193]],["name/2310",[1436,78.992]],["parent/2310",[0,0,1,0.358,4,3.193]],["name/2311",[1357,48.462]],["parent/2311",[0,0,1,0.358,1437,5.742]],["name/2312",[553,65.963]],["parent/2312",[0,0,1,0.358,1437,5.742]],["name/2313",[1438,78.992]],["parent/2313",[0,0,1,0.358,1437,5.742]],["name/2314",[139,54.946]],["parent/2314",[0,0,1,0.358,1437,5.742]],["name/2315",[1439,78.992]],["parent/2315",[0,0,1,0.358,1437,5.742]],["name/2316",[1427,70.495]],["parent/2316",[0,0,1,0.358,1437,5.742]],["name/2317",[1440,78.992]],["parent/2317",[0,0,1,0.358,1437,5.742]],["name/2318",[1441,70.495]],["parent/2318",[0,0,1,0.358,1437,5.742]],["name/2319",[1442,70.495]],["parent/2319",[0,0,1,0.358,1437,5.742]],["name/2320",[1443,73.869]],["parent/2320",[0,0,1,0.358,1437,5.742]],["name/2321",[1444,78.992]],["parent/2321",[0,0,1,0.358,1437,5.742]],["name/2322",[1445,78.992]],["parent/2322",[0,0,1,0.358,1437,5.742]],["name/2323",[1446,78.992]],["parent/2323",[0,0,1,0.358,1437,5.742]],["name/2324",[1447,78.992]],["parent/2324",[0,0,1,0.358,1437,5.742]],["name/2325",[1448,73.869]],["parent/2325",[0,0,1,0.358,1437,5.742]],["name/2326",[1449,78.992]],["parent/2326",[0,0,1,0.358,4,3.193]],["name/2327",[1357,48.462]],["parent/2327",[0,0,1,0.358,1450,5.559]],["name/2328",[1451,78.992]],["parent/2328",[0,0,1,0.358,1450,5.559]],["name/2329",[1452,78.992]],["parent/2329",[0,0,1,0.358,1450,5.559]],["name/2330",[1453,78.992]],["parent/2330",[0,0,1,0.358,1450,5.559]],["name/2331",[1454,78.992]],["parent/2331",[0,0,1,0.358,1450,5.559]],["name/2332",[139,54.946]],["parent/2332",[0,0,1,0.358,1450,5.559]],["name/2333",[1455,78.992]],["parent/2333",[0,0,1,0.358,1450,5.559]],["name/2334",[1456,78.992]],["parent/2334",[0,0,1,0.358,1450,5.559]],["name/2335",[1457,78.992]],["parent/2335",[0,0,1,0.358,1450,5.559]],["name/2336",[1458,78.992]],["parent/2336",[0,0,1,0.358,1450,5.559]],["name/2337",[107,70.495]],["parent/2337",[0,0,1,0.358,1450,5.559]],["name/2338",[121,70.495]],["parent/2338",[0,0,1,0.358,1450,5.559]],["name/2339",[1459,78.992]],["parent/2339",[0,0,1,0.358,1450,5.559]],["name/2340",[1443,73.869]],["parent/2340",[0,0,1,0.358,1450,5.559]],["name/2341",[1460,78.992]],["parent/2341",[0,0,1,0.358,1450,5.559]],["name/2342",[1461,78.992]],["parent/2342",[0,0,1,0.358,1450,5.559]],["name/2343",[1462,78.992]],["parent/2343",[0,0,1,0.358,1450,5.559]],["name/2344",[1427,70.495]],["parent/2344",[0,0,1,0.358,1450,5.559]],["name/2345",[1463,78.992]],["parent/2345",[0,0,1,0.358,4,3.193]],["name/2346",[1464,78.992]],["parent/2346",[0,0,1,0.358,4,3.193]],["name/2347",[1465,78.992]],["parent/2347",[0,0,1,0.358,1466,7.024]],["name/2348",[1467,78.992]],["parent/2348",[0,0,1,0.358,1466,7.024]],["name/2349",[1468,78.992]],["parent/2349",[0,0,1,0.358,1466,7.024]],["name/2350",[1469,78.992]],["parent/2350",[0,0,1,0.358,1466,7.024]],["name/2351",[1470,78.992]],["parent/2351",[0,0,1,0.358,4,3.193]],["name/2352",[1471,78.992]],["parent/2352",[0,0,1,0.358,4,3.193]],["name/2353",[1472,78.992]],["parent/2353",[0,0,1,0.358,4,3.193]],["name/2354",[1473,78.992]],["parent/2354",[0,0,1,0.358,4,3.193]],["name/2355",[1474,78.992]],["parent/2355",[0,0,1,0.358,4,3.193]],["name/2356",[1475,78.992]],["parent/2356",[0,0,1,0.358,4,3.193]],["name/2357",[1476,78.992]],["parent/2357",[0,0,1,0.358,4,3.193]],["name/2358",[1477,78.992]],["parent/2358",[0,0,1,0.358,4,3.193]],["name/2359",[1478,78.992]],["parent/2359",[0,0,1,0.358,4,3.193]],["name/2360",[1479,78.992]],["parent/2360",[0,0,1,0.358,4,3.193]],["name/2361",[749,70.495]],["parent/2361",[0,0,1,0.358,4,3.193]],["name/2362",[1448,73.869]],["parent/2362",[0,0,1,0.358,1480,6.051]],["name/2363",[1481,78.992]],["parent/2363",[0,0,1,0.358,1480,6.051]],["name/2364",[1357,48.462]],["parent/2364",[0,0,1,0.358,1480,6.051]],["name/2365",[772,65.963]],["parent/2365",[0,0,1,0.358,1480,6.051]],["name/2366",[179,60.482]],["parent/2366",[0,0,1,0.358,1480,6.051]],["name/2367",[774,73.869]],["parent/2367",[0,0,1,0.358,1480,6.051]],["name/2368",[775,73.869]],["parent/2368",[0,0,1,0.358,1480,6.051]],["name/2369",[776,73.869]],["parent/2369",[0,0,1,0.358,1480,6.051]],["name/2370",[777,73.869]],["parent/2370",[0,0,1,0.358,1480,6.051]],["name/2371",[645,61.598]],["parent/2371",[0,0,1,0.358,1480,6.051]],["name/2372",[778,70.495]],["parent/2372",[0,0,1,0.358,1480,6.051]],["name/2373",[1482,78.992]],["parent/2373",[0,0,1,0.358,4,3.193]],["name/2374",[1483,78.992]],["parent/2374",[0,0,1,0.358,4,3.193]],["name/2375",[1484,78.992]],["parent/2375",[0,0,1,0.358,4,3.193]],["name/2376",[963,64.288]],["parent/2376",[0,0,1,0.358,4,3.193]],["name/2377",[1485,78.992]],["parent/2377",[0,0,1,0.358,4,3.193]],["name/2378",[1486,78.992]],["parent/2378",[0,0,1,0.358,4,3.193]],["name/2379",[1487,78.992]],["parent/2379",[0,0,1,0.358,4,3.193]],["name/2380",[1488,78.992]],["parent/2380",[0,0,1,0.358,4,3.193]],["name/2381",[1489,78.992]],["parent/2381",[0,0,1,0.358,4,3.193]],["name/2382",[1165,73.869]],["parent/2382",[0,0,1,0.358,4,3.193]],["name/2383",[1490,78.992]],["parent/2383",[0,0,1,0.358,4,3.193]],["name/2384",[1491,78.992]],["parent/2384",[0,0,1,0.358,4,3.193]],["name/2385",[1492,78.992]],["parent/2385",[0,0,1,0.358,4,3.193]],["name/2386",[1493,78.992]],["parent/2386",[0,0,1,0.358,4,3.193]],["name/2387",[1494,78.992]],["parent/2387",[0,0,1,0.358,4,3.193]],["name/2388",[1495,78.992]],["parent/2388",[0,0,1,0.358,4,3.193]],["name/2389",[1496,78.992]],["parent/2389",[0,0,1,0.358,4,3.193]],["name/2390",[1167,73.869]],["parent/2390",[0,0,1,0.358,4,3.193]],["name/2391",[1497,78.992]],["parent/2391",[0,0,1,0.358,4,3.193]],["name/2392",[1498,78.992]],["parent/2392",[0,0,1,0.358,1499,6.642]],["name/2393",[1500,78.992]],["parent/2393",[0,0,1,0.358,1499,6.642]],["name/2394",[1357,48.462]],["parent/2394",[0,0,1,0.358,1499,6.642]],["name/2395",[1501,78.992]],["parent/2395",[0,0,1,0.358,1499,6.642]],["name/2396",[1502,78.992]],["parent/2396",[0,0,1,0.358,1499,6.642]],["name/2397",[1503,78.992]],["parent/2397",[0,0,1,0.358,1499,6.642]],["name/2398",[1504,78.992]],["parent/2398",[0,0,1,0.358,4,3.193]],["name/2399",[1505,78.992]],["parent/2399",[0,0,1,0.358,4,3.193]],["name/2400",[1506,78.992]],["parent/2400",[0,0,1,0.358,4,3.193]],["name/2401",[1507,78.992]],["parent/2401",[0,0,1,0.358,4,3.193]],["name/2402",[1508,78.992]],["parent/2402",[0,0,1,0.358,4,3.193]],["name/2403",[1509,78.992]],["parent/2403",[0,0,1,0.358,4,3.193]],["name/2404",[1510,78.992]],["parent/2404",[0,0,1,0.358,4,3.193]],["name/2405",[1511,78.992]],["parent/2405",[0,0,1,0.358,4,3.193]],["name/2406",[1512,78.992]],["parent/2406",[0,0,1,0.358,4,3.193]],["name/2407",[1513,78.992]],["parent/2407",[0,0,1,0.358,4,3.193]],["name/2408",[1514,78.992]],["parent/2408",[0,0,1,0.358,4,3.193]],["name/2409",[1515,78.992]],["parent/2409",[0,0,1,0.358,4,3.193]],["name/2410",[1516,78.992]],["parent/2410",[0,0,1,0.358,4,3.193]],["name/2411",[1517,78.992]],["parent/2411",[0,0,1,0.358,4,3.193]],["name/2412",[1518,78.992]],["parent/2412",[0,0,1,0.358,4,3.193]],["name/2413",[1519,78.992]],["parent/2413",[0,0,1,0.358,4,3.193]],["name/2414",[1520,78.992]],["parent/2414",[0,0,1,0.358,4,3.193]],["name/2415",[1521,78.992]],["parent/2415",[0,0,1,0.358,4,3.193]],["name/2416",[1522,78.992]],["parent/2416",[0,0,1,0.358,4,3.193]],["name/2417",[1523,78.992]],["parent/2417",[0,0,1,0.358,4,3.193]],["name/2418",[960,64.288]],["parent/2418",[0,0,1,0.358,4,3.193]],["name/2419",[646,62.853]],["parent/2419",[0,0,1,0.358,4,3.193]],["name/2420",[1524,78.992]],["parent/2420",[0,0,1,0.358,4,3.193]],["name/2421",[1525,78.992]],["parent/2421",[0,0,1,0.358,4,3.193]],["name/2422",[1526,78.992]],["parent/2422",[0,0,1,0.358,4,3.193]],["name/2423",[1527,78.992]],["parent/2423",[0,0,1,0.358,4,3.193]],["name/2424",[1528,78.992]],["parent/2424",[0,0,1,0.358,4,3.193]],["name/2425",[1529,78.992]],["parent/2425",[0,0,1,0.358,4,3.193]],["name/2426",[1530,78.992]],["parent/2426",[0,0,1,0.358,4,3.193]],["name/2427",[1531,78.992]],["parent/2427",[0,0,1,0.358,4,3.193]],["name/2428",[1532,78.992]],["parent/2428",[0,0,1,0.358,4,3.193]],["name/2429",[1533,78.992]],["parent/2429",[0,0,1,0.358,4,3.193]],["name/2430",[1534,78.992]],["parent/2430",[0,0,1,0.358,4,3.193]],["name/2431",[1535,78.992]],["parent/2431",[0,0,1,0.358,4,3.193]],["name/2432",[1536,78.992]],["parent/2432",[0,0,1,0.358,4,3.193]],["name/2433",[1,3.465]],["parent/2433",[0,0,1,0.358,5,6.816]],["name/2434",[1357,48.462]],["parent/2434",[0,0,1,0.358,1537,4.249]],["name/2435",[661,49.12]],["parent/2435",[0,0,1,0.358,1537,4.249]],["name/2436",[950,65.963]],["parent/2436",[0,0,1,0.358,1537,4.249]],["name/2437",[951,61.598]],["parent/2437",[0,0,1,0.358,1537,4.249]],["name/2438",[952,65.963]],["parent/2438",[0,0,1,0.358,1537,4.249]],["name/2439",[953,65.963]],["parent/2439",[0,0,1,0.358,1537,4.249]],["name/2440",[954,64.288]],["parent/2440",[0,0,1,0.358,1537,4.249]],["name/2441",[139,54.946]],["parent/2441",[0,0,1,0.358,1537,4.249]],["name/2442",[955,64.288]],["parent/2442",[0,0,1,0.358,1537,4.249]],["name/2443",[956,64.288]],["parent/2443",[0,0,1,0.358,1537,4.249]],["name/2444",[957,65.963]],["parent/2444",[0,0,1,0.358,1537,4.249]],["name/2445",[958,61.598]],["parent/2445",[0,0,1,0.358,1537,4.249]],["name/2446",[203,59.479]],["parent/2446",[0,0,1,0.358,1537,4.249]],["name/2447",[959,65.963]],["parent/2447",[0,0,1,0.358,1537,4.249]],["name/2448",[960,64.288]],["parent/2448",[0,0,1,0.358,1537,4.249]],["name/2449",[122,58.566]],["parent/2449",[0,0,1,0.358,1537,4.249]],["name/2450",[961,61.598]],["parent/2450",[0,0,1,0.358,1537,4.249]],["name/2451",[962,61.598]],["parent/2451",[0,0,1,0.358,1537,4.249]],["name/2452",[963,64.288]],["parent/2452",[0,0,1,0.358,1537,4.249]],["name/2453",[964,61.598]],["parent/2453",[0,0,1,0.358,1537,4.249]],["name/2454",[965,61.598]],["parent/2454",[0,0,1,0.358,1537,4.249]],["name/2455",[966,61.598]],["parent/2455",[0,0,1,0.358,1537,4.249]],["name/2456",[967,65.963]],["parent/2456",[0,0,1,0.358,1537,4.249]],["name/2457",[968,65.963]],["parent/2457",[0,0,1,0.358,1537,4.249]],["name/2458",[969,65.963]],["parent/2458",[0,0,1,0.358,1537,4.249]],["name/2459",[970,65.963]],["parent/2459",[0,0,1,0.358,1537,4.249]],["name/2460",[971,65.963]],["parent/2460",[0,0,1,0.358,1537,4.249]],["name/2461",[972,65.963]],["parent/2461",[0,0,1,0.358,1537,4.249]],["name/2462",[973,65.963]],["parent/2462",[0,0,1,0.358,1537,4.249]],["name/2463",[130,58.566]],["parent/2463",[0,0,1,0.358,1537,4.249]],["name/2464",[123,61.598]],["parent/2464",[0,0,1,0.358,1537,4.249]],["name/2465",[974,61.598]],["parent/2465",[0,0,1,0.358,1537,4.249]],["name/2466",[975,65.963]],["parent/2466",[0,0,1,0.358,1537,4.249]],["name/2467",[976,65.963]],["parent/2467",[0,0,1,0.358,1537,4.249]],["name/2468",[977,65.963]],["parent/2468",[0,0,1,0.358,1537,4.249]],["name/2469",[978,65.963]],["parent/2469",[0,0,1,0.358,1537,4.249]],["name/2470",[35,64.288]],["parent/2470",[0,0,1,0.358,1537,4.249]],["name/2471",[979,65.963]],["parent/2471",[0,0,1,0.358,1537,4.249]],["name/2472",[980,65.963]],["parent/2472",[0,0,1,0.358,1537,4.249]],["name/2473",[981,65.963]],["parent/2473",[0,0,1,0.358,1537,4.249]],["name/2474",[982,65.963]],["parent/2474",[0,0,1,0.358,1537,4.249]],["name/2475",[983,65.963]],["parent/2475",[0,0,1,0.358,1537,4.249]],["name/2476",[984,65.963]],["parent/2476",[0,0,1,0.358,1537,4.249]],["name/2477",[985,65.963]],["parent/2477",[0,0,1,0.358,1537,4.249]],["name/2478",[986,65.963]],["parent/2478",[0,0,1,0.358,1537,4.249]],["name/2479",[987,65.963]],["parent/2479",[0,0,1,0.358,1537,4.249]],["name/2480",[988,65.963]],["parent/2480",[0,0,1,0.358,1537,4.249]],["name/2481",[989,65.963]],["parent/2481",[0,0,1,0.358,1537,4.249]],["name/2482",[990,61.598]],["parent/2482",[0,0,1,0.358,1537,4.249]],["name/2483",[991,60.482]],["parent/2483",[0,0,1,0.358,1537,4.249]],["name/2484",[992,61.598]],["parent/2484",[0,0,1,0.358,1537,4.249]],["name/2485",[993,65.963]],["parent/2485",[0,0,1,0.358,1537,4.249]],["name/2486",[60,55.573]],["parent/2486",[0,0,1,0.358,1537,4.249]],["name/2487",[994,65.963]],["parent/2487",[0,0,1,0.358,1537,4.249]],["name/2488",[995,65.963]],["parent/2488",[0,0,1,0.358,1537,4.249]],["name/2489",[996,65.963]],["parent/2489",[0,0,1,0.358,1537,4.249]],["name/2490",[997,65.963]],["parent/2490",[0,0,1,0.358,1537,4.249]],["name/2491",[998,65.963]],["parent/2491",[0,0,1,0.358,1537,4.249]],["name/2492",[999,64.288]],["parent/2492",[0,0,1,0.358,1537,4.249]],["name/2493",[1000,65.963]],["parent/2493",[0,0,1,0.358,1537,4.249]],["name/2494",[1003,65.963]],["parent/2494",[0,0,1,0.358,1537,4.249]],["name/2495",[1001,65.963]],["parent/2495",[0,0,1,0.358,1537,4.249]],["name/2496",[1002,65.963]],["parent/2496",[0,0,1,0.358,1537,4.249]],["name/2497",[1004,59.479]],["parent/2497",[0,0,1,0.358,1537,4.249]],["name/2498",[1538,70.495]],["parent/2498",[0,0,1,0.358,1537,4.249]],["name/2499",[1539,78.992]],["parent/2499",[0,0,1,0.358,5,6.816]],["name/2500",[1357,48.462]],["parent/2500",[0,0,1,0.358,1540,4.249]],["name/2501",[661,49.12]],["parent/2501",[0,0,1,0.358,1540,4.249]],["name/2502",[950,65.963]],["parent/2502",[0,0,1,0.358,1540,4.249]],["name/2503",[951,61.598]],["parent/2503",[0,0,1,0.358,1540,4.249]],["name/2504",[952,65.963]],["parent/2504",[0,0,1,0.358,1540,4.249]],["name/2505",[953,65.963]],["parent/2505",[0,0,1,0.358,1540,4.249]],["name/2506",[954,64.288]],["parent/2506",[0,0,1,0.358,1540,4.249]],["name/2507",[139,54.946]],["parent/2507",[0,0,1,0.358,1540,4.249]],["name/2508",[955,64.288]],["parent/2508",[0,0,1,0.358,1540,4.249]],["name/2509",[956,64.288]],["parent/2509",[0,0,1,0.358,1540,4.249]],["name/2510",[957,65.963]],["parent/2510",[0,0,1,0.358,1540,4.249]],["name/2511",[958,61.598]],["parent/2511",[0,0,1,0.358,1540,4.249]],["name/2512",[203,59.479]],["parent/2512",[0,0,1,0.358,1540,4.249]],["name/2513",[959,65.963]],["parent/2513",[0,0,1,0.358,1540,4.249]],["name/2514",[960,64.288]],["parent/2514",[0,0,1,0.358,1540,4.249]],["name/2515",[122,58.566]],["parent/2515",[0,0,1,0.358,1540,4.249]],["name/2516",[961,61.598]],["parent/2516",[0,0,1,0.358,1540,4.249]],["name/2517",[962,61.598]],["parent/2517",[0,0,1,0.358,1540,4.249]],["name/2518",[963,64.288]],["parent/2518",[0,0,1,0.358,1540,4.249]],["name/2519",[964,61.598]],["parent/2519",[0,0,1,0.358,1540,4.249]],["name/2520",[965,61.598]],["parent/2520",[0,0,1,0.358,1540,4.249]],["name/2521",[966,61.598]],["parent/2521",[0,0,1,0.358,1540,4.249]],["name/2522",[967,65.963]],["parent/2522",[0,0,1,0.358,1540,4.249]],["name/2523",[968,65.963]],["parent/2523",[0,0,1,0.358,1540,4.249]],["name/2524",[969,65.963]],["parent/2524",[0,0,1,0.358,1540,4.249]],["name/2525",[970,65.963]],["parent/2525",[0,0,1,0.358,1540,4.249]],["name/2526",[971,65.963]],["parent/2526",[0,0,1,0.358,1540,4.249]],["name/2527",[972,65.963]],["parent/2527",[0,0,1,0.358,1540,4.249]],["name/2528",[973,65.963]],["parent/2528",[0,0,1,0.358,1540,4.249]],["name/2529",[130,58.566]],["parent/2529",[0,0,1,0.358,1540,4.249]],["name/2530",[123,61.598]],["parent/2530",[0,0,1,0.358,1540,4.249]],["name/2531",[974,61.598]],["parent/2531",[0,0,1,0.358,1540,4.249]],["name/2532",[975,65.963]],["parent/2532",[0,0,1,0.358,1540,4.249]],["name/2533",[976,65.963]],["parent/2533",[0,0,1,0.358,1540,4.249]],["name/2534",[977,65.963]],["parent/2534",[0,0,1,0.358,1540,4.249]],["name/2535",[978,65.963]],["parent/2535",[0,0,1,0.358,1540,4.249]],["name/2536",[35,64.288]],["parent/2536",[0,0,1,0.358,1540,4.249]],["name/2537",[979,65.963]],["parent/2537",[0,0,1,0.358,1540,4.249]],["name/2538",[980,65.963]],["parent/2538",[0,0,1,0.358,1540,4.249]],["name/2539",[981,65.963]],["parent/2539",[0,0,1,0.358,1540,4.249]],["name/2540",[982,65.963]],["parent/2540",[0,0,1,0.358,1540,4.249]],["name/2541",[983,65.963]],["parent/2541",[0,0,1,0.358,1540,4.249]],["name/2542",[984,65.963]],["parent/2542",[0,0,1,0.358,1540,4.249]],["name/2543",[985,65.963]],["parent/2543",[0,0,1,0.358,1540,4.249]],["name/2544",[986,65.963]],["parent/2544",[0,0,1,0.358,1540,4.249]],["name/2545",[987,65.963]],["parent/2545",[0,0,1,0.358,1540,4.249]],["name/2546",[988,65.963]],["parent/2546",[0,0,1,0.358,1540,4.249]],["name/2547",[989,65.963]],["parent/2547",[0,0,1,0.358,1540,4.249]],["name/2548",[990,61.598]],["parent/2548",[0,0,1,0.358,1540,4.249]],["name/2549",[991,60.482]],["parent/2549",[0,0,1,0.358,1540,4.249]],["name/2550",[992,61.598]],["parent/2550",[0,0,1,0.358,1540,4.249]],["name/2551",[993,65.963]],["parent/2551",[0,0,1,0.358,1540,4.249]],["name/2552",[60,55.573]],["parent/2552",[0,0,1,0.358,1540,4.249]],["name/2553",[994,65.963]],["parent/2553",[0,0,1,0.358,1540,4.249]],["name/2554",[995,65.963]],["parent/2554",[0,0,1,0.358,1540,4.249]],["name/2555",[996,65.963]],["parent/2555",[0,0,1,0.358,1540,4.249]],["name/2556",[997,65.963]],["parent/2556",[0,0,1,0.358,1540,4.249]],["name/2557",[998,65.963]],["parent/2557",[0,0,1,0.358,1540,4.249]],["name/2558",[999,64.288]],["parent/2558",[0,0,1,0.358,1540,4.249]],["name/2559",[1000,65.963]],["parent/2559",[0,0,1,0.358,1540,4.249]],["name/2560",[1003,65.963]],["parent/2560",[0,0,1,0.358,1540,4.249]],["name/2561",[1001,65.963]],["parent/2561",[0,0,1,0.358,1540,4.249]],["name/2562",[1002,65.963]],["parent/2562",[0,0,1,0.358,1540,4.249]],["name/2563",[1004,59.479]],["parent/2563",[0,0,1,0.358,1540,4.249]],["name/2564",[1538,70.495]],["parent/2564",[0,0,1,0.358,1540,4.249]],["name/2565",[999,64.288]],["parent/2565",[0,0,1,0.358,5,6.816]],["name/2566",[1541,78.992]],["parent/2566",[0,0,1,0.358,5,6.816]],["name/2567",[1542,73.869]],["parent/2567",[0,0,1,0.358,6,4.626]],["name/2568",[1543,78.992]],["parent/2568",[0,0,1,0.358,6,4.626]],["name/2569",[1544,78.992]],["parent/2569",[0,0,1,0.358,6,4.626]],["name/2570",[1545,70.495]],["parent/2570",[0,0,1,0.358,6,4.626]],["name/2571",[92,65.963]],["parent/2571",[0,0,1,0.358,6,4.626]],["name/2572",[1546,73.869]],["parent/2572",[0,0,1,0.358,6,4.626]],["name/2573",[1547,78.992]],["parent/2573",[0,0,1,0.358,6,4.626]],["name/2574",[205,67.975]],["parent/2574",[0,0,1,0.358,6,4.626]],["name/2575",[111,65.963]],["parent/2575",[0,0,1,0.358,6,4.626]],["name/2576",[1548,70.495]],["parent/2576",[0,0,1,0.358,6,4.626]],["name/2577",[1549,73.869]],["parent/2577",[0,0,1,0.358,6,4.626]],["name/2578",[1550,73.869]],["parent/2578",[0,0,1,0.358,6,4.626]],["name/2579",[1551,70.495]],["parent/2579",[0,0,1,0.358,6,4.626]],["name/2580",[1552,78.992]],["parent/2580",[0,0,1,0.358,6,4.626]],["name/2581",[1553,78.992]],["parent/2581",[0,0,1,0.358,6,4.626]],["name/2582",[1442,70.495]],["parent/2582",[0,0,1,0.358,6,4.626]],["name/2583",[1554,73.869]],["parent/2583",[0,0,1,0.358,6,4.626]],["name/2584",[1555,73.869]],["parent/2584",[0,0,1,0.358,6,4.626]],["name/2585",[1556,73.869]],["parent/2585",[0,0,1,0.358,6,4.626]],["name/2586",[1557,73.869]],["parent/2586",[0,0,1,0.358,6,4.626]],["name/2587",[1558,73.869]],["parent/2587",[0,0,1,0.358,6,4.626]],["name/2588",[1559,73.869]],["parent/2588",[0,0,1,0.358,6,4.626]],["name/2589",[1441,70.495]],["parent/2589",[0,0,1,0.358,6,4.626]],["name/2590",[1560,73.869]],["parent/2590",[0,0,1,0.358,6,4.626]],["name/2591",[1561,73.869]],["parent/2591",[0,0,1,0.358,6,4.626]],["name/2592",[1562,73.869]],["parent/2592",[0,0,1,0.358,6,4.626]],["name/2593",[1563,73.869]],["parent/2593",[0,0,1,0.358,6,4.626]],["name/2594",[1564,73.869]],["parent/2594",[0,0,1,0.358,6,4.626]],["name/2595",[1565,78.992]],["parent/2595",[0,0,1,0.358,6,4.626]],["name/2596",[1566,73.869]],["parent/2596",[0,0,1,0.358,6,4.626]],["name/2597",[1567,78.992]],["parent/2597",[0,0,1,0.358,6,4.626]],["name/2598",[1568,73.869]],["parent/2598",[0,0,1,0.358,6,4.626]],["name/2599",[1569,73.869]],["parent/2599",[0,0,1,0.358,6,4.626]],["name/2600",[1570,73.869]],["parent/2600",[0,0,1,0.358,6,4.626]],["name/2601",[1571,73.869]],["parent/2601",[0,0,1,0.358,6,4.626]],["name/2602",[1572,73.869]],["parent/2602",[0,0,1,0.358,6,4.626]],["name/2603",[1573,78.992]],["parent/2603",[0,0,1,0.358,6,4.626]],["name/2604",[1574,78.992]],["parent/2604",[0,0,1,0.358,6,4.626]],["name/2605",[1575,78.992]],["parent/2605",[0,0,1,0.358,6,4.626]],["name/2606",[1576,70.495]],["parent/2606",[0,0,1,0.358,6,4.626]],["name/2607",[1577,78.992]],["parent/2607",[0,0,1,0.358,6,4.626]],["name/2608",[1578,78.992]],["parent/2608",[0,0,1,0.358,6,4.626]],["name/2609",[1579,78.992]],["parent/2609",[0,0,1,0.358,7,5.111]],["name/2610",[1357,48.462]],["parent/2610",[0,0,1,0.358,1580,7.024]],["name/2611",[659,50.982]],["parent/2611",[0,0,1,0.358,1580,7.024]],["name/2612",[660,50.982]],["parent/2612",[0,0,1,0.358,1580,7.024]],["name/2613",[661,49.12]],["parent/2613",[0,0,1,0.358,1580,7.024]],["name/2614",[1581,78.992]],["parent/2614",[0,0,1,0.358,7,5.111]],["name/2615",[244,65.963]],["parent/2615",[0,0,1,0.358,7,5.111]],["name/2616",[1357,48.462]],["parent/2616",[0,0,1,0.358,1582,6.816]],["name/2617",[659,50.982]],["parent/2617",[0,0,1,0.358,1582,6.816]],["name/2618",[660,50.982]],["parent/2618",[0,0,1,0.358,1582,6.816]],["name/2619",[661,49.12]],["parent/2619",[0,0,1,0.358,1582,6.816]],["name/2620",[663,52.292]],["parent/2620",[0,0,1,0.358,1582,6.816]],["name/2621",[1583,78.992]],["parent/2621",[0,0,1,0.358,7,5.111]],["name/2622",[1584,78.992]],["parent/2622",[0,0,1,0.358,1585,6.816]],["name/2623",[49,28.994]],["parent/2623",[0,0,1,0.358,1585,6.816]],["name/2624",[1586,78.992]],["parent/2624",[0,0,1,0.358,1585,6.816]],["name/2625",[49,28.994]],["parent/2625",[0,0,1,0.358,1585,6.816]],["name/2626",[1587,78.992]],["parent/2626",[0,0,1,0.358,1585,6.816]],["name/2627",[1588,78.992]],["parent/2627",[0,0,1,0.358,7,5.111]],["name/2628",[1357,48.462]],["parent/2628",[0,0,1,0.358,1589,6.642]],["name/2629",[1590,78.992]],["parent/2629",[0,0,1,0.358,1589,6.642]],["name/2630",[659,50.982]],["parent/2630",[0,0,1,0.358,1589,6.642]],["name/2631",[660,50.982]],["parent/2631",[0,0,1,0.358,1589,6.642]],["name/2632",[661,49.12]],["parent/2632",[0,0,1,0.358,1589,6.642]],["name/2633",[663,52.292]],["parent/2633",[0,0,1,0.358,1589,6.642]],["name/2634",[1591,78.992]],["parent/2634",[0,0,1,0.358,7,5.111]],["name/2635",[1357,48.462]],["parent/2635",[0,0,1,0.358,1592,6.816]],["name/2636",[659,50.982]],["parent/2636",[0,0,1,0.358,1592,6.816]],["name/2637",[660,50.982]],["parent/2637",[0,0,1,0.358,1592,6.816]],["name/2638",[661,49.12]],["parent/2638",[0,0,1,0.358,1592,6.816]],["name/2639",[663,52.292]],["parent/2639",[0,0,1,0.358,1592,6.816]],["name/2640",[1593,78.992]],["parent/2640",[0,0,1,0.358,7,5.111]],["name/2641",[1357,48.462]],["parent/2641",[0,0,1,0.358,1594,6.494]],["name/2642",[659,50.982]],["parent/2642",[0,0,1,0.358,1594,6.494]],["name/2643",[660,50.982]],["parent/2643",[0,0,1,0.358,1594,6.494]],["name/2644",[1595,78.992]],["parent/2644",[0,0,1,0.358,1594,6.494]],["name/2645",[1596,73.869]],["parent/2645",[0,0,1,0.358,1594,6.494]],["name/2646",[661,49.12]],["parent/2646",[0,0,1,0.358,1594,6.494]],["name/2647",[663,52.292]],["parent/2647",[0,0,1,0.358,1594,6.494]],["name/2648",[1597,78.992]],["parent/2648",[0,0,1,0.358,7,5.111]],["name/2649",[1357,48.462]],["parent/2649",[0,0,1,0.358,1598,6.051]],["name/2650",[1,3.465]],["parent/2650",[0,0,1,0.358,1598,6.051]],["name/2651",[1599,73.869]],["parent/2651",[0,0,1,0.358,1598,6.051]],["name/2652",[659,50.982]],["parent/2652",[0,0,1,0.358,1598,6.051]],["name/2653",[660,50.982]],["parent/2653",[0,0,1,0.358,1598,6.051]],["name/2654",[661,49.12]],["parent/2654",[0,0,1,0.358,1598,6.051]],["name/2655",[663,52.292]],["parent/2655",[0,0,1,0.358,1598,6.051]],["name/2656",[1600,73.869]],["parent/2656",[0,0,1,0.358,1598,6.051]],["name/2657",[1601,73.869]],["parent/2657",[0,0,1,0.358,1598,6.051]],["name/2658",[1602,73.869]],["parent/2658",[0,0,1,0.358,1598,6.051]],["name/2659",[1603,73.869]],["parent/2659",[0,0,1,0.358,1598,6.051]],["name/2660",[1604,78.992]],["parent/2660",[0,0,1,0.358,7,5.111]],["name/2661",[1605,78.992]],["parent/2661",[0,0,1,0.358,7,5.111]],["name/2662",[1606,78.992]],["parent/2662",[0,0,1,0.358,7,5.111]],["name/2663",[1607,78.992]],["parent/2663",[0,0,1,0.358,7,5.111]],["name/2664",[1608,78.992]],["parent/2664",[0,0,1,0.358,7,5.111]],["name/2665",[1609,78.992]],["parent/2665",[0,0,1,0.358,7,5.111]],["name/2666",[1610,78.992]],["parent/2666",[0,0,1,0.358,7,5.111]],["name/2667",[202,70.495]],["parent/2667",[0,0,1,0.358,7,5.111]],["name/2668",[1357,48.462]],["parent/2668",[0,0,1,0.358,1611,5.885]],["name/2669",[1612,78.992]],["parent/2669",[0,0,1,0.358,1611,5.885]],["name/2670",[1613,78.992]],["parent/2670",[0,0,1,0.358,1611,5.885]],["name/2671",[1,3.465]],["parent/2671",[0,0,1,0.358,1611,5.885]],["name/2672",[1599,73.869]],["parent/2672",[0,0,1,0.358,1611,5.885]],["name/2673",[659,50.982]],["parent/2673",[0,0,1,0.358,1611,5.885]],["name/2674",[660,50.982]],["parent/2674",[0,0,1,0.358,1611,5.885]],["name/2675",[661,49.12]],["parent/2675",[0,0,1,0.358,1611,5.885]],["name/2676",[663,52.292]],["parent/2676",[0,0,1,0.358,1611,5.885]],["name/2677",[1600,73.869]],["parent/2677",[0,0,1,0.358,1611,5.885]],["name/2678",[1601,73.869]],["parent/2678",[0,0,1,0.358,1611,5.885]],["name/2679",[1602,73.869]],["parent/2679",[0,0,1,0.358,1611,5.885]],["name/2680",[1603,73.869]],["parent/2680",[0,0,1,0.358,1611,5.885]],["name/2681",[122,58.566]],["parent/2681",[0,0,1,0.358,7,5.111]],["name/2682",[1357,48.462]],["parent/2682",[0,0,1,0.358,1614,6.816]],["name/2683",[659,50.982]],["parent/2683",[0,0,1,0.358,1614,6.816]],["name/2684",[660,50.982]],["parent/2684",[0,0,1,0.358,1614,6.816]],["name/2685",[661,49.12]],["parent/2685",[0,0,1,0.358,1614,6.816]],["name/2686",[663,52.292]],["parent/2686",[0,0,1,0.358,1614,6.816]],["name/2687",[1615,78.992]],["parent/2687",[0,0,1,0.358,7,5.111]],["name/2688",[1357,48.462]],["parent/2688",[0,0,1,0.358,1616,6.494]],["name/2689",[1617,78.992]],["parent/2689",[0,0,1,0.358,1616,6.494]],["name/2690",[659,50.982]],["parent/2690",[0,0,1,0.358,1616,6.494]],["name/2691",[660,50.982]],["parent/2691",[0,0,1,0.358,1616,6.494]],["name/2692",[661,49.12]],["parent/2692",[0,0,1,0.358,1616,6.494]],["name/2693",[662,62.853]],["parent/2693",[0,0,1,0.358,1616,6.494]],["name/2694",[663,52.292]],["parent/2694",[0,0,1,0.358,1616,6.494]],["name/2695",[1618,78.992]],["parent/2695",[0,0,1,0.358,7,5.111]],["name/2696",[1357,48.462]],["parent/2696",[0,0,1,0.358,1619,6.816]],["name/2697",[659,50.982]],["parent/2697",[0,0,1,0.358,1619,6.816]],["name/2698",[660,50.982]],["parent/2698",[0,0,1,0.358,1619,6.816]],["name/2699",[661,49.12]],["parent/2699",[0,0,1,0.358,1619,6.816]],["name/2700",[663,52.292]],["parent/2700",[0,0,1,0.358,1619,6.816]],["name/2701",[1620,78.992]],["parent/2701",[0,0,1,0.358,7,5.111]],["name/2702",[1357,48.462]],["parent/2702",[0,0,1,0.358,1621,6.816]],["name/2703",[659,50.982]],["parent/2703",[0,0,1,0.358,1621,6.816]],["name/2704",[660,50.982]],["parent/2704",[0,0,1,0.358,1621,6.816]],["name/2705",[661,49.12]],["parent/2705",[0,0,1,0.358,1621,6.816]],["name/2706",[663,52.292]],["parent/2706",[0,0,1,0.358,1621,6.816]],["name/2707",[1622,78.992]],["parent/2707",[0,0,1,0.358,7,5.111]],["name/2708",[1357,48.462]],["parent/2708",[0,0,1,0.358,1623,6.816]],["name/2709",[659,50.982]],["parent/2709",[0,0,1,0.358,1623,6.816]],["name/2710",[660,50.982]],["parent/2710",[0,0,1,0.358,1623,6.816]],["name/2711",[661,49.12]],["parent/2711",[0,0,1,0.358,1623,6.816]],["name/2712",[663,52.292]],["parent/2712",[0,0,1,0.358,1623,6.816]],["name/2713",[1624,78.992]],["parent/2713",[0,0,1,0.358,7,5.111]],["name/2714",[1357,48.462]],["parent/2714",[0,0,1,0.358,1625,6.816]],["name/2715",[659,50.982]],["parent/2715",[0,0,1,0.358,1625,6.816]],["name/2716",[660,50.982]],["parent/2716",[0,0,1,0.358,1625,6.816]],["name/2717",[661,49.12]],["parent/2717",[0,0,1,0.358,1625,6.816]],["name/2718",[663,52.292]],["parent/2718",[0,0,1,0.358,1625,6.816]],["name/2719",[61,65.963]],["parent/2719",[0,0,8,7.284,9,7.633]],["name/2720",[1626,78.992]],["parent/2720",[0,0,10,4.562]],["name/2721",[1627,78.992]],["parent/2721",[0,0,10,4.562]],["name/2722",[1628,78.992]],["parent/2722",[0,0,10,4.562]],["name/2723",[1629,78.992]],["parent/2723",[0,0,10,4.562]],["name/2724",[1630,78.992]],["parent/2724",[0,0,10,4.562]],["name/2725",[1631,78.992]],["parent/2725",[0,0,1632,8.765]],["name/2726",[1633,78.992]],["parent/2726",[0,0,1632,8.765]],["name/2727",[1634,78.992]],["parent/2727",[0,0,10,4.562]],["name/2728",[1635,73.869]],["parent/2728",[0,0,1636,6.95]],["name/2729",[659,50.982]],["parent/2729",[0,0,1636,6.95]],["name/2730",[49,28.994]],["parent/2730",[0,0,1636,6.95]],["name/2731",[660,50.982]],["parent/2731",[0,0,1636,6.95]],["name/2732",[49,28.994]],["parent/2732",[0,0,1636,6.95]],["name/2733",[661,49.12]],["parent/2733",[0,0,1636,6.95]],["name/2734",[49,28.994]],["parent/2734",[0,0,1636,6.95]],["name/2735",[662,62.853]],["parent/2735",[0,0,1636,6.95]],["name/2736",[49,28.994]],["parent/2736",[0,0,1636,6.95]],["name/2737",[663,52.292]],["parent/2737",[0,0,1636,6.95]],["name/2738",[49,28.994]],["parent/2738",[0,0,1636,6.95]],["name/2739",[1637,78.992]],["parent/2739",[0,0,10,4.562]],["name/2740",[1638,78.992]],["parent/2740",[0,0,10,4.562]],["name/2741",[1639,78.992]],["parent/2741",[0,0,10,4.562]],["name/2742",[1640,78.992]],["parent/2742",[0,0,1641,5.956]],["name/2743",[49,28.994]],["parent/2743",[0,0,1641,5.956]],["name/2744",[1642,78.992]],["parent/2744",[0,0,1641,5.956]],["name/2745",[7,49.466]],["parent/2745",[0,0,1641,5.956]],["name/2746",[59,60.482]],["parent/2746",[0,0,1641,5.956]],["name/2747",[1087,70.495]],["parent/2747",[0,0,1641,5.956]],["name/2748",[1088,70.495]],["parent/2748",[0,0,1641,5.956]],["name/2749",[1089,70.495]],["parent/2749",[0,0,1641,5.956]],["name/2750",[1090,70.495]],["parent/2750",[0,0,1641,5.956]],["name/2751",[1091,70.495]],["parent/2751",[0,0,1641,5.956]],["name/2752",[1092,70.495]],["parent/2752",[0,0,1641,5.956]],["name/2753",[62,67.975]],["parent/2753",[0,0,1641,5.956]],["name/2754",[49,28.994]],["parent/2754",[0,0,1641,5.956]],["name/2755",[61,65.963]],["parent/2755",[0,0,1641,5.956]],["name/2756",[49,28.994]],["parent/2756",[0,0,1641,5.956]],["name/2757",[1093,70.495]],["parent/2757",[0,0,1641,5.956]],["name/2758",[37,62.853]],["parent/2758",[0,0,1641,5.956]],["name/2759",[63,65.963]],["parent/2759",[0,0,1641,5.956]],["name/2760",[1094,70.495]],["parent/2760",[0,0,1641,5.956]],["name/2761",[82,64.288]],["parent/2761",[0,0,1641,5.956]],["name/2762",[1050,64.288]],["parent/2762",[0,0,1641,5.956]],["name/2763",[682,59.479]],["parent/2763",[0,0,1641,5.956]],["name/2764",[1051,64.288]],["parent/2764",[0,0,1641,5.956]],["name/2765",[1004,59.479]],["parent/2765",[0,0,1641,5.956]],["name/2766",[49,28.994]],["parent/2766",[0,0,1641,5.956]],["name/2767",[1052,65.963]],["parent/2767",[0,0,1641,5.956]],["name/2768",[1643,78.992]],["parent/2768",[0,0,10,4.562]],["name/2769",[1644,78.992]],["parent/2769",[0,0,1645,7.628]],["name/2770",[1646,78.992]],["parent/2770",[0,0,1645,7.628]],["name/2771",[1171,73.869]],["parent/2771",[0,0,1645,7.628]],["name/2772",[1647,78.992]],["parent/2772",[0,0,1645,7.628]],["name/2773",[1648,78.992]],["parent/2773",[0,0,1645,7.628]],["name/2774",[1596,73.869]],["parent/2774",[0,0,1645,7.628]],["name/2775",[1649,78.992]],["parent/2775",[0,0,10,4.562]],["name/2776",[1650,78.992]],["parent/2776",[0,0,1651,6.85]],["name/2777",[49,28.994]],["parent/2777",[0,0,1651,6.85]],["name/2778",[659,50.982]],["parent/2778",[0,0,1651,6.85]],["name/2779",[49,28.994]],["parent/2779",[0,0,1651,6.85]],["name/2780",[660,50.982]],["parent/2780",[0,0,1651,6.85]],["name/2781",[49,28.994]],["parent/2781",[0,0,1651,6.85]],["name/2782",[661,49.12]],["parent/2782",[0,0,1651,6.85]],["name/2783",[49,28.994]],["parent/2783",[0,0,1651,6.85]],["name/2784",[662,62.853]],["parent/2784",[0,0,1651,6.85]],["name/2785",[49,28.994]],["parent/2785",[0,0,1651,6.85]],["name/2786",[663,52.292]],["parent/2786",[0,0,1651,6.85]],["name/2787",[49,28.994]],["parent/2787",[0,0,1651,6.85]],["name/2788",[1652,78.992]],["parent/2788",[0,0,10,4.562]],["name/2789",[1653,78.992]],["parent/2789",[0,0,10,4.562]],["name/2790",[1654,78.992]],["parent/2790",[0,0,10,4.562]],["name/2791",[1655,78.992]],["parent/2791",[0,0,1656,6.321]],["name/2792",[49,28.994]],["parent/2792",[0,0,1656,6.321]],["name/2793",[1657,78.992]],["parent/2793",[0,0,1656,6.321]],["name/2794",[49,28.994]],["parent/2794",[0,0,1656,6.321]],["name/2795",[1658,78.992]],["parent/2795",[0,0,1656,6.321]],["name/2796",[49,28.994]],["parent/2796",[0,0,1656,6.321]],["name/2797",[1659,78.992]],["parent/2797",[0,0,1656,6.321]],["name/2798",[49,28.994]],["parent/2798",[0,0,1656,6.321]],["name/2799",[1635,73.869]],["parent/2799",[0,0,1656,6.321]],["name/2800",[659,50.982]],["parent/2800",[0,0,1656,6.321]],["name/2801",[49,28.994]],["parent/2801",[0,0,1656,6.321]],["name/2802",[660,50.982]],["parent/2802",[0,0,1656,6.321]],["name/2803",[49,28.994]],["parent/2803",[0,0,1656,6.321]],["name/2804",[661,49.12]],["parent/2804",[0,0,1656,6.321]],["name/2805",[49,28.994]],["parent/2805",[0,0,1656,6.321]],["name/2806",[662,62.853]],["parent/2806",[0,0,1656,6.321]],["name/2807",[49,28.994]],["parent/2807",[0,0,1656,6.321]],["name/2808",[663,52.292]],["parent/2808",[0,0,1656,6.321]],["name/2809",[49,28.994]],["parent/2809",[0,0,1656,6.321]],["name/2810",[1660,78.992]],["parent/2810",[0,0,10,4.562]],["name/2811",[1014,70.495]],["parent/2811",[0,0,1661,6.85]],["name/2812",[1662,78.992]],["parent/2812",[0,0,1661,6.85]],["name/2813",[1663,78.992]],["parent/2813",[0,0,1661,6.85]],["name/2814",[1664,73.869]],["parent/2814",[0,0,1661,6.85]],["name/2815",[1665,73.869]],["parent/2815",[0,0,1661,6.85]],["name/2816",[49,28.994]],["parent/2816",[0,0,1661,6.85]],["name/2817",[1666,78.992]],["parent/2817",[0,0,1661,6.85]],["name/2818",[49,28.994]],["parent/2818",[0,0,1661,6.85]],["name/2819",[1667,78.992]],["parent/2819",[0,0,1661,6.85]],["name/2820",[49,28.994]],["parent/2820",[0,0,1661,6.85]],["name/2821",[1668,78.992]],["parent/2821",[0,0,1661,6.85]],["name/2822",[1669,78.992]],["parent/2822",[0,0,1661,6.85]],["name/2823",[1670,78.992]],["parent/2823",[0,0,10,4.562]],["name/2824",[553,65.963]],["parent/2824",[0,0,1671,7.309]],["name/2825",[1672,73.869]],["parent/2825",[0,0,1671,7.309]],["name/2826",[1673,78.992]],["parent/2826",[0,0,1671,7.309]],["name/2827",[1674,73.869]],["parent/2827",[0,0,1671,7.309]],["name/2828",[49,28.994]],["parent/2828",[0,0,1671,7.309]],["name/2829",[1675,78.992]],["parent/2829",[0,0,1671,7.309]],["name/2830",[49,28.994]],["parent/2830",[0,0,1671,7.309]],["name/2831",[1676,73.869]],["parent/2831",[0,0,1671,7.309]],["name/2832",[1677,78.992]],["parent/2832",[0,0,10,4.562]],["name/2833",[1678,78.992]],["parent/2833",[0,0,1679,8.365]],["name/2834",[1680,78.992]],["parent/2834",[0,0,1679,8.365]],["name/2835",[1681,78.992]],["parent/2835",[0,0,1679,8.365]],["name/2836",[1682,78.992]],["parent/2836",[0,0,10,4.562]],["name/2837",[88,65.963]],["parent/2837",[0,0,1683,5.713]],["name/2838",[116,64.288]],["parent/2838",[0,0,1683,5.713]],["name/2839",[129,64.288]],["parent/2839",[0,0,1683,5.713]],["name/2840",[1684,78.992]],["parent/2840",[0,0,1683,5.713]],["name/2841",[100,60.482]],["parent/2841",[0,0,1683,5.713]],["name/2842",[106,70.495]],["parent/2842",[0,0,1683,5.713]],["name/2843",[94,70.495]],["parent/2843",[0,0,1683,5.713]],["name/2844",[673,62.853]],["parent/2844",[0,0,1683,5.713]],["name/2845",[675,62.853]],["parent/2845",[0,0,1683,5.713]],["name/2846",[1685,78.992]],["parent/2846",[0,0,1683,5.713]],["name/2847",[1686,78.992]],["parent/2847",[0,0,1683,5.713]],["name/2848",[1687,78.992]],["parent/2848",[0,0,1683,5.713]],["name/2849",[1688,78.992]],["parent/2849",[0,0,1683,5.713]],["name/2850",[1689,78.992]],["parent/2850",[0,0,1683,5.713]],["name/2851",[335,70.495]],["parent/2851",[0,0,1683,5.713]],["name/2852",[334,70.495]],["parent/2852",[0,0,1683,5.713]],["name/2853",[336,70.495]],["parent/2853",[0,0,1683,5.713]],["name/2854",[1690,73.869]],["parent/2854",[0,0,1683,5.713]],["name/2855",[1551,70.495]],["parent/2855",[0,0,1683,5.713]],["name/2856",[1548,70.495]],["parent/2856",[0,0,1683,5.713]],["name/2857",[111,65.963]],["parent/2857",[0,0,1683,5.713]],["name/2858",[128,70.495]],["parent/2858",[0,0,1683,5.713]],["name/2859",[127,70.495]],["parent/2859",[0,0,1683,5.713]],["name/2860",[126,67.975]],["parent/2860",[0,0,1683,5.713]],["name/2861",[104,70.495]],["parent/2861",[0,0,1683,5.713]],["name/2862",[1691,58.566]],["parent/2862",[0,0,1683,5.713]],["name/2863",[1692,78.992]],["parent/2863",[0,0,1683,5.713]],["name/2864",[1693,78.992]],["parent/2864",[0,0,1683,5.713]],["name/2865",[130,58.566]],["parent/2865",[0,0,1683,5.713]],["name/2866",[123,61.598]],["parent/2866",[0,0,1683,5.713]],["name/2867",[1545,70.495]],["parent/2867",[0,0,1683,5.713]],["name/2868",[1694,78.992]],["parent/2868",[0,0,1683,5.713]],["name/2869",[1695,78.992]],["parent/2869",[0,0,10,4.562]],["name/2870",[1696,78.992]],["parent/2870",[0,0,10,4.562]],["name/2871",[1697,78.992]],["parent/2871",[0,0,10,4.562]],["name/2872",[1698,78.992]],["parent/2872",[0,0,10,4.562]],["name/2873",[1699,78.992]],["parent/2873",[0,0,10,4.562]],["name/2874",[1700,78.992]],["parent/2874",[0,0,10,4.562]],["name/2875",[1701,78.992]],["parent/2875",[0,0,10,4.562]],["name/2876",[1702,78.992]],["parent/2876",[0,0,10,4.562]],["name/2877",[1703,78.992]],["parent/2877",[0,0,10,4.562]],["name/2878",[1704,78.992]],["parent/2878",[0,0,10,4.562]],["name/2879",[1705,78.992]],["parent/2879",[0,0,10,4.562]],["name/2880",[1706,78.992]],["parent/2880",[0,0,10,4.562]],["name/2881",[1707,78.992]],["parent/2881",[0,0,10,4.562]],["name/2882",[1708,78.992]],["parent/2882",[0,0,10,4.562]],["name/2883",[1709,78.992]],["parent/2883",[0,0,10,4.562]],["name/2884",[1710,78.992]],["parent/2884",[0,0,10,4.562]],["name/2885",[1711,78.992]],["parent/2885",[0,0,10,4.562]],["name/2886",[1712,78.992]],["parent/2886",[0,0,10,4.562]],["name/2887",[1713,78.992]],["parent/2887",[0,0,10,4.562]],["name/2888",[1714,78.992]],["parent/2888",[0,0,10,4.562]],["name/2889",[1715,78.992]],["parent/2889",[0,0,10,4.562]],["name/2890",[1716,78.992]],["parent/2890",[0,0,10,4.562]],["name/2891",[1717,78.992]],["parent/2891",[0,0,10,4.562]],["name/2892",[1718,78.992]],["parent/2892",[0,0,10,4.562]],["name/2893",[1719,78.992]],["parent/2893",[0,0,10,4.562]],["name/2894",[1720,78.992]],["parent/2894",[0,0,10,4.562]],["name/2895",[1721,78.992]],["parent/2895",[0,0,10,4.562]],["name/2896",[1722,78.992]],["parent/2896",[0,0,10,4.562]],["name/2897",[1723,78.992]],["parent/2897",[0,0,10,4.562]],["name/2898",[1724,78.992]],["parent/2898",[0,0,10,4.562]],["name/2899",[1725,78.992]],["parent/2899",[0,0,10,4.562]],["name/2900",[1726,78.992]],["parent/2900",[0,0,10,4.562]],["name/2901",[1727,78.992]],["parent/2901",[0,0,10,4.562]],["name/2902",[1728,78.992]],["parent/2902",[0,0,10,4.562]],["name/2903",[1729,78.992]],["parent/2903",[0,0,10,4.562]],["name/2904",[1730,78.992]],["parent/2904",[0,0,10,4.562]],["name/2905",[1731,78.992]],["parent/2905",[0,0,10,4.562]],["name/2906",[1732,78.992]],["parent/2906",[0,0,10,4.562]],["name/2907",[1733,78.992]],["parent/2907",[0,0,10,4.562]],["name/2908",[1734,78.992]],["parent/2908",[0,0,10,4.562]],["name/2909",[1735,78.992]],["parent/2909",[0,0,10,4.562]],["name/2910",[1736,78.992]],["parent/2910",[0,0,10,4.562]],["name/2911",[1737,78.992]],["parent/2911",[0,0,10,4.562]],["name/2912",[1738,78.992]],["parent/2912",[0,0,10,4.562]],["name/2913",[1739,78.992]],["parent/2913",[0,0,10,4.562]],["name/2914",[1014,70.495]],["parent/2914",[0,0,1740,6.95]],["name/2915",[1664,73.869]],["parent/2915",[0,0,1740,6.95]],["name/2916",[1665,73.869]],["parent/2916",[0,0,1740,6.95]],["name/2917",[49,28.994]],["parent/2917",[0,0,1740,6.95]],["name/2918",[1741,78.992]],["parent/2918",[0,0,1740,6.95]],["name/2919",[49,28.994]],["parent/2919",[0,0,1740,6.95]],["name/2920",[1742,78.992]],["parent/2920",[0,0,1740,6.95]],["name/2921",[1674,73.869]],["parent/2921",[0,0,1740,6.95]],["name/2922",[49,28.994]],["parent/2922",[0,0,1740,6.95]],["name/2923",[1672,73.869]],["parent/2923",[0,0,1740,6.95]],["name/2924",[1676,73.869]],["parent/2924",[0,0,1740,6.95]],["name/2925",[1743,78.992]],["parent/2925",[0,0,10,4.562]],["name/2926",[1744,78.992]],["parent/2926",[0,0,10,4.562]],["name/2927",[1745,78.992]],["parent/2927",[0,0,10,4.562]],["name/2928",[1746,78.992]],["parent/2928",[0,0,10,4.562]],["name/2929",[1747,78.992]],["parent/2929",[0,0,10,4.562]],["name/2930",[1748,78.992]],["parent/2930",[0,0,10,4.562]],["name/2931",[1749,78.992]],["parent/2931",[0,0,10,4.562]],["name/2932",[1750,78.992]],["parent/2932",[0,0,10,4.562]],["name/2933",[1751,78.992]],["parent/2933",[0,0,10,4.562]],["name/2934",[1752,78.992]],["parent/2934",[0,0,10,4.562]],["name/2935",[1753,78.992]],["parent/2935",[0,0,10,4.562]],["name/2936",[1754,78.992]],["parent/2936",[0,0,10,4.562]],["name/2937",[1755,78.992]],["parent/2937",[0,0,10,4.562]],["name/2938",[1756,78.992]],["parent/2938",[0,0,10,4.562]],["name/2939",[1757,78.992]],["parent/2939",[0,0,10,4.562]],["name/2940",[1758,78.992]],["parent/2940",[0,0,10,4.562]],["name/2941",[1759,78.992]],["parent/2941",[0,0,10,4.562]],["name/2942",[1760,78.992]],["parent/2942",[0,0,10,4.562]],["name/2943",[1761,78.992]],["parent/2943",[0,0,10,4.562]],["name/2944",[1762,78.992]],["parent/2944",[0,0,10,4.562]],["name/2945",[1763,78.992]],["parent/2945",[0,0,10,4.562]],["name/2946",[1764,78.992]],["parent/2946",[0,0,1765,8.066]],["name/2947",[1766,78.992]],["parent/2947",[0,0,1765,8.066]],["name/2948",[1767,78.992]],["parent/2948",[0,0,1765,8.066]],["name/2949",[1768,78.992]],["parent/2949",[0,0,1765,8.066]],["name/2950",[1769,78.992]],["parent/2950",[0,0]],["name/2951",[1770,78.992]],["parent/2951",[0,0,2,1.524,11,1.255,12,1.255]],["name/2952",[1771,78.992]],["parent/2952",[0,0,2,1.524,11,1.255,12,1.255]],["name/2953",[201,50.581]],["parent/2953",[0,0,11,1.255,12,1.255,1772,7.228]],["name/2954",[1773,78.992]],["parent/2954",[0,0,2,1.524,11,1.255,12,1.255]],["name/2955",[1774,78.992]],["parent/2955",[0,0,2,1.524,11,1.255,12,1.255]],["name/2956",[1215,59.479]],["parent/2956",[0,0,11,1.255,12,1.255,1775,7.228]],["name/2957",[1776,78.992]],["parent/2957",[0,0,2,1.524,11,1.255,12,1.255]],["name/2958",[1777,78.992]],["parent/2958",[0,0,2,1.524,11,1.255,12,1.255]],["name/2959",[1778,78.992]],["parent/2959",[0,0,2,1.524,11,1.255,12,1.255]],["name/2960",[1779,78.992]],["parent/2960",[0,0,2,1.524,11,1.255,12,1.255]],["name/2961",[1780,78.992]],["parent/2961",[0,0,2,1.524,11,1.255,12,1.255]],["name/2962",[1781,78.992]],["parent/2962",[0,0,2,1.524,11,1.255,12,1.255]],["name/2963",[1782,78.992]],["parent/2963",[0,0,2,1.524,11,1.255,12,1.255]],["name/2964",[1783,78.992]],["parent/2964",[0,0,2,1.524,11,1.255,12,1.255]],["name/2965",[1784,78.992]],["parent/2965",[0,0,2,1.524,11,1.255,12,1.255]],["name/2966",[49,28.994]],["parent/2966",[0,0,11,1.255,12,1.255,1785,7.228]],["name/2967",[1786,78.992]],["parent/2967",[0,0,2,1.524,11,1.255,12,1.255]],["name/2968",[355,65.963]],["parent/2968",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2969",[1788,78.992]],["parent/2969",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2970",[1789,78.992]],["parent/2970",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2971",[1790,70.495]],["parent/2971",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2972",[1791,78.992]],["parent/2972",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2973",[1792,78.992]],["parent/2973",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2974",[316,61.598]],["parent/2974",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2975",[1793,78.992]],["parent/2975",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2976",[1794,78.992]],["parent/2976",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2977",[1795,78.992]],["parent/2977",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2978",[1796,78.992]],["parent/2978",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2979",[1797,78.992]],["parent/2979",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2980",[1798,73.869]],["parent/2980",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2981",[1799,78.992]],["parent/2981",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2982",[190,59.479]],["parent/2982",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2983",[1800,58.566]],["parent/2983",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2984",[1801,78.992]],["parent/2984",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2985",[1691,58.566]],["parent/2985",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2986",[1215,59.479]],["parent/2986",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2987",[1802,73.869]],["parent/2987",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2988",[1803,78.992]],["parent/2988",[0,0,11,1.255,12,1.255,1787,4.785]],["name/2989",[1804,78.992]],["parent/2989",[0,0,2,1.524,11,1.255,12,1.255]],["name/2990",[1805,78.992]],["parent/2990",[0,0,2,1.524,11,1.255,12,1.255]],["name/2991",[675,62.853]],["parent/2991",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2992",[88,65.963]],["parent/2992",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2993",[1807,73.869]],["parent/2993",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2994",[1808,78.992]],["parent/2994",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2995",[1809,70.495]],["parent/2995",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2996",[1215,59.479]],["parent/2996",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2997",[230,64.288]],["parent/2997",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2998",[1810,73.869]],["parent/2998",[0,0,11,1.255,12,1.255,1806,4.351]],["name/2999",[1811,73.869]],["parent/2999",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3000",[671,70.495]],["parent/3000",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3001",[100,60.482]],["parent/3001",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3002",[1812,73.869]],["parent/3002",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3003",[678,65.963]],["parent/3003",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3004",[116,64.288]],["parent/3004",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3005",[1813,70.495]],["parent/3005",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3006",[703,65.963]],["parent/3006",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3007",[1800,58.566]],["parent/3007",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3008",[1814,78.992]],["parent/3008",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3009",[1815,78.992]],["parent/3009",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3010",[1816,73.869]],["parent/3010",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3011",[1817,78.992]],["parent/3011",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3012",[1818,78.992]],["parent/3012",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3013",[1819,73.869]],["parent/3013",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3014",[1820,78.992]],["parent/3014",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3015",[1821,78.992]],["parent/3015",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3016",[1822,73.869]],["parent/3016",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3017",[1823,78.992]],["parent/3017",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3018",[706,65.963]],["parent/3018",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3019",[673,62.853]],["parent/3019",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3020",[1824,78.992]],["parent/3020",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3021",[129,64.288]],["parent/3021",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3022",[833,67.975]],["parent/3022",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3023",[1825,73.869]],["parent/3023",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3024",[1826,73.869]],["parent/3024",[0,0,11,1.255,12,1.255,1806,4.351]],["name/3025",[1827,78.992]],["parent/3025",[0,0,2,1.524,11,1.255,12,1.255]],["name/3026",[1828,78.992]],["parent/3026",[0,0,2,1.524,11,1.255,12,1.255]],["name/3027",[49,28.994]],["parent/3027",[0,0,11,1.255,12,1.255,1829,7.228]],["name/3028",[675,62.853]],["parent/3028",[0,0,11,1.255,12,1.255,1830,7.228]],["name/3029",[1831,78.992]],["parent/3029",[0,0,2,1.524,11,1.255,12,1.255]],["name/3030",[49,28.994]],["parent/3030",[0,0,11,1.255,12,1.255,1832,7.228]],["name/3031",[1833,78.992]],["parent/3031",[0,0,11,1.255,12,1.255,1834,7.228]],["name/3032",[1835,78.992]],["parent/3032",[0,0,2,1.524,11,1.255,12,1.255]],["name/3033",[49,28.994]],["parent/3033",[0,0,11,1.255,12,1.255,1836,7.228]],["name/3034",[671,70.495]],["parent/3034",[0,0,11,1.255,12,1.255,1837,7.228]],["name/3035",[1838,78.992]],["parent/3035",[0,0,2,1.524,11,1.255,12,1.255]],["name/3036",[49,28.994]],["parent/3036",[0,0,11,1.255,12,1.255,1839,7.228]],["name/3037",[100,60.482]],["parent/3037",[0,0,11,1.255,12,1.255,1840,7.228]],["name/3038",[1841,78.992]],["parent/3038",[0,0,2,1.524,11,1.255,12,1.255]],["name/3039",[49,28.994]],["parent/3039",[0,0,11,1.255,12,1.255,1842,7.228]],["name/3040",[116,64.288]],["parent/3040",[0,0,11,1.255,12,1.255,1843,7.228]],["name/3041",[1844,78.992]],["parent/3041",[0,0,2,1.524,11,1.255,12,1.255]],["name/3042",[49,28.994]],["parent/3042",[0,0,11,1.255,12,1.255,1845,7.228]],["name/3043",[1813,70.495]],["parent/3043",[0,0,11,1.255,12,1.255,1846,7.228]],["name/3044",[1847,78.992]],["parent/3044",[0,0,2,1.524,11,1.255,12,1.255]],["name/3045",[49,28.994]],["parent/3045",[0,0,11,1.255,12,1.255,1848,7.228]],["name/3046",[703,65.963]],["parent/3046",[0,0,11,1.255,12,1.255,1849,7.228]],["name/3047",[1850,78.992]],["parent/3047",[0,0,2,1.524,11,1.255,12,1.255]],["name/3048",[49,28.994]],["parent/3048",[0,0,11,1.255,12,1.255,1851,7.228]],["name/3049",[126,67.975]],["parent/3049",[0,0,11,1.255,12,1.255,1852,7.228]],["name/3050",[1853,78.992]],["parent/3050",[0,0,2,1.524,11,1.255,12,1.255]],["name/3051",[49,28.994]],["parent/3051",[0,0,11,1.255,12,1.255,1854,7.228]],["name/3052",[1855,78.992]],["parent/3052",[0,0,11,1.255,12,1.255,1856,7.228]],["name/3053",[1857,78.992]],["parent/3053",[0,0,2,1.524,11,1.255,12,1.255]],["name/3054",[49,28.994]],["parent/3054",[0,0,11,1.255,12,1.255,1858,7.228]],["name/3055",[673,62.853]],["parent/3055",[0,0,11,1.255,12,1.255,1859,7.228]],["name/3056",[1860,78.992]],["parent/3056",[0,0,2,1.524,11,1.255,12,1.255]],["name/3057",[49,28.994]],["parent/3057",[0,0,11,1.255,12,1.255,1861,7.228]],["name/3058",[129,64.288]],["parent/3058",[0,0,11,1.255,12,1.255,1862,7.228]],["name/3059",[1863,78.992]],["parent/3059",[0,0,2,1.524,11,1.255,12,1.255]],["name/3060",[49,28.994]],["parent/3060",[0,0,11,1.255,12,1.255,1864,7.228]],["name/3061",[1865,78.992]],["parent/3061",[0,0,11,1.255,12,1.255,1866,7.228]],["name/3062",[1867,78.992]],["parent/3062",[0,0,2,1.524,11,1.255,12,1.255]],["name/3063",[49,28.994]],["parent/3063",[0,0,11,1.255,12,1.255,1868,7.228]],["name/3064",[833,67.975]],["parent/3064",[0,0,11,1.255,12,1.255,1869,7.228]],["name/3065",[1870,78.992]],["parent/3065",[0,0,2,1.524,11,1.255,12,1.255]],["name/3066",[49,28.994]],["parent/3066",[0,0,11,1.255,12,1.255,1871,7.228]],["name/3067",[1826,73.869]],["parent/3067",[0,0,11,1.255,12,1.255,1872,7.228]],["name/3068",[1873,78.992]],["parent/3068",[0,0,2,1.524,11,1.255,12,1.255]],["name/3069",[49,28.994]],["parent/3069",[0,0,11,1.255,12,1.255,1874,7.228]],["name/3070",[1875,78.992]],["parent/3070",[0,0,11,1.255,12,1.255,1876,6.036]],["name/3071",[1877,78.992]],["parent/3071",[0,0,11,1.255,12,1.255,1876,6.036]],["name/3072",[1878,78.992]],["parent/3072",[0,0,11,1.255,12,1.255,1876,6.036]],["name/3073",[1879,78.992]],["parent/3073",[0,0,11,1.255,12,1.255,1876,6.036]],["name/3074",[1880,73.869]],["parent/3074",[0,0,11,1.255,12,1.255,1876,6.036]],["name/3075",[1881,78.992]],["parent/3075",[0,0,2,1.524,11,1.255,12,1.255]],["name/3076",[49,28.994]],["parent/3076",[0,0,11,1.255,12,1.255,1882,7.228]],["name/3077",[230,64.288]],["parent/3077",[0,0,11,1.255,12,1.255,1883,7.228]],["name/3078",[1884,78.992]],["parent/3078",[0,0,2,1.524,11,1.255,12,1.255]],["name/3079",[49,28.994]],["parent/3079",[0,0,11,1.255,12,1.255,1885,7.228]],["name/3080",[1812,73.869]],["parent/3080",[0,0,11,1.255,12,1.255,1886,7.228]],["name/3081",[1887,78.992]],["parent/3081",[0,0,2,1.524,11,1.255,12,1.255]],["name/3082",[49,28.994]],["parent/3082",[0,0,11,1.255,12,1.255,1888,7.228]],["name/3083",[704,67.975]],["parent/3083",[0,0,11,1.255,12,1.255,1889,6.22]],["name/3084",[1890,78.992]],["parent/3084",[0,0,11,1.255,12,1.255,1889,6.22]],["name/3085",[705,67.975]],["parent/3085",[0,0,11,1.255,12,1.255,1889,6.22]],["name/3086",[1891,78.992]],["parent/3086",[0,0,11,1.255,12,1.255,1889,6.22]],["name/3087",[1892,78.992]],["parent/3087",[0,0,2,1.524,11,1.255,12,1.255]],["name/3088",[49,28.994]],["parent/3088",[0,0,11,1.255,12,1.255,1893,7.228]],["name/3089",[1894,78.992]],["parent/3089",[0,0,11,1.255,12,1.255,1895,6.22]],["name/3090",[1896,78.992]],["parent/3090",[0,0,11,1.255,12,1.255,1895,6.22]],["name/3091",[1897,78.992]],["parent/3091",[0,0,11,1.255,12,1.255,1895,6.22]],["name/3092",[1898,78.992]],["parent/3092",[0,0,11,1.255,12,1.255,1895,6.22]],["name/3093",[1899,78.992]],["parent/3093",[0,0,2,1.524,11,1.255,12,1.255]],["name/3094",[49,28.994]],["parent/3094",[0,0,11,1.255,12,1.255,1900,7.228]],["name/3095",[706,65.963]],["parent/3095",[0,0,11,1.255,12,1.255,1901,7.228]],["name/3096",[1902,78.992]],["parent/3096",[0,0,2,1.524,11,1.255,12,1.255]],["name/3097",[49,28.994]],["parent/3097",[0,0,11,1.255,12,1.255,1903,7.228]],["name/3098",[1825,73.869]],["parent/3098",[0,0,11,1.255,12,1.255,1904,7.228]],["name/3099",[1905,78.992]],["parent/3099",[0,0,2,1.524,11,1.255,12,1.255]],["name/3100",[49,28.994]],["parent/3100",[0,0,11,1.255,12,1.255,1906,7.228]],["name/3101",[1810,73.869]],["parent/3101",[0,0,11,1.255,12,1.255,1907,7.228]],["name/3102",[1908,78.992]],["parent/3102",[0,0,2,1.524,11,1.255,12,1.255]],["name/3103",[49,28.994]],["parent/3103",[0,0,11,1.255,12,1.255,1909,7.228]],["name/3104",[678,65.963]],["parent/3104",[0,0,11,1.255,12,1.255,1910,7.228]],["name/3105",[1911,78.992]],["parent/3105",[0,0,2,1.524,11,1.255,12,1.255]],["name/3106",[49,28.994]],["parent/3106",[0,0,11,1.255,12,1.255,1912,7.228]],["name/3107",[1913,78.992]],["parent/3107",[0,0,11,1.255,12,1.255,1914,7.228]],["name/3108",[1915,78.992]],["parent/3108",[0,0,2,1.524,11,1.255,12,1.255]],["name/3109",[49,28.994]],["parent/3109",[0,0,11,1.255,12,1.255,1916,7.228]],["name/3110",[1822,73.869]],["parent/3110",[0,0,11,1.255,12,1.255,1917,7.228]],["name/3111",[1918,78.992]],["parent/3111",[0,0,2,1.524,11,1.255,12,1.255]],["name/3112",[49,28.994]],["parent/3112",[0,0,11,1.255,12,1.255,1919,7.228]],["name/3113",[1920,78.992]],["parent/3113",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3114",[1922,78.992]],["parent/3114",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3115",[1923,78.992]],["parent/3115",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3116",[1924,78.992]],["parent/3116",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3117",[1925,78.992]],["parent/3117",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3118",[1926,78.992]],["parent/3118",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3119",[1927,78.992]],["parent/3119",[0,0,11,1.255,12,1.255,1921,5.751]],["name/3120",[1928,78.992]],["parent/3120",[0,0,2,1.524,11,1.255,12,1.255]],["name/3121",[49,28.994]],["parent/3121",[0,0,11,1.255,12,1.255,1929,7.228]],["name/3122",[1194,70.495]],["parent/3122",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3123",[1195,70.495]],["parent/3123",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3124",[1931,78.992]],["parent/3124",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3125",[1932,78.992]],["parent/3125",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3126",[1199,73.869]],["parent/3126",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3127",[1200,73.869]],["parent/3127",[0,0,11,1.255,12,1.255,1930,5.882]],["name/3128",[1933,78.992]],["parent/3128",[0,0,2,1.524,11,1.255,12,1.255]],["name/3129",[49,28.994]],["parent/3129",[0,0,11,1.255,12,1.255,1934,7.228]],["name/3130",[1809,70.495]],["parent/3130",[0,0,11,1.255,12,1.255,1935,7.228]],["name/3131",[1936,78.992]],["parent/3131",[0,0,2,1.524,11,1.255,12,1.255]],["name/3132",[49,28.994]],["parent/3132",[0,0,11,1.255,12,1.255,1937,7.228]],["name/3133",[1938,78.992]],["parent/3133",[0,0,11,1.255,12,1.255,1939,6.759]],["name/3134",[1940,78.992]],["parent/3134",[0,0,11,1.255,12,1.255,1939,6.759]],["name/3135",[1941,78.992]],["parent/3135",[0,0,2,1.524,11,1.255,12,1.255]],["name/3136",[49,28.994]],["parent/3136",[0,0,11,1.255,12,1.255,1942,7.228]],["name/3137",[1816,73.869]],["parent/3137",[0,0,11,1.255,12,1.255,1943,7.228]],["name/3138",[1944,78.992]],["parent/3138",[0,0,2,1.524,11,1.255,12,1.255]],["name/3139",[49,28.994]],["parent/3139",[0,0,11,1.255,12,1.255,1945,7.228]],["name/3140",[1811,73.869]],["parent/3140",[0,0,11,1.255,12,1.255,1946,7.228]],["name/3141",[1947,78.992]],["parent/3141",[0,0,2,1.524,11,1.255,12,1.255]],["name/3142",[1948,78.992]],["parent/3142",[0,0,2,1.524,11,1.255,12,1.255]],["name/3143",[49,28.994]],["parent/3143",[0,0,11,1.255,12,1.255,1949,7.228]],["name/3144",[821,73.869]],["parent/3144",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3145",[823,73.869]],["parent/3145",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3146",[824,73.869]],["parent/3146",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3147",[825,73.869]],["parent/3147",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3148",[826,73.869]],["parent/3148",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3149",[827,73.869]],["parent/3149",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3150",[828,73.869]],["parent/3150",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3151",[829,73.869]],["parent/3151",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3152",[830,73.869]],["parent/3152",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3153",[831,73.869]],["parent/3153",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3154",[381,70.495]],["parent/3154",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3155",[833,67.975]],["parent/3155",[0,0,11,1.255,12,1.255,1950,5.282]],["name/3156",[1951,78.992]],["parent/3156",[0,0,2,1.524,11,1.255,12,1.255]],["name/3157",[49,28.994]],["parent/3157",[0,0,11,1.255,12,1.255,1952,7.228]],["name/3158",[1953,78.992]],["parent/3158",[0,0,11,1.255,12,1.255,1954,6.759]],["name/3159",[1955,78.992]],["parent/3159",[0,0,11,1.255,12,1.255,1954,6.759]],["name/3160",[1956,78.992]],["parent/3160",[0,0,2,1.524,11,1.255,12,1.255]],["name/3161",[49,28.994]],["parent/3161",[0,0,11,1.255,12,1.255,1957,7.228]],["name/3162",[1958,78.992]],["parent/3162",[0,0,11,1.255,12,1.255,1959,6.759]],["name/3163",[1960,78.992]],["parent/3163",[0,0,11,1.255,12,1.255,1959,6.759]],["name/3164",[1961,78.992]],["parent/3164",[0,0,2,1.524,11,1.255,12,1.255]],["name/3165",[49,28.994]],["parent/3165",[0,0,11,1.255,12,1.255,1962,7.228]],["name/3166",[1963,78.992]],["parent/3166",[0,0,11,1.255,12,1.255,1964,6.22]],["name/3167",[1965,78.992]],["parent/3167",[0,0,11,1.255,12,1.255,1964,6.22]],["name/3168",[1966,78.992]],["parent/3168",[0,0,11,1.255,12,1.255,1964,6.22]],["name/3169",[1967,78.992]],["parent/3169",[0,0,11,1.255,12,1.255,1964,6.22]],["name/3170",[1968,78.992]],["parent/3170",[0,0,2,1.524,11,1.255,12,1.255]],["name/3171",[1969,78.992]],["parent/3171",[0,0,2,1.524,11,1.255,12,1.255]],["name/3172",[49,28.994]],["parent/3172",[0,0,11,1.255,12,1.255,1970,7.228]],["name/3173",[1971,78.992]],["parent/3173",[0,0,11,1.255,12,1.255,1972,7.228]],["name/3174",[1973,78.992]],["parent/3174",[0,0,2,1.524,11,1.255,12,1.255]],["name/3175",[1974,78.992]],["parent/3175",[0,0,2,1.524,11,1.255,12,1.255]],["name/3176",[1975,78.992]],["parent/3176",[0,0,2,1.524,11,1.255,12,1.255]],["name/3177",[1976,78.992]],["parent/3177",[0,0,2,1.524,11,1.255,12,1.255]],["name/3178",[1977,78.992]],["parent/3178",[0,0,2,1.524,11,1.255,12,1.255]],["name/3179",[1978,78.992]],["parent/3179",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3180",[1980,70.495]],["parent/3180",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3181",[1981,78.992]],["parent/3181",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3182",[1982,78.992]],["parent/3182",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3183",[1983,62.853]],["parent/3183",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3184",[1984,60.482]],["parent/3184",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3185",[201,50.581]],["parent/3185",[0,0,11,1.255,12,1.255,1979,5.751]],["name/3186",[1985,78.992]],["parent/3186",[0,0,2,1.524,11,1.255,12,1.255]],["name/3187",[1986,78.992]],["parent/3187",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3188",[1988,78.992]],["parent/3188",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3189",[1984,60.482]],["parent/3189",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3190",[201,50.581]],["parent/3190",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3191",[1215,59.479]],["parent/3191",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3192",[1983,62.853]],["parent/3192",[0,0,11,1.255,12,1.255,1987,5.882]],["name/3193",[1989,78.992]],["parent/3193",[0,0,2,1.524,11,1.255,12,1.255]],["name/3194",[1990,70.495]],["parent/3194",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3195",[1819,73.869]],["parent/3195",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3196",[1992,58.566]],["parent/3196",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3197",[1983,62.853]],["parent/3197",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3198",[1984,60.482]],["parent/3198",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3199",[201,50.581]],["parent/3199",[0,0,11,1.255,12,1.255,1991,5.882]],["name/3200",[1993,78.992]],["parent/3200",[0,0,2,1.524,11,1.255,12,1.255]],["name/3201",[1984,60.482]],["parent/3201",[0,0,11,1.255,12,1.255,1994,6.759]],["name/3202",[201,50.581]],["parent/3202",[0,0,11,1.255,12,1.255,1994,6.759]],["name/3203",[1995,78.992]],["parent/3203",[0,0,2,1.524,11,1.255,12,1.255]],["name/3204",[1983,62.853]],["parent/3204",[0,0,11,1.255,12,1.255,1996,7.228]],["name/3205",[1997,78.992]],["parent/3205",[0,0,2,1.524,11,1.255,12,1.255]],["name/3206",[1195,70.495]],["parent/3206",[0,0,11,1.255,12,1.255,1998,6.22]],["name/3207",[1422,73.869]],["parent/3207",[0,0,11,1.255,12,1.255,1998,6.22]],["name/3208",[1983,62.853]],["parent/3208",[0,0,11,1.255,12,1.255,1998,6.22]],["name/3209",[201,50.581]],["parent/3209",[0,0,11,1.255,12,1.255,1998,6.22]],["name/3210",[1999,78.992]],["parent/3210",[0,0,2,1.524,11,1.255,12,1.255]],["name/3211",[679,73.869]],["parent/3211",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3212",[680,73.869]],["parent/3212",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3213",[32,53.271]],["parent/3213",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3214",[678,65.963]],["parent/3214",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3215",[1984,60.482]],["parent/3215",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3216",[201,50.581]],["parent/3216",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3217",[2001,62.853]],["parent/3217",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3218",[1800,58.566]],["parent/3218",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3219",[1691,58.566]],["parent/3219",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3220",[1992,58.566]],["parent/3220",[0,0,11,1.255,12,1.255,2000,5.442]],["name/3221",[2002,78.992]],["parent/3221",[0,0,2,1.524,11,1.255,12,1.255]],["name/3222",[2003,62.853]],["parent/3222",[0,0,11,1.255,12,1.255,2004,6.45]],["name/3223",[2005,62.853]],["parent/3223",[0,0,11,1.255,12,1.255,2004,6.45]],["name/3224",[201,50.581]],["parent/3224",[0,0,11,1.255,12,1.255,2004,6.45]],["name/3225",[2006,78.992]],["parent/3225",[0,0,2,1.524,11,1.255,12,1.255]],["name/3226",[2003,62.853]],["parent/3226",[0,0,11,1.255,12,1.255,2007,6.759]],["name/3227",[2005,62.853]],["parent/3227",[0,0,11,1.255,12,1.255,2007,6.759]],["name/3228",[2008,78.992]],["parent/3228",[0,0,2,1.524,11,1.255,12,1.255]],["name/3229",[1990,70.495]],["parent/3229",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3230",[2010,78.992]],["parent/3230",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3231",[1983,62.853]],["parent/3231",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3232",[2003,62.853]],["parent/3232",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3233",[2005,62.853]],["parent/3233",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3234",[1984,60.482]],["parent/3234",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3235",[201,50.581]],["parent/3235",[0,0,11,1.255,12,1.255,2009,5.751]],["name/3236",[2011,78.992]],["parent/3236",[0,0,2,1.524,11,1.255,12,1.255]],["name/3237",[179,60.482]],["parent/3237",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3238",[1992,58.566]],["parent/3238",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3239",[2003,62.853]],["parent/3239",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3240",[2005,62.853]],["parent/3240",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3241",[1984,60.482]],["parent/3241",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3242",[201,50.581]],["parent/3242",[0,0,11,1.255,12,1.255,2012,5.882]],["name/3243",[2013,78.992]],["parent/3243",[0,0,2,1.524,11,1.255,12,1.255]],["name/3244",[2014,73.869]],["parent/3244",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3245",[2016,78.992]],["parent/3245",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3246",[2003,62.853]],["parent/3246",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3247",[2005,62.853]],["parent/3247",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3248",[1984,60.482]],["parent/3248",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3249",[201,50.581]],["parent/3249",[0,0,11,1.255,12,1.255,2015,5.882]],["name/3250",[2017,78.992]],["parent/3250",[0,0,2,1.524,11,1.255,12,1.255]],["name/3251",[1192,73.869]],["parent/3251",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3252",[1193,73.869]],["parent/3252",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3253",[2019,78.992]],["parent/3253",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3254",[1992,58.566]],["parent/3254",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3255",[2003,62.853]],["parent/3255",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3256",[2005,62.853]],["parent/3256",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3257",[201,50.581]],["parent/3257",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3258",[1215,59.479]],["parent/3258",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3259",[1983,62.853]],["parent/3259",[0,0,11,1.255,12,1.255,2018,5.534]],["name/3260",[2020,78.992]],["parent/3260",[0,0,2,1.524,11,1.255,12,1.255]],["name/3261",[2021,78.992]],["parent/3261",[0,0,2,1.524,11,1.255,12,1.255]],["name/3262",[2001,62.853]],["parent/3262",[0,0,11,1.255,12,1.255,2022,6.036]],["name/3263",[1800,58.566]],["parent/3263",[0,0,11,1.255,12,1.255,2022,6.036]],["name/3264",[1691,58.566]],["parent/3264",[0,0,11,1.255,12,1.255,2022,6.036]],["name/3265",[1992,58.566]],["parent/3265",[0,0,11,1.255,12,1.255,2022,6.036]],["name/3266",[201,50.581]],["parent/3266",[0,0,11,1.255,12,1.255,2022,6.036]],["name/3267",[2023,78.992]],["parent/3267",[0,0,2,1.524,11,1.255,12,1.255]],["name/3268",[179,60.482]],["parent/3268",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3269",[1992,58.566]],["parent/3269",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3270",[2003,62.853]],["parent/3270",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3271",[2005,62.853]],["parent/3271",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3272",[1984,60.482]],["parent/3272",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3273",[201,50.581]],["parent/3273",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3274",[2001,62.853]],["parent/3274",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3275",[1800,58.566]],["parent/3275",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3276",[1691,58.566]],["parent/3276",[0,0,11,1.255,12,1.255,2024,5.534]],["name/3277",[2025,78.992]],["parent/3277",[0,0,2,1.524,11,1.255,12,1.255]],["name/3278",[2026,78.992]],["parent/3278",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3279",[149,70.495]],["parent/3279",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3280",[31,73.869]],["parent/3280",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3281",[2028,78.992]],["parent/3281",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3282",[2001,62.853]],["parent/3282",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3283",[1800,58.566]],["parent/3283",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3284",[1691,58.566]],["parent/3284",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3285",[1992,58.566]],["parent/3285",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3286",[201,50.581]],["parent/3286",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3287",[1215,59.479]],["parent/3287",[0,0,11,1.255,12,1.255,2027,5.442]],["name/3288",[2029,78.992]],["parent/3288",[0,0,2,1.524,11,1.255,12,1.255]],["name/3289",[182,60.482]],["parent/3289",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3290",[2001,62.853]],["parent/3290",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3291",[1800,58.566]],["parent/3291",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3292",[1691,58.566]],["parent/3292",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3293",[1992,58.566]],["parent/3293",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3294",[201,50.581]],["parent/3294",[0,0,11,1.255,12,1.255,2030,5.882]],["name/3295",[2031,78.992]],["parent/3295",[0,0,2,1.524,11,1.255,12,1.255]],["name/3296",[1992,58.566]],["parent/3296",[0,0,11,1.255,12,1.255,2032,6.036]],["name/3297",[2001,62.853]],["parent/3297",[0,0,11,1.255,12,1.255,2032,6.036]],["name/3298",[1800,58.566]],["parent/3298",[0,0,11,1.255,12,1.255,2032,6.036]],["name/3299",[1691,58.566]],["parent/3299",[0,0,11,1.255,12,1.255,2032,6.036]],["name/3300",[201,50.581]],["parent/3300",[0,0,11,1.255,12,1.255,2032,6.036]],["name/3301",[2033,78.992]],["parent/3301",[0,0,2,1.524,11,1.255,12,1.255]],["name/3302",[2001,62.853]],["parent/3302",[0,0,11,1.255,12,1.255,2034,6.036]],["name/3303",[1800,58.566]],["parent/3303",[0,0,11,1.255,12,1.255,2034,6.036]],["name/3304",[1691,58.566]],["parent/3304",[0,0,11,1.255,12,1.255,2034,6.036]],["name/3305",[1992,58.566]],["parent/3305",[0,0,11,1.255,12,1.255,2034,6.036]],["name/3306",[201,50.581]],["parent/3306",[0,0,11,1.255,12,1.255,2034,6.036]],["name/3307",[2035,78.992]],["parent/3307",[0,0,2,1.524,11,1.255,12,1.255]],["name/3308",[2036,78.992]],["parent/3308",[0,0,2,1.524,11,1.255,12,1.255]],["name/3309",[201,50.581]],["parent/3309",[0,0,11,1.255,12,1.255,2037,7.228]],["name/3310",[2038,78.992]],["parent/3310",[0,0,2,1.524,11,1.255,12,1.255]],["name/3311",[201,50.581]],["parent/3311",[0,0,11,1.255,12,1.255,2039,6.759]],["name/3312",[1215,59.479]],["parent/3312",[0,0,11,1.255,12,1.255,2039,6.759]],["name/3313",[2040,78.992]],["parent/3313",[0,0,2,1.524,11,1.255,12,1.255]],["name/3314",[1990,70.495]],["parent/3314",[0,0,11,1.255,12,1.255,2041,6.759]],["name/3315",[201,50.581]],["parent/3315",[0,0,11,1.255,12,1.255,2041,6.759]],["name/3316",[2042,78.992]],["parent/3316",[0,0,2,1.524,11,1.255,12,1.255]],["name/3317",[2043,78.992]],["parent/3317",[0,0,2,1.524,11,1.255,12,1.255]],["name/3318",[301,70.495]],["parent/3318",[0,0,11,1.255,12,1.255,2044,6.45]],["name/3319",[201,50.581]],["parent/3319",[0,0,11,1.255,12,1.255,2044,6.45]],["name/3320",[1215,59.479]],["parent/3320",[0,0,11,1.255,12,1.255,2044,6.45]],["name/3321",[2045,78.992]],["parent/3321",[0,0,2,1.524,11,1.255,12,1.255]],["name/3322",[1992,58.566]],["parent/3322",[0,0,11,1.255,12,1.255,2046,7.228]],["name/3323",[2047,78.992]],["parent/3323",[0,0,2,1.524,11,1.255,12,1.255]],["name/3324",[49,28.994]],["parent/3324",[0,0,11,1.255,12,1.255,2048,7.228]],["name/3325",[355,65.963]],["parent/3325",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3326",[2050,78.992]],["parent/3326",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3327",[2051,78.992]],["parent/3327",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3328",[527,60.482]],["parent/3328",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3329",[2052,78.992]],["parent/3329",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3330",[1802,73.869]],["parent/3330",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3331",[190,59.479]],["parent/3331",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3332",[2053,78.992]],["parent/3332",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3333",[1798,73.869]],["parent/3333",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3334",[2054,73.869]],["parent/3334",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3335",[2055,78.992]],["parent/3335",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3336",[1790,70.495]],["parent/3336",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3337",[2056,78.992]],["parent/3337",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3338",[316,61.598]],["parent/3338",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3339",[182,60.482]],["parent/3339",[0,0,11,1.255,12,1.255,2049,5.085]],["name/3340",[2057,67.975]],["parent/3340",[0,0,2,1.524,11,1.255,12,1.255]],["name/3341",[2058,70.495]],["parent/3341",[0,0,2,1.524,11,1.255,12,1.255]],["name/3342",[2059,78.992]],["parent/3342",[0,0,2,1.524,11,1.255,12,1.255]],["name/3343",[2060,65.963]],["parent/3343",[0,0,2,1.524,11,1.255,12,1.255]],["name/3344",[49,28.994]],["parent/3344",[0,0,11,1.255,12,1.255,2061,7.228]],["name/3345",[2062,78.992]],["parent/3345",[0,0,2,1.524,11,1.255,12,1.255]],["name/3346",[2063,73.869]],["parent/3346",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3347",[2058,70.495]],["parent/3347",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3348",[2057,67.975]],["parent/3348",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3349",[2065,73.869]],["parent/3349",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3350",[2066,73.869]],["parent/3350",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3351",[2060,65.963]],["parent/3351",[0,0,11,1.255,12,1.255,2064,5.882]],["name/3352",[2067,78.992]],["parent/3352",[0,0,2,1.524,11,1.255,12,1.255]],["name/3353",[49,28.994]],["parent/3353",[0,0,11,1.255,12,1.255,2068,7.228]],["name/3354",[2069,78.992]],["parent/3354",[0,0,2,1.524,11,1.255,12,1.255]],["name/3355",[2070,78.992]],["parent/3355",[0,0,2,1.524,11,1.255,12,1.255]],["name/3356",[2071,70.495]],["parent/3356",[0,0,2,1.524,11,1.255,12,1.255]],["name/3357",[2072,78.992]],["parent/3357",[0,0,2,1.524,11,1.255,12,1.255]],["name/3358",[2073,78.992]],["parent/3358",[0,0,2,1.524,11,1.255,12,1.255]],["name/3359",[2074,73.869]],["parent/3359",[0,0,11,1.255,12,1.255,2075,6.036]],["name/3360",[2076,73.869]],["parent/3360",[0,0,11,1.255,12,1.255,2075,6.036]],["name/3361",[2071,70.495]],["parent/3361",[0,0,11,1.255,12,1.255,2075,6.036]],["name/3362",[2077,73.869]],["parent/3362",[0,0,11,1.255,12,1.255,2075,6.036]],["name/3363",[2078,73.869]],["parent/3363",[0,0,11,1.255,12,1.255,2075,6.036]],["name/3364",[2079,78.992]],["parent/3364",[0,0,2,1.524,11,1.255,12,1.255]],["name/3365",[49,28.994]],["parent/3365",[0,0,11,1.255,12,1.255,2080,7.228]],["name/3366",[2081,78.992]],["parent/3366",[0,0,2,1.524,11,1.255,12,1.255]],["name/3367",[60,55.573]],["parent/3367",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3368",[59,60.482]],["parent/3368",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3369",[1005,64.288]],["parent/3369",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3370",[2083,67.975]],["parent/3370",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3371",[682,59.479]],["parent/3371",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3372",[2084,70.495]],["parent/3372",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3373",[2085,70.495]],["parent/3373",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3374",[2086,73.869]],["parent/3374",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3375",[2087,73.869]],["parent/3375",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3376",[1576,70.495]],["parent/3376",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3377",[1980,70.495]],["parent/3377",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3378",[2088,67.975]],["parent/3378",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3379",[2074,73.869]],["parent/3379",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3380",[2076,73.869]],["parent/3380",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3381",[2071,70.495]],["parent/3381",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3382",[2077,73.869]],["parent/3382",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3383",[2078,73.869]],["parent/3383",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3384",[1800,58.566]],["parent/3384",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3385",[1691,58.566]],["parent/3385",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3386",[2089,73.869]],["parent/3386",[0,0,11,1.255,12,1.255,2082,4.828]],["name/3387",[2090,78.992]],["parent/3387",[0,0,2,1.524,11,1.255,12,1.255]],["name/3388",[49,28.994]],["parent/3388",[0,0,11,1.255,12,1.255,2091,7.228]],["name/3389",[2092,78.992]],["parent/3389",[0,0,2,1.524,11,1.255,12,1.255]],["name/3390",[2086,73.869]],["parent/3390",[0,0,11,1.255,12,1.255,2093,6.759]],["name/3391",[2087,73.869]],["parent/3391",[0,0,11,1.255,12,1.255,2093,6.759]],["name/3392",[2094,78.992]],["parent/3392",[0,0,2,1.524,11,1.255,12,1.255]],["name/3393",[60,55.573]],["parent/3393",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3394",[59,60.482]],["parent/3394",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3395",[1005,64.288]],["parent/3395",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3396",[2083,67.975]],["parent/3396",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3397",[682,59.479]],["parent/3397",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3398",[2084,70.495]],["parent/3398",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3399",[2085,70.495]],["parent/3399",[0,0,11,1.255,12,1.255,2095,5.751]],["name/3400",[2096,78.992]],["parent/3400",[0,0,2,1.524,11,1.255,12,1.255]],["name/3401",[1576,70.495]],["parent/3401",[0,0,11,1.255,12,1.255,2097,6.45]],["name/3402",[1980,70.495]],["parent/3402",[0,0,11,1.255,12,1.255,2097,6.45]],["name/3403",[2088,67.975]],["parent/3403",[0,0,11,1.255,12,1.255,2097,6.45]],["name/3404",[2098,78.992]],["parent/3404",[0,0,2,1.524,11,1.255,12,1.255]],["name/3405",[1800,58.566]],["parent/3405",[0,0,11,1.255,12,1.255,2099,6.45]],["name/3406",[1691,58.566]],["parent/3406",[0,0,11,1.255,12,1.255,2099,6.45]],["name/3407",[2089,73.869]],["parent/3407",[0,0,11,1.255,12,1.255,2099,6.45]],["name/3408",[2100,78.992]],["parent/3408",[0,0,2,1.524,11,1.255,12,1.255]],["name/3409",[2101,73.869]],["parent/3409",[0,0,11,1.255,12,1.255,2102,6.45]],["name/3410",[2103,78.992]],["parent/3410",[0,0,11,1.255,12,1.255,2102,6.45]],["name/3411",[2014,73.869]],["parent/3411",[0,0,11,1.255,12,1.255,2102,6.45]],["name/3412",[2104,78.992]],["parent/3412",[0,0,2,1.524,11,1.255,12,1.255]],["name/3413",[60,55.573]],["parent/3413",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3414",[59,60.482]],["parent/3414",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3415",[1005,64.288]],["parent/3415",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3416",[2083,67.975]],["parent/3416",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3417",[682,59.479]],["parent/3417",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3418",[2084,70.495]],["parent/3418",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3419",[2085,70.495]],["parent/3419",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3420",[2106,73.869]],["parent/3420",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3421",[417,65.963]],["parent/3421",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3422",[269,62.853]],["parent/3422",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3423",[2088,67.975]],["parent/3423",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3424",[2107,73.869]],["parent/3424",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3425",[2063,73.869]],["parent/3425",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3426",[2058,70.495]],["parent/3426",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3427",[2057,67.975]],["parent/3427",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3428",[2065,73.869]],["parent/3428",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3429",[2066,73.869]],["parent/3429",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3430",[2060,65.963]],["parent/3430",[0,0,11,1.255,12,1.255,2105,4.923]],["name/3431",[2108,78.992]],["parent/3431",[0,0,2,1.524,11,1.255,12,1.255]],["name/3432",[355,65.963]],["parent/3432",[0,0,11,1.255,12,1.255,2109,6.759]],["name/3433",[1790,70.495]],["parent/3433",[0,0,11,1.255,12,1.255,2109,6.759]],["name/3434",[2110,78.992]],["parent/3434",[0,0,2,1.524,11,1.255,12,1.255]],["name/3435",[793,70.495]],["parent/3435",[0,0,11,1.255,12,1.255,2111,6.45]],["name/3436",[153,60.482]],["parent/3436",[0,0,11,1.255,12,1.255,2111,6.45]],["name/3437",[2112,78.992]],["parent/3437",[0,0,11,1.255,12,1.255,2111,6.45]],["name/3438",[2113,78.992]],["parent/3438",[0,0,2,1.524,11,1.255,12,1.255]],["name/3439",[316,61.598]],["parent/3439",[0,0,11,1.255,12,1.255,2114,6.45]],["name/3440",[808,70.495]],["parent/3440",[0,0,11,1.255,12,1.255,2114,6.45]],["name/3441",[809,70.495]],["parent/3441",[0,0,11,1.255,12,1.255,2114,6.45]],["name/3442",[2115,78.992]],["parent/3442",[0,0,2,1.524,11,1.255,12,1.255]],["name/3443",[190,59.479]],["parent/3443",[0,0,11,1.255,12,1.255,2116,7.228]],["name/3444",[2117,78.992]],["parent/3444",[0,0,2,1.524,11,1.255,12,1.255]],["name/3445",[2106,73.869]],["parent/3445",[0,0,11,1.255,12,1.255,2118,6.45]],["name/3446",[417,65.963]],["parent/3446",[0,0,11,1.255,12,1.255,2118,6.45]],["name/3447",[269,62.853]],["parent/3447",[0,0,11,1.255,12,1.255,2118,6.45]],["name/3448",[2119,78.992]],["parent/3448",[0,0,2,1.524,11,1.255,12,1.255]],["name/3449",[772,65.963]],["parent/3449",[0,0,11,1.255,12,1.255,2120,6.22]],["name/3450",[301,70.495]],["parent/3450",[0,0,11,1.255,12,1.255,2120,6.22]],["name/3451",[201,50.581]],["parent/3451",[0,0,11,1.255,12,1.255,2120,6.22]],["name/3452",[1215,59.479]],["parent/3452",[0,0,11,1.255,12,1.255,2120,6.22]],["name/3453",[2121,78.992]],["parent/3453",[0,0,2,1.524,11,1.255,12,1.255]],["name/3454",[2101,73.869]],["parent/3454",[0,0,11,1.255,12,1.255,2122,6.759]],["name/3455",[2123,78.992]],["parent/3455",[0,0,11,1.255,12,1.255,2122,6.759]],["name/3456",[2124,78.992]],["parent/3456",[0,0,2,1.524,11,1.255,12,1.255]],["name/3457",[2088,67.975]],["parent/3457",[0,0,11,1.255,12,1.255,2125,6.759]],["name/3458",[2107,73.869]],["parent/3458",[0,0,11,1.255,12,1.255,2125,6.759]],["name/3459",[2126,78.992]],["parent/3459",[0,0,2,1.524,11,1.255,12,1.255]],["name/3460",[49,28.994]],["parent/3460",[0,0,11,1.255,12,1.255,2127,7.228]],["name/3461",[2128,78.992]],["parent/3461",[0,0,2,1.524,11,1.255,12,1.255]],["name/3462",[49,28.994]],["parent/3462",[0,0,11,1.255,12,1.255,2129,7.228]],["name/3463",[2130,67.975]],["parent/3463",[0,0,2,1.524,11,1.255,12,1.255]],["name/3464",[2131,78.992]],["parent/3464",[0,0,11,1.255,12,1.255,2132,6.22]],["name/3465",[2133,78.992]],["parent/3465",[0,0,11,1.255,12,1.255,2132,6.22]],["name/3466",[2134,78.992]],["parent/3466",[0,0,11,1.255,12,1.255,2132,6.22]],["name/3467",[2135,78.992]],["parent/3467",[0,0,11,1.255,12,1.255,2132,6.22]],["name/3468",[2136,78.992]],["parent/3468",[0,0,2,1.524,11,1.255,12,1.255]],["name/3469",[2137,78.992]],["parent/3469",[0,0,11,1.255,12,1.255,2138,6.036]],["name/3470",[2139,78.992]],["parent/3470",[0,0,11,1.255,12,1.255,2138,6.036]],["name/3471",[2140,78.992]],["parent/3471",[0,0,11,1.255,12,1.255,2138,6.036]],["name/3472",[2141,78.992]],["parent/3472",[0,0,11,1.255,12,1.255,2138,6.036]],["name/3473",[2060,65.963]],["parent/3473",[0,0,11,1.255,12,1.255,2138,6.036]],["name/3474",[2142,78.992]],["parent/3474",[0,0,4,2.827,11,1.255,12,1.255]],["name/3475",[2143,78.992]],["parent/3475",[0,0,4,2.827,11,1.255,12,1.255]],["name/3476",[2144,78.992]],["parent/3476",[0,0,4,2.827,11,1.255,12,1.255]],["name/3477",[2145,78.992]],["parent/3477",[0,0,4,2.827,11,1.255,12,1.255]],["name/3478",[2146,78.992]],["parent/3478",[0,0,4,2.827,11,1.255,12,1.255]],["name/3479",[2147,78.992]],["parent/3479",[0,0,4,2.827,11,1.255,12,1.255]],["name/3480",[2148,78.992]],["parent/3480",[0,0,4,2.827,11,1.255,12,1.255]],["name/3481",[2149,78.992]],["parent/3481",[0,0,4,2.827,11,1.255,12,1.255]],["name/3482",[2150,78.992]],["parent/3482",[0,0,4,2.827,11,1.255,12,1.255]],["name/3483",[2151,78.992]],["parent/3483",[0,0,4,2.827,11,1.255,12,1.255]],["name/3484",[2152,78.992]],["parent/3484",[0,0,4,2.827,11,1.255,12,1.255]],["name/3485",[2153,78.992]],["parent/3485",[0,0,4,2.827,11,1.255,12,1.255]],["name/3486",[2154,78.992]],["parent/3486",[0,0,4,2.827,11,1.255,12,1.255]],["name/3487",[2155,78.992]],["parent/3487",[0,0,4,2.827,11,1.255,12,1.255]],["name/3488",[2156,78.992]],["parent/3488",[0,0,4,2.827,11,1.255,12,1.255]],["name/3489",[2157,78.992]],["parent/3489",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3490",[2159,78.992]],["parent/3490",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3491",[2160,78.992]],["parent/3491",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3492",[2161,78.992]],["parent/3492",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3493",[2162,78.992]],["parent/3493",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3494",[2163,78.992]],["parent/3494",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3495",[2164,78.992]],["parent/3495",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3496",[2165,78.992]],["parent/3496",[0,0,11,1.255,12,1.255,2158,5.636]],["name/3497",[2166,78.992]],["parent/3497",[0,0,4,2.827,11,1.255,12,1.255]],["name/3498",[2167,78.992]],["parent/3498",[0,0,4,2.827,11,1.255,12,1.255]],["name/3499",[2168,78.992]],["parent/3499",[0,0,4,2.827,11,1.255,12,1.255]],["name/3500",[2169,78.992]],["parent/3500",[0,0,4,2.827,11,1.255,12,1.255]],["name/3501",[2170,78.992]],["parent/3501",[0,0,4,2.827,11,1.255,12,1.255]],["name/3502",[2171,78.992]],["parent/3502",[0,0,4,2.827,11,1.255,12,1.255]],["name/3503",[2172,78.992]],["parent/3503",[0,0,4,2.827,11,1.255,12,1.255]],["name/3504",[2173,78.992]],["parent/3504",[0,0,4,2.827,11,1.255,12,1.255]],["name/3505",[2174,78.992]],["parent/3505",[0,0,4,2.827,11,1.255,12,1.255]],["name/3506",[2175,78.992]],["parent/3506",[0,0,4,2.827,11,1.255,12,1.255]],["name/3507",[2176,78.992]],["parent/3507",[0,0,4,2.827,11,1.255,12,1.255]],["name/3508",[2177,78.992]],["parent/3508",[0,0,4,2.827,11,1.255,12,1.255]],["name/3509",[2178,78.992]],["parent/3509",[0,0,4,2.827,11,1.255,12,1.255]],["name/3510",[2179,78.992]],["parent/3510",[0,0,4,2.827,11,1.255,12,1.255]],["name/3511",[2180,78.992]],["parent/3511",[0,0,4,2.827,11,1.255,12,1.255]],["name/3512",[2181,78.992]],["parent/3512",[0,0,4,2.827,11,1.255,12,1.255]],["name/3513",[2182,78.992]],["parent/3513",[0,0,4,2.827,11,1.255,12,1.255]],["name/3514",[2183,78.992]],["parent/3514",[0,0,4,2.827,11,1.255,12,1.255]],["name/3515",[2184,78.992]],["parent/3515",[0,0,4,2.827,11,1.255,12,1.255]],["name/3516",[2185,78.992]],["parent/3516",[0,0,4,2.827,11,1.255,12,1.255]],["name/3517",[2186,78.992]],["parent/3517",[0,0,4,2.827,11,1.255,12,1.255]],["name/3518",[2187,78.992]],["parent/3518",[0,0,4,2.827,11,1.255,12,1.255]],["name/3519",[2188,78.992]],["parent/3519",[0,0,4,2.827,11,1.255,12,1.255]],["name/3520",[2189,78.992]],["parent/3520",[0,0,4,2.827,11,1.255,12,1.255]],["name/3521",[2190,78.992]],["parent/3521",[0,0,4,2.827,11,1.255,12,1.255]],["name/3522",[2191,78.992]],["parent/3522",[0,0,4,2.827,11,1.255,12,1.255]],["name/3523",[2192,78.992]],["parent/3523",[0,0,4,2.827,11,1.255,12,1.255]],["name/3524",[2193,78.992]],["parent/3524",[0,0,4,2.827,11,1.255,12,1.255]],["name/3525",[2194,78.992]],["parent/3525",[0,0,4,2.827,11,1.255,12,1.255]],["name/3526",[2057,67.975]],["parent/3526",[0,0,4,2.827,11,1.255,12,1.255]],["name/3527",[2195,78.992]],["parent/3527",[0,0,4,2.827,11,1.255,12,1.255]],["name/3528",[2196,78.992]],["parent/3528",[0,0,1,0.317,11,1.255,12,1.255]],["name/3529",[2197,78.992]],["parent/3529",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3530",[1813,70.495]],["parent/3530",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3531",[60,55.573]],["parent/3531",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3532",[682,59.479]],["parent/3532",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3533",[683,70.495]],["parent/3533",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3534",[684,70.495]],["parent/3534",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3535",[685,70.495]],["parent/3535",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3536",[686,70.495]],["parent/3536",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3537",[687,70.495]],["parent/3537",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3538",[688,70.495]],["parent/3538",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3539",[689,70.495]],["parent/3539",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3540",[690,70.495]],["parent/3540",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3541",[691,70.495]],["parent/3541",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3542",[692,70.495]],["parent/3542",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3543",[693,70.495]],["parent/3543",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3544",[694,70.495]],["parent/3544",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3545",[695,70.495]],["parent/3545",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3546",[696,70.495]],["parent/3546",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3547",[697,70.495]],["parent/3547",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3548",[698,70.495]],["parent/3548",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3549",[699,70.495]],["parent/3549",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3550",[700,67.975]],["parent/3550",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3551",[701,70.495]],["parent/3551",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3552",[702,70.495]],["parent/3552",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3553",[99,65.963]],["parent/3553",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3554",[100,60.482]],["parent/3554",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3555",[675,62.853]],["parent/3555",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3556",[676,67.975]],["parent/3556",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3557",[673,62.853]],["parent/3557",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3558",[674,67.975]],["parent/3558",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3559",[703,65.963]],["parent/3559",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3560",[704,67.975]],["parent/3560",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3561",[705,67.975]],["parent/3561",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3562",[706,65.963]],["parent/3562",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3563",[230,64.288]],["parent/3563",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3564",[707,70.495]],["parent/3564",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3565",[708,70.495]],["parent/3565",[0,0,11,1.255,12,1.255,2198,4.274]],["name/3566",[2199,78.992]],["parent/3566",[0,0,1,0.317,11,1.255,12,1.255]],["name/3567",[1197,73.869]],["parent/3567",[0,0,11,1.255,12,1.255,2200,6.036]],["name/3568",[2201,78.992]],["parent/3568",[0,0,11,1.255,12,1.255,2200,6.036]],["name/3569",[2202,78.992]],["parent/3569",[0,0,11,1.255,12,1.255,2200,6.036]],["name/3570",[1880,73.869]],["parent/3570",[0,0,11,1.255,12,1.255,2200,6.036]],["name/3571",[1809,70.495]],["parent/3571",[0,0,11,1.255,12,1.255,2200,6.036]],["name/3572",[1807,73.869]],["parent/3572",[0,0,1,0.317,11,1.255,12,1.255]],["name/3573",[1194,70.495]],["parent/3573",[0,0,11,1.255,12,1.255,2203,6.45]],["name/3574",[1214,73.869]],["parent/3574",[0,0,11,1.255,12,1.255,2203,6.45]],["name/3575",[8,70.495]],["parent/3575",[0,0,11,1.255,12,1.255,2203,6.45]],["name/3576",[2204,73.869]],["parent/3576",[0,0,1,0.317,11,1.255,12,1.255]],["name/3577",[49,28.994]],["parent/3577",[0,0,11,1.255,12,1.255,2205,7.228]],["name/3578",[2206,78.992]],["parent/3578",[0,0,1,0.317,11,1.255,12,1.255]],["name/3579",[2204,73.869]],["parent/3579",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3580",[2208,67.975]],["parent/3580",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3581",[2209,67.975]],["parent/3581",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3582",[974,61.598]],["parent/3582",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3583",[1054,70.495]],["parent/3583",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3584",[1058,70.495]],["parent/3584",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3585",[992,61.598]],["parent/3585",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3586",[965,61.598]],["parent/3586",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3587",[958,61.598]],["parent/3587",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3588",[961,61.598]],["parent/3588",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3589",[962,61.598]],["parent/3589",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3590",[990,61.598]],["parent/3590",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3591",[991,60.482]],["parent/3591",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3592",[964,61.598]],["parent/3592",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3593",[951,61.598]],["parent/3593",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3594",[1059,70.495]],["parent/3594",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3595",[966,61.598]],["parent/3595",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3596",[1060,70.495]],["parent/3596",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3597",[203,59.479]],["parent/3597",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3598",[1061,70.495]],["parent/3598",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3599",[1062,70.495]],["parent/3599",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3600",[1063,70.495]],["parent/3600",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3601",[1064,70.495]],["parent/3601",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3602",[1065,70.495]],["parent/3602",[0,0,11,1.255,12,1.255,2207,4.665]],["name/3603",[2210,78.992]],["parent/3603",[0,0,1,0.317,11,1.255,12,1.255]],["name/3604",[6,44.774]],["parent/3604",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3605",[1049,73.869]],["parent/3605",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3606",[2212,78.992]],["parent/3606",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3607",[2213,78.992]],["parent/3607",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3608",[59,60.482]],["parent/3608",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3609",[2214,73.869]],["parent/3609",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3610",[2215,73.869]],["parent/3610",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3611",[2083,67.975]],["parent/3611",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3612",[1047,73.869]],["parent/3612",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3613",[7,49.466]],["parent/3613",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3614",[1050,64.288]],["parent/3614",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3615",[682,59.479]],["parent/3615",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3616",[1051,64.288]],["parent/3616",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3617",[1004,59.479]],["parent/3617",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3618",[49,28.994]],["parent/3618",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3619",[1052,65.963]],["parent/3619",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3620",[1005,64.288]],["parent/3620",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3621",[1031,67.975]],["parent/3621",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3622",[130,58.566]],["parent/3622",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3623",[1034,70.495]],["parent/3623",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3624",[1035,70.495]],["parent/3624",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3625",[1037,70.495]],["parent/3625",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3626",[527,60.482]],["parent/3626",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3627",[1039,70.495]],["parent/3627",[0,0,11,1.255,12,1.255,2211,4.665]],["name/3628",[2208,67.975]],["parent/3628",[0,0,1,0.317,11,1.255,12,1.255]],["name/3629",[49,28.994]],["parent/3629",[0,0,11,1.255,12,1.255,2216,7.228]],["name/3630",[2209,67.975]],["parent/3630",[0,0,1,0.317,11,1.255,12,1.255]],["name/3631",[49,28.994]],["parent/3631",[0,0,11,1.255,12,1.255,2217,7.228]],["name/3632",[2218,78.992]],["parent/3632",[0,0,1,0.317,11,1.255,12,1.255]],["name/3633",[2130,67.975]],["parent/3633",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3634",[2220,70.495]],["parent/3634",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3635",[49,28.994]],["parent/3635",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3636",[484,62.853]],["parent/3636",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3637",[486,60.482]],["parent/3637",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3638",[487,64.288]],["parent/3638",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3639",[488,64.288]],["parent/3639",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3640",[489,64.288]],["parent/3640",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3641",[490,64.288]],["parent/3641",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3642",[461,62.853]],["parent/3642",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3643",[471,43.339]],["parent/3643",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3644",[472,43.339]],["parent/3644",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3645",[49,28.994]],["parent/3645",[0,0,11,1.255,12,1.255,2219,5.212]],["name/3646",[2221,78.992]],["parent/3646",[0,0,1,0.317,11,1.255,12,1.255]],["name/3647",[2130,67.975]],["parent/3647",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3648",[2220,70.495]],["parent/3648",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3649",[49,28.994]],["parent/3649",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3650",[484,62.853]],["parent/3650",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3651",[486,60.482]],["parent/3651",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3652",[487,64.288]],["parent/3652",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3653",[488,64.288]],["parent/3653",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3654",[489,64.288]],["parent/3654",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3655",[490,64.288]],["parent/3655",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3656",[461,62.853]],["parent/3656",[0,0,11,1.255,12,1.255,2222,5.442]],["name/3657",[2223,78.992]],["parent/3657",[0,0,1,0.317,11,1.255,12,1.255]],["name/3658",[2130,67.975]],["parent/3658",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3659",[2220,70.495]],["parent/3659",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3660",[49,28.994]],["parent/3660",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3661",[484,62.853]],["parent/3661",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3662",[486,60.482]],["parent/3662",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3663",[487,64.288]],["parent/3663",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3664",[488,64.288]],["parent/3664",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3665",[489,64.288]],["parent/3665",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3666",[490,64.288]],["parent/3666",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3667",[461,62.853]],["parent/3667",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3668",[471,43.339]],["parent/3668",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3669",[472,43.339]],["parent/3669",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3670",[49,28.994]],["parent/3670",[0,0,11,1.255,12,1.255,2224,5.212]],["name/3671",[2225,78.992]],["parent/3671",[0,0,1,0.317,11,1.255,12,1.255]],["name/3672",[2208,67.975]],["parent/3672",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3673",[2209,67.975]],["parent/3673",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3674",[2227,73.869]],["parent/3674",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3675",[2228,73.869]],["parent/3675",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3676",[661,49.12]],["parent/3676",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3677",[950,65.963]],["parent/3677",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3678",[951,61.598]],["parent/3678",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3679",[952,65.963]],["parent/3679",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3680",[953,65.963]],["parent/3680",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3681",[954,64.288]],["parent/3681",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3682",[139,54.946]],["parent/3682",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3683",[955,64.288]],["parent/3683",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3684",[956,64.288]],["parent/3684",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3685",[957,65.963]],["parent/3685",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3686",[958,61.598]],["parent/3686",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3687",[203,59.479]],["parent/3687",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3688",[959,65.963]],["parent/3688",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3689",[960,64.288]],["parent/3689",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3690",[122,58.566]],["parent/3690",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3691",[961,61.598]],["parent/3691",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3692",[962,61.598]],["parent/3692",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3693",[963,64.288]],["parent/3693",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3694",[964,61.598]],["parent/3694",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3695",[965,61.598]],["parent/3695",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3696",[966,61.598]],["parent/3696",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3697",[967,65.963]],["parent/3697",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3698",[968,65.963]],["parent/3698",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3699",[969,65.963]],["parent/3699",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3700",[970,65.963]],["parent/3700",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3701",[971,65.963]],["parent/3701",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3702",[972,65.963]],["parent/3702",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3703",[973,65.963]],["parent/3703",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3704",[130,58.566]],["parent/3704",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3705",[123,61.598]],["parent/3705",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3706",[974,61.598]],["parent/3706",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3707",[975,65.963]],["parent/3707",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3708",[976,65.963]],["parent/3708",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3709",[977,65.963]],["parent/3709",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3710",[978,65.963]],["parent/3710",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3711",[35,64.288]],["parent/3711",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3712",[979,65.963]],["parent/3712",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3713",[980,65.963]],["parent/3713",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3714",[981,65.963]],["parent/3714",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3715",[982,65.963]],["parent/3715",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3716",[983,65.963]],["parent/3716",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3717",[984,65.963]],["parent/3717",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3718",[985,65.963]],["parent/3718",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3719",[986,65.963]],["parent/3719",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3720",[987,65.963]],["parent/3720",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3721",[988,65.963]],["parent/3721",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3722",[989,65.963]],["parent/3722",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3723",[990,61.598]],["parent/3723",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3724",[991,60.482]],["parent/3724",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3725",[992,61.598]],["parent/3725",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3726",[993,65.963]],["parent/3726",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3727",[60,55.573]],["parent/3727",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3728",[994,65.963]],["parent/3728",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3729",[995,65.963]],["parent/3729",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3730",[996,65.963]],["parent/3730",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3731",[997,65.963]],["parent/3731",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3732",[998,65.963]],["parent/3732",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3733",[999,64.288]],["parent/3733",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3734",[1000,65.963]],["parent/3734",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3735",[1001,65.963]],["parent/3735",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3736",[1002,65.963]],["parent/3736",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3737",[1003,65.963]],["parent/3737",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3738",[1004,59.479]],["parent/3738",[0,0,11,1.255,12,1.255,2226,3.735]],["name/3739",[2229,78.992]],["parent/3739",[0,0,1,0.317,11,1.255,12,1.255]],["name/3740",[2214,73.869]],["parent/3740",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3741",[2215,73.869]],["parent/3741",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3742",[7,49.466]],["parent/3742",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3743",[59,60.482]],["parent/3743",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3744",[1087,70.495]],["parent/3744",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3745",[1088,70.495]],["parent/3745",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3746",[1089,70.495]],["parent/3746",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3747",[1090,70.495]],["parent/3747",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3748",[1091,70.495]],["parent/3748",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3749",[1092,70.495]],["parent/3749",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3750",[62,67.975]],["parent/3750",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3751",[49,28.994]],["parent/3751",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3752",[61,65.963]],["parent/3752",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3753",[49,28.994]],["parent/3753",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3754",[1093,70.495]],["parent/3754",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3755",[37,62.853]],["parent/3755",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3756",[63,65.963]],["parent/3756",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3757",[1094,70.495]],["parent/3757",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3758",[82,64.288]],["parent/3758",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3759",[1050,64.288]],["parent/3759",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3760",[682,59.479]],["parent/3760",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3761",[1051,64.288]],["parent/3761",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3762",[1004,59.479]],["parent/3762",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3763",[49,28.994]],["parent/3763",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3764",[1052,65.963]],["parent/3764",[0,0,11,1.255,12,1.255,2230,4.628]],["name/3765",[2231,78.992]],["parent/3765",[0,0,1,0.317,11,1.255,12,1.255]],["name/3766",[2232,78.992]],["parent/3766",[0,0,11,1.255,12,1.255,2233,6.22]],["name/3767",[2054,73.869]],["parent/3767",[0,0,11,1.255,12,1.255,2233,6.22]],["name/3768",[2234,78.992]],["parent/3768",[0,0,11,1.255,12,1.255,2233,6.22]],["name/3769",[2235,78.992]],["parent/3769",[0,0,11,1.255,12,1.255,2233,6.22]],["name/3770",[2236,78.992]],["parent/3770",[0,0,1,0.317,11,1.255,12,1.255]],["name/3771",[316,61.598]],["parent/3771",[0,0,11,1.255,12,1.255,2237,6.22]],["name/3772",[2238,78.992]],["parent/3772",[0,0,11,1.255,12,1.255,2237,6.22]],["name/3773",[2239,78.992]],["parent/3773",[0,0,11,1.255,12,1.255,2237,6.22]],["name/3774",[1225,70.495]],["parent/3774",[0,0,11,1.255,12,1.255,2237,6.22]],["name/3775",[2240,78.992]],["parent/3775",[0,0,1,0.317,11,1.255,12,1.255]],["name/3776",[527,60.482]],["parent/3776",[0,0,11,1.255,12,1.255,2241,6.759]],["name/3777",[525,67.975]],["parent/3777",[0,0,11,1.255,12,1.255,2241,6.759]],["name/3778",[2242,78.992]],["parent/3778",[0,0,1,0.317,11,1.255,12,1.255]],["name/3779",[2243,78.992]],["parent/3779",[0,0,11,1.255,12,1.255,2244,6.45]],["name/3780",[467,48.785]],["parent/3780",[0,0,11,1.255,12,1.255,2244,6.45]],["name/3781",[2245,73.869]],["parent/3781",[0,0,11,1.255,12,1.255,2244,6.45]],["name/3782",[2246,78.992]],["parent/3782",[0,0,1,0.317,11,1.255,12,1.255]],["name/3783",[2247,78.992]],["parent/3783",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3784",[467,48.785]],["parent/3784",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3785",[198,70.495]],["parent/3785",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3786",[2060,65.963]],["parent/3786",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3787",[2249,78.992]],["parent/3787",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3788",[49,28.994]],["parent/3788",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3789",[2250,78.992]],["parent/3789",[0,0,11,1.255,12,1.255,2248,5.751]],["name/3790",[2251,78.992]],["parent/3790",[0,0,1,0.317,11,1.255,12,1.255]],["name/3791",[49,28.994]],["parent/3791",[0,0,11,1.255,12,1.255,2252,7.228]],["name/3792",[2253,78.992]],["parent/3792",[0,0,1,0.317,11,1.255,12,1.255]],["name/3793",[2254,78.992]],["parent/3793",[0,0,11,1.255,12,1.255,2255,6.22]],["name/3794",[2256,78.992]],["parent/3794",[0,0,11,1.255,12,1.255,2255,6.22]],["name/3795",[2257,78.992]],["parent/3795",[0,0,11,1.255,12,1.255,2255,6.22]],["name/3796",[2245,73.869]],["parent/3796",[0,0,11,1.255,12,1.255,2255,6.22]],["name/3797",[2258,78.992]],["parent/3797",[0,0,1,0.317,11,1.255,12,1.255]],["name/3798",[1548,70.495]],["parent/3798",[0,0,1,0.317,11,1.255,12,1.255]],["name/3799",[1550,73.869]],["parent/3799",[0,0,1,0.317,11,1.255,12,1.255]],["name/3800",[2259,78.992]],["parent/3800",[0,0,1,0.317,11,1.255,12,1.255]],["name/3801",[1549,73.869]],["parent/3801",[0,0,1,0.317,11,1.255,12,1.255]],["name/3802",[1562,73.869]],["parent/3802",[0,0,1,0.317,11,1.255,12,1.255]],["name/3803",[1564,73.869]],["parent/3803",[0,0,1,0.317,11,1.255,12,1.255]],["name/3804",[1561,73.869]],["parent/3804",[0,0,1,0.317,11,1.255,12,1.255]],["name/3805",[1563,73.869]],["parent/3805",[0,0,1,0.317,11,1.255,12,1.255]],["name/3806",[1571,73.869]],["parent/3806",[0,0,1,0.317,11,1.255,12,1.255]],["name/3807",[1568,73.869]],["parent/3807",[0,0,1,0.317,11,1.255,12,1.255]],["name/3808",[1569,73.869]],["parent/3808",[0,0,1,0.317,11,1.255,12,1.255]],["name/3809",[1570,73.869]],["parent/3809",[0,0,1,0.317,11,1.255,12,1.255]],["name/3810",[1554,73.869]],["parent/3810",[0,0,1,0.317,11,1.255,12,1.255]],["name/3811",[1557,73.869]],["parent/3811",[0,0,1,0.317,11,1.255,12,1.255]],["name/3812",[1558,73.869]],["parent/3812",[0,0,1,0.317,11,1.255,12,1.255]],["name/3813",[1555,73.869]],["parent/3813",[0,0,1,0.317,11,1.255,12,1.255]],["name/3814",[1542,73.869]],["parent/3814",[0,0,1,0.317,11,1.255,12,1.255]],["name/3815",[2260,78.992]],["parent/3815",[0,0,1,0.317,11,1.255,12,1.255]],["name/3816",[1560,73.869]],["parent/3816",[0,0,1,0.317,11,1.255,12,1.255]],["name/3817",[111,65.963]],["parent/3817",[0,0,1,0.317,11,1.255,12,1.255]],["name/3818",[2261,78.992]],["parent/3818",[0,0,1,0.317,11,1.255,12,1.255]],["name/3819",[2262,78.992]],["parent/3819",[0,0,1,0.317,11,1.255,12,1.255]],["name/3820",[2263,78.992]],["parent/3820",[0,0,1,0.317,11,1.255,12,1.255]],["name/3821",[2264,78.992]],["parent/3821",[0,0,1,0.317,11,1.255,12,1.255]],["name/3822",[2265,78.992]],["parent/3822",[0,0,1,0.317,11,1.255,12,1.255]],["name/3823",[2266,78.992]],["parent/3823",[0,0,1,0.317,11,1.255,12,1.255]],["name/3824",[1441,70.495]],["parent/3824",[0,0,1,0.317,11,1.255,12,1.255]],["name/3825",[1442,70.495]],["parent/3825",[0,0,1,0.317,11,1.255,12,1.255]],["name/3826",[1556,73.869]],["parent/3826",[0,0,1,0.317,11,1.255,12,1.255]],["name/3827",[1572,73.869]],["parent/3827",[0,0,1,0.317,11,1.255,12,1.255]],["name/3828",[1566,73.869]],["parent/3828",[0,0,1,0.317,11,1.255,12,1.255]],["name/3829",[2267,78.992]],["parent/3829",[0,0,1,0.317,11,1.255,12,1.255]],["name/3830",[2268,78.992]],["parent/3830",[0,0,1,0.317,11,1.255,12,1.255]],["name/3831",[2269,78.992]],["parent/3831",[0,0,1,0.317,11,1.255,12,1.255]],["name/3832",[2270,78.992]],["parent/3832",[0,0,1,0.317,11,1.255,12,1.255]],["name/3833",[1546,73.869]],["parent/3833",[0,0,1,0.317,11,1.255,12,1.255]],["name/3834",[2271,78.992]],["parent/3834",[0,0,1,0.317,11,1.255,12,1.255]],["name/3835",[1545,70.495]],["parent/3835",[0,0,1,0.317,11,1.255,12,1.255]],["name/3836",[1690,73.869]],["parent/3836",[0,0,1,0.317,11,1.255,12,1.255]],["name/3837",[1551,70.495]],["parent/3837",[0,0,1,0.317,11,1.255,12,1.255]],["name/3838",[2272,78.992]],["parent/3838",[0,0,1,0.317,11,1.255,12,1.255]],["name/3839",[1559,73.869]],["parent/3839",[0,0,1,0.317,11,1.255,12,1.255]],["name/3840",[2273,78.992]],["parent/3840",[0,0,1,0.317,11,1.255,12,1.255]],["name/3841",[2274,78.992]],["parent/3841",[0,0,1,0.317,11,1.255,12,1.255]],["name/3842",[2275,78.992]],["parent/3842",[0,0,1,0.317,11,1.255,12,1.255]],["name/3843",[122,58.566]],["parent/3843",[0,0,1,0.317,11,1.255,12,1.255]],["name/3844",[205,67.975]],["parent/3844",[0,0,1,0.317,11,1.255,12,1.255]],["name/3845",[2276,78.992]],["parent/3845",[0,0,1,0.317,11,1.255,12,1.255]],["name/3846",[2277,78.992]],["parent/3846",[0,0,1,0.317,11,1.255,12,1.255]],["name/3847",[1357,48.462]],["parent/3847",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3848",[2208,67.975]],["parent/3848",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3849",[2209,67.975]],["parent/3849",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3850",[2227,73.869]],["parent/3850",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3851",[2228,73.869]],["parent/3851",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3852",[661,49.12]],["parent/3852",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3853",[950,65.963]],["parent/3853",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3854",[951,61.598]],["parent/3854",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3855",[952,65.963]],["parent/3855",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3856",[953,65.963]],["parent/3856",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3857",[954,64.288]],["parent/3857",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3858",[139,54.946]],["parent/3858",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3859",[955,64.288]],["parent/3859",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3860",[956,64.288]],["parent/3860",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3861",[957,65.963]],["parent/3861",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3862",[958,61.598]],["parent/3862",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3863",[203,59.479]],["parent/3863",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3864",[959,65.963]],["parent/3864",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3865",[960,64.288]],["parent/3865",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3866",[122,58.566]],["parent/3866",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3867",[961,61.598]],["parent/3867",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3868",[962,61.598]],["parent/3868",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3869",[963,64.288]],["parent/3869",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3870",[964,61.598]],["parent/3870",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3871",[965,61.598]],["parent/3871",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3872",[966,61.598]],["parent/3872",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3873",[967,65.963]],["parent/3873",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3874",[968,65.963]],["parent/3874",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3875",[969,65.963]],["parent/3875",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3876",[970,65.963]],["parent/3876",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3877",[971,65.963]],["parent/3877",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3878",[972,65.963]],["parent/3878",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3879",[973,65.963]],["parent/3879",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3880",[130,58.566]],["parent/3880",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3881",[123,61.598]],["parent/3881",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3882",[974,61.598]],["parent/3882",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3883",[975,65.963]],["parent/3883",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3884",[976,65.963]],["parent/3884",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3885",[977,65.963]],["parent/3885",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3886",[978,65.963]],["parent/3886",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3887",[35,64.288]],["parent/3887",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3888",[979,65.963]],["parent/3888",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3889",[980,65.963]],["parent/3889",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3890",[981,65.963]],["parent/3890",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3891",[982,65.963]],["parent/3891",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3892",[983,65.963]],["parent/3892",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3893",[984,65.963]],["parent/3893",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3894",[985,65.963]],["parent/3894",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3895",[986,65.963]],["parent/3895",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3896",[987,65.963]],["parent/3896",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3897",[988,65.963]],["parent/3897",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3898",[989,65.963]],["parent/3898",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3899",[990,61.598]],["parent/3899",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3900",[991,60.482]],["parent/3900",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3901",[992,61.598]],["parent/3901",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3902",[993,65.963]],["parent/3902",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3903",[60,55.573]],["parent/3903",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3904",[994,65.963]],["parent/3904",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3905",[995,65.963]],["parent/3905",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3906",[996,65.963]],["parent/3906",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3907",[997,65.963]],["parent/3907",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3908",[998,65.963]],["parent/3908",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3909",[999,64.288]],["parent/3909",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3910",[1000,65.963]],["parent/3910",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3911",[1003,65.963]],["parent/3911",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3912",[1001,65.963]],["parent/3912",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3913",[1002,65.963]],["parent/3913",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3914",[1004,59.479]],["parent/3914",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3915",[1538,70.495]],["parent/3915",[0,0,11,1.255,12,1.255,2278,3.708]],["name/3916",[2279,78.992]],["parent/3916",[0,0,1,0.317,11,1.255,12,1.255]],["name/3917",[2280,78.992]],["parent/3917",[0,0,1,0.317,11,1.255,12,1.255]],["name/3918",[1357,48.462]],["parent/3918",[0,0,11,1.255,12,1.255,2281,6.036]],["name/3919",[659,50.982]],["parent/3919",[0,0,11,1.255,12,1.255,2281,6.036]],["name/3920",[660,50.982]],["parent/3920",[0,0,11,1.255,12,1.255,2281,6.036]],["name/3921",[661,49.12]],["parent/3921",[0,0,11,1.255,12,1.255,2281,6.036]],["name/3922",[663,52.292]],["parent/3922",[0,0,11,1.255,12,1.255,2281,6.036]],["name/3923",[2282,78.992]],["parent/3923",[0,0,1,0.317,11,1.255,12,1.255]],["name/3924",[1357,48.462]],["parent/3924",[0,0,11,1.255,12,1.255,2283,6.036]],["name/3925",[659,50.982]],["parent/3925",[0,0,11,1.255,12,1.255,2283,6.036]],["name/3926",[660,50.982]],["parent/3926",[0,0,11,1.255,12,1.255,2283,6.036]],["name/3927",[661,49.12]],["parent/3927",[0,0,11,1.255,12,1.255,2283,6.036]],["name/3928",[663,52.292]],["parent/3928",[0,0,11,1.255,12,1.255,2283,6.036]],["name/3929",[2284,78.992]],["parent/3929",[0,0,1,0.317,11,1.255,12,1.255]],["name/3930",[1357,48.462]],["parent/3930",[0,0,11,1.255,12,1.255,2285,6.036]],["name/3931",[659,50.982]],["parent/3931",[0,0,11,1.255,12,1.255,2285,6.036]],["name/3932",[660,50.982]],["parent/3932",[0,0,11,1.255,12,1.255,2285,6.036]],["name/3933",[661,49.12]],["parent/3933",[0,0,11,1.255,12,1.255,2285,6.036]],["name/3934",[663,52.292]],["parent/3934",[0,0,11,1.255,12,1.255,2285,6.036]],["name/3935",[2286,78.992]],["parent/3935",[0,0,1,0.317,11,1.255,12,1.255]],["name/3936",[1357,48.462]],["parent/3936",[0,0,11,1.255,12,1.255,2287,6.22]],["name/3937",[659,50.982]],["parent/3937",[0,0,11,1.255,12,1.255,2287,6.22]],["name/3938",[660,50.982]],["parent/3938",[0,0,11,1.255,12,1.255,2287,6.22]],["name/3939",[661,49.12]],["parent/3939",[0,0,11,1.255,12,1.255,2287,6.22]],["name/3940",[2288,78.992]],["parent/3940",[0,0,1,0.317,11,1.255,12,1.255]],["name/3941",[1357,48.462]],["parent/3941",[0,0,11,1.255,12,1.255,2289,6.036]],["name/3942",[659,50.982]],["parent/3942",[0,0,11,1.255,12,1.255,2289,6.036]],["name/3943",[660,50.982]],["parent/3943",[0,0,11,1.255,12,1.255,2289,6.036]],["name/3944",[661,49.12]],["parent/3944",[0,0,11,1.255,12,1.255,2289,6.036]],["name/3945",[1028,73.869]],["parent/3945",[0,0,11,1.255,12,1.255,2289,6.036]],["name/3946",[2290,78.992]],["parent/3946",[0,0,1,0.317,11,1.255,12,1.255]],["name/3947",[2291,78.992]],["parent/3947",[0,0,1,0.317,11,1.255,12,1.255]],["name/3948",[2292,78.992]],["parent/3948",[0,0,1,0.317,11,1.255,12,1.255]],["name/3949",[2293,78.992]],["parent/3949",[0,0,1,0.317,11,1.255,12,1.255]],["name/3950",[2294,78.992]],["parent/3950",[0,0,1,0.317,11,1.255,12,1.255]],["name/3951",[2295,78.992]],["parent/3951",[0,0,1,0.317,11,1.255,12,1.255]],["name/3952",[2296,78.992]],["parent/3952",[0,0,1,0.317,11,1.255,12,1.255]],["name/3953",[2297,78.992]],["parent/3953",[0,0,11,1.417,12,1.417]]],"invertedIndex":[["1",{"_index":2163,"name":{"3494":{}},"parent":{}}],["10",{"_index":2162,"name":{"3493":{}},"parent":{}}],["11",{"_index":2160,"name":{"3491":{}},"parent":{}}],["2",{"_index":2157,"name":{"3489":{}},"parent":{}}],["3",{"_index":2165,"name":{"3496":{}},"parent":{}}],["7",{"_index":2164,"name":{"3495":{}},"parent":{}}],["8",{"_index":2159,"name":{"3490":{}},"parent":{}}],["9",{"_index":2161,"name":{"3492":{}},"parent":{}}],["__type",{"_index":49,"name":{"44":{},"55":{},"57":{},"457":{},"470":{},"474":{},"478":{},"482":{},"493":{},"512":{},"517":{},"524":{},"531":{},"542":{},"550":{},"563":{},"567":{},"571":{},"581":{},"598":{},"603":{},"610":{},"614":{},"617":{},"621":{},"624":{},"630":{},"635":{},"641":{},"648":{},"653":{},"658":{},"664":{},"670":{},"675":{},"681":{},"687":{},"693":{},"700":{},"705":{},"710":{},"716":{},"722":{},"727":{},"733":{},"752":{},"756":{},"765":{},"769":{},"775":{},"784":{},"789":{},"796":{},"801":{},"808":{},"832":{},"834":{},"836":{},"838":{},"840":{},"842":{},"846":{},"850":{},"943":{},"945":{},"951":{},"953":{},"1083":{},"1382":{},"1384":{},"1390":{},"1392":{},"1396":{},"1398":{},"1400":{},"1402":{},"1404":{},"1408":{},"1410":{},"1412":{},"1414":{},"1416":{},"1445":{},"1456":{},"1458":{},"1482":{},"1484":{},"1486":{},"1488":{},"1490":{},"1492":{},"1494":{},"1496":{},"1498":{},"1500":{},"1502":{},"1504":{},"1506":{},"1508":{},"1510":{},"1512":{},"1514":{},"1516":{},"1518":{},"1529":{},"1531":{},"1541":{},"1640":{},"1649":{},"1651":{},"1653":{},"1655":{},"1657":{},"1659":{},"1661":{},"1663":{},"1665":{},"1667":{},"1669":{},"1730":{},"1733":{},"1736":{},"1741":{},"1747":{},"1749":{},"1787":{},"1793":{},"2623":{},"2625":{},"2730":{},"2732":{},"2734":{},"2736":{},"2738":{},"2743":{},"2754":{},"2756":{},"2766":{},"2777":{},"2779":{},"2781":{},"2783":{},"2785":{},"2787":{},"2792":{},"2794":{},"2796":{},"2798":{},"2801":{},"2803":{},"2805":{},"2807":{},"2809":{},"2816":{},"2818":{},"2820":{},"2828":{},"2830":{},"2917":{},"2919":{},"2922":{},"2966":{},"3027":{},"3030":{},"3033":{},"3036":{},"3039":{},"3042":{},"3045":{},"3048":{},"3051":{},"3054":{},"3057":{},"3060":{},"3063":{},"3066":{},"3069":{},"3076":{},"3079":{},"3082":{},"3088":{},"3094":{},"3097":{},"3100":{},"3103":{},"3106":{},"3109":{},"3112":{},"3121":{},"3129":{},"3132":{},"3136":{},"3139":{},"3143":{},"3157":{},"3161":{},"3165":{},"3172":{},"3324":{},"3344":{},"3353":{},"3365":{},"3388":{},"3460":{},"3462":{},"3577":{},"3618":{},"3629":{},"3631":{},"3635":{},"3645":{},"3649":{},"3660":{},"3670":{},"3751":{},"3753":{},"3763":{},"3788":{},"3791":{}},"parent":{}}],["adaptivehandlesresizer",{"_index":265,"name":{"254":{},"1953":{}},"parent":{}}],["addblock",{"_index":2182,"name":{"3513":{}},"parent":{}}],["addcode",{"_index":2183,"name":{"3514":{}},"parent":{}}],["addcontenteditfeature",{"_index":988,"name":{"1349":{},"2480":{},"2546":{},"3721":{},"3897":{}},"parent":{}}],["adddelimiterafter",{"_index":1360,"name":{"2190":{}},"parent":{}}],["adddelimiterbefore",{"_index":1361,"name":{"2191":{}},"parent":{}}],["adddelimiterforentity",{"_index":2083,"name":{"3370":{},"3396":{},"3416":{},"3611":{}},"parent":{}}],["adddelimiters",{"_index":1359,"name":{"2189":{}},"parent":{}}],["adddomeventhandler",{"_index":971,"name":{"1329":{},"2460":{},"2526":{},"3701":{},"3877":{}},"parent":{}}],["additionalallowedattributes",{"_index":849,"name":{"1097":{},"1111":{}},"parent":{}}],["additionalallowedcssclasses",{"_index":850,"name":{"1098":{},"1112":{}},"parent":{}}],["additionaldata",{"_index":506,"name":{"528":{},"535":{},"539":{}},"parent":{}}],["additionaldefaultstylevalues",{"_index":851,"name":{"1099":{},"1113":{}},"parent":{}}],["additionalformatappliers",{"_index":2139,"name":{"3470":{}},"parent":{}}],["additionalformatparsers",{"_index":2135,"name":{"3467":{}},"parent":{}}],["additionalglobalstylenodes",{"_index":852,"name":{"1100":{},"1114":{}},"parent":{}}],["additionalpredefinedcssforelement",{"_index":853,"name":{"1101":{},"1115":{}},"parent":{}}],["additionaltagreplacements",{"_index":848,"name":{"1096":{},"1110":{}},"parent":{}}],["addlink",{"_index":2184,"name":{"3515":{}},"parent":{}}],["addnegativemargins",{"_index":1459,"name":{"2339":{}},"parent":{}}],["addrangetoselection",{"_index":1489,"name":{"2381":{}},"parent":{}}],["addsegment",{"_index":2188,"name":{"3519":{}},"parent":{}}],["addshadowroot",{"_index":250,"name":{"238":{},"1937":{}},"parent":{}}],["addsnapshot",{"_index":1165,"name":{"1644":{},"2382":{}},"parent":{}}],["addsnapshotv2",{"_index":1490,"name":{"2383":{}},"parent":{}}],["addundosnapshot",{"_index":974,"name":{"1334":{},"1455":{},"1460":{},"2465":{},"2531":{},"3582":{},"3706":{},"3882":{}},"parent":{}}],["adjustimageselection",{"_index":2273,"name":{"3840":{}},"parent":{}}],["adjustinsertposition",{"_index":1523,"name":{"2417":{}},"parent":{}}],["adjustlinkselection",{"_index":2272,"name":{"3838":{}},"parent":{}}],["after",{"_index":309,"name":{"297":{},"2123":{}},"parent":{}}],["aligncellbottom",{"_index":342,"name":{"327":{},"2167":{}},"parent":{}}],["aligncellcenter",{"_index":338,"name":{"323":{},"2163":{}},"parent":{}}],["aligncellleft",{"_index":337,"name":{"322":{},"2162":{}},"parent":{}}],["aligncellmiddle",{"_index":341,"name":{"326":{},"2166":{}},"parent":{}}],["aligncellright",{"_index":339,"name":{"324":{},"2164":{}},"parent":{}}],["aligncelltop",{"_index":340,"name":{"325":{},"2165":{}},"parent":{}}],["aligncenter",{"_index":334,"name":{"319":{},"2159":{},"2852":{}},"parent":{}}],["aligncenterbuttonstringkey",{"_index":1711,"name":{"2885":{}},"parent":{}}],["alignleft",{"_index":335,"name":{"320":{},"2160":{},"2851":{}},"parent":{}}],["alignleftbuttonstringkey",{"_index":1710,"name":{"2884":{}},"parent":{}}],["alignment",{"_index":195,"name":{"184":{}},"parent":{}}],["alignright",{"_index":336,"name":{"321":{},"2161":{},"2853":{}},"parent":{}}],["alignrightbuttonstringkey",{"_index":1712,"name":{"2886":{}},"parent":{}}],["all",{"_index":351,"name":{"336":{},"1988":{}},"parent":{}}],["allbuttonkeys",{"_index":1732,"name":{"2906":{}},"parent":{}}],["allbuttonstringkeys",{"_index":1728,"name":{"2902":{}},"parent":{}}],["allowcacheelement",{"_index":2085,"name":{"3373":{},"3399":{},"3419":{}},"parent":{}}],["allowdefaultmenu",{"_index":1587,"name":{"2626":{}},"parent":{}}],["allowedcustompastetype",{"_index":82,"name":{"75":{},"941":{},"948":{},"1536":{},"2761":{},"3758":{}},"parent":{}}],["allowfunctionkeys",{"_index":1021,"name":{"1385":{},"1393":{}},"parent":{}}],["allowkeyboardeventpropagation",{"_index":1094,"name":{"1535":{},"2760":{},"3757":{}},"parent":{}}],["allowlinkpreview",{"_index":717,"name":{"940":{},"947":{}},"parent":{}}],["allowlivepreview",{"_index":1673,"name":{"2826":{}},"parent":{}}],["allownull",{"_index":1254,"name":{"1754":{},"1759":{},"1766":{},"1771":{},"1778":{},"1783":{},"1790":{}},"parent":{}}],["alt",{"_index":149,"name":{"138":{},"1999":{},"3279":{}},"parent":{}}],["alwaysapplydefaultformat",{"_index":262,"name":{"251":{},"1950":{}},"parent":{}}],["anchorclass",{"_index":1925,"name":{"3117":{}},"parent":{}}],["anchorid",{"_index":1924,"name":{"3116":{}},"parent":{}}],["anchortitle",{"_index":1926,"name":{"3118":{}},"parent":{}}],["anglerad",{"_index":1971,"name":{"3173":{}},"parent":{}}],["api",{"_index":6,"name":{"4":{},"1439":{},"3604":{}},"parent":{"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{}}}],["appenditem",{"_index":1445,"name":{"2322":{}},"parent":{}}],["applycellshading",{"_index":1574,"name":{"2604":{}},"parent":{}}],["applyformat",{"_index":1386,"name":{"2252":{},"2299":{}},"parent":{}}],["applyliststyle",{"_index":1462,"name":{"2343":{}},"parent":{}}],["applypendingformat",{"_index":2271,"name":{"3834":{}},"parent":{}}],["applysegmentformat",{"_index":2260,"name":{"3815":{}},"parent":{}}],["applystyle",{"_index":740,"name":{"970":{},"2204":{},"2215":{},"2226":{},"2240":{}},"parent":{}}],["applytextstyle",{"_index":1375,"name":{"2241":{}},"parent":{}}],["areallcollapsed",{"_index":1221,"name":{"1707":{},"1711":{},"1718":{},"1723":{}},"parent":{}}],["aresameformats",{"_index":2151,"name":{"3483":{}},"parent":{}}],["array",{"_index":458,"name":{"442":{},"1858":{}},"parent":{}}],["arraydefinition",{"_index":1263,"name":{"1772":{}},"parent":{}}],["arrayitemtype",{"_index":1250,"name":{"1750":{}},"parent":{}}],["arraypush",{"_index":1533,"name":{"2429":{}},"parent":{}}],["asimage",{"_index":465,"name":{"449":{},"2093":{}},"parent":{}}],["asplaintext",{"_index":463,"name":{"447":{},"2091":{}},"parent":{}}],["attachdomevent",{"_index":1054,"name":{"1457":{},"1461":{},"3583":{}},"parent":{}}],["attr",{"_index":942,"name":{"1208":{},"1302":{}},"parent":{}}],["attribute",{"_index":181,"name":{"171":{},"2059":{}},"parent":{}}],["attributecallback",{"_index":1231,"name":{"1729":{}},"parent":{}}],["attributecallbackmap",{"_index":1233,"name":{"1731":{}},"parent":{}}],["attributecallbacks",{"_index":846,"name":{"1094":{},"1108":{}},"parent":{}}],["attributes",{"_index":1216,"name":{"1702":{}},"parent":{}}],["autobullet",{"_index":1096,"name":{"1544":{},"1598":{}},"parent":{}}],["autobulletlist",{"_index":1105,"name":{"1552":{},"1606":{}},"parent":{}}],["autocompleteindex",{"_index":799,"name":{"1038":{}},"parent":{}}],["autocompleteposition",{"_index":80,"name":{"73":{}},"parent":{}}],["autodetect",{"_index":356,"name":{"340":{},"1832":{}},"parent":{}}],["autofocus",{"_index":1768,"name":{"2949":{}},"parent":{}}],["autoformat",{"_index":1624,"name":{"2713":{}},"parent":{}}],["autoformatlist",{"_index":277,"name":{"266":{},"1965":{}},"parent":{}}],["autohyphen",{"_index":266,"name":{"255":{},"1581":{},"1631":{},"1954":{}},"parent":{}}],["autolink",{"_index":199,"name":{"189":{},"1564":{},"1585":{},"1816":{}},"parent":{}}],["autolinkfeaturesettings",{"_index":1134,"name":{"1584":{}},"parent":{}}],["autonumberinglist",{"_index":1106,"name":{"1553":{},"1607":{}},"parent":{}}],["autourldetect",{"_index":85,"name":{"77":{},"1868":{}},"parent":{}}],["b",{"_index":162,"name":{"152":{},"2013":{}},"parent":{}}],["backcolor",{"_index":87,"name":{"78":{},"1869":{}},"parent":{}}],["backgroundcolor",{"_index":675,"name":{"856":{},"891":{},"927":{},"2845":{},"2991":{},"3028":{},"3555":{}},"parent":{}}],["backgroundcolorbuttonstringkey",{"_index":1703,"name":{"2877":{}},"parent":{}}],["backgroundcolorformat",{"_index":1828,"name":{"3026":{}},"parent":{}}],["backgroundcolorkeys",{"_index":1756,"name":{"2938":{}},"parent":{}}],["backgroundcolors",{"_index":676,"name":{"857":{},"892":{},"928":{},"3556":{}},"parent":{}}],["backspace",{"_index":144,"name":{"133":{},"1994":{}},"parent":{}}],["backspaceafterentity",{"_index":1126,"name":{"1575":{},"1593":{}},"parent":{}}],["basepluginevent",{"_index":477,"name":{"471":{}},"parent":{}}],["before",{"_index":308,"name":{"296":{},"2122":{}},"parent":{}}],["beforecutcopy",{"_index":401,"name":{"384":{},"2104":{}},"parent":{}}],["beforecutcopyevent",{"_index":466,"name":{"450":{}},"parent":{}}],["beforecutcopyeventdata",{"_index":473,"name":{"458":{}},"parent":{}}],["beforedispatch",{"_index":1246,"name":{"1744":{}},"parent":{}}],["beforedispose",{"_index":404,"name":{"387":{},"2107":{}},"parent":{}}],["beforedisposeevent",{"_index":479,"name":{"475":{}},"parent":{}}],["beforekeyboardediting",{"_index":413,"name":{"398":{},"2118":{}},"parent":{}}],["beforekeyboardeditingdata",{"_index":635,"name":{"802":{}},"parent":{}}],["beforekeyboardeditingevent",{"_index":633,"name":{"797":{}},"parent":{}}],["beforepaste",{"_index":402,"name":{"385":{},"2105":{}},"parent":{}}],["beforepasteevent",{"_index":483,"name":{"483":{}},"parent":{}}],["beforepasteeventdata",{"_index":491,"name":{"494":{}},"parent":{}}],["beforesetcontent",{"_index":410,"name":{"395":{},"2115":{}},"parent":{}}],["beforesetcontentevent",{"_index":495,"name":{"513":{}},"parent":{}}],["beforesetcontenteventdata",{"_index":498,"name":{"518":{}},"parent":{}}],["begin",{"_index":215,"name":{"206":{},"294":{},"1837":{},"2120":{}},"parent":{}}],["bgcoloreven",{"_index":830,"name":{"1077":{},"3152":{}},"parent":{}}],["bgcolorodd",{"_index":831,"name":{"1078":{},"3153":{}},"parent":{}}],["bgcoloroverride",{"_index":836,"name":{"1084":{}},"parent":{}}],["block",{"_index":355,"name":{"339":{},"1831":{},"2968":{},"3325":{},"3432":{}},"parent":{}}],["blockdecorator",{"_index":2089,"name":{"3386":{},"3407":{}},"parent":{}}],["blockelement",{"_index":639,"name":{"809":{}},"parent":{}}],["blockformat",{"_index":1576,"name":{"2606":{},"3376":{},"3401":{}},"parent":{}}],["blockgroupchildren",{"_index":2050,"name":{"3326":{}},"parent":{}}],["blockgrouptype",{"_index":2003,"name":{"3222":{},"3226":{},"3232":{},"3239":{},"3246":{},"3255":{},"3270":{}},"parent":{}}],["blocklistitem",{"_index":362,"name":{"346":{},"2035":{}},"parent":{}}],["blockquotewrapper",{"_index":360,"name":{"344":{},"2033":{}},"parent":{}}],["blocks",{"_index":2005,"name":{"3223":{},"3227":{},"3233":{},"3240":{},"3247":{},"3256":{},"3271":{}},"parent":{}}],["blocktype",{"_index":1984,"name":{"3184":{},"3189":{},"3198":{},"3201":{},"3215":{},"3234":{},"3241":{},"3248":{},"3272":{}},"parent":{}}],["body",{"_index":311,"name":{"299":{},"2125":{}},"parent":{}}],["bold",{"_index":88,"name":{"79":{},"858":{},"1870":{},"2837":{},"2992":{}},"parent":{}}],["boldbuttonstringkey",{"_index":1695,"name":{"2869":{}},"parent":{}}],["boldformat",{"_index":1831,"name":{"3029":{}},"parent":{}}],["boolean",{"_index":454,"name":{"439":{},"1855":{}},"parent":{}}],["booleandefinition",{"_index":1261,"name":{"1767":{}},"parent":{}}],["border",{"_index":1807,"name":{"2993":{},"3572":{}},"parent":{}}],["borderbottom",{"_index":1878,"name":{"3072":{}},"parent":{}}],["borderbox",{"_index":1808,"name":{"2994":{}},"parent":{}}],["borderboxformat",{"_index":1863,"name":{"3059":{}},"parent":{}}],["bordercollapse",{"_index":1913,"name":{"3107":{}},"parent":{}}],["bordercolor",{"_index":1197,"name":{"1685":{},"3567":{}},"parent":{}}],["borderformat",{"_index":1873,"name":{"3068":{}},"parent":{}}],["borderkeys",{"_index":2193,"name":{"3524":{}},"parent":{}}],["borderleft",{"_index":1879,"name":{"3073":{}},"parent":{}}],["borderradius",{"_index":1880,"name":{"3074":{},"3570":{}},"parent":{}}],["borderright",{"_index":1877,"name":{"3071":{}},"parent":{}}],["borderstyle",{"_index":2202,"name":{"3569":{}},"parent":{}}],["bordertop",{"_index":1875,"name":{"3070":{}},"parent":{}}],["borderwidth",{"_index":2201,"name":{"3568":{}},"parent":{}}],["bottom",{"_index":782,"name":{"1016":{}},"parent":{}}],["bottombordercolor",{"_index":823,"name":{"1070":{},"3145":{}},"parent":{}}],["bottompercent",{"_index":1967,"name":{"3169":{}},"parent":{}}],["boxshadow",{"_index":1809,"name":{"2995":{},"3130":{},"3571":{}},"parent":{}}],["boxshadowformat",{"_index":1933,"name":{"3128":{}},"parent":{}}],["br",{"_index":2051,"name":{"3327":{}},"parent":{}}],["browser",{"_index":1384,"name":{"2250":{}},"parent":{}}],["browserinfo",{"_index":13,"name":{"13":{}},"parent":{}}],["buildineditfeature",{"_index":1022,"name":{"1386":{}},"parent":{}}],["bulletedlist",{"_index":1685,"name":{"2846":{}},"parent":{}}],["bulletedlistbuttonstringkey",{"_index":1704,"name":{"2878":{}},"parent":{}}],["bulletlisttype",{"_index":442,"name":{"426":{}},"parent":{}}],["buttons",{"_index":1680,"name":{"2834":{}},"parent":{}}],["cachecontentmodel",{"_index":2227,"name":{"3674":{},"3850":{}},"parent":{}}],["cachedelement",{"_index":1983,"name":{"3183":{},"3192":{},"3197":{},"3204":{},"3208":{},"3231":{},"3259":{}},"parent":{}}],["cachedmodel",{"_index":2212,"name":{"3606":{}},"parent":{}}],["cachedrangeex",{"_index":2213,"name":{"3607":{}},"parent":{}}],["cachegeteventdata",{"_index":1513,"name":{"2407":{}},"parent":{}}],["canaddimagealttext",{"_index":696,"name":{"882":{},"917":{},"3546":{}},"parent":{}}],["canappendatcursor",{"_index":1467,"name":{"2348":{}},"parent":{}}],["cancelbuttonstringkey",{"_index":1628,"name":{"2722":{}},"parent":{}}],["canmerge",{"_index":1457,"name":{"2335":{}},"parent":{}}],["canmergetablecell",{"_index":702,"name":{"888":{},"923":{},"3552":{}},"parent":{}}],["canmove",{"_index":1163,"name":{"1642":{}},"parent":{}}],["canmovecurrentsnapshot",{"_index":1491,"name":{"2384":{}},"parent":{}}],["canpersist",{"_index":1230,"name":{"1728":{}},"parent":{}}],["canredo",{"_index":708,"name":{"901":{},"938":{},"3565":{}},"parent":{}}],["canregenerateimage",{"_index":1604,"name":{"2660":{}},"parent":{}}],["canundo",{"_index":707,"name":{"900":{},"937":{},"3564":{}},"parent":{}}],["canundoautocomplete",{"_index":1167,"name":{"1646":{},"2390":{}},"parent":{}}],["canunlink",{"_index":694,"name":{"880":{},"915":{},"3544":{}},"parent":{}}],["capitalization",{"_index":295,"name":{"284":{}},"parent":{}}],["capitalizeeachword",{"_index":300,"name":{"288":{},"1814":{}},"parent":{}}],["cdatasection",{"_index":941,"name":{"1205":{},"1299":{}},"parent":{}}],["cells",{"_index":1422,"name":{"2293":{},"3207":{}},"parent":{}}],["cellshadebuttonstringkey",{"_index":1729,"name":{"2903":{}},"parent":{}}],["center",{"_index":197,"name":{"186":{},"1796":{}},"parent":{}}],["chainsanitizercallback",{"_index":1506,"name":{"2400":{}},"parent":{}}],["changecapitalization",{"_index":1560,"name":{"2590":{},"3816":{}},"parent":{}}],["changeelementtag",{"_index":1387,"name":{"2253":{}},"parent":{}}],["changefontsize",{"_index":1542,"name":{"2567":{},"3814":{}},"parent":{}}],["changeimage",{"_index":2270,"name":{"3832":{}},"parent":{}}],["changelisttype",{"_index":1443,"name":{"2320":{},"2340":{}},"parent":{}}],["changesource",{"_index":198,"name":{"188":{},"1672":{},"3785":{}},"parent":{}}],["characterdata",{"_index":940,"name":{"1203":{},"1297":{}},"parent":{}}],["childnode",{"_index":939,"name":{"1202":{},"1296":{}},"parent":{}}],["childprocessor",{"_index":2144,"name":{"3476":{}},"parent":{}}],["children",{"_index":1217,"name":{"1703":{}},"parent":{}}],["circle",{"_index":452,"name":{"436":{},"1808":{}},"parent":{}}],["classname",{"_index":1213,"name":{"1699":{}},"parent":{}}],["cleanhtml",{"_index":288,"name":{"276":{},"1975":{}},"parent":{}}],["clear",{"_index":390,"name":{"373":{},"2143":{}},"parent":{}}],["clearauthenticationcache",{"_index":89,"name":{"80":{},"1871":{}},"parent":{}}],["clearblockformat",{"_index":1544,"name":{"2569":{}},"parent":{}}],["cleareventdatacache",{"_index":1514,"name":{"2408":{}},"parent":{}}],["clearformat",{"_index":1545,"name":{"2570":{},"2867":{},"3835":{}},"parent":{}}],["clearformatbuttonstringkey",{"_index":1727,"name":{"2901":{}},"parent":{}}],["clearformatmode",{"_index":352,"name":{"337":{}},"parent":{}}],["clearproceedingsnapshots",{"_index":1492,"name":{"2385":{}},"parent":{}}],["clearproceedingsnapshotsv2",{"_index":1493,"name":{"2386":{}},"parent":{}}],["clearredo",{"_index":1166,"name":{"1645":{}},"parent":{}}],["click",{"_index":243,"name":{"230":{},"1929":{}},"parent":{}}],["clickingpoint",{"_index":47,"name":{"43":{}},"parent":{}}],["clickonentity",{"_index":1123,"name":{"1572":{},"1590":{}},"parent":{}}],["clipboarddata",{"_index":484,"name":{"484":{},"495":{},"503":{},"817":{},"3636":{},"3650":{},"3661":{}},"parent":{}}],["clonedroot",{"_index":469,"name":{"452":{},"460":{},"465":{},"600":{},"605":{},"607":{}},"parent":{}}],["code",{"_index":1691,"name":{"2862":{},"2985":{},"3219":{},"3264":{},"3276":{},"3284":{},"3292":{},"3299":{},"3304":{},"3385":{},"3406":{}},"parent":{}}],["codebuttonstringkey",{"_index":1722,"name":{"2896":{}},"parent":{}}],["codefeaturesettings",{"_index":1154,"name":{"1632":{}},"parent":{}}],["col",{"_index":1424,"name":{"2295":{}},"parent":{}}],["colindex",{"_index":2239,"name":{"3773":{}},"parent":{}}],["collapsenodes",{"_index":956,"name":{"1312":{},"2254":{},"2443":{},"2509":{},"3684":{},"3860":{}},"parent":{}}],["collapsenodesinregion",{"_index":1476,"name":{"2357":{}},"parent":{}}],["collapsetosingleelement",{"_index":640,"name":{"810":{}},"parent":{}}],["color",{"_index":8,"name":{"6":{},"3575":{}},"parent":{"2719":{}}}],["colorkeyandvalue",{"_index":1013,"name":{"1374":{}},"parent":{}}],["colortransformdirection",{"_index":210,"name":{"202":{}},"parent":{}}],["combinebordervalue",{"_index":2292,"name":{"3948":{}},"parent":{}}],["comma",{"_index":168,"name":{"158":{},"2019":{}},"parent":{}}],["commandbarproperties",{"_index":1669,"name":{"2822":{}},"parent":{}}],["commandbarsubmenuproperties",{"_index":1676,"name":{"2831":{},"2924":{}},"parent":{}}],["comment",{"_index":184,"name":{"174":{},"1207":{},"1301":{},"2062":{}},"parent":{}}],["commit",{"_index":1469,"name":{"2350":{}},"parent":{}}],["commitentity",{"_index":1507,"name":{"2401":{}},"parent":{}}],["commitlistchains",{"_index":1577,"name":{"2607":{}},"parent":{}}],["compatible",{"_index":3,"name":{"1":{}},"parent":{"1794":{},"1798":{},"1810":{},"1815":{},"1829":{},"1833":{},"1836":{},"1843":{},"1846":{},"1849":{},"1854":{},"1861":{},"1864":{},"1867":{},"1915":{},"1922":{},"1927":{},"1940":{},"1971":{},"1974":{},"1980":{},"1989":{},"1992":{},"2030":{},"2044":{},"2053":{},"2057":{},"2066":{},"2089":{},"2094":{},"2119":{},"2124":{},"2128":{},"2130":{},"2134":{},"2144":{}}}],["compatible.compatiblealignment",{"_index":1279,"name":{},"parent":{"1795":{},"1796":{},"1797":{}}}],["compatible.compatiblebulletlisttype",{"_index":1281,"name":{},"parent":{"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{}}}],["compatible.compatiblecapitalization",{"_index":1283,"name":{},"parent":{"1811":{},"1812":{},"1813":{},"1814":{}}}],["compatible.compatiblechangesource",{"_index":1285,"name":{},"parent":{"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{}}}],["compatible.compatibleclearformatmode",{"_index":1287,"name":{},"parent":{"1830":{},"1831":{},"1832":{}}}],["compatible.compatiblecolortransformdirection",{"_index":1289,"name":{},"parent":{"1834":{},"1835":{}}}],["compatible.compatiblecontentposition",{"_index":1291,"name":{},"parent":{"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{}}}],["compatible.compatiblecontenttype",{"_index":1295,"name":{},"parent":{"1847":{},"1848":{}}}],["compatible.compatiblecontenttypeprefix",{"_index":1293,"name":{},"parent":{"1844":{},"1845":{}}}],["compatible.compatibledarkmodedatasetnames",{"_index":1297,"name":{},"parent":{"1850":{},"1851":{},"1852":{},"1853":{}}}],["compatible.compatibledefinitiontype",{"_index":1299,"name":{},"parent":{"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{}}}],["compatible.compatibledelimiterclasses",{"_index":1301,"name":{},"parent":{"1862":{},"1863":{}}}],["compatible.compatibledirection",{"_index":1303,"name":{},"parent":{"1865":{},"1866":{}}}],["compatible.compatibledocumentcommand",{"_index":1305,"name":{},"parent":{"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{}}}],["compatible.compatibledocumentposition",{"_index":1307,"name":{},"parent":{"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{}}}],["compatible.compatibleentityclasses",{"_index":1309,"name":{},"parent":{"1923":{},"1924":{},"1925":{},"1926":{}}}],["compatible.compatibleentityoperation",{"_index":1311,"name":{},"parent":{"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{}}}],["compatible.compatibleexperimentalfeatures",{"_index":1313,"name":{},"parent":{"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{}}}],["compatible.compatiblefontsizechange",{"_index":1315,"name":{},"parent":{"1972":{},"1973":{}}}],["compatible.compatiblegetcontentmode",{"_index":1317,"name":{},"parent":{"1975":{},"1976":{},"1977":{},"1978":{},"1979":{}}}],["compatible.compatibleimageeditoperation",{"_index":1319,"name":{},"parent":{"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{}}}],["compatible.compatibleindentation",{"_index":1321,"name":{},"parent":{"1990":{},"1991":{}}}],["compatible.compatiblekeys",{"_index":1323,"name":{},"parent":{"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{}}}],["compatible.compatibleknowncreateelementdataindex",{"_index":1325,"name":{},"parent":{"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{}}}],["compatible.compatibleknownpastesourcetype",{"_index":1327,"name":{},"parent":{"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{}}}],["compatible.compatiblelisttype",{"_index":1329,"name":{},"parent":{"2054":{},"2055":{},"2056":{}}}],["compatible.compatiblenodetype",{"_index":1331,"name":{},"parent":{"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{}}}],["compatible.compatiblenumberinglisttype",{"_index":1333,"name":{},"parent":{"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{}}}],["compatible.compatiblepastetype",{"_index":1335,"name":{},"parent":{"2090":{},"2091":{},"2092":{},"2093":{}}}],["compatible.compatibleplugineventtype",{"_index":1337,"name":{},"parent":{"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{}}}],["compatible.compatiblepositiontype",{"_index":1339,"name":{},"parent":{"2120":{},"2121":{},"2122":{},"2123":{}}}],["compatible.compatiblequeryscope",{"_index":1341,"name":{},"parent":{"2125":{},"2126":{},"2127":{}}}],["compatible.compatibleregiontype",{"_index":1343,"name":{},"parent":{"2129":{}}}],["compatible.compatibleselectionrangetypes",{"_index":1345,"name":{},"parent":{"2131":{},"2132":{},"2133":{}}}],["compatible.compatibletableborderformat",{"_index":1347,"name":{},"parent":{"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{}}}],["compatible.compatibletableoperation",{"_index":1349,"name":{},"parent":{"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{}}}],["compatiblealignment",{"_index":1278,"name":{"1794":{}},"parent":{}}],["compatiblebeforecutcopyevent",{"_index":475,"name":{"463":{}},"parent":{}}],["compatiblebeforedisposeevent",{"_index":481,"name":{"479":{}},"parent":{}}],["compatiblebeforekeyboardeditingevent",{"_index":637,"name":{"804":{}},"parent":{}}],["compatiblebeforepasteevent",{"_index":493,"name":{"502":{}},"parent":{}}],["compatiblebeforesetcontentevent",{"_index":500,"name":{"520":{}},"parent":{}}],["compatiblebulletlisttype",{"_index":1280,"name":{"1798":{}},"parent":{}}],["compatiblecapitalization",{"_index":1282,"name":{"1810":{}},"parent":{}}],["compatiblechangesource",{"_index":1284,"name":{"1815":{}},"parent":{}}],["compatibleclearformatmode",{"_index":1286,"name":{"1829":{}},"parent":{}}],["compatiblecolortransformdirection",{"_index":1288,"name":{"1833":{}},"parent":{}}],["compatiblecontentchangedevent",{"_index":509,"name":{"536":{}},"parent":{}}],["compatiblecontentmodelbeforepasteevent",{"_index":2223,"name":{"3657":{}},"parent":{}}],["compatiblecontentposition",{"_index":1290,"name":{"1836":{}},"parent":{}}],["compatiblecontenttype",{"_index":1294,"name":{"1846":{}},"parent":{}}],["compatiblecontenttypeprefix",{"_index":1292,"name":{"1843":{}},"parent":{}}],["compatibledarkmodedatasetnames",{"_index":1296,"name":{"1849":{}},"parent":{}}],["compatibledefinitiontype",{"_index":1298,"name":{"1854":{}},"parent":{}}],["compatibledelimiterclasses",{"_index":1300,"name":{"1861":{}},"parent":{}}],["compatibledirection",{"_index":1302,"name":{"1864":{}},"parent":{}}],["compatibledocumentcommand",{"_index":1304,"name":{"1867":{}},"parent":{}}],["compatibledocumentposition",{"_index":1306,"name":{"1915":{}},"parent":{}}],["compatibleeditimageevent",{"_index":518,"name":{"556":{}},"parent":{}}],["compatibleeditorreadyevent",{"_index":522,"name":{"568":{}},"parent":{}}],["compatibleentershadoweditevent",{"_index":614,"name":{"760":{}},"parent":{}}],["compatibleentityclasses",{"_index":1308,"name":{"1922":{}},"parent":{}}],["compatibleentityoperation",{"_index":1310,"name":{"1927":{}},"parent":{}}],["compatibleentityoperationevent",{"_index":533,"name":{"589":{}},"parent":{}}],["compatibleexperimentalfeatures",{"_index":1312,"name":{"1940":{}},"parent":{}}],["compatibleextractcontentwithdomevent",{"_index":539,"name":{"606":{}},"parent":{}}],["compatiblefontsizechange",{"_index":1314,"name":{"1971":{}},"parent":{}}],["compatiblegetcontentmode",{"_index":1316,"name":{"1974":{}},"parent":{}}],["compatibleimageeditoperation",{"_index":1318,"name":{"1980":{}},"parent":{}}],["compatibleindentation",{"_index":1320,"name":{"1989":{}},"parent":{}}],["compatiblekeys",{"_index":1322,"name":{"1992":{}},"parent":{}}],["compatibleknowncreateelementdataindex",{"_index":1324,"name":{"2030":{}},"parent":{}}],["compatibleknownpastesourcetype",{"_index":1326,"name":{"2044":{}},"parent":{}}],["compatibleleaveshadoweditevent",{"_index":616,"name":{"766":{}},"parent":{}}],["compatiblelisttype",{"_index":1328,"name":{"2053":{}},"parent":{}}],["compatiblenodetype",{"_index":1330,"name":{"2057":{}},"parent":{}}],["compatiblenumberinglisttype",{"_index":1332,"name":{"2066":{}},"parent":{}}],["compatiblepastetype",{"_index":1334,"name":{"2089":{}},"parent":{}}],["compatiblependingformatstatechangedevent",{"_index":545,"name":{"618":{}},"parent":{}}],["compatibleplugincompositionevent",{"_index":574,"name":{"683":{}},"parent":{}}],["compatibleplugincontextmenuevent",{"_index":576,"name":{"688":{}},"parent":{}}],["compatibleplugindomevent",{"_index":573,"name":{"682":{}},"parent":{}}],["compatibleplugineventtype",{"_index":1336,"name":{"2094":{}},"parent":{}}],["compatibleplugininputevent",{"_index":590,"name":{"723":{}},"parent":{}}],["compatiblepluginkeyboardevent",{"_index":578,"name":{"694":{}},"parent":{}}],["compatiblepluginkeydownevent",{"_index":579,"name":{"695":{}},"parent":{}}],["compatiblepluginkeypressevent",{"_index":581,"name":{"701":{}},"parent":{}}],["compatiblepluginkeyupevent",{"_index":583,"name":{"706":{}},"parent":{}}],["compatiblepluginmousedownevent",{"_index":586,"name":{"712":{}},"parent":{}}],["compatiblepluginmouseevent",{"_index":585,"name":{"711":{}},"parent":{}}],["compatiblepluginmouseupevent",{"_index":588,"name":{"717":{}},"parent":{}}],["compatiblepluginscrollevent",{"_index":592,"name":{"728":{}},"parent":{}}],["compatiblepositiontype",{"_index":1338,"name":{"2119":{}},"parent":{}}],["compatiblequeryscope",{"_index":1340,"name":{"2124":{}},"parent":{}}],["compatibleregiontype",{"_index":1342,"name":{"2128":{}},"parent":{}}],["compatibleselectionchangedevent",{"_index":631,"name":{"792":{}},"parent":{}}],["compatibleselectionrangetypes",{"_index":1344,"name":{"2130":{}},"parent":{}}],["compatibletableborderformat",{"_index":1346,"name":{"2134":{}},"parent":{}}],["compatibletableoperation",{"_index":1348,"name":{"2144":{}},"parent":{}}],["compatiblezoomchangedevent",{"_index":624,"name":{"779":{}},"parent":{}}],["compositionend",{"_index":397,"name":{"379":{},"2099":{}},"parent":{}}],["constructor",{"_index":1357,"name":{"2181":{},"2195":{},"2206":{},"2217":{},"2228":{},"2291":{},"2311":{},"2327":{},"2364":{},"2394":{},"2434":{},"2500":{},"2610":{},"2616":{},"2628":{},"2635":{},"2641":{},"2649":{},"2668":{},"2682":{},"2688":{},"2696":{},"2702":{},"2708":{},"2714":{},"3847":{},"3918":{},"3924":{},"3930":{},"3936":{},"3941":{}},"parent":{}}],["containedby",{"_index":140,"name":{"130":{},"1921":{}},"parent":{}}],["container",{"_index":1803,"name":{"2988":{}},"parent":{}}],["contains",{"_index":139,"name":{"129":{},"815":{},"969":{},"1310":{},"1920":{},"2203":{},"2214":{},"2225":{},"2237":{},"2255":{},"2314":{},"2332":{},"2441":{},"2507":{},"3682":{},"3858":{}},"parent":{}}],["content",{"_index":11,"name":{"9":{},"10":{},"11":{},"12":{}},"parent":{"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{}}}],["contentchanged",{"_index":174,"name":{"164":{},"382":{},"2025":{},"2102":{}},"parent":{}}],["contentchangeddata",{"_index":667,"name":{"847":{}},"parent":{}}],["contentchangedevent",{"_index":502,"name":{"525":{}},"parent":{}}],["contentchangedeventdata",{"_index":507,"name":{"532":{}},"parent":{}}],["contentdiv",{"_index":1047,"name":{"1437":{},"3612":{}},"parent":{}}],["contentedit",{"_index":1579,"name":{"2609":{}},"parent":{}}],["contenteditfeature",{"_index":1016,"name":{"1378":{}},"parent":{}}],["contenteditfeaturesettings",{"_index":1095,"name":{"1543":{}},"parent":{}}],["contentforshadowentity",{"_index":530,"name":{"578":{},"588":{},"595":{}},"parent":{}}],["contentmetadata",{"_index":813,"name":{"1058":{}},"parent":{}}],["contentmetadatabase",{"_index":801,"name":{"1040":{}},"parent":{}}],["contentmodelbeforepasteevent",{"_index":2218,"name":{"3632":{}},"parent":{}}],["contentmodelbeforepasteeventdata",{"_index":2221,"name":{"3646":{}},"parent":{}}],["contentmodelblock",{"_index":1976,"name":{"3177":{}},"parent":{}}],["contentmodelblockbase",{"_index":1993,"name":{"3200":{}},"parent":{}}],["contentmodelblockformat",{"_index":1776,"name":{"2957":{}},"parent":{}}],["contentmodelblockgroup",{"_index":2020,"name":{"3260":{}},"parent":{}}],["contentmodelblockgroupbase",{"_index":2006,"name":{"3225":{}},"parent":{}}],["contentmodelblockgrouptype",{"_index":1973,"name":{"3174":{}},"parent":{}}],["contentmodelblockhandler",{"_index":2128,"name":{"3461":{}},"parent":{}}],["contentmodelblocktype",{"_index":1974,"name":{"3175":{}},"parent":{}}],["contentmodelblockwithcache",{"_index":1995,"name":{"3203":{}},"parent":{}}],["contentmodelbr",{"_index":2021,"name":{"3261":{}},"parent":{}}],["contentmodelcode",{"_index":2036,"name":{"3308":{}},"parent":{}}],["contentmodelcodeformat",{"_index":1781,"name":{"2962":{}},"parent":{}}],["contentmodelcopypasteplugin",{"_index":2288,"name":{"3940":{}},"parent":{}}],["contentmodelcoreapimap",{"_index":2206,"name":{"3578":{}},"parent":{}}],["contentmodeldecorator",{"_index":2042,"name":{"3316":{}},"parent":{}}],["contentmodeldivider",{"_index":1989,"name":{"3193":{}},"parent":{}}],["contentmodeldividerformat",{"_index":1783,"name":{"2964":{}},"parent":{}}],["contentmodeldocument",{"_index":2002,"name":{"3221":{}},"parent":{}}],["contentmodeleditor",{"_index":2277,"name":{"3846":{}},"parent":{}}],["contentmodeleditorcore",{"_index":2210,"name":{"3603":{}},"parent":{}}],["contentmodeleditoroptions",{"_index":2229,"name":{"3739":{}},"parent":{}}],["contentmodeleditplugin",{"_index":2282,"name":{"3923":{}},"parent":{}}],["contentmodelentity",{"_index":1999,"name":{"3210":{}},"parent":{}}],["contentmodelformatbase",{"_index":1784,"name":{"2965":{}},"parent":{}}],["contentmodelformatcontainer",{"_index":2008,"name":{"3228":{}},"parent":{}}],["contentmodelformatcontainerformat",{"_index":1782,"name":{"2963":{}},"parent":{}}],["contentmodelformatmap",{"_index":1786,"name":{"2967":{}},"parent":{}}],["contentmodelformatplugin",{"_index":2280,"name":{"3917":{}},"parent":{}}],["contentmodelformatstate",{"_index":2196,"name":{"3528":{}},"parent":{}}],["contentmodelformatter",{"_index":2251,"name":{"3790":{}},"parent":{}}],["contentmodelgeneralblock",{"_index":2011,"name":{"3236":{}},"parent":{}}],["contentmodelgeneralsegment",{"_index":2023,"name":{"3267":{}},"parent":{}}],["contentmodelhandler",{"_index":2126,"name":{"3459":{}},"parent":{}}],["contentmodelhandlermap",{"_index":2047,"name":{"3323":{}},"parent":{}}],["contentmodelhyperlinkformat",{"_index":1780,"name":{"2961":{}},"parent":{}}],["contentmodelimage",{"_index":2025,"name":{"3277":{}},"parent":{}}],["contentmodelimageformat",{"_index":1804,"name":{"2989":{}},"parent":{}}],["contentmodellink",{"_index":2038,"name":{"3310":{}},"parent":{}}],["contentmodellistitem",{"_index":2013,"name":{"3243":{}},"parent":{}}],["contentmodellistitemformat",{"_index":1778,"name":{"2959":{}},"parent":{}}],["contentmodellistitemlevelformat",{"_index":1779,"name":{"2960":{}},"parent":{}}],["contentmodellistlevel",{"_index":2043,"name":{"3317":{}},"parent":{}}],["contentmodelparagraph",{"_index":1977,"name":{"3178":{}},"parent":{}}],["contentmodelparagraphdecorator",{"_index":2040,"name":{"3313":{}},"parent":{}}],["contentmodelpaste",{"_index":281,"name":{"270":{},"1969":{}},"parent":{}}],["contentmodelpasteplugin",{"_index":2284,"name":{"3929":{}},"parent":{}}],["contentmodelsegment",{"_index":2035,"name":{"3307":{}},"parent":{}}],["contentmodelsegmentbase",{"_index":2033,"name":{"3301":{}},"parent":{}}],["contentmodelsegmentformat",{"_index":1770,"name":{"2951":{}},"parent":{}}],["contentmodelsegmenttype",{"_index":1975,"name":{"3176":{}},"parent":{}}],["contentmodelselectionmarker",{"_index":2031,"name":{"3295":{}},"parent":{}}],["contentmodeltable",{"_index":1985,"name":{"3186":{}},"parent":{}}],["contentmodeltablecell",{"_index":2017,"name":{"3250":{}},"parent":{}}],["contentmodeltablecellformat",{"_index":1777,"name":{"2958":{}},"parent":{}}],["contentmodeltableformat",{"_index":1773,"name":{"2954":{}},"parent":{}}],["contentmodeltablerow",{"_index":1997,"name":{"3205":{}},"parent":{}}],["contentmodeltext",{"_index":2029,"name":{"3288":{}},"parent":{}}],["contentmodeltodom",{"_index":2143,"name":{"3475":{}},"parent":{}}],["contentmodeltypeincontainerplugin",{"_index":2286,"name":{"3935":{}},"parent":{}}],["contentmodelwithdataset",{"_index":1774,"name":{"2955":{}},"parent":{}}],["contentmodelwithformat",{"_index":1771,"name":{"2952":{}},"parent":{}}],["contentnode",{"_index":2254,"name":{"3793":{}},"parent":{}}],["contentposition",{"_index":214,"name":{"205":{}},"parent":{}}],["contentreadonly",{"_index":90,"name":{"81":{},"1872":{}},"parent":{}}],["contenttraverser",{"_index":1351,"name":{"2170":{}},"parent":{}}],["contenttype",{"_index":191,"name":{"181":{}},"parent":{}}],["contenttypeprefix",{"_index":188,"name":{"178":{}},"parent":{}}],["contextmenu",{"_index":244,"name":{"231":{},"391":{},"1930":{},"2111":{},"2615":{}},"parent":{}}],["contextmenuitem",{"_index":1739,"name":{"2913":{}},"parent":{}}],["contextmenuoptions",{"_index":1583,"name":{"2621":{}},"parent":{}}],["contextmenuprovider",{"_index":656,"name":{"830":{}},"parent":{}}],["contextmenuproviders",{"_index":41,"name":{"38":{}},"parent":{}}],["contextmenuwrapper",{"_index":363,"name":{"347":{},"2036":{}},"parent":{}}],["convertcssonly",{"_index":859,"name":{"1106":{}},"parent":{}}],["convertglobalcsstoinlinecss",{"_index":1503,"name":{"2397":{}},"parent":{}}],["convertinlinecss",{"_index":1498,"name":{"2392":{}},"parent":{}}],["convertsingleimagebody",{"_index":263,"name":{"252":{},"1951":{}},"parent":{}}],["coordinates",{"_index":840,"name":{"1089":{},"1714":{}},"parent":{}}],["copy",{"_index":91,"name":{"82":{},"1873":{}},"parent":{}}],["copypaste",{"_index":1037,"name":{"1425":{},"1452":{},"3625":{}},"parent":{}}],["copypastepluginstate",{"_index":81,"name":{"74":{}},"parent":{}}],["copypastetempdiv",{"_index":361,"name":{"345":{},"2034":{}},"parent":{}}],["core",{"_index":5,"name":{"3":{}},"parent":{"2433":{},"2499":{},"2565":{},"2566":{}}}],["core.editor",{"_index":1537,"name":{},"parent":{"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{}}}],["core.editorbase",{"_index":1540,"name":{},"parent":{"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{}}}],["coreapimap",{"_index":1056,"name":{"1459":{}},"parent":{}}],["coreapioverride",{"_index":1090,"name":{"1525":{},"2750":{},"3747":{}},"parent":{}}],["corecreator",{"_index":1276,"name":{"1792":{}},"parent":{}}],["corepluginoverride",{"_index":1091,"name":{"1526":{},"2751":{},"3748":{}},"parent":{}}],["coreplugins",{"_index":1030,"name":{"1417":{}},"parent":{}}],["cornerresize",{"_index":345,"name":{"330":{},"1982":{}},"parent":{}}],["createarraydefinition",{"_index":1528,"name":{"2424":{}},"parent":{}}],["createblocktraverser",{"_index":1355,"name":{"2173":{}},"parent":{}}],["createbodytraverser",{"_index":1352,"name":{"2171":{}},"parent":{}}],["createbooleandefinition",{"_index":1526,"name":{"2422":{}},"parent":{}}],["createbr",{"_index":2166,"name":{"3497":{}},"parent":{}}],["createcontentmodel",{"_index":2208,"name":{"3580":{},"3628":{},"3672":{},"3848":{}},"parent":{}}],["createcontentmodeldocument",{"_index":2175,"name":{"3506":{}},"parent":{}}],["createcontentmodeleditor",{"_index":2297,"name":{"3953":{}},"parent":{}}],["createcontentmodeleditorcore",{"_index":2290,"name":{"3946":{}},"parent":{}}],["createcontextmenuplugin",{"_index":1734,"name":{"2908":{}},"parent":{}}],["createcontextmenuprovider",{"_index":1735,"name":{"2909":{}},"parent":{}}],["createdefaulthtmlsanitizeroptions",{"_index":1505,"name":{"2399":{}},"parent":{}}],["createdivider",{"_index":2180,"name":{"3511":{}},"parent":{}}],["createdomtomodelcontext",{"_index":2195,"name":{"3527":{}},"parent":{}}],["createeditor",{"_index":1769,"name":{"2950":{}},"parent":{}}],["createeditorcontext",{"_index":2204,"name":{"3576":{},"3579":{}},"parent":{}}],["createeditorcore",{"_index":1541,"name":{"2566":{}},"parent":{}}],["createelement",{"_index":1414,"name":{"2284":{}},"parent":{}}],["createelementdata",{"_index":1209,"name":{"1696":{}},"parent":{}}],["createemojiplugin",{"_index":1760,"name":{"2942":{}},"parent":{}}],["createentity",{"_index":2179,"name":{"3510":{}},"parent":{}}],["createentityplaceholder",{"_index":1510,"name":{"2404":{}},"parent":{}}],["createformatcontainer",{"_index":2168,"name":{"3499":{}},"parent":{}}],["creategeneralblock",{"_index":2178,"name":{"3509":{}},"parent":{}}],["creategeneralsegment",{"_index":2177,"name":{"3508":{}},"parent":{}}],["createimage",{"_index":2174,"name":{"3505":{}},"parent":{}}],["createimageeditmenuprovider",{"_index":1737,"name":{"2911":{}},"parent":{}}],["createlink",{"_index":92,"name":{"83":{},"190":{},"1817":{},"1874":{},"2571":{}},"parent":{}}],["createlistchains",{"_index":1465,"name":{"2347":{}},"parent":{}}],["createlisteditmenuprovider",{"_index":1736,"name":{"2910":{}},"parent":{}}],["createlistitem",{"_index":2167,"name":{"3498":{}},"parent":{}}],["createlistlevel",{"_index":2181,"name":{"3512":{}},"parent":{}}],["createnumberdefinition",{"_index":1525,"name":{"2421":{}},"parent":{}}],["createobjectdefinition",{"_index":1529,"name":{"2425":{}},"parent":{}}],["createparagraph",{"_index":2169,"name":{"3500":{}},"parent":{}}],["createparagraphdecorator",{"_index":2176,"name":{"3507":{}},"parent":{}}],["createpastefragment",{"_index":1058,"name":{"1462":{},"1481":{},"3584":{}},"parent":{}}],["createpasteoptionplugin",{"_index":1755,"name":{"2937":{}},"parent":{}}],["createrange",{"_index":1482,"name":{"2373":{}},"parent":{}}],["createribbonplugin",{"_index":1733,"name":{"2907":{}},"parent":{}}],["createselectionmarker",{"_index":2170,"name":{"3501":{}},"parent":{}}],["createselectiontraverser",{"_index":1354,"name":{"2172":{}},"parent":{}}],["createsnapshots",{"_index":1496,"name":{"2389":{}},"parent":{}}],["createstringdefinition",{"_index":1527,"name":{"2423":{}},"parent":{}}],["createtable",{"_index":2171,"name":{"3502":{}},"parent":{}}],["createtablecell",{"_index":2172,"name":{"3503":{}},"parent":{}}],["createtableeditmenuprovider",{"_index":1738,"name":{"2912":{}},"parent":{}}],["createtext",{"_index":2173,"name":{"3504":{}},"parent":{}}],["createuiutilities",{"_index":1637,"name":{"2739":{}},"parent":{}}],["createupdatecontentplugin",{"_index":1653,"name":{"2789":{}},"parent":{}}],["createvlistatblock",{"_index":1468,"name":{"2349":{}},"parent":{}}],["createvlistfromregion",{"_index":1463,"name":{"2345":{}},"parent":{}}],["crop",{"_index":350,"name":{"335":{},"1987":{}},"parent":{}}],["cssstylecallback",{"_index":1234,"name":{"1732":{}},"parent":{}}],["cssstylecallbackmap",{"_index":1236,"name":{"1734":{}},"parent":{}}],["cssstylecallbacks",{"_index":847,"name":{"1095":{},"1109":{}},"parent":{}}],["ctrl",{"_index":176,"name":{"166":{},"2027":{}},"parent":{}}],["ctrl_left",{"_index":148,"name":{"137":{},"1998":{}},"parent":{}}],["current",{"_index":2112,"name":{"3437":{}},"parent":{}}],["currentblockelement",{"_index":726,"name":{"955":{},"2174":{}},"parent":{}}],["currentelementorstyle",{"_index":857,"name":{"1105":{}},"parent":{}}],["currentindex",{"_index":798,"name":{"1037":{}},"parent":{}}],["currentinlineelement",{"_index":730,"name":{"958":{},"2177":{}},"parent":{}}],["cursorfeaturesettings",{"_index":1136,"name":{"1587":{}},"parent":{}}],["customdata",{"_index":57,"name":{"51":{},"843":{}},"parent":{}}],["customize",{"_index":460,"name":{"444":{},"1860":{}},"parent":{}}],["customizedefinition",{"_index":1272,"name":{"1785":{}},"parent":{}}],["customizedmerge",{"_index":2220,"name":{"3634":{},"3648":{},"3659":{}},"parent":{}}],["customreplace",{"_index":1588,"name":{"2627":{}},"parent":{}}],["customreplacement",{"_index":1156,"name":{"1635":{}},"parent":{}}],["customvalues",{"_index":654,"name":{"828":{}},"parent":{}}],["cut",{"_index":93,"name":{"84":{},"195":{},"1822":{},"1875":{}},"parent":{}}],["cutpastelistchain",{"_index":1591,"name":{"2634":{}},"parent":{}}],["darkcolorhandler",{"_index":1005,"name":{"1367":{},"1447":{},"3369":{},"3395":{},"3415":{},"3620":{}},"parent":{}}],["darkmodecolor",{"_index":768,"name":{"1003":{},"1377":{}},"parent":{}}],["darkmodedatasetnames",{"_index":220,"name":{"212":{}},"parent":{}}],["darktolight",{"_index":213,"name":{"204":{},"1835":{}},"parent":{}}],["dash",{"_index":445,"name":{"429":{},"1801":{}},"parent":{}}],["dash_underscore",{"_index":169,"name":{"159":{},"2020":{}},"parent":{}}],["data",{"_index":505,"name":{"527":{},"534":{},"538":{}},"parent":{}}],["dataprovider",{"_index":1617,"name":{"2689":{}},"parent":{}}],["dataset",{"_index":1215,"name":{"1701":{},"2956":{},"2986":{},"2996":{},"3191":{},"3258":{},"3287":{},"3312":{},"3320":{},"3452":{}},"parent":{}}],["datasetformat",{"_index":1947,"name":{"3141":{}},"parent":{}}],["decimal",{"_index":421,"name":{"405":{},"2068":{}},"parent":{}}],["decimaldash",{"_index":422,"name":{"406":{},"2069":{}},"parent":{}}],["decimaldoubleparenthesis",{"_index":424,"name":{"408":{},"2071":{}},"parent":{}}],["decimalparenthesis",{"_index":423,"name":{"407":{},"2070":{}},"parent":{}}],["decorator",{"_index":1981,"name":{"3181":{}},"parent":{}}],["decrease",{"_index":286,"name":{"274":{},"283":{},"1973":{},"1991":{}},"parent":{}}],["decreasefontsize",{"_index":94,"name":{"85":{},"1876":{},"2843":{}},"parent":{}}],["decreasefontsizebuttonstringkey",{"_index":1701,"name":{"2875":{}},"parent":{}}],["decreaseindent",{"_index":1687,"name":{"2848":{}},"parent":{}}],["decreaseindentbuttonstringkey",{"_index":1707,"name":{"2881":{}},"parent":{}}],["default",{"_index":379,"name":{"362":{},"365":{},"2051":{},"2135":{}},"parent":{}}],["defaultdisabled",{"_index":1023,"name":{"1387":{}},"parent":{}}],["defaultdomtomodeloptions",{"_index":2214,"name":{"3609":{},"3740":{}},"parent":{}}],["defaultelementprocessors",{"_index":2077,"name":{"3362":{},"3382":{}},"parent":{}}],["defaultformat",{"_index":59,"name":{"52":{},"851":{},"1521":{},"2746":{},"3368":{},"3394":{},"3414":{},"3608":{},"3743":{}},"parent":{}}],["defaultformatappliers",{"_index":2066,"name":{"3350":{},"3429":{}},"parent":{}}],["defaultformatinspan",{"_index":272,"name":{"261":{},"1960":{}},"parent":{}}],["defaultformatoncontainer",{"_index":273,"name":{"262":{},"1961":{}},"parent":{}}],["defaultformatparsers",{"_index":2078,"name":{"3363":{},"3383":{}},"parent":{}}],["defaultimplicitformatmap",{"_index":2057,"name":{"3340":{},"3348":{},"3427":{},"3526":{}},"parent":{}}],["defaultimplicitformatoverride",{"_index":2141,"name":{"3472":{}},"parent":{}}],["defaultmodelhandlers",{"_index":2065,"name":{"3349":{},"3428":{}},"parent":{}}],["defaultmodeltodomoptions",{"_index":2215,"name":{"3610":{},"3741":{}},"parent":{}}],["defaultparagraphseparator",{"_index":95,"name":{"86":{},"1877":{}},"parent":{}}],["defaultshortcut",{"_index":1117,"name":{"1566":{},"1620":{}},"parent":{}}],["defaultstylemap",{"_index":2069,"name":{"3354":{}},"parent":{}}],["defaultstyleoverride",{"_index":2133,"name":{"3465":{}},"parent":{}}],["defaultstyles",{"_index":2076,"name":{"3360":{},"3380":{}},"parent":{}}],["definition",{"_index":1275,"name":{"1791":{}},"parent":{}}],["definitionbase",{"_index":1251,"name":{"1751":{}},"parent":{}}],["definitiontype",{"_index":453,"name":{"438":{}},"parent":{}}],["delete",{"_index":96,"name":{"87":{},"149":{},"1878":{},"2010":{}},"parent":{}}],["deletebeforeentity",{"_index":1127,"name":{"1576":{},"1594":{}},"parent":{}}],["deletecolumn",{"_index":325,"name":{"310":{},"2150":{}},"parent":{}}],["deletedentities",{"_index":2243,"name":{"3779":{}},"parent":{}}],["deletedentity",{"_index":2240,"name":{"3775":{}},"parent":{}}],["deletenode",{"_index":952,"name":{"1307":{},"2438":{},"2504":{},"3679":{},"3855":{}},"parent":{}}],["deleterow",{"_index":326,"name":{"311":{},"2151":{}},"parent":{}}],["deleteselectedcontent",{"_index":960,"name":{"1317":{},"2418":{},"2448":{},"2514":{},"3689":{},"3865":{}},"parent":{}}],["deletetable",{"_index":324,"name":{"309":{},"2149":{}},"parent":{}}],["deletetablewithbackspace",{"_index":279,"name":{"268":{},"1562":{},"1627":{},"1967":{}},"parent":{}}],["delimiter_after",{"_index":229,"name":{"219":{},"1863":{}},"parent":{}}],["delimiter_before",{"_index":227,"name":{"218":{},"1862":{}},"parent":{}}],["delimiterclasses",{"_index":226,"name":{"217":{}},"parent":{}}],["deprecatedcolors",{"_index":2194,"name":{"3525":{}},"parent":{}}],["dialogitem",{"_index":1763,"name":{"2945":{}},"parent":{}}],["direction",{"_index":230,"name":{"220":{},"899":{},"935":{},"2997":{},"3077":{},"3563":{}},"parent":{}}],["directionformat",{"_index":1881,"name":{"3075":{}},"parent":{}}],["disablecrop",{"_index":1207,"name":{"1694":{}},"parent":{}}],["disablelistchain",{"_index":282,"name":{"271":{},"1970":{}},"parent":{}}],["disablerotate",{"_index":1206,"name":{"1693":{}},"parent":{}}],["disablesideresize",{"_index":1205,"name":{"1692":{}},"parent":{}}],["disc",{"_index":444,"name":{"428":{},"1800":{}},"parent":{}}],["disconnected",{"_index":136,"name":{"126":{},"1917":{}},"parent":{}}],["dismiss",{"_index":1586,"name":{"2624":{}},"parent":{}}],["display",{"_index":1810,"name":{"2998":{},"3101":{}},"parent":{}}],["displayfordummyitem",{"_index":1940,"name":{"3134":{}},"parent":{}}],["displayformat",{"_index":1905,"name":{"3099":{}},"parent":{}}],["dispose",{"_index":661,"name":{"837":{},"1304":{},"1399":{},"1411":{},"2435":{},"2501":{},"2613":{},"2619":{},"2632":{},"2638":{},"2646":{},"2654":{},"2675":{},"2685":{},"2692":{},"2699":{},"2705":{},"2711":{},"2717":{},"2733":{},"2782":{},"2804":{},"3676":{},"3852":{},"3921":{},"3927":{},"3933":{},"3939":{},"3944":{}},"parent":{}}],["disposer",{"_index":666,"name":{"845":{}},"parent":{}}],["divider",{"_index":1802,"name":{"2987":{},"3330":{}},"parent":{}}],["dnddirectionx",{"_index":1609,"name":{"2665":{}},"parent":{}}],["dnddirectiony",{"_index":1610,"name":{"2666":{}},"parent":{}}],["document",{"_index":185,"name":{"175":{},"1199":{},"1293":{},"2063":{}},"parent":{}}],["documentcommand",{"_index":84,"name":{"76":{}},"parent":{}}],["documentfragment",{"_index":187,"name":{"177":{},"1197":{},"1291":{},"2065":{}},"parent":{}}],["documentposition",{"_index":133,"name":{"124":{}},"parent":{}}],["documenttype",{"_index":186,"name":{"176":{},"1196":{},"1290":{},"2064":{}},"parent":{}}],["dom",{"_index":4,"name":{"2":{},"10":{}},"parent":{"2168":{},"2169":{},"2170":{},"2180":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2205":{},"2216":{},"2227":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2309":{},"2310":{},"2326":{},"2345":{},"2346":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{}}}],["dom.contenttraverser",{"_index":1353,"name":{},"parent":{"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{}}}],["dom.htmlsanitizer",{"_index":1499,"name":{},"parent":{"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{}}}],["dom.imageinlineelement",{"_index":1365,"name":{},"parent":{"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{}}}],["dom.linkinlineelement",{"_index":1367,"name":{},"parent":{"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{}}}],["dom.nodeinlineelement",{"_index":1369,"name":{},"parent":{"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{}}}],["dom.nodetypemap",{"_index":2158,"name":{},"parent":{"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{}}}],["dom.partialinlineelement",{"_index":1371,"name":{},"parent":{"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{}}}],["dom.position",{"_index":1480,"name":{},"parent":{"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{}}}],["dom.positioncontentsearcher",{"_index":1358,"name":{},"parent":{"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{}}}],["dom.vlist",{"_index":1437,"name":{},"parent":{"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{}}}],["dom.vlistchain",{"_index":1466,"name":{},"parent":{"2347":{},"2348":{},"2349":{},"2350":{}}}],["dom.vlistitem",{"_index":1450,"name":{},"parent":{"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{}}}],["dom.vtable",{"_index":1421,"name":{},"parent":{"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{}}}],["domain",{"_index":28,"name":{"27":{}},"parent":{}}],["domend",{"_index":217,"name":{"208":{},"1839":{}},"parent":{}}],["domevent",{"_index":1034,"name":{"1421":{},"1450":{},"3623":{}},"parent":{}}],["domeventhandler",{"_index":1247,"name":{"1745":{}},"parent":{}}],["domeventhandlerfunction",{"_index":1242,"name":{"1740":{}},"parent":{}}],["domeventhandlerobject",{"_index":1244,"name":{"1742":{}},"parent":{}}],["domeventpluginstate",{"_index":34,"name":{"32":{}},"parent":{}}],["domtocontentmodel",{"_index":2142,"name":{"3474":{}},"parent":{}}],["domtomodelcontext",{"_index":2081,"name":{"3366":{}},"parent":{}}],["domtomodeldecoratorcontext",{"_index":2098,"name":{"3404":{}},"parent":{}}],["domtomodelformatcontext",{"_index":2096,"name":{"3400":{}},"parent":{}}],["domtomodellistformat",{"_index":2100,"name":{"3408":{}},"parent":{}}],["domtomodeloption",{"_index":2130,"name":{"3463":{},"3633":{},"3647":{},"3658":{}},"parent":{}}],["domtomodelselectioncontext",{"_index":2092,"name":{"3389":{}},"parent":{}}],["domtomodelsettings",{"_index":2073,"name":{"3358":{}},"parent":{}}],["donotadjusteditorcolor",{"_index":1093,"name":{"1532":{},"2757":{},"3754":{}},"parent":{}}],["doublelongarrow",{"_index":451,"name":{"435":{},"1807":{}},"parent":{}}],["down",{"_index":158,"name":{"147":{},"2008":{}},"parent":{}}],["drop",{"_index":204,"name":{"196":{},"1823":{}},"parent":{}}],["dropdownmenu",{"_index":1668,"name":{"2821":{}},"parent":{}}],["edgelinkpreview",{"_index":27,"name":{"26":{}},"parent":{}}],["edit",{"_index":1031,"name":{"1418":{},"1448":{},"2300":{},"3621":{}},"parent":{}}],["editimage",{"_index":409,"name":{"394":{},"2114":{}},"parent":{}}],["editimageevent",{"_index":511,"name":{"543":{}},"parent":{}}],["editimageeventdata",{"_index":516,"name":{"551":{}},"parent":{}}],["editor",{"_index":1,"name":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"11":{},"2433":{},"2650":{},"2671":{}},"parent":{"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":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"626":{},"627":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"757":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{},"939":{},"940":{},"941":{},"942":{},"943":{},"944":{},"945":{},"946":{},"947":{},"948":{},"949":{},"950":{},"951":{},"952":{},"953":{},"954":{},"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{},"971":{},"972":{},"973":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{},"1083":{},"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{},"1091":{},"1092":{},"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{},"1104":{},"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{},"1303":{},"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{},"1374":{},"1375":{},"1376":{},"1377":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{},"1584":{},"1585":{},"1586":{},"1587":{},"1588":{},"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{},"1597":{},"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{},"1616":{},"1617":{},"1618":{},"1619":{},"1620":{},"1621":{},"1622":{},"1623":{},"1624":{},"1625":{},"1626":{},"1627":{},"1628":{},"1629":{},"1630":{},"1631":{},"1632":{},"1633":{},"1634":{},"1635":{},"1636":{},"1637":{},"1638":{},"1639":{},"1640":{},"1641":{},"1642":{},"1643":{},"1644":{},"1645":{},"1646":{},"1647":{},"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{},"1670":{},"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{},"1681":{},"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{},"1747":{},"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{},"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2168":{},"2169":{},"2170":{},"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{},"2616":{},"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{},"2623":{},"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{},"2687":{},"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"3528":{},"3566":{},"3572":{},"3576":{},"3578":{},"3603":{},"3628":{},"3630":{},"3632":{},"3646":{},"3657":{},"3671":{},"3739":{},"3765":{},"3770":{},"3775":{},"3778":{},"3782":{},"3790":{},"3792":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3916":{},"3917":{},"3923":{},"3929":{},"3935":{},"3940":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{}}}],["editor.border",{"_index":2203,"name":{},"parent":{"3573":{},"3574":{},"3575":{}}}],["editor.compatiblecontentmodelbeforepasteevent",{"_index":2224,"name":{},"parent":{"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{}}}],["editor.contentmodelbeforepasteevent",{"_index":2219,"name":{},"parent":{"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{}}}],["editor.contentmodelbeforepasteeventdata",{"_index":2222,"name":{},"parent":{"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{}}}],["editor.contentmodelcopypasteplugin",{"_index":2289,"name":{},"parent":{"3941":{},"3942":{},"3943":{},"3944":{},"3945":{}}}],["editor.contentmodelcoreapimap",{"_index":2207,"name":{},"parent":{"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{}}}],["editor.contentmodeleditor",{"_index":2278,"name":{},"parent":{"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{}}}],["editor.contentmodeleditorcore",{"_index":2211,"name":{},"parent":{"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{}}}],["editor.contentmodeleditoroptions",{"_index":2230,"name":{},"parent":{"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{}}}],["editor.contentmodeleditplugin",{"_index":2283,"name":{},"parent":{"3924":{},"3925":{},"3926":{},"3927":{},"3928":{}}}],["editor.contentmodelformatplugin",{"_index":2281,"name":{},"parent":{"3918":{},"3919":{},"3920":{},"3921":{},"3922":{}}}],["editor.contentmodelformatstate",{"_index":2198,"name":{},"parent":{"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{}}}],["editor.contentmodelformatter",{"_index":2252,"name":{},"parent":{"3791":{}}}],["editor.contentmodelpasteplugin",{"_index":2285,"name":{},"parent":{"3930":{},"3931":{},"3932":{},"3933":{},"3934":{}}}],["editor.contentmodeltypeincontainerplugin",{"_index":2287,"name":{},"parent":{"3936":{},"3937":{},"3938":{},"3939":{}}}],["editor.createcontentmodel",{"_index":2216,"name":{},"parent":{"3629":{}}}],["editor.createeditorcontext",{"_index":2205,"name":{},"parent":{"3577":{}}}],["editor.deletedentity",{"_index":2241,"name":{},"parent":{"3776":{},"3777":{}}}],["editor.formatwithcontentmodelcontext",{"_index":2244,"name":{},"parent":{"3779":{},"3780":{},"3781":{}}}],["editor.formatwithcontentmodeloptions",{"_index":2248,"name":{},"parent":{"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{}}}],["editor.icontentmodeleditor",{"_index":2226,"name":{},"parent":{"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{}}}],["editor.imageformatstate",{"_index":2200,"name":{},"parent":{"3567":{},"3568":{},"3569":{},"3570":{},"3571":{}}}],["editor.insertentityoptions",{"_index":2255,"name":{},"parent":{"3793":{},"3794":{},"3795":{},"3796":{}}}],["editor.insertpoint",{"_index":2233,"name":{},"parent":{"3766":{},"3767":{},"3768":{},"3769":{}}}],["editor.setcontentmodel",{"_index":2217,"name":{},"parent":{"3631":{}}}],["editor.tableselectioncontext",{"_index":2237,"name":{},"parent":{"3771":{},"3772":{},"3773":{},"3774":{}}}],["editorbase",{"_index":1539,"name":{"2499":{}},"parent":{}}],["editorcontext",{"_index":2094,"name":{"3392":{}},"parent":{}}],["editorcore",{"_index":1046,"name":{"1436":{}},"parent":{}}],["editorcreator",{"_index":1640,"name":{"2742":{}},"parent":{}}],["editoroptions",{"_index":1085,"name":{"1519":{}},"parent":{}}],["editorplugin",{"_index":1025,"name":{"1394":{}},"parent":{}}],["editorready",{"_index":403,"name":{"386":{},"2106":{}},"parent":{}}],["editorreadyevent",{"_index":520,"name":{"564":{}},"parent":{}}],["editorundostate",{"_index":714,"name":{"936":{}},"parent":{}}],["editpluginstate",{"_index":43,"name":{"40":{}},"parent":{}}],["edittable",{"_index":1549,"name":{"2577":{},"3801":{}},"parent":{}}],["editwithcontentmodel",{"_index":275,"name":{"264":{},"1963":{}},"parent":{}}],["eight_asterisk",{"_index":161,"name":{"151":{},"2012":{}},"parent":{}}],["eight_astirisk",{"_index":160,"name":{"150":{},"2011":{}},"parent":{}}],["element",{"_index":179,"name":{"170":{},"1007":{},"1122":{},"1216":{},"1726":{},"2058":{},"2366":{},"3237":{},"3268":{}},"parent":{}}],["elementbasedformatstate",{"_index":710,"name":{"909":{}},"parent":{}}],["elementbasedsegment",{"_index":1789,"name":{"2970":{}},"parent":{}}],["elementcallback",{"_index":1237,"name":{"1735":{}},"parent":{}}],["elementcallbackmap",{"_index":1240,"name":{"1738":{}},"parent":{}}],["elementcallbacks",{"_index":844,"name":{"1093":{},"1107":{}},"parent":{}}],["elementidprefix",{"_index":1182,"name":{"1671":{}},"parent":{}}],["elementprocessor",{"_index":2090,"name":{"3387":{}},"parent":{}}],["elementprocessormap",{"_index":2070,"name":{"3355":{}},"parent":{}}],["elementprocessors",{"_index":2074,"name":{"3359":{},"3379":{}},"parent":{}}],["emojistringkeys",{"_index":1761,"name":{"2943":{}},"parent":{}}],["emptyline",{"_index":359,"name":{"343":{},"2032":{}},"parent":{}}],["emptylineformatinspan",{"_index":370,"name":{"354":{},"2043":{}},"parent":{}}],["enableinlinetableediting",{"_index":97,"name":{"88":{},"1879":{}},"parent":{}}],["enableobjectresizing",{"_index":98,"name":{"89":{},"1880":{}},"parent":{}}],["end",{"_index":153,"name":{"142":{},"207":{},"295":{},"1033":{},"1045":{},"1838":{},"2003":{},"2121":{},"3436":{}},"parent":{}}],["ensuretypeincontainer",{"_index":992,"name":{"1353":{},"1463":{},"1483":{},"2484":{},"2550":{},"3585":{},"3725":{},"3901":{}},"parent":{}}],["enter",{"_index":146,"name":{"135":{},"1996":{}},"parent":{}}],["enterbeforereadonlyentity",{"_index":1125,"name":{"1574":{},"1592":{}},"parent":{}}],["enteredshadowedit",{"_index":407,"name":{"392":{},"2112":{}},"parent":{}}],["entershadoweditevent",{"_index":607,"name":{"747":{}},"parent":{}}],["entershadowediteventdata",{"_index":612,"name":{"757":{}},"parent":{}}],["entity",{"_index":527,"name":{"574":{},"584":{},"591":{},"861":{},"1426":{},"1453":{},"3328":{},"3626":{},"3776":{}},"parent":{}}],["entity_id_prefix",{"_index":238,"name":{"226":{},"1925":{}},"parent":{}}],["entity_info_name",{"_index":235,"name":{"224":{},"1923":{}},"parent":{}}],["entity_readonly_prefix",{"_index":239,"name":{"227":{},"1926":{}},"parent":{}}],["entity_type_prefix",{"_index":237,"name":{"225":{},"1924":{}},"parent":{}}],["entityclasses",{"_index":234,"name":{"223":{}},"parent":{}}],["entityfeaturesettings",{"_index":1138,"name":{"1589":{}},"parent":{}}],["entitymap",{"_index":55,"name":{"49":{}},"parent":{}}],["entityoperation",{"_index":240,"name":{"228":{},"390":{},"2110":{}},"parent":{}}],["entityoperationevent",{"_index":524,"name":{"572":{}},"parent":{}}],["entityoperationeventdata",{"_index":531,"name":{"582":{}},"parent":{}}],["entitypluginstate",{"_index":46,"name":{"42":{}},"parent":{}}],["entityprocessor",{"_index":2147,"name":{"3479":{}},"parent":{}}],["entitystate",{"_index":819,"name":{"1064":{}},"parent":{}}],["entitystates",{"_index":818,"name":{"1063":{}},"parent":{}}],["equals",{"_index":644,"name":{"813":{}},"parent":{}}],["equalto",{"_index":777,"name":{"1011":{},"2370":{}},"parent":{}}],["escape",{"_index":150,"name":{"139":{},"232":{},"1931":{},"2000":{}},"parent":{}}],["escapefromentity",{"_index":1124,"name":{"1573":{},"1591":{}},"parent":{}}],["especial_type_1",{"_index":387,"name":{"370":{},"2140":{}},"parent":{}}],["especial_type_2",{"_index":388,"name":{"371":{},"2141":{}},"parent":{}}],["especial_type_3",{"_index":389,"name":{"372":{},"2142":{}},"parent":{}}],["eventdatacache",{"_index":472,"name":{"456":{},"469":{},"473":{},"477":{},"481":{},"492":{},"511":{},"516":{},"523":{},"530":{},"541":{},"549":{},"562":{},"566":{},"570":{},"580":{},"597":{},"602":{},"609":{},"616":{},"623":{},"629":{},"634":{},"640":{},"647":{},"652":{},"657":{},"663":{},"669":{},"674":{},"680":{},"686":{},"692":{},"699":{},"704":{},"709":{},"715":{},"721":{},"726":{},"732":{},"751":{},"755":{},"764":{},"768":{},"774":{},"783":{},"788":{},"795":{},"800":{},"807":{},"3644":{},"3669":{}},"parent":{}}],["eventtype",{"_index":471,"name":{"455":{},"468":{},"472":{},"476":{},"480":{},"491":{},"510":{},"515":{},"522":{},"529":{},"540":{},"548":{},"561":{},"565":{},"569":{},"579":{},"596":{},"601":{},"608":{},"615":{},"622":{},"628":{},"633":{},"639":{},"646":{},"651":{},"656":{},"662":{},"668":{},"673":{},"679":{},"685":{},"691":{},"698":{},"703":{},"708":{},"714":{},"720":{},"725":{},"731":{},"750":{},"754":{},"763":{},"767":{},"773":{},"782":{},"787":{},"794":{},"799":{},"806":{},"3643":{},"3668":{}},"parent":{}}],["exceldesktop",{"_index":374,"name":{"357":{},"2046":{}},"parent":{}}],["excelonline",{"_index":375,"name":{"358":{},"2047":{}},"parent":{}}],["exec",{"_index":1501,"name":{"2395":{}},"parent":{}}],["experimentalfeatures",{"_index":63,"name":{"58":{},"241":{},"1534":{},"2759":{},"3756":{}},"parent":{}}],["experimentcommitlistchains",{"_index":1578,"name":{"2608":{}},"parent":{}}],["extractbordervalues",{"_index":2293,"name":{"3949":{}},"parent":{}}],["extractclipboardevent",{"_index":1376,"name":{"2242":{}},"parent":{}}],["extractclipboardeventoption",{"_index":716,"name":{"939":{}},"parent":{}}],["extractclipboarditems",{"_index":1377,"name":{"2243":{}},"parent":{}}],["extractclipboarditemsforie",{"_index":1378,"name":{"2244":{}},"parent":{}}],["extractclipboarditemsforieoptions",{"_index":723,"name":{"949":{}},"parent":{}}],["extractclipboarditemsoption",{"_index":721,"name":{"946":{}},"parent":{}}],["extractcontentmetadata",{"_index":1488,"name":{"2380":{}},"parent":{}}],["extractcontentwithdom",{"_index":400,"name":{"383":{},"2103":{}},"parent":{}}],["extractcontentwithdomevent",{"_index":535,"name":{"599":{}},"parent":{}}],["extractcontentwithdomeventdata",{"_index":537,"name":{"604":{}},"parent":{}}],["features",{"_index":44,"name":{"41":{}},"parent":{}}],["files",{"_index":650,"name":{"823":{}},"parent":{}}],["findclosestelementancestor",{"_index":1388,"name":{"2256":{}},"parent":{}}],["findlightcolorfromdarkcolor",{"_index":1011,"name":{"1372":{}},"parent":{}}],["first_column_header_external",{"_index":386,"name":{"369":{},"2139":{}},"parent":{}}],["firstcell",{"_index":808,"name":{"1050":{},"1087":{},"3440":{}},"parent":{}}],["flipimage",{"_index":1602,"name":{"2658":{},"2679":{}},"parent":{}}],["flipwhenrtl",{"_index":1663,"name":{"2813":{}},"parent":{}}],["float",{"_index":1811,"name":{"2999":{},"3140":{}},"parent":{}}],["floatformat",{"_index":1944,"name":{"3138":{}},"parent":{}}],["focus",{"_index":965,"name":{"1323":{},"1464":{},"1485":{},"2454":{},"2520":{},"3586":{},"3695":{},"3871":{}},"parent":{}}],["focusafterentity",{"_index":2256,"name":{"3794":{}},"parent":{}}],["focusoninit",{"_index":1642,"name":{"2744":{}},"parent":{}}],["following",{"_index":138,"name":{"128":{},"1919":{}},"parent":{}}],["font",{"_index":1684,"name":{"2840":{}},"parent":{}}],["font_sizes",{"_index":1543,"name":{"2568":{}},"parent":{}}],["fontbuttonstringkey",{"_index":1698,"name":{"2872":{}},"parent":{}}],["fontfamily",{"_index":671,"name":{"852":{},"3000":{},"3034":{}},"parent":{}}],["fontfamilyformat",{"_index":1835,"name":{"3032":{}},"parent":{}}],["fontname",{"_index":99,"name":{"90":{},"889":{},"925":{},"1881":{},"3553":{}},"parent":{}}],["fontsize",{"_index":100,"name":{"91":{},"853":{},"890":{},"926":{},"1882":{},"2841":{},"3001":{},"3037":{},"3554":{}},"parent":{}}],["fontsizebuttonstringkey",{"_index":1699,"name":{"2873":{}},"parent":{}}],["fontsizechange",{"_index":283,"name":{"272":{}},"parent":{}}],["fontsizeformat",{"_index":1838,"name":{"3035":{}},"parent":{}}],["fontweight",{"_index":1833,"name":{"3031":{}},"parent":{}}],["force",{"_index":1644,"name":{"2769":{}},"parent":{}}],["forceupdate",{"_index":1650,"name":{"2776":{}},"parent":{}}],["foreachcellofcurrentcolumn",{"_index":1429,"name":{"2302":{}},"parent":{}}],["foreachcellofcurrentrow",{"_index":1431,"name":{"2304":{}},"parent":{}}],["foreachtextinlineelement",{"_index":760,"name":{"996":{},"2187":{}},"parent":{}}],["forecolor",{"_index":101,"name":{"92":{},"1883":{}},"parent":{}}],["format",{"_index":201,"name":{"191":{},"1818":{},"2953":{},"3185":{},"3190":{},"3199":{},"3202":{},"3209":{},"3216":{},"3224":{},"3235":{},"3242":{},"3249":{},"3257":{},"3266":{},"3273":{},"3286":{},"3294":{},"3300":{},"3306":{},"3309":{},"3311":{},"3315":{},"3319":{},"3451":{}},"parent":{}}],["formatapiname",{"_index":668,"name":{"848":{}},"parent":{}}],["formatapplier",{"_index":2067,"name":{"3352":{}},"parent":{}}],["formatapplieroverride",{"_index":2137,"name":{"3469":{}},"parent":{}}],["formatappliers",{"_index":2058,"name":{"3341":{},"3347":{},"3426":{}},"parent":{}}],["formatapplierspercategory",{"_index":2059,"name":{"3342":{}},"parent":{}}],["formatblock",{"_index":102,"name":{"93":{},"1884":{}},"parent":{}}],["formatcallback",{"_index":544,"name":{"613":{},"620":{}},"parent":{}}],["formatcontainer",{"_index":2055,"name":{"3335":{}},"parent":{}}],["formathandlertypemap",{"_index":1805,"name":{"2990":{}},"parent":{}}],["formatholder",{"_index":2016,"name":{"3245":{}},"parent":{}}],["formatinfo",{"_index":1425,"name":{"2296":{}},"parent":{}}],["formatkey",{"_index":1827,"name":{"3025":{}},"parent":{}}],["formatparser",{"_index":2079,"name":{"3364":{}},"parent":{}}],["formatparseroverride",{"_index":2134,"name":{"3466":{}},"parent":{}}],["formatparsers",{"_index":2071,"name":{"3356":{},"3361":{},"3381":{}},"parent":{}}],["formatparserspercategory",{"_index":2072,"name":{"3357":{}},"parent":{}}],["formatstate",{"_index":542,"name":{"612":{},"619":{},"866":{}},"parent":{}}],["formattable",{"_index":1550,"name":{"2578":{},"3799":{}},"parent":{}}],["formatwithcontentmodel",{"_index":2276,"name":{"3845":{}},"parent":{}}],["formatwithcontentmodelcontext",{"_index":2242,"name":{"3778":{}},"parent":{}}],["formatwithcontentmodeloptions",{"_index":2246,"name":{"3782":{}},"parent":{}}],["forward_slash",{"_index":172,"name":{"162":{},"2023":{}},"parent":{}}],["forwarddelete",{"_index":103,"name":{"94":{},"1885":{}},"parent":{}}],["forwardslash",{"_index":171,"name":{"161":{},"2022":{}},"parent":{}}],["fragment",{"_index":486,"name":{"485":{},"496":{},"504":{},"748":{},"758":{},"761":{},"3637":{},"3651":{},"3662":{}},"parent":{}}],["fromhtml",{"_index":1389,"name":{"2257":{}},"parent":{}}],["fullselectionend",{"_index":786,"name":{"1021":{}},"parent":{}}],["fullselectionstart",{"_index":784,"name":{"1020":{}},"parent":{}}],["general",{"_index":2052,"name":{"3329":{}},"parent":{}}],["genericcontenteditfeature",{"_index":1017,"name":{"1379":{}},"parent":{}}],["genericpluginstate",{"_index":1042,"name":{"1432":{}},"parent":{}}],["getallfeatures",{"_index":1581,"name":{"2614":{}},"parent":{}}],["getbackgroundcolorvalue",{"_index":1758,"name":{"2940":{}},"parent":{}}],["getblockelementatnode",{"_index":954,"name":{"1309":{},"2168":{},"2440":{},"2506":{},"3681":{},"3857":{}},"parent":{}}],["getblocktraverser",{"_index":982,"name":{"1343":{},"2474":{},"2540":{},"3715":{},"3891":{}},"parent":{}}],["getbodytraverser",{"_index":980,"name":{"1341":{},"2472":{},"2538":{},"3713":{},"3889":{}},"parent":{}}],["getbrowserinfo",{"_index":1385,"name":{"2251":{}},"parent":{}}],["getbuttons",{"_index":1731,"name":{"2905":{}},"parent":{}}],["getcell",{"_index":1432,"name":{"2305":{}},"parent":{}}],["getcellswithborder",{"_index":1430,"name":{"2303":{}},"parent":{}}],["getchangedata",{"_index":2249,"name":{"3787":{}},"parent":{}}],["getcomputedstyle",{"_index":1391,"name":{"2259":{}},"parent":{}}],["getcomputedstyles",{"_index":1390,"name":{"2258":{}},"parent":{}}],["getcontainernode",{"_index":735,"name":{"963":{},"2197":{},"2208":{},"2219":{},"2230":{}},"parent":{}}],["getcontent",{"_index":958,"name":{"1314":{},"1465":{},"1487":{},"2445":{},"2511":{},"3587":{},"3686":{},"3862":{}},"parent":{}}],["getcontentmode",{"_index":287,"name":{"275":{}},"parent":{}}],["getcontentmodeldefaultformat",{"_index":2228,"name":{"3675":{},"3851":{}},"parent":{}}],["getcontentsearcherofcursor",{"_index":983,"name":{"1344":{},"2475":{},"2541":{},"3716":{},"3892":{}},"parent":{}}],["getcontextmenuitems",{"_index":657,"name":{"831":{}},"parent":{}}],["getcore",{"_index":1538,"name":{"2498":{},"2564":{},"3915":{}},"parent":{}}],["getcurrenttd",{"_index":1433,"name":{"2306":{}},"parent":{}}],["getcustomdata",{"_index":978,"name":{"1338":{},"2469":{},"2535":{},"3710":{},"3886":{}},"parent":{}}],["getdarkcolor",{"_index":61,"name":{"54":{},"1530":{},"2719":{},"2755":{},"3752":{}},"parent":{}}],["getdarkcolorhandler",{"_index":995,"name":{"1357":{},"2488":{},"2554":{},"3729":{},"3905":{}},"parent":{}}],["getdecoratedinline",{"_index":1372,"name":{"2229":{}},"parent":{}}],["getdefaultformat",{"_index":979,"name":{"1340":{},"2471":{},"2537":{},"3712":{},"3888":{}},"parent":{}}],["getdelimiterfromelement",{"_index":1362,"name":{"2192":{}},"parent":{}}],["getdocument",{"_index":976,"name":{"1336":{},"2467":{},"2533":{},"3708":{},"3884":{}},"parent":{}}],["geteditordomattribute",{"_index":986,"name":{"1347":{},"2478":{},"2544":{},"3719":{},"3895":{}},"parent":{}}],["getelementatcursor",{"_index":968,"name":{"1326":{},"2457":{},"2523":{},"3698":{},"3874":{}},"parent":{}}],["getelementbasedformatstate",{"_index":1547,"name":{"2573":{}},"parent":{}}],["getend",{"_index":1481,"name":{"2363":{}},"parent":{}}],["getendnode",{"_index":643,"name":{"812":{}},"parent":{}}],["getendposition",{"_index":738,"name":{"966":{},"2200":{},"2211":{},"2222":{},"2234":{}},"parent":{}}],["getentityfromelement",{"_index":1508,"name":{"2402":{}},"parent":{}}],["getentityselector",{"_index":1509,"name":{"2403":{}},"parent":{}}],["getentitystate",{"_index":670,"name":{"849":{}},"parent":{}}],["getfirstlastblockelement",{"_index":1350,"name":{"2169":{}},"parent":{}}],["getfirstleafnode",{"_index":1405,"name":{"2275":{}},"parent":{}}],["getfocusedposition",{"_index":967,"name":{"1325":{},"2456":{},"2522":{},"3697":{},"3873":{}},"parent":{}}],["getformatstate",{"_index":1546,"name":{"2572":{},"3833":{}},"parent":{}}],["gethtmlwithselectionpath",{"_index":1485,"name":{"2377":{}},"parent":{}}],["getinheritablestyles",{"_index":1504,"name":{"2398":{}},"parent":{}}],["getinlineelementafter",{"_index":757,"name":{"993":{},"2184":{}},"parent":{}}],["getinlineelementatnode",{"_index":1363,"name":{"2193":{}},"parent":{}}],["getinlineelementbefore",{"_index":756,"name":{"992":{},"2183":{}},"parent":{}}],["getinnerhtml",{"_index":1411,"name":{"2281":{}},"parent":{}}],["getintersectedrect",{"_index":1417,"name":{"2287":{}},"parent":{}}],["getknowncolorscopy",{"_index":1010,"name":{"1371":{}},"parent":{}}],["getlastitemnumber",{"_index":1439,"name":{"2315":{}},"parent":{}}],["getlastleafnode",{"_index":1406,"name":{"2276":{}},"parent":{}}],["getlevel",{"_index":1452,"name":{"2329":{}},"parent":{}}],["getlistitemindex",{"_index":1447,"name":{"2324":{}},"parent":{}}],["getlisttype",{"_index":1451,"name":{"2328":{}},"parent":{}}],["getlocalizedstring",{"_index":1638,"name":{"2740":{}},"parent":{}}],["getmetadata",{"_index":1530,"name":{"2426":{}},"parent":{}}],["getname",{"_index":659,"name":{"833":{},"1395":{},"1407":{},"2611":{},"2617":{},"2630":{},"2636":{},"2642":{},"2652":{},"2673":{},"2683":{},"2690":{},"2697":{},"2703":{},"2709":{},"2715":{},"2729":{},"2778":{},"2800":{},"3919":{},"3925":{},"3931":{},"3937":{},"3942":{}},"parent":{}}],["getnearestnontextinlineelement",{"_index":761,"name":{"997":{},"2188":{}},"parent":{}}],["getnewliststart",{"_index":1454,"name":{"2331":{}},"parent":{}}],["getnextblockelement",{"_index":728,"name":{"956":{},"2175":{}},"parent":{}}],["getnextinlineelement",{"_index":731,"name":{"959":{},"2178":{}},"parent":{}}],["getnextleafsibling",{"_index":1403,"name":{"2273":{}},"parent":{}}],["getnode",{"_index":1453,"name":{"2330":{}},"parent":{}}],["getobjectkeys",{"_index":1534,"name":{"2430":{}},"parent":{}}],["getparentblock",{"_index":736,"name":{"964":{},"2198":{},"2209":{},"2220":{},"2231":{}},"parent":{}}],["getpastesource",{"_index":1536,"name":{"2432":{}},"parent":{}}],["getpastetype",{"_index":1383,"name":{"2249":{}},"parent":{}}],["getpendableformatstate",{"_index":991,"name":{"1352":{},"1469":{},"1495":{},"2260":{},"2483":{},"2549":{},"3591":{},"3724":{},"3900":{}},"parent":{}}],["getpositionrect",{"_index":1483,"name":{"2374":{}},"parent":{}}],["getpreviousblockelement",{"_index":729,"name":{"957":{},"2176":{}},"parent":{}}],["getpreviousinlineelement",{"_index":732,"name":{"960":{},"2179":{}},"parent":{}}],["getpreviousleafsibling",{"_index":1404,"name":{"2274":{}},"parent":{}}],["getrangefromtext",{"_index":759,"name":{"995":{},"2186":{}},"parent":{}}],["getregionsfromrange",{"_index":1474,"name":{"2355":{}},"parent":{}}],["getregularselectionoffsets",{"_index":2149,"name":{"3481":{}},"parent":{}}],["getrelativedistancetoeditor",{"_index":987,"name":{"1348":{},"2479":{},"2545":{},"3720":{},"3896":{}},"parent":{}}],["getscrollcontainer",{"_index":977,"name":{"1337":{},"2468":{},"2534":{},"3709":{},"3885":{}},"parent":{}}],["getselectedblockelementsinregion",{"_index":1475,"name":{"2356":{}},"parent":{}}],["getselectedindex",{"_index":1179,"name":{"1666":{}},"parent":{}}],["getselecteditemkey",{"_index":1675,"name":{"2829":{}},"parent":{}}],["getselectedregions",{"_index":970,"name":{"1328":{},"2459":{},"2525":{},"3700":{},"3876":{}},"parent":{}}],["getselectedsegments",{"_index":2266,"name":{"3823":{}},"parent":{}}],["getselectionpath",{"_index":963,"name":{"1321":{},"2376":{},"2452":{},"2518":{},"3693":{},"3869":{}},"parent":{}}],["getselectionrange",{"_index":961,"name":{"1319":{},"1466":{},"1489":{},"2450":{},"2516":{},"3588":{},"3691":{},"3867":{}},"parent":{}}],["getselectionrangeex",{"_index":962,"name":{"1320":{},"1467":{},"1491":{},"2451":{},"2517":{},"3589":{},"3692":{},"3868":{}},"parent":{}}],["getselectionrangeinregion",{"_index":1478,"name":{"2359":{}},"parent":{}}],["getselectiontraverser",{"_index":981,"name":{"1342":{},"2473":{},"2539":{},"3714":{},"3890":{}},"parent":{}}],["getsizetransformer",{"_index":1003,"name":{"1365":{},"2494":{},"2560":{},"3737":{},"3911":{}},"parent":{}}],["getstart",{"_index":1448,"name":{"2325":{},"2362":{}},"parent":{}}],["getstartnode",{"_index":642,"name":{"811":{}},"parent":{}}],["getstartposition",{"_index":737,"name":{"965":{},"2199":{},"2210":{},"2221":{},"2233":{}},"parent":{}}],["getstate",{"_index":1028,"name":{"1406":{},"3945":{}},"parent":{}}],["getstylebasedformatstate",{"_index":990,"name":{"1351":{},"1468":{},"1493":{},"2482":{},"2548":{},"3590":{},"3723":{},"3899":{}},"parent":{}}],["getstyles",{"_index":1518,"name":{"2412":{}},"parent":{}}],["getsubstringbefore",{"_index":758,"name":{"994":{},"2185":{}},"parent":{}}],["gettablecellmetadata",{"_index":1473,"name":{"2354":{}},"parent":{}}],["gettableformatinfo",{"_index":1471,"name":{"2352":{}},"parent":{}}],["gettagofnode",{"_index":1394,"name":{"2263":{}},"parent":{}}],["gettd",{"_index":1434,"name":{"2307":{}},"parent":{}}],["gettempdiv",{"_index":719,"name":{"942":{},"950":{}},"parent":{}}],["gettextcolorvalue",{"_index":1759,"name":{"2941":{}},"parent":{}}],["gettextcontent",{"_index":646,"name":{"816":{},"962":{},"2196":{},"2207":{},"2218":{},"2232":{},"2419":{}},"parent":{}}],["gettrustedhtmlhandler",{"_index":1000,"name":{"1362":{},"2493":{},"2559":{},"3734":{},"3910":{}},"parent":{}}],["getundostate",{"_index":975,"name":{"1335":{},"2466":{},"2532":{},"3707":{},"3883":{}},"parent":{}}],["getvisibleviewport",{"_index":1004,"name":{"1366":{},"1444":{},"1540":{},"2497":{},"2563":{},"2765":{},"3617":{},"3738":{},"3762":{},"3914":{}},"parent":{}}],["getwordbefore",{"_index":754,"name":{"991":{},"2182":{}},"parent":{}}],["getzoomscale",{"_index":1001,"name":{"1363":{},"2495":{},"2561":{},"3735":{},"3912":{}},"parent":{}}],["googlesheets",{"_index":377,"name":{"360":{},"2049":{}},"parent":{}}],["grave_tilde",{"_index":173,"name":{"163":{},"2024":{}},"parent":{}}],["handleautocomplete",{"_index":1186,"name":{"1675":{}},"parent":{}}],["handledbyeditfeature",{"_index":557,"name":{"644":{},"696":{},"741":{}},"parent":{}}],["handleevent",{"_index":1020,"name":{"1383":{},"1391":{}},"parent":{}}],["handleimagepaste",{"_index":1379,"name":{"2245":{}},"parent":{}}],["handleregularselection",{"_index":2145,"name":{"3477":{}},"parent":{}}],["handletextpaste",{"_index":1380,"name":{"2246":{}},"parent":{}}],["hasbandedcolumns",{"_index":828,"name":{"1075":{},"3150":{}},"parent":{}}],["hasbandedrows",{"_index":829,"name":{"1076":{},"3151":{}},"parent":{}}],["hasfirstcolumn",{"_index":827,"name":{"1074":{},"3149":{}},"parent":{}}],["hasfocus",{"_index":964,"name":{"1322":{},"1470":{},"1497":{},"2453":{},"2519":{},"3592":{},"3694":{},"3870":{}},"parent":{}}],["hasheaderrow",{"_index":825,"name":{"1072":{},"3147":{}},"parent":{}}],["hasmetadata",{"_index":2153,"name":{"3485":{}},"parent":{}}],["hasnewcontent",{"_index":78,"name":{"71":{}},"parent":{}}],["hasselectioninblock",{"_index":2263,"name":{"3820":{}},"parent":{}}],["hasselectioninblockgroup",{"_index":2265,"name":{"3822":{}},"parent":{}}],["hasselectioninsegment",{"_index":2264,"name":{"3821":{}},"parent":{}}],["header",{"_index":1694,"name":{"2868":{}},"parent":{}}],["headerbuttonstringkey",{"_index":1721,"name":{"2895":{}},"parent":{}}],["headerlevel",{"_index":698,"name":{"884":{},"919":{},"3548":{}},"parent":{}}],["headerrowcolor",{"_index":826,"name":{"1073":{},"3148":{}},"parent":{}}],["heading",{"_index":104,"name":{"95":{},"1886":{},"2861":{}},"parent":{}}],["headingbuttonstringkey",{"_index":1720,"name":{"2894":{}},"parent":{}}],["headinglevel",{"_index":697,"name":{"883":{},"918":{},"3547":{}},"parent":{}}],["height",{"_index":1195,"name":{"1683":{},"3123":{},"3206":{}},"parent":{}}],["heightpx",{"_index":1960,"name":{"3163":{}},"parent":{}}],["hideresizehandle",{"_index":1613,"name":{"2670":{}},"parent":{}}],["hilitecolor",{"_index":105,"name":{"96":{},"1887":{}},"parent":{}}],["home",{"_index":154,"name":{"143":{},"2004":{}},"parent":{}}],["href",{"_index":1922,"name":{"3114":{}},"parent":{}}],["html",{"_index":194,"name":{"183":{},"824":{},"1060":{},"1848":{}},"parent":{}}],["htmlafter",{"_index":489,"name":{"488":{},"499":{},"507":{},"3640":{},"3654":{},"3665":{}},"parent":{}}],["htmlalign",{"_index":1812,"name":{"3002":{},"3080":{}},"parent":{}}],["htmlalignformat",{"_index":1884,"name":{"3078":{}},"parent":{}}],["htmlanchorelement",{"_index":935,"name":{"1195":{},"1289":{}},"parent":{}}],["htmlappletelement",{"_index":947,"name":{"1212":{}},"parent":{}}],["htmlareaelement",{"_index":934,"name":{"1194":{},"1288":{}},"parent":{}}],["htmlattributes",{"_index":490,"name":{"489":{},"500":{},"508":{},"3641":{},"3655":{},"3666":{}},"parent":{}}],["htmlaudioelement",{"_index":902,"name":{"1162":{},"1256":{}},"parent":{}}],["htmlbaseelement",{"_index":932,"name":{"1192":{},"1286":{}},"parent":{}}],["htmlbasefontelement",{"_index":946,"name":{"1211":{}},"parent":{}}],["htmlbefore",{"_index":488,"name":{"487":{},"498":{},"506":{},"3639":{},"3653":{},"3664":{}},"parent":{}}],["htmlbodyelement",{"_index":931,"name":{"1191":{},"1285":{}},"parent":{}}],["htmlbrelement",{"_index":933,"name":{"1193":{},"1287":{}},"parent":{}}],["htmlbuttonelement",{"_index":930,"name":{"1190":{},"1284":{}},"parent":{}}],["htmlcanvaselement",{"_index":929,"name":{"1189":{},"1283":{}},"parent":{}}],["htmldataelement",{"_index":927,"name":{"1187":{},"1281":{}},"parent":{}}],["htmldatalistelement",{"_index":926,"name":{"1186":{},"1280":{}},"parent":{}}],["htmldetailselement",{"_index":925,"name":{"1185":{},"1279":{}},"parent":{}}],["htmldialogelement",{"_index":924,"name":{"1184":{},"1278":{}},"parent":{}}],["htmldirectoryelement",{"_index":923,"name":{"1183":{},"1277":{}},"parent":{}}],["htmldivelement",{"_index":922,"name":{"1182":{},"1276":{}},"parent":{}}],["htmldlistelement",{"_index":928,"name":{"1188":{},"1282":{}},"parent":{}}],["htmldocument",{"_index":938,"name":{"1201":{},"1295":{}},"parent":{}}],["htmlelement",{"_index":863,"name":{"1123":{},"1217":{}},"parent":{}}],["htmlembedelement",{"_index":921,"name":{"1181":{},"1275":{}},"parent":{}}],["htmlfieldsetelement",{"_index":920,"name":{"1180":{},"1274":{}},"parent":{}}],["htmlfirstlevelchildtags",{"_index":653,"name":{"827":{}},"parent":{}}],["htmlfontelement",{"_index":919,"name":{"1179":{},"1273":{}},"parent":{}}],["htmlformelement",{"_index":918,"name":{"1178":{},"1272":{}},"parent":{}}],["htmlframeelement",{"_index":917,"name":{"1177":{},"1271":{}},"parent":{}}],["htmlframesetelement",{"_index":916,"name":{"1176":{},"1270":{}},"parent":{}}],["htmlheadelement",{"_index":914,"name":{"1174":{},"1268":{}},"parent":{}}],["htmlheadingelement",{"_index":913,"name":{"1173":{},"1267":{}},"parent":{}}],["htmlhrelement",{"_index":915,"name":{"1175":{},"1269":{}},"parent":{}}],["htmlhtmlelement",{"_index":912,"name":{"1172":{},"1266":{}},"parent":{}}],["htmliframeelement",{"_index":911,"name":{"1171":{},"1265":{}},"parent":{}}],["htmlimageelement",{"_index":910,"name":{"1170":{},"1264":{}},"parent":{}}],["htmlinputelement",{"_index":909,"name":{"1169":{},"1263":{}},"parent":{}}],["htmllabelelement",{"_index":907,"name":{"1167":{},"1261":{}},"parent":{}}],["htmllegendelement",{"_index":906,"name":{"1166":{},"1260":{}},"parent":{}}],["htmllielement",{"_index":908,"name":{"1168":{},"1262":{}},"parent":{}}],["htmllinkelement",{"_index":905,"name":{"1165":{},"1259":{}},"parent":{}}],["htmlmapelement",{"_index":904,"name":{"1164":{},"1258":{}},"parent":{}}],["htmlmarqueeelement",{"_index":903,"name":{"1163":{},"1257":{}},"parent":{}}],["htmlmediaelement",{"_index":900,"name":{"1160":{},"1254":{}},"parent":{}}],["htmlmenuelement",{"_index":899,"name":{"1159":{},"1253":{}},"parent":{}}],["htmlmetaelement",{"_index":898,"name":{"1158":{},"1252":{}},"parent":{}}],["htmlmeterelement",{"_index":897,"name":{"1157":{},"1251":{}},"parent":{}}],["htmlmodelement",{"_index":896,"name":{"1156":{},"1250":{}},"parent":{}}],["htmlobjectelement",{"_index":894,"name":{"1154":{},"1248":{}},"parent":{}}],["htmlolistelement",{"_index":895,"name":{"1155":{},"1249":{}},"parent":{}}],["htmloptgroupelement",{"_index":893,"name":{"1153":{},"1247":{}},"parent":{}}],["htmloptionelement",{"_index":892,"name":{"1152":{},"1246":{}},"parent":{}}],["htmloutputelement",{"_index":891,"name":{"1151":{},"1245":{}},"parent":{}}],["htmlparagraphelement",{"_index":890,"name":{"1150":{},"1244":{}},"parent":{}}],["htmlparamelement",{"_index":889,"name":{"1149":{},"1243":{}},"parent":{}}],["htmlpictureelement",{"_index":888,"name":{"1148":{},"1242":{}},"parent":{}}],["htmlpreelement",{"_index":887,"name":{"1147":{},"1241":{}},"parent":{}}],["htmlprogresselement",{"_index":886,"name":{"1146":{},"1240":{}},"parent":{}}],["htmlquoteelement",{"_index":885,"name":{"1145":{},"1239":{}},"parent":{}}],["htmlsanitizer",{"_index":1497,"name":{"2391":{}},"parent":{}}],["htmlsanitizeroptions",{"_index":843,"name":{"1092":{}},"parent":{}}],["htmlscriptelement",{"_index":884,"name":{"1144":{},"1238":{}},"parent":{}}],["htmlselectelement",{"_index":883,"name":{"1143":{},"1237":{}},"parent":{}}],["htmlslotelement",{"_index":882,"name":{"1142":{},"1236":{}},"parent":{}}],["htmlsourceelement",{"_index":881,"name":{"1141":{},"1235":{}},"parent":{}}],["htmlspanelement",{"_index":880,"name":{"1140":{},"1234":{}},"parent":{}}],["htmlstyleelement",{"_index":879,"name":{"1139":{},"1233":{}},"parent":{}}],["htmltablecaptionelement",{"_index":878,"name":{"1138":{},"1232":{}},"parent":{}}],["htmltablecellelement",{"_index":875,"name":{"1135":{},"1229":{}},"parent":{}}],["htmltablecolelement",{"_index":874,"name":{"1134":{},"1228":{}},"parent":{}}],["htmltabledatacellelement",{"_index":877,"name":{"1137":{},"1231":{}},"parent":{}}],["htmltableelement",{"_index":873,"name":{"1133":{},"1227":{}},"parent":{}}],["htmltableheadercellelement",{"_index":876,"name":{"1136":{},"1230":{}},"parent":{}}],["htmltablerowelement",{"_index":872,"name":{"1132":{},"1226":{}},"parent":{}}],["htmltablesectionelement",{"_index":871,"name":{"1131":{},"1225":{}},"parent":{}}],["htmltemplateelement",{"_index":870,"name":{"1130":{},"1224":{}},"parent":{}}],["htmltextareaelement",{"_index":869,"name":{"1129":{},"1223":{}},"parent":{}}],["htmltimeelement",{"_index":868,"name":{"1128":{},"1222":{}},"parent":{}}],["htmltitleelement",{"_index":867,"name":{"1127":{},"1221":{}},"parent":{}}],["htmltrackelement",{"_index":866,"name":{"1126":{},"1220":{}},"parent":{}}],["htmlulistelement",{"_index":865,"name":{"1125":{},"1219":{}},"parent":{}}],["htmlunknownelement",{"_index":864,"name":{"1124":{},"1218":{}},"parent":{}}],["htmlvideoelement",{"_index":901,"name":{"1161":{},"1255":{}},"parent":{}}],["hyperlink",{"_index":1593,"name":{"2640":{}},"parent":{}}],["hyphen",{"_index":450,"name":{"434":{},"1806":{}},"parent":{}}],["i",{"_index":163,"name":{"153":{},"2014":{}},"parent":{}}],["iconname",{"_index":1662,"name":{"2812":{}},"parent":{}}],["icontentmodeleditor",{"_index":2225,"name":{"3671":{}},"parent":{}}],["icontenttraverser",{"_index":725,"name":{"954":{}},"parent":{}}],["id",{"_index":678,"name":{"863":{},"1066":{},"3003":{},"3104":{},"3214":{}},"parent":{}}],["idformat",{"_index":1908,"name":{"3102":{}},"parent":{}}],["ieditor",{"_index":948,"name":{"1303":{}},"parent":{}}],["image",{"_index":190,"name":{"180":{},"544":{},"552":{},"557":{},"822":{},"1720":{},"1845":{},"2982":{},"3331":{},"3443":{}},"parent":{}}],["imagecontentmetadata",{"_index":810,"name":{"1054":{}},"parent":{}}],["imagecrop",{"_index":261,"name":{"250":{},"1949":{}},"parent":{}}],["imagecropmetadataformat",{"_index":1961,"name":{"3164":{}},"parent":{}}],["imagedatauri",{"_index":652,"name":{"826":{}},"parent":{}}],["imageedit",{"_index":1597,"name":{"2648":{}},"parent":{}}],["imageeditmenuitemstringkey",{"_index":1744,"name":{"2926":{}},"parent":{}}],["imageeditoperation",{"_index":343,"name":{"328":{}},"parent":{}}],["imageeditoptions",{"_index":1196,"name":{"1684":{}},"parent":{}}],["imageeditwrapper",{"_index":364,"name":{"348":{},"2037":{}},"parent":{}}],["imageformat",{"_index":2197,"name":{"3529":{}},"parent":{}}],["imageformatstate",{"_index":2199,"name":{"3566":{}},"parent":{}}],["imageid",{"_index":811,"name":{"1055":{}},"parent":{}}],["imageinlineelement",{"_index":1364,"name":{"2194":{}},"parent":{}}],["imagemetadataformat",{"_index":1968,"name":{"3170":{}},"parent":{}}],["imageresize",{"_index":202,"name":{"192":{},"1819":{},"2667":{}},"parent":{}}],["imageresizemetadataformat",{"_index":1956,"name":{"3160":{}},"parent":{}}],["imagerotate",{"_index":260,"name":{"249":{},"1948":{}},"parent":{}}],["imagerotatemetadataformat",{"_index":1969,"name":{"3171":{}},"parent":{}}],["imageselection",{"_index":269,"name":{"258":{},"402":{},"1427":{},"1957":{},"2133":{},"3422":{},"3447":{}},"parent":{}}],["imageselectionbordercolor",{"_index":1052,"name":{"1446":{},"1542":{},"2767":{},"3619":{},"3764":{}},"parent":{}}],["imageselectionrange",{"_index":42,"name":{"39":{},"1719":{}},"parent":{}}],["imageselector",{"_index":1203,"name":{"1690":{}},"parent":{}}],["implicitformat",{"_index":2107,"name":{"3424":{},"3458":{}},"parent":{}}],["increase",{"_index":284,"name":{"273":{},"282":{},"1972":{},"1990":{}},"parent":{}}],["increasefontsize",{"_index":106,"name":{"97":{},"1888":{},"2842":{}},"parent":{}}],["increasefontsizebuttonstringkey",{"_index":1700,"name":{"2874":{}},"parent":{}}],["increaseindent",{"_index":1688,"name":{"2849":{}},"parent":{}}],["increaseindentbuttonstringkey",{"_index":1708,"name":{"2882":{}},"parent":{}}],["indarkmode",{"_index":1092,"name":{"1527":{},"2752":{},"3749":{}},"parent":{}}],["indent",{"_index":107,"name":{"98":{},"1889":{},"2337":{}},"parent":{}}],["indentation",{"_index":293,"name":{"281":{}},"parent":{}}],["indenttableontab",{"_index":1114,"name":{"1561":{},"1626":{}},"parent":{}}],["indentwhenaltshiftright",{"_index":1108,"name":{"1555":{},"1609":{}},"parent":{}}],["indentwhentab",{"_index":1098,"name":{"1545":{},"1599":{}},"parent":{}}],["indentwhentabtext",{"_index":1130,"name":{"1579":{},"1629":{}},"parent":{}}],["initialcontent",{"_index":1089,"name":{"1524":{},"2749":{},"3746":{}},"parent":{}}],["initialize",{"_index":660,"name":{"835":{},"1397":{},"1409":{},"2612":{},"2618":{},"2631":{},"2637":{},"2643":{},"2653":{},"2674":{},"2684":{},"2691":{},"2698":{},"2704":{},"2710":{},"2716":{},"2731":{},"2780":{},"2802":{},"3920":{},"3926":{},"3932":{},"3938":{},"3943":{}},"parent":{}}],["initvalue",{"_index":1767,"name":{"2948":{}},"parent":{}}],["inline",{"_index":353,"name":{"338":{},"1830":{}},"parent":{}}],["inlineelement",{"_index":733,"name":{"961":{}},"parent":{}}],["inlineentityreadonlydelimiters",{"_index":280,"name":{"269":{},"1968":{}},"parent":{}}],["input",{"_index":396,"name":{"378":{},"2098":{}},"parent":{}}],["inselection",{"_index":314,"name":{"301":{},"2127":{}},"parent":{}}],["insertabove",{"_index":319,"name":{"305":{},"2145":{}},"parent":{}}],["insertbelow",{"_index":321,"name":{"306":{},"2146":{}},"parent":{}}],["insertbronreturn",{"_index":108,"name":{"99":{},"1890":{}},"parent":{}}],["insertcontent",{"_index":959,"name":{"1316":{},"2447":{},"2513":{},"3688":{},"3864":{}},"parent":{}}],["insertentity",{"_index":205,"name":{"197":{},"1824":{},"2574":{},"3844":{}},"parent":{}}],["insertentityoptions",{"_index":2253,"name":{"3792":{}},"parent":{}}],["insertentityposition",{"_index":2258,"name":{"3797":{}},"parent":{}}],["inserthorizontalrule",{"_index":109,"name":{"100":{},"1891":{}},"parent":{}}],["inserthtml",{"_index":110,"name":{"101":{},"1892":{}},"parent":{}}],["insertimage",{"_index":111,"name":{"102":{},"1893":{},"2575":{},"2857":{},"3817":{}},"parent":{}}],["insertimagebuttonstringkey",{"_index":1716,"name":{"2890":{}},"parent":{}}],["insertleft",{"_index":322,"name":{"307":{},"2147":{}},"parent":{}}],["insertlinebeforestructurednodefeature",{"_index":1115,"name":{"1563":{},"1622":{}},"parent":{}}],["insertlink",{"_index":1690,"name":{"2854":{},"3836":{}},"parent":{}}],["insertlinkbuttonstringkey",{"_index":1713,"name":{"2887":{}},"parent":{}}],["insertnode",{"_index":951,"name":{"1306":{},"1471":{},"1499":{},"2437":{},"2503":{},"3593":{},"3678":{},"3854":{}},"parent":{}}],["insertonnewline",{"_index":745,"name":{"974":{},"980":{},"987":{}},"parent":{}}],["insertoption",{"_index":741,"name":{"971":{}},"parent":{}}],["insertoptionbase",{"_index":742,"name":{"972":{}},"parent":{}}],["insertoptionbasic",{"_index":748,"name":{"977":{}},"parent":{}}],["insertoptionrange",{"_index":751,"name":{"983":{}},"parent":{}}],["insertorderedlist",{"_index":112,"name":{"103":{},"1894":{}},"parent":{}}],["insertparagraph",{"_index":114,"name":{"105":{},"1896":{}},"parent":{}}],["insertpoint",{"_index":2231,"name":{"3765":{}},"parent":{}}],["insertright",{"_index":323,"name":{"308":{},"2148":{}},"parent":{}}],["inserttable",{"_index":1548,"name":{"2576":{},"2856":{},"3798":{}},"parent":{}}],["inserttablebuttonstringkey",{"_index":1715,"name":{"2889":{}},"parent":{}}],["inserttext",{"_index":115,"name":{"106":{},"1897":{}},"parent":{}}],["inserttoregionroot",{"_index":747,"name":{"976":{},"982":{},"989":{}},"parent":{}}],["insertunorderedlist",{"_index":113,"name":{"104":{},"1895":{}},"parent":{}}],["ipositioncontentsearcher",{"_index":753,"name":{"990":{}},"parent":{}}],["isafter",{"_index":645,"name":{"814":{},"967":{},"1012":{},"2202":{},"2213":{},"2224":{},"2239":{},"2371":{}},"parent":{}}],["isandroid",{"_index":25,"name":{"24":{}},"parent":{}}],["isatend",{"_index":775,"name":{"1009":{},"2368":{}},"parent":{}}],["isblockelement",{"_index":1395,"name":{"2264":{}},"parent":{}}],["isblockquote",{"_index":691,"name":{"877":{},"912":{},"3541":{}},"parent":{}}],["isbold",{"_index":683,"name":{"869":{},"903":{},"3533":{}},"parent":{}}],["isbullet",{"_index":689,"name":{"875":{},"910":{},"3539":{}},"parent":{}}],["ischaractervalue",{"_index":1516,"name":{"2410":{}},"parent":{}}],["ischecked",{"_index":1666,"name":{"2817":{}},"parent":{}}],["ischrome",{"_index":21,"name":{"20":{}},"parent":{}}],["isclicking",{"_index":567,"name":{"666":{},"718":{},"737":{}},"parent":{}}],["iscodeblock",{"_index":693,"name":{"879":{},"914":{},"3543":{}},"parent":{}}],["iscodeinline",{"_index":692,"name":{"878":{},"913":{},"3542":{}},"parent":{}}],["iscontentmodeleditor",{"_index":2279,"name":{"3916":{}},"parent":{}}],["isctrlormetapressed",{"_index":1517,"name":{"2411":{}},"parent":{}}],["iscut",{"_index":470,"name":{"454":{},"462":{},"467":{}},"parent":{}}],["isdarkmode",{"_index":60,"name":{"53":{},"867":{},"1041":{},"1046":{},"1052":{},"1056":{},"1355":{},"2486":{},"2552":{},"3367":{},"3393":{},"3413":{},"3531":{},"3727":{},"3903":{}},"parent":{}}],["isdeleted",{"_index":1229,"name":{"1727":{}},"parent":{}}],["isdisabled",{"_index":1667,"name":{"2819":{}},"parent":{}}],["isdisposed",{"_index":950,"name":{"1305":{},"2436":{},"2502":{},"3677":{},"3853":{}},"parent":{}}],["isdummy",{"_index":1455,"name":{"2333":{}},"parent":{}}],["isedge",{"_index":23,"name":{"22":{}},"parent":{}}],["isempty",{"_index":957,"name":{"1313":{},"2444":{},"2510":{},"3685":{},"3861":{}},"parent":{}}],["isfeatureenabled",{"_index":999,"name":{"1361":{},"2492":{},"2558":{},"2565":{},"3733":{},"3909":{}},"parent":{}}],["isfirefox",{"_index":22,"name":{"21":{}},"parent":{}}],["isgeneralsegment",{"_index":2186,"name":{"3517":{}},"parent":{}}],["isheader",{"_index":2019,"name":{"3253":{}},"parent":{}}],["ishorizontal",{"_index":1185,"name":{"1674":{}},"parent":{}}],["isie",{"_index":18,"name":{"17":{}},"parent":{}}],["isie11orgreater",{"_index":19,"name":{"18":{}},"parent":{}}],["isieoredge",{"_index":24,"name":{"23":{}},"parent":{}}],["isimplicit",{"_index":1982,"name":{"3182":{}},"parent":{}}],["isinime",{"_index":35,"name":{"33":{},"1339":{},"2470":{},"2536":{},"3711":{},"3887":{}},"parent":{}}],["isinselection",{"_index":2086,"name":{"3374":{},"3390":{}},"parent":{}}],["isinshadowedit",{"_index":998,"name":{"1360":{},"2491":{},"2557":{},"3732":{},"3908":{}},"parent":{}}],["isintable",{"_index":699,"name":{"885":{},"920":{},"3549":{}},"parent":{}}],["isitalic",{"_index":684,"name":{"870":{},"904":{},"3534":{}},"parent":{}}],["ismac",{"_index":14,"name":{"14":{}},"parent":{}}],["ismobileortablet",{"_index":26,"name":{"25":{}},"parent":{}}],["ismodifierkey",{"_index":1515,"name":{"2409":{}},"parent":{}}],["ismultilineselection",{"_index":695,"name":{"881":{},"916":{},"3545":{}},"parent":{}}],["isnested",{"_index":79,"name":{"72":{}},"parent":{}}],["isnodeafter",{"_index":1418,"name":{"2288":{}},"parent":{}}],["isnodeempty",{"_index":1396,"name":{"2265":{}},"parent":{}}],["isnodeinregion",{"_index":1477,"name":{"2358":{}},"parent":{}}],["isnodeoftype",{"_index":2155,"name":{"3487":{}},"parent":{}}],["isnumbering",{"_index":690,"name":{"876":{},"911":{},"3540":{}},"parent":{}}],["isoperationallowed",{"_index":1600,"name":{"2656":{},"2677":{}},"parent":{}}],["isoptional",{"_index":1253,"name":{"1753":{},"1758":{},"1765":{},"1770":{},"1777":{},"1782":{},"1789":{}},"parent":{}}],["isorphanitem",{"_index":1456,"name":{"2334":{}},"parent":{}}],["ispositionatbeginning",{"_index":969,"name":{"1327":{},"2458":{},"2524":{},"3699":{},"3875":{}},"parent":{}}],["ispositionatbeginningof",{"_index":1484,"name":{"2375":{}},"parent":{}}],["isreadonly",{"_index":680,"name":{"865":{},"3212":{}},"parent":{}}],["isresizedto",{"_index":1606,"name":{"2662":{}},"parent":{}}],["isrestoring",{"_index":77,"name":{"70":{}},"parent":{}}],["isrighttoleft",{"_index":1633,"name":{"2726":{}},"parent":{}}],["isrootrtl",{"_index":2084,"name":{"3372":{},"3398":{},"3418":{}},"parent":{}}],["issafari",{"_index":20,"name":{"19":{}},"parent":{}}],["isselected",{"_index":1992,"name":{"3196":{},"3220":{},"3238":{},"3254":{},"3265":{},"3269":{},"3285":{},"3293":{},"3296":{},"3305":{},"3322":{}},"parent":{}}],["isselectedasimageselection",{"_index":2028,"name":{"3281":{}},"parent":{}}],["isstrikethrough",{"_index":686,"name":{"872":{},"906":{},"3536":{}},"parent":{}}],["issubscript",{"_index":687,"name":{"873":{},"907":{},"3537":{}},"parent":{}}],["issuperscript",{"_index":688,"name":{"874":{},"908":{},"3538":{}},"parent":{}}],["istextualinlineelement",{"_index":739,"name":{"968":{},"2201":{},"2212":{},"2223":{},"2238":{}},"parent":{}}],["isunderline",{"_index":685,"name":{"871":{},"905":{},"3535":{}},"parent":{}}],["isvoidhtmlelement",{"_index":1397,"name":{"2266":{}},"parent":{}}],["iswebkit",{"_index":17,"name":{"16":{}},"parent":{}}],["iswhitespacepreserved",{"_index":2189,"name":{"3520":{}},"parent":{}}],["iswholetableselected",{"_index":1225,"name":{"1715":{},"2309":{},"3774":{}},"parent":{}}],["iswin",{"_index":16,"name":{"15":{}},"parent":{}}],["italic",{"_index":116,"name":{"107":{},"859":{},"1898":{},"2838":{},"3004":{},"3040":{}},"parent":{}}],["italicbuttonstringkey",{"_index":1696,"name":{"2870":{}},"parent":{}}],["italicformat",{"_index":1841,"name":{"3038":{}},"parent":{}}],["itemclassname",{"_index":1672,"name":{"2825":{},"2923":{}},"parent":{}}],["itemdef",{"_index":1264,"name":{"1773":{}},"parent":{}}],["itemrender",{"_index":1674,"name":{"2827":{},"2921":{}},"parent":{}}],["items",{"_index":553,"name":{"637":{},"689":{},"739":{},"2312":{},"2824":{}},"parent":{}}],["justifycenter",{"_index":117,"name":{"108":{},"1899":{}},"parent":{}}],["justifyfull",{"_index":118,"name":{"109":{},"1900":{}},"parent":{}}],["justifyleft",{"_index":119,"name":{"110":{},"1901":{}},"parent":{}}],["justifyright",{"_index":120,"name":{"111":{},"1902":{}},"parent":{}}],["keepcellshade",{"_index":832,"name":{"1080":{}},"parent":{}}],["key",{"_index":1014,"name":{"1375":{},"2811":{},"2914":{}},"parent":{}}],["keyboard",{"_index":209,"name":{"201":{},"1828":{}},"parent":{}}],["keydown",{"_index":392,"name":{"375":{},"2095":{}},"parent":{}}],["keyofstateplugin",{"_index":1041,"name":{"1431":{}},"parent":{}}],["keypress",{"_index":394,"name":{"376":{},"2096":{}},"parent":{}}],["keys",{"_index":141,"name":{"131":{},"1380":{},"1388":{}},"parent":{}}],["keyup",{"_index":395,"name":{"377":{},"2097":{}},"parent":{}}],["knowncolors",{"_index":817,"name":{"1062":{}},"parent":{}}],["knowncreateelementdata",{"_index":1415,"name":{"2285":{}},"parent":{}}],["knowncreateelementdataindex",{"_index":357,"name":{"341":{}},"parent":{}}],["knownentityelements",{"_index":53,"name":{"47":{}},"parent":{}}],["knownentityitem",{"_index":1227,"name":{"1725":{}},"parent":{}}],["knownpastesourcetype",{"_index":371,"name":{"355":{}},"parent":{}}],["knownribbonbuttonkey",{"_index":1682,"name":{"2836":{}},"parent":{}}],["labelkey",{"_index":1764,"name":{"2946":{}},"parent":{}}],["lastcell",{"_index":809,"name":{"1051":{},"1088":{},"3441":{}},"parent":{}}],["leaveshadoweditevent",{"_index":610,"name":{"753":{}},"parent":{}}],["leavingshadowedit",{"_index":408,"name":{"393":{},"2113":{}},"parent":{}}],["left",{"_index":155,"name":{"144":{},"185":{},"1017":{},"1795":{},"2005":{}},"parent":{}}],["leftpercent",{"_index":1963,"name":{"3166":{}},"parent":{}}],["lefttoright",{"_index":231,"name":{"221":{},"1865":{}},"parent":{}}],["letterspacing",{"_index":1813,"name":{"3005":{},"3043":{},"3530":{}},"parent":{}}],["letterspacingformat",{"_index":1844,"name":{"3041":{}},"parent":{}}],["levels",{"_index":2014,"name":{"3244":{},"3411":{}},"parent":{}}],["lifecycle",{"_index":1039,"name":{"1429":{},"1454":{},"3627":{}},"parent":{}}],["lifecyclepluginstate",{"_index":56,"name":{"50":{}},"parent":{}}],["lightmodecolor",{"_index":770,"name":{"1004":{},"1376":{}},"parent":{}}],["lighttodark",{"_index":211,"name":{"203":{},"1834":{}},"parent":{}}],["lineheight",{"_index":703,"name":{"895":{},"931":{},"3006":{},"3046":{},"3559":{}},"parent":{}}],["lineheightformat",{"_index":1847,"name":{"3044":{}},"parent":{}}],["link",{"_index":1800,"name":{"2983":{},"3007":{},"3218":{},"3263":{},"3275":{},"3283":{},"3291":{},"3298":{},"3303":{},"3384":{},"3405":{}},"parent":{}}],["linkdata",{"_index":762,"name":{"998":{}},"parent":{}}],["linkformat",{"_index":1918,"name":{"3111":{}},"parent":{}}],["linkinlineelement",{"_index":1366,"name":{"2205":{}},"parent":{}}],["linkpreview",{"_index":649,"name":{"821":{}},"parent":{}}],["list",{"_index":2053,"name":{"3332":{}},"parent":{}}],["list_with_side_borders",{"_index":383,"name":{"366":{},"2136":{}},"parent":{}}],["listchain",{"_index":208,"name":{"200":{},"245":{},"1827":{},"1944":{}},"parent":{}}],["listfeaturesettings",{"_index":1140,"name":{"1597":{}},"parent":{}}],["listformat",{"_index":2088,"name":{"3378":{},"3403":{},"3423":{},"3457":{}},"parent":{}}],["listitem",{"_index":1798,"name":{"2980":{},"3333":{}},"parent":{}}],["listitemalignment",{"_index":271,"name":{"260":{},"1959":{}},"parent":{}}],["listitemelement",{"_index":1797,"name":{"2979":{}},"parent":{}}],["listitemthread",{"_index":1814,"name":{"3008":{}},"parent":{}}],["listlevel",{"_index":1799,"name":{"2981":{}},"parent":{}}],["listlevelthread",{"_index":1815,"name":{"3009":{}},"parent":{}}],["listmetadataformat",{"_index":1951,"name":{"3156":{}},"parent":{}}],["listnumbermenuitemstringkey",{"_index":1743,"name":{"2925":{}},"parent":{}}],["listparent",{"_index":2103,"name":{"3410":{}},"parent":{}}],["liststyleposition",{"_index":1816,"name":{"3010":{},"3137":{}},"parent":{}}],["liststylepositionformat",{"_index":1941,"name":{"3135":{}},"parent":{}}],["listthreadformat",{"_index":1936,"name":{"3131":{}},"parent":{}}],["listtype",{"_index":301,"name":{"289":{},"3318":{},"3450":{}},"parent":{}}],["localizedstrings",{"_index":1626,"name":{"2720":{}},"parent":{}}],["longarrow",{"_index":448,"name":{"432":{},"1804":{}},"parent":{}}],["loweralpha",{"_index":425,"name":{"409":{},"2072":{}},"parent":{}}],["loweralphadash",{"_index":428,"name":{"412":{},"2075":{}},"parent":{}}],["loweralphadoubleparenthesis",{"_index":427,"name":{"411":{},"2074":{}},"parent":{}}],["loweralphaparenthesis",{"_index":426,"name":{"410":{},"2073":{}},"parent":{}}],["lowercase",{"_index":298,"name":{"286":{},"1812":{}},"parent":{}}],["lowerroman",{"_index":433,"name":{"417":{},"2080":{}},"parent":{}}],["lowerromandash",{"_index":436,"name":{"420":{},"2083":{}},"parent":{}}],["lowerromandoubleparenthesis",{"_index":435,"name":{"419":{},"2082":{}},"parent":{}}],["lowerromanparenthesis",{"_index":434,"name":{"418":{},"2081":{}},"parent":{}}],["ltr",{"_index":1692,"name":{"2863":{}},"parent":{}}],["ltrbuttonstringkey",{"_index":1723,"name":{"2897":{}},"parent":{}}],["maintainlistchain",{"_index":1103,"name":{"1550":{},"1604":{}},"parent":{}}],["maintainlistchainwhendelete",{"_index":1104,"name":{"1551":{},"1605":{}},"parent":{}}],["margin",{"_index":1817,"name":{"3011":{}},"parent":{}}],["marginbottom",{"_index":705,"name":{"897":{},"933":{},"3085":{},"3561":{}},"parent":{}}],["marginformat",{"_index":1887,"name":{"3081":{}},"parent":{}}],["marginleft",{"_index":1891,"name":{"3086":{}},"parent":{}}],["marginright",{"_index":1890,"name":{"3084":{}},"parent":{}}],["margintop",{"_index":704,"name":{"896":{},"932":{},"3083":{},"3560":{}},"parent":{}}],["markdownbold",{"_index":1119,"name":{"1568":{},"1612":{}},"parent":{}}],["markdownfeaturesettings",{"_index":1142,"name":{"1611":{}},"parent":{}}],["markdowninlinecode",{"_index":1122,"name":{"1571":{},"1615":{}},"parent":{}}],["markdownitalic",{"_index":1120,"name":{"1569":{},"1613":{}},"parent":{}}],["markdownstrikethru",{"_index":1121,"name":{"1570":{},"1614":{}},"parent":{}}],["marker",{"_index":2232,"name":{"3766":{}},"parent":{}}],["matchesselector",{"_index":1413,"name":{"2283":{}},"parent":{}}],["matchlink",{"_index":1398,"name":{"2267":{}},"parent":{}}],["matchsourcecasesensitive",{"_index":1160,"name":{"1638":{}},"parent":{}}],["max",{"_index":441,"name":{"425":{},"437":{},"1809":{},"2088":{}},"parent":{}}],["maxheight",{"_index":1932,"name":{"3125":{}},"parent":{}}],["maxlength",{"_index":1267,"name":{"1775":{}},"parent":{}}],["maxsize",{"_index":800,"name":{"1039":{}},"parent":{}}],["maxvalue",{"_index":1260,"name":{"1763":{}},"parent":{}}],["maxwidth",{"_index":1931,"name":{"3124":{}},"parent":{}}],["menuitemsplitterkey0",{"_index":1629,"name":{"2723":{}},"parent":{}}],["mergeabove",{"_index":327,"name":{"312":{},"2152":{}},"parent":{}}],["mergebelow",{"_index":328,"name":{"313":{},"2153":{}},"parent":{}}],["mergeblocksinregion",{"_index":1479,"name":{"2360":{}},"parent":{}}],["mergecells",{"_index":331,"name":{"316":{},"2156":{}},"parent":{}}],["mergeformat",{"_index":464,"name":{"448":{},"2092":{}},"parent":{}}],["mergeinnewlinewhenbackspaceonfirstchar",{"_index":1102,"name":{"1549":{},"1603":{}},"parent":{}}],["mergeitems",{"_index":1458,"name":{"2336":{}},"parent":{}}],["mergeleft",{"_index":329,"name":{"314":{},"2154":{}},"parent":{}}],["mergelistonbackspaceafterlist",{"_index":1107,"name":{"1554":{},"1608":{}},"parent":{}}],["mergepastedline",{"_index":257,"name":{"246":{},"1945":{}},"parent":{}}],["mergeright",{"_index":330,"name":{"315":{},"2155":{}},"parent":{}}],["mergevlist",{"_index":1446,"name":{"2323":{}},"parent":{}}],["meta",{"_index":177,"name":{"167":{},"2028":{}},"parent":{}}],["meta_left",{"_index":167,"name":{"157":{},"2018":{}},"parent":{}}],["metadata",{"_index":816,"name":{"1061":{}},"parent":{}}],["min",{"_index":419,"name":{"404":{},"427":{},"1799":{},"2067":{}},"parent":{}}],["minheight",{"_index":1200,"name":{"1687":{},"3127":{}},"parent":{}}],["minlength",{"_index":1266,"name":{"1774":{}},"parent":{}}],["minrotatedeg",{"_index":1202,"name":{"1689":{}},"parent":{}}],["minvalue",{"_index":1259,"name":{"1762":{}},"parent":{}}],["minwidth",{"_index":1199,"name":{"1686":{},"3126":{}},"parent":{}}],["modeindependentcolor",{"_index":767,"name":{"1002":{}},"parent":{}}],["model",{"_index":12,"name":{"9":{},"10":{},"11":{},"12":{}},"parent":{"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{}}}],["modelhandleroverride",{"_index":2140,"name":{"3471":{}},"parent":{}}],["modelhandlers",{"_index":2063,"name":{"3346":{},"3425":{}},"parent":{}}],["modeltodomblockandsegmentnode",{"_index":2108,"name":{"3431":{}},"parent":{}}],["modeltodomcontext",{"_index":2104,"name":{"3412":{}},"parent":{}}],["modeltodomformatcontext",{"_index":2124,"name":{"3456":{}},"parent":{}}],["modeltodomimageselection",{"_index":2115,"name":{"3442":{}},"parent":{}}],["modeltodomlistcontext",{"_index":2121,"name":{"3453":{}},"parent":{}}],["modeltodomliststackitem",{"_index":2119,"name":{"3448":{}},"parent":{}}],["modeltodomoption",{"_index":2136,"name":{"3468":{}},"parent":{}}],["modeltodomregularselection",{"_index":2110,"name":{"3434":{}},"parent":{}}],["modeltodomselectioncontext",{"_index":2117,"name":{"3444":{}},"parent":{}}],["modeltodomsettings",{"_index":2062,"name":{"3345":{}},"parent":{}}],["modeltodomtableselection",{"_index":2113,"name":{"3438":{}},"parent":{}}],["morecommandsbuttonstringkey",{"_index":1706,"name":{"2880":{}},"parent":{}}],["mousedown",{"_index":398,"name":{"380":{},"2100":{}},"parent":{}}],["mouseup",{"_index":399,"name":{"381":{},"1423":{},"2101":{}},"parent":{}}],["move",{"_index":778,"name":{"1013":{},"1643":{},"2372":{}},"parent":{}}],["movebetweendelimitersfeature",{"_index":1128,"name":{"1577":{},"1595":{}},"parent":{}}],["movechildnodes",{"_index":1416,"name":{"2286":{}},"parent":{}}],["movecontentwithentityplaceholders",{"_index":1511,"name":{"2405":{}},"parent":{}}],["movecurrentsnapshot",{"_index":1494,"name":{"2387":{}},"parent":{}}],["movecurrentsnapsnot",{"_index":1495,"name":{"2388":{}},"parent":{}}],["name",{"_index":1920,"name":{"3113":{}},"parent":{}}],["namespace",{"_index":1212,"name":{"1698":{}},"parent":{}}],["newbullet",{"_index":255,"name":{"243":{},"1942":{}},"parent":{}}],["newcontent",{"_index":496,"name":{"514":{},"519":{},"521":{}},"parent":{}}],["newentity",{"_index":241,"name":{"229":{},"1928":{}},"parent":{}}],["newindentation",{"_index":253,"name":{"242":{},"1941":{}},"parent":{}}],["newnumbering",{"_index":256,"name":{"244":{},"1943":{}},"parent":{}}],["newsrc",{"_index":515,"name":{"547":{},"555":{},"560":{}},"parent":{}}],["newzoomscale",{"_index":621,"name":{"772":{},"778":{},"781":{}},"parent":{}}],["nextinlineelement",{"_index":1373,"name":{"2235":{}},"parent":{}}],["no_header_borders",{"_index":384,"name":{"367":{},"2137":{}},"parent":{}}],["no_side_borders",{"_index":385,"name":{"368":{},"2138":{}},"parent":{}}],["nocyclecursormove",{"_index":1118,"name":{"1567":{},"1588":{}},"parent":{}}],["node",{"_index":772,"name":{"1006":{},"1120":{},"1214":{},"2365":{},"3449":{}},"parent":{}}],["nodeafter",{"_index":789,"name":{"1024":{},"1029":{}},"parent":{}}],["nodebefore",{"_index":788,"name":{"1023":{},"1028":{}},"parent":{}}],["nodeinlineelement",{"_index":1368,"name":{"2216":{}},"parent":{}}],["nodeposition",{"_index":771,"name":{"1005":{}},"parent":{}}],["nodestack",{"_index":2123,"name":{"3455":{}},"parent":{}}],["nodetype",{"_index":178,"name":{"169":{}},"parent":{}}],["nodetypemap",{"_index":2156,"name":{"3488":{}},"parent":{}}],["none",{"_index":302,"name":{"290":{},"329":{},"342":{},"1981":{},"2031":{},"2054":{}},"parent":{}}],["normal",{"_index":415,"name":{"400":{},"446":{},"2090":{},"2131":{}},"parent":{}}],["normalcontentmetadata",{"_index":803,"name":{"1043":{}},"parent":{}}],["normalize",{"_index":776,"name":{"1010":{},"2369":{}},"parent":{}}],["normalizecontentmodel",{"_index":2185,"name":{"3516":{}},"parent":{}}],["normalizedurl",{"_index":766,"name":{"1001":{}},"parent":{}}],["normalizelist",{"_index":268,"name":{"257":{},"1956":{}},"parent":{}}],["normalizerect",{"_index":1408,"name":{"2278":{}},"parent":{}}],["normalizesinglesegment",{"_index":2190,"name":{"3521":{}},"parent":{}}],["normalizetable",{"_index":1038,"name":{"1428":{}},"parent":{}}],["normalizetablecellsize",{"_index":1435,"name":{"2308":{}},"parent":{}}],["normalselectionrange",{"_index":1222,"name":{"1708":{}},"parent":{}}],["null",{"_index":142,"name":{"132":{},"1993":{}},"parent":{}}],["number",{"_index":456,"name":{"440":{},"1856":{}},"parent":{}}],["numberdefinition",{"_index":1257,"name":{"1760":{}},"parent":{}}],["numberedlist",{"_index":1686,"name":{"2847":{}},"parent":{}}],["numberedlistbuttonstringkey",{"_index":1705,"name":{"2879":{}},"parent":{}}],["numberinglisttype",{"_index":418,"name":{"403":{}},"parent":{}}],["object",{"_index":459,"name":{"443":{},"1859":{}},"parent":{}}],["objectdefinition",{"_index":1268,"name":{"1779":{}},"parent":{}}],["objectpropertydefinition",{"_index":1271,"name":{"1784":{}},"parent":{}}],["offset",{"_index":774,"name":{"1008":{},"2367":{}},"parent":{}}],["okbuttonstringkey",{"_index":1627,"name":{"2721":{}},"parent":{}}],["oldzoomscale",{"_index":619,"name":{"771":{},"777":{},"780":{}},"parent":{}}],["onblur",{"_index":1596,"name":{"2645":{},"2774":{}},"parent":{}}],["onbuttonclick",{"_index":1657,"name":{"2793":{}},"parent":{}}],["onclick",{"_index":1665,"name":{"2815":{},"2916":{}},"parent":{}}],["oncontentchanged",{"_index":1178,"name":{"1664":{}},"parent":{}}],["oncontentchangedevent",{"_index":1648,"name":{"2773":{}},"parent":{}}],["ondispose",{"_index":1171,"name":{"1650":{},"2771":{}},"parent":{}}],["onexternalcontenttransform",{"_index":62,"name":{"56":{},"1528":{},"2753":{},"3750":{}},"parent":{}}],["oninitalize",{"_index":1169,"name":{"1648":{}},"parent":{}}],["oninitialize",{"_index":1646,"name":{"2770":{}},"parent":{}}],["onissuggestingchanged",{"_index":1172,"name":{"1652":{}},"parent":{}}],["onmouse",{"_index":1595,"name":{"2644":{}},"parent":{}}],["onnodecreated",{"_index":2060,"name":{"3343":{},"3351":{},"3430":{},"3473":{},"3786":{}},"parent":{}}],["onpluginevent",{"_index":663,"name":{"841":{},"1403":{},"1415":{},"2620":{},"2633":{},"2639":{},"2647":{},"2655":{},"2676":{},"2686":{},"2694":{},"2700":{},"2706":{},"2712":{},"2718":{},"2737":{},"2786":{},"2808":{},"3922":{},"3928":{},"3934":{}},"parent":{}}],["onremove",{"_index":1176,"name":{"1660":{}},"parent":{}}],["onscroll",{"_index":1180,"name":{"1668":{}},"parent":{}}],["onselection",{"_index":313,"name":{"300":{},"2126":{}},"parent":{}}],["onselectstate",{"_index":1208,"name":{"1695":{}},"parent":{}}],["onshowresizehandle",{"_index":1608,"name":{"2664":{}},"parent":{}}],["onuserinput",{"_index":1647,"name":{"2772":{}},"parent":{}}],["operation",{"_index":525,"name":{"573":{},"583":{},"590":{},"3777":{}},"parent":{}}],["options",{"_index":1599,"name":{"2651":{},"2672":{}},"parent":{}}],["ordered",{"_index":304,"name":{"291":{},"2055":{}},"parent":{}}],["orderedstyletype",{"_index":1953,"name":{"3158":{}},"parent":{}}],["originalapi",{"_index":1049,"name":{"1440":{},"3605":{}},"parent":{}}],["originalattributebackgroundcolor",{"_index":225,"name":{"216":{},"1853":{}},"parent":{}}],["originalattributecolor",{"_index":224,"name":{"215":{},"1852":{}},"parent":{}}],["originalsrc",{"_index":513,"name":{"545":{},"553":{},"558":{}},"parent":{}}],["originalstylebackgroundcolor",{"_index":223,"name":{"214":{},"1851":{}},"parent":{}}],["originalstylecolor",{"_index":221,"name":{"213":{},"1850":{}},"parent":{}}],["originalurl",{"_index":765,"name":{"1000":{}},"parent":{}}],["outdent",{"_index":121,"name":{"112":{},"1903":{},"2338":{}},"parent":{}}],["outdentwhenaltshiftleft",{"_index":1109,"name":{"1556":{},"1610":{}},"parent":{}}],["outdentwhenbackspaceonemptyfirstline",{"_index":1100,"name":{"1547":{},"1601":{}},"parent":{}}],["outdentwhenenteronemptyline",{"_index":1101,"name":{"1548":{},"1602":{}},"parent":{}}],["outdentwhenshifttab",{"_index":1099,"name":{"1546":{},"1600":{}},"parent":{}}],["outdentwhentabtext",{"_index":1131,"name":{"1580":{},"1630":{}},"parent":{}}],["outside",{"_index":219,"name":{"210":{},"1841":{}},"parent":{}}],["overwrite",{"_index":247,"name":{"235":{},"1934":{}},"parent":{}}],["padding",{"_index":1818,"name":{"3012":{}},"parent":{}}],["paddingbottom",{"_index":1897,"name":{"3091":{}},"parent":{}}],["paddingformat",{"_index":1892,"name":{"3087":{}},"parent":{}}],["paddingleft",{"_index":1898,"name":{"3092":{}},"parent":{}}],["paddingright",{"_index":1896,"name":{"3090":{}},"parent":{}}],["paddingtop",{"_index":1894,"name":{"3089":{}},"parent":{}}],["pageup",{"_index":152,"name":{"141":{},"2002":{}},"parent":{}}],["pagex",{"_index":50,"name":{"45":{}},"parent":{}}],["pagey",{"_index":52,"name":{"46":{}},"parent":{}}],["paragraph",{"_index":2054,"name":{"3334":{},"3767":{}},"parent":{}}],["parentnode",{"_index":862,"name":{"1121":{},"1215":{}},"parent":{}}],["parsecolor",{"_index":1419,"name":{"2289":{}},"parent":{}}],["parsecolorvalue",{"_index":1009,"name":{"1370":{}},"parent":{}}],["parseformat",{"_index":2150,"name":{"3482":{}},"parent":{}}],["parsevaluewithunit",{"_index":2192,"name":{"3523":{}},"parent":{}}],["partialinlineelement",{"_index":1370,"name":{"2227":{}},"parent":{}}],["partialoverwrite",{"_index":248,"name":{"236":{},"1935":{}},"parent":{}}],["paste",{"_index":122,"name":{"113":{},"193":{},"1318":{},"1820":{},"1904":{},"2449":{},"2515":{},"2681":{},"3690":{},"3843":{},"3866":{}},"parent":{}}],["pastenativeevent",{"_index":655,"name":{"829":{}},"parent":{}}],["pasteoptionbuttonkeys",{"_index":1753,"name":{"2935":{}},"parent":{}}],["pasteoptionstringkeys",{"_index":1754,"name":{"2936":{}},"parent":{}}],["pastetype",{"_index":461,"name":{"445":{},"490":{},"501":{},"509":{},"3642":{},"3656":{},"3667":{}},"parent":{}}],["pastewithlinkpreview",{"_index":259,"name":{"248":{},"1947":{}},"parent":{}}],["path",{"_index":2234,"name":{"3768":{}},"parent":{}}],["pendableformatcommandmap",{"_index":1392,"name":{"2261":{}},"parent":{}}],["pendableformatnames",{"_index":1393,"name":{"2262":{}},"parent":{}}],["pendableformatposition",{"_index":72,"name":{"66":{}},"parent":{}}],["pendableformatspan",{"_index":73,"name":{"67":{}},"parent":{}}],["pendableformatstate",{"_index":70,"name":{"65":{},"902":{}},"parent":{}}],["pendingformatstate",{"_index":1035,"name":{"1422":{},"1451":{},"3624":{}},"parent":{}}],["pendingformatstatechanged",{"_index":405,"name":{"388":{},"2108":{}},"parent":{}}],["pendingformatstatechangedevent",{"_index":541,"name":{"611":{}},"parent":{}}],["pendingformatstatepluginstate",{"_index":69,"name":{"64":{}},"parent":{}}],["pendingstylebasedformat",{"_index":267,"name":{"256":{},"1955":{}},"parent":{}}],["period",{"_index":170,"name":{"160":{},"2021":{}},"parent":{}}],["pickerdataprovider",{"_index":1168,"name":{"1647":{}},"parent":{}}],["pickerplugin",{"_index":1615,"name":{"2687":{}},"parent":{}}],["pickerpluginoptions",{"_index":1181,"name":{"1670":{}},"parent":{}}],["plaintext",{"_index":192,"name":{"182":{},"279":{},"1847":{},"1978":{}},"parent":{}}],["plaintextfast",{"_index":292,"name":{"280":{},"1979":{}},"parent":{}}],["plugin",{"_index":1678,"name":{"2833":{}},"parent":{}}],["plugincompositionevent",{"_index":550,"name":{"631":{}},"parent":{}}],["plugincontextmenuevent",{"_index":552,"name":{"636":{}},"parent":{}}],["plugincontextmenueventdata",{"_index":598,"name":{"738":{}},"parent":{}}],["plugindomevent",{"_index":547,"name":{"625":{}},"parent":{}}],["plugindomeventbase",{"_index":548,"name":{"626":{}},"parent":{}}],["pluginevent",{"_index":602,"name":{"742":{}},"parent":{}}],["plugineventdata",{"_index":603,"name":{"743":{}},"parent":{}}],["plugineventdatageneric",{"_index":604,"name":{"744":{}},"parent":{}}],["plugineventfromtype",{"_index":605,"name":{"745":{}},"parent":{}}],["plugineventfromtypegeneric",{"_index":606,"name":{"746":{}},"parent":{}}],["plugineventtype",{"_index":391,"name":{"374":{},"1743":{}},"parent":{}}],["plugininputevent",{"_index":569,"name":{"671":{}},"parent":{}}],["pluginkey",{"_index":1040,"name":{"1430":{}},"parent":{}}],["pluginkeyboardevent",{"_index":555,"name":{"642":{}},"parent":{}}],["pluginkeydownevent",{"_index":556,"name":{"643":{}},"parent":{}}],["pluginkeydowneventdata",{"_index":600,"name":{"740":{}},"parent":{}}],["pluginkeypressevent",{"_index":559,"name":{"649":{}},"parent":{}}],["pluginkeyupevent",{"_index":561,"name":{"654":{}},"parent":{}}],["pluginmousedownevent",{"_index":564,"name":{"660":{}},"parent":{}}],["pluginmouseevent",{"_index":563,"name":{"659":{}},"parent":{}}],["pluginmouseupevent",{"_index":566,"name":{"665":{}},"parent":{}}],["pluginmouseupeventdata",{"_index":596,"name":{"736":{}},"parent":{}}],["plugins",{"_index":7,"name":{"5":{},"1438":{},"1520":{},"2745":{},"3613":{},"3742":{}},"parent":{"2609":{},"2614":{},"2615":{},"2621":{},"2627":{},"2634":{},"2640":{},"2648":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2681":{},"2687":{},"2695":{},"2701":{},"2707":{},"2713":{}}}],["plugins.autoformat",{"_index":1625,"name":{},"parent":{"2714":{},"2715":{},"2716":{},"2717":{},"2718":{}}}],["plugins.contentedit",{"_index":1580,"name":{},"parent":{"2610":{},"2611":{},"2612":{},"2613":{}}}],["plugins.contextmenu",{"_index":1582,"name":{},"parent":{"2616":{},"2617":{},"2618":{},"2619":{},"2620":{}}}],["plugins.contextmenuoptions",{"_index":1585,"name":{},"parent":{"2622":{},"2623":{},"2624":{},"2625":{},"2626":{}}}],["plugins.customreplace",{"_index":1589,"name":{},"parent":{"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{}}}],["plugins.cutpastelistchain",{"_index":1592,"name":{},"parent":{"2635":{},"2636":{},"2637":{},"2638":{},"2639":{}}}],["plugins.hyperlink",{"_index":1594,"name":{},"parent":{"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{}}}],["plugins.imageedit",{"_index":1598,"name":{},"parent":{"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{}}}],["plugins.imageresize",{"_index":1611,"name":{},"parent":{"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{}}}],["plugins.paste",{"_index":1614,"name":{},"parent":{"2682":{},"2683":{},"2684":{},"2685":{},"2686":{}}}],["plugins.pickerplugin",{"_index":1616,"name":{},"parent":{"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{}}}],["plugins.tablecellselection",{"_index":1623,"name":{},"parent":{"2708":{},"2709":{},"2710":{},"2711":{},"2712":{}}}],["plugins.tableresize",{"_index":1619,"name":{},"parent":{"2696":{},"2697":{},"2698":{},"2699":{},"2700":{}}}],["plugins.watermark",{"_index":1621,"name":{},"parent":{"2702":{},"2703":{},"2704":{},"2705":{},"2706":{}}}],["pluginscrollevent",{"_index":571,"name":{"676":{}},"parent":{}}],["pluginscrolleventdata",{"_index":594,"name":{"734":{}},"parent":{}}],["pluginstate",{"_index":1043,"name":{"1433":{}},"parent":{}}],["pluginwithstate",{"_index":1027,"name":{"1405":{}},"parent":{}}],["position",{"_index":749,"name":{"978":{},"984":{},"2361":{}},"parent":{}}],["positioncontentsearcher",{"_index":1356,"name":{"2180":{}},"parent":{}}],["positiontype",{"_index":306,"name":{"293":{}},"parent":{}}],["powerpointdesktop",{"_index":376,"name":{"359":{},"2048":{}},"parent":{}}],["preceding",{"_index":137,"name":{"127":{},"1918":{}},"parent":{}}],["predefinedcssmap",{"_index":1241,"name":{"1739":{}},"parent":{}}],["preferred_format",{"_index":30,"name":{"28":{}},"parent":{}}],["preservehtmlcomments",{"_index":854,"name":{"1102":{},"1116":{}},"parent":{}}],["preservependingformat",{"_index":2247,"name":{"3783":{}},"parent":{}}],["preserveratio",{"_index":1201,"name":{"1688":{}},"parent":{}}],["previousinlineelement",{"_index":1374,"name":{"2236":{}},"parent":{}}],["previoussrc",{"_index":514,"name":{"546":{},"554":{},"559":{}},"parent":{}}],["print_screen",{"_index":159,"name":{"148":{},"2009":{}},"parent":{}}],["processchildnode",{"_index":2146,"name":{"3478":{}},"parent":{}}],["processinginstruction",{"_index":183,"name":{"173":{},"1206":{},"1300":{},"2061":{}},"parent":{}}],["processoroverride",{"_index":2131,"name":{"3464":{}},"parent":{}}],["promotetocontentmodeleditorcore",{"_index":2291,"name":{"3947":{}},"parent":{}}],["propertydef",{"_index":1269,"name":{"1780":{}},"parent":{}}],["queryelements",{"_index":955,"name":{"1311":{},"2268":{},"2442":{},"2508":{},"3683":{},"3859":{}},"parent":{}}],["queryscope",{"_index":310,"name":{"298":{}},"parent":{}}],["querystringupdated",{"_index":1173,"name":{"1654":{}},"parent":{}}],["quote",{"_index":1689,"name":{"2850":{}},"parent":{}}],["quotebuttonstringkey",{"_index":1709,"name":{"2883":{}},"parent":{}}],["quotefeaturesettings",{"_index":1144,"name":{"1616":{}},"parent":{}}],["range",{"_index":175,"name":{"165":{},"211":{},"453":{},"461":{},"466":{},"985":{},"1119":{},"1213":{},"1842":{},"2026":{}},"parent":{}}],["rangeex",{"_index":2087,"name":{"3375":{},"3391":{}},"parent":{}}],["ranges",{"_index":1220,"name":{"1706":{},"1710":{},"1717":{},"1722":{}},"parent":{}}],["rawevent",{"_index":467,"name":{"451":{},"459":{},"464":{},"575":{},"585":{},"592":{},"627":{},"632":{},"638":{},"645":{},"650":{},"655":{},"661":{},"667":{},"672":{},"678":{},"684":{},"690":{},"697":{},"702":{},"707":{},"713":{},"719":{},"724":{},"730":{},"798":{},"803":{},"805":{},"3780":{},"3784":{}},"parent":{}}],["rawhtml",{"_index":648,"name":{"820":{}},"parent":{}}],["rawhtmlonly",{"_index":290,"name":{"277":{},"1976":{}},"parent":{}}],["rawhtmlwithselection",{"_index":291,"name":{"278":{},"1977":{}},"parent":{}}],["react",{"_index":10,"name":{"7":{}},"parent":{"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2727":{},"2739":{},"2740":{},"2741":{},"2768":{},"2775":{},"2788":{},"2789":{},"2790":{},"2810":{},"2823":{},"2832":{},"2836":{},"2869":{},"2870":{},"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{},"2884":{},"2885":{},"2886":{},"2887":{},"2888":{},"2889":{},"2890":{},"2891":{},"2892":{},"2893":{},"2894":{},"2895":{},"2896":{},"2897":{},"2898":{},"2899":{},"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{},"2913":{},"2925":{},"2926":{},"2927":{},"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{},"2943":{},"2944":{},"2945":{}}}],["react.contextmenuitem",{"_index":1740,"name":{},"parent":{"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{}}}],["react.dialogitem",{"_index":1765,"name":{},"parent":{"2946":{},"2947":{},"2948":{},"2949":{}}}],["react.knownribbonbuttonkey",{"_index":1683,"name":{},"parent":{"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{},"2861":{},"2862":{},"2863":{},"2864":{},"2865":{},"2866":{},"2867":{},"2868":{}}}],["react.reacteditorplugin",{"_index":1636,"name":{},"parent":{"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{}}}],["react.ribbonbutton",{"_index":1661,"name":{},"parent":{"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{}}}],["react.ribbonbuttondropdown",{"_index":1671,"name":{},"parent":{"2824":{},"2825":{},"2826":{},"2827":{},"2828":{},"2829":{},"2830":{},"2831":{}}}],["react.ribbonplugin",{"_index":1656,"name":{},"parent":{"2791":{},"2792":{},"2793":{},"2794":{},"2795":{},"2796":{},"2797":{},"2798":{},"2799":{},"2800":{},"2801":{},"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{}}}],["react.ribbonprops",{"_index":1679,"name":{},"parent":{"2833":{},"2834":{},"2835":{}}}],["react.roosterprops",{"_index":1641,"name":{},"parent":{"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{}}}],["react.uiutilities",{"_index":1632,"name":{},"parent":{"2725":{},"2726":{}}}],["react.updatecontentplugin",{"_index":1651,"name":{},"parent":{"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{}}}],["react.updatemode",{"_index":1645,"name":{},"parent":{"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{}}}],["reacteditorplugin",{"_index":1634,"name":{"2727":{}},"parent":{}}],["readfile",{"_index":1410,"name":{"2280":{}},"parent":{}}],["rect",{"_index":779,"name":{"1014":{}},"parent":{}}],["redo",{"_index":123,"name":{"114":{},"1333":{},"1905":{},"2464":{},"2530":{},"2866":{},"3705":{},"3881":{}},"parent":{}}],["redobuttonstringkey",{"_index":1726,"name":{"2900":{}},"parent":{}}],["region",{"_index":783,"name":{"1019":{}},"parent":{}}],["regionbase",{"_index":791,"name":{"1026":{}},"parent":{}}],["regiontype",{"_index":315,"name":{"302":{}},"parent":{}}],["registercolor",{"_index":1006,"name":{"1368":{}},"parent":{}}],["registerformatchangedcallback",{"_index":1655,"name":{"2791":{}},"parent":{}}],["regularselection",{"_index":2106,"name":{"3420":{},"3445":{}},"parent":{}}],["relationship",{"_index":1927,"name":{"3119":{}},"parent":{}}],["removecodewhenbackspaceonemptyfirstline",{"_index":1133,"name":{"1583":{},"1634":{}},"parent":{}}],["removecodewhenenteronemptyline",{"_index":1132,"name":{"1582":{},"1633":{}},"parent":{}}],["removecontenteditfeature",{"_index":989,"name":{"1350":{},"2481":{},"2547":{},"3722":{},"3898":{}},"parent":{}}],["removeentitybetweendelimiters",{"_index":1129,"name":{"1578":{},"1596":{}},"parent":{}}],["removeformat",{"_index":124,"name":{"115":{},"1906":{}},"parent":{}}],["removefromend",{"_index":246,"name":{"234":{},"1933":{}},"parent":{}}],["removefromstart",{"_index":245,"name":{"233":{},"1932":{}},"parent":{}}],["removeglobalcssstyle",{"_index":1522,"name":{"2416":{}},"parent":{}}],["removeimportantstylerule",{"_index":1520,"name":{"2414":{}},"parent":{}}],["removelink",{"_index":1551,"name":{"2579":{},"2855":{},"3837":{}},"parent":{}}],["removelinkbuttonstringkey",{"_index":1714,"name":{"2888":{}},"parent":{}}],["removemetadata",{"_index":1532,"name":{"2428":{}},"parent":{}}],["removeshadowroot",{"_index":251,"name":{"239":{},"1938":{}},"parent":{}}],["removetempdiv",{"_index":720,"name":{"944":{},"952":{}},"parent":{}}],["render",{"_index":1584,"name":{"2622":{}},"parent":{}}],["rendercomponent",{"_index":1631,"name":{"2725":{}},"parent":{}}],["replacementhtml",{"_index":1159,"name":{"1637":{}},"parent":{}}],["replacenode",{"_index":953,"name":{"1308":{},"2439":{},"2505":{},"3680":{},"3856":{}},"parent":{}}],["replaceselection",{"_index":746,"name":{"975":{},"981":{},"988":{}},"parent":{}}],["replacetemporarycontent",{"_index":249,"name":{"237":{},"1936":{}},"parent":{}}],["replacewithnode",{"_index":1552,"name":{"2580":{}},"parent":{}}],["reset",{"_index":1008,"name":{"1369":{}},"parent":{}}],["resetimage",{"_index":1607,"name":{"2663":{}},"parent":{}}],["resize",{"_index":347,"name":{"332":{},"1984":{}},"parent":{}}],["resizeandrotate",{"_index":349,"name":{"334":{},"1986":{}},"parent":{}}],["resizebypercentage",{"_index":1605,"name":{"2661":{}},"parent":{}}],["restorecontentwithentityplaceholder",{"_index":1512,"name":{"2406":{}},"parent":{}}],["restoreundosnapshot",{"_index":1059,"name":{"1472":{},"1501":{},"3594":{}},"parent":{}}],["retrievemetadatafromclipboard",{"_index":1381,"name":{"2247":{}},"parent":{}}],["reusablecontentmodel",{"_index":274,"name":{"263":{},"1962":{}},"parent":{}}],["reuseallancestorlistelements",{"_index":278,"name":{"267":{},"1966":{}},"parent":{}}],["ribbon",{"_index":1730,"name":{"2904":{}},"parent":{}}],["ribbonbutton",{"_index":1660,"name":{"2810":{}},"parent":{}}],["ribbonbuttondropdown",{"_index":1670,"name":{"2823":{}},"parent":{}}],["ribbonplugin",{"_index":1654,"name":{"2790":{}},"parent":{}}],["ribbonprops",{"_index":1677,"name":{"2832":{}},"parent":{}}],["right",{"_index":157,"name":{"146":{},"187":{},"1018":{},"1797":{},"2007":{}},"parent":{}}],["rightpercent",{"_index":1965,"name":{"3167":{}},"parent":{}}],["righttoleft",{"_index":233,"name":{"222":{},"1866":{}},"parent":{}}],["rooster",{"_index":1652,"name":{"2788":{}},"parent":{}}],["roosterjs",{"_index":0,"name":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{}},"parent":{"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":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"626":{},"627":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"757":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{},"939":{},"940":{},"941":{},"942":{},"943":{},"944":{},"945":{},"946":{},"947":{},"948":{},"949":{},"950":{},"951":{},"952":{},"953":{},"954":{},"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{},"971":{},"972":{},"973":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{},"1083":{},"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{},"1091":{},"1092":{},"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{},"1104":{},"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{},"1303":{},"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{},"1374":{},"1375":{},"1376":{},"1377":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{},"1584":{},"1585":{},"1586":{},"1587":{},"1588":{},"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{},"1597":{},"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{},"1616":{},"1617":{},"1618":{},"1619":{},"1620":{},"1621":{},"1622":{},"1623":{},"1624":{},"1625":{},"1626":{},"1627":{},"1628":{},"1629":{},"1630":{},"1631":{},"1632":{},"1633":{},"1634":{},"1635":{},"1636":{},"1637":{},"1638":{},"1639":{},"1640":{},"1641":{},"1642":{},"1643":{},"1644":{},"1645":{},"1646":{},"1647":{},"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{},"1670":{},"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{},"1681":{},"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{},"1747":{},"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{},"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2168":{},"2169":{},"2170":{},"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{},"2616":{},"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{},"2623":{},"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{},"2687":{},"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"2719":{},"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2725":{},"2726":{},"2727":{},"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{},"2739":{},"2740":{},"2741":{},"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{},"2768":{},"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{},"2775":{},"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{},"2788":{},"2789":{},"2790":{},"2791":{},"2792":{},"2793":{},"2794":{},"2795":{},"2796":{},"2797":{},"2798":{},"2799":{},"2800":{},"2801":{},"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{},"2810":{},"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{},"2823":{},"2824":{},"2825":{},"2826":{},"2827":{},"2828":{},"2829":{},"2830":{},"2831":{},"2832":{},"2833":{},"2834":{},"2835":{},"2836":{},"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{},"2861":{},"2862":{},"2863":{},"2864":{},"2865":{},"2866":{},"2867":{},"2868":{},"2869":{},"2870":{},"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{},"2884":{},"2885":{},"2886":{},"2887":{},"2888":{},"2889":{},"2890":{},"2891":{},"2892":{},"2893":{},"2894":{},"2895":{},"2896":{},"2897":{},"2898":{},"2899":{},"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{},"2913":{},"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{},"2925":{},"2926":{},"2927":{},"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{},"2943":{},"2944":{},"2945":{},"2946":{},"2947":{},"2948":{},"2949":{},"2950":{},"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{}}}],["roosterprops",{"_index":1639,"name":{"2741":{}},"parent":{}}],["rootlist",{"_index":1438,"name":{"2313":{}},"parent":{}}],["rootnode",{"_index":787,"name":{"1022":{},"1027":{}},"parent":{}}],["rotate",{"_index":348,"name":{"333":{},"1985":{}},"parent":{}}],["rotateelement",{"_index":1553,"name":{"2581":{}},"parent":{}}],["rotateiconhtml",{"_index":1204,"name":{"1691":{}},"parent":{}}],["rotateimage",{"_index":1603,"name":{"2659":{},"2680":{}},"parent":{}}],["row",{"_index":1423,"name":{"2294":{}},"parent":{}}],["rowindex",{"_index":2238,"name":{"3772":{}},"parent":{}}],["rows",{"_index":1988,"name":{"3188":{}},"parent":{}}],["rtl",{"_index":1693,"name":{"2864":{}},"parent":{}}],["rtlbuttonstringkey",{"_index":1724,"name":{"2898":{}},"parent":{}}],["runasync",{"_index":984,"name":{"1345":{},"2476":{},"2542":{},"3717":{},"3893":{}},"parent":{}}],["safeinstanceof",{"_index":1409,"name":{"2279":{}},"parent":{}}],["same",{"_index":134,"name":{"125":{},"1916":{}},"parent":{}}],["sanitize",{"_index":1502,"name":{"2396":{}},"parent":{}}],["sanitizehtml",{"_index":1500,"name":{"2393":{}},"parent":{}}],["sanitizehtmloptions",{"_index":856,"name":{"1104":{}},"parent":{}}],["sanitizepastecontent",{"_index":1382,"name":{"2248":{}},"parent":{}}],["sanitizingoption",{"_index":487,"name":{"486":{},"497":{},"505":{},"3638":{},"3652":{},"3663":{}},"parent":{}}],["savetablecellmetadata",{"_index":1472,"name":{"2353":{}},"parent":{}}],["scheme",{"_index":763,"name":{"999":{}},"parent":{}}],["scroll",{"_index":406,"name":{"389":{},"2109":{}},"parent":{}}],["scrollcontainer",{"_index":37,"name":{"34":{},"677":{},"729":{},"735":{},"1533":{},"2758":{},"3755":{}},"parent":{}}],["segment",{"_index":1790,"name":{"2971":{},"3336":{},"3433":{}},"parent":{}}],["segmentdecorator",{"_index":2056,"name":{"3337":{}},"parent":{}}],["segmentformat",{"_index":1980,"name":{"3180":{},"3377":{},"3402":{}},"parent":{}}],["segmentonblock",{"_index":1791,"name":{"2972":{}},"parent":{}}],["segmentontablecell",{"_index":1792,"name":{"2973":{}},"parent":{}}],["segments",{"_index":1978,"name":{"3179":{}},"parent":{}}],["segmenttype",{"_index":2001,"name":{"3217":{},"3262":{},"3274":{},"3282":{},"3290":{},"3297":{},"3302":{}},"parent":{}}],["segmentunderlink",{"_index":1801,"name":{"2984":{}},"parent":{}}],["select",{"_index":966,"name":{"1324":{},"1473":{},"1503":{},"2455":{},"2521":{},"3595":{},"3696":{},"3872":{}},"parent":{}}],["selectable",{"_index":2045,"name":{"3321":{}},"parent":{}}],["selectall",{"_index":125,"name":{"116":{},"1907":{}},"parent":{}}],["selectimage",{"_index":1065,"name":{"1480":{},"1517":{},"3602":{}},"parent":{}}],["selection",{"_index":1426,"name":{"2297":{}},"parent":{}}],["selectionchanged",{"_index":412,"name":{"397":{},"2117":{}},"parent":{}}],["selectionchangedevent",{"_index":626,"name":{"785":{}},"parent":{}}],["selectionchangedeventdata",{"_index":629,"name":{"790":{}},"parent":{}}],["selectionoverride",{"_index":2250,"name":{"3789":{}},"parent":{}}],["selectionpath",{"_index":609,"name":{"749":{},"759":{},"762":{},"1031":{}},"parent":{}}],["selectionrange",{"_index":38,"name":{"35":{}},"parent":{}}],["selectionrangeex",{"_index":627,"name":{"786":{},"791":{},"793":{},"1724":{}},"parent":{}}],["selectionrangeexbase",{"_index":1218,"name":{"1704":{}},"parent":{}}],["selectionrangetypes",{"_index":414,"name":{"399":{}},"parent":{}}],["selectionstart",{"_index":218,"name":{"209":{},"1840":{}},"parent":{}}],["selectoption",{"_index":1174,"name":{"1656":{}},"parent":{}}],["selectrange",{"_index":1060,"name":{"1474":{},"1505":{},"3596":{}},"parent":{}}],["selecttable",{"_index":1064,"name":{"1479":{},"1515":{},"3601":{}},"parent":{}}],["sentence",{"_index":296,"name":{"285":{},"1811":{}},"parent":{}}],["setalignment",{"_index":1442,"name":{"2319":{},"2582":{},"3825":{}},"parent":{}}],["setalignmenttoselectedcells",{"_index":1428,"name":{"2301":{}},"parent":{}}],["setbackgroundcolor",{"_index":1554,"name":{"2583":{},"3810":{}},"parent":{}}],["setcolor",{"_index":1412,"name":{"2282":{}},"parent":{}}],["setcontent",{"_index":203,"name":{"194":{},"1315":{},"1475":{},"1507":{},"1821":{},"2446":{},"2512":{},"3597":{},"3687":{},"3863":{}},"parent":{}}],["setcontentmodel",{"_index":2209,"name":{"3581":{},"3630":{},"3673":{},"3849":{}},"parent":{}}],["setcursorpoint",{"_index":1177,"name":{"1662":{}},"parent":{}}],["setdarkmodestate",{"_index":993,"name":{"1354":{},"2485":{},"2551":{},"3726":{},"3902":{}},"parent":{}}],["setdirection",{"_index":1556,"name":{"2585":{},"3826":{}},"parent":{}}],["seteditingimage",{"_index":1601,"name":{"2657":{},"2678":{}},"parent":{}}],["seteditordomattribute",{"_index":985,"name":{"1346":{},"2477":{},"2543":{},"3718":{},"3894":{}},"parent":{}}],["setfontname",{"_index":1557,"name":{"2586":{},"3811":{}},"parent":{}}],["setfontsize",{"_index":1558,"name":{"2587":{},"3812":{}},"parent":{}}],["setglobalcssstyles",{"_index":1521,"name":{"2415":{}},"parent":{}}],["setheadinglevel",{"_index":1572,"name":{"2602":{},"3827":{}},"parent":{}}],["sethtmlwithmetadata",{"_index":1487,"name":{"2379":{}},"parent":{}}],["sethtmlwithselectionpath",{"_index":1486,"name":{"2378":{}},"parent":{}}],["setimagealttext",{"_index":1559,"name":{"2588":{},"3839":{}},"parent":{}}],["setimageborder",{"_index":2268,"name":{"3830":{}},"parent":{}}],["setimageboxshadow",{"_index":2269,"name":{"3831":{}},"parent":{}}],["setindentation",{"_index":1441,"name":{"2318":{},"2589":{},"3824":{}},"parent":{}}],["setisdummy",{"_index":1460,"name":{"2341":{}},"parent":{}}],["setlistitemstyle",{"_index":1470,"name":{"2351":{}},"parent":{}}],["setliststartnumber",{"_index":2262,"name":{"3819":{}},"parent":{}}],["setliststyle",{"_index":2261,"name":{"3818":{}},"parent":{}}],["setliststyletype",{"_index":1444,"name":{"2321":{}},"parent":{}}],["setmetadata",{"_index":1531,"name":{"2427":{}},"parent":{}}],["setnewliststart",{"_index":1461,"name":{"2342":{}},"parent":{}}],["setorderedlistnumbering",{"_index":1565,"name":{"2595":{}},"parent":{}}],["setparagraphmargin",{"_index":2274,"name":{"3841":{}},"parent":{}}],["setparagraphnotimplicit",{"_index":2191,"name":{"3522":{}},"parent":{}}],["setspacing",{"_index":2267,"name":{"3829":{}},"parent":{}}],["setstyles",{"_index":1519,"name":{"2413":{}},"parent":{}}],["settablecellshade",{"_index":2259,"name":{"3800":{}},"parent":{}}],["settextcolor",{"_index":1555,"name":{"2584":{},"3813":{}},"parent":{}}],["setuiutilities",{"_index":1635,"name":{"2728":{},"2799":{}},"parent":{}}],["setzoomscale",{"_index":1002,"name":{"1364":{},"2496":{},"2562":{},"3736":{},"3913":{}},"parent":{}}],["shadoweditentities",{"_index":65,"name":{"60":{}},"parent":{}}],["shadoweditfragment",{"_index":64,"name":{"59":{}},"parent":{}}],["shadoweditimageselectionpath",{"_index":68,"name":{"63":{}},"parent":{}}],["shadoweditselectionpath",{"_index":66,"name":{"61":{}},"parent":{}}],["shadowedittableselectionpath",{"_index":67,"name":{"62":{}},"parent":{}}],["shadowentitycache",{"_index":54,"name":{"48":{}},"parent":{}}],["shadowroot",{"_index":936,"name":{"1198":{},"1292":{}},"parent":{}}],["shift",{"_index":147,"name":{"136":{},"168":{},"1997":{},"2029":{}},"parent":{}}],["shifthighlight",{"_index":1175,"name":{"1658":{}},"parent":{}}],["shortarrow",{"_index":447,"name":{"431":{},"1803":{}},"parent":{}}],["shortcutfeaturesettings",{"_index":1146,"name":{"1619":{}},"parent":{}}],["shouldhandleevent",{"_index":1019,"name":{"1381":{},"1389":{}},"parent":{}}],["shouldpersist",{"_index":529,"name":{"577":{},"587":{},"594":{}},"parent":{}}],["shouldreplace",{"_index":1161,"name":{"1639":{}},"parent":{}}],["shouldshow",{"_index":1741,"name":{"2918":{}},"parent":{}}],["showinputdialog",{"_index":1762,"name":{"2944":{}},"parent":{}}],["showresizehandle",{"_index":1612,"name":{"2669":{}},"parent":{}}],["sideresize",{"_index":346,"name":{"331":{},"1983":{}},"parent":{}}],["singledirectionresize",{"_index":258,"name":{"247":{},"1946":{}},"parent":{}}],["singleimage",{"_index":380,"name":{"363":{},"2052":{}},"parent":{}}],["size",{"_index":1819,"name":{"3013":{},"3195":{}},"parent":{}}],["sizeformat",{"_index":1928,"name":{"3120":{}},"parent":{}}],["sizetransformer",{"_index":1051,"name":{"1443":{},"1539":{},"1748":{},"2764":{},"3616":{},"3761":{}},"parent":{}}],["skiptags",{"_index":790,"name":{"1025":{},"1030":{}},"parent":{}}],["skipundosnapshot",{"_index":2245,"name":{"3781":{},"3796":{}},"parent":{}}],["snapshot",{"_index":814,"name":{"1059":{}},"parent":{}}],["snapshotbeforepaste",{"_index":651,"name":{"825":{}},"parent":{}}],["snapshots",{"_index":795,"name":{"1034":{},"1035":{}},"parent":{}}],["snapshotsservice",{"_index":75,"name":{"69":{}},"parent":{}}],["source",{"_index":503,"name":{"526":{},"533":{},"537":{}},"parent":{}}],["sourcestring",{"_index":1157,"name":{"1636":{}},"parent":{}}],["space",{"_index":151,"name":{"140":{},"2001":{}},"parent":{}}],["spacingformat",{"_index":1911,"name":{"3105":{}},"parent":{}}],["spanabove",{"_index":1193,"name":{"1681":{},"3252":{}},"parent":{}}],["spanleft",{"_index":1192,"name":{"1680":{},"3251":{}},"parent":{}}],["split",{"_index":1440,"name":{"2317":{}},"parent":{}}],["splitbalancednoderange",{"_index":1400,"name":{"2270":{}},"parent":{}}],["splithorizontally",{"_index":332,"name":{"317":{},"2157":{}},"parent":{}}],["splitparentnode",{"_index":1399,"name":{"2269":{}},"parent":{}}],["splittextnode",{"_index":1407,"name":{"2277":{}},"parent":{}}],["splitvertically",{"_index":333,"name":{"318":{},"2158":{}},"parent":{}}],["square",{"_index":446,"name":{"430":{},"1802":{}},"parent":{}}],["src",{"_index":2026,"name":{"3278":{}},"parent":{}}],["start",{"_index":793,"name":{"1032":{},"1044":{},"3435":{}},"parent":{}}],["startlivepreview",{"_index":1658,"name":{"2795":{}},"parent":{}}],["startnumberoverride",{"_index":1938,"name":{"3133":{}},"parent":{}}],["startshadowedit",{"_index":996,"name":{"1358":{},"2489":{},"2555":{},"3730":{},"3906":{}},"parent":{}}],["state",{"_index":528,"name":{"576":{},"586":{},"593":{},"1067":{}},"parent":{}}],["statepluginkeys",{"_index":1044,"name":{"1434":{}},"parent":{}}],["stoplivepreview",{"_index":1659,"name":{"2797":{}},"parent":{}}],["stopprintablekeyboardeventpropagation",{"_index":40,"name":{"37":{}},"parent":{}}],["stopshadowedit",{"_index":997,"name":{"1359":{},"2490":{},"2556":{},"3731":{},"3907":{}},"parent":{}}],["strike",{"_index":1820,"name":{"3014":{}},"parent":{}}],["strikeformat",{"_index":1850,"name":{"3047":{}},"parent":{}}],["strikethrough",{"_index":126,"name":{"117":{},"1908":{},"2860":{},"3049":{}},"parent":{}}],["strikethroughbuttonstringkey",{"_index":1719,"name":{"2893":{}},"parent":{}}],["string",{"_index":457,"name":{"441":{},"1857":{}},"parent":{}}],["stringdefinition",{"_index":1255,"name":{"1755":{}},"parent":{}}],["stringmap",{"_index":1239,"name":{"1737":{}},"parent":{}}],["strings",{"_index":1681,"name":{"2835":{}},"parent":{}}],["structurednodefeaturesettings",{"_index":1148,"name":{"1621":{}},"parent":{}}],["style",{"_index":1214,"name":{"1700":{},"3574":{}},"parent":{}}],["stylebasedformatstate",{"_index":712,"name":{"924":{}},"parent":{}}],["stylebasedsegment",{"_index":1788,"name":{"2969":{}},"parent":{}}],["stylewithcss",{"_index":132,"name":{"123":{},"1914":{}},"parent":{}}],["subitems",{"_index":1742,"name":{"2920":{}},"parent":{}}],["subscript",{"_index":127,"name":{"118":{},"1909":{},"2859":{}},"parent":{}}],["subscriptbuttonstringkey",{"_index":1718,"name":{"2892":{}},"parent":{}}],["suggestionlabelprefix",{"_index":1188,"name":{"1677":{}},"parent":{}}],["suggestionslabel",{"_index":1187,"name":{"1676":{}},"parent":{}}],["superorsubscript",{"_index":1821,"name":{"3015":{}},"parent":{}}],["superorsubscriptformat",{"_index":1853,"name":{"3050":{}},"parent":{}}],["superorsubscriptsequence",{"_index":1855,"name":{"3052":{}},"parent":{}}],["superscript",{"_index":128,"name":{"119":{},"1910":{},"2858":{}},"parent":{}}],["superscriptbuttonstringkey",{"_index":1717,"name":{"2891":{}},"parent":{}}],["svgcursorelement",{"_index":944,"name":{"1210":{}},"parent":{}}],["switchshadowedit",{"_index":1061,"name":{"1476":{},"1509":{},"3598":{}},"parent":{}}],["switchtodarkmode",{"_index":206,"name":{"198":{},"1825":{}},"parent":{}}],["switchtolightmode",{"_index":207,"name":{"199":{},"1826":{}},"parent":{}}],["tab",{"_index":145,"name":{"134":{},"1995":{}},"parent":{}}],["tabintable",{"_index":1112,"name":{"1559":{},"1624":{}},"parent":{}}],["tabkeytextfeatures",{"_index":276,"name":{"265":{},"1964":{}},"parent":{}}],["table",{"_index":316,"name":{"303":{},"1713":{},"2129":{},"2292":{},"2974":{},"3338":{},"3439":{},"3771":{}},"parent":{}}],["tablealignment",{"_index":264,"name":{"253":{},"1952":{}},"parent":{}}],["tableborder",{"_index":1795,"name":{"2977":{}},"parent":{}}],["tableborderformat",{"_index":381,"name":{"364":{},"1079":{},"3154":{}},"parent":{}}],["tablecell",{"_index":1793,"name":{"2975":{}},"parent":{}}],["tablecellborder",{"_index":1796,"name":{"2978":{}},"parent":{}}],["tablecellmetadataformat",{"_index":834,"name":{"1082":{}},"parent":{}}],["tablecellselection",{"_index":1622,"name":{"2707":{}},"parent":{}}],["tablecontentmetadata",{"_index":805,"name":{"1048":{}},"parent":{}}],["tablecontext",{"_index":2235,"name":{"3769":{}},"parent":{}}],["tableeditalignmenuitemstringkey",{"_index":1749,"name":{"2931":{}},"parent":{}}],["tableeditaligntablemenuitemstringkey",{"_index":1752,"name":{"2934":{}},"parent":{}}],["tableeditdeletemenuitemstringkey",{"_index":1746,"name":{"2928":{}},"parent":{}}],["tableeditinsertmenuitemstringkey",{"_index":1745,"name":{"2927":{}},"parent":{}}],["tableeditmenuitemstringkey",{"_index":1751,"name":{"2933":{}},"parent":{}}],["tableeditmergemenuitemstringkey",{"_index":1747,"name":{"2929":{}},"parent":{}}],["tableeditshademenuitemstringkey",{"_index":1750,"name":{"2932":{}},"parent":{}}],["tableeditsplitmenuitemstringkey",{"_index":1748,"name":{"2930":{}},"parent":{}}],["tablefeaturesettings",{"_index":1150,"name":{"1623":{}},"parent":{}}],["tableformat",{"_index":700,"name":{"886":{},"921":{},"1068":{},"3550":{}},"parent":{}}],["tablehasheader",{"_index":701,"name":{"887":{},"922":{},"3551":{}},"parent":{}}],["tablehorizontalresizer",{"_index":365,"name":{"349":{},"2038":{}},"parent":{}}],["tableid",{"_index":806,"name":{"1049":{}},"parent":{}}],["tablelayout",{"_index":1822,"name":{"3016":{},"3110":{}},"parent":{}}],["tablelayoutformat",{"_index":1915,"name":{"3108":{}},"parent":{}}],["tablemetadataformat",{"_index":1948,"name":{"3142":{}},"parent":{}}],["tableoperation",{"_index":318,"name":{"304":{}},"parent":{}}],["tableprocessor",{"_index":2148,"name":{"3480":{}},"parent":{}}],["tableresize",{"_index":1618,"name":{"2695":{}},"parent":{}}],["tableresizerltr",{"_index":367,"name":{"351":{},"2040":{}},"parent":{}}],["tableresizerrtl",{"_index":368,"name":{"352":{},"2041":{}},"parent":{}}],["tablerow",{"_index":1794,"name":{"2976":{}},"parent":{}}],["tableselection",{"_index":417,"name":{"401":{},"1086":{},"2132":{},"3421":{},"3446":{}},"parent":{}}],["tableselectioncontext",{"_index":2236,"name":{"3770":{}},"parent":{}}],["tableselectionrange",{"_index":39,"name":{"36":{},"1712":{}},"parent":{}}],["tableselector",{"_index":369,"name":{"353":{},"2042":{}},"parent":{}}],["tablespacing",{"_index":1823,"name":{"3017":{}},"parent":{}}],["tableverticalresizer",{"_index":366,"name":{"350":{},"2039":{}},"parent":{}}],["tag",{"_index":1210,"name":{"1697":{}},"parent":{}}],["tagname",{"_index":1990,"name":{"3194":{},"3229":{},"3314":{}},"parent":{}}],["target",{"_index":1923,"name":{"3115":{}},"parent":{}}],["targetwindow",{"_index":943,"name":{"1209":{}},"parent":{}}],["targetwindowbase",{"_index":860,"name":{"1118":{}},"parent":{}}],["td",{"_index":1190,"name":{"1679":{}},"parent":{}}],["text",{"_index":182,"name":{"172":{},"179":{},"819":{},"1204":{},"1298":{},"1844":{},"2060":{},"3289":{},"3339":{}},"parent":{}}],["textalign",{"_index":706,"name":{"898":{},"934":{},"3018":{},"3095":{},"3562":{}},"parent":{}}],["textalignformat",{"_index":1899,"name":{"3093":{}},"parent":{}}],["textcolor",{"_index":673,"name":{"854":{},"893":{},"929":{},"2844":{},"3019":{},"3055":{},"3557":{}},"parent":{}}],["textcolorbuttonstringkey",{"_index":1702,"name":{"2876":{}},"parent":{}}],["textcolorformat",{"_index":1857,"name":{"3053":{}},"parent":{}}],["textcolorkeys",{"_index":1757,"name":{"2939":{}},"parent":{}}],["textcolorontablecell",{"_index":1824,"name":{"3020":{}},"parent":{}}],["textcolors",{"_index":674,"name":{"855":{},"894":{},"930":{},"3558":{}},"parent":{}}],["textfeaturesettings",{"_index":1152,"name":{"1628":{}},"parent":{}}],["threaditemcounts",{"_index":2101,"name":{"3409":{},"3454":{}},"parent":{}}],["title",{"_index":31,"name":{"29":{},"3280":{}},"parent":{}}],["toarray",{"_index":1535,"name":{"2431":{}},"parent":{}}],["toggleblockquote",{"_index":1566,"name":{"2596":{},"3828":{}},"parent":{}}],["togglebold",{"_index":1561,"name":{"2591":{},"3804":{}},"parent":{}}],["togglebullet",{"_index":1562,"name":{"2592":{},"3802":{}},"parent":{}}],["togglecode",{"_index":2275,"name":{"3842":{}},"parent":{}}],["togglecodeblock",{"_index":1567,"name":{"2597":{}},"parent":{}}],["toggleheader",{"_index":1573,"name":{"2603":{}},"parent":{}}],["toggleitalic",{"_index":1563,"name":{"2593":{},"3805":{}},"parent":{}}],["togglelisttype",{"_index":1575,"name":{"2605":{}},"parent":{}}],["togglenumbering",{"_index":1564,"name":{"2594":{},"3803":{}},"parent":{}}],["togglestrikethrough",{"_index":1568,"name":{"2598":{},"3807":{}},"parent":{}}],["togglesubscript",{"_index":1569,"name":{"2599":{},"3808":{}},"parent":{}}],["togglesuperscript",{"_index":1570,"name":{"2600":{},"3809":{}},"parent":{}}],["toggleunderline",{"_index":1571,"name":{"2601":{},"3806":{}},"parent":{}}],["top",{"_index":780,"name":{"1015":{}},"parent":{}}],["topbordercolor",{"_index":821,"name":{"1069":{},"3144":{}},"parent":{}}],["toppercent",{"_index":1966,"name":{"3168":{}},"parent":{}}],["totalsize",{"_index":797,"name":{"1036":{}},"parent":{}}],["transformcolor",{"_index":1062,"name":{"1477":{},"1511":{},"3599":{}},"parent":{}}],["transformelementcolor",{"_index":1012,"name":{"1373":{}},"parent":{}}],["transformtodarkcolor",{"_index":994,"name":{"1356":{},"2487":{},"2553":{},"3728":{},"3904":{}},"parent":{}}],["triggercharacter",{"_index":1184,"name":{"1673":{}},"parent":{}}],["triggercontentchangedevent",{"_index":973,"name":{"1331":{},"2462":{},"2528":{},"3703":{},"3879":{}},"parent":{}}],["triggerevent",{"_index":1063,"name":{"1478":{},"1513":{},"3600":{}},"parent":{}}],["triggerpluginevent",{"_index":972,"name":{"1330":{},"2461":{},"2527":{},"3702":{},"3878":{}},"parent":{}}],["trustedhtmlhandler",{"_index":1050,"name":{"1441":{},"1537":{},"1746":{},"2762":{},"3614":{},"3759":{}},"parent":{}}],["type",{"_index":32,"name":{"30":{},"862":{},"1042":{},"1047":{},"1053":{},"1057":{},"1065":{},"1705":{},"1709":{},"1716":{},"1721":{},"1752":{},"1757":{},"1764":{},"1769":{},"1776":{},"1781":{},"1788":{},"3213":{}},"parent":{}}],["typeafterlink",{"_index":1036,"name":{"1424":{}},"parent":{}}],["typeincontainer",{"_index":1033,"name":{"1420":{}},"parent":{}}],["typeofstateplugin",{"_index":1045,"name":{"1435":{}},"parent":{}}],["types",{"_index":2,"name":{"0":{},"1":{},"9":{},"818":{}},"parent":{"13":{},"26":{},"32":{},"40":{},"42":{},"50":{},"64":{},"68":{},"74":{},"76":{},"124":{},"131":{},"169":{},"178":{},"181":{},"184":{},"188":{},"202":{},"205":{},"212":{},"217":{},"220":{},"223":{},"228":{},"241":{},"272":{},"275":{},"281":{},"284":{},"289":{},"293":{},"298":{},"302":{},"304":{},"328":{},"337":{},"341":{},"355":{},"364":{},"374":{},"399":{},"403":{},"426":{},"438":{},"445":{},"450":{},"458":{},"463":{},"471":{},"475":{},"479":{},"483":{},"494":{},"502":{},"513":{},"518":{},"520":{},"525":{},"532":{},"536":{},"543":{},"551":{},"556":{},"564":{},"568":{},"572":{},"582":{},"589":{},"599":{},"604":{},"606":{},"611":{},"618":{},"625":{},"626":{},"631":{},"636":{},"642":{},"643":{},"649":{},"654":{},"659":{},"660":{},"665":{},"671":{},"676":{},"682":{},"683":{},"688":{},"694":{},"695":{},"701":{},"706":{},"711":{},"712":{},"717":{},"723":{},"728":{},"734":{},"736":{},"738":{},"740":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"753":{},"757":{},"760":{},"766":{},"770":{},"776":{},"779":{},"785":{},"790":{},"792":{},"797":{},"802":{},"804":{},"809":{},"817":{},"830":{},"843":{},"847":{},"851":{},"861":{},"866":{},"902":{},"909":{},"924":{},"936":{},"939":{},"946":{},"949":{},"954":{},"961":{},"971":{},"972":{},"977":{},"983":{},"990":{},"998":{},"1002":{},"1005":{},"1014":{},"1019":{},"1026":{},"1031":{},"1034":{},"1040":{},"1043":{},"1048":{},"1054":{},"1058":{},"1059":{},"1064":{},"1068":{},"1082":{},"1086":{},"1089":{},"1092":{},"1104":{},"1118":{},"1209":{},"1303":{},"1367":{},"1374":{},"1378":{},"1379":{},"1386":{},"1394":{},"1405":{},"1417":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1455":{},"1457":{},"1459":{},"1481":{},"1483":{},"1485":{},"1487":{},"1489":{},"1491":{},"1493":{},"1495":{},"1497":{},"1499":{},"1501":{},"1503":{},"1505":{},"1507":{},"1509":{},"1511":{},"1513":{},"1515":{},"1517":{},"1519":{},"1543":{},"1584":{},"1587":{},"1589":{},"1597":{},"1611":{},"1616":{},"1619":{},"1621":{},"1623":{},"1628":{},"1632":{},"1635":{},"1641":{},"1647":{},"1670":{},"1678":{},"1684":{},"1696":{},"1704":{},"1708":{},"1712":{},"1719":{},"1724":{},"1725":{},"1729":{},"1731":{},"1732":{},"1734":{},"1735":{},"1737":{},"1738":{},"1739":{},"1740":{},"1742":{},"1745":{},"1746":{},"1748":{},"1750":{},"1751":{},"1755":{},"1760":{},"1767":{},"1772":{},"1779":{},"1784":{},"1785":{},"1791":{},"1792":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2951":{},"2952":{},"2954":{},"2955":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2967":{},"2989":{},"2990":{},"3025":{},"3026":{},"3029":{},"3032":{},"3035":{},"3038":{},"3041":{},"3044":{},"3047":{},"3050":{},"3053":{},"3056":{},"3059":{},"3062":{},"3065":{},"3068":{},"3075":{},"3078":{},"3081":{},"3087":{},"3093":{},"3096":{},"3099":{},"3102":{},"3105":{},"3108":{},"3111":{},"3120":{},"3128":{},"3131":{},"3135":{},"3138":{},"3141":{},"3142":{},"3156":{},"3160":{},"3164":{},"3170":{},"3171":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3186":{},"3193":{},"3200":{},"3203":{},"3205":{},"3210":{},"3221":{},"3225":{},"3228":{},"3236":{},"3243":{},"3250":{},"3260":{},"3261":{},"3267":{},"3277":{},"3288":{},"3295":{},"3301":{},"3307":{},"3308":{},"3310":{},"3313":{},"3316":{},"3317":{},"3321":{},"3323":{},"3340":{},"3341":{},"3342":{},"3343":{},"3345":{},"3352":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3364":{},"3366":{},"3387":{},"3389":{},"3392":{},"3400":{},"3404":{},"3408":{},"3412":{},"3431":{},"3434":{},"3438":{},"3442":{},"3444":{},"3448":{},"3453":{},"3456":{},"3459":{},"3461":{},"3463":{},"3468":{}}}],["types.addundosnapshot",{"_index":1053,"name":{},"parent":{"1456":{}}}],["types.alignment",{"_index":196,"name":{},"parent":{"185":{},"186":{},"187":{}}}],["types.arraydefinition",{"_index":1265,"name":{},"parent":{"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{}}}],["types.attachdomevent",{"_index":1055,"name":{},"parent":{"1458":{}}}],["types.attributecallback",{"_index":1232,"name":{},"parent":{"1730":{}}}],["types.autolinkfeaturesettings",{"_index":1135,"name":{},"parent":{"1585":{},"1586":{}}}],["types.backgroundcolorformat",{"_index":1829,"name":{},"parent":{"3027":{}}}],["types.backgroundcolorformat.__type",{"_index":1830,"name":{},"parent":{"3028":{}}}],["types.basepluginevent",{"_index":478,"name":{},"parent":{"472":{},"473":{},"474":{}}}],["types.beforecutcopyevent",{"_index":468,"name":{},"parent":{"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{}}}],["types.beforecutcopyeventdata",{"_index":474,"name":{},"parent":{"459":{},"460":{},"461":{},"462":{}}}],["types.beforedisposeevent",{"_index":480,"name":{},"parent":{"476":{},"477":{},"478":{}}}],["types.beforekeyboardeditingdata",{"_index":636,"name":{},"parent":{"803":{}}}],["types.beforekeyboardeditingevent",{"_index":634,"name":{},"parent":{"798":{},"799":{},"800":{},"801":{}}}],["types.beforepasteevent",{"_index":485,"name":{},"parent":{"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{}}}],["types.beforepasteeventdata",{"_index":492,"name":{},"parent":{"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{}}}],["types.beforesetcontentevent",{"_index":497,"name":{},"parent":{"514":{},"515":{},"516":{},"517":{}}}],["types.beforesetcontenteventdata",{"_index":499,"name":{},"parent":{"519":{}}}],["types.blockelement",{"_index":641,"name":{},"parent":{"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{}}}],["types.boldformat",{"_index":1832,"name":{},"parent":{"3030":{}}}],["types.boldformat.__type",{"_index":1834,"name":{},"parent":{"3031":{}}}],["types.booleandefinition",{"_index":1262,"name":{},"parent":{"1768":{},"1769":{},"1770":{},"1771":{}}}],["types.borderboxformat",{"_index":1864,"name":{},"parent":{"3060":{}}}],["types.borderboxformat.__type",{"_index":1866,"name":{},"parent":{"3061":{}}}],["types.borderformat",{"_index":1874,"name":{},"parent":{"3069":{}}}],["types.borderformat.__type",{"_index":1876,"name":{},"parent":{"3070":{},"3071":{},"3072":{},"3073":{},"3074":{}}}],["types.boxshadowformat",{"_index":1934,"name":{},"parent":{"3129":{}}}],["types.boxshadowformat.__type",{"_index":1935,"name":{},"parent":{"3130":{}}}],["types.browserinfo",{"_index":15,"name":{},"parent":{"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{}}}],["types.buildineditfeature",{"_index":1024,"name":{},"parent":{"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{}}}],["types.bulletlisttype",{"_index":443,"name":{},"parent":{"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{}}}],["types.capitalization",{"_index":297,"name":{},"parent":{"285":{},"286":{},"287":{},"288":{}}}],["types.changesource",{"_index":200,"name":{},"parent":{"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{}}}],["types.clearformatmode",{"_index":354,"name":{},"parent":{"338":{},"339":{},"340":{}}}],["types.clipboarddata",{"_index":647,"name":{},"parent":{"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{}}}],["types.codefeaturesettings",{"_index":1155,"name":{},"parent":{"1633":{},"1634":{}}}],["types.colorkeyandvalue",{"_index":1015,"name":{},"parent":{"1375":{},"1376":{},"1377":{}}}],["types.colortransformdirection",{"_index":212,"name":{},"parent":{"203":{},"204":{}}}],["types.compatiblebeforecutcopyevent",{"_index":476,"name":{},"parent":{"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{}}}],["types.compatiblebeforedisposeevent",{"_index":482,"name":{},"parent":{"480":{},"481":{},"482":{}}}],["types.compatiblebeforekeyboardeditingevent",{"_index":638,"name":{},"parent":{"805":{},"806":{},"807":{},"808":{}}}],["types.compatiblebeforepasteevent",{"_index":494,"name":{},"parent":{"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{}}}],["types.compatiblebeforesetcontentevent",{"_index":501,"name":{},"parent":{"521":{},"522":{},"523":{},"524":{}}}],["types.compatiblecontentchangedevent",{"_index":510,"name":{},"parent":{"537":{},"538":{},"539":{},"540":{},"541":{},"542":{}}}],["types.compatibleeditimageevent",{"_index":519,"name":{},"parent":{"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{}}}],["types.compatibleeditorreadyevent",{"_index":523,"name":{},"parent":{"569":{},"570":{},"571":{}}}],["types.compatibleentershadoweditevent",{"_index":615,"name":{},"parent":{"761":{},"762":{},"763":{},"764":{},"765":{}}}],["types.compatibleentityoperationevent",{"_index":534,"name":{},"parent":{"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{}}}],["types.compatibleextractcontentwithdomevent",{"_index":540,"name":{},"parent":{"607":{},"608":{},"609":{},"610":{}}}],["types.compatibleleaveshadoweditevent",{"_index":617,"name":{},"parent":{"767":{},"768":{},"769":{}}}],["types.compatiblependingformatstatechangedevent",{"_index":546,"name":{},"parent":{"619":{},"620":{},"621":{},"622":{},"623":{},"624":{}}}],["types.compatibleplugincompositionevent",{"_index":575,"name":{},"parent":{"684":{},"685":{},"686":{},"687":{}}}],["types.compatibleplugincontextmenuevent",{"_index":577,"name":{},"parent":{"689":{},"690":{},"691":{},"692":{},"693":{}}}],["types.compatibleplugininputevent",{"_index":591,"name":{},"parent":{"724":{},"725":{},"726":{},"727":{}}}],["types.compatiblepluginkeydownevent",{"_index":580,"name":{},"parent":{"696":{},"697":{},"698":{},"699":{},"700":{}}}],["types.compatiblepluginkeypressevent",{"_index":582,"name":{},"parent":{"702":{},"703":{},"704":{},"705":{}}}],["types.compatiblepluginkeyupevent",{"_index":584,"name":{},"parent":{"707":{},"708":{},"709":{},"710":{}}}],["types.compatiblepluginmousedownevent",{"_index":587,"name":{},"parent":{"713":{},"714":{},"715":{},"716":{}}}],["types.compatiblepluginmouseupevent",{"_index":589,"name":{},"parent":{"718":{},"719":{},"720":{},"721":{},"722":{}}}],["types.compatiblepluginscrollevent",{"_index":593,"name":{},"parent":{"729":{},"730":{},"731":{},"732":{},"733":{}}}],["types.compatibleselectionchangedevent",{"_index":632,"name":{},"parent":{"793":{},"794":{},"795":{},"796":{}}}],["types.compatiblezoomchangedevent",{"_index":625,"name":{},"parent":{"780":{},"781":{},"782":{},"783":{},"784":{}}}],["types.contentchangeddata",{"_index":669,"name":{},"parent":{"848":{},"849":{},"850":{}}}],["types.contentchangedevent",{"_index":504,"name":{},"parent":{"526":{},"527":{},"528":{},"529":{},"530":{},"531":{}}}],["types.contentchangedeventdata",{"_index":508,"name":{},"parent":{"533":{},"534":{},"535":{}}}],["types.contenteditfeaturesettings",{"_index":1097,"name":{},"parent":{"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{}}}],["types.contentmetadatabase",{"_index":802,"name":{},"parent":{"1041":{},"1042":{}}}],["types.contentmodelblockbase",{"_index":1994,"name":{},"parent":{"3201":{},"3202":{}}}],["types.contentmodelblockgroupbase",{"_index":2007,"name":{},"parent":{"3226":{},"3227":{}}}],["types.contentmodelblockhandler",{"_index":2129,"name":{},"parent":{"3462":{}}}],["types.contentmodelblockwithcache",{"_index":1996,"name":{},"parent":{"3204":{}}}],["types.contentmodelbr",{"_index":2022,"name":{},"parent":{"3262":{},"3263":{},"3264":{},"3265":{},"3266":{}}}],["types.contentmodelcode",{"_index":2037,"name":{},"parent":{"3309":{}}}],["types.contentmodeldivider",{"_index":1991,"name":{},"parent":{"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{}}}],["types.contentmodeldocument",{"_index":2004,"name":{},"parent":{"3222":{},"3223":{},"3224":{}}}],["types.contentmodelentity",{"_index":2000,"name":{},"parent":{"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{}}}],["types.contentmodelformatbase",{"_index":1785,"name":{},"parent":{"2966":{}}}],["types.contentmodelformatcontainer",{"_index":2009,"name":{},"parent":{"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{}}}],["types.contentmodelformatmap",{"_index":1787,"name":{},"parent":{"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{}}}],["types.contentmodelgeneralblock",{"_index":2012,"name":{},"parent":{"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{}}}],["types.contentmodelgeneralsegment",{"_index":2024,"name":{},"parent":{"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{}}}],["types.contentmodelhandler",{"_index":2127,"name":{},"parent":{"3460":{}}}],["types.contentmodelhandlermap",{"_index":2048,"name":{},"parent":{"3324":{}}}],["types.contentmodelhandlermap.__type",{"_index":2049,"name":{},"parent":{"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{}}}],["types.contentmodelimage",{"_index":2027,"name":{},"parent":{"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{}}}],["types.contentmodellink",{"_index":2039,"name":{},"parent":{"3311":{},"3312":{}}}],["types.contentmodellistitem",{"_index":2015,"name":{},"parent":{"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{}}}],["types.contentmodellistlevel",{"_index":2044,"name":{},"parent":{"3318":{},"3319":{},"3320":{}}}],["types.contentmodelparagraph",{"_index":1979,"name":{},"parent":{"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{}}}],["types.contentmodelparagraphdecorator",{"_index":2041,"name":{},"parent":{"3314":{},"3315":{}}}],["types.contentmodelsegmentbase",{"_index":2034,"name":{},"parent":{"3302":{},"3303":{},"3304":{},"3305":{},"3306":{}}}],["types.contentmodelselectionmarker",{"_index":2032,"name":{},"parent":{"3296":{},"3297":{},"3298":{},"3299":{},"3300":{}}}],["types.contentmodeltable",{"_index":1987,"name":{},"parent":{"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{}}}],["types.contentmodeltablecell",{"_index":2018,"name":{},"parent":{"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{}}}],["types.contentmodeltablerow",{"_index":1998,"name":{},"parent":{"3206":{},"3207":{},"3208":{},"3209":{}}}],["types.contentmodeltext",{"_index":2030,"name":{},"parent":{"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{}}}],["types.contentmodelwithdataset",{"_index":1775,"name":{},"parent":{"2956":{}}}],["types.contentmodelwithformat",{"_index":1772,"name":{},"parent":{"2953":{}}}],["types.contentposition",{"_index":216,"name":{},"parent":{"206":{},"207":{},"208":{},"209":{},"210":{},"211":{}}}],["types.contenttype",{"_index":193,"name":{},"parent":{"182":{},"183":{}}}],["types.contenttypeprefix",{"_index":189,"name":{},"parent":{"179":{},"180":{}}}],["types.contextmenuprovider",{"_index":658,"name":{},"parent":{"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{}}}],["types.coordinates",{"_index":842,"name":{},"parent":{"1090":{},"1091":{}}}],["types.copypastepluginstate",{"_index":83,"name":{},"parent":{"75":{}}}],["types.coreapimap",{"_index":1057,"name":{},"parent":{"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{}}}],["types.corecreator",{"_index":1277,"name":{},"parent":{"1793":{}}}],["types.coreplugins",{"_index":1032,"name":{},"parent":{"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{}}}],["types.createelementdata",{"_index":1211,"name":{},"parent":{"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{}}}],["types.createpastefragment",{"_index":1066,"name":{},"parent":{"1482":{}}}],["types.cssstylecallback",{"_index":1235,"name":{},"parent":{"1733":{}}}],["types.cursorfeaturesettings",{"_index":1137,"name":{},"parent":{"1588":{}}}],["types.customdata",{"_index":665,"name":{},"parent":{"844":{},"845":{},"846":{}}}],["types.customizedefinition",{"_index":1274,"name":{},"parent":{"1786":{},"1787":{},"1788":{},"1789":{},"1790":{}}}],["types.customreplacement",{"_index":1158,"name":{},"parent":{"1636":{},"1637":{},"1638":{},"1639":{},"1640":{}}}],["types.darkcolorhandler",{"_index":1007,"name":{},"parent":{"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{}}}],["types.darkmodedatasetnames",{"_index":222,"name":{},"parent":{"213":{},"214":{},"215":{},"216":{}}}],["types.defaultformat",{"_index":672,"name":{},"parent":{"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{}}}],["types.definitionbase",{"_index":1252,"name":{},"parent":{"1752":{},"1753":{},"1754":{}}}],["types.definitiontype",{"_index":455,"name":{},"parent":{"439":{},"440":{},"441":{},"442":{},"443":{},"444":{}}}],["types.delimiterclasses",{"_index":228,"name":{},"parent":{"218":{},"219":{}}}],["types.direction",{"_index":232,"name":{},"parent":{"221":{},"222":{}}}],["types.directionformat",{"_index":1882,"name":{},"parent":{"3076":{}}}],["types.directionformat.__type",{"_index":1883,"name":{},"parent":{"3077":{}}}],["types.displayformat",{"_index":1906,"name":{},"parent":{"3100":{}}}],["types.displayformat.__type",{"_index":1907,"name":{},"parent":{"3101":{}}}],["types.documentcommand",{"_index":86,"name":{},"parent":{"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":{}}}],["types.documentposition",{"_index":135,"name":{},"parent":{"125":{},"126":{},"127":{},"128":{},"129":{},"130":{}}}],["types.domeventhandlerfunction",{"_index":1243,"name":{},"parent":{"1741":{}}}],["types.domeventhandlerobject",{"_index":1245,"name":{},"parent":{"1743":{},"1744":{}}}],["types.domeventpluginstate",{"_index":36,"name":{},"parent":{"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{}}}],["types.domtomodelcontext",{"_index":2082,"name":{},"parent":{"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{}}}],["types.domtomodeldecoratorcontext",{"_index":2099,"name":{},"parent":{"3405":{},"3406":{},"3407":{}}}],["types.domtomodelformatcontext",{"_index":2097,"name":{},"parent":{"3401":{},"3402":{},"3403":{}}}],["types.domtomodellistformat",{"_index":2102,"name":{},"parent":{"3409":{},"3410":{},"3411":{}}}],["types.domtomodeloption",{"_index":2132,"name":{},"parent":{"3464":{},"3465":{},"3466":{},"3467":{}}}],["types.domtomodelselectioncontext",{"_index":2093,"name":{},"parent":{"3390":{},"3391":{}}}],["types.domtomodelsettings",{"_index":2075,"name":{},"parent":{"3359":{},"3360":{},"3361":{},"3362":{},"3363":{}}}],["types.edgelinkpreview",{"_index":29,"name":{},"parent":{"27":{},"28":{},"29":{},"30":{},"31":{}}}],["types.editimageevent",{"_index":512,"name":{},"parent":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["types.editimageeventdata",{"_index":517,"name":{},"parent":{"552":{},"553":{},"554":{},"555":{}}}],["types.editorcontext",{"_index":2095,"name":{},"parent":{"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{}}}],["types.editorcore",{"_index":1048,"name":{},"parent":{"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{}}}],["types.editoroptions",{"_index":1086,"name":{},"parent":{"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{}}}],["types.editorplugin",{"_index":1026,"name":{},"parent":{"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{}}}],["types.editorreadyevent",{"_index":521,"name":{},"parent":{"565":{},"566":{},"567":{}}}],["types.editorundostate",{"_index":715,"name":{},"parent":{"937":{},"938":{}}}],["types.editpluginstate",{"_index":45,"name":{},"parent":{"41":{}}}],["types.elementbasedformatstate",{"_index":711,"name":{},"parent":{"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{}}}],["types.elementcallback",{"_index":1238,"name":{},"parent":{"1736":{}}}],["types.elementprocessor",{"_index":2091,"name":{},"parent":{"3388":{}}}],["types.ensuretypeincontainer",{"_index":1067,"name":{},"parent":{"1484":{}}}],["types.entershadoweditevent",{"_index":608,"name":{},"parent":{"748":{},"749":{},"750":{},"751":{},"752":{}}}],["types.entershadowediteventdata",{"_index":613,"name":{},"parent":{"758":{},"759":{}}}],["types.entity",{"_index":677,"name":{},"parent":{"862":{},"863":{},"864":{},"865":{}}}],["types.entityclasses",{"_index":236,"name":{},"parent":{"224":{},"225":{},"226":{},"227":{}}}],["types.entityfeaturesettings",{"_index":1139,"name":{},"parent":{"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{}}}],["types.entityoperation",{"_index":242,"name":{},"parent":{"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{}}}],["types.entityoperationevent",{"_index":526,"name":{},"parent":{"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{}}}],["types.entityoperationeventdata",{"_index":532,"name":{},"parent":{"583":{},"584":{},"585":{},"586":{},"587":{},"588":{}}}],["types.entitypluginstate",{"_index":48,"name":{},"parent":{"43":{},"44":{},"47":{},"48":{},"49":{}}}],["types.entitypluginstate.__type",{"_index":51,"name":{},"parent":{"45":{},"46":{}}}],["types.entitystate",{"_index":820,"name":{},"parent":{"1065":{},"1066":{},"1067":{}}}],["types.experimentalfeatures",{"_index":254,"name":{},"parent":{"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{}}}],["types.extractclipboardeventoption",{"_index":718,"name":{},"parent":{"940":{},"941":{},"942":{},"943":{},"944":{},"945":{}}}],["types.extractclipboarditemsforieoptions",{"_index":724,"name":{},"parent":{"950":{},"951":{},"952":{},"953":{}}}],["types.extractclipboarditemsoption",{"_index":722,"name":{},"parent":{"947":{},"948":{}}}],["types.extractcontentwithdomevent",{"_index":536,"name":{},"parent":{"600":{},"601":{},"602":{},"603":{}}}],["types.extractcontentwithdomeventdata",{"_index":538,"name":{},"parent":{"605":{}}}],["types.floatformat",{"_index":1945,"name":{},"parent":{"3139":{}}}],["types.floatformat.__type",{"_index":1946,"name":{},"parent":{"3140":{}}}],["types.focus",{"_index":1068,"name":{},"parent":{"1486":{}}}],["types.fontfamilyformat",{"_index":1836,"name":{},"parent":{"3033":{}}}],["types.fontfamilyformat.__type",{"_index":1837,"name":{},"parent":{"3034":{}}}],["types.fontsizechange",{"_index":285,"name":{},"parent":{"273":{},"274":{}}}],["types.fontsizeformat",{"_index":1839,"name":{},"parent":{"3036":{}}}],["types.fontsizeformat.__type",{"_index":1840,"name":{},"parent":{"3037":{}}}],["types.formatapplier",{"_index":2068,"name":{},"parent":{"3353":{}}}],["types.formathandlertypemap",{"_index":1806,"name":{},"parent":{"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{}}}],["types.formatparser",{"_index":2080,"name":{},"parent":{"3365":{}}}],["types.formatstate",{"_index":681,"name":{},"parent":{"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{}}}],["types.genericcontenteditfeature",{"_index":1018,"name":{},"parent":{"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{}}}],["types.getcontent",{"_index":1069,"name":{},"parent":{"1488":{}}}],["types.getcontentmode",{"_index":289,"name":{},"parent":{"276":{},"277":{},"278":{},"279":{},"280":{}}}],["types.getpendableformatstate",{"_index":1073,"name":{},"parent":{"1496":{}}}],["types.getselectionrange",{"_index":1070,"name":{},"parent":{"1490":{}}}],["types.getselectionrangeex",{"_index":1071,"name":{},"parent":{"1492":{}}}],["types.getstylebasedformatstate",{"_index":1072,"name":{},"parent":{"1494":{}}}],["types.hasfocus",{"_index":1074,"name":{},"parent":{"1498":{}}}],["types.htmlalignformat",{"_index":1885,"name":{},"parent":{"3079":{}}}],["types.htmlalignformat.__type",{"_index":1886,"name":{},"parent":{"3080":{}}}],["types.htmlsanitizeroptions",{"_index":845,"name":{},"parent":{"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{}}}],["types.icontenttraverser",{"_index":727,"name":{},"parent":{"955":{},"956":{},"957":{},"958":{},"959":{},"960":{}}}],["types.idformat",{"_index":1909,"name":{},"parent":{"3103":{}}}],["types.idformat.__type",{"_index":1910,"name":{},"parent":{"3104":{}}}],["types.ieditor",{"_index":949,"name":{},"parent":{"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{}}}],["types.imagecontentmetadata",{"_index":812,"name":{},"parent":{"1055":{},"1056":{},"1057":{}}}],["types.imagecropmetadataformat",{"_index":1962,"name":{},"parent":{"3165":{}}}],["types.imagecropmetadataformat.__type",{"_index":1964,"name":{},"parent":{"3166":{},"3167":{},"3168":{},"3169":{}}}],["types.imageeditoperation",{"_index":344,"name":{},"parent":{"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{}}}],["types.imageeditoptions",{"_index":1198,"name":{},"parent":{"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{}}}],["types.imageresizemetadataformat",{"_index":1957,"name":{},"parent":{"3161":{}}}],["types.imageresizemetadataformat.__type",{"_index":1959,"name":{},"parent":{"3162":{},"3163":{}}}],["types.imagerotatemetadataformat",{"_index":1970,"name":{},"parent":{"3172":{}}}],["types.imagerotatemetadataformat.__type",{"_index":1972,"name":{},"parent":{"3173":{}}}],["types.imageselectionrange",{"_index":1226,"name":{},"parent":{"1720":{},"1721":{},"1722":{},"1723":{}}}],["types.indentation",{"_index":294,"name":{},"parent":{"282":{},"283":{}}}],["types.inlineelement",{"_index":734,"name":{},"parent":{"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{}}}],["types.insertnode",{"_index":1075,"name":{},"parent":{"1500":{}}}],["types.insertoptionbase",{"_index":744,"name":{},"parent":{"973":{},"974":{},"975":{},"976":{}}}],["types.insertoptionbasic",{"_index":750,"name":{},"parent":{"978":{},"979":{},"980":{},"981":{},"982":{}}}],["types.insertoptionrange",{"_index":752,"name":{},"parent":{"984":{},"985":{},"986":{},"987":{},"988":{},"989":{}}}],["types.ipositioncontentsearcher",{"_index":755,"name":{},"parent":{"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{}}}],["types.italicformat",{"_index":1842,"name":{},"parent":{"3039":{}}}],["types.italicformat.__type",{"_index":1843,"name":{},"parent":{"3040":{}}}],["types.keys",{"_index":143,"name":{},"parent":{"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":{}}}],["types.knowncreateelementdataindex",{"_index":358,"name":{},"parent":{"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{}}}],["types.knownentityitem",{"_index":1228,"name":{},"parent":{"1726":{},"1727":{},"1728":{}}}],["types.knownpastesourcetype",{"_index":373,"name":{},"parent":{"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{}}}],["types.leaveshadoweditevent",{"_index":611,"name":{},"parent":{"754":{},"755":{},"756":{}}}],["types.letterspacingformat",{"_index":1845,"name":{},"parent":{"3042":{}}}],["types.letterspacingformat.__type",{"_index":1846,"name":{},"parent":{"3043":{}}}],["types.lifecyclepluginstate",{"_index":58,"name":{},"parent":{"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{}}}],["types.lineheightformat",{"_index":1848,"name":{},"parent":{"3045":{}}}],["types.lineheightformat.__type",{"_index":1849,"name":{},"parent":{"3046":{}}}],["types.linkdata",{"_index":764,"name":{},"parent":{"999":{},"1000":{},"1001":{}}}],["types.linkformat",{"_index":1919,"name":{},"parent":{"3112":{}}}],["types.linkformat.__type",{"_index":1921,"name":{},"parent":{"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{}}}],["types.listfeaturesettings",{"_index":1141,"name":{},"parent":{"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{}}}],["types.listmetadataformat",{"_index":1952,"name":{},"parent":{"3157":{}}}],["types.listmetadataformat.__type",{"_index":1954,"name":{},"parent":{"3158":{},"3159":{}}}],["types.liststylepositionformat",{"_index":1942,"name":{},"parent":{"3136":{}}}],["types.liststylepositionformat.__type",{"_index":1943,"name":{},"parent":{"3137":{}}}],["types.listthreadformat",{"_index":1937,"name":{},"parent":{"3132":{}}}],["types.listthreadformat.__type",{"_index":1939,"name":{},"parent":{"3133":{},"3134":{}}}],["types.listtype",{"_index":303,"name":{},"parent":{"290":{},"291":{},"292":{}}}],["types.marginformat",{"_index":1888,"name":{},"parent":{"3082":{}}}],["types.marginformat.__type",{"_index":1889,"name":{},"parent":{"3083":{},"3084":{},"3085":{},"3086":{}}}],["types.markdownfeaturesettings",{"_index":1143,"name":{},"parent":{"1612":{},"1613":{},"1614":{},"1615":{}}}],["types.modeindependentcolor",{"_index":769,"name":{},"parent":{"1003":{},"1004":{}}}],["types.modeltodomblockandsegmentnode",{"_index":2109,"name":{},"parent":{"3432":{},"3433":{}}}],["types.modeltodomcontext",{"_index":2105,"name":{},"parent":{"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{}}}],["types.modeltodomformatcontext",{"_index":2125,"name":{},"parent":{"3457":{},"3458":{}}}],["types.modeltodomimageselection",{"_index":2116,"name":{},"parent":{"3443":{}}}],["types.modeltodomlistcontext",{"_index":2122,"name":{},"parent":{"3454":{},"3455":{}}}],["types.modeltodomliststackitem",{"_index":2120,"name":{},"parent":{"3449":{},"3450":{},"3451":{},"3452":{}}}],["types.modeltodomoption",{"_index":2138,"name":{},"parent":{"3469":{},"3470":{},"3471":{},"3472":{},"3473":{}}}],["types.modeltodomregularselection",{"_index":2111,"name":{},"parent":{"3435":{},"3436":{},"3437":{}}}],["types.modeltodomselectioncontext",{"_index":2118,"name":{},"parent":{"3445":{},"3446":{},"3447":{}}}],["types.modeltodomsettings",{"_index":2064,"name":{},"parent":{"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{}}}],["types.modeltodomtableselection",{"_index":2114,"name":{},"parent":{"3439":{},"3440":{},"3441":{}}}],["types.nodeposition",{"_index":773,"name":{},"parent":{"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{}}}],["types.nodetype",{"_index":180,"name":{},"parent":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{}}}],["types.normalcontentmetadata",{"_index":804,"name":{},"parent":{"1044":{},"1045":{},"1046":{},"1047":{}}}],["types.normalselectionrange",{"_index":1223,"name":{},"parent":{"1709":{},"1710":{},"1711":{}}}],["types.numberdefinition",{"_index":1258,"name":{},"parent":{"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{}}}],["types.numberinglisttype",{"_index":420,"name":{},"parent":{"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{}}}],["types.objectdefinition",{"_index":1270,"name":{},"parent":{"1780":{},"1781":{},"1782":{},"1783":{}}}],["types.onnodecreated",{"_index":2061,"name":{},"parent":{"3344":{}}}],["types.paddingformat",{"_index":1893,"name":{},"parent":{"3088":{}}}],["types.paddingformat.__type",{"_index":1895,"name":{},"parent":{"3089":{},"3090":{},"3091":{},"3092":{}}}],["types.pastetype",{"_index":462,"name":{},"parent":{"446":{},"447":{},"448":{},"449":{}}}],["types.pendableformatstate",{"_index":709,"name":{},"parent":{"903":{},"904":{},"905":{},"906":{},"907":{},"908":{}}}],["types.pendingformatstatechangedevent",{"_index":543,"name":{},"parent":{"612":{},"613":{},"614":{},"615":{},"616":{},"617":{}}}],["types.pendingformatstatepluginstate",{"_index":71,"name":{},"parent":{"65":{},"66":{},"67":{}}}],["types.pickerdataprovider",{"_index":1170,"name":{},"parent":{"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{}}}],["types.pickerpluginoptions",{"_index":1183,"name":{},"parent":{"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{}}}],["types.plugincompositionevent",{"_index":551,"name":{},"parent":{"632":{},"633":{},"634":{},"635":{}}}],["types.plugincontextmenuevent",{"_index":554,"name":{},"parent":{"637":{},"638":{},"639":{},"640":{},"641":{}}}],["types.plugincontextmenueventdata",{"_index":599,"name":{},"parent":{"739":{}}}],["types.plugindomeventbase",{"_index":549,"name":{},"parent":{"627":{},"628":{},"629":{},"630":{}}}],["types.plugineventtype",{"_index":393,"name":{},"parent":{"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{}}}],["types.plugininputevent",{"_index":570,"name":{},"parent":{"672":{},"673":{},"674":{},"675":{}}}],["types.pluginkeydownevent",{"_index":558,"name":{},"parent":{"644":{},"645":{},"646":{},"647":{},"648":{}}}],["types.pluginkeydowneventdata",{"_index":601,"name":{},"parent":{"741":{}}}],["types.pluginkeypressevent",{"_index":560,"name":{},"parent":{"650":{},"651":{},"652":{},"653":{}}}],["types.pluginkeyupevent",{"_index":562,"name":{},"parent":{"655":{},"656":{},"657":{},"658":{}}}],["types.pluginmousedownevent",{"_index":565,"name":{},"parent":{"661":{},"662":{},"663":{},"664":{}}}],["types.pluginmouseupevent",{"_index":568,"name":{},"parent":{"666":{},"667":{},"668":{},"669":{},"670":{}}}],["types.pluginmouseupeventdata",{"_index":597,"name":{},"parent":{"737":{}}}],["types.pluginscrollevent",{"_index":572,"name":{},"parent":{"677":{},"678":{},"679":{},"680":{},"681":{}}}],["types.pluginscrolleventdata",{"_index":595,"name":{},"parent":{"735":{}}}],["types.pluginwithstate",{"_index":1029,"name":{},"parent":{"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{}}}],["types.positiontype",{"_index":307,"name":{},"parent":{"294":{},"295":{},"296":{},"297":{}}}],["types.queryscope",{"_index":312,"name":{},"parent":{"299":{},"300":{},"301":{}}}],["types.quotefeaturesettings",{"_index":1145,"name":{},"parent":{"1617":{},"1618":{}}}],["types.rect",{"_index":781,"name":{},"parent":{"1015":{},"1016":{},"1017":{},"1018":{}}}],["types.region",{"_index":785,"name":{},"parent":{"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{}}}],["types.regionbase",{"_index":792,"name":{},"parent":{"1027":{},"1028":{},"1029":{},"1030":{}}}],["types.regiontype",{"_index":317,"name":{},"parent":{"303":{}}}],["types.restoreundosnapshot",{"_index":1076,"name":{},"parent":{"1502":{}}}],["types.sanitizehtmloptions",{"_index":858,"name":{},"parent":{"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{}}}],["types.select",{"_index":1077,"name":{},"parent":{"1504":{}}}],["types.selectable",{"_index":2046,"name":{},"parent":{"3322":{}}}],["types.selectimage",{"_index":1084,"name":{},"parent":{"1518":{}}}],["types.selectionchangedevent",{"_index":628,"name":{},"parent":{"786":{},"787":{},"788":{},"789":{}}}],["types.selectionchangedeventdata",{"_index":630,"name":{},"parent":{"791":{}}}],["types.selectionpath",{"_index":794,"name":{},"parent":{"1032":{},"1033":{}}}],["types.selectionrangeexbase",{"_index":1219,"name":{},"parent":{"1705":{},"1706":{},"1707":{}}}],["types.selectionrangetypes",{"_index":416,"name":{},"parent":{"400":{},"401":{},"402":{}}}],["types.selectrange",{"_index":1078,"name":{},"parent":{"1506":{}}}],["types.selecttable",{"_index":1083,"name":{},"parent":{"1516":{}}}],["types.setcontent",{"_index":1079,"name":{},"parent":{"1508":{}}}],["types.shortcutfeaturesettings",{"_index":1147,"name":{},"parent":{"1620":{}}}],["types.sizeformat",{"_index":1929,"name":{},"parent":{"3121":{}}}],["types.sizeformat.__type",{"_index":1930,"name":{},"parent":{"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{}}}],["types.sizetransformer",{"_index":1249,"name":{},"parent":{"1749":{}}}],["types.snapshot",{"_index":815,"name":{},"parent":{"1060":{},"1061":{},"1062":{},"1063":{}}}],["types.snapshots",{"_index":796,"name":{},"parent":{"1035":{},"1036":{},"1037":{},"1038":{},"1039":{}}}],["types.spacingformat",{"_index":1912,"name":{},"parent":{"3106":{}}}],["types.spacingformat.__type",{"_index":1914,"name":{},"parent":{"3107":{}}}],["types.strikeformat",{"_index":1851,"name":{},"parent":{"3048":{}}}],["types.strikeformat.__type",{"_index":1852,"name":{},"parent":{"3049":{}}}],["types.stringdefinition",{"_index":1256,"name":{},"parent":{"1756":{},"1757":{},"1758":{},"1759":{}}}],["types.structurednodefeaturesettings",{"_index":1149,"name":{},"parent":{"1622":{}}}],["types.stylebasedformatstate",{"_index":713,"name":{},"parent":{"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{}}}],["types.superorsubscriptformat",{"_index":1854,"name":{},"parent":{"3051":{}}}],["types.superorsubscriptformat.__type",{"_index":1856,"name":{},"parent":{"3052":{}}}],["types.switchshadowedit",{"_index":1080,"name":{},"parent":{"1510":{}}}],["types.tableborderformat",{"_index":382,"name":{},"parent":{"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{}}}],["types.tablecellmetadataformat",{"_index":835,"name":{},"parent":{"1083":{}}}],["types.tablecellmetadataformat.__type",{"_index":837,"name":{},"parent":{"1084":{},"1085":{}}}],["types.tablecontentmetadata",{"_index":807,"name":{},"parent":{"1049":{},"1050":{},"1051":{},"1052":{},"1053":{}}}],["types.tablefeaturesettings",{"_index":1151,"name":{},"parent":{"1624":{},"1625":{},"1626":{},"1627":{}}}],["types.tableformat",{"_index":822,"name":{},"parent":{"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{}}}],["types.tablelayoutformat",{"_index":1916,"name":{},"parent":{"3109":{}}}],["types.tablelayoutformat.__type",{"_index":1917,"name":{},"parent":{"3110":{}}}],["types.tablemetadataformat",{"_index":1949,"name":{},"parent":{"3143":{}}}],["types.tablemetadataformat.__type",{"_index":1950,"name":{},"parent":{"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{}}}],["types.tableoperation",{"_index":320,"name":{},"parent":{"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{}}}],["types.tableselection",{"_index":839,"name":{},"parent":{"1087":{},"1088":{}}}],["types.tableselectionrange",{"_index":1224,"name":{},"parent":{"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{}}}],["types.targetwindow",{"_index":945,"name":{},"parent":{"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{}}}],["types.targetwindowbase",{"_index":861,"name":{},"parent":{"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{}}}],["types.textalignformat",{"_index":1900,"name":{},"parent":{"3094":{}}}],["types.textalignformat.__type",{"_index":1901,"name":{},"parent":{"3095":{}}}],["types.textcolorformat",{"_index":1858,"name":{},"parent":{"3054":{}}}],["types.textcolorformat.__type",{"_index":1859,"name":{},"parent":{"3055":{}}}],["types.textfeaturesettings",{"_index":1153,"name":{},"parent":{"1629":{},"1630":{},"1631":{}}}],["types.transformcolor",{"_index":1081,"name":{},"parent":{"1512":{}}}],["types.triggerevent",{"_index":1082,"name":{},"parent":{"1514":{}}}],["types.trustedhtmlhandler",{"_index":1248,"name":{},"parent":{"1747":{}}}],["types.underlineformat",{"_index":1861,"name":{},"parent":{"3057":{}}}],["types.underlineformat.__type",{"_index":1862,"name":{},"parent":{"3058":{}}}],["types.undopluginstate",{"_index":76,"name":{},"parent":{"69":{},"70":{},"71":{},"72":{},"73":{}}}],["types.undosnapshotsservice",{"_index":1164,"name":{},"parent":{"1642":{},"1643":{},"1644":{},"1645":{},"1646":{}}}],["types.vcell",{"_index":1191,"name":{},"parent":{"1679":{},"1680":{},"1681":{},"1682":{},"1683":{}}}],["types.verticalalignformat",{"_index":1868,"name":{},"parent":{"3063":{}}}],["types.verticalalignformat.__type",{"_index":1869,"name":{},"parent":{"3064":{}}}],["types.whitespaceformat",{"_index":1903,"name":{},"parent":{"3097":{}}}],["types.whitespaceformat.__type",{"_index":1904,"name":{},"parent":{"3098":{}}}],["types.wordbreakformat",{"_index":1871,"name":{},"parent":{"3066":{}}}],["types.wordbreakformat.__type",{"_index":1872,"name":{},"parent":{"3067":{}}}],["types.zoomchangedevent",{"_index":620,"name":{},"parent":{"771":{},"772":{},"773":{},"774":{},"775":{}}}],["types.zoomchangedeventdata",{"_index":623,"name":{},"parent":{"777":{},"778":{}}}],["u",{"_index":164,"name":{"154":{},"2015":{}},"parent":{}}],["uiutilities",{"_index":1630,"name":{"2724":{}},"parent":{}}],["underline",{"_index":129,"name":{"120":{},"860":{},"1911":{},"2839":{},"3021":{},"3058":{}},"parent":{}}],["underlinebuttonstringkey",{"_index":1697,"name":{"2871":{}},"parent":{}}],["underlineformat",{"_index":1860,"name":{"3056":{}},"parent":{}}],["undo",{"_index":130,"name":{"121":{},"1332":{},"1419":{},"1449":{},"1912":{},"2463":{},"2529":{},"2865":{},"3622":{},"3704":{},"3880":{}},"parent":{}}],["undobuttonstringkey",{"_index":1725,"name":{"2899":{}},"parent":{}}],["undometadatasnapshotservice",{"_index":1088,"name":{"1523":{},"2748":{},"3745":{}},"parent":{}}],["undopluginstate",{"_index":74,"name":{"68":{}},"parent":{}}],["undosnapshotservice",{"_index":1087,"name":{"1522":{},"2747":{},"3744":{}},"parent":{}}],["undosnapshotsservice",{"_index":1162,"name":{"1641":{}},"parent":{}}],["unfilledarrow",{"_index":449,"name":{"433":{},"1805":{}},"parent":{}}],["unknowntagreplacement",{"_index":855,"name":{"1103":{},"1117":{}},"parent":{}}],["unlink",{"_index":131,"name":{"122":{},"1913":{}},"parent":{}}],["unlinkwhenbackspaceafterlink",{"_index":1116,"name":{"1565":{},"1586":{}},"parent":{}}],["unlocalizedlabel",{"_index":1766,"name":{"2947":{}},"parent":{}}],["unlocalizedtext",{"_index":1664,"name":{"2814":{},"2915":{}},"parent":{}}],["unordered",{"_index":305,"name":{"292":{},"2056":{}},"parent":{}}],["unorderedstyletype",{"_index":1955,"name":{"3159":{}},"parent":{}}],["unquotewhenbackspaceonemptyfirstline",{"_index":1110,"name":{"1557":{},"1617":{}},"parent":{}}],["unquotewhenenteronemptyline",{"_index":1111,"name":{"1558":{},"1618":{}},"parent":{}}],["unwrap",{"_index":1401,"name":{"2271":{}},"parent":{}}],["unwrapblock",{"_index":2187,"name":{"3518":{}},"parent":{}}],["up",{"_index":156,"name":{"145":{},"2006":{}},"parent":{}}],["updatecontentplugin",{"_index":1649,"name":{"2775":{}},"parent":{}}],["updatecursor",{"_index":743,"name":{"973":{},"979":{},"986":{}},"parent":{}}],["updateentitystate",{"_index":252,"name":{"240":{},"1939":{}},"parent":{}}],["updateimagemetadata",{"_index":2294,"name":{"3950":{}},"parent":{}}],["updatelistmetadata",{"_index":2154,"name":{"3486":{}},"parent":{}}],["updatemetadata",{"_index":2152,"name":{"3484":{}},"parent":{}}],["updatemode",{"_index":1643,"name":{"2768":{}},"parent":{}}],["updatereplacements",{"_index":1590,"name":{"2629":{}},"parent":{}}],["updatetablecellmetadata",{"_index":2295,"name":{"3951":{}},"parent":{}}],["updatetablemetadata",{"_index":2296,"name":{"3952":{}},"parent":{}}],["updownintable",{"_index":1113,"name":{"1560":{},"1625":{}},"parent":{}}],["upperalpha",{"_index":429,"name":{"413":{},"2076":{}},"parent":{}}],["upperalphadash",{"_index":432,"name":{"416":{},"2079":{}},"parent":{}}],["upperalphadoubleparenthesis",{"_index":431,"name":{"415":{},"2078":{}},"parent":{}}],["upperalphaparenthesis",{"_index":430,"name":{"414":{},"2077":{}},"parent":{}}],["uppercase",{"_index":299,"name":{"287":{},"1813":{}},"parent":{}}],["upperroman",{"_index":437,"name":{"421":{},"2084":{}},"parent":{}}],["upperromandash",{"_index":440,"name":{"424":{},"2087":{}},"parent":{}}],["upperromandoubleparenthesis",{"_index":439,"name":{"423":{},"2086":{}},"parent":{}}],["upperromanparenthesis",{"_index":438,"name":{"422":{},"2085":{}},"parent":{}}],["url",{"_index":33,"name":{"31":{}},"parent":{}}],["useborderbox",{"_index":1865,"name":{"3061":{}},"parent":{}}],["utils",{"_index":9,"name":{"6":{}},"parent":{"2719":{}}}],["validate",{"_index":1524,"name":{"2420":{}},"parent":{}}],["validator",{"_index":1273,"name":{"1786":{}},"parent":{}}],["valignoverride",{"_index":838,"name":{"1085":{}},"parent":{}}],["value",{"_index":664,"name":{"844":{},"1756":{},"1761":{},"1768":{}},"parent":{}}],["variablebaseddarkcolor",{"_index":270,"name":{"259":{},"1958":{}},"parent":{}}],["vcell",{"_index":1189,"name":{"1678":{}},"parent":{}}],["verticalalign",{"_index":833,"name":{"1081":{},"3022":{},"3064":{},"3155":{}},"parent":{}}],["verticalalignformat",{"_index":1867,"name":{"3062":{}},"parent":{}}],["verticalbordercolor",{"_index":824,"name":{"1071":{},"3146":{}},"parent":{}}],["vlist",{"_index":1436,"name":{"2310":{}},"parent":{}}],["vlistchain",{"_index":1464,"name":{"2346":{}},"parent":{}}],["vlistitem",{"_index":1449,"name":{"2326":{}},"parent":{}}],["vtable",{"_index":1420,"name":{"2290":{}},"parent":{}}],["waccomponents",{"_index":378,"name":{"361":{},"2050":{}},"parent":{}}],["watermark",{"_index":1620,"name":{"2701":{}},"parent":{}}],["whitespace",{"_index":1825,"name":{"3023":{},"3098":{}},"parent":{}}],["whitespaceformat",{"_index":1902,"name":{"3096":{}},"parent":{}}],["width",{"_index":1194,"name":{"1682":{},"3122":{},"3573":{}},"parent":{}}],["widthpx",{"_index":1958,"name":{"3162":{}},"parent":{}}],["widths",{"_index":1986,"name":{"3187":{}},"parent":{}}],["willhandleeventexclusively",{"_index":662,"name":{"839":{},"1401":{},"1413":{},"2693":{},"2735":{},"2784":{},"2806":{}},"parent":{}}],["wordbreak",{"_index":1826,"name":{"3024":{},"3067":{}},"parent":{}}],["wordbreakformat",{"_index":1870,"name":{"3065":{}},"parent":{}}],["worddesktop",{"_index":372,"name":{"356":{},"2045":{}},"parent":{}}],["wrap",{"_index":1402,"name":{"2272":{}},"parent":{}}],["wrapper",{"_index":679,"name":{"864":{},"3211":{}},"parent":{}}],["wrapperdisplay",{"_index":2257,"name":{"3795":{}},"parent":{}}],["writeback",{"_index":1427,"name":{"2298":{},"2316":{},"2344":{}},"parent":{}}],["x",{"_index":841,"name":{"1090":{}},"parent":{}}],["xmldocument",{"_index":937,"name":{"1200":{},"1294":{}},"parent":{}}],["y",{"_index":165,"name":{"155":{},"1091":{},"2016":{}},"parent":{}}],["z",{"_index":166,"name":{"156":{},"2017":{}},"parent":{}}],["zerofontsize",{"_index":2010,"name":{"3230":{}},"parent":{}}],["zoomchanged",{"_index":411,"name":{"396":{},"2116":{}},"parent":{}}],["zoomchangedevent",{"_index":618,"name":{"770":{}},"parent":{}}],["zoomchangedeventdata",{"_index":622,"name":{"776":{}},"parent":{}}],["zoomscale",{"_index":682,"name":{"868":{},"1442":{},"1538":{},"2763":{},"3371":{},"3397":{},"3417":{},"3532":{},"3615":{},"3760":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +window.searchData = {"kinds":{"1":"Module","4":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":1,"name":"roosterjs-editor-types","url":"modules/roosterjs_editor_types.html","classes":"tsd-kind-module"},{"id":1,"kind":1,"name":"roosterjs-editor-types-compatible","url":"modules/roosterjs_editor_types_compatible.html","classes":"tsd-kind-module"},{"id":2,"kind":1,"name":"roosterjs-editor-dom","url":"modules/roosterjs_editor_dom.html","classes":"tsd-kind-module"},{"id":3,"kind":1,"name":"roosterjs-editor-core","url":"modules/roosterjs_editor_core.html","classes":"tsd-kind-module"},{"id":4,"kind":1,"name":"roosterjs-editor-api","url":"modules/roosterjs_editor_api.html","classes":"tsd-kind-module"},{"id":5,"kind":1,"name":"roosterjs-editor-plugins","url":"modules/roosterjs_editor_plugins.html","classes":"tsd-kind-module"},{"id":6,"kind":1,"name":"roosterjs-color-utils","url":"modules/roosterjs_color_utils.html","classes":"tsd-kind-module"},{"id":7,"kind":1,"name":"roosterjs-react","url":"modules/roosterjs_react.html","classes":"tsd-kind-module"},{"id":8,"kind":1,"name":"roosterjs","url":"modules/roosterjs.html","classes":"tsd-kind-module"},{"id":9,"kind":1,"name":"roosterjs-content-model-types","url":"modules/roosterjs_content_model_types.html","classes":"tsd-kind-module"},{"id":10,"kind":1,"name":"roosterjs-content-model-dom","url":"modules/roosterjs_content_model_dom.html","classes":"tsd-kind-module"},{"id":11,"kind":1,"name":"roosterjs-content-model-editor","url":"modules/roosterjs_content_model_editor.html","classes":"tsd-kind-module"},{"id":12,"kind":1,"name":"roosterjs-content-model","url":"modules/roosterjs_content_model.html","classes":"tsd-kind-module"},{"id":13,"kind":256,"name":"BrowserInfo","url":"interfaces/roosterjs_editor_types.browserinfo.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":14,"kind":1024,"name":"isMac","url":"interfaces/roosterjs_editor_types.browserinfo.html#ismac","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":15,"kind":1024,"name":"isWin","url":"interfaces/roosterjs_editor_types.browserinfo.html#iswin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":16,"kind":1024,"name":"isWebKit","url":"interfaces/roosterjs_editor_types.browserinfo.html#iswebkit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":17,"kind":1024,"name":"isIE","url":"interfaces/roosterjs_editor_types.browserinfo.html#isie","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":18,"kind":1024,"name":"isIE11OrGreater","url":"interfaces/roosterjs_editor_types.browserinfo.html#isie11orgreater","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":19,"kind":1024,"name":"isSafari","url":"interfaces/roosterjs_editor_types.browserinfo.html#issafari","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":20,"kind":1024,"name":"isChrome","url":"interfaces/roosterjs_editor_types.browserinfo.html#ischrome","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":21,"kind":1024,"name":"isFirefox","url":"interfaces/roosterjs_editor_types.browserinfo.html#isfirefox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":22,"kind":1024,"name":"isEdge","url":"interfaces/roosterjs_editor_types.browserinfo.html#isedge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":23,"kind":1024,"name":"isIEOrEdge","url":"interfaces/roosterjs_editor_types.browserinfo.html#isieoredge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":24,"kind":1024,"name":"isAndroid","url":"interfaces/roosterjs_editor_types.browserinfo.html#isandroid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":25,"kind":1024,"name":"isMobileOrTablet","url":"interfaces/roosterjs_editor_types.browserinfo.html#ismobileortablet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BrowserInfo"},{"id":26,"kind":256,"name":"EdgeLinkPreview","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":27,"kind":1024,"name":"domain","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#domain","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":28,"kind":1024,"name":"preferred_format","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#preferred_format","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":29,"kind":1024,"name":"title","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":30,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":31,"kind":1024,"name":"url","url":"interfaces/roosterjs_editor_types.edgelinkpreview.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EdgeLinkPreview"},{"id":32,"kind":256,"name":"DOMEventPluginState","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":33,"kind":1024,"name":"isInIME","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#isinime","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":34,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":35,"kind":1024,"name":"selectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#selectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":36,"kind":1024,"name":"tableSelectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#tableselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":37,"kind":1024,"name":"stopPrintableKeyboardEventPropagation","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#stopprintablekeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":38,"kind":1024,"name":"contextMenuProviders","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#contextmenuproviders","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":39,"kind":1024,"name":"imageSelectionRange","url":"interfaces/roosterjs_editor_types.domeventpluginstate.html#imageselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventPluginState"},{"id":40,"kind":256,"name":"EditPluginState","url":"interfaces/roosterjs_editor_types.editpluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":41,"kind":1024,"name":"features","url":"interfaces/roosterjs_editor_types.editpluginstate.html#features","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditPluginState"},{"id":42,"kind":256,"name":"EntityPluginState","url":"interfaces/roosterjs_editor_types.entitypluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":43,"kind":1024,"name":"clickingPoint","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#clickingpoint","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":44,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":45,"kind":1024,"name":"pageX","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type.pagex","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.EntityPluginState.__type"},{"id":46,"kind":1024,"name":"pageY","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#__type.pagey","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.EntityPluginState.__type"},{"id":47,"kind":1024,"name":"knownEntityElements","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#knownentityelements","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":48,"kind":1024,"name":"shadowEntityCache","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#shadowentitycache","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":49,"kind":1024,"name":"entityMap","url":"interfaces/roosterjs_editor_types.entitypluginstate.html#entitymap","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityPluginState"},{"id":50,"kind":256,"name":"LifecyclePluginState","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":51,"kind":1024,"name":"customData","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#customdata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":52,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":53,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":54,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":55,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":56,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":57,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":58,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":59,"kind":1024,"name":"shadowEditFragment","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditfragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":60,"kind":1024,"name":"shadowEditEntities","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditentities","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":61,"kind":1024,"name":"shadowEditSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":62,"kind":1024,"name":"shadowEditTableSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadowedittableselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":63,"kind":1024,"name":"shadowEditImageSelectionPath","url":"interfaces/roosterjs_editor_types.lifecyclepluginstate.html#shadoweditimageselectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LifecyclePluginState"},{"id":64,"kind":256,"name":"PendingFormatStatePluginState","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":65,"kind":1024,"name":"pendableFormatState","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":66,"kind":1024,"name":"pendableFormatPosition","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":67,"kind":1024,"name":"pendableFormatSpan","url":"interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html#pendableformatspan","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStatePluginState"},{"id":68,"kind":256,"name":"UndoPluginState","url":"interfaces/roosterjs_editor_types.undopluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":69,"kind":1024,"name":"snapshotsService","url":"interfaces/roosterjs_editor_types.undopluginstate.html#snapshotsservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":70,"kind":1024,"name":"isRestoring","url":"interfaces/roosterjs_editor_types.undopluginstate.html#isrestoring","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":71,"kind":1024,"name":"hasNewContent","url":"interfaces/roosterjs_editor_types.undopluginstate.html#hasnewcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":72,"kind":1024,"name":"isNested","url":"interfaces/roosterjs_editor_types.undopluginstate.html#isnested","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":73,"kind":1024,"name":"autoCompletePosition","url":"interfaces/roosterjs_editor_types.undopluginstate.html#autocompleteposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoPluginState"},{"id":74,"kind":256,"name":"CopyPastePluginState","url":"interfaces/roosterjs_editor_types.copypastepluginstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":75,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.copypastepluginstate.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CopyPastePluginState"},{"id":76,"kind":4,"name":"DocumentCommand","url":"enums/roosterjs_editor_types.documentcommand.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":77,"kind":16,"name":"AutoUrlDetect","url":"enums/roosterjs_editor_types.documentcommand.html#autourldetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":78,"kind":16,"name":"BackColor","url":"enums/roosterjs_editor_types.documentcommand.html#backcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":79,"kind":16,"name":"Bold","url":"enums/roosterjs_editor_types.documentcommand.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":80,"kind":16,"name":"ClearAuthenticationCache","url":"enums/roosterjs_editor_types.documentcommand.html#clearauthenticationcache","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":81,"kind":16,"name":"ContentReadOnly","url":"enums/roosterjs_editor_types.documentcommand.html#contentreadonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":82,"kind":16,"name":"Copy","url":"enums/roosterjs_editor_types.documentcommand.html#copy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":83,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types.documentcommand.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":84,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types.documentcommand.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":85,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_editor_types.documentcommand.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":86,"kind":16,"name":"DefaultParagraphSeparator","url":"enums/roosterjs_editor_types.documentcommand.html#defaultparagraphseparator","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":87,"kind":16,"name":"Delete","url":"enums/roosterjs_editor_types.documentcommand.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":88,"kind":16,"name":"EnableInlineTableEditing","url":"enums/roosterjs_editor_types.documentcommand.html#enableinlinetableediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":89,"kind":16,"name":"EnableObjectResizing","url":"enums/roosterjs_editor_types.documentcommand.html#enableobjectresizing","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":90,"kind":16,"name":"FontName","url":"enums/roosterjs_editor_types.documentcommand.html#fontname","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":91,"kind":16,"name":"FontSize","url":"enums/roosterjs_editor_types.documentcommand.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":92,"kind":16,"name":"ForeColor","url":"enums/roosterjs_editor_types.documentcommand.html#forecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":93,"kind":16,"name":"FormatBlock","url":"enums/roosterjs_editor_types.documentcommand.html#formatblock","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":94,"kind":16,"name":"ForwardDelete","url":"enums/roosterjs_editor_types.documentcommand.html#forwarddelete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":95,"kind":16,"name":"Heading","url":"enums/roosterjs_editor_types.documentcommand.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":96,"kind":16,"name":"HiliteColor","url":"enums/roosterjs_editor_types.documentcommand.html#hilitecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":97,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_editor_types.documentcommand.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":98,"kind":16,"name":"Indent","url":"enums/roosterjs_editor_types.documentcommand.html#indent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":99,"kind":16,"name":"InsertBrOnReturn","url":"enums/roosterjs_editor_types.documentcommand.html#insertbronreturn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":100,"kind":16,"name":"InsertHorizontalRule","url":"enums/roosterjs_editor_types.documentcommand.html#inserthorizontalrule","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":101,"kind":16,"name":"InsertHTML","url":"enums/roosterjs_editor_types.documentcommand.html#inserthtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":102,"kind":16,"name":"InsertImage","url":"enums/roosterjs_editor_types.documentcommand.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":103,"kind":16,"name":"InsertOrderedList","url":"enums/roosterjs_editor_types.documentcommand.html#insertorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":104,"kind":16,"name":"InsertUnorderedList","url":"enums/roosterjs_editor_types.documentcommand.html#insertunorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":105,"kind":16,"name":"InsertParagraph","url":"enums/roosterjs_editor_types.documentcommand.html#insertparagraph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":106,"kind":16,"name":"InsertText","url":"enums/roosterjs_editor_types.documentcommand.html#inserttext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":107,"kind":16,"name":"Italic","url":"enums/roosterjs_editor_types.documentcommand.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":108,"kind":16,"name":"JustifyCenter","url":"enums/roosterjs_editor_types.documentcommand.html#justifycenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":109,"kind":16,"name":"JustifyFull","url":"enums/roosterjs_editor_types.documentcommand.html#justifyfull","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":110,"kind":16,"name":"JustifyLeft","url":"enums/roosterjs_editor_types.documentcommand.html#justifyleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":111,"kind":16,"name":"JustifyRight","url":"enums/roosterjs_editor_types.documentcommand.html#justifyright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":112,"kind":16,"name":"Outdent","url":"enums/roosterjs_editor_types.documentcommand.html#outdent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":113,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types.documentcommand.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":114,"kind":16,"name":"Redo","url":"enums/roosterjs_editor_types.documentcommand.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":115,"kind":16,"name":"RemoveFormat","url":"enums/roosterjs_editor_types.documentcommand.html#removeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":116,"kind":16,"name":"SelectAll","url":"enums/roosterjs_editor_types.documentcommand.html#selectall","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":117,"kind":16,"name":"StrikeThrough","url":"enums/roosterjs_editor_types.documentcommand.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":118,"kind":16,"name":"Subscript","url":"enums/roosterjs_editor_types.documentcommand.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":119,"kind":16,"name":"Superscript","url":"enums/roosterjs_editor_types.documentcommand.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":120,"kind":16,"name":"Underline","url":"enums/roosterjs_editor_types.documentcommand.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":121,"kind":16,"name":"Undo","url":"enums/roosterjs_editor_types.documentcommand.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":122,"kind":16,"name":"Unlink","url":"enums/roosterjs_editor_types.documentcommand.html#unlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":123,"kind":16,"name":"StyleWithCSS","url":"enums/roosterjs_editor_types.documentcommand.html#stylewithcss","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentCommand"},{"id":124,"kind":4,"name":"DocumentPosition","url":"enums/roosterjs_editor_types.documentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":125,"kind":16,"name":"Same","url":"enums/roosterjs_editor_types.documentposition.html#same","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":126,"kind":16,"name":"Disconnected","url":"enums/roosterjs_editor_types.documentposition.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":127,"kind":16,"name":"Preceding","url":"enums/roosterjs_editor_types.documentposition.html#preceding","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":128,"kind":16,"name":"Following","url":"enums/roosterjs_editor_types.documentposition.html#following","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":129,"kind":16,"name":"Contains","url":"enums/roosterjs_editor_types.documentposition.html#contains","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":130,"kind":16,"name":"ContainedBy","url":"enums/roosterjs_editor_types.documentposition.html#containedby","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DocumentPosition"},{"id":131,"kind":4,"name":"Keys","url":"enums/roosterjs_editor_types.keys.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":132,"kind":16,"name":"NULL","url":"enums/roosterjs_editor_types.keys.html#null","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":133,"kind":16,"name":"BACKSPACE","url":"enums/roosterjs_editor_types.keys.html#backspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":134,"kind":16,"name":"TAB","url":"enums/roosterjs_editor_types.keys.html#tab","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":135,"kind":16,"name":"ENTER","url":"enums/roosterjs_editor_types.keys.html#enter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":136,"kind":16,"name":"SHIFT","url":"enums/roosterjs_editor_types.keys.html#shift","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":137,"kind":16,"name":"CTRL_LEFT","url":"enums/roosterjs_editor_types.keys.html#ctrl_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":138,"kind":16,"name":"ALT","url":"enums/roosterjs_editor_types.keys.html#alt","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":139,"kind":16,"name":"ESCAPE","url":"enums/roosterjs_editor_types.keys.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":140,"kind":16,"name":"SPACE","url":"enums/roosterjs_editor_types.keys.html#space","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":141,"kind":16,"name":"PAGEUP","url":"enums/roosterjs_editor_types.keys.html#pageup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":142,"kind":16,"name":"END","url":"enums/roosterjs_editor_types.keys.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":143,"kind":16,"name":"HOME","url":"enums/roosterjs_editor_types.keys.html#home","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":144,"kind":16,"name":"LEFT","url":"enums/roosterjs_editor_types.keys.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":145,"kind":16,"name":"UP","url":"enums/roosterjs_editor_types.keys.html#up","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":146,"kind":16,"name":"RIGHT","url":"enums/roosterjs_editor_types.keys.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":147,"kind":16,"name":"DOWN","url":"enums/roosterjs_editor_types.keys.html#down","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":148,"kind":16,"name":"PRINT_SCREEN","url":"enums/roosterjs_editor_types.keys.html#print_screen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":149,"kind":16,"name":"DELETE","url":"enums/roosterjs_editor_types.keys.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":150,"kind":16,"name":"EIGHT_ASTIRISK","url":"enums/roosterjs_editor_types.keys.html#eight_astirisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":151,"kind":16,"name":"EIGHT_ASTERISK","url":"enums/roosterjs_editor_types.keys.html#eight_asterisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":152,"kind":16,"name":"B","url":"enums/roosterjs_editor_types.keys.html#b","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":153,"kind":16,"name":"I","url":"enums/roosterjs_editor_types.keys.html#i","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":154,"kind":16,"name":"U","url":"enums/roosterjs_editor_types.keys.html#u","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":155,"kind":16,"name":"Y","url":"enums/roosterjs_editor_types.keys.html#y","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":156,"kind":16,"name":"Z","url":"enums/roosterjs_editor_types.keys.html#z","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":157,"kind":16,"name":"META_LEFT","url":"enums/roosterjs_editor_types.keys.html#meta_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":158,"kind":16,"name":"COMMA","url":"enums/roosterjs_editor_types.keys.html#comma","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":159,"kind":16,"name":"DASH_UNDERSCORE","url":"enums/roosterjs_editor_types.keys.html#dash_underscore","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":160,"kind":16,"name":"PERIOD","url":"enums/roosterjs_editor_types.keys.html#period","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":161,"kind":16,"name":"FORWARDSLASH","url":"enums/roosterjs_editor_types.keys.html#forwardslash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":162,"kind":16,"name":"FORWARD_SLASH","url":"enums/roosterjs_editor_types.keys.html#forward_slash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":163,"kind":16,"name":"GRAVE_TILDE","url":"enums/roosterjs_editor_types.keys.html#grave_tilde","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":164,"kind":16,"name":"CONTENTCHANGED","url":"enums/roosterjs_editor_types.keys.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":165,"kind":16,"name":"RANGE","url":"enums/roosterjs_editor_types.keys.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":166,"kind":16,"name":"Ctrl","url":"enums/roosterjs_editor_types.keys.html#ctrl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":167,"kind":16,"name":"Meta","url":"enums/roosterjs_editor_types.keys.html#meta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":168,"kind":16,"name":"Shift","url":"enums/roosterjs_editor_types.keys.html#shift-1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Keys"},{"id":169,"kind":4,"name":"NodeType","url":"enums/roosterjs_editor_types.nodetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":170,"kind":16,"name":"Element","url":"enums/roosterjs_editor_types.nodetype.html#element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":171,"kind":16,"name":"Attribute","url":"enums/roosterjs_editor_types.nodetype.html#attribute","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":172,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types.nodetype.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":173,"kind":16,"name":"ProcessingInstruction","url":"enums/roosterjs_editor_types.nodetype.html#processinginstruction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":174,"kind":16,"name":"Comment","url":"enums/roosterjs_editor_types.nodetype.html#comment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":175,"kind":16,"name":"Document","url":"enums/roosterjs_editor_types.nodetype.html#document","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":176,"kind":16,"name":"DocumentType","url":"enums/roosterjs_editor_types.nodetype.html#documenttype","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":177,"kind":16,"name":"DocumentFragment","url":"enums/roosterjs_editor_types.nodetype.html#documentfragment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NodeType"},{"id":178,"kind":4,"name":"ContentTypePrefix","url":"enums/roosterjs_editor_types.contenttypeprefix.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":179,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types.contenttypeprefix.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentTypePrefix"},{"id":180,"kind":16,"name":"Image","url":"enums/roosterjs_editor_types.contenttypeprefix.html#image","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentTypePrefix"},{"id":181,"kind":4,"name":"ContentType","url":"enums/roosterjs_editor_types.contenttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":182,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types.contenttype.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentType"},{"id":183,"kind":16,"name":"HTML","url":"enums/roosterjs_editor_types.contenttype.html#html","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentType"},{"id":184,"kind":4,"name":"Alignment","url":"enums/roosterjs_editor_types.alignment.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":185,"kind":16,"name":"Left","url":"enums/roosterjs_editor_types.alignment.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":186,"kind":16,"name":"Center","url":"enums/roosterjs_editor_types.alignment.html#center","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":187,"kind":16,"name":"Right","url":"enums/roosterjs_editor_types.alignment.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Alignment"},{"id":188,"kind":4,"name":"ChangeSource","url":"enums/roosterjs_editor_types.changesource.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":189,"kind":16,"name":"AutoLink","url":"enums/roosterjs_editor_types.changesource.html#autolink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":190,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types.changesource.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":191,"kind":16,"name":"Format","url":"enums/roosterjs_editor_types.changesource.html#format","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":192,"kind":16,"name":"ImageResize","url":"enums/roosterjs_editor_types.changesource.html#imageresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":193,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types.changesource.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":194,"kind":16,"name":"SetContent","url":"enums/roosterjs_editor_types.changesource.html#setcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":195,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types.changesource.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":196,"kind":16,"name":"Drop","url":"enums/roosterjs_editor_types.changesource.html#drop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":197,"kind":16,"name":"InsertEntity","url":"enums/roosterjs_editor_types.changesource.html#insertentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":198,"kind":16,"name":"SwitchToDarkMode","url":"enums/roosterjs_editor_types.changesource.html#switchtodarkmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":199,"kind":16,"name":"SwitchToLightMode","url":"enums/roosterjs_editor_types.changesource.html#switchtolightmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":200,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types.changesource.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":201,"kind":16,"name":"Keyboard","url":"enums/roosterjs_editor_types.changesource.html#keyboard","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ChangeSource"},{"id":202,"kind":4,"name":"ColorTransformDirection","url":"enums/roosterjs_editor_types.colortransformdirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":203,"kind":16,"name":"LightToDark","url":"enums/roosterjs_editor_types.colortransformdirection.html#lighttodark","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ColorTransformDirection"},{"id":204,"kind":16,"name":"DarkToLight","url":"enums/roosterjs_editor_types.colortransformdirection.html#darktolight","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ColorTransformDirection"},{"id":205,"kind":4,"name":"ContentPosition","url":"enums/roosterjs_editor_types.contentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":206,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types.contentposition.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":207,"kind":16,"name":"End","url":"enums/roosterjs_editor_types.contentposition.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":208,"kind":16,"name":"DomEnd","url":"enums/roosterjs_editor_types.contentposition.html#domend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":209,"kind":16,"name":"SelectionStart","url":"enums/roosterjs_editor_types.contentposition.html#selectionstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":210,"kind":16,"name":"Outside","url":"enums/roosterjs_editor_types.contentposition.html#outside","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":211,"kind":16,"name":"Range","url":"enums/roosterjs_editor_types.contentposition.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ContentPosition"},{"id":212,"kind":4,"name":"DarkModeDatasetNames","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":213,"kind":16,"name":"OriginalStyleColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalstylecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":214,"kind":16,"name":"OriginalStyleBackgroundColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalstylebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":215,"kind":16,"name":"OriginalAttributeColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalattributecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":216,"kind":16,"name":"OriginalAttributeBackgroundColor","url":"enums/roosterjs_editor_types.darkmodedatasetnames.html#originalattributebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DarkModeDatasetNames"},{"id":217,"kind":4,"name":"DelimiterClasses","url":"enums/roosterjs_editor_types.delimiterclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":218,"kind":16,"name":"DELIMITER_BEFORE","url":"enums/roosterjs_editor_types.delimiterclasses.html#delimiter_before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DelimiterClasses"},{"id":219,"kind":16,"name":"DELIMITER_AFTER","url":"enums/roosterjs_editor_types.delimiterclasses.html#delimiter_after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DelimiterClasses"},{"id":220,"kind":4,"name":"Direction","url":"enums/roosterjs_editor_types.direction.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":221,"kind":16,"name":"LeftToRight","url":"enums/roosterjs_editor_types.direction.html#lefttoright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Direction"},{"id":222,"kind":16,"name":"RightToLeft","url":"enums/roosterjs_editor_types.direction.html#righttoleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Direction"},{"id":223,"kind":4,"name":"EntityClasses","url":"enums/roosterjs_editor_types.entityclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":224,"kind":16,"name":"ENTITY_INFO_NAME","url":"enums/roosterjs_editor_types.entityclasses.html#entity_info_name","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":225,"kind":16,"name":"ENTITY_TYPE_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_type_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":226,"kind":16,"name":"ENTITY_ID_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_id_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":227,"kind":16,"name":"ENTITY_READONLY_PREFIX","url":"enums/roosterjs_editor_types.entityclasses.html#entity_readonly_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityClasses"},{"id":228,"kind":4,"name":"EntityOperation","url":"enums/roosterjs_editor_types.entityoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":229,"kind":16,"name":"NewEntity","url":"enums/roosterjs_editor_types.entityoperation.html#newentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":230,"kind":16,"name":"Click","url":"enums/roosterjs_editor_types.entityoperation.html#click","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":231,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types.entityoperation.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":232,"kind":16,"name":"Escape","url":"enums/roosterjs_editor_types.entityoperation.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":233,"kind":16,"name":"RemoveFromStart","url":"enums/roosterjs_editor_types.entityoperation.html#removefromstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":234,"kind":16,"name":"RemoveFromEnd","url":"enums/roosterjs_editor_types.entityoperation.html#removefromend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":235,"kind":16,"name":"Overwrite","url":"enums/roosterjs_editor_types.entityoperation.html#overwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":236,"kind":16,"name":"PartialOverwrite","url":"enums/roosterjs_editor_types.entityoperation.html#partialoverwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":237,"kind":16,"name":"ReplaceTemporaryContent","url":"enums/roosterjs_editor_types.entityoperation.html#replacetemporarycontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":238,"kind":16,"name":"AddShadowRoot","url":"enums/roosterjs_editor_types.entityoperation.html#addshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":239,"kind":16,"name":"RemoveShadowRoot","url":"enums/roosterjs_editor_types.entityoperation.html#removeshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":240,"kind":16,"name":"UpdateEntityState","url":"enums/roosterjs_editor_types.entityoperation.html#updateentitystate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.EntityOperation"},{"id":241,"kind":4,"name":"ExperimentalFeatures","url":"enums/roosterjs_editor_types.experimentalfeatures.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":242,"kind":16,"name":"NewIndentation","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newindentation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":243,"kind":16,"name":"NewBullet","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newbullet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":244,"kind":16,"name":"NewNumbering","url":"enums/roosterjs_editor_types.experimentalfeatures.html#newnumbering","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":245,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types.experimentalfeatures.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":246,"kind":16,"name":"MergePastedLine","url":"enums/roosterjs_editor_types.experimentalfeatures.html#mergepastedline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":247,"kind":16,"name":"SingleDirectionResize","url":"enums/roosterjs_editor_types.experimentalfeatures.html#singledirectionresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":248,"kind":16,"name":"PasteWithLinkPreview","url":"enums/roosterjs_editor_types.experimentalfeatures.html#pastewithlinkpreview","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":249,"kind":16,"name":"ImageRotate","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imagerotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":250,"kind":16,"name":"ImageCrop","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imagecrop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":251,"kind":16,"name":"AlwaysApplyDefaultFormat","url":"enums/roosterjs_editor_types.experimentalfeatures.html#alwaysapplydefaultformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":252,"kind":16,"name":"ConvertSingleImageBody","url":"enums/roosterjs_editor_types.experimentalfeatures.html#convertsingleimagebody","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":253,"kind":16,"name":"TableAlignment","url":"enums/roosterjs_editor_types.experimentalfeatures.html#tablealignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":254,"kind":16,"name":"AdaptiveHandlesResizer","url":"enums/roosterjs_editor_types.experimentalfeatures.html#adaptivehandlesresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":255,"kind":16,"name":"AutoHyphen","url":"enums/roosterjs_editor_types.experimentalfeatures.html#autohyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":256,"kind":16,"name":"PendingStyleBasedFormat","url":"enums/roosterjs_editor_types.experimentalfeatures.html#pendingstylebasedformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":257,"kind":16,"name":"NormalizeList","url":"enums/roosterjs_editor_types.experimentalfeatures.html#normalizelist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":258,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types.experimentalfeatures.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":259,"kind":16,"name":"VariableBasedDarkColor","url":"enums/roosterjs_editor_types.experimentalfeatures.html#variablebaseddarkcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":260,"kind":16,"name":"ListItemAlignment","url":"enums/roosterjs_editor_types.experimentalfeatures.html#listitemalignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":261,"kind":16,"name":"DefaultFormatInSpan","url":"enums/roosterjs_editor_types.experimentalfeatures.html#defaultformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":262,"kind":16,"name":"DefaultFormatOnContainer","url":"enums/roosterjs_editor_types.experimentalfeatures.html#defaultformatoncontainer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":263,"kind":16,"name":"ReusableContentModel","url":"enums/roosterjs_editor_types.experimentalfeatures.html#reusablecontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":264,"kind":16,"name":"EditWithContentModel","url":"enums/roosterjs_editor_types.experimentalfeatures.html#editwithcontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":265,"kind":16,"name":"TabKeyTextFeatures","url":"enums/roosterjs_editor_types.experimentalfeatures.html#tabkeytextfeatures","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":266,"kind":16,"name":"AutoFormatList","url":"enums/roosterjs_editor_types.experimentalfeatures.html#autoformatlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":267,"kind":16,"name":"ReuseAllAncestorListElements","url":"enums/roosterjs_editor_types.experimentalfeatures.html#reuseallancestorlistelements","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":268,"kind":16,"name":"DeleteTableWithBackspace","url":"enums/roosterjs_editor_types.experimentalfeatures.html#deletetablewithbackspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":269,"kind":16,"name":"InlineEntityReadOnlyDelimiters","url":"enums/roosterjs_editor_types.experimentalfeatures.html#inlineentityreadonlydelimiters","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":270,"kind":16,"name":"ContentModelPaste","url":"enums/roosterjs_editor_types.experimentalfeatures.html#contentmodelpaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":271,"kind":16,"name":"DisableListChain","url":"enums/roosterjs_editor_types.experimentalfeatures.html#disablelistchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ExperimentalFeatures"},{"id":272,"kind":4,"name":"FontSizeChange","url":"enums/roosterjs_editor_types.fontsizechange.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":273,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types.fontsizechange.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.FontSizeChange"},{"id":274,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types.fontsizechange.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.FontSizeChange"},{"id":275,"kind":4,"name":"GetContentMode","url":"enums/roosterjs_editor_types.getcontentmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":276,"kind":16,"name":"CleanHTML","url":"enums/roosterjs_editor_types.getcontentmode.html#cleanhtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":277,"kind":16,"name":"RawHTMLOnly","url":"enums/roosterjs_editor_types.getcontentmode.html#rawhtmlonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":278,"kind":16,"name":"RawHTMLWithSelection","url":"enums/roosterjs_editor_types.getcontentmode.html#rawhtmlwithselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":279,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types.getcontentmode.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":280,"kind":16,"name":"PlainTextFast","url":"enums/roosterjs_editor_types.getcontentmode.html#plaintextfast","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.GetContentMode"},{"id":281,"kind":4,"name":"Indentation","url":"enums/roosterjs_editor_types.indentation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":282,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types.indentation.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Indentation"},{"id":283,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types.indentation.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Indentation"},{"id":284,"kind":4,"name":"Capitalization","url":"enums/roosterjs_editor_types.capitalization.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":285,"kind":16,"name":"Sentence","url":"enums/roosterjs_editor_types.capitalization.html#sentence","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":286,"kind":16,"name":"Lowercase","url":"enums/roosterjs_editor_types.capitalization.html#lowercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":287,"kind":16,"name":"Uppercase","url":"enums/roosterjs_editor_types.capitalization.html#uppercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":288,"kind":16,"name":"CapitalizeEachWord","url":"enums/roosterjs_editor_types.capitalization.html#capitalizeeachword","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.Capitalization"},{"id":289,"kind":4,"name":"ListType","url":"enums/roosterjs_editor_types.listtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":290,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.listtype.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":291,"kind":16,"name":"Ordered","url":"enums/roosterjs_editor_types.listtype.html#ordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":292,"kind":16,"name":"Unordered","url":"enums/roosterjs_editor_types.listtype.html#unordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ListType"},{"id":293,"kind":4,"name":"PositionType","url":"enums/roosterjs_editor_types.positiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":294,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types.positiontype.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":295,"kind":16,"name":"End","url":"enums/roosterjs_editor_types.positiontype.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":296,"kind":16,"name":"Before","url":"enums/roosterjs_editor_types.positiontype.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":297,"kind":16,"name":"After","url":"enums/roosterjs_editor_types.positiontype.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PositionType"},{"id":298,"kind":4,"name":"QueryScope","url":"enums/roosterjs_editor_types.queryscope.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":299,"kind":16,"name":"Body","url":"enums/roosterjs_editor_types.queryscope.html#body","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":300,"kind":16,"name":"OnSelection","url":"enums/roosterjs_editor_types.queryscope.html#onselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":301,"kind":16,"name":"InSelection","url":"enums/roosterjs_editor_types.queryscope.html#inselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.QueryScope"},{"id":302,"kind":4,"name":"RegionType","url":"enums/roosterjs_editor_types.regiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":303,"kind":16,"name":"Table","url":"enums/roosterjs_editor_types.regiontype.html#table","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.RegionType"},{"id":304,"kind":4,"name":"TableOperation","url":"enums/roosterjs_editor_types.tableoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":305,"kind":16,"name":"InsertAbove","url":"enums/roosterjs_editor_types.tableoperation.html#insertabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":306,"kind":16,"name":"InsertBelow","url":"enums/roosterjs_editor_types.tableoperation.html#insertbelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":307,"kind":16,"name":"InsertLeft","url":"enums/roosterjs_editor_types.tableoperation.html#insertleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":308,"kind":16,"name":"InsertRight","url":"enums/roosterjs_editor_types.tableoperation.html#insertright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":309,"kind":16,"name":"DeleteTable","url":"enums/roosterjs_editor_types.tableoperation.html#deletetable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":310,"kind":16,"name":"DeleteColumn","url":"enums/roosterjs_editor_types.tableoperation.html#deletecolumn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":311,"kind":16,"name":"DeleteRow","url":"enums/roosterjs_editor_types.tableoperation.html#deleterow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":312,"kind":16,"name":"MergeAbove","url":"enums/roosterjs_editor_types.tableoperation.html#mergeabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":313,"kind":16,"name":"MergeBelow","url":"enums/roosterjs_editor_types.tableoperation.html#mergebelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":314,"kind":16,"name":"MergeLeft","url":"enums/roosterjs_editor_types.tableoperation.html#mergeleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":315,"kind":16,"name":"MergeRight","url":"enums/roosterjs_editor_types.tableoperation.html#mergeright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":316,"kind":16,"name":"MergeCells","url":"enums/roosterjs_editor_types.tableoperation.html#mergecells","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":317,"kind":16,"name":"SplitHorizontally","url":"enums/roosterjs_editor_types.tableoperation.html#splithorizontally","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":318,"kind":16,"name":"SplitVertically","url":"enums/roosterjs_editor_types.tableoperation.html#splitvertically","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":319,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_editor_types.tableoperation.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":320,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_editor_types.tableoperation.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":321,"kind":16,"name":"AlignRight","url":"enums/roosterjs_editor_types.tableoperation.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":322,"kind":16,"name":"AlignCellLeft","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":323,"kind":16,"name":"AlignCellCenter","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellcenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":324,"kind":16,"name":"AlignCellRight","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":325,"kind":16,"name":"AlignCellTop","url":"enums/roosterjs_editor_types.tableoperation.html#aligncelltop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":326,"kind":16,"name":"AlignCellMiddle","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellmiddle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":327,"kind":16,"name":"AlignCellBottom","url":"enums/roosterjs_editor_types.tableoperation.html#aligncellbottom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableOperation"},{"id":328,"kind":4,"name":"ImageEditOperation","url":"enums/roosterjs_editor_types.imageeditoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":329,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.imageeditoperation.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":330,"kind":16,"name":"CornerResize","url":"enums/roosterjs_editor_types.imageeditoperation.html#cornerresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":331,"kind":16,"name":"SideResize","url":"enums/roosterjs_editor_types.imageeditoperation.html#sideresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":332,"kind":16,"name":"Resize","url":"enums/roosterjs_editor_types.imageeditoperation.html#resize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":333,"kind":16,"name":"Rotate","url":"enums/roosterjs_editor_types.imageeditoperation.html#rotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":334,"kind":16,"name":"ResizeAndRotate","url":"enums/roosterjs_editor_types.imageeditoperation.html#resizeandrotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":335,"kind":16,"name":"Crop","url":"enums/roosterjs_editor_types.imageeditoperation.html#crop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":336,"kind":16,"name":"All","url":"enums/roosterjs_editor_types.imageeditoperation.html#all","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ImageEditOperation"},{"id":337,"kind":4,"name":"ClearFormatMode","url":"enums/roosterjs_editor_types.clearformatmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":338,"kind":16,"name":"Inline","url":"enums/roosterjs_editor_types.clearformatmode.html#inline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":339,"kind":16,"name":"Block","url":"enums/roosterjs_editor_types.clearformatmode.html#block","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":340,"kind":16,"name":"AutoDetect","url":"enums/roosterjs_editor_types.clearformatmode.html#autodetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.ClearFormatMode"},{"id":341,"kind":4,"name":"KnownCreateElementDataIndex","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":342,"kind":16,"name":"None","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":343,"kind":16,"name":"EmptyLine","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#emptyline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":344,"kind":16,"name":"BlockquoteWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#blockquotewrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":345,"kind":16,"name":"CopyPasteTempDiv","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#copypastetempdiv","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":346,"kind":16,"name":"BlockListItem","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#blocklistitem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":347,"kind":16,"name":"ContextMenuWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#contextmenuwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":348,"kind":16,"name":"ImageEditWrapper","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#imageeditwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":349,"kind":16,"name":"TableHorizontalResizer","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tablehorizontalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":350,"kind":16,"name":"TableVerticalResizer","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableverticalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":351,"kind":16,"name":"TableResizerLTR","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableresizerltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":352,"kind":16,"name":"TableResizerRTL","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableresizerrtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":353,"kind":16,"name":"TableSelector","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#tableselector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":354,"kind":16,"name":"EmptyLineFormatInSpan","url":"enums/roosterjs_editor_types.knowncreateelementdataindex.html#emptylineformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownCreateElementDataIndex"},{"id":355,"kind":4,"name":"KnownPasteSourceType","url":"enums/roosterjs_editor_types.knownpastesourcetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":356,"kind":16,"name":"WordDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#worddesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":357,"kind":16,"name":"ExcelDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#exceldesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":358,"kind":16,"name":"ExcelOnline","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#excelonline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":359,"kind":16,"name":"PowerPointDesktop","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#powerpointdesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":360,"kind":16,"name":"GoogleSheets","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#googlesheets","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":361,"kind":16,"name":"WacComponents","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#waccomponents","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":362,"kind":16,"name":"Default","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":363,"kind":16,"name":"SingleImage","url":"enums/roosterjs_editor_types.knownpastesourcetype.html#singleimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.KnownPasteSourceType"},{"id":364,"kind":4,"name":"TableBorderFormat","url":"enums/roosterjs_editor_types.tableborderformat.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":365,"kind":16,"name":"DEFAULT","url":"enums/roosterjs_editor_types.tableborderformat.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":366,"kind":16,"name":"LIST_WITH_SIDE_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#list_with_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":367,"kind":16,"name":"NO_HEADER_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#no_header_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":368,"kind":16,"name":"NO_SIDE_BORDERS","url":"enums/roosterjs_editor_types.tableborderformat.html#no_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":369,"kind":16,"name":"FIRST_COLUMN_HEADER_EXTERNAL","url":"enums/roosterjs_editor_types.tableborderformat.html#first_column_header_external","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":370,"kind":16,"name":"ESPECIAL_TYPE_1","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":371,"kind":16,"name":"ESPECIAL_TYPE_2","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_2","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":372,"kind":16,"name":"ESPECIAL_TYPE_3","url":"enums/roosterjs_editor_types.tableborderformat.html#especial_type_3","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":373,"kind":16,"name":"CLEAR","url":"enums/roosterjs_editor_types.tableborderformat.html#clear","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.TableBorderFormat"},{"id":374,"kind":4,"name":"PluginEventType","url":"enums/roosterjs_editor_types.plugineventtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":375,"kind":16,"name":"KeyDown","url":"enums/roosterjs_editor_types.plugineventtype.html#keydown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":376,"kind":16,"name":"KeyPress","url":"enums/roosterjs_editor_types.plugineventtype.html#keypress","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":377,"kind":16,"name":"KeyUp","url":"enums/roosterjs_editor_types.plugineventtype.html#keyup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":378,"kind":16,"name":"Input","url":"enums/roosterjs_editor_types.plugineventtype.html#input","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":379,"kind":16,"name":"CompositionEnd","url":"enums/roosterjs_editor_types.plugineventtype.html#compositionend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":380,"kind":16,"name":"MouseDown","url":"enums/roosterjs_editor_types.plugineventtype.html#mousedown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":381,"kind":16,"name":"MouseUp","url":"enums/roosterjs_editor_types.plugineventtype.html#mouseup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":382,"kind":16,"name":"ContentChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":383,"kind":16,"name":"ExtractContentWithDom","url":"enums/roosterjs_editor_types.plugineventtype.html#extractcontentwithdom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":384,"kind":16,"name":"BeforeCutCopy","url":"enums/roosterjs_editor_types.plugineventtype.html#beforecutcopy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":385,"kind":16,"name":"BeforePaste","url":"enums/roosterjs_editor_types.plugineventtype.html#beforepaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":386,"kind":16,"name":"EditorReady","url":"enums/roosterjs_editor_types.plugineventtype.html#editorready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":387,"kind":16,"name":"BeforeDispose","url":"enums/roosterjs_editor_types.plugineventtype.html#beforedispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":388,"kind":16,"name":"PendingFormatStateChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#pendingformatstatechanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":389,"kind":16,"name":"Scroll","url":"enums/roosterjs_editor_types.plugineventtype.html#scroll","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":390,"kind":16,"name":"EntityOperation","url":"enums/roosterjs_editor_types.plugineventtype.html#entityoperation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":391,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types.plugineventtype.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":392,"kind":16,"name":"EnteredShadowEdit","url":"enums/roosterjs_editor_types.plugineventtype.html#enteredshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":393,"kind":16,"name":"LeavingShadowEdit","url":"enums/roosterjs_editor_types.plugineventtype.html#leavingshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":394,"kind":16,"name":"EditImage","url":"enums/roosterjs_editor_types.plugineventtype.html#editimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":395,"kind":16,"name":"BeforeSetContent","url":"enums/roosterjs_editor_types.plugineventtype.html#beforesetcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":396,"kind":16,"name":"ZoomChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#zoomchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":397,"kind":16,"name":"SelectionChanged","url":"enums/roosterjs_editor_types.plugineventtype.html#selectionchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":398,"kind":16,"name":"BeforeKeyboardEditing","url":"enums/roosterjs_editor_types.plugineventtype.html#beforekeyboardediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PluginEventType"},{"id":399,"kind":4,"name":"SelectionRangeTypes","url":"enums/roosterjs_editor_types.selectionrangetypes.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":400,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types.selectionrangetypes.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":401,"kind":16,"name":"TableSelection","url":"enums/roosterjs_editor_types.selectionrangetypes.html#tableselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":402,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types.selectionrangetypes.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.SelectionRangeTypes"},{"id":403,"kind":4,"name":"NumberingListType","url":"enums/roosterjs_editor_types.numberinglisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":404,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types.numberinglisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":405,"kind":16,"name":"Decimal","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":406,"kind":16,"name":"DecimalDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimaldash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":407,"kind":16,"name":"DecimalParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimalparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":408,"kind":16,"name":"DecimalDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#decimaldoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":409,"kind":16,"name":"LowerAlpha","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":410,"kind":16,"name":"LowerAlphaParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":411,"kind":16,"name":"LowerAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":412,"kind":16,"name":"LowerAlphaDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#loweralphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":413,"kind":16,"name":"UpperAlpha","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":414,"kind":16,"name":"UpperAlphaParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":415,"kind":16,"name":"UpperAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":416,"kind":16,"name":"UpperAlphaDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperalphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":417,"kind":16,"name":"LowerRoman","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":418,"kind":16,"name":"LowerRomanParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":419,"kind":16,"name":"LowerRomanDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":420,"kind":16,"name":"LowerRomanDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#lowerromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":421,"kind":16,"name":"UpperRoman","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":422,"kind":16,"name":"UpperRomanParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":423,"kind":16,"name":"UpperRomanDoubleParenthesis","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":424,"kind":16,"name":"UpperRomanDash","url":"enums/roosterjs_editor_types.numberinglisttype.html#upperromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":425,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types.numberinglisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.NumberingListType"},{"id":426,"kind":4,"name":"BulletListType","url":"enums/roosterjs_editor_types.bulletlisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":427,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types.bulletlisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":428,"kind":16,"name":"Disc","url":"enums/roosterjs_editor_types.bulletlisttype.html#disc","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":429,"kind":16,"name":"Dash","url":"enums/roosterjs_editor_types.bulletlisttype.html#dash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":430,"kind":16,"name":"Square","url":"enums/roosterjs_editor_types.bulletlisttype.html#square","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":431,"kind":16,"name":"ShortArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#shortarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":432,"kind":16,"name":"LongArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#longarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":433,"kind":16,"name":"UnfilledArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#unfilledarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":434,"kind":16,"name":"Hyphen","url":"enums/roosterjs_editor_types.bulletlisttype.html#hyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":435,"kind":16,"name":"DoubleLongArrow","url":"enums/roosterjs_editor_types.bulletlisttype.html#doublelongarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":436,"kind":16,"name":"Circle","url":"enums/roosterjs_editor_types.bulletlisttype.html#circle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":437,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types.bulletlisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.BulletListType"},{"id":438,"kind":4,"name":"DefinitionType","url":"enums/roosterjs_editor_types.definitiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":439,"kind":16,"name":"Boolean","url":"enums/roosterjs_editor_types.definitiontype.html#boolean","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":440,"kind":16,"name":"Number","url":"enums/roosterjs_editor_types.definitiontype.html#number","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":441,"kind":16,"name":"String","url":"enums/roosterjs_editor_types.definitiontype.html#string","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":442,"kind":16,"name":"Array","url":"enums/roosterjs_editor_types.definitiontype.html#array","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":443,"kind":16,"name":"Object","url":"enums/roosterjs_editor_types.definitiontype.html#object","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":444,"kind":16,"name":"Customize","url":"enums/roosterjs_editor_types.definitiontype.html#customize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.DefinitionType"},{"id":445,"kind":4,"name":"PasteType","url":"enums/roosterjs_editor_types.pastetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":446,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types.pastetype.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":447,"kind":16,"name":"AsPlainText","url":"enums/roosterjs_editor_types.pastetype.html#asplaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":448,"kind":16,"name":"MergeFormat","url":"enums/roosterjs_editor_types.pastetype.html#mergeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":449,"kind":16,"name":"AsImage","url":"enums/roosterjs_editor_types.pastetype.html#asimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types.PasteType"},{"id":450,"kind":256,"name":"BeforeCutCopyEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":451,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":452,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":453,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":454,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":455,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":456,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":457,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforecutcopyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEvent"},{"id":458,"kind":256,"name":"BeforeCutCopyEventData","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":459,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":460,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":461,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":462,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.beforecutcopyeventdata.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeCutCopyEventData"},{"id":463,"kind":256,"name":"CompatibleBeforeCutCopyEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":464,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":465,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":466,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":467,"kind":1024,"name":"isCut","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#iscut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":468,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":469,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":470,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeCutCopyEvent"},{"id":471,"kind":256,"name":"BasePluginEvent","url":"interfaces/roosterjs_editor_types.basepluginevent.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":472,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.basepluginevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":473,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.basepluginevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":474,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.basepluginevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BasePluginEvent"},{"id":475,"kind":256,"name":"BeforeDisposeEvent","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":476,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":477,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":478,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforedisposeevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeDisposeEvent"},{"id":479,"kind":256,"name":"CompatibleBeforeDisposeEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":480,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":481,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":482,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeDisposeEvent"},{"id":483,"kind":256,"name":"BeforePasteEvent","url":"interfaces/roosterjs_editor_types.beforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":484,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":485,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":486,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":487,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":488,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":489,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":490,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":491,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":492,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":493,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEvent"},{"id":494,"kind":256,"name":"BeforePasteEventData","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":495,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":496,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":497,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":498,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":499,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":500,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":501,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.beforepasteeventdata.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforePasteEventData"},{"id":502,"kind":256,"name":"CompatibleBeforePasteEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":503,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":504,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":505,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":506,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":507,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":508,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":509,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":510,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":511,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":512,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforePasteEvent"},{"id":513,"kind":256,"name":"BeforeSetContentEvent","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":514,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":515,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":516,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":517,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforesetcontentevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeSetContentEvent"},{"id":518,"kind":256,"name":"BeforeSetContentEventData","url":"interfaces/roosterjs_editor_types.beforesetcontenteventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":519,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.beforesetcontenteventdata.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeSetContentEventData"},{"id":520,"kind":256,"name":"CompatibleBeforeSetContentEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":521,"kind":1024,"name":"newContent","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#newcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":522,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":523,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":524,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeSetContentEvent"},{"id":525,"kind":256,"name":"ContentChangedEvent","url":"interfaces/roosterjs_editor_types.contentchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":526,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#source","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":527,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":528,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":529,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":530,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":531,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contentchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEvent"},{"id":532,"kind":256,"name":"ContentChangedEventData","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":533,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#source","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":534,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":535,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.contentchangedeventdata.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedEventData"},{"id":536,"kind":256,"name":"CompatibleContentChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":537,"kind":1024,"name":"source","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#source","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":538,"kind":1024,"name":"data","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#data","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":539,"kind":1024,"name":"additionalData","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#additionaldata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":540,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":541,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":542,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleContentChangedEvent"},{"id":543,"kind":256,"name":"EditImageEvent","url":"interfaces/roosterjs_editor_types.editimageevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":544,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.editimageevent.html#image","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":545,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":546,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":547,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.editimageevent.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":548,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.editimageevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":549,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.editimageevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditImageEvent"},{"id":550,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editimageevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEvent"},{"id":551,"kind":256,"name":"EditImageEventData","url":"interfaces/roosterjs_editor_types.editimageeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":552,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":553,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":554,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":555,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.editimageeventdata.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditImageEventData"},{"id":556,"kind":256,"name":"CompatibleEditImageEvent","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":557,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#image","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":558,"kind":1024,"name":"originalSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#originalsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":559,"kind":1024,"name":"previousSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#previoussrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":560,"kind":1024,"name":"newSrc","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#newsrc","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":561,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":562,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":563,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleeditimageevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEditImageEvent"},{"id":564,"kind":256,"name":"EditorReadyEvent","url":"interfaces/roosterjs_editor_types.editorreadyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":565,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":566,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":567,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorreadyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorReadyEvent"},{"id":568,"kind":256,"name":"CompatibleEditorReadyEvent","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":569,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":570,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":571,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEditorReadyEvent"},{"id":572,"kind":256,"name":"EntityOperationEvent","url":"interfaces/roosterjs_editor_types.entityoperationevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":573,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":574,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":575,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":576,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#state","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":577,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":578,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":579,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":580,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":581,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entityoperationevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEvent"},{"id":582,"kind":256,"name":"EntityOperationEventData","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":583,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":584,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":585,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":586,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":587,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":588,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.entityoperationeventdata.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityOperationEventData"},{"id":589,"kind":256,"name":"CompatibleEntityOperationEvent","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":590,"kind":1024,"name":"operation","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":591,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":592,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":593,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#state","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":594,"kind":1024,"name":"shouldPersist","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#shouldpersist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":595,"kind":1024,"name":"contentForShadowEntity","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#contentforshadowentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":596,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":597,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":598,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleentityoperationevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEntityOperationEvent"},{"id":599,"kind":256,"name":"ExtractContentWithDomEvent","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":600,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":601,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":602,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":603,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractcontentwithdomevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractContentWithDomEvent"},{"id":604,"kind":256,"name":"ExtractContentWithDomEventData","url":"interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":605,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractContentWithDomEventData"},{"id":606,"kind":256,"name":"CompatibleExtractContentWithDomEvent","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":607,"kind":1024,"name":"clonedRoot","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#clonedroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":608,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":609,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":610,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleExtractContentWithDomEvent"},{"id":611,"kind":256,"name":"PendingFormatStateChangedEvent","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":612,"kind":1024,"name":"formatState","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#formatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":613,"kind":1024,"name":"formatCallback","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#formatcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":614,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":615,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":616,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":617,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendingFormatStateChangedEvent"},{"id":618,"kind":256,"name":"CompatiblePendingFormatStateChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":619,"kind":1024,"name":"formatState","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#formatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":620,"kind":1024,"name":"formatCallback","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#formatcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":621,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":622,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":623,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":624,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePendingFormatStateChangedEvent"},{"id":625,"kind":4194304,"name":"PluginDomEvent","url":"modules/roosterjs_editor_types.html#plugindomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":626,"kind":256,"name":"PluginDomEventBase","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":627,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":628,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":629,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":630,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugindomeventbase.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginDomEventBase"},{"id":631,"kind":256,"name":"PluginCompositionEvent","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":632,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":633,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":634,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":635,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugincompositionevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginCompositionEvent"},{"id":636,"kind":256,"name":"PluginContextMenuEvent","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":637,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#items","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":638,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":639,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":640,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":641,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugincontextmenuevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginContextMenuEvent"},{"id":642,"kind":4194304,"name":"PluginKeyboardEvent","url":"modules/roosterjs_editor_types.html#pluginkeyboardevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":643,"kind":256,"name":"PluginKeyDownEvent","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":644,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":645,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":646,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":647,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":648,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeydownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyDownEvent"},{"id":649,"kind":256,"name":"PluginKeyPressEvent","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":650,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":651,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":652,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":653,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeypressevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyPressEvent"},{"id":654,"kind":256,"name":"PluginKeyUpEvent","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":655,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":656,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":657,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":658,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginkeyupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyUpEvent"},{"id":659,"kind":4194304,"name":"PluginMouseEvent","url":"modules/roosterjs_editor_types.html#pluginmouseevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":660,"kind":256,"name":"PluginMouseDownEvent","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":661,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":662,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":663,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":664,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginmousedownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseDownEvent"},{"id":665,"kind":256,"name":"PluginMouseUpEvent","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":666,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":667,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":668,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":669,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":670,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginmouseupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseUpEvent"},{"id":671,"kind":256,"name":"PluginInputEvent","url":"interfaces/roosterjs_editor_types.plugininputevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":672,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.plugininputevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":673,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.plugininputevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":674,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.plugininputevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":675,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.plugininputevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginInputEvent"},{"id":676,"kind":256,"name":"PluginScrollEvent","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":677,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":678,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":679,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":680,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":681,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginscrollevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginScrollEvent"},{"id":682,"kind":4194304,"name":"CompatiblePluginDomEvent","url":"modules/roosterjs_editor_types.html#compatibleplugindomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":683,"kind":256,"name":"CompatiblePluginCompositionEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":684,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":685,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":686,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":687,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginCompositionEvent"},{"id":688,"kind":256,"name":"CompatiblePluginContextMenuEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":689,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#items","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":690,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":691,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":692,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":693,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginContextMenuEvent"},{"id":694,"kind":4194304,"name":"CompatiblePluginKeyboardEvent","url":"modules/roosterjs_editor_types.html#compatiblepluginkeyboardevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":695,"kind":256,"name":"CompatiblePluginKeyDownEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":696,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":697,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":698,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":699,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":700,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyDownEvent"},{"id":701,"kind":256,"name":"CompatiblePluginKeyPressEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":702,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":703,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":704,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":705,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyPressEvent"},{"id":706,"kind":256,"name":"CompatiblePluginKeyUpEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":707,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":708,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":709,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":710,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginKeyUpEvent"},{"id":711,"kind":4194304,"name":"CompatiblePluginMouseEvent","url":"modules/roosterjs_editor_types.html#compatiblepluginmouseevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":712,"kind":256,"name":"CompatiblePluginMouseDownEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":713,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":714,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":715,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":716,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginMouseDownEvent"},{"id":717,"kind":256,"name":"CompatiblePluginMouseUpEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":718,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":719,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":720,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":721,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":722,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginMouseUpEvent"},{"id":723,"kind":256,"name":"CompatiblePluginInputEvent","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":724,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":725,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":726,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":727,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleplugininputevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginInputEvent"},{"id":728,"kind":256,"name":"CompatiblePluginScrollEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":729,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":730,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":731,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":732,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":733,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatiblePluginScrollEvent"},{"id":734,"kind":256,"name":"PluginScrollEventData","url":"interfaces/roosterjs_editor_types.pluginscrolleventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":735,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.pluginscrolleventdata.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginScrollEventData"},{"id":736,"kind":256,"name":"PluginMouseUpEventData","url":"interfaces/roosterjs_editor_types.pluginmouseupeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":737,"kind":1024,"name":"isClicking","url":"interfaces/roosterjs_editor_types.pluginmouseupeventdata.html#isclicking","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginMouseUpEventData"},{"id":738,"kind":256,"name":"PluginContextMenuEventData","url":"interfaces/roosterjs_editor_types.plugincontextmenueventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":739,"kind":1024,"name":"items","url":"interfaces/roosterjs_editor_types.plugincontextmenueventdata.html#items","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginContextMenuEventData"},{"id":740,"kind":256,"name":"PluginKeyDownEventData","url":"interfaces/roosterjs_editor_types.pluginkeydowneventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":741,"kind":1024,"name":"handledByEditFeature","url":"interfaces/roosterjs_editor_types.pluginkeydowneventdata.html#handledbyeditfeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginKeyDownEventData"},{"id":742,"kind":4194304,"name":"PluginEvent","url":"modules/roosterjs_editor_types.html#pluginevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":743,"kind":4194304,"name":"PluginEventData","url":"modules/roosterjs_editor_types.html#plugineventdata","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":744,"kind":4194304,"name":"PluginEventDataGeneric","url":"modules/roosterjs_editor_types.html#plugineventdatageneric","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":745,"kind":4194304,"name":"PluginEventFromType","url":"modules/roosterjs_editor_types.html#plugineventfromtype","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":746,"kind":4194304,"name":"PluginEventFromTypeGeneric","url":"modules/roosterjs_editor_types.html#plugineventfromtypegeneric","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":747,"kind":256,"name":"EnterShadowEditEvent","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":748,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":749,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":750,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":751,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":752,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.entershadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEvent"},{"id":753,"kind":256,"name":"LeaveShadowEditEvent","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":754,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":755,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":756,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.leaveshadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.LeaveShadowEditEvent"},{"id":757,"kind":256,"name":"EnterShadowEditEventData","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":758,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEventData"},{"id":759,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.entershadowediteventdata.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EnterShadowEditEventData"},{"id":760,"kind":256,"name":"CompatibleEnterShadowEditEvent","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":761,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":762,"kind":1024,"name":"selectionPath","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#selectionpath","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":763,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":764,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":765,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleEnterShadowEditEvent"},{"id":766,"kind":256,"name":"CompatibleLeaveShadowEditEvent","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":767,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":768,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":769,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleLeaveShadowEditEvent"},{"id":770,"kind":256,"name":"ZoomChangedEvent","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":771,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":772,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":773,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":774,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":775,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.zoomchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEvent"},{"id":776,"kind":256,"name":"ZoomChangedEventData","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":777,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEventData"},{"id":778,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.zoomchangedeventdata.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ZoomChangedEventData"},{"id":779,"kind":256,"name":"CompatibleZoomChangedEvent","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":780,"kind":1024,"name":"oldZoomScale","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#oldzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":781,"kind":1024,"name":"newZoomScale","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#newzoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":782,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":783,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":784,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleZoomChangedEvent"},{"id":785,"kind":256,"name":"SelectionChangedEvent","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":786,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":787,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":788,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":789,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.selectionchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionChangedEvent"},{"id":790,"kind":256,"name":"SelectionChangedEventData","url":"interfaces/roosterjs_editor_types.selectionchangedeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":791,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.selectionchangedeventdata.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionChangedEventData"},{"id":792,"kind":256,"name":"CompatibleSelectionChangedEvent","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":793,"kind":1024,"name":"selectionRangeEx","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#selectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":794,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":795,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":796,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleSelectionChangedEvent"},{"id":797,"kind":256,"name":"BeforeKeyboardEditingEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":798,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":799,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":800,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":801,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeKeyboardEditingEvent"},{"id":802,"kind":256,"name":"BeforeKeyboardEditingData","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":803,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BeforeKeyboardEditingData"},{"id":804,"kind":256,"name":"CompatibleBeforeKeyboardEditingEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":805,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":806,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":807,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":808,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CompatibleBeforeKeyboardEditingEvent"},{"id":809,"kind":256,"name":"BlockElement","url":"interfaces/roosterjs_editor_types.blockelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":810,"kind":2048,"name":"collapseToSingleElement","url":"interfaces/roosterjs_editor_types.blockelement.html#collapsetosingleelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":811,"kind":2048,"name":"getStartNode","url":"interfaces/roosterjs_editor_types.blockelement.html#getstartnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":812,"kind":2048,"name":"getEndNode","url":"interfaces/roosterjs_editor_types.blockelement.html#getendnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":813,"kind":2048,"name":"equals","url":"interfaces/roosterjs_editor_types.blockelement.html#equals","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":814,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.blockelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":815,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.blockelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":816,"kind":2048,"name":"getTextContent","url":"interfaces/roosterjs_editor_types.blockelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.BlockElement"},{"id":817,"kind":256,"name":"ClipboardData","url":"interfaces/roosterjs_editor_types.clipboarddata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":818,"kind":1024,"name":"types","url":"interfaces/roosterjs_editor_types.clipboarddata.html#types","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":819,"kind":1024,"name":"text","url":"interfaces/roosterjs_editor_types.clipboarddata.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":820,"kind":1024,"name":"rawHtml","url":"interfaces/roosterjs_editor_types.clipboarddata.html#rawhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":821,"kind":1024,"name":"linkPreview","url":"interfaces/roosterjs_editor_types.clipboarddata.html#linkpreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":822,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.clipboarddata.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":823,"kind":1024,"name":"files","url":"interfaces/roosterjs_editor_types.clipboarddata.html#files","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":824,"kind":1024,"name":"html","url":"interfaces/roosterjs_editor_types.clipboarddata.html#html","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":825,"kind":1024,"name":"snapshotBeforePaste","url":"interfaces/roosterjs_editor_types.clipboarddata.html#snapshotbeforepaste","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":826,"kind":1024,"name":"imageDataUri","url":"interfaces/roosterjs_editor_types.clipboarddata.html#imagedatauri","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":827,"kind":1024,"name":"htmlFirstLevelChildTags","url":"interfaces/roosterjs_editor_types.clipboarddata.html#htmlfirstlevelchildtags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":828,"kind":1024,"name":"customValues","url":"interfaces/roosterjs_editor_types.clipboarddata.html#customvalues","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":829,"kind":1024,"name":"pasteNativeEvent","url":"interfaces/roosterjs_editor_types.clipboarddata.html#pastenativeevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ClipboardData"},{"id":830,"kind":256,"name":"ContextMenuProvider","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":831,"kind":1024,"name":"getContextMenuItems","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#getcontextmenuitems","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":832,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":833,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":834,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":835,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":836,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":837,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":838,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":839,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":840,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":841,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":842,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contextmenuprovider.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContextMenuProvider"},{"id":843,"kind":256,"name":"CustomData","url":"interfaces/roosterjs_editor_types.customdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":844,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.customdata.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":845,"kind":1024,"name":"disposer","url":"interfaces/roosterjs_editor_types.customdata.html#disposer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":846,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customdata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomData"},{"id":847,"kind":256,"name":"ContentChangedData","url":"interfaces/roosterjs_editor_types.contentchangeddata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":848,"kind":1024,"name":"formatApiName","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#formatapiname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":849,"kind":1024,"name":"getEntityState","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#getentitystate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":850,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.contentchangeddata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentChangedData"},{"id":851,"kind":256,"name":"DefaultFormat","url":"interfaces/roosterjs_editor_types.defaultformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":852,"kind":1024,"name":"fontFamily","url":"interfaces/roosterjs_editor_types.defaultformat.html#fontfamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":853,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.defaultformat.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":854,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.defaultformat.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":855,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.defaultformat.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":856,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.defaultformat.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":857,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.defaultformat.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":858,"kind":1024,"name":"bold","url":"interfaces/roosterjs_editor_types.defaultformat.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":859,"kind":1024,"name":"italic","url":"interfaces/roosterjs_editor_types.defaultformat.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":860,"kind":1024,"name":"underline","url":"interfaces/roosterjs_editor_types.defaultformat.html#underline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefaultFormat"},{"id":861,"kind":256,"name":"Entity","url":"interfaces/roosterjs_editor_types.entity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":862,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.entity.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":863,"kind":1024,"name":"id","url":"interfaces/roosterjs_editor_types.entity.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":864,"kind":1024,"name":"wrapper","url":"interfaces/roosterjs_editor_types.entity.html#wrapper","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":865,"kind":1024,"name":"isReadonly","url":"interfaces/roosterjs_editor_types.entity.html#isreadonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Entity"},{"id":866,"kind":256,"name":"FormatState","url":"interfaces/roosterjs_editor_types.formatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":867,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.formatstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.FormatState"},{"id":868,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.formatstate.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.FormatState"},{"id":869,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_editor_types.formatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":870,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_editor_types.formatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":871,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_editor_types.formatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":872,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_editor_types.formatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":873,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_editor_types.formatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":874,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_editor_types.formatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":875,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_editor_types.formatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":876,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_editor_types.formatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":877,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_editor_types.formatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":878,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_editor_types.formatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":879,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_editor_types.formatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":880,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_editor_types.formatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":881,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_editor_types.formatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":882,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_editor_types.formatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":883,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_editor_types.formatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":884,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_editor_types.formatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":885,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_editor_types.formatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":886,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_editor_types.formatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":887,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_editor_types.formatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":888,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_editor_types.formatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":889,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_editor_types.formatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":890,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.formatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":891,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.formatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":892,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.formatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":893,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.formatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":894,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.formatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":895,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_editor_types.formatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":896,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_editor_types.formatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":897,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_editor_types.formatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":898,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_editor_types.formatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":899,"kind":1024,"name":"direction","url":"interfaces/roosterjs_editor_types.formatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":900,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_editor_types.formatstate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":901,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_editor_types.formatstate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.FormatState"},{"id":902,"kind":256,"name":"PendableFormatState","url":"interfaces/roosterjs_editor_types.pendableformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":903,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":904,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":905,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":906,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":907,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":908,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_editor_types.pendableformatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PendableFormatState"},{"id":909,"kind":256,"name":"ElementBasedFormatState","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":910,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":911,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":912,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":913,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":914,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":915,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":916,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":917,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":918,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":919,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":920,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":921,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":922,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":923,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_editor_types.elementbasedformatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ElementBasedFormatState"},{"id":924,"kind":256,"name":"StyleBasedFormatState","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":925,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":926,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":927,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":928,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":929,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":930,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":931,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":932,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":933,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":934,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":935,"kind":1024,"name":"direction","url":"interfaces/roosterjs_editor_types.stylebasedformatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StyleBasedFormatState"},{"id":936,"kind":256,"name":"EditorUndoState","url":"interfaces/roosterjs_editor_types.editorundostate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":937,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_editor_types.editorundostate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorUndoState"},{"id":938,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_editor_types.editorundostate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorUndoState"},{"id":939,"kind":256,"name":"ExtractClipboardEventOption","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":940,"kind":1024,"name":"allowLinkPreview","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#allowlinkpreview","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":941,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":942,"kind":1024,"name":"getTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#gettempdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":943,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":944,"kind":1024,"name":"removeTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#removetempdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":945,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboardeventoption.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardEventOption"},{"id":946,"kind":256,"name":"ExtractClipboardItemsOption","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":947,"kind":1024,"name":"allowLinkPreview","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html#allowlinkpreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsOption"},{"id":948,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.extractclipboarditemsoption.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsOption"},{"id":949,"kind":256,"name":"ExtractClipboardItemsForIEOptions","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":950,"kind":1024,"name":"getTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#gettempdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":951,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":952,"kind":1024,"name":"removeTempDiv","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#removetempdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":953,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.ExtractClipboardItemsForIEOptions"},{"id":954,"kind":256,"name":"IContentTraverser","url":"interfaces/roosterjs_editor_types.icontenttraverser.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":955,"kind":1024,"name":"currentBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#currentblockelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":956,"kind":2048,"name":"getNextBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getnextblockelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":957,"kind":2048,"name":"getPreviousBlockElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getpreviousblockelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":958,"kind":1024,"name":"currentInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#currentinlineelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":959,"kind":2048,"name":"getNextInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getnextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":960,"kind":2048,"name":"getPreviousInlineElement","url":"interfaces/roosterjs_editor_types.icontenttraverser.html#getpreviousinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IContentTraverser"},{"id":961,"kind":256,"name":"InlineElement","url":"interfaces/roosterjs_editor_types.inlineelement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":962,"kind":2048,"name":"getTextContent","url":"interfaces/roosterjs_editor_types.inlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":963,"kind":2048,"name":"getContainerNode","url":"interfaces/roosterjs_editor_types.inlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":964,"kind":2048,"name":"getParentBlock","url":"interfaces/roosterjs_editor_types.inlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":965,"kind":2048,"name":"getStartPosition","url":"interfaces/roosterjs_editor_types.inlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":966,"kind":2048,"name":"getEndPosition","url":"interfaces/roosterjs_editor_types.inlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":967,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.inlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":968,"kind":2048,"name":"isTextualInlineElement","url":"interfaces/roosterjs_editor_types.inlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":969,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.inlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":970,"kind":2048,"name":"applyStyle","url":"interfaces/roosterjs_editor_types.inlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.InlineElement"},{"id":971,"kind":4194304,"name":"InsertOption","url":"modules/roosterjs_editor_types.html#insertoption","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":972,"kind":256,"name":"InsertOptionBase","url":"interfaces/roosterjs_editor_types.insertoptionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":973,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":974,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":975,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":976,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionbase.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBase"},{"id":977,"kind":256,"name":"InsertOptionBasic","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":978,"kind":1024,"name":"position","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":979,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":980,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":981,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":982,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionbasic.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionBasic"},{"id":983,"kind":256,"name":"InsertOptionRange","url":"interfaces/roosterjs_editor_types.insertoptionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":984,"kind":1024,"name":"position","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":985,"kind":1024,"name":"range","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":986,"kind":1024,"name":"updateCursor","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#updatecursor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":987,"kind":1024,"name":"insertOnNewLine","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#insertonnewline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":988,"kind":1024,"name":"replaceSelection","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#replaceselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":989,"kind":1024,"name":"insertToRegionRoot","url":"interfaces/roosterjs_editor_types.insertoptionrange.html#inserttoregionroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.InsertOptionRange"},{"id":990,"kind":256,"name":"IPositionContentSearcher","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":991,"kind":2048,"name":"getWordBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getwordbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":992,"kind":2048,"name":"getInlineElementBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getinlineelementbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":993,"kind":2048,"name":"getInlineElementAfter","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getinlineelementafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":994,"kind":2048,"name":"getSubStringBefore","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getsubstringbefore","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":995,"kind":2048,"name":"getRangeFromText","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getrangefromtext","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":996,"kind":2048,"name":"forEachTextInlineElement","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#foreachtextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":997,"kind":2048,"name":"getNearestNonTextInlineElement","url":"interfaces/roosterjs_editor_types.ipositioncontentsearcher.html#getnearestnontextinlineelement","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IPositionContentSearcher"},{"id":998,"kind":256,"name":"LinkData","url":"interfaces/roosterjs_editor_types.linkdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":999,"kind":1024,"name":"scheme","url":"interfaces/roosterjs_editor_types.linkdata.html#scheme","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1000,"kind":1024,"name":"originalUrl","url":"interfaces/roosterjs_editor_types.linkdata.html#originalurl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1001,"kind":1024,"name":"normalizedUrl","url":"interfaces/roosterjs_editor_types.linkdata.html#normalizedurl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.LinkData"},{"id":1002,"kind":256,"name":"ModeIndependentColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1003,"kind":1024,"name":"darkModeColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html#darkmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ModeIndependentColor"},{"id":1004,"kind":1024,"name":"lightModeColor","url":"interfaces/roosterjs_editor_types.modeindependentcolor.html#lightmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ModeIndependentColor"},{"id":1005,"kind":256,"name":"NodePosition","url":"interfaces/roosterjs_editor_types.nodeposition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1006,"kind":1024,"name":"node","url":"interfaces/roosterjs_editor_types.nodeposition.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1007,"kind":1024,"name":"element","url":"interfaces/roosterjs_editor_types.nodeposition.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1008,"kind":1024,"name":"offset","url":"interfaces/roosterjs_editor_types.nodeposition.html#offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1009,"kind":1024,"name":"isAtEnd","url":"interfaces/roosterjs_editor_types.nodeposition.html#isatend","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1010,"kind":2048,"name":"normalize","url":"interfaces/roosterjs_editor_types.nodeposition.html#normalize","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1011,"kind":2048,"name":"equalTo","url":"interfaces/roosterjs_editor_types.nodeposition.html#equalto","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1012,"kind":2048,"name":"isAfter","url":"interfaces/roosterjs_editor_types.nodeposition.html#isafter","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1013,"kind":2048,"name":"move","url":"interfaces/roosterjs_editor_types.nodeposition.html#move","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.NodePosition"},{"id":1014,"kind":256,"name":"Rect","url":"interfaces/roosterjs_editor_types.rect.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1015,"kind":1024,"name":"top","url":"interfaces/roosterjs_editor_types.rect.html#top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1016,"kind":1024,"name":"bottom","url":"interfaces/roosterjs_editor_types.rect.html#bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1017,"kind":1024,"name":"left","url":"interfaces/roosterjs_editor_types.rect.html#left","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1018,"kind":1024,"name":"right","url":"interfaces/roosterjs_editor_types.rect.html#right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Rect"},{"id":1019,"kind":256,"name":"Region","url":"interfaces/roosterjs_editor_types.region.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1020,"kind":1024,"name":"fullSelectionStart","url":"interfaces/roosterjs_editor_types.region.html#fullselectionstart","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Region"},{"id":1021,"kind":1024,"name":"fullSelectionEnd","url":"interfaces/roosterjs_editor_types.region.html#fullselectionend","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Region"},{"id":1022,"kind":1024,"name":"rootNode","url":"interfaces/roosterjs_editor_types.region.html#rootnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1023,"kind":1024,"name":"nodeBefore","url":"interfaces/roosterjs_editor_types.region.html#nodebefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1024,"kind":1024,"name":"nodeAfter","url":"interfaces/roosterjs_editor_types.region.html#nodeafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1025,"kind":1024,"name":"skipTags","url":"interfaces/roosterjs_editor_types.region.html#skiptags","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.Region"},{"id":1026,"kind":256,"name":"RegionBase","url":"interfaces/roosterjs_editor_types.regionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1027,"kind":1024,"name":"rootNode","url":"interfaces/roosterjs_editor_types.regionbase.html#rootnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1028,"kind":1024,"name":"nodeBefore","url":"interfaces/roosterjs_editor_types.regionbase.html#nodebefore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1029,"kind":1024,"name":"nodeAfter","url":"interfaces/roosterjs_editor_types.regionbase.html#nodeafter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1030,"kind":1024,"name":"skipTags","url":"interfaces/roosterjs_editor_types.regionbase.html#skiptags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.RegionBase"},{"id":1031,"kind":256,"name":"SelectionPath","url":"interfaces/roosterjs_editor_types.selectionpath.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1032,"kind":1024,"name":"start","url":"interfaces/roosterjs_editor_types.selectionpath.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionPath"},{"id":1033,"kind":1024,"name":"end","url":"interfaces/roosterjs_editor_types.selectionpath.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionPath"},{"id":1034,"kind":256,"name":"Snapshots","url":"interfaces/roosterjs_editor_types.snapshots.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1035,"kind":1024,"name":"snapshots","url":"interfaces/roosterjs_editor_types.snapshots.html#snapshots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1036,"kind":1024,"name":"totalSize","url":"interfaces/roosterjs_editor_types.snapshots.html#totalsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1037,"kind":1024,"name":"currentIndex","url":"interfaces/roosterjs_editor_types.snapshots.html#currentindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1038,"kind":1024,"name":"autoCompleteIndex","url":"interfaces/roosterjs_editor_types.snapshots.html#autocompleteindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1039,"kind":1024,"name":"maxSize","url":"interfaces/roosterjs_editor_types.snapshots.html#maxsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshots"},{"id":1040,"kind":256,"name":"ContentMetadataBase","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1041,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentMetadataBase"},{"id":1042,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.contentmetadatabase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ContentMetadataBase"},{"id":1043,"kind":256,"name":"NormalContentMetadata","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1044,"kind":1024,"name":"start","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#start","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1045,"kind":1024,"name":"end","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#end","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1046,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1047,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.normalcontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalContentMetadata"},{"id":1048,"kind":256,"name":"TableContentMetadata","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1049,"kind":1024,"name":"tableId","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#tableid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1050,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1051,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1052,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1053,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.tablecontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableContentMetadata"},{"id":1054,"kind":256,"name":"ImageContentMetadata","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1055,"kind":1024,"name":"imageId","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#imageid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1056,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1057,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.imagecontentmetadata.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageContentMetadata"},{"id":1058,"kind":4194304,"name":"ContentMetadata","url":"modules/roosterjs_editor_types.html#contentmetadata","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1059,"kind":256,"name":"Snapshot","url":"interfaces/roosterjs_editor_types.snapshot.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1060,"kind":1024,"name":"html","url":"interfaces/roosterjs_editor_types.snapshot.html#html","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1061,"kind":1024,"name":"metadata","url":"interfaces/roosterjs_editor_types.snapshot.html#metadata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1062,"kind":1024,"name":"knownColors","url":"interfaces/roosterjs_editor_types.snapshot.html#knowncolors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1063,"kind":1024,"name":"entityStates","url":"interfaces/roosterjs_editor_types.snapshot.html#entitystates","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Snapshot"},{"id":1064,"kind":256,"name":"EntityState","url":"interfaces/roosterjs_editor_types.entitystate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1065,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.entitystate.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1066,"kind":1024,"name":"id","url":"interfaces/roosterjs_editor_types.entitystate.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1067,"kind":1024,"name":"state","url":"interfaces/roosterjs_editor_types.entitystate.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityState"},{"id":1068,"kind":256,"name":"TableFormat","url":"interfaces/roosterjs_editor_types.tableformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1069,"kind":1024,"name":"topBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#topbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1070,"kind":1024,"name":"bottomBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#bottombordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1071,"kind":1024,"name":"verticalBorderColor","url":"interfaces/roosterjs_editor_types.tableformat.html#verticalbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1072,"kind":1024,"name":"hasHeaderRow","url":"interfaces/roosterjs_editor_types.tableformat.html#hasheaderrow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1073,"kind":1024,"name":"headerRowColor","url":"interfaces/roosterjs_editor_types.tableformat.html#headerrowcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1074,"kind":1024,"name":"hasFirstColumn","url":"interfaces/roosterjs_editor_types.tableformat.html#hasfirstcolumn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1075,"kind":1024,"name":"hasBandedColumns","url":"interfaces/roosterjs_editor_types.tableformat.html#hasbandedcolumns","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1076,"kind":1024,"name":"hasBandedRows","url":"interfaces/roosterjs_editor_types.tableformat.html#hasbandedrows","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1077,"kind":1024,"name":"bgColorEven","url":"interfaces/roosterjs_editor_types.tableformat.html#bgcoloreven","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1078,"kind":1024,"name":"bgColorOdd","url":"interfaces/roosterjs_editor_types.tableformat.html#bgcolorodd","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1079,"kind":1024,"name":"tableBorderFormat","url":"interfaces/roosterjs_editor_types.tableformat.html#tableborderformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1080,"kind":1024,"name":"keepCellShade","url":"interfaces/roosterjs_editor_types.tableformat.html#keepcellshade","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1081,"kind":1024,"name":"verticalAlign","url":"interfaces/roosterjs_editor_types.tableformat.html#verticalalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFormat"},{"id":1082,"kind":4194304,"name":"TableCellMetadataFormat","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1083,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TableCellMetadataFormat"},{"id":1084,"kind":1024,"name":"bgColorOverride","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25.bgcoloroverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.TableCellMetadataFormat.__type"},{"id":1085,"kind":1024,"name":"vAlignOverride","url":"modules/roosterjs_editor_types.html#tablecellmetadataformat.__type-25.valignoverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-editor-types.TableCellMetadataFormat.__type"},{"id":1086,"kind":256,"name":"TableSelection","url":"interfaces/roosterjs_editor_types.tableselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1087,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_editor_types.tableselection.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelection"},{"id":1088,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_editor_types.tableselection.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelection"},{"id":1089,"kind":256,"name":"Coordinates","url":"interfaces/roosterjs_editor_types.coordinates.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1090,"kind":1024,"name":"x","url":"interfaces/roosterjs_editor_types.coordinates.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Coordinates"},{"id":1091,"kind":1024,"name":"y","url":"interfaces/roosterjs_editor_types.coordinates.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.Coordinates"},{"id":1092,"kind":256,"name":"HtmlSanitizerOptions","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1093,"kind":1024,"name":"elementCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#elementcallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1094,"kind":1024,"name":"attributeCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#attributecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1095,"kind":1024,"name":"cssStyleCallbacks","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#cssstylecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1096,"kind":1024,"name":"additionalTagReplacements","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionaltagreplacements","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1097,"kind":1024,"name":"additionalAllowedAttributes","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalallowedattributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1098,"kind":1024,"name":"additionalAllowedCssClasses","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalallowedcssclasses","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1099,"kind":1024,"name":"additionalDefaultStyleValues","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionaldefaultstylevalues","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1100,"kind":1024,"name":"additionalGlobalStyleNodes","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalglobalstylenodes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1101,"kind":1024,"name":"additionalPredefinedCssForElement","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#additionalpredefinedcssforelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1102,"kind":1024,"name":"preserveHtmlComments","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#preservehtmlcomments","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1103,"kind":1024,"name":"unknownTagReplacement","url":"interfaces/roosterjs_editor_types.htmlsanitizeroptions.html#unknowntagreplacement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.HtmlSanitizerOptions"},{"id":1104,"kind":256,"name":"SanitizeHtmlOptions","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1105,"kind":1024,"name":"currentElementOrStyle","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#currentelementorstyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1106,"kind":1024,"name":"convertCssOnly","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#convertcssonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1107,"kind":1024,"name":"elementCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#elementcallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1108,"kind":1024,"name":"attributeCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#attributecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1109,"kind":1024,"name":"cssStyleCallbacks","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#cssstylecallbacks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1110,"kind":1024,"name":"additionalTagReplacements","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionaltagreplacements","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1111,"kind":1024,"name":"additionalAllowedAttributes","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalallowedattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1112,"kind":1024,"name":"additionalAllowedCssClasses","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalallowedcssclasses","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1113,"kind":1024,"name":"additionalDefaultStyleValues","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionaldefaultstylevalues","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1114,"kind":1024,"name":"additionalGlobalStyleNodes","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalglobalstylenodes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1115,"kind":1024,"name":"additionalPredefinedCssForElement","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#additionalpredefinedcssforelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1116,"kind":1024,"name":"preserveHtmlComments","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#preservehtmlcomments","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1117,"kind":1024,"name":"unknownTagReplacement","url":"interfaces/roosterjs_editor_types.sanitizehtmloptions.html#unknowntagreplacement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.SanitizeHtmlOptions"},{"id":1118,"kind":256,"name":"TargetWindowBase","url":"interfaces/roosterjs_editor_types.targetwindowbase.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1119,"kind":1024,"name":"Range","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#range","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1120,"kind":1024,"name":"Node","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1121,"kind":1024,"name":"ParentNode","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#parentnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1122,"kind":1024,"name":"Element","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1123,"kind":1024,"name":"HTMLElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1124,"kind":1024,"name":"HTMLUnknownElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlunknownelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1125,"kind":1024,"name":"HTMLUListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlulistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1126,"kind":1024,"name":"HTMLTrackElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltrackelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1127,"kind":1024,"name":"HTMLTitleElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltitleelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1128,"kind":1024,"name":"HTMLTimeElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltimeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1129,"kind":1024,"name":"HTMLTextAreaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltextareaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1130,"kind":1024,"name":"HTMLTemplateElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltemplateelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1131,"kind":1024,"name":"HTMLTableSectionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablesectionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1132,"kind":1024,"name":"HTMLTableRowElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablerowelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1133,"kind":1024,"name":"HTMLTableElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltableelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1134,"kind":1024,"name":"HTMLTableColElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecolelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1135,"kind":1024,"name":"HTMLTableCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1136,"kind":1024,"name":"HTMLTableHeaderCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltableheadercellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1137,"kind":1024,"name":"HTMLTableDataCellElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltabledatacellelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1138,"kind":1024,"name":"HTMLTableCaptionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmltablecaptionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1139,"kind":1024,"name":"HTMLStyleElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlstyleelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1140,"kind":1024,"name":"HTMLSpanElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlspanelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1141,"kind":1024,"name":"HTMLSourceElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlsourceelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1142,"kind":1024,"name":"HTMLSlotElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlslotelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1143,"kind":1024,"name":"HTMLSelectElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlselectelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1144,"kind":1024,"name":"HTMLScriptElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlscriptelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1145,"kind":1024,"name":"HTMLQuoteElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlquoteelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1146,"kind":1024,"name":"HTMLProgressElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlprogresselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1147,"kind":1024,"name":"HTMLPreElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlpreelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1148,"kind":1024,"name":"HTMLPictureElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlpictureelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1149,"kind":1024,"name":"HTMLParamElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlparamelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1150,"kind":1024,"name":"HTMLParagraphElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlparagraphelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1151,"kind":1024,"name":"HTMLOutputElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloutputelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1152,"kind":1024,"name":"HTMLOptionElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloptionelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1153,"kind":1024,"name":"HTMLOptGroupElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmloptgroupelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1154,"kind":1024,"name":"HTMLObjectElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlobjectelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1155,"kind":1024,"name":"HTMLOListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlolistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1156,"kind":1024,"name":"HTMLModElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmodelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1157,"kind":1024,"name":"HTMLMeterElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmeterelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1158,"kind":1024,"name":"HTMLMetaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmetaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1159,"kind":1024,"name":"HTMLMenuElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmenuelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1160,"kind":1024,"name":"HTMLMediaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmediaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1161,"kind":1024,"name":"HTMLVideoElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlvideoelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1162,"kind":1024,"name":"HTMLAudioElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlaudioelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1163,"kind":1024,"name":"HTMLMarqueeElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmarqueeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1164,"kind":1024,"name":"HTMLMapElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlmapelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1165,"kind":1024,"name":"HTMLLinkElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllinkelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1166,"kind":1024,"name":"HTMLLegendElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllegendelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1167,"kind":1024,"name":"HTMLLabelElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllabelelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1168,"kind":1024,"name":"HTMLLIElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmllielement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1169,"kind":1024,"name":"HTMLInputElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlinputelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1170,"kind":1024,"name":"HTMLImageElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlimageelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1171,"kind":1024,"name":"HTMLIFrameElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmliframeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1172,"kind":1024,"name":"HTMLHtmlElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlhtmlelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1173,"kind":1024,"name":"HTMLHeadingElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlheadingelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1174,"kind":1024,"name":"HTMLHeadElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlheadelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1175,"kind":1024,"name":"HTMLHRElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlhrelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1176,"kind":1024,"name":"HTMLFrameSetElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlframesetelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1177,"kind":1024,"name":"HTMLFrameElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlframeelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1178,"kind":1024,"name":"HTMLFormElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlformelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1179,"kind":1024,"name":"HTMLFontElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlfontelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1180,"kind":1024,"name":"HTMLFieldSetElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlfieldsetelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1181,"kind":1024,"name":"HTMLEmbedElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlembedelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1182,"kind":1024,"name":"HTMLDivElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldivelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1183,"kind":1024,"name":"HTMLDirectoryElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldirectoryelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1184,"kind":1024,"name":"HTMLDialogElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldialogelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1185,"kind":1024,"name":"HTMLDetailsElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldetailselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1186,"kind":1024,"name":"HTMLDataListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldatalistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1187,"kind":1024,"name":"HTMLDataElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldataelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1188,"kind":1024,"name":"HTMLDListElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldlistelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1189,"kind":1024,"name":"HTMLCanvasElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlcanvaselement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1190,"kind":1024,"name":"HTMLButtonElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbuttonelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1191,"kind":1024,"name":"HTMLBodyElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbodyelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1192,"kind":1024,"name":"HTMLBaseElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbaseelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1193,"kind":1024,"name":"HTMLBRElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlbrelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1194,"kind":1024,"name":"HTMLAreaElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlareaelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1195,"kind":1024,"name":"HTMLAnchorElement","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmlanchorelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1196,"kind":1024,"name":"DocumentType","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#documenttype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1197,"kind":1024,"name":"DocumentFragment","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#documentfragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1198,"kind":1024,"name":"ShadowRoot","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#shadowroot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1199,"kind":1024,"name":"Document","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#document","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1200,"kind":1024,"name":"XMLDocument","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#xmldocument","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1201,"kind":1024,"name":"HTMLDocument","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#htmldocument","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1202,"kind":1024,"name":"ChildNode","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#childnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1203,"kind":1024,"name":"CharacterData","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#characterdata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1204,"kind":1024,"name":"Text","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1205,"kind":1024,"name":"CDATASection","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#cdatasection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1206,"kind":1024,"name":"ProcessingInstruction","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#processinginstruction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1207,"kind":1024,"name":"Comment","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#comment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1208,"kind":1024,"name":"Attr","url":"interfaces/roosterjs_editor_types.targetwindowbase.html#attr","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindowBase"},{"id":1209,"kind":256,"name":"TargetWindow","url":"interfaces/roosterjs_editor_types.targetwindow.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1210,"kind":1024,"name":"SVGCursorElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#svgcursorelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1211,"kind":1024,"name":"HTMLBaseFontElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbasefontelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1212,"kind":1024,"name":"HTMLAppletElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlappletelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TargetWindow"},{"id":1213,"kind":1024,"name":"Range","url":"interfaces/roosterjs_editor_types.targetwindow.html#range","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1214,"kind":1024,"name":"Node","url":"interfaces/roosterjs_editor_types.targetwindow.html#node","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1215,"kind":1024,"name":"ParentNode","url":"interfaces/roosterjs_editor_types.targetwindow.html#parentnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1216,"kind":1024,"name":"Element","url":"interfaces/roosterjs_editor_types.targetwindow.html#element","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1217,"kind":1024,"name":"HTMLElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1218,"kind":1024,"name":"HTMLUnknownElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlunknownelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1219,"kind":1024,"name":"HTMLUListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlulistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1220,"kind":1024,"name":"HTMLTrackElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltrackelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1221,"kind":1024,"name":"HTMLTitleElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltitleelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1222,"kind":1024,"name":"HTMLTimeElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltimeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1223,"kind":1024,"name":"HTMLTextAreaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltextareaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1224,"kind":1024,"name":"HTMLTemplateElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltemplateelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1225,"kind":1024,"name":"HTMLTableSectionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablesectionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1226,"kind":1024,"name":"HTMLTableRowElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablerowelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1227,"kind":1024,"name":"HTMLTableElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltableelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1228,"kind":1024,"name":"HTMLTableColElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecolelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1229,"kind":1024,"name":"HTMLTableCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1230,"kind":1024,"name":"HTMLTableHeaderCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltableheadercellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1231,"kind":1024,"name":"HTMLTableDataCellElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltabledatacellelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1232,"kind":1024,"name":"HTMLTableCaptionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmltablecaptionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1233,"kind":1024,"name":"HTMLStyleElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlstyleelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1234,"kind":1024,"name":"HTMLSpanElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlspanelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1235,"kind":1024,"name":"HTMLSourceElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlsourceelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1236,"kind":1024,"name":"HTMLSlotElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlslotelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1237,"kind":1024,"name":"HTMLSelectElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlselectelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1238,"kind":1024,"name":"HTMLScriptElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlscriptelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1239,"kind":1024,"name":"HTMLQuoteElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlquoteelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1240,"kind":1024,"name":"HTMLProgressElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlprogresselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1241,"kind":1024,"name":"HTMLPreElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlpreelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1242,"kind":1024,"name":"HTMLPictureElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlpictureelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1243,"kind":1024,"name":"HTMLParamElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlparamelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1244,"kind":1024,"name":"HTMLParagraphElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlparagraphelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1245,"kind":1024,"name":"HTMLOutputElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloutputelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1246,"kind":1024,"name":"HTMLOptionElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloptionelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1247,"kind":1024,"name":"HTMLOptGroupElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmloptgroupelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1248,"kind":1024,"name":"HTMLObjectElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlobjectelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1249,"kind":1024,"name":"HTMLOListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlolistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1250,"kind":1024,"name":"HTMLModElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmodelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1251,"kind":1024,"name":"HTMLMeterElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmeterelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1252,"kind":1024,"name":"HTMLMetaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmetaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1253,"kind":1024,"name":"HTMLMenuElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmenuelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1254,"kind":1024,"name":"HTMLMediaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmediaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1255,"kind":1024,"name":"HTMLVideoElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlvideoelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1256,"kind":1024,"name":"HTMLAudioElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlaudioelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1257,"kind":1024,"name":"HTMLMarqueeElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmarqueeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1258,"kind":1024,"name":"HTMLMapElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlmapelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1259,"kind":1024,"name":"HTMLLinkElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllinkelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1260,"kind":1024,"name":"HTMLLegendElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllegendelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1261,"kind":1024,"name":"HTMLLabelElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllabelelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1262,"kind":1024,"name":"HTMLLIElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmllielement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1263,"kind":1024,"name":"HTMLInputElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlinputelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1264,"kind":1024,"name":"HTMLImageElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlimageelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1265,"kind":1024,"name":"HTMLIFrameElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmliframeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1266,"kind":1024,"name":"HTMLHtmlElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlhtmlelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1267,"kind":1024,"name":"HTMLHeadingElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlheadingelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1268,"kind":1024,"name":"HTMLHeadElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlheadelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1269,"kind":1024,"name":"HTMLHRElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlhrelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1270,"kind":1024,"name":"HTMLFrameSetElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlframesetelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1271,"kind":1024,"name":"HTMLFrameElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlframeelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1272,"kind":1024,"name":"HTMLFormElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlformelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1273,"kind":1024,"name":"HTMLFontElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlfontelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1274,"kind":1024,"name":"HTMLFieldSetElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlfieldsetelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1275,"kind":1024,"name":"HTMLEmbedElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlembedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1276,"kind":1024,"name":"HTMLDivElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldivelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1277,"kind":1024,"name":"HTMLDirectoryElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldirectoryelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1278,"kind":1024,"name":"HTMLDialogElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldialogelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1279,"kind":1024,"name":"HTMLDetailsElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldetailselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1280,"kind":1024,"name":"HTMLDataListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldatalistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1281,"kind":1024,"name":"HTMLDataElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldataelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1282,"kind":1024,"name":"HTMLDListElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldlistelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1283,"kind":1024,"name":"HTMLCanvasElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlcanvaselement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1284,"kind":1024,"name":"HTMLButtonElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbuttonelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1285,"kind":1024,"name":"HTMLBodyElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbodyelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1286,"kind":1024,"name":"HTMLBaseElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbaseelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1287,"kind":1024,"name":"HTMLBRElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlbrelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1288,"kind":1024,"name":"HTMLAreaElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlareaelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1289,"kind":1024,"name":"HTMLAnchorElement","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmlanchorelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1290,"kind":1024,"name":"DocumentType","url":"interfaces/roosterjs_editor_types.targetwindow.html#documenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1291,"kind":1024,"name":"DocumentFragment","url":"interfaces/roosterjs_editor_types.targetwindow.html#documentfragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1292,"kind":1024,"name":"ShadowRoot","url":"interfaces/roosterjs_editor_types.targetwindow.html#shadowroot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1293,"kind":1024,"name":"Document","url":"interfaces/roosterjs_editor_types.targetwindow.html#document","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1294,"kind":1024,"name":"XMLDocument","url":"interfaces/roosterjs_editor_types.targetwindow.html#xmldocument","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1295,"kind":1024,"name":"HTMLDocument","url":"interfaces/roosterjs_editor_types.targetwindow.html#htmldocument","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1296,"kind":1024,"name":"ChildNode","url":"interfaces/roosterjs_editor_types.targetwindow.html#childnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1297,"kind":1024,"name":"CharacterData","url":"interfaces/roosterjs_editor_types.targetwindow.html#characterdata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1298,"kind":1024,"name":"Text","url":"interfaces/roosterjs_editor_types.targetwindow.html#text","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1299,"kind":1024,"name":"CDATASection","url":"interfaces/roosterjs_editor_types.targetwindow.html#cdatasection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1300,"kind":1024,"name":"ProcessingInstruction","url":"interfaces/roosterjs_editor_types.targetwindow.html#processinginstruction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1301,"kind":1024,"name":"Comment","url":"interfaces/roosterjs_editor_types.targetwindow.html#comment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1302,"kind":1024,"name":"Attr","url":"interfaces/roosterjs_editor_types.targetwindow.html#attr","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TargetWindow"},{"id":1303,"kind":256,"name":"IEditor","url":"interfaces/roosterjs_editor_types.ieditor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1304,"kind":2048,"name":"dispose","url":"interfaces/roosterjs_editor_types.ieditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1305,"kind":2048,"name":"isDisposed","url":"interfaces/roosterjs_editor_types.ieditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1306,"kind":2048,"name":"insertNode","url":"interfaces/roosterjs_editor_types.ieditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1307,"kind":2048,"name":"deleteNode","url":"interfaces/roosterjs_editor_types.ieditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1308,"kind":2048,"name":"replaceNode","url":"interfaces/roosterjs_editor_types.ieditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1309,"kind":2048,"name":"getBlockElementAtNode","url":"interfaces/roosterjs_editor_types.ieditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1310,"kind":2048,"name":"contains","url":"interfaces/roosterjs_editor_types.ieditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1311,"kind":2048,"name":"queryElements","url":"interfaces/roosterjs_editor_types.ieditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1312,"kind":2048,"name":"collapseNodes","url":"interfaces/roosterjs_editor_types.ieditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1313,"kind":2048,"name":"isEmpty","url":"interfaces/roosterjs_editor_types.ieditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1314,"kind":2048,"name":"getContent","url":"interfaces/roosterjs_editor_types.ieditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1315,"kind":2048,"name":"setContent","url":"interfaces/roosterjs_editor_types.ieditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1316,"kind":2048,"name":"insertContent","url":"interfaces/roosterjs_editor_types.ieditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1317,"kind":2048,"name":"deleteSelectedContent","url":"interfaces/roosterjs_editor_types.ieditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1318,"kind":2048,"name":"paste","url":"interfaces/roosterjs_editor_types.ieditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1319,"kind":2048,"name":"getSelectionRange","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1320,"kind":2048,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1321,"kind":2048,"name":"getSelectionPath","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1322,"kind":2048,"name":"hasFocus","url":"interfaces/roosterjs_editor_types.ieditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1323,"kind":2048,"name":"focus","url":"interfaces/roosterjs_editor_types.ieditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1324,"kind":2048,"name":"select","url":"interfaces/roosterjs_editor_types.ieditor.html#select","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1325,"kind":2048,"name":"getFocusedPosition","url":"interfaces/roosterjs_editor_types.ieditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1326,"kind":2048,"name":"getElementAtCursor","url":"interfaces/roosterjs_editor_types.ieditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1327,"kind":2048,"name":"isPositionAtBeginning","url":"interfaces/roosterjs_editor_types.ieditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1328,"kind":2048,"name":"getSelectedRegions","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1329,"kind":2048,"name":"addDomEventHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1330,"kind":2048,"name":"triggerPluginEvent","url":"interfaces/roosterjs_editor_types.ieditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1331,"kind":2048,"name":"triggerContentChangedEvent","url":"interfaces/roosterjs_editor_types.ieditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1332,"kind":2048,"name":"undo","url":"interfaces/roosterjs_editor_types.ieditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1333,"kind":2048,"name":"redo","url":"interfaces/roosterjs_editor_types.ieditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1334,"kind":2048,"name":"addUndoSnapshot","url":"interfaces/roosterjs_editor_types.ieditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1335,"kind":2048,"name":"getUndoState","url":"interfaces/roosterjs_editor_types.ieditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1336,"kind":2048,"name":"getDocument","url":"interfaces/roosterjs_editor_types.ieditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1337,"kind":2048,"name":"getScrollContainer","url":"interfaces/roosterjs_editor_types.ieditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1338,"kind":2048,"name":"getCustomData","url":"interfaces/roosterjs_editor_types.ieditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-editor-types.IEditor"},{"id":1339,"kind":2048,"name":"isInIME","url":"interfaces/roosterjs_editor_types.ieditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1340,"kind":2048,"name":"getDefaultFormat","url":"interfaces/roosterjs_editor_types.ieditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1341,"kind":2048,"name":"getBodyTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1342,"kind":2048,"name":"getSelectionTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1343,"kind":2048,"name":"getBlockTraverser","url":"interfaces/roosterjs_editor_types.ieditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1344,"kind":2048,"name":"getContentSearcherOfCursor","url":"interfaces/roosterjs_editor_types.ieditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1345,"kind":2048,"name":"runAsync","url":"interfaces/roosterjs_editor_types.ieditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1346,"kind":2048,"name":"setEditorDomAttribute","url":"interfaces/roosterjs_editor_types.ieditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1347,"kind":2048,"name":"getEditorDomAttribute","url":"interfaces/roosterjs_editor_types.ieditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1348,"kind":2048,"name":"getRelativeDistanceToEditor","url":"interfaces/roosterjs_editor_types.ieditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1349,"kind":2048,"name":"addContentEditFeature","url":"interfaces/roosterjs_editor_types.ieditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1350,"kind":2048,"name":"removeContentEditFeature","url":"interfaces/roosterjs_editor_types.ieditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1351,"kind":2048,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_editor_types.ieditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1352,"kind":2048,"name":"getPendableFormatState","url":"interfaces/roosterjs_editor_types.ieditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1353,"kind":2048,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_editor_types.ieditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1354,"kind":2048,"name":"setDarkModeState","url":"interfaces/roosterjs_editor_types.ieditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1355,"kind":2048,"name":"isDarkMode","url":"interfaces/roosterjs_editor_types.ieditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1356,"kind":2048,"name":"transformToDarkColor","url":"interfaces/roosterjs_editor_types.ieditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1357,"kind":2048,"name":"getDarkColorHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1358,"kind":2048,"name":"startShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1359,"kind":2048,"name":"stopShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1360,"kind":2048,"name":"isInShadowEdit","url":"interfaces/roosterjs_editor_types.ieditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1361,"kind":2048,"name":"isFeatureEnabled","url":"interfaces/roosterjs_editor_types.ieditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1362,"kind":2048,"name":"getTrustedHTMLHandler","url":"interfaces/roosterjs_editor_types.ieditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1363,"kind":2048,"name":"getZoomScale","url":"interfaces/roosterjs_editor_types.ieditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1364,"kind":2048,"name":"setZoomScale","url":"interfaces/roosterjs_editor_types.ieditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1365,"kind":2048,"name":"getSizeTransformer","url":"interfaces/roosterjs_editor_types.ieditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1366,"kind":2048,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.ieditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.IEditor"},{"id":1367,"kind":256,"name":"DarkColorHandler","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1368,"kind":2048,"name":"registerColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#registercolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1369,"kind":2048,"name":"reset","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#reset","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1370,"kind":2048,"name":"parseColorValue","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#parsecolorvalue","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1371,"kind":2048,"name":"getKnownColorsCopy","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#getknowncolorscopy","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1372,"kind":2048,"name":"findLightColorFromDarkColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#findlightcolorfromdarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1373,"kind":2048,"name":"transformElementColor","url":"interfaces/roosterjs_editor_types.darkcolorhandler.html#transformelementcolor","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.DarkColorHandler"},{"id":1374,"kind":256,"name":"ColorKeyAndValue","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1375,"kind":1024,"name":"key","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1376,"kind":1024,"name":"lightModeColor","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#lightmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1377,"kind":1024,"name":"darkModeColor","url":"interfaces/roosterjs_editor_types.colorkeyandvalue.html#darkmodecolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ColorKeyAndValue"},{"id":1378,"kind":4194304,"name":"ContentEditFeature","url":"modules/roosterjs_editor_types.html#contenteditfeature","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1379,"kind":256,"name":"GenericContentEditFeature","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1380,"kind":1024,"name":"keys","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1381,"kind":1024,"name":"shouldHandleEvent","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#shouldhandleevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1382,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1383,"kind":1024,"name":"handleEvent","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#handleevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1384,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1385,"kind":1024,"name":"allowFunctionKeys","url":"interfaces/roosterjs_editor_types.genericcontenteditfeature.html#allowfunctionkeys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.GenericContentEditFeature"},{"id":1386,"kind":256,"name":"BuildInEditFeature","url":"interfaces/roosterjs_editor_types.buildineditfeature.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1387,"kind":1024,"name":"defaultDisabled","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#defaultdisabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1388,"kind":1024,"name":"keys","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1389,"kind":1024,"name":"shouldHandleEvent","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#shouldhandleevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1390,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1391,"kind":1024,"name":"handleEvent","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#handleevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1392,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1393,"kind":1024,"name":"allowFunctionKeys","url":"interfaces/roosterjs_editor_types.buildineditfeature.html#allowfunctionkeys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BuildInEditFeature"},{"id":1394,"kind":256,"name":"EditorPlugin","url":"interfaces/roosterjs_editor_types.editorplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1395,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.editorplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1396,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1397,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.editorplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1398,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1399,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.editorplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1400,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1401,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.editorplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1402,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1403,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.editorplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1404,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorPlugin"},{"id":1405,"kind":256,"name":"PluginWithState","url":"interfaces/roosterjs_editor_types.pluginwithstate.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1406,"kind":2048,"name":"getState","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#getstate","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1407,"kind":1024,"name":"getName","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1408,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1409,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1410,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1411,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1412,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1413,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1414,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1415,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.PluginWithState"},{"id":1416,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pluginwithstate.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PluginWithState"},{"id":1417,"kind":256,"name":"CorePlugins","url":"interfaces/roosterjs_editor_types.coreplugins.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1418,"kind":1024,"name":"edit","url":"interfaces/roosterjs_editor_types.coreplugins.html#edit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1419,"kind":1024,"name":"undo","url":"interfaces/roosterjs_editor_types.coreplugins.html#undo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1420,"kind":1024,"name":"typeInContainer","url":"interfaces/roosterjs_editor_types.coreplugins.html#typeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1421,"kind":1024,"name":"domEvent","url":"interfaces/roosterjs_editor_types.coreplugins.html#domevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1422,"kind":1024,"name":"pendingFormatState","url":"interfaces/roosterjs_editor_types.coreplugins.html#pendingformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1423,"kind":1024,"name":"mouseUp","url":"interfaces/roosterjs_editor_types.coreplugins.html#mouseup","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1424,"kind":1024,"name":"typeAfterLink","url":"interfaces/roosterjs_editor_types.coreplugins.html#typeafterlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1425,"kind":1024,"name":"copyPaste","url":"interfaces/roosterjs_editor_types.coreplugins.html#copypaste","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1426,"kind":1024,"name":"entity","url":"interfaces/roosterjs_editor_types.coreplugins.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1427,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_editor_types.coreplugins.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1428,"kind":1024,"name":"normalizeTable","url":"interfaces/roosterjs_editor_types.coreplugins.html#normalizetable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1429,"kind":1024,"name":"lifecycle","url":"interfaces/roosterjs_editor_types.coreplugins.html#lifecycle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CorePlugins"},{"id":1430,"kind":4194304,"name":"PluginKey","url":"modules/roosterjs_editor_types.html#pluginkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1431,"kind":4194304,"name":"KeyOfStatePlugin","url":"modules/roosterjs_editor_types.html#keyofstateplugin","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1432,"kind":4194304,"name":"GenericPluginState","url":"modules/roosterjs_editor_types.html#genericpluginstate","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1433,"kind":4194304,"name":"PluginState","url":"modules/roosterjs_editor_types.html#pluginstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1434,"kind":4194304,"name":"StatePluginKeys","url":"modules/roosterjs_editor_types.html#statepluginkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1435,"kind":4194304,"name":"TypeOfStatePlugin","url":"modules/roosterjs_editor_types.html#typeofstateplugin","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1436,"kind":256,"name":"EditorCore","url":"interfaces/roosterjs_editor_types.editorcore.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1437,"kind":1024,"name":"contentDiv","url":"interfaces/roosterjs_editor_types.editorcore.html#contentdiv","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1438,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_editor_types.editorcore.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1439,"kind":1024,"name":"api","url":"interfaces/roosterjs_editor_types.editorcore.html#api","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1440,"kind":1024,"name":"originalApi","url":"interfaces/roosterjs_editor_types.editorcore.html#originalapi","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1441,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_editor_types.editorcore.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1442,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.editorcore.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1443,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_editor_types.editorcore.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1444,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.editorcore.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1445,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editorcore.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1446,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_editor_types.editorcore.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1447,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_editor_types.editorcore.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorCore"},{"id":1448,"kind":2048,"name":"edit","url":"interfaces/roosterjs_editor_types.editorcore.html#edit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1449,"kind":2048,"name":"undo","url":"interfaces/roosterjs_editor_types.editorcore.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1450,"kind":2048,"name":"domEvent","url":"interfaces/roosterjs_editor_types.editorcore.html#domevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1451,"kind":2048,"name":"pendingFormatState","url":"interfaces/roosterjs_editor_types.editorcore.html#pendingformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1452,"kind":2048,"name":"copyPaste","url":"interfaces/roosterjs_editor_types.editorcore.html#copypaste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1453,"kind":2048,"name":"entity","url":"interfaces/roosterjs_editor_types.editorcore.html#entity","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1454,"kind":2048,"name":"lifecycle","url":"interfaces/roosterjs_editor_types.editorcore.html#lifecycle","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.EditorCore"},{"id":1455,"kind":4194304,"name":"AddUndoSnapshot","url":"modules/roosterjs_editor_types.html#addundosnapshot","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1456,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#addundosnapshot.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AddUndoSnapshot"},{"id":1457,"kind":4194304,"name":"AttachDomEvent","url":"modules/roosterjs_editor_types.html#attachdomevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1458,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#attachdomevent.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AttachDomEvent"},{"id":1459,"kind":256,"name":"CoreApiMap","url":"interfaces/roosterjs_editor_types.coreapimap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1460,"kind":1024,"name":"addUndoSnapshot","url":"interfaces/roosterjs_editor_types.coreapimap.html#addundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1461,"kind":1024,"name":"attachDomEvent","url":"interfaces/roosterjs_editor_types.coreapimap.html#attachdomevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1462,"kind":1024,"name":"createPasteFragment","url":"interfaces/roosterjs_editor_types.coreapimap.html#createpastefragment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1463,"kind":1024,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_editor_types.coreapimap.html#ensuretypeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1464,"kind":1024,"name":"focus","url":"interfaces/roosterjs_editor_types.coreapimap.html#focus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1465,"kind":1024,"name":"getContent","url":"interfaces/roosterjs_editor_types.coreapimap.html#getcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1466,"kind":1024,"name":"getSelectionRange","url":"interfaces/roosterjs_editor_types.coreapimap.html#getselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1467,"kind":1024,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_editor_types.coreapimap.html#getselectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1468,"kind":1024,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_editor_types.coreapimap.html#getstylebasedformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1469,"kind":1024,"name":"getPendableFormatState","url":"interfaces/roosterjs_editor_types.coreapimap.html#getpendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1470,"kind":1024,"name":"hasFocus","url":"interfaces/roosterjs_editor_types.coreapimap.html#hasfocus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1471,"kind":1024,"name":"insertNode","url":"interfaces/roosterjs_editor_types.coreapimap.html#insertnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1472,"kind":1024,"name":"restoreUndoSnapshot","url":"interfaces/roosterjs_editor_types.coreapimap.html#restoreundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1473,"kind":1024,"name":"select","url":"interfaces/roosterjs_editor_types.coreapimap.html#select","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1474,"kind":1024,"name":"selectRange","url":"interfaces/roosterjs_editor_types.coreapimap.html#selectrange","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1475,"kind":1024,"name":"setContent","url":"interfaces/roosterjs_editor_types.coreapimap.html#setcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1476,"kind":1024,"name":"switchShadowEdit","url":"interfaces/roosterjs_editor_types.coreapimap.html#switchshadowedit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1477,"kind":1024,"name":"transformColor","url":"interfaces/roosterjs_editor_types.coreapimap.html#transformcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1478,"kind":1024,"name":"triggerEvent","url":"interfaces/roosterjs_editor_types.coreapimap.html#triggerevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1479,"kind":1024,"name":"selectTable","url":"interfaces/roosterjs_editor_types.coreapimap.html#selecttable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1480,"kind":1024,"name":"selectImage","url":"interfaces/roosterjs_editor_types.coreapimap.html#selectimage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CoreApiMap"},{"id":1481,"kind":4194304,"name":"CreatePasteFragment","url":"modules/roosterjs_editor_types.html#createpastefragment","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1482,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#createpastefragment.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CreatePasteFragment"},{"id":1483,"kind":4194304,"name":"EnsureTypeInContainer","url":"modules/roosterjs_editor_types.html#ensuretypeincontainer","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1484,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#ensuretypeincontainer.__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.EnsureTypeInContainer"},{"id":1485,"kind":4194304,"name":"Focus","url":"modules/roosterjs_editor_types.html#focus","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1486,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#focus.__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.Focus"},{"id":1487,"kind":4194304,"name":"GetContent","url":"modules/roosterjs_editor_types.html#getcontent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1488,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getcontent.__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetContent"},{"id":1489,"kind":4194304,"name":"GetSelectionRange","url":"modules/roosterjs_editor_types.html#getselectionrange","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1490,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getselectionrange.__type-12","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetSelectionRange"},{"id":1491,"kind":4194304,"name":"GetSelectionRangeEx","url":"modules/roosterjs_editor_types.html#getselectionrangeex","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1492,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getselectionrangeex.__type-13","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetSelectionRangeEx"},{"id":1493,"kind":4194304,"name":"GetStyleBasedFormatState","url":"modules/roosterjs_editor_types.html#getstylebasedformatstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1494,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getstylebasedformatstate.__type-14","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetStyleBasedFormatState"},{"id":1495,"kind":4194304,"name":"GetPendableFormatState","url":"modules/roosterjs_editor_types.html#getpendableformatstate","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1496,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#getpendableformatstate.__type-11","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.GetPendableFormatState"},{"id":1497,"kind":4194304,"name":"HasFocus","url":"modules/roosterjs_editor_types.html#hasfocus","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1498,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#hasfocus.__type-15","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.HasFocus"},{"id":1499,"kind":4194304,"name":"InsertNode","url":"modules/roosterjs_editor_types.html#insertnode","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1500,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#insertnode.__type-16","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.InsertNode"},{"id":1501,"kind":4194304,"name":"RestoreUndoSnapshot","url":"modules/roosterjs_editor_types.html#restoreundosnapshot","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1502,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#restoreundosnapshot.__type-17","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.RestoreUndoSnapshot"},{"id":1503,"kind":4194304,"name":"Select","url":"modules/roosterjs_editor_types.html#select","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1504,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#select.__type-18","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.Select"},{"id":1505,"kind":4194304,"name":"SelectRange","url":"modules/roosterjs_editor_types.html#selectrange","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1506,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selectrange.__type-20","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectRange"},{"id":1507,"kind":4194304,"name":"SetContent","url":"modules/roosterjs_editor_types.html#setcontent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1508,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#setcontent.__type-22","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SetContent"},{"id":1509,"kind":4194304,"name":"SwitchShadowEdit","url":"modules/roosterjs_editor_types.html#switchshadowedit","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1510,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#switchshadowedit.__type-24","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SwitchShadowEdit"},{"id":1511,"kind":4194304,"name":"TransformColor","url":"modules/roosterjs_editor_types.html#transformcolor","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1512,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#transformcolor.__type-26","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TransformColor"},{"id":1513,"kind":4194304,"name":"TriggerEvent","url":"modules/roosterjs_editor_types.html#triggerevent","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1514,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#triggerevent.__type-27","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TriggerEvent"},{"id":1515,"kind":4194304,"name":"SelectTable","url":"modules/roosterjs_editor_types.html#selecttable","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1516,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selecttable.__type-21","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectTable"},{"id":1517,"kind":4194304,"name":"SelectImage","url":"modules/roosterjs_editor_types.html#selectimage","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1518,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#selectimage.__type-19","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SelectImage"},{"id":1519,"kind":256,"name":"EditorOptions","url":"interfaces/roosterjs_editor_types.editoroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1520,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_editor_types.editoroptions.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1521,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_editor_types.editoroptions.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1522,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_editor_types.editoroptions.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1523,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_editor_types.editoroptions.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1524,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_editor_types.editoroptions.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1525,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_editor_types.editoroptions.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1526,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_editor_types.editoroptions.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1527,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_editor_types.editoroptions.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1528,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_editor_types.editoroptions.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1529,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1530,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1531,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1532,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1533,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_editor_types.editoroptions.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1534,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_editor_types.editoroptions.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1535,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_editor_types.editoroptions.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1536,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_editor_types.editoroptions.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1537,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_editor_types.editoroptions.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1538,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_editor_types.editoroptions.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1539,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_editor_types.editoroptions.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1540,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_editor_types.editoroptions.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1541,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.editoroptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1542,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_editor_types.editoroptions.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EditorOptions"},{"id":1543,"kind":256,"name":"ContentEditFeatureSettings","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1544,"kind":1024,"name":"autoBullet","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autobullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1545,"kind":1024,"name":"indentWhenTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhentab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1546,"kind":1024,"name":"outdentWhenShiftTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenshifttab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1547,"kind":1024,"name":"outdentWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1548,"kind":1024,"name":"outdentWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1549,"kind":1024,"name":"mergeInNewLineWhenBackspaceOnFirstChar","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#mergeinnewlinewhenbackspaceonfirstchar","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1550,"kind":1024,"name":"maintainListChain","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#maintainlistchain","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1551,"kind":1024,"name":"maintainListChainWhenDelete","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#maintainlistchainwhendelete","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1552,"kind":1024,"name":"autoBulletList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autobulletlist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1553,"kind":1024,"name":"autoNumberingList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autonumberinglist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1554,"kind":1024,"name":"mergeListOnBackspaceAfterList","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#mergelistonbackspaceafterlist","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1555,"kind":1024,"name":"indentWhenAltShiftRight","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhenaltshiftright","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1556,"kind":1024,"name":"outdentWhenAltShiftLeft","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhenaltshiftleft","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1557,"kind":1024,"name":"unquoteWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unquotewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1558,"kind":1024,"name":"unquoteWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unquotewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1559,"kind":1024,"name":"tabInTable","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#tabintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1560,"kind":1024,"name":"upDownInTable","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#updownintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1561,"kind":1024,"name":"indentTableOnTab","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indenttableontab","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1562,"kind":1024,"name":"deleteTableWithBackspace","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#deletetablewithbackspace","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1563,"kind":1024,"name":"insertLineBeforeStructuredNodeFeature","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#insertlinebeforestructurednodefeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1564,"kind":1024,"name":"autoLink","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autolink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1565,"kind":1024,"name":"unlinkWhenBackspaceAfterLink","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#unlinkwhenbackspaceafterlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1566,"kind":1024,"name":"defaultShortcut","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#defaultshortcut","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1567,"kind":1024,"name":"noCycleCursorMove","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#nocyclecursormove","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1568,"kind":1024,"name":"markdownBold","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1569,"kind":1024,"name":"markdownItalic","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1570,"kind":1024,"name":"markdownStrikethru","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdownstrikethru","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1571,"kind":1024,"name":"markdownInlineCode","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#markdowninlinecode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1572,"kind":1024,"name":"clickOnEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#clickonentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1573,"kind":1024,"name":"escapeFromEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#escapefromentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1574,"kind":1024,"name":"enterBeforeReadonlyEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#enterbeforereadonlyentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1575,"kind":1024,"name":"backspaceAfterEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#backspaceafterentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1576,"kind":1024,"name":"deleteBeforeEntity","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#deletebeforeentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1577,"kind":1024,"name":"moveBetweenDelimitersFeature","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#movebetweendelimitersfeature","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1578,"kind":1024,"name":"removeEntityBetweenDelimiters","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removeentitybetweendelimiters","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1579,"kind":1024,"name":"indentWhenTabText","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#indentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1580,"kind":1024,"name":"outdentWhenTabText","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#outdentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1581,"kind":1024,"name":"autoHyphen","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#autohyphen","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1582,"kind":1024,"name":"removeCodeWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removecodewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1583,"kind":1024,"name":"removeCodeWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.contenteditfeaturesettings.html#removecodewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ContentEditFeatureSettings"},{"id":1584,"kind":256,"name":"AutoLinkFeatureSettings","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1585,"kind":1024,"name":"autoLink","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html#autolink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.AutoLinkFeatureSettings"},{"id":1586,"kind":1024,"name":"unlinkWhenBackspaceAfterLink","url":"interfaces/roosterjs_editor_types.autolinkfeaturesettings.html#unlinkwhenbackspaceafterlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.AutoLinkFeatureSettings"},{"id":1587,"kind":256,"name":"CursorFeatureSettings","url":"interfaces/roosterjs_editor_types.cursorfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1588,"kind":1024,"name":"noCycleCursorMove","url":"interfaces/roosterjs_editor_types.cursorfeaturesettings.html#nocyclecursormove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CursorFeatureSettings"},{"id":1589,"kind":256,"name":"EntityFeatureSettings","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1590,"kind":1024,"name":"clickOnEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#clickonentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1591,"kind":1024,"name":"escapeFromEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#escapefromentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1592,"kind":1024,"name":"enterBeforeReadonlyEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#enterbeforereadonlyentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1593,"kind":1024,"name":"backspaceAfterEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#backspaceafterentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1594,"kind":1024,"name":"deleteBeforeEntity","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#deletebeforeentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1595,"kind":1024,"name":"moveBetweenDelimitersFeature","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#movebetweendelimitersfeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1596,"kind":1024,"name":"removeEntityBetweenDelimiters","url":"interfaces/roosterjs_editor_types.entityfeaturesettings.html#removeentitybetweendelimiters","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.EntityFeatureSettings"},{"id":1597,"kind":256,"name":"ListFeatureSettings","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1598,"kind":1024,"name":"autoBullet","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autobullet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1599,"kind":1024,"name":"indentWhenTab","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#indentwhentab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1600,"kind":1024,"name":"outdentWhenShiftTab","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenshifttab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1601,"kind":1024,"name":"outdentWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1602,"kind":1024,"name":"outdentWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1603,"kind":1024,"name":"mergeInNewLineWhenBackspaceOnFirstChar","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#mergeinnewlinewhenbackspaceonfirstchar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1604,"kind":1024,"name":"maintainListChain","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#maintainlistchain","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1605,"kind":1024,"name":"maintainListChainWhenDelete","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#maintainlistchainwhendelete","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1606,"kind":1024,"name":"autoBulletList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autobulletlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1607,"kind":1024,"name":"autoNumberingList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#autonumberinglist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1608,"kind":1024,"name":"mergeListOnBackspaceAfterList","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#mergelistonbackspaceafterlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1609,"kind":1024,"name":"indentWhenAltShiftRight","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#indentwhenaltshiftright","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1610,"kind":1024,"name":"outdentWhenAltShiftLeft","url":"interfaces/roosterjs_editor_types.listfeaturesettings.html#outdentwhenaltshiftleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ListFeatureSettings"},{"id":1611,"kind":256,"name":"MarkdownFeatureSettings","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1612,"kind":1024,"name":"markdownBold","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownbold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1613,"kind":1024,"name":"markdownItalic","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownitalic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1614,"kind":1024,"name":"markdownStrikethru","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdownstrikethru","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1615,"kind":1024,"name":"markdownInlineCode","url":"interfaces/roosterjs_editor_types.markdownfeaturesettings.html#markdowninlinecode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.MarkdownFeatureSettings"},{"id":1616,"kind":256,"name":"QuoteFeatureSettings","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1617,"kind":1024,"name":"unquoteWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html#unquotewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.QuoteFeatureSettings"},{"id":1618,"kind":1024,"name":"unquoteWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.quotefeaturesettings.html#unquotewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.QuoteFeatureSettings"},{"id":1619,"kind":256,"name":"ShortcutFeatureSettings","url":"interfaces/roosterjs_editor_types.shortcutfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1620,"kind":1024,"name":"defaultShortcut","url":"interfaces/roosterjs_editor_types.shortcutfeaturesettings.html#defaultshortcut","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ShortcutFeatureSettings"},{"id":1621,"kind":256,"name":"StructuredNodeFeatureSettings","url":"interfaces/roosterjs_editor_types.structurednodefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1622,"kind":1024,"name":"insertLineBeforeStructuredNodeFeature","url":"interfaces/roosterjs_editor_types.structurednodefeaturesettings.html#insertlinebeforestructurednodefeature","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StructuredNodeFeatureSettings"},{"id":1623,"kind":256,"name":"TableFeatureSettings","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1624,"kind":1024,"name":"tabInTable","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#tabintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1625,"kind":1024,"name":"upDownInTable","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#updownintable","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1626,"kind":1024,"name":"indentTableOnTab","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#indenttableontab","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1627,"kind":1024,"name":"deleteTableWithBackspace","url":"interfaces/roosterjs_editor_types.tablefeaturesettings.html#deletetablewithbackspace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableFeatureSettings"},{"id":1628,"kind":256,"name":"TextFeatureSettings","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1629,"kind":1024,"name":"indentWhenTabText","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#indentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1630,"kind":1024,"name":"outdentWhenTabText","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#outdentwhentabtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1631,"kind":1024,"name":"autoHyphen","url":"interfaces/roosterjs_editor_types.textfeaturesettings.html#autohyphen","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TextFeatureSettings"},{"id":1632,"kind":256,"name":"CodeFeatureSettings","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1633,"kind":1024,"name":"removeCodeWhenEnterOnEmptyLine","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html#removecodewhenenteronemptyline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CodeFeatureSettings"},{"id":1634,"kind":1024,"name":"removeCodeWhenBackspaceOnEmptyFirstLine","url":"interfaces/roosterjs_editor_types.codefeaturesettings.html#removecodewhenbackspaceonemptyfirstline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CodeFeatureSettings"},{"id":1635,"kind":256,"name":"CustomReplacement","url":"interfaces/roosterjs_editor_types.customreplacement.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1636,"kind":1024,"name":"sourceString","url":"interfaces/roosterjs_editor_types.customreplacement.html#sourcestring","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1637,"kind":1024,"name":"replacementHTML","url":"interfaces/roosterjs_editor_types.customreplacement.html#replacementhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1638,"kind":1024,"name":"matchSourceCaseSensitive","url":"interfaces/roosterjs_editor_types.customreplacement.html#matchsourcecasesensitive","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1639,"kind":1024,"name":"shouldReplace","url":"interfaces/roosterjs_editor_types.customreplacement.html#shouldreplace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1640,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customreplacement.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomReplacement"},{"id":1641,"kind":256,"name":"UndoSnapshotsService","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1642,"kind":2048,"name":"canMove","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#canmove","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1643,"kind":2048,"name":"move","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#move","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1644,"kind":2048,"name":"addSnapshot","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#addsnapshot","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1645,"kind":2048,"name":"clearRedo","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#clearredo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1646,"kind":2048,"name":"canUndoAutoComplete","url":"interfaces/roosterjs_editor_types.undosnapshotsservice.html#canundoautocomplete","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-editor-types.UndoSnapshotsService"},{"id":1647,"kind":256,"name":"PickerDataProvider","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1648,"kind":1024,"name":"onInitalize","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#oninitalize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1649,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1650,"kind":1024,"name":"onDispose","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#ondispose","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1651,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1652,"kind":1024,"name":"onIsSuggestingChanged","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onissuggestingchanged","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1653,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1654,"kind":1024,"name":"queryStringUpdated","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#querystringupdated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1655,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1656,"kind":1024,"name":"selectOption","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#selectoption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1657,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1658,"kind":1024,"name":"shiftHighlight","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#shifthighlight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1659,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1660,"kind":1024,"name":"onRemove","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onremove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1661,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1662,"kind":1024,"name":"setCursorPoint","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#setcursorpoint","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1663,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1664,"kind":1024,"name":"onContentChanged","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#oncontentchanged","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1665,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1666,"kind":1024,"name":"getSelectedIndex","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#getselectedindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1667,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1668,"kind":1024,"name":"onScroll","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#onscroll","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1669,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.pickerdataprovider.html#__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerDataProvider"},{"id":1670,"kind":256,"name":"PickerPluginOptions","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1671,"kind":1024,"name":"elementIdPrefix","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#elementidprefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1672,"kind":1024,"name":"changeSource","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#changesource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1673,"kind":1024,"name":"triggerCharacter","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#triggercharacter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1674,"kind":1024,"name":"isHorizontal","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#ishorizontal","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1675,"kind":1024,"name":"handleAutoComplete","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#handleautocomplete","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1676,"kind":1024,"name":"suggestionsLabel","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#suggestionslabel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1677,"kind":1024,"name":"suggestionLabelPrefix","url":"interfaces/roosterjs_editor_types.pickerpluginoptions.html#suggestionlabelprefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.PickerPluginOptions"},{"id":1678,"kind":256,"name":"VCell","url":"interfaces/roosterjs_editor_types.vcell.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1679,"kind":1024,"name":"td","url":"interfaces/roosterjs_editor_types.vcell.html#td","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1680,"kind":1024,"name":"spanLeft","url":"interfaces/roosterjs_editor_types.vcell.html#spanleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1681,"kind":1024,"name":"spanAbove","url":"interfaces/roosterjs_editor_types.vcell.html#spanabove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1682,"kind":1024,"name":"width","url":"interfaces/roosterjs_editor_types.vcell.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1683,"kind":1024,"name":"height","url":"interfaces/roosterjs_editor_types.vcell.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.VCell"},{"id":1684,"kind":256,"name":"ImageEditOptions","url":"interfaces/roosterjs_editor_types.imageeditoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1685,"kind":1024,"name":"borderColor","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#bordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1686,"kind":1024,"name":"minWidth","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minwidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1687,"kind":1024,"name":"minHeight","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1688,"kind":1024,"name":"preserveRatio","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#preserveratio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1689,"kind":1024,"name":"minRotateDeg","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#minrotatedeg","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1690,"kind":1024,"name":"imageSelector","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#imageselector","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1691,"kind":1024,"name":"rotateIconHTML","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#rotateiconhtml","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1692,"kind":1024,"name":"disableSideResize","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablesideresize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1693,"kind":1024,"name":"disableRotate","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablerotate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1694,"kind":1024,"name":"disableCrop","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#disablecrop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1695,"kind":1024,"name":"onSelectState","url":"interfaces/roosterjs_editor_types.imageeditoptions.html#onselectstate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageEditOptions"},{"id":1696,"kind":256,"name":"CreateElementData","url":"interfaces/roosterjs_editor_types.createelementdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1697,"kind":1024,"name":"tag","url":"interfaces/roosterjs_editor_types.createelementdata.html#tag","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1698,"kind":1024,"name":"namespace","url":"interfaces/roosterjs_editor_types.createelementdata.html#namespace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1699,"kind":1024,"name":"className","url":"interfaces/roosterjs_editor_types.createelementdata.html#classname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1700,"kind":1024,"name":"style","url":"interfaces/roosterjs_editor_types.createelementdata.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1701,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_editor_types.createelementdata.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1702,"kind":1024,"name":"attributes","url":"interfaces/roosterjs_editor_types.createelementdata.html#attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1703,"kind":1024,"name":"children","url":"interfaces/roosterjs_editor_types.createelementdata.html#children","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CreateElementData"},{"id":1704,"kind":256,"name":"SelectionRangeExBase","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1705,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1706,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1707,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.selectionrangeexbase.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.SelectionRangeExBase"},{"id":1708,"kind":256,"name":"NormalSelectionRange","url":"interfaces/roosterjs_editor_types.normalselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1709,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1710,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1711,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.normalselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NormalSelectionRange"},{"id":1712,"kind":256,"name":"TableSelectionRange","url":"interfaces/roosterjs_editor_types.tableselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1713,"kind":1024,"name":"table","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1714,"kind":1024,"name":"coordinates","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#coordinates","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1715,"kind":1024,"name":"isWholeTableSelected","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#iswholetableselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1716,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1717,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1718,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.tableselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.TableSelectionRange"},{"id":1719,"kind":256,"name":"ImageSelectionRange","url":"interfaces/roosterjs_editor_types.imageselectionrange.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1720,"kind":1024,"name":"image","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1721,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1722,"kind":1024,"name":"ranges","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#ranges","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1723,"kind":1024,"name":"areAllCollapsed","url":"interfaces/roosterjs_editor_types.imageselectionrange.html#areallcollapsed","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ImageSelectionRange"},{"id":1724,"kind":4194304,"name":"SelectionRangeEx","url":"modules/roosterjs_editor_types.html#selectionrangeex","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1725,"kind":256,"name":"KnownEntityItem","url":"interfaces/roosterjs_editor_types.knownentityitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1726,"kind":1024,"name":"element","url":"interfaces/roosterjs_editor_types.knownentityitem.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1727,"kind":1024,"name":"isDeleted","url":"interfaces/roosterjs_editor_types.knownentityitem.html#isdeleted","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1728,"kind":1024,"name":"canPersist","url":"interfaces/roosterjs_editor_types.knownentityitem.html#canpersist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.KnownEntityItem"},{"id":1729,"kind":4194304,"name":"AttributeCallback","url":"modules/roosterjs_editor_types.html#attributecallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1730,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#attributecallback.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.AttributeCallback"},{"id":1731,"kind":4194304,"name":"AttributeCallbackMap","url":"modules/roosterjs_editor_types.html#attributecallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1732,"kind":4194304,"name":"CssStyleCallback","url":"modules/roosterjs_editor_types.html#cssstylecallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1733,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#cssstylecallback.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CssStyleCallback"},{"id":1734,"kind":4194304,"name":"CssStyleCallbackMap","url":"modules/roosterjs_editor_types.html#cssstylecallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1735,"kind":4194304,"name":"ElementCallback","url":"modules/roosterjs_editor_types.html#elementcallback","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1736,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#elementcallback.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.ElementCallback"},{"id":1737,"kind":4194304,"name":"StringMap","url":"modules/roosterjs_editor_types.html#stringmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1738,"kind":4194304,"name":"ElementCallbackMap","url":"modules/roosterjs_editor_types.html#elementcallbackmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1739,"kind":4194304,"name":"PredefinedCssMap","url":"modules/roosterjs_editor_types.html#predefinedcssmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1740,"kind":4194304,"name":"DOMEventHandlerFunction","url":"modules/roosterjs_editor_types.html#domeventhandlerfunction","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1741,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#domeventhandlerfunction.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.DOMEventHandlerFunction"},{"id":1742,"kind":256,"name":"DOMEventHandlerObject","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1743,"kind":1024,"name":"pluginEventType","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html#plugineventtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventHandlerObject"},{"id":1744,"kind":1024,"name":"beforeDispatch","url":"interfaces/roosterjs_editor_types.domeventhandlerobject.html#beforedispatch","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DOMEventHandlerObject"},{"id":1745,"kind":4194304,"name":"DOMEventHandler","url":"modules/roosterjs_editor_types.html#domeventhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1746,"kind":4194304,"name":"TrustedHTMLHandler","url":"modules/roosterjs_editor_types.html#trustedhtmlhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1747,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#trustedhtmlhandler.__type-28","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.TrustedHTMLHandler"},{"id":1748,"kind":4194304,"name":"SizeTransformer","url":"modules/roosterjs_editor_types.html#sizetransformer","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1749,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#sizetransformer.__type-23","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.SizeTransformer"},{"id":1750,"kind":4194304,"name":"ArrayItemType","url":"modules/roosterjs_editor_types.html#arrayitemtype","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1751,"kind":256,"name":"DefinitionBase","url":"interfaces/roosterjs_editor_types.definitionbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1752,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.definitionbase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1753,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.definitionbase.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1754,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.definitionbase.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.DefinitionBase"},{"id":1755,"kind":256,"name":"StringDefinition","url":"interfaces/roosterjs_editor_types.stringdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1756,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.stringdefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.StringDefinition"},{"id":1757,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.stringdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1758,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.stringdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1759,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.stringdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.StringDefinition"},{"id":1760,"kind":256,"name":"NumberDefinition","url":"interfaces/roosterjs_editor_types.numberdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1761,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.numberdefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1762,"kind":1024,"name":"minValue","url":"interfaces/roosterjs_editor_types.numberdefinition.html#minvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1763,"kind":1024,"name":"maxValue","url":"interfaces/roosterjs_editor_types.numberdefinition.html#maxvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1764,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.numberdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1765,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.numberdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1766,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.numberdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.NumberDefinition"},{"id":1767,"kind":256,"name":"BooleanDefinition","url":"interfaces/roosterjs_editor_types.booleandefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1768,"kind":1024,"name":"value","url":"interfaces/roosterjs_editor_types.booleandefinition.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1769,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.booleandefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1770,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.booleandefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1771,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.booleandefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.BooleanDefinition"},{"id":1772,"kind":256,"name":"ArrayDefinition","url":"interfaces/roosterjs_editor_types.arraydefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1773,"kind":1024,"name":"itemDef","url":"interfaces/roosterjs_editor_types.arraydefinition.html#itemdef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1774,"kind":1024,"name":"minLength","url":"interfaces/roosterjs_editor_types.arraydefinition.html#minlength","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1775,"kind":1024,"name":"maxLength","url":"interfaces/roosterjs_editor_types.arraydefinition.html#maxlength","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1776,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.arraydefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1777,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.arraydefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1778,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.arraydefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ArrayDefinition"},{"id":1779,"kind":256,"name":"ObjectDefinition","url":"interfaces/roosterjs_editor_types.objectdefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1780,"kind":1024,"name":"propertyDef","url":"interfaces/roosterjs_editor_types.objectdefinition.html#propertydef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1781,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.objectdefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1782,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.objectdefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1783,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.objectdefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.ObjectDefinition"},{"id":1784,"kind":4194304,"name":"ObjectPropertyDefinition","url":"modules/roosterjs_editor_types.html#objectpropertydefinition","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1785,"kind":256,"name":"CustomizeDefinition","url":"interfaces/roosterjs_editor_types.customizedefinition.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-types"},{"id":1786,"kind":1024,"name":"validator","url":"interfaces/roosterjs_editor_types.customizedefinition.html#validator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1787,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_types.customizedefinition.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1788,"kind":1024,"name":"type","url":"interfaces/roosterjs_editor_types.customizedefinition.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1789,"kind":1024,"name":"isOptional","url":"interfaces/roosterjs_editor_types.customizedefinition.html#isoptional","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1790,"kind":1024,"name":"allowNull","url":"interfaces/roosterjs_editor_types.customizedefinition.html#allownull","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-editor-types.CustomizeDefinition"},{"id":1791,"kind":4194304,"name":"Definition","url":"modules/roosterjs_editor_types.html#definition","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1792,"kind":4194304,"name":"CoreCreator","url":"modules/roosterjs_editor_types.html#corecreator","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-types"},{"id":1793,"kind":65536,"name":"__type","url":"modules/roosterjs_editor_types.html#corecreator.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-editor-types.CoreCreator"},{"id":1794,"kind":4,"name":"CompatibleAlignment","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1795,"kind":16,"name":"Left","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1796,"kind":16,"name":"Center","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#center","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1797,"kind":16,"name":"Right","url":"enums/roosterjs_editor_types_compatible.compatiblealignment.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleAlignment"},{"id":1798,"kind":4,"name":"CompatibleBulletListType","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1799,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1800,"kind":16,"name":"Disc","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#disc","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1801,"kind":16,"name":"Dash","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#dash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1802,"kind":16,"name":"Square","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#square","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1803,"kind":16,"name":"ShortArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#shortarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1804,"kind":16,"name":"LongArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#longarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1805,"kind":16,"name":"UnfilledArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#unfilledarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1806,"kind":16,"name":"Hyphen","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#hyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1807,"kind":16,"name":"DoubleLongArrow","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#doublelongarrow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1808,"kind":16,"name":"Circle","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#circle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1809,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types_compatible.compatiblebulletlisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleBulletListType"},{"id":1810,"kind":4,"name":"CompatibleCapitalization","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1811,"kind":16,"name":"Sentence","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#sentence","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1812,"kind":16,"name":"Lowercase","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#lowercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1813,"kind":16,"name":"Uppercase","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#uppercase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1814,"kind":16,"name":"CapitalizeEachWord","url":"enums/roosterjs_editor_types_compatible.compatiblecapitalization.html#capitalizeeachword","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleCapitalization"},{"id":1815,"kind":4,"name":"CompatibleChangeSource","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1816,"kind":16,"name":"AutoLink","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#autolink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1817,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1818,"kind":16,"name":"Format","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#format","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1819,"kind":16,"name":"ImageResize","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#imageresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1820,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1821,"kind":16,"name":"SetContent","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#setcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1822,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1823,"kind":16,"name":"Drop","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#drop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1824,"kind":16,"name":"InsertEntity","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#insertentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1825,"kind":16,"name":"SwitchToDarkMode","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#switchtodarkmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1826,"kind":16,"name":"SwitchToLightMode","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#switchtolightmode","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1827,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1828,"kind":16,"name":"Keyboard","url":"enums/roosterjs_editor_types_compatible.compatiblechangesource.html#keyboard","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleChangeSource"},{"id":1829,"kind":4,"name":"CompatibleClearFormatMode","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1830,"kind":16,"name":"Inline","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#inline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1831,"kind":16,"name":"Block","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#block","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1832,"kind":16,"name":"AutoDetect","url":"enums/roosterjs_editor_types_compatible.compatibleclearformatmode.html#autodetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleClearFormatMode"},{"id":1833,"kind":4,"name":"CompatibleColorTransformDirection","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1834,"kind":16,"name":"LightToDark","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html#lighttodark","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleColorTransformDirection"},{"id":1835,"kind":16,"name":"DarkToLight","url":"enums/roosterjs_editor_types_compatible.compatiblecolortransformdirection.html#darktolight","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleColorTransformDirection"},{"id":1836,"kind":4,"name":"CompatibleContentPosition","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1837,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1838,"kind":16,"name":"End","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1839,"kind":16,"name":"DomEnd","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#domend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1840,"kind":16,"name":"SelectionStart","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#selectionstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1841,"kind":16,"name":"Outside","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#outside","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1842,"kind":16,"name":"Range","url":"enums/roosterjs_editor_types_compatible.compatiblecontentposition.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentPosition"},{"id":1843,"kind":4,"name":"CompatibleContentTypePrefix","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1844,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentTypePrefix"},{"id":1845,"kind":16,"name":"Image","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttypeprefix.html#image","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentTypePrefix"},{"id":1846,"kind":4,"name":"CompatibleContentType","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1847,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentType"},{"id":1848,"kind":16,"name":"HTML","url":"enums/roosterjs_editor_types_compatible.compatiblecontenttype.html#html","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleContentType"},{"id":1849,"kind":4,"name":"CompatibleDarkModeDatasetNames","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1850,"kind":16,"name":"OriginalStyleColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalstylecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1851,"kind":16,"name":"OriginalStyleBackgroundColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalstylebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1852,"kind":16,"name":"OriginalAttributeColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalattributecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1853,"kind":16,"name":"OriginalAttributeBackgroundColor","url":"enums/roosterjs_editor_types_compatible.compatibledarkmodedatasetnames.html#originalattributebackgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDarkModeDatasetNames"},{"id":1854,"kind":4,"name":"CompatibleDefinitionType","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1855,"kind":16,"name":"Boolean","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#boolean","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1856,"kind":16,"name":"Number","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#number","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1857,"kind":16,"name":"String","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#string","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1858,"kind":16,"name":"Array","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#array","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1859,"kind":16,"name":"Object","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#object","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1860,"kind":16,"name":"Customize","url":"enums/roosterjs_editor_types_compatible.compatibledefinitiontype.html#customize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDefinitionType"},{"id":1861,"kind":4,"name":"CompatibleDelimiterClasses","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1862,"kind":16,"name":"DELIMITER_BEFORE","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html#delimiter_before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDelimiterClasses"},{"id":1863,"kind":16,"name":"DELIMITER_AFTER","url":"enums/roosterjs_editor_types_compatible.compatibledelimiterclasses.html#delimiter_after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDelimiterClasses"},{"id":1864,"kind":4,"name":"CompatibleDirection","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1865,"kind":16,"name":"LeftToRight","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html#lefttoright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDirection"},{"id":1866,"kind":16,"name":"RightToLeft","url":"enums/roosterjs_editor_types_compatible.compatibledirection.html#righttoleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDirection"},{"id":1867,"kind":4,"name":"CompatibleDocumentCommand","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1868,"kind":16,"name":"AutoUrlDetect","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#autourldetect","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1869,"kind":16,"name":"BackColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#backcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1870,"kind":16,"name":"Bold","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1871,"kind":16,"name":"ClearAuthenticationCache","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#clearauthenticationcache","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1872,"kind":16,"name":"ContentReadOnly","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#contentreadonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1873,"kind":16,"name":"Copy","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#copy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1874,"kind":16,"name":"CreateLink","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#createlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1875,"kind":16,"name":"Cut","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#cut","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1876,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1877,"kind":16,"name":"DefaultParagraphSeparator","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#defaultparagraphseparator","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1878,"kind":16,"name":"Delete","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1879,"kind":16,"name":"EnableInlineTableEditing","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#enableinlinetableediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1880,"kind":16,"name":"EnableObjectResizing","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#enableobjectresizing","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1881,"kind":16,"name":"FontName","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#fontname","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1882,"kind":16,"name":"FontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1883,"kind":16,"name":"ForeColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#forecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1884,"kind":16,"name":"FormatBlock","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#formatblock","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1885,"kind":16,"name":"ForwardDelete","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#forwarddelete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1886,"kind":16,"name":"Heading","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1887,"kind":16,"name":"HiliteColor","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#hilitecolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1888,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1889,"kind":16,"name":"Indent","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#indent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1890,"kind":16,"name":"InsertBrOnReturn","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertbronreturn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1891,"kind":16,"name":"InsertHorizontalRule","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserthorizontalrule","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1892,"kind":16,"name":"InsertHTML","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserthtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1893,"kind":16,"name":"InsertImage","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1894,"kind":16,"name":"InsertOrderedList","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1895,"kind":16,"name":"InsertUnorderedList","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertunorderedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1896,"kind":16,"name":"InsertParagraph","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#insertparagraph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1897,"kind":16,"name":"InsertText","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#inserttext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1898,"kind":16,"name":"Italic","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1899,"kind":16,"name":"JustifyCenter","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifycenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1900,"kind":16,"name":"JustifyFull","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyfull","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1901,"kind":16,"name":"JustifyLeft","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1902,"kind":16,"name":"JustifyRight","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#justifyright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1903,"kind":16,"name":"Outdent","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#outdent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1904,"kind":16,"name":"Paste","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#paste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1905,"kind":16,"name":"Redo","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1906,"kind":16,"name":"RemoveFormat","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#removeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1907,"kind":16,"name":"SelectAll","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#selectall","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1908,"kind":16,"name":"StrikeThrough","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1909,"kind":16,"name":"Subscript","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1910,"kind":16,"name":"Superscript","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1911,"kind":16,"name":"Underline","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1912,"kind":16,"name":"Undo","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1913,"kind":16,"name":"Unlink","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#unlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1914,"kind":16,"name":"StyleWithCSS","url":"enums/roosterjs_editor_types_compatible.compatibledocumentcommand.html#stylewithcss","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentCommand"},{"id":1915,"kind":4,"name":"CompatibleDocumentPosition","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1916,"kind":16,"name":"Same","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#same","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1917,"kind":16,"name":"Disconnected","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1918,"kind":16,"name":"Preceding","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#preceding","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1919,"kind":16,"name":"Following","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#following","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1920,"kind":16,"name":"Contains","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#contains","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1921,"kind":16,"name":"ContainedBy","url":"enums/roosterjs_editor_types_compatible.compatibledocumentposition.html#containedby","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleDocumentPosition"},{"id":1922,"kind":4,"name":"CompatibleEntityClasses","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1923,"kind":16,"name":"ENTITY_INFO_NAME","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_info_name","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1924,"kind":16,"name":"ENTITY_TYPE_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_type_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1925,"kind":16,"name":"ENTITY_ID_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_id_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1926,"kind":16,"name":"ENTITY_READONLY_PREFIX","url":"enums/roosterjs_editor_types_compatible.compatibleentityclasses.html#entity_readonly_prefix","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityClasses"},{"id":1927,"kind":4,"name":"CompatibleEntityOperation","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1928,"kind":16,"name":"NewEntity","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#newentity","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1929,"kind":16,"name":"Click","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#click","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1930,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1931,"kind":16,"name":"Escape","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1932,"kind":16,"name":"RemoveFromStart","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removefromstart","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1933,"kind":16,"name":"RemoveFromEnd","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removefromend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1934,"kind":16,"name":"Overwrite","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#overwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1935,"kind":16,"name":"PartialOverwrite","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#partialoverwrite","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1936,"kind":16,"name":"ReplaceTemporaryContent","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#replacetemporarycontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1937,"kind":16,"name":"AddShadowRoot","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#addshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1938,"kind":16,"name":"RemoveShadowRoot","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#removeshadowroot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1939,"kind":16,"name":"UpdateEntityState","url":"enums/roosterjs_editor_types_compatible.compatibleentityoperation.html#updateentitystate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleEntityOperation"},{"id":1940,"kind":4,"name":"CompatibleExperimentalFeatures","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1941,"kind":16,"name":"NewIndentation","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newindentation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1942,"kind":16,"name":"NewBullet","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newbullet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1943,"kind":16,"name":"NewNumbering","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#newnumbering","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1944,"kind":16,"name":"ListChain","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#listchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1945,"kind":16,"name":"MergePastedLine","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#mergepastedline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1946,"kind":16,"name":"SingleDirectionResize","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#singledirectionresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1947,"kind":16,"name":"PasteWithLinkPreview","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#pastewithlinkpreview","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1948,"kind":16,"name":"ImageRotate","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imagerotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1949,"kind":16,"name":"ImageCrop","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imagecrop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1950,"kind":16,"name":"AlwaysApplyDefaultFormat","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#alwaysapplydefaultformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1951,"kind":16,"name":"ConvertSingleImageBody","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#convertsingleimagebody","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1952,"kind":16,"name":"TableAlignment","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#tablealignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1953,"kind":16,"name":"AdaptiveHandlesResizer","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#adaptivehandlesresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1954,"kind":16,"name":"AutoHyphen","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#autohyphen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1955,"kind":16,"name":"PendingStyleBasedFormat","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#pendingstylebasedformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1956,"kind":16,"name":"NormalizeList","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#normalizelist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1957,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1958,"kind":16,"name":"VariableBasedDarkColor","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#variablebaseddarkcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1959,"kind":16,"name":"ListItemAlignment","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#listitemalignment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1960,"kind":16,"name":"DefaultFormatInSpan","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#defaultformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1961,"kind":16,"name":"DefaultFormatOnContainer","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#defaultformatoncontainer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1962,"kind":16,"name":"ReusableContentModel","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#reusablecontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1963,"kind":16,"name":"EditWithContentModel","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#editwithcontentmodel","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1964,"kind":16,"name":"TabKeyTextFeatures","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#tabkeytextfeatures","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1965,"kind":16,"name":"AutoFormatList","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#autoformatlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1966,"kind":16,"name":"ReuseAllAncestorListElements","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#reuseallancestorlistelements","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1967,"kind":16,"name":"DeleteTableWithBackspace","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#deletetablewithbackspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1968,"kind":16,"name":"InlineEntityReadOnlyDelimiters","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#inlineentityreadonlydelimiters","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1969,"kind":16,"name":"ContentModelPaste","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#contentmodelpaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1970,"kind":16,"name":"DisableListChain","url":"enums/roosterjs_editor_types_compatible.compatibleexperimentalfeatures.html#disablelistchain","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleExperimentalFeatures"},{"id":1971,"kind":4,"name":"CompatibleFontSizeChange","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1972,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleFontSizeChange"},{"id":1973,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types_compatible.compatiblefontsizechange.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleFontSizeChange"},{"id":1974,"kind":4,"name":"CompatibleGetContentMode","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1975,"kind":16,"name":"CleanHTML","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#cleanhtml","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1976,"kind":16,"name":"RawHTMLOnly","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#rawhtmlonly","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1977,"kind":16,"name":"RawHTMLWithSelection","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#rawhtmlwithselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1978,"kind":16,"name":"PlainText","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#plaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1979,"kind":16,"name":"PlainTextFast","url":"enums/roosterjs_editor_types_compatible.compatiblegetcontentmode.html#plaintextfast","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleGetContentMode"},{"id":1980,"kind":4,"name":"CompatibleImageEditOperation","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1981,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1982,"kind":16,"name":"CornerResize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#cornerresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1983,"kind":16,"name":"SideResize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#sideresize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1984,"kind":16,"name":"Resize","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#resize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1985,"kind":16,"name":"Rotate","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#rotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1986,"kind":16,"name":"ResizeAndRotate","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#resizeandrotate","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1987,"kind":16,"name":"Crop","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#crop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1988,"kind":16,"name":"All","url":"enums/roosterjs_editor_types_compatible.compatibleimageeditoperation.html#all","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleImageEditOperation"},{"id":1989,"kind":4,"name":"CompatibleIndentation","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1990,"kind":16,"name":"Increase","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html#increase","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleIndentation"},{"id":1991,"kind":16,"name":"Decrease","url":"enums/roosterjs_editor_types_compatible.compatibleindentation.html#decrease","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleIndentation"},{"id":1992,"kind":4,"name":"CompatibleKeys","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":1993,"kind":16,"name":"NULL","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#null","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1994,"kind":16,"name":"BACKSPACE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#backspace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1995,"kind":16,"name":"TAB","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#tab","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1996,"kind":16,"name":"ENTER","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#enter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1997,"kind":16,"name":"SHIFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#shift","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1998,"kind":16,"name":"CTRL_LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#ctrl_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":1999,"kind":16,"name":"ALT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#alt","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2000,"kind":16,"name":"ESCAPE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#escape","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2001,"kind":16,"name":"SPACE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#space","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2002,"kind":16,"name":"PAGEUP","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#pageup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2003,"kind":16,"name":"END","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2004,"kind":16,"name":"HOME","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#home","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2005,"kind":16,"name":"LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2006,"kind":16,"name":"UP","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#up","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2007,"kind":16,"name":"RIGHT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#right","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2008,"kind":16,"name":"DOWN","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#down","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2009,"kind":16,"name":"PRINT_SCREEN","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#print_screen","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2010,"kind":16,"name":"DELETE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#delete","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2011,"kind":16,"name":"EIGHT_ASTIRISK","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#eight_astirisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2012,"kind":16,"name":"EIGHT_ASTERISK","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#eight_asterisk","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2013,"kind":16,"name":"B","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#b","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2014,"kind":16,"name":"I","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#i","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2015,"kind":16,"name":"U","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#u","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2016,"kind":16,"name":"Y","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#y","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2017,"kind":16,"name":"Z","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#z","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2018,"kind":16,"name":"META_LEFT","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#meta_left","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2019,"kind":16,"name":"COMMA","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#comma","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2020,"kind":16,"name":"DASH_UNDERSCORE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#dash_underscore","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2021,"kind":16,"name":"PERIOD","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#period","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2022,"kind":16,"name":"FORWARDSLASH","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#forwardslash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2023,"kind":16,"name":"FORWARD_SLASH","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#forward_slash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2024,"kind":16,"name":"GRAVE_TILDE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#grave_tilde","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2025,"kind":16,"name":"CONTENTCHANGED","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2026,"kind":16,"name":"RANGE","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#range","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2027,"kind":16,"name":"Ctrl","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#ctrl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2028,"kind":16,"name":"Meta","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#meta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2029,"kind":16,"name":"Shift","url":"enums/roosterjs_editor_types_compatible.compatiblekeys.html#shift-1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKeys"},{"id":2030,"kind":4,"name":"CompatibleKnownCreateElementDataIndex","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2031,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2032,"kind":16,"name":"EmptyLine","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#emptyline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2033,"kind":16,"name":"BlockquoteWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#blockquotewrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2034,"kind":16,"name":"CopyPasteTempDiv","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#copypastetempdiv","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2035,"kind":16,"name":"BlockListItem","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#blocklistitem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2036,"kind":16,"name":"ContextMenuWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#contextmenuwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2037,"kind":16,"name":"ImageEditWrapper","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#imageeditwrapper","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2038,"kind":16,"name":"TableHorizontalResizer","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tablehorizontalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2039,"kind":16,"name":"TableVerticalResizer","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableverticalresizer","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2040,"kind":16,"name":"TableResizerLTR","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableresizerltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2041,"kind":16,"name":"TableResizerRTL","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableresizerrtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2042,"kind":16,"name":"TableSelector","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#tableselector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2043,"kind":16,"name":"EmptyLineFormatInSpan","url":"enums/roosterjs_editor_types_compatible.compatibleknowncreateelementdataindex.html#emptylineformatinspan","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownCreateElementDataIndex"},{"id":2044,"kind":4,"name":"CompatibleKnownPasteSourceType","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2045,"kind":16,"name":"WordDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#worddesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2046,"kind":16,"name":"ExcelDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#exceldesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2047,"kind":16,"name":"ExcelOnline","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#excelonline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2048,"kind":16,"name":"PowerPointDesktop","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#powerpointdesktop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2049,"kind":16,"name":"GoogleSheets","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#googlesheets","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2050,"kind":16,"name":"WacComponents","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#waccomponents","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2051,"kind":16,"name":"Default","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2052,"kind":16,"name":"SingleImage","url":"enums/roosterjs_editor_types_compatible.compatibleknownpastesourcetype.html#singleimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleKnownPasteSourceType"},{"id":2053,"kind":4,"name":"CompatibleListType","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2054,"kind":16,"name":"None","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#none","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2055,"kind":16,"name":"Ordered","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#ordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2056,"kind":16,"name":"Unordered","url":"enums/roosterjs_editor_types_compatible.compatiblelisttype.html#unordered","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleListType"},{"id":2057,"kind":4,"name":"CompatibleNodeType","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2058,"kind":16,"name":"Element","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2059,"kind":16,"name":"Attribute","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#attribute","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2060,"kind":16,"name":"Text","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#text","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2061,"kind":16,"name":"ProcessingInstruction","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#processinginstruction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2062,"kind":16,"name":"Comment","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#comment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2063,"kind":16,"name":"Document","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#document","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2064,"kind":16,"name":"DocumentType","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#documenttype","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2065,"kind":16,"name":"DocumentFragment","url":"enums/roosterjs_editor_types_compatible.compatiblenodetype.html#documentfragment","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNodeType"},{"id":2066,"kind":4,"name":"CompatibleNumberingListType","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2067,"kind":16,"name":"Min","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#min","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2068,"kind":16,"name":"Decimal","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2069,"kind":16,"name":"DecimalDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimaldash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2070,"kind":16,"name":"DecimalParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimalparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2071,"kind":16,"name":"DecimalDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#decimaldoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2072,"kind":16,"name":"LowerAlpha","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2073,"kind":16,"name":"LowerAlphaParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2074,"kind":16,"name":"LowerAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2075,"kind":16,"name":"LowerAlphaDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#loweralphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2076,"kind":16,"name":"UpperAlpha","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalpha","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2077,"kind":16,"name":"UpperAlphaParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphaparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2078,"kind":16,"name":"UpperAlphaDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphadoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2079,"kind":16,"name":"UpperAlphaDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperalphadash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2080,"kind":16,"name":"LowerRoman","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2081,"kind":16,"name":"LowerRomanParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2082,"kind":16,"name":"LowerRomanDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2083,"kind":16,"name":"LowerRomanDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#lowerromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2084,"kind":16,"name":"UpperRoman","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperroman","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2085,"kind":16,"name":"UpperRomanParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromanparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2086,"kind":16,"name":"UpperRomanDoubleParenthesis","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromandoubleparenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2087,"kind":16,"name":"UpperRomanDash","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#upperromandash","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2088,"kind":16,"name":"Max","url":"enums/roosterjs_editor_types_compatible.compatiblenumberinglisttype.html#max","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleNumberingListType"},{"id":2089,"kind":4,"name":"CompatiblePasteType","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2090,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2091,"kind":16,"name":"AsPlainText","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#asplaintext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2092,"kind":16,"name":"MergeFormat","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#mergeformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2093,"kind":16,"name":"AsImage","url":"enums/roosterjs_editor_types_compatible.compatiblepastetype.html#asimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePasteType"},{"id":2094,"kind":4,"name":"CompatiblePluginEventType","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2095,"kind":16,"name":"KeyDown","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keydown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2096,"kind":16,"name":"KeyPress","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keypress","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2097,"kind":16,"name":"KeyUp","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#keyup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2098,"kind":16,"name":"Input","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#input","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2099,"kind":16,"name":"CompositionEnd","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#compositionend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2100,"kind":16,"name":"MouseDown","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#mousedown","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2101,"kind":16,"name":"MouseUp","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#mouseup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2102,"kind":16,"name":"ContentChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#contentchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2103,"kind":16,"name":"ExtractContentWithDom","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#extractcontentwithdom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2104,"kind":16,"name":"BeforeCutCopy","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforecutcopy","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2105,"kind":16,"name":"BeforePaste","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforepaste","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2106,"kind":16,"name":"EditorReady","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#editorready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2107,"kind":16,"name":"BeforeDispose","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforedispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2108,"kind":16,"name":"PendingFormatStateChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#pendingformatstatechanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2109,"kind":16,"name":"Scroll","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#scroll","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2110,"kind":16,"name":"EntityOperation","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#entityoperation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2111,"kind":16,"name":"ContextMenu","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#contextmenu","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2112,"kind":16,"name":"EnteredShadowEdit","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#enteredshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2113,"kind":16,"name":"LeavingShadowEdit","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#leavingshadowedit","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2114,"kind":16,"name":"EditImage","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#editimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2115,"kind":16,"name":"BeforeSetContent","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforesetcontent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2116,"kind":16,"name":"ZoomChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#zoomchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2117,"kind":16,"name":"SelectionChanged","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#selectionchanged","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2118,"kind":16,"name":"BeforeKeyboardEditing","url":"enums/roosterjs_editor_types_compatible.compatibleplugineventtype.html#beforekeyboardediting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePluginEventType"},{"id":2119,"kind":4,"name":"CompatiblePositionType","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2120,"kind":16,"name":"Begin","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#begin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2121,"kind":16,"name":"End","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#end","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2122,"kind":16,"name":"Before","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2123,"kind":16,"name":"After","url":"enums/roosterjs_editor_types_compatible.compatiblepositiontype.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatiblePositionType"},{"id":2124,"kind":4,"name":"CompatibleQueryScope","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2125,"kind":16,"name":"Body","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#body","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2126,"kind":16,"name":"OnSelection","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#onselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2127,"kind":16,"name":"InSelection","url":"enums/roosterjs_editor_types_compatible.compatiblequeryscope.html#inselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleQueryScope"},{"id":2128,"kind":4,"name":"CompatibleRegionType","url":"enums/roosterjs_editor_types_compatible.compatibleregiontype.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2129,"kind":16,"name":"Table","url":"enums/roosterjs_editor_types_compatible.compatibleregiontype.html#table","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleRegionType"},{"id":2130,"kind":4,"name":"CompatibleSelectionRangeTypes","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2131,"kind":16,"name":"Normal","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#normal","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2132,"kind":16,"name":"TableSelection","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#tableselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2133,"kind":16,"name":"ImageSelection","url":"enums/roosterjs_editor_types_compatible.compatibleselectionrangetypes.html#imageselection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleSelectionRangeTypes"},{"id":2134,"kind":4,"name":"CompatibleTableBorderFormat","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2135,"kind":16,"name":"DEFAULT","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#default","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2136,"kind":16,"name":"LIST_WITH_SIDE_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#list_with_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2137,"kind":16,"name":"NO_HEADER_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#no_header_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2138,"kind":16,"name":"NO_SIDE_BORDERS","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#no_side_borders","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2139,"kind":16,"name":"FIRST_COLUMN_HEADER_EXTERNAL","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#first_column_header_external","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2140,"kind":16,"name":"ESPECIAL_TYPE_1","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_1","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2141,"kind":16,"name":"ESPECIAL_TYPE_2","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_2","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2142,"kind":16,"name":"ESPECIAL_TYPE_3","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#especial_type_3","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2143,"kind":16,"name":"CLEAR","url":"enums/roosterjs_editor_types_compatible.compatibletableborderformat.html#clear","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableBorderFormat"},{"id":2144,"kind":4,"name":"CompatibleTableOperation","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-editor-types-compatible"},{"id":2145,"kind":16,"name":"InsertAbove","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2146,"kind":16,"name":"InsertBelow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertbelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2147,"kind":16,"name":"InsertLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2148,"kind":16,"name":"InsertRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#insertright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2149,"kind":16,"name":"DeleteTable","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deletetable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2150,"kind":16,"name":"DeleteColumn","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deletecolumn","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2151,"kind":16,"name":"DeleteRow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#deleterow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2152,"kind":16,"name":"MergeAbove","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeabove","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2153,"kind":16,"name":"MergeBelow","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergebelow","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2154,"kind":16,"name":"MergeLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2155,"kind":16,"name":"MergeRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergeright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2156,"kind":16,"name":"MergeCells","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#mergecells","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2157,"kind":16,"name":"SplitHorizontally","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#splithorizontally","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2158,"kind":16,"name":"SplitVertically","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#splitvertically","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2159,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2160,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2161,"kind":16,"name":"AlignRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2162,"kind":16,"name":"AlignCellLeft","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2163,"kind":16,"name":"AlignCellCenter","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellcenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2164,"kind":16,"name":"AlignCellRight","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2165,"kind":16,"name":"AlignCellTop","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncelltop","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2166,"kind":16,"name":"AlignCellMiddle","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellmiddle","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2167,"kind":16,"name":"AlignCellBottom","url":"enums/roosterjs_editor_types_compatible.compatibletableoperation.html#aligncellbottom","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-editor-types-compatible.CompatibleTableOperation"},{"id":2168,"kind":64,"name":"getBlockElementAtNode","url":"modules/roosterjs_editor_dom.html#getblockelementatnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2169,"kind":64,"name":"getFirstLastBlockElement","url":"modules/roosterjs_editor_dom.html#getfirstlastblockelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2170,"kind":128,"name":"ContentTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2171,"kind":2048,"name":"createBodyTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2172,"kind":2048,"name":"createSelectionTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2173,"kind":2048,"name":"createBlockTraverser","url":"classes/roosterjs_editor_dom.contenttraverser.html#createblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2174,"kind":262144,"name":"currentBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#currentblockelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2175,"kind":2048,"name":"getNextBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getnextblockelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2176,"kind":2048,"name":"getPreviousBlockElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getpreviousblockelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2177,"kind":262144,"name":"currentInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#currentinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2178,"kind":2048,"name":"getNextInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getnextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2179,"kind":2048,"name":"getPreviousInlineElement","url":"classes/roosterjs_editor_dom.contenttraverser.html#getpreviousinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.ContentTraverser"},{"id":2180,"kind":128,"name":"PositionContentSearcher","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2181,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2182,"kind":2048,"name":"getWordBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getwordbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2183,"kind":2048,"name":"getInlineElementBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getinlineelementbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2184,"kind":2048,"name":"getInlineElementAfter","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getinlineelementafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2185,"kind":2048,"name":"getSubStringBefore","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getsubstringbefore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2186,"kind":2048,"name":"getRangeFromText","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getrangefromtext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2187,"kind":2048,"name":"forEachTextInlineElement","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#foreachtextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2188,"kind":2048,"name":"getNearestNonTextInlineElement","url":"classes/roosterjs_editor_dom.positioncontentsearcher.html#getnearestnontextinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PositionContentSearcher"},{"id":2189,"kind":64,"name":"addDelimiters","url":"modules/roosterjs_editor_dom.html#adddelimiters","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2190,"kind":64,"name":"addDelimiterAfter","url":"modules/roosterjs_editor_dom.html#adddelimiterafter","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2191,"kind":64,"name":"addDelimiterBefore","url":"modules/roosterjs_editor_dom.html#adddelimiterbefore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2192,"kind":64,"name":"getDelimiterFromElement","url":"modules/roosterjs_editor_dom.html#getdelimiterfromelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2193,"kind":64,"name":"getInlineElementAtNode","url":"modules/roosterjs_editor_dom.html#getinlineelementatnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2194,"kind":128,"name":"ImageInlineElement","url":"classes/roosterjs_editor_dom.imageinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2195,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.imageinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2196,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.imageinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2197,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2198,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2199,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2200,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.imageinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2201,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.imageinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2202,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.imageinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2203,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.imageinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2204,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.imageinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.ImageInlineElement"},{"id":2205,"kind":128,"name":"LinkInlineElement","url":"classes/roosterjs_editor_dom.linkinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2206,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.linkinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2207,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.linkinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2208,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2209,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2210,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2211,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.linkinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2212,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.linkinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2213,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.linkinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2214,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.linkinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2215,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.linkinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-dom.LinkInlineElement"},{"id":2216,"kind":128,"name":"NodeInlineElement","url":"classes/roosterjs_editor_dom.nodeinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2217,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2218,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2219,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2220,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2221,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2222,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2223,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2224,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2225,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2226,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.nodeinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.NodeInlineElement"},{"id":2227,"kind":128,"name":"PartialInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2228,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.partialinlineelement.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2229,"kind":2048,"name":"getDecoratedInline","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getdecoratedinline","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2230,"kind":2048,"name":"getContainerNode","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getcontainernode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2231,"kind":2048,"name":"getParentBlock","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getparentblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2232,"kind":2048,"name":"getTextContent","url":"classes/roosterjs_editor_dom.partialinlineelement.html#gettextcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2233,"kind":2048,"name":"getStartPosition","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getstartposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2234,"kind":2048,"name":"getEndPosition","url":"classes/roosterjs_editor_dom.partialinlineelement.html#getendposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2235,"kind":262144,"name":"nextInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#nextinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2236,"kind":262144,"name":"previousInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#previousinlineelement","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2237,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.partialinlineelement.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2238,"kind":2048,"name":"isTextualInlineElement","url":"classes/roosterjs_editor_dom.partialinlineelement.html#istextualinlineelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2239,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.partialinlineelement.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2240,"kind":2048,"name":"applyStyle","url":"classes/roosterjs_editor_dom.partialinlineelement.html#applystyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.PartialInlineElement"},{"id":2241,"kind":64,"name":"applyTextStyle","url":"modules/roosterjs_editor_dom.html#applytextstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2242,"kind":64,"name":"extractClipboardEvent","url":"modules/roosterjs_editor_dom.html#extractclipboardevent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2243,"kind":64,"name":"extractClipboardItems","url":"modules/roosterjs_editor_dom.html#extractclipboarditems","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2244,"kind":64,"name":"extractClipboardItemsForIE","url":"modules/roosterjs_editor_dom.html#extractclipboarditemsforie","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2245,"kind":64,"name":"handleImagePaste","url":"modules/roosterjs_editor_dom.html#handleimagepaste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2246,"kind":64,"name":"handleTextPaste","url":"modules/roosterjs_editor_dom.html#handletextpaste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2247,"kind":64,"name":"retrieveMetadataFromClipboard","url":"modules/roosterjs_editor_dom.html#retrievemetadatafromclipboard","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2248,"kind":64,"name":"sanitizePasteContent","url":"modules/roosterjs_editor_dom.html#sanitizepastecontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2249,"kind":64,"name":"getPasteType","url":"modules/roosterjs_editor_dom.html#getpastetype","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2250,"kind":32,"name":"Browser","url":"modules/roosterjs_editor_dom.html#browser","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2251,"kind":64,"name":"getBrowserInfo","url":"modules/roosterjs_editor_dom.html#getbrowserinfo","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2252,"kind":64,"name":"applyFormat","url":"modules/roosterjs_editor_dom.html#applyformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2253,"kind":64,"name":"changeElementTag","url":"modules/roosterjs_editor_dom.html#changeelementtag","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2254,"kind":64,"name":"collapseNodes","url":"modules/roosterjs_editor_dom.html#collapsenodes","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2255,"kind":64,"name":"contains","url":"modules/roosterjs_editor_dom.html#contains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2256,"kind":64,"name":"findClosestElementAncestor","url":"modules/roosterjs_editor_dom.html#findclosestelementancestor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2257,"kind":64,"name":"fromHtml","url":"modules/roosterjs_editor_dom.html#fromhtml","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2258,"kind":64,"name":"getComputedStyles","url":"modules/roosterjs_editor_dom.html#getcomputedstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2259,"kind":64,"name":"getComputedStyle","url":"modules/roosterjs_editor_dom.html#getcomputedstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2260,"kind":64,"name":"getPendableFormatState","url":"modules/roosterjs_editor_dom.html#getpendableformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2261,"kind":32,"name":"PendableFormatCommandMap","url":"modules/roosterjs_editor_dom.html#pendableformatcommandmap","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2262,"kind":4194304,"name":"PendableFormatNames","url":"modules/roosterjs_editor_dom.html#pendableformatnames","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2263,"kind":64,"name":"getTagOfNode","url":"modules/roosterjs_editor_dom.html#gettagofnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2264,"kind":64,"name":"isBlockElement","url":"modules/roosterjs_editor_dom.html#isblockelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2265,"kind":64,"name":"isNodeEmpty","url":"modules/roosterjs_editor_dom.html#isnodeempty","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2266,"kind":64,"name":"isVoidHtmlElement","url":"modules/roosterjs_editor_dom.html#isvoidhtmlelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2267,"kind":64,"name":"matchLink","url":"modules/roosterjs_editor_dom.html#matchlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2268,"kind":64,"name":"queryElements","url":"modules/roosterjs_editor_dom.html#queryelements","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2269,"kind":64,"name":"splitParentNode","url":"modules/roosterjs_editor_dom.html#splitparentnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2270,"kind":64,"name":"splitBalancedNodeRange","url":"modules/roosterjs_editor_dom.html#splitbalancednoderange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2271,"kind":64,"name":"unwrap","url":"modules/roosterjs_editor_dom.html#unwrap","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2272,"kind":64,"name":"wrap","url":"modules/roosterjs_editor_dom.html#wrap","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2273,"kind":64,"name":"getNextLeafSibling","url":"modules/roosterjs_editor_dom.html#getnextleafsibling","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2274,"kind":64,"name":"getPreviousLeafSibling","url":"modules/roosterjs_editor_dom.html#getpreviousleafsibling","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2275,"kind":64,"name":"getFirstLeafNode","url":"modules/roosterjs_editor_dom.html#getfirstleafnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2276,"kind":64,"name":"getLastLeafNode","url":"modules/roosterjs_editor_dom.html#getlastleafnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2277,"kind":64,"name":"splitTextNode","url":"modules/roosterjs_editor_dom.html#splittextnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2278,"kind":64,"name":"normalizeRect","url":"modules/roosterjs_editor_dom.html#normalizerect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2279,"kind":64,"name":"safeInstanceOf","url":"modules/roosterjs_editor_dom.html#safeinstanceof","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2280,"kind":64,"name":"readFile","url":"modules/roosterjs_editor_dom.html#readfile","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2281,"kind":64,"name":"getInnerHTML","url":"modules/roosterjs_editor_dom.html#getinnerhtml","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2282,"kind":64,"name":"setColor","url":"modules/roosterjs_editor_dom.html#setcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2283,"kind":64,"name":"matchesSelector","url":"modules/roosterjs_editor_dom.html#matchesselector","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2284,"kind":64,"name":"createElement","url":"modules/roosterjs_editor_dom.html#createelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2285,"kind":32,"name":"KnownCreateElementData","url":"modules/roosterjs_editor_dom.html#knowncreateelementdata","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2286,"kind":64,"name":"moveChildNodes","url":"modules/roosterjs_editor_dom.html#movechildnodes","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2287,"kind":64,"name":"getIntersectedRect","url":"modules/roosterjs_editor_dom.html#getintersectedrect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2288,"kind":64,"name":"isNodeAfter","url":"modules/roosterjs_editor_dom.html#isnodeafter","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2289,"kind":64,"name":"parseColor","url":"modules/roosterjs_editor_dom.html#parsecolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2290,"kind":128,"name":"VTable","url":"classes/roosterjs_editor_dom.vtable.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2291,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vtable.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2292,"kind":1024,"name":"table","url":"classes/roosterjs_editor_dom.vtable.html#table","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2293,"kind":1024,"name":"cells","url":"classes/roosterjs_editor_dom.vtable.html#cells","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2294,"kind":1024,"name":"row","url":"classes/roosterjs_editor_dom.vtable.html#row","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2295,"kind":1024,"name":"col","url":"classes/roosterjs_editor_dom.vtable.html#col","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2296,"kind":1024,"name":"formatInfo","url":"classes/roosterjs_editor_dom.vtable.html#formatinfo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2297,"kind":262144,"name":"selection","url":"classes/roosterjs_editor_dom.vtable.html#selection","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2298,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vtable.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2299,"kind":2048,"name":"applyFormat","url":"classes/roosterjs_editor_dom.vtable.html#applyformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2300,"kind":2048,"name":"edit","url":"classes/roosterjs_editor_dom.vtable.html#edit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2301,"kind":2048,"name":"setAlignmentToSelectedCells","url":"classes/roosterjs_editor_dom.vtable.html#setalignmenttoselectedcells","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2302,"kind":2048,"name":"forEachCellOfCurrentColumn","url":"classes/roosterjs_editor_dom.vtable.html#foreachcellofcurrentcolumn","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2303,"kind":2048,"name":"getCellsWithBorder","url":"classes/roosterjs_editor_dom.vtable.html#getcellswithborder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2304,"kind":2048,"name":"forEachCellOfCurrentRow","url":"classes/roosterjs_editor_dom.vtable.html#foreachcellofcurrentrow","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2305,"kind":2048,"name":"getCell","url":"classes/roosterjs_editor_dom.vtable.html#getcell","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2306,"kind":2048,"name":"getCurrentTd","url":"classes/roosterjs_editor_dom.vtable.html#getcurrenttd","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2307,"kind":2048,"name":"getTd","url":"classes/roosterjs_editor_dom.vtable.html#gettd","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2308,"kind":2048,"name":"normalizeTableCellSize","url":"classes/roosterjs_editor_dom.vtable.html#normalizetablecellsize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VTable"},{"id":2309,"kind":64,"name":"isWholeTableSelected","url":"modules/roosterjs_editor_dom.html#iswholetableselected","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2310,"kind":128,"name":"VList","url":"classes/roosterjs_editor_dom.vlist.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2311,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vlist.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2312,"kind":1024,"name":"items","url":"classes/roosterjs_editor_dom.vlist.html#items","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2313,"kind":1024,"name":"rootList","url":"classes/roosterjs_editor_dom.vlist.html#rootlist","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2314,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.vlist.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2315,"kind":2048,"name":"getLastItemNumber","url":"classes/roosterjs_editor_dom.vlist.html#getlastitemnumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2316,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vlist.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2317,"kind":2048,"name":"split","url":"classes/roosterjs_editor_dom.vlist.html#split","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2318,"kind":2048,"name":"setIndentation","url":"classes/roosterjs_editor_dom.vlist.html#setindentation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2319,"kind":2048,"name":"setAlignment","url":"classes/roosterjs_editor_dom.vlist.html#setalignment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2320,"kind":2048,"name":"changeListType","url":"classes/roosterjs_editor_dom.vlist.html#changelisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2321,"kind":2048,"name":"setListStyleType","url":"classes/roosterjs_editor_dom.vlist.html#setliststyletype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2322,"kind":2048,"name":"appendItem","url":"classes/roosterjs_editor_dom.vlist.html#appenditem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2323,"kind":2048,"name":"mergeVList","url":"classes/roosterjs_editor_dom.vlist.html#mergevlist","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2324,"kind":2048,"name":"getListItemIndex","url":"classes/roosterjs_editor_dom.vlist.html#getlistitemindex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2325,"kind":2048,"name":"getStart","url":"classes/roosterjs_editor_dom.vlist.html#getstart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VList"},{"id":2326,"kind":128,"name":"VListItem","url":"classes/roosterjs_editor_dom.vlistitem.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2327,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.vlistitem.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2328,"kind":2048,"name":"getListType","url":"classes/roosterjs_editor_dom.vlistitem.html#getlisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2329,"kind":2048,"name":"getLevel","url":"classes/roosterjs_editor_dom.vlistitem.html#getlevel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2330,"kind":2048,"name":"getNode","url":"classes/roosterjs_editor_dom.vlistitem.html#getnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2331,"kind":2048,"name":"getNewListStart","url":"classes/roosterjs_editor_dom.vlistitem.html#getnewliststart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2332,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_dom.vlistitem.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2333,"kind":2048,"name":"isDummy","url":"classes/roosterjs_editor_dom.vlistitem.html#isdummy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2334,"kind":2048,"name":"isOrphanItem","url":"classes/roosterjs_editor_dom.vlistitem.html#isorphanitem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2335,"kind":2048,"name":"canMerge","url":"classes/roosterjs_editor_dom.vlistitem.html#canmerge","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2336,"kind":2048,"name":"mergeItems","url":"classes/roosterjs_editor_dom.vlistitem.html#mergeitems","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2337,"kind":2048,"name":"indent","url":"classes/roosterjs_editor_dom.vlistitem.html#indent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2338,"kind":2048,"name":"outdent","url":"classes/roosterjs_editor_dom.vlistitem.html#outdent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2339,"kind":2048,"name":"addNegativeMargins","url":"classes/roosterjs_editor_dom.vlistitem.html#addnegativemargins","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2340,"kind":2048,"name":"changeListType","url":"classes/roosterjs_editor_dom.vlistitem.html#changelisttype","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2341,"kind":2048,"name":"setIsDummy","url":"classes/roosterjs_editor_dom.vlistitem.html#setisdummy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2342,"kind":2048,"name":"setNewListStart","url":"classes/roosterjs_editor_dom.vlistitem.html#setnewliststart","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2343,"kind":2048,"name":"applyListStyle","url":"classes/roosterjs_editor_dom.vlistitem.html#applyliststyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2344,"kind":2048,"name":"writeBack","url":"classes/roosterjs_editor_dom.vlistitem.html#writeback","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListItem"},{"id":2345,"kind":64,"name":"createVListFromRegion","url":"modules/roosterjs_editor_dom.html#createvlistfromregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2346,"kind":128,"name":"VListChain","url":"classes/roosterjs_editor_dom.vlistchain.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2347,"kind":2048,"name":"createListChains","url":"classes/roosterjs_editor_dom.vlistchain.html#createlistchains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.VListChain"},{"id":2348,"kind":2048,"name":"canAppendAtCursor","url":"classes/roosterjs_editor_dom.vlistchain.html#canappendatcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2349,"kind":2048,"name":"createVListAtBlock","url":"classes/roosterjs_editor_dom.vlistchain.html#createvlistatblock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2350,"kind":2048,"name":"commit","url":"classes/roosterjs_editor_dom.vlistchain.html#commit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.VListChain"},{"id":2351,"kind":64,"name":"setListItemStyle","url":"modules/roosterjs_editor_dom.html#setlistitemstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2352,"kind":64,"name":"getTableFormatInfo","url":"modules/roosterjs_editor_dom.html#gettableformatinfo","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2353,"kind":64,"name":"saveTableCellMetadata","url":"modules/roosterjs_editor_dom.html#savetablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2354,"kind":64,"name":"getTableCellMetadata","url":"modules/roosterjs_editor_dom.html#gettablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2355,"kind":64,"name":"getRegionsFromRange","url":"modules/roosterjs_editor_dom.html#getregionsfromrange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2356,"kind":64,"name":"getSelectedBlockElementsInRegion","url":"modules/roosterjs_editor_dom.html#getselectedblockelementsinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2357,"kind":64,"name":"collapseNodesInRegion","url":"modules/roosterjs_editor_dom.html#collapsenodesinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2358,"kind":64,"name":"isNodeInRegion","url":"modules/roosterjs_editor_dom.html#isnodeinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2359,"kind":64,"name":"getSelectionRangeInRegion","url":"modules/roosterjs_editor_dom.html#getselectionrangeinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2360,"kind":64,"name":"mergeBlocksInRegion","url":"modules/roosterjs_editor_dom.html#mergeblocksinregion","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2361,"kind":128,"name":"Position","url":"classes/roosterjs_editor_dom.position.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2362,"kind":2048,"name":"getStart","url":"classes/roosterjs_editor_dom.position.html#getstart","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.Position"},{"id":2363,"kind":2048,"name":"getEnd","url":"classes/roosterjs_editor_dom.position.html#getend","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.Position"},{"id":2364,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.position.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2365,"kind":1024,"name":"node","url":"classes/roosterjs_editor_dom.position.html#node","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2366,"kind":1024,"name":"element","url":"classes/roosterjs_editor_dom.position.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2367,"kind":1024,"name":"offset","url":"classes/roosterjs_editor_dom.position.html#offset","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2368,"kind":1024,"name":"isAtEnd","url":"classes/roosterjs_editor_dom.position.html#isatend","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2369,"kind":2048,"name":"normalize","url":"classes/roosterjs_editor_dom.position.html#normalize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2370,"kind":2048,"name":"equalTo","url":"classes/roosterjs_editor_dom.position.html#equalto","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2371,"kind":2048,"name":"isAfter","url":"classes/roosterjs_editor_dom.position.html#isafter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2372,"kind":2048,"name":"move","url":"classes/roosterjs_editor_dom.position.html#move","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.Position"},{"id":2373,"kind":64,"name":"createRange","url":"modules/roosterjs_editor_dom.html#createrange","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2374,"kind":64,"name":"getPositionRect","url":"modules/roosterjs_editor_dom.html#getpositionrect","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2375,"kind":64,"name":"isPositionAtBeginningOf","url":"modules/roosterjs_editor_dom.html#ispositionatbeginningof","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2376,"kind":64,"name":"getSelectionPath","url":"modules/roosterjs_editor_dom.html#getselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2377,"kind":64,"name":"getHtmlWithSelectionPath","url":"modules/roosterjs_editor_dom.html#gethtmlwithselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2378,"kind":64,"name":"setHtmlWithSelectionPath","url":"modules/roosterjs_editor_dom.html#sethtmlwithselectionpath","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2379,"kind":64,"name":"setHtmlWithMetadata","url":"modules/roosterjs_editor_dom.html#sethtmlwithmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2380,"kind":64,"name":"extractContentMetadata","url":"modules/roosterjs_editor_dom.html#extractcontentmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2381,"kind":64,"name":"addRangeToSelection","url":"modules/roosterjs_editor_dom.html#addrangetoselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2382,"kind":64,"name":"addSnapshot","url":"modules/roosterjs_editor_dom.html#addsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2383,"kind":64,"name":"addSnapshotV2","url":"modules/roosterjs_editor_dom.html#addsnapshotv2","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2384,"kind":64,"name":"canMoveCurrentSnapshot","url":"modules/roosterjs_editor_dom.html#canmovecurrentsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2385,"kind":64,"name":"clearProceedingSnapshots","url":"modules/roosterjs_editor_dom.html#clearproceedingsnapshots","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2386,"kind":64,"name":"clearProceedingSnapshotsV2","url":"modules/roosterjs_editor_dom.html#clearproceedingsnapshotsv2","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2387,"kind":64,"name":"moveCurrentSnapshot","url":"modules/roosterjs_editor_dom.html#movecurrentsnapshot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2388,"kind":64,"name":"moveCurrentSnapsnot","url":"modules/roosterjs_editor_dom.html#movecurrentsnapsnot","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2389,"kind":64,"name":"createSnapshots","url":"modules/roosterjs_editor_dom.html#createsnapshots","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2390,"kind":64,"name":"canUndoAutoComplete","url":"modules/roosterjs_editor_dom.html#canundoautocomplete","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2391,"kind":128,"name":"HtmlSanitizer","url":"classes/roosterjs_editor_dom.htmlsanitizer.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2392,"kind":2048,"name":"convertInlineCss","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#convertinlinecss","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2393,"kind":2048,"name":"sanitizeHtml","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#sanitizehtml","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2394,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2395,"kind":2048,"name":"exec","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#exec","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2396,"kind":2048,"name":"sanitize","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#sanitize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2397,"kind":2048,"name":"convertGlobalCssToInlineCss","url":"classes/roosterjs_editor_dom.htmlsanitizer.html#convertglobalcsstoinlinecss","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-dom.HtmlSanitizer"},{"id":2398,"kind":64,"name":"getInheritableStyles","url":"modules/roosterjs_editor_dom.html#getinheritablestyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2399,"kind":64,"name":"createDefaultHtmlSanitizerOptions","url":"modules/roosterjs_editor_dom.html#createdefaulthtmlsanitizeroptions","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2400,"kind":64,"name":"chainSanitizerCallback","url":"modules/roosterjs_editor_dom.html#chainsanitizercallback","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2401,"kind":64,"name":"commitEntity","url":"modules/roosterjs_editor_dom.html#commitentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2402,"kind":64,"name":"getEntityFromElement","url":"modules/roosterjs_editor_dom.html#getentityfromelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2403,"kind":64,"name":"getEntitySelector","url":"modules/roosterjs_editor_dom.html#getentityselector","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2404,"kind":64,"name":"createEntityPlaceholder","url":"modules/roosterjs_editor_dom.html#createentityplaceholder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2405,"kind":64,"name":"moveContentWithEntityPlaceholders","url":"modules/roosterjs_editor_dom.html#movecontentwithentityplaceholders","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2406,"kind":64,"name":"restoreContentWithEntityPlaceholder","url":"modules/roosterjs_editor_dom.html#restorecontentwithentityplaceholder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2407,"kind":64,"name":"cacheGetEventData","url":"modules/roosterjs_editor_dom.html#cachegeteventdata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2408,"kind":64,"name":"clearEventDataCache","url":"modules/roosterjs_editor_dom.html#cleareventdatacache","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2409,"kind":64,"name":"isModifierKey","url":"modules/roosterjs_editor_dom.html#ismodifierkey","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2410,"kind":64,"name":"isCharacterValue","url":"modules/roosterjs_editor_dom.html#ischaractervalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2411,"kind":64,"name":"isCtrlOrMetaPressed","url":"modules/roosterjs_editor_dom.html#isctrlormetapressed","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2412,"kind":64,"name":"getStyles","url":"modules/roosterjs_editor_dom.html#getstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2413,"kind":64,"name":"setStyles","url":"modules/roosterjs_editor_dom.html#setstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2414,"kind":64,"name":"removeImportantStyleRule","url":"modules/roosterjs_editor_dom.html#removeimportantstylerule","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2415,"kind":64,"name":"setGlobalCssStyles","url":"modules/roosterjs_editor_dom.html#setglobalcssstyles","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2416,"kind":64,"name":"removeGlobalCssStyle","url":"modules/roosterjs_editor_dom.html#removeglobalcssstyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2417,"kind":64,"name":"adjustInsertPosition","url":"modules/roosterjs_editor_dom.html#adjustinsertposition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2418,"kind":64,"name":"deleteSelectedContent","url":"modules/roosterjs_editor_dom.html#deleteselectedcontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2419,"kind":64,"name":"getTextContent","url":"modules/roosterjs_editor_dom.html#gettextcontent","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2420,"kind":64,"name":"validate","url":"modules/roosterjs_editor_dom.html#validate","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2421,"kind":64,"name":"createNumberDefinition","url":"modules/roosterjs_editor_dom.html#createnumberdefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2422,"kind":64,"name":"createBooleanDefinition","url":"modules/roosterjs_editor_dom.html#createbooleandefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2423,"kind":64,"name":"createStringDefinition","url":"modules/roosterjs_editor_dom.html#createstringdefinition","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2424,"kind":64,"name":"createArrayDefinition","url":"modules/roosterjs_editor_dom.html#createarraydefinition","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2425,"kind":64,"name":"createObjectDefinition","url":"modules/roosterjs_editor_dom.html#createobjectdefinition","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2426,"kind":64,"name":"getMetadata","url":"modules/roosterjs_editor_dom.html#getmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2427,"kind":64,"name":"setMetadata","url":"modules/roosterjs_editor_dom.html#setmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2428,"kind":64,"name":"removeMetadata","url":"modules/roosterjs_editor_dom.html#removemetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2429,"kind":64,"name":"arrayPush","url":"modules/roosterjs_editor_dom.html#arraypush","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2430,"kind":64,"name":"getObjectKeys","url":"modules/roosterjs_editor_dom.html#getobjectkeys","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2431,"kind":64,"name":"toArray","url":"modules/roosterjs_editor_dom.html#toarray","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-dom"},{"id":2432,"kind":64,"name":"getPasteSource","url":"modules/roosterjs_editor_dom.html#getpastesource","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-dom"},{"id":2433,"kind":128,"name":"Editor","url":"classes/roosterjs_editor_core.editor.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2434,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_core.editor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-core.Editor"},{"id":2435,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_core.editor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2436,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_editor_core.editor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2437,"kind":2048,"name":"insertNode","url":"classes/roosterjs_editor_core.editor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2438,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_editor_core.editor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2439,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_editor_core.editor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2440,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_editor_core.editor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2441,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_core.editor.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2442,"kind":2048,"name":"queryElements","url":"classes/roosterjs_editor_core.editor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2443,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_editor_core.editor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2444,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_editor_core.editor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2445,"kind":2048,"name":"getContent","url":"classes/roosterjs_editor_core.editor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2446,"kind":2048,"name":"setContent","url":"classes/roosterjs_editor_core.editor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2447,"kind":2048,"name":"insertContent","url":"classes/roosterjs_editor_core.editor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2448,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_editor_core.editor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2449,"kind":2048,"name":"paste","url":"classes/roosterjs_editor_core.editor.html#paste","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2450,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_editor_core.editor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2451,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_editor_core.editor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2452,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_editor_core.editor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2453,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_editor_core.editor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2454,"kind":2048,"name":"focus","url":"classes/roosterjs_editor_core.editor.html#focus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2455,"kind":2048,"name":"select","url":"classes/roosterjs_editor_core.editor.html#select","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2456,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_editor_core.editor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2457,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_editor_core.editor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2458,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_editor_core.editor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2459,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_editor_core.editor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2460,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_editor_core.editor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2461,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_editor_core.editor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2462,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_editor_core.editor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2463,"kind":2048,"name":"undo","url":"classes/roosterjs_editor_core.editor.html#undo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2464,"kind":2048,"name":"redo","url":"classes/roosterjs_editor_core.editor.html#redo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2465,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_editor_core.editor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2466,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_editor_core.editor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2467,"kind":2048,"name":"getDocument","url":"classes/roosterjs_editor_core.editor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2468,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_editor_core.editor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2469,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_editor_core.editor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2470,"kind":2048,"name":"isInIME","url":"classes/roosterjs_editor_core.editor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2471,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_editor_core.editor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2472,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_editor_core.editor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2473,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_editor_core.editor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2474,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_editor_core.editor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2475,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_editor_core.editor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2476,"kind":2048,"name":"runAsync","url":"classes/roosterjs_editor_core.editor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2477,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_editor_core.editor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2478,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_editor_core.editor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2479,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_editor_core.editor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2480,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_editor_core.editor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2481,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_editor_core.editor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2482,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_editor_core.editor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2483,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_editor_core.editor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2484,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_editor_core.editor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2485,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_editor_core.editor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2486,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_editor_core.editor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2487,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_editor_core.editor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2488,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_editor_core.editor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2489,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_editor_core.editor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2490,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_editor_core.editor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2491,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_editor_core.editor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2492,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_editor_core.editor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2493,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_editor_core.editor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2494,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_editor_core.editor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2495,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_editor_core.editor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2496,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_editor_core.editor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2497,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_editor_core.editor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-core.Editor"},{"id":2498,"kind":2048,"name":"getCore","url":"classes/roosterjs_editor_core.editor.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-core.Editor"},{"id":2499,"kind":128,"name":"EditorBase","url":"classes/roosterjs_editor_core.editorbase.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-core"},{"id":2500,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_core.editorbase.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2501,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_core.editorbase.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2502,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_editor_core.editorbase.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2503,"kind":2048,"name":"insertNode","url":"classes/roosterjs_editor_core.editorbase.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2504,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_editor_core.editorbase.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2505,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_editor_core.editorbase.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2506,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_editor_core.editorbase.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2507,"kind":2048,"name":"contains","url":"classes/roosterjs_editor_core.editorbase.html#contains","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2508,"kind":2048,"name":"queryElements","url":"classes/roosterjs_editor_core.editorbase.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2509,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_editor_core.editorbase.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2510,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_editor_core.editorbase.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2511,"kind":2048,"name":"getContent","url":"classes/roosterjs_editor_core.editorbase.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2512,"kind":2048,"name":"setContent","url":"classes/roosterjs_editor_core.editorbase.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2513,"kind":2048,"name":"insertContent","url":"classes/roosterjs_editor_core.editorbase.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2514,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_editor_core.editorbase.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2515,"kind":2048,"name":"paste","url":"classes/roosterjs_editor_core.editorbase.html#paste","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2516,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_editor_core.editorbase.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2517,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_editor_core.editorbase.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2518,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_editor_core.editorbase.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2519,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_editor_core.editorbase.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2520,"kind":2048,"name":"focus","url":"classes/roosterjs_editor_core.editorbase.html#focus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2521,"kind":2048,"name":"select","url":"classes/roosterjs_editor_core.editorbase.html#select","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2522,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_editor_core.editorbase.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2523,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_editor_core.editorbase.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2524,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_editor_core.editorbase.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2525,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_editor_core.editorbase.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2526,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_editor_core.editorbase.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2527,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_editor_core.editorbase.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2528,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_editor_core.editorbase.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2529,"kind":2048,"name":"undo","url":"classes/roosterjs_editor_core.editorbase.html#undo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2530,"kind":2048,"name":"redo","url":"classes/roosterjs_editor_core.editorbase.html#redo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2531,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_editor_core.editorbase.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2532,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_editor_core.editorbase.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2533,"kind":2048,"name":"getDocument","url":"classes/roosterjs_editor_core.editorbase.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2534,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_editor_core.editorbase.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2535,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_editor_core.editorbase.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-core.EditorBase"},{"id":2536,"kind":2048,"name":"isInIME","url":"classes/roosterjs_editor_core.editorbase.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2537,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_editor_core.editorbase.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2538,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2539,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2540,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_editor_core.editorbase.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2541,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_editor_core.editorbase.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2542,"kind":2048,"name":"runAsync","url":"classes/roosterjs_editor_core.editorbase.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2543,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_editor_core.editorbase.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2544,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_editor_core.editorbase.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2545,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_editor_core.editorbase.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2546,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_editor_core.editorbase.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2547,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_editor_core.editorbase.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2548,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_editor_core.editorbase.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2549,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_editor_core.editorbase.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2550,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_editor_core.editorbase.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2551,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_editor_core.editorbase.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2552,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_editor_core.editorbase.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2553,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_editor_core.editorbase.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2554,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_editor_core.editorbase.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2555,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2556,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2557,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_editor_core.editorbase.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2558,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_editor_core.editorbase.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2559,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_editor_core.editorbase.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2560,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_editor_core.editorbase.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2561,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_editor_core.editorbase.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2562,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_editor_core.editorbase.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2563,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_editor_core.editorbase.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-core.EditorBase"},{"id":2564,"kind":2048,"name":"getCore","url":"classes/roosterjs_editor_core.editorbase.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-core.EditorBase"},{"id":2565,"kind":64,"name":"isFeatureEnabled","url":"modules/roosterjs_editor_core.html#isfeatureenabled","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2566,"kind":64,"name":"createEditorCore","url":"modules/roosterjs_editor_core.html#createeditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-core"},{"id":2567,"kind":64,"name":"changeFontSize","url":"modules/roosterjs_editor_api.html#changefontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2568,"kind":32,"name":"FONT_SIZES","url":"modules/roosterjs_editor_api.html#font_sizes","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2569,"kind":64,"name":"clearBlockFormat","url":"modules/roosterjs_editor_api.html#clearblockformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2570,"kind":64,"name":"clearFormat","url":"modules/roosterjs_editor_api.html#clearformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2571,"kind":64,"name":"createLink","url":"modules/roosterjs_editor_api.html#createlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2572,"kind":64,"name":"getFormatState","url":"modules/roosterjs_editor_api.html#getformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2573,"kind":64,"name":"getElementBasedFormatState","url":"modules/roosterjs_editor_api.html#getelementbasedformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2574,"kind":64,"name":"insertEntity","url":"modules/roosterjs_editor_api.html#insertentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2575,"kind":64,"name":"insertImage","url":"modules/roosterjs_editor_api.html#insertimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2576,"kind":64,"name":"insertTable","url":"modules/roosterjs_editor_api.html#inserttable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2577,"kind":64,"name":"editTable","url":"modules/roosterjs_editor_api.html#edittable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2578,"kind":64,"name":"formatTable","url":"modules/roosterjs_editor_api.html#formattable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2579,"kind":64,"name":"removeLink","url":"modules/roosterjs_editor_api.html#removelink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2580,"kind":64,"name":"replaceWithNode","url":"modules/roosterjs_editor_api.html#replacewithnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2581,"kind":64,"name":"rotateElement","url":"modules/roosterjs_editor_api.html#rotateelement","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2582,"kind":64,"name":"setAlignment","url":"modules/roosterjs_editor_api.html#setalignment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2583,"kind":64,"name":"setBackgroundColor","url":"modules/roosterjs_editor_api.html#setbackgroundcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2584,"kind":64,"name":"setTextColor","url":"modules/roosterjs_editor_api.html#settextcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2585,"kind":64,"name":"setDirection","url":"modules/roosterjs_editor_api.html#setdirection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2586,"kind":64,"name":"setFontName","url":"modules/roosterjs_editor_api.html#setfontname","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2587,"kind":64,"name":"setFontSize","url":"modules/roosterjs_editor_api.html#setfontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2588,"kind":64,"name":"setImageAltText","url":"modules/roosterjs_editor_api.html#setimagealttext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2589,"kind":64,"name":"setIndentation","url":"modules/roosterjs_editor_api.html#setindentation","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2590,"kind":64,"name":"changeCapitalization","url":"modules/roosterjs_editor_api.html#changecapitalization","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2591,"kind":64,"name":"toggleBold","url":"modules/roosterjs_editor_api.html#togglebold","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2592,"kind":64,"name":"toggleBullet","url":"modules/roosterjs_editor_api.html#togglebullet","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2593,"kind":64,"name":"toggleItalic","url":"modules/roosterjs_editor_api.html#toggleitalic","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2594,"kind":64,"name":"toggleNumbering","url":"modules/roosterjs_editor_api.html#togglenumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2595,"kind":64,"name":"setOrderedListNumbering","url":"modules/roosterjs_editor_api.html#setorderedlistnumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2596,"kind":64,"name":"toggleBlockQuote","url":"modules/roosterjs_editor_api.html#toggleblockquote","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2597,"kind":64,"name":"toggleCodeBlock","url":"modules/roosterjs_editor_api.html#togglecodeblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2598,"kind":64,"name":"toggleStrikethrough","url":"modules/roosterjs_editor_api.html#togglestrikethrough","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2599,"kind":64,"name":"toggleSubscript","url":"modules/roosterjs_editor_api.html#togglesubscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2600,"kind":64,"name":"toggleSuperscript","url":"modules/roosterjs_editor_api.html#togglesuperscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2601,"kind":64,"name":"toggleUnderline","url":"modules/roosterjs_editor_api.html#toggleunderline","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2602,"kind":64,"name":"setHeadingLevel","url":"modules/roosterjs_editor_api.html#setheadinglevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2603,"kind":64,"name":"toggleHeader","url":"modules/roosterjs_editor_api.html#toggleheader","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2604,"kind":64,"name":"applyCellShading","url":"modules/roosterjs_editor_api.html#applycellshading","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2605,"kind":64,"name":"toggleListType","url":"modules/roosterjs_editor_api.html#togglelisttype","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2606,"kind":64,"name":"blockFormat","url":"modules/roosterjs_editor_api.html#blockformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2607,"kind":64,"name":"commitListChains","url":"modules/roosterjs_editor_api.html#commitlistchains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2608,"kind":64,"name":"experimentCommitListChains","url":"modules/roosterjs_editor_api.html#experimentcommitlistchains","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-api"},{"id":2609,"kind":128,"name":"ContentEdit","url":"classes/roosterjs_editor_plugins.contentedit.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2610,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.contentedit.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2611,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.contentedit.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2612,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.contentedit.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2613,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.contentedit.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContentEdit"},{"id":2614,"kind":64,"name":"getAllFeatures","url":"modules/roosterjs_editor_plugins.html#getallfeatures","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2615,"kind":128,"name":"ContextMenu","url":"classes/roosterjs_editor_plugins.contextmenu.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2616,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.contextmenu.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2617,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.contextmenu.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2618,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.contextmenu.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2619,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.contextmenu.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2620,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.contextmenu.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ContextMenu"},{"id":2621,"kind":256,"name":"ContextMenuOptions","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2622,"kind":1024,"name":"render","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#render","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2623,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2624,"kind":1024,"name":"dismiss","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#dismiss","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2625,"kind":65536,"name":"__type","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2626,"kind":1024,"name":"allowDefaultMenu","url":"interfaces/roosterjs_editor_plugins.contextmenuoptions.html#allowdefaultmenu","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-editor-plugins.ContextMenuOptions"},{"id":2627,"kind":128,"name":"CustomReplace","url":"classes/roosterjs_editor_plugins.customreplace.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2628,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.customreplace.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2629,"kind":2048,"name":"updateReplacements","url":"classes/roosterjs_editor_plugins.customreplace.html#updatereplacements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2630,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.customreplace.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2631,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.customreplace.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2632,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.customreplace.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2633,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.customreplace.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CustomReplace"},{"id":2634,"kind":128,"name":"CutPasteListChain","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2635,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2636,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2637,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2638,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2639,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.cutpastelistchain.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.CutPasteListChain"},{"id":2640,"kind":128,"name":"HyperLink","url":"classes/roosterjs_editor_plugins.hyperlink.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2641,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.hyperlink.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2642,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.hyperlink.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2643,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.hyperlink.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2644,"kind":2048,"name":"onMouse","url":"classes/roosterjs_editor_plugins.hyperlink.html#onmouse","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2645,"kind":2048,"name":"onBlur","url":"classes/roosterjs_editor_plugins.hyperlink.html#onblur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2646,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.hyperlink.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2647,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.hyperlink.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.HyperLink"},{"id":2648,"kind":128,"name":"ImageEdit","url":"classes/roosterjs_editor_plugins.imageedit.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2649,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.imageedit.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2650,"kind":1024,"name":"editor","url":"classes/roosterjs_editor_plugins.imageedit.html#editor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2651,"kind":1024,"name":"options","url":"classes/roosterjs_editor_plugins.imageedit.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2652,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.imageedit.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2653,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.imageedit.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2654,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.imageedit.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2655,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.imageedit.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2656,"kind":2048,"name":"isOperationAllowed","url":"classes/roosterjs_editor_plugins.imageedit.html#isoperationallowed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2657,"kind":2048,"name":"setEditingImage","url":"classes/roosterjs_editor_plugins.imageedit.html#seteditingimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2658,"kind":2048,"name":"flipImage","url":"classes/roosterjs_editor_plugins.imageedit.html#flipimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2659,"kind":2048,"name":"rotateImage","url":"classes/roosterjs_editor_plugins.imageedit.html#rotateimage","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageEdit"},{"id":2660,"kind":64,"name":"canRegenerateImage","url":"modules/roosterjs_editor_plugins.html#canregenerateimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2661,"kind":64,"name":"resizeByPercentage","url":"modules/roosterjs_editor_plugins.html#resizebypercentage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2662,"kind":64,"name":"isResizedTo","url":"modules/roosterjs_editor_plugins.html#isresizedto","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2663,"kind":64,"name":"resetImage","url":"modules/roosterjs_editor_plugins.html#resetimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2664,"kind":256,"name":"OnShowResizeHandle","url":"interfaces/roosterjs_editor_plugins.onshowresizehandle.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2665,"kind":4194304,"name":"DNDDirectionX","url":"modules/roosterjs_editor_plugins.html#dnddirectionx","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2666,"kind":4194304,"name":"DnDDirectionY","url":"modules/roosterjs_editor_plugins.html#dnddirectiony","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2667,"kind":128,"name":"ImageResize","url":"classes/roosterjs_editor_plugins.imageresize.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2668,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.imageresize.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2669,"kind":2048,"name":"showResizeHandle","url":"classes/roosterjs_editor_plugins.imageresize.html#showresizehandle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2670,"kind":2048,"name":"hideResizeHandle","url":"classes/roosterjs_editor_plugins.imageresize.html#hideresizehandle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2671,"kind":1024,"name":"editor","url":"classes/roosterjs_editor_plugins.imageresize.html#editor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2672,"kind":1024,"name":"options","url":"classes/roosterjs_editor_plugins.imageresize.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2673,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.imageresize.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2674,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.imageresize.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2675,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.imageresize.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2676,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.imageresize.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2677,"kind":2048,"name":"isOperationAllowed","url":"classes/roosterjs_editor_plugins.imageresize.html#isoperationallowed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2678,"kind":2048,"name":"setEditingImage","url":"classes/roosterjs_editor_plugins.imageresize.html#seteditingimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2679,"kind":2048,"name":"flipImage","url":"classes/roosterjs_editor_plugins.imageresize.html#flipimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2680,"kind":2048,"name":"rotateImage","url":"classes/roosterjs_editor_plugins.imageresize.html#rotateimage","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-editor-plugins.ImageResize"},{"id":2681,"kind":128,"name":"Paste","url":"classes/roosterjs_editor_plugins.paste.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2682,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.paste.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2683,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.paste.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2684,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.paste.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2685,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.paste.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2686,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.paste.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Paste"},{"id":2687,"kind":128,"name":"PickerPlugin","url":"classes/roosterjs_editor_plugins.pickerplugin.html","classes":"tsd-kind-class tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-editor-plugins"},{"id":2688,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.pickerplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2689,"kind":1024,"name":"dataProvider","url":"classes/roosterjs_editor_plugins.pickerplugin.html#dataprovider","classes":"tsd-kind-property tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2690,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.pickerplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2691,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.pickerplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2692,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.pickerplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2693,"kind":2048,"name":"willHandleEventExclusively","url":"classes/roosterjs_editor_plugins.pickerplugin.html#willhandleeventexclusively","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2694,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.pickerplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.PickerPlugin"},{"id":2695,"kind":128,"name":"TableResize","url":"classes/roosterjs_editor_plugins.tableresize.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2696,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.tableresize.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2697,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.tableresize.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2698,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.tableresize.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2699,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.tableresize.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2700,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.tableresize.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableResize"},{"id":2701,"kind":128,"name":"Watermark","url":"classes/roosterjs_editor_plugins.watermark.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2702,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.watermark.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2703,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.watermark.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2704,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.watermark.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2705,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.watermark.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2706,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.watermark.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.Watermark"},{"id":2707,"kind":128,"name":"TableCellSelection","url":"classes/roosterjs_editor_plugins.tablecellselection.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2708,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.tablecellselection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2709,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.tablecellselection.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2710,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.tablecellselection.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2711,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.tablecellselection.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2712,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.tablecellselection.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.TableCellSelection"},{"id":2713,"kind":128,"name":"AutoFormat","url":"classes/roosterjs_editor_plugins.autoformat.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-editor-plugins"},{"id":2714,"kind":512,"name":"constructor","url":"classes/roosterjs_editor_plugins.autoformat.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2715,"kind":2048,"name":"getName","url":"classes/roosterjs_editor_plugins.autoformat.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2716,"kind":2048,"name":"initialize","url":"classes/roosterjs_editor_plugins.autoformat.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2717,"kind":2048,"name":"dispose","url":"classes/roosterjs_editor_plugins.autoformat.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2718,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_editor_plugins.autoformat.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-editor-plugins.AutoFormat"},{"id":2719,"kind":64,"name":"getDarkColor","url":"modules/roosterjs_color_utils.html#getdarkcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-color-utils"},{"id":2720,"kind":4194304,"name":"LocalizedStrings","url":"modules/roosterjs_react.html#localizedstrings","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2721,"kind":4194304,"name":"OkButtonStringKey","url":"modules/roosterjs_react.html#okbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2722,"kind":4194304,"name":"CancelButtonStringKey","url":"modules/roosterjs_react.html#cancelbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2723,"kind":4194304,"name":"MenuItemSplitterKey0","url":"modules/roosterjs_react.html#menuitemsplitterkey0","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2724,"kind":256,"name":"UIUtilities","url":"interfaces/roosterjs_react.uiutilities.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2725,"kind":2048,"name":"renderComponent","url":"interfaces/roosterjs_react.uiutilities.html#rendercomponent","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.UIUtilities"},{"id":2726,"kind":2048,"name":"isRightToLeft","url":"interfaces/roosterjs_react.uiutilities.html#isrighttoleft","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.UIUtilities"},{"id":2727,"kind":256,"name":"ReactEditorPlugin","url":"interfaces/roosterjs_react.reacteditorplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2728,"kind":2048,"name":"setUIUtilities","url":"interfaces/roosterjs_react.reacteditorplugin.html#setuiutilities","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2729,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.reacteditorplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2730,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2731,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.reacteditorplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2732,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2733,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.reacteditorplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2734,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2735,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.reacteditorplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2736,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2737,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.reacteditorplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2738,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.reacteditorplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ReactEditorPlugin"},{"id":2739,"kind":64,"name":"createUIUtilities","url":"modules/roosterjs_react.html#createuiutilities","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2740,"kind":64,"name":"getLocalizedString","url":"modules/roosterjs_react.html#getlocalizedstring","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2741,"kind":256,"name":"RoosterProps","url":"interfaces/roosterjs_react.roosterprops.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2742,"kind":1024,"name":"editorCreator","url":"interfaces/roosterjs_react.roosterprops.html#editorcreator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2743,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2744,"kind":1024,"name":"focusOnInit","url":"interfaces/roosterjs_react.roosterprops.html#focusoninit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2745,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_react.roosterprops.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2746,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_react.roosterprops.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2747,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_react.roosterprops.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2748,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_react.roosterprops.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2749,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_react.roosterprops.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2750,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_react.roosterprops.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2751,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_react.roosterprops.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2752,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_react.roosterprops.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2753,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_react.roosterprops.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2754,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2755,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_react.roosterprops.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2756,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2757,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_react.roosterprops.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2758,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_react.roosterprops.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2759,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_react.roosterprops.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2760,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_react.roosterprops.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2761,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_react.roosterprops.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2762,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_react.roosterprops.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2763,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_react.roosterprops.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2764,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_react.roosterprops.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2765,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_react.roosterprops.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2766,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.roosterprops.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RoosterProps"},{"id":2767,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_react.roosterprops.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RoosterProps"},{"id":2768,"kind":4,"name":"UpdateMode","url":"enums/roosterjs_react.updatemode.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2769,"kind":16,"name":"Force","url":"enums/roosterjs_react.updatemode.html#force","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2770,"kind":16,"name":"OnInitialize","url":"enums/roosterjs_react.updatemode.html#oninitialize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2771,"kind":16,"name":"OnDispose","url":"enums/roosterjs_react.updatemode.html#ondispose","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2772,"kind":16,"name":"OnUserInput","url":"enums/roosterjs_react.updatemode.html#onuserinput","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2773,"kind":16,"name":"OnContentChangedEvent","url":"enums/roosterjs_react.updatemode.html#oncontentchangedevent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2774,"kind":16,"name":"OnBlur","url":"enums/roosterjs_react.updatemode.html#onblur","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.UpdateMode"},{"id":2775,"kind":256,"name":"UpdateContentPlugin","url":"interfaces/roosterjs_react.updatecontentplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2776,"kind":1024,"name":"forceUpdate","url":"interfaces/roosterjs_react.updatecontentplugin.html#forceupdate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2777,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2778,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.updatecontentplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2779,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2780,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.updatecontentplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2781,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2782,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.updatecontentplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2783,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2784,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.updatecontentplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2785,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2786,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.updatecontentplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2787,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.updatecontentplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.UpdateContentPlugin"},{"id":2788,"kind":64,"name":"Rooster","url":"modules/roosterjs_react.html#rooster","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2789,"kind":64,"name":"createUpdateContentPlugin","url":"modules/roosterjs_react.html#createupdatecontentplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2790,"kind":256,"name":"RibbonPlugin","url":"interfaces/roosterjs_react.ribbonplugin.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2791,"kind":1024,"name":"registerFormatChangedCallback","url":"interfaces/roosterjs_react.ribbonplugin.html#registerformatchangedcallback","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2792,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2793,"kind":1024,"name":"onButtonClick","url":"interfaces/roosterjs_react.ribbonplugin.html#onbuttonclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2794,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-react.RibbonPlugin"},{"id":2795,"kind":1024,"name":"startLivePreview","url":"interfaces/roosterjs_react.ribbonplugin.html#startlivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2796,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-interface tsd-has-type-parameter","parent":"roosterjs-react.RibbonPlugin"},{"id":2797,"kind":1024,"name":"stopLivePreview","url":"interfaces/roosterjs_react.ribbonplugin.html#stoplivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2798,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2799,"kind":2048,"name":"setUIUtilities","url":"interfaces/roosterjs_react.ribbonplugin.html#setuiutilities","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2800,"kind":1024,"name":"getName","url":"interfaces/roosterjs_react.ribbonplugin.html#getname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2801,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2802,"kind":1024,"name":"initialize","url":"interfaces/roosterjs_react.ribbonplugin.html#initialize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2803,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2804,"kind":1024,"name":"dispose","url":"interfaces/roosterjs_react.ribbonplugin.html#dispose","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2805,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2806,"kind":1024,"name":"willHandleEventExclusively","url":"interfaces/roosterjs_react.ribbonplugin.html#willhandleeventexclusively","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2807,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2808,"kind":1024,"name":"onPluginEvent","url":"interfaces/roosterjs_react.ribbonplugin.html#onpluginevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-react.RibbonPlugin"},{"id":2809,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonplugin.html#__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonPlugin"},{"id":2810,"kind":256,"name":"RibbonButton","url":"interfaces/roosterjs_react.ribbonbutton.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2811,"kind":1024,"name":"key","url":"interfaces/roosterjs_react.ribbonbutton.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2812,"kind":1024,"name":"iconName","url":"interfaces/roosterjs_react.ribbonbutton.html#iconname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2813,"kind":1024,"name":"flipWhenRtl","url":"interfaces/roosterjs_react.ribbonbutton.html#flipwhenrtl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2814,"kind":1024,"name":"unlocalizedText","url":"interfaces/roosterjs_react.ribbonbutton.html#unlocalizedtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2815,"kind":1024,"name":"onClick","url":"interfaces/roosterjs_react.ribbonbutton.html#onclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2816,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2817,"kind":1024,"name":"isChecked","url":"interfaces/roosterjs_react.ribbonbutton.html#ischecked","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2818,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2819,"kind":1024,"name":"isDisabled","url":"interfaces/roosterjs_react.ribbonbutton.html#isdisabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2820,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbutton.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2821,"kind":1024,"name":"dropDownMenu","url":"interfaces/roosterjs_react.ribbonbutton.html#dropdownmenu","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2822,"kind":1024,"name":"commandBarProperties","url":"interfaces/roosterjs_react.ribbonbutton.html#commandbarproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButton"},{"id":2823,"kind":256,"name":"RibbonButtonDropDown","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2824,"kind":1024,"name":"items","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#items","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2825,"kind":1024,"name":"itemClassName","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#itemclassname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2826,"kind":1024,"name":"allowLivePreview","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#allowlivepreview","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2827,"kind":1024,"name":"itemRender","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#itemrender","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2828,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2829,"kind":1024,"name":"getSelectedItemKey","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#getselecteditemkey","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2830,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2831,"kind":1024,"name":"commandBarSubMenuProperties","url":"interfaces/roosterjs_react.ribbonbuttondropdown.html#commandbarsubmenuproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonButtonDropDown"},{"id":2832,"kind":256,"name":"RibbonProps","url":"interfaces/roosterjs_react.ribbonprops.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2833,"kind":1024,"name":"plugin","url":"interfaces/roosterjs_react.ribbonprops.html#plugin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2834,"kind":1024,"name":"buttons","url":"interfaces/roosterjs_react.ribbonprops.html#buttons","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2835,"kind":1024,"name":"strings","url":"interfaces/roosterjs_react.ribbonprops.html#strings","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.RibbonProps"},{"id":2836,"kind":4,"name":"KnownRibbonButtonKey","url":"enums/roosterjs_react.knownribbonbuttonkey.html","classes":"tsd-kind-enum tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2837,"kind":16,"name":"Bold","url":"enums/roosterjs_react.knownribbonbuttonkey.html#bold","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2838,"kind":16,"name":"Italic","url":"enums/roosterjs_react.knownribbonbuttonkey.html#italic","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2839,"kind":16,"name":"Underline","url":"enums/roosterjs_react.knownribbonbuttonkey.html#underline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2840,"kind":16,"name":"Font","url":"enums/roosterjs_react.knownribbonbuttonkey.html#font","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2841,"kind":16,"name":"FontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#fontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2842,"kind":16,"name":"IncreaseFontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#increasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2843,"kind":16,"name":"DecreaseFontSize","url":"enums/roosterjs_react.knownribbonbuttonkey.html#decreasefontsize","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2844,"kind":16,"name":"TextColor","url":"enums/roosterjs_react.knownribbonbuttonkey.html#textcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2845,"kind":16,"name":"BackgroundColor","url":"enums/roosterjs_react.knownribbonbuttonkey.html#backgroundcolor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2846,"kind":16,"name":"BulletedList","url":"enums/roosterjs_react.knownribbonbuttonkey.html#bulletedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2847,"kind":16,"name":"NumberedList","url":"enums/roosterjs_react.knownribbonbuttonkey.html#numberedlist","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2848,"kind":16,"name":"DecreaseIndent","url":"enums/roosterjs_react.knownribbonbuttonkey.html#decreaseindent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2849,"kind":16,"name":"IncreaseIndent","url":"enums/roosterjs_react.knownribbonbuttonkey.html#increaseindent","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2850,"kind":16,"name":"Quote","url":"enums/roosterjs_react.knownribbonbuttonkey.html#quote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2851,"kind":16,"name":"AlignLeft","url":"enums/roosterjs_react.knownribbonbuttonkey.html#alignleft","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2852,"kind":16,"name":"AlignCenter","url":"enums/roosterjs_react.knownribbonbuttonkey.html#aligncenter","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2853,"kind":16,"name":"AlignRight","url":"enums/roosterjs_react.knownribbonbuttonkey.html#alignright","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2854,"kind":16,"name":"InsertLink","url":"enums/roosterjs_react.knownribbonbuttonkey.html#insertlink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2855,"kind":16,"name":"RemoveLink","url":"enums/roosterjs_react.knownribbonbuttonkey.html#removelink","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2856,"kind":16,"name":"InsertTable","url":"enums/roosterjs_react.knownribbonbuttonkey.html#inserttable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2857,"kind":16,"name":"InsertImage","url":"enums/roosterjs_react.knownribbonbuttonkey.html#insertimage","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2858,"kind":16,"name":"Superscript","url":"enums/roosterjs_react.knownribbonbuttonkey.html#superscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2859,"kind":16,"name":"Subscript","url":"enums/roosterjs_react.knownribbonbuttonkey.html#subscript","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2860,"kind":16,"name":"Strikethrough","url":"enums/roosterjs_react.knownribbonbuttonkey.html#strikethrough","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2861,"kind":16,"name":"Heading","url":"enums/roosterjs_react.knownribbonbuttonkey.html#heading","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2862,"kind":16,"name":"Code","url":"enums/roosterjs_react.knownribbonbuttonkey.html#code","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2863,"kind":16,"name":"Ltr","url":"enums/roosterjs_react.knownribbonbuttonkey.html#ltr","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2864,"kind":16,"name":"Rtl","url":"enums/roosterjs_react.knownribbonbuttonkey.html#rtl","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2865,"kind":16,"name":"Undo","url":"enums/roosterjs_react.knownribbonbuttonkey.html#undo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2866,"kind":16,"name":"Redo","url":"enums/roosterjs_react.knownribbonbuttonkey.html#redo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2867,"kind":16,"name":"ClearFormat","url":"enums/roosterjs_react.knownribbonbuttonkey.html#clearformat","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2868,"kind":16,"name":"Header","url":"enums/roosterjs_react.knownribbonbuttonkey.html#header","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"roosterjs-react.KnownRibbonButtonKey"},{"id":2869,"kind":4194304,"name":"BoldButtonStringKey","url":"modules/roosterjs_react.html#boldbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2870,"kind":4194304,"name":"ItalicButtonStringKey","url":"modules/roosterjs_react.html#italicbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2871,"kind":4194304,"name":"UnderlineButtonStringKey","url":"modules/roosterjs_react.html#underlinebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2872,"kind":4194304,"name":"FontButtonStringKey","url":"modules/roosterjs_react.html#fontbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2873,"kind":4194304,"name":"FontSizeButtonStringKey","url":"modules/roosterjs_react.html#fontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2874,"kind":4194304,"name":"IncreaseFontSizeButtonStringKey","url":"modules/roosterjs_react.html#increasefontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2875,"kind":4194304,"name":"DecreaseFontSizeButtonStringKey","url":"modules/roosterjs_react.html#decreasefontsizebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2876,"kind":4194304,"name":"TextColorButtonStringKey","url":"modules/roosterjs_react.html#textcolorbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2877,"kind":4194304,"name":"BackgroundColorButtonStringKey","url":"modules/roosterjs_react.html#backgroundcolorbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2878,"kind":4194304,"name":"BulletedListButtonStringKey","url":"modules/roosterjs_react.html#bulletedlistbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2879,"kind":4194304,"name":"NumberedListButtonStringKey","url":"modules/roosterjs_react.html#numberedlistbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2880,"kind":4194304,"name":"MoreCommandsButtonStringKey","url":"modules/roosterjs_react.html#morecommandsbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2881,"kind":4194304,"name":"DecreaseIndentButtonStringKey","url":"modules/roosterjs_react.html#decreaseindentbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2882,"kind":4194304,"name":"IncreaseIndentButtonStringKey","url":"modules/roosterjs_react.html#increaseindentbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2883,"kind":4194304,"name":"QuoteButtonStringKey","url":"modules/roosterjs_react.html#quotebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2884,"kind":4194304,"name":"AlignLeftButtonStringKey","url":"modules/roosterjs_react.html#alignleftbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2885,"kind":4194304,"name":"AlignCenterButtonStringKey","url":"modules/roosterjs_react.html#aligncenterbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2886,"kind":4194304,"name":"AlignRightButtonStringKey","url":"modules/roosterjs_react.html#alignrightbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2887,"kind":4194304,"name":"InsertLinkButtonStringKey","url":"modules/roosterjs_react.html#insertlinkbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2888,"kind":4194304,"name":"RemoveLinkButtonStringKey","url":"modules/roosterjs_react.html#removelinkbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2889,"kind":4194304,"name":"InsertTableButtonStringKey","url":"modules/roosterjs_react.html#inserttablebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2890,"kind":4194304,"name":"InsertImageButtonStringKey","url":"modules/roosterjs_react.html#insertimagebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2891,"kind":4194304,"name":"SuperscriptButtonStringKey","url":"modules/roosterjs_react.html#superscriptbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2892,"kind":4194304,"name":"SubscriptButtonStringKey","url":"modules/roosterjs_react.html#subscriptbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2893,"kind":4194304,"name":"StrikethroughButtonStringKey","url":"modules/roosterjs_react.html#strikethroughbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2894,"kind":4194304,"name":"HeadingButtonStringKey","url":"modules/roosterjs_react.html#headingbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2895,"kind":4194304,"name":"HeaderButtonStringKey","url":"modules/roosterjs_react.html#headerbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2896,"kind":4194304,"name":"CodeButtonStringKey","url":"modules/roosterjs_react.html#codebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2897,"kind":4194304,"name":"LtrButtonStringKey","url":"modules/roosterjs_react.html#ltrbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2898,"kind":4194304,"name":"RtlButtonStringKey","url":"modules/roosterjs_react.html#rtlbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2899,"kind":4194304,"name":"UndoButtonStringKey","url":"modules/roosterjs_react.html#undobuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2900,"kind":4194304,"name":"RedoButtonStringKey","url":"modules/roosterjs_react.html#redobuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2901,"kind":4194304,"name":"ClearFormatButtonStringKey","url":"modules/roosterjs_react.html#clearformatbuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2902,"kind":4194304,"name":"AllButtonStringKeys","url":"modules/roosterjs_react.html#allbuttonstringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2903,"kind":4194304,"name":"CellShadeButtonStringKey","url":"modules/roosterjs_react.html#cellshadebuttonstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2904,"kind":64,"name":"Ribbon","url":"modules/roosterjs_react.html#ribbon","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2905,"kind":64,"name":"getButtons","url":"modules/roosterjs_react.html#getbuttons","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2906,"kind":32,"name":"AllButtonKeys","url":"modules/roosterjs_react.html#allbuttonkeys","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2907,"kind":64,"name":"createRibbonPlugin","url":"modules/roosterjs_react.html#createribbonplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2908,"kind":64,"name":"createContextMenuPlugin","url":"modules/roosterjs_react.html#createcontextmenuplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2909,"kind":64,"name":"createContextMenuProvider","url":"modules/roosterjs_react.html#createcontextmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2910,"kind":64,"name":"createListEditMenuProvider","url":"modules/roosterjs_react.html#createlisteditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2911,"kind":64,"name":"createImageEditMenuProvider","url":"modules/roosterjs_react.html#createimageeditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2912,"kind":64,"name":"createTableEditMenuProvider","url":"modules/roosterjs_react.html#createtableeditmenuprovider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2913,"kind":256,"name":"ContextMenuItem","url":"interfaces/roosterjs_react.contextmenuitem.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2914,"kind":1024,"name":"key","url":"interfaces/roosterjs_react.contextmenuitem.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2915,"kind":1024,"name":"unlocalizedText","url":"interfaces/roosterjs_react.contextmenuitem.html#unlocalizedtext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2916,"kind":1024,"name":"onClick","url":"interfaces/roosterjs_react.contextmenuitem.html#onclick","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2917,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2918,"kind":1024,"name":"shouldShow","url":"interfaces/roosterjs_react.contextmenuitem.html#shouldshow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2919,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2920,"kind":1024,"name":"subItems","url":"interfaces/roosterjs_react.contextmenuitem.html#subitems","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2921,"kind":1024,"name":"itemRender","url":"interfaces/roosterjs_react.contextmenuitem.html#itemrender","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2922,"kind":65536,"name":"__type","url":"interfaces/roosterjs_react.contextmenuitem.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2923,"kind":1024,"name":"itemClassName","url":"interfaces/roosterjs_react.contextmenuitem.html#itemclassname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2924,"kind":1024,"name":"commandBarSubMenuProperties","url":"interfaces/roosterjs_react.contextmenuitem.html#commandbarsubmenuproperties","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.ContextMenuItem"},{"id":2925,"kind":4194304,"name":"ListNumberMenuItemStringKey","url":"modules/roosterjs_react.html#listnumbermenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2926,"kind":4194304,"name":"ImageEditMenuItemStringKey","url":"modules/roosterjs_react.html#imageeditmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2927,"kind":4194304,"name":"TableEditInsertMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditinsertmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2928,"kind":4194304,"name":"TableEditDeleteMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditdeletemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2929,"kind":4194304,"name":"TableEditMergeMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditmergemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2930,"kind":4194304,"name":"TableEditSplitMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditsplitmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2931,"kind":4194304,"name":"TableEditAlignMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditalignmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2932,"kind":4194304,"name":"TableEditShadeMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditshademenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2933,"kind":4194304,"name":"TableEditMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditmenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2934,"kind":4194304,"name":"TableEditAlignTableMenuItemStringKey","url":"modules/roosterjs_react.html#tableeditaligntablemenuitemstringkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2935,"kind":4194304,"name":"PasteOptionButtonKeys","url":"modules/roosterjs_react.html#pasteoptionbuttonkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2936,"kind":4194304,"name":"PasteOptionStringKeys","url":"modules/roosterjs_react.html#pasteoptionstringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2937,"kind":64,"name":"createPasteOptionPlugin","url":"modules/roosterjs_react.html#createpasteoptionplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2938,"kind":4194304,"name":"BackgroundColorKeys","url":"modules/roosterjs_react.html#backgroundcolorkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2939,"kind":4194304,"name":"TextColorKeys","url":"modules/roosterjs_react.html#textcolorkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2940,"kind":64,"name":"getBackgroundColorValue","url":"modules/roosterjs_react.html#getbackgroundcolorvalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2941,"kind":64,"name":"getTextColorValue","url":"modules/roosterjs_react.html#gettextcolorvalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2942,"kind":64,"name":"createEmojiPlugin","url":"modules/roosterjs_react.html#createemojiplugin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2943,"kind":4194304,"name":"EmojiStringKeys","url":"modules/roosterjs_react.html#emojistringkeys","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-react"},{"id":2944,"kind":64,"name":"showInputDialog","url":"modules/roosterjs_react.html#showinputdialog","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2945,"kind":256,"name":"DialogItem","url":"interfaces/roosterjs_react.dialogitem.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-react"},{"id":2946,"kind":1024,"name":"labelKey","url":"interfaces/roosterjs_react.dialogitem.html#labelkey","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2947,"kind":1024,"name":"unlocalizedLabel","url":"interfaces/roosterjs_react.dialogitem.html#unlocalizedlabel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2948,"kind":1024,"name":"initValue","url":"interfaces/roosterjs_react.dialogitem.html#initvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2949,"kind":1024,"name":"autoFocus","url":"interfaces/roosterjs_react.dialogitem.html#autofocus","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-react.DialogItem"},{"id":2950,"kind":64,"name":"createEditor","url":"modules/roosterjs.html#createeditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs"},{"id":2951,"kind":4194304,"name":"ContentModelSegmentFormat","url":"modules/roosterjs_content_model_types.html#contentmodelsegmentformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2952,"kind":256,"name":"ContentModelWithFormat","url":"interfaces/roosterjs_content_model_types.contentmodelwithformat.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2953,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelwithformat.html#format","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelWithFormat"},{"id":2954,"kind":4194304,"name":"ContentModelTableFormat","url":"modules/roosterjs_content_model_types.html#contentmodeltableformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2955,"kind":256,"name":"ContentModelWithDataset","url":"interfaces/roosterjs_content_model_types.contentmodelwithdataset.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2956,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelwithdataset.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelWithDataset"},{"id":2957,"kind":4194304,"name":"ContentModelBlockFormat","url":"modules/roosterjs_content_model_types.html#contentmodelblockformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2958,"kind":4194304,"name":"ContentModelTableCellFormat","url":"modules/roosterjs_content_model_types.html#contentmodeltablecellformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2959,"kind":4194304,"name":"ContentModelListItemFormat","url":"modules/roosterjs_content_model_types.html#contentmodellistitemformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2960,"kind":4194304,"name":"ContentModelListItemLevelFormat","url":"modules/roosterjs_content_model_types.html#contentmodellistitemlevelformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2961,"kind":4194304,"name":"ContentModelHyperLinkFormat","url":"modules/roosterjs_content_model_types.html#contentmodelhyperlinkformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2962,"kind":4194304,"name":"ContentModelCodeFormat","url":"modules/roosterjs_content_model_types.html#contentmodelcodeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2963,"kind":4194304,"name":"ContentModelFormatContainerFormat","url":"modules/roosterjs_content_model_types.html#contentmodelformatcontainerformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2964,"kind":4194304,"name":"ContentModelDividerFormat","url":"modules/roosterjs_content_model_types.html#contentmodeldividerformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2965,"kind":4194304,"name":"ContentModelFormatBase","url":"modules/roosterjs_content_model_types.html#contentmodelformatbase","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":2966,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelformatbase.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelFormatBase"},{"id":2967,"kind":256,"name":"ContentModelFormatMap","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2968,"kind":1024,"name":"block","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#block","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2969,"kind":1024,"name":"styleBasedSegment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#stylebasedsegment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2970,"kind":1024,"name":"elementBasedSegment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#elementbasedsegment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2971,"kind":1024,"name":"segment","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2972,"kind":1024,"name":"segmentOnBlock","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentonblock","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2973,"kind":1024,"name":"segmentOnTableCell","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentontablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2974,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2975,"kind":1024,"name":"tableCell","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2976,"kind":1024,"name":"tableRow","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablerow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2977,"kind":1024,"name":"tableBorder","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tableborder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2978,"kind":1024,"name":"tableCellBorder","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#tablecellborder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2979,"kind":1024,"name":"listItemElement","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listitemelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2980,"kind":1024,"name":"listItem","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listitem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2981,"kind":1024,"name":"listLevel","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#listlevel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2982,"kind":1024,"name":"image","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2983,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2984,"kind":1024,"name":"segmentUnderLink","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#segmentunderlink","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2985,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2986,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2987,"kind":1024,"name":"divider","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#divider","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2988,"kind":1024,"name":"container","url":"interfaces/roosterjs_content_model_types.contentmodelformatmap.html#container","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatMap"},{"id":2989,"kind":4194304,"name":"ContentModelImageFormat","url":"modules/roosterjs_content_model_types.html#contentmodelimageformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2990,"kind":256,"name":"FormatHandlerTypeMap","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":2991,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2992,"kind":1024,"name":"bold","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2993,"kind":1024,"name":"border","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#border","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2994,"kind":1024,"name":"borderBox","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#borderbox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2995,"kind":1024,"name":"boxShadow","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#boxshadow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2996,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2997,"kind":1024,"name":"direction","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2998,"kind":1024,"name":"display","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#display","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":2999,"kind":1024,"name":"float","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#float","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3000,"kind":1024,"name":"fontFamily","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#fontfamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3001,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3002,"kind":1024,"name":"htmlAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#htmlalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3003,"kind":1024,"name":"id","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3004,"kind":1024,"name":"italic","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3005,"kind":1024,"name":"letterSpacing","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#letterspacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3006,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3007,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3008,"kind":1024,"name":"listItemThread","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#listitemthread","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3009,"kind":1024,"name":"listLevelThread","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#listlevelthread","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3010,"kind":1024,"name":"listStylePosition","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#liststyleposition","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3011,"kind":1024,"name":"margin","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#margin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3012,"kind":1024,"name":"padding","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#padding","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3013,"kind":1024,"name":"size","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3014,"kind":1024,"name":"strike","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#strike","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3015,"kind":1024,"name":"superOrSubScript","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#superorsubscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3016,"kind":1024,"name":"tableLayout","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#tablelayout","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3017,"kind":1024,"name":"tableSpacing","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#tablespacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3018,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3019,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3020,"kind":1024,"name":"textColorOnTableCell","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#textcolorontablecell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3021,"kind":1024,"name":"underline","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#underline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3022,"kind":1024,"name":"verticalAlign","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#verticalalign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3023,"kind":1024,"name":"whiteSpace","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#whitespace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3024,"kind":1024,"name":"wordBreak","url":"interfaces/roosterjs_content_model_types.formathandlertypemap.html#wordbreak","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.FormatHandlerTypeMap"},{"id":3025,"kind":4194304,"name":"FormatKey","url":"modules/roosterjs_content_model_types.html#formatkey","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3026,"kind":4194304,"name":"BackgroundColorFormat","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3027,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BackgroundColorFormat"},{"id":3028,"kind":1024,"name":"backgroundColor","url":"modules/roosterjs_content_model_types.html#backgroundcolorformat.__type.backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BackgroundColorFormat.__type"},{"id":3029,"kind":4194304,"name":"BoldFormat","url":"modules/roosterjs_content_model_types.html#boldformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3030,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#boldformat.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BoldFormat"},{"id":3031,"kind":1024,"name":"fontWeight","url":"modules/roosterjs_content_model_types.html#boldformat.__type-1.fontweight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BoldFormat.__type"},{"id":3032,"kind":4194304,"name":"FontFamilyFormat","url":"modules/roosterjs_content_model_types.html#fontfamilyformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3033,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#fontfamilyformat.__type-13","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FontFamilyFormat"},{"id":3034,"kind":1024,"name":"fontFamily","url":"modules/roosterjs_content_model_types.html#fontfamilyformat.__type-13.fontfamily","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FontFamilyFormat.__type"},{"id":3035,"kind":4194304,"name":"FontSizeFormat","url":"modules/roosterjs_content_model_types.html#fontsizeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3036,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#fontsizeformat.__type-14","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FontSizeFormat"},{"id":3037,"kind":1024,"name":"fontSize","url":"modules/roosterjs_content_model_types.html#fontsizeformat.__type-14.fontsize","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FontSizeFormat.__type"},{"id":3038,"kind":4194304,"name":"ItalicFormat","url":"modules/roosterjs_content_model_types.html#italicformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3039,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#italicformat.__type-22","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ItalicFormat"},{"id":3040,"kind":1024,"name":"italic","url":"modules/roosterjs_content_model_types.html#italicformat.__type-22.italic","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ItalicFormat.__type"},{"id":3041,"kind":4194304,"name":"LetterSpacingFormat","url":"modules/roosterjs_content_model_types.html#letterspacingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3042,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#letterspacingformat.__type-23","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LetterSpacingFormat"},{"id":3043,"kind":1024,"name":"letterSpacing","url":"modules/roosterjs_content_model_types.html#letterspacingformat.__type-23.letterspacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LetterSpacingFormat.__type"},{"id":3044,"kind":4194304,"name":"LineHeightFormat","url":"modules/roosterjs_content_model_types.html#lineheightformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3045,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#lineheightformat.__type-24","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LineHeightFormat"},{"id":3046,"kind":1024,"name":"lineHeight","url":"modules/roosterjs_content_model_types.html#lineheightformat.__type-24.lineheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LineHeightFormat.__type"},{"id":3047,"kind":4194304,"name":"StrikeFormat","url":"modules/roosterjs_content_model_types.html#strikeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3048,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#strikeformat.__type-34","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.StrikeFormat"},{"id":3049,"kind":1024,"name":"strikethrough","url":"modules/roosterjs_content_model_types.html#strikeformat.__type-34.strikethrough","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.StrikeFormat.__type"},{"id":3050,"kind":4194304,"name":"SuperOrSubScriptFormat","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3051,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat.__type-35","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SuperOrSubScriptFormat"},{"id":3052,"kind":1024,"name":"superOrSubScriptSequence","url":"modules/roosterjs_content_model_types.html#superorsubscriptformat.__type-35.superorsubscriptsequence","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SuperOrSubScriptFormat.__type"},{"id":3053,"kind":4194304,"name":"TextColorFormat","url":"modules/roosterjs_content_model_types.html#textcolorformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3054,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#textcolorformat.__type-39","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TextColorFormat"},{"id":3055,"kind":1024,"name":"textColor","url":"modules/roosterjs_content_model_types.html#textcolorformat.__type-39.textcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TextColorFormat.__type"},{"id":3056,"kind":4194304,"name":"UnderlineFormat","url":"modules/roosterjs_content_model_types.html#underlineformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3057,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#underlineformat.__type-40","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.UnderlineFormat"},{"id":3058,"kind":1024,"name":"underline","url":"modules/roosterjs_content_model_types.html#underlineformat.__type-40.underline","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.UnderlineFormat.__type"},{"id":3059,"kind":4194304,"name":"BorderBoxFormat","url":"modules/roosterjs_content_model_types.html#borderboxformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3060,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#borderboxformat.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BorderBoxFormat"},{"id":3061,"kind":1024,"name":"useBorderBox","url":"modules/roosterjs_content_model_types.html#borderboxformat.__type-2.useborderbox","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderBoxFormat.__type"},{"id":3062,"kind":4194304,"name":"VerticalAlignFormat","url":"modules/roosterjs_content_model_types.html#verticalalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3063,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#verticalalignformat.__type-41","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.VerticalAlignFormat"},{"id":3064,"kind":1024,"name":"verticalAlign","url":"modules/roosterjs_content_model_types.html#verticalalignformat.__type-41.verticalalign-1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.VerticalAlignFormat.__type"},{"id":3065,"kind":4194304,"name":"WordBreakFormat","url":"modules/roosterjs_content_model_types.html#wordbreakformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3066,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#wordbreakformat.__type-43","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.WordBreakFormat"},{"id":3067,"kind":1024,"name":"wordBreak","url":"modules/roosterjs_content_model_types.html#wordbreakformat.__type-43.wordbreak","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.WordBreakFormat.__type"},{"id":3068,"kind":4194304,"name":"BorderFormat","url":"modules/roosterjs_content_model_types.html#borderformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3069,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BorderFormat"},{"id":3070,"kind":1024,"name":"borderTop","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.bordertop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3071,"kind":1024,"name":"borderRight","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3072,"kind":1024,"name":"borderBottom","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3073,"kind":1024,"name":"borderLeft","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3074,"kind":1024,"name":"borderRadius","url":"modules/roosterjs_content_model_types.html#borderformat.__type-3.borderradius","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BorderFormat.__type"},{"id":3075,"kind":4194304,"name":"DirectionFormat","url":"modules/roosterjs_content_model_types.html#directionformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3076,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#directionformat.__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.DirectionFormat"},{"id":3077,"kind":1024,"name":"direction","url":"modules/roosterjs_content_model_types.html#directionformat.__type-9.direction","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.DirectionFormat.__type"},{"id":3078,"kind":4194304,"name":"HtmlAlignFormat","url":"modules/roosterjs_content_model_types.html#htmlalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3079,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#htmlalignformat.__type-17","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.HtmlAlignFormat"},{"id":3080,"kind":1024,"name":"htmlAlign","url":"modules/roosterjs_content_model_types.html#htmlalignformat.__type-17.htmlalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.HtmlAlignFormat.__type"},{"id":3081,"kind":4194304,"name":"MarginFormat","url":"modules/roosterjs_content_model_types.html#marginformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3082,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.MarginFormat"},{"id":3083,"kind":1024,"name":"marginTop","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.margintop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3084,"kind":1024,"name":"marginRight","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3085,"kind":1024,"name":"marginBottom","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3086,"kind":1024,"name":"marginLeft","url":"modules/roosterjs_content_model_types.html#marginformat.__type-29.marginleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.MarginFormat.__type"},{"id":3087,"kind":4194304,"name":"PaddingFormat","url":"modules/roosterjs_content_model_types.html#paddingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3088,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.PaddingFormat"},{"id":3089,"kind":1024,"name":"paddingTop","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingtop","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3090,"kind":1024,"name":"paddingRight","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingright","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3091,"kind":1024,"name":"paddingBottom","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingbottom","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3092,"kind":1024,"name":"paddingLeft","url":"modules/roosterjs_content_model_types.html#paddingformat.__type-31.paddingleft","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.PaddingFormat.__type"},{"id":3093,"kind":4194304,"name":"TextAlignFormat","url":"modules/roosterjs_content_model_types.html#textalignformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3094,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#textalignformat.__type-38","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TextAlignFormat"},{"id":3095,"kind":1024,"name":"textAlign","url":"modules/roosterjs_content_model_types.html#textalignformat.__type-38.textalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TextAlignFormat.__type"},{"id":3096,"kind":4194304,"name":"WhiteSpaceFormat","url":"modules/roosterjs_content_model_types.html#whitespaceformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3097,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#whitespaceformat.__type-42","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.WhiteSpaceFormat"},{"id":3098,"kind":1024,"name":"whiteSpace","url":"modules/roosterjs_content_model_types.html#whitespaceformat.__type-42.whitespace","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.WhiteSpaceFormat.__type"},{"id":3099,"kind":4194304,"name":"DisplayFormat","url":"modules/roosterjs_content_model_types.html#displayformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3100,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#displayformat.__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.DisplayFormat"},{"id":3101,"kind":1024,"name":"display","url":"modules/roosterjs_content_model_types.html#displayformat.__type-10.display","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.DisplayFormat.__type"},{"id":3102,"kind":4194304,"name":"IdFormat","url":"modules/roosterjs_content_model_types.html#idformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3103,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#idformat.__type-18","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.IdFormat"},{"id":3104,"kind":1024,"name":"id","url":"modules/roosterjs_content_model_types.html#idformat.__type-18.id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.IdFormat.__type"},{"id":3105,"kind":4194304,"name":"SpacingFormat","url":"modules/roosterjs_content_model_types.html#spacingformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3106,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#spacingformat.__type-33","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SpacingFormat"},{"id":3107,"kind":1024,"name":"borderCollapse","url":"modules/roosterjs_content_model_types.html#spacingformat.__type-33.bordercollapse","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SpacingFormat.__type"},{"id":3108,"kind":4194304,"name":"TableLayoutFormat","url":"modules/roosterjs_content_model_types.html#tablelayoutformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3109,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#tablelayoutformat.__type-36","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TableLayoutFormat"},{"id":3110,"kind":1024,"name":"tableLayout","url":"modules/roosterjs_content_model_types.html#tablelayoutformat.__type-36.tablelayout","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableLayoutFormat.__type"},{"id":3111,"kind":4194304,"name":"LinkFormat","url":"modules/roosterjs_content_model_types.html#linkformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3112,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.LinkFormat"},{"id":3113,"kind":1024,"name":"name","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.name","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3114,"kind":1024,"name":"href","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.href","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3115,"kind":1024,"name":"target","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.target","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3116,"kind":1024,"name":"anchorId","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchorid","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3117,"kind":1024,"name":"anchorClass","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchorclass","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3118,"kind":1024,"name":"anchorTitle","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.anchortitle","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3119,"kind":1024,"name":"relationship","url":"modules/roosterjs_content_model_types.html#linkformat.__type-25.relationship","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.LinkFormat.__type"},{"id":3120,"kind":4194304,"name":"SizeFormat","url":"modules/roosterjs_content_model_types.html#sizeformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3121,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.SizeFormat"},{"id":3122,"kind":1024,"name":"width","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3123,"kind":1024,"name":"height","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3124,"kind":1024,"name":"maxWidth","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.maxwidth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3125,"kind":1024,"name":"maxHeight","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.maxheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3126,"kind":1024,"name":"minWidth","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.minwidth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3127,"kind":1024,"name":"minHeight","url":"modules/roosterjs_content_model_types.html#sizeformat.__type-32.minheight","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.SizeFormat.__type"},{"id":3128,"kind":4194304,"name":"BoxShadowFormat","url":"modules/roosterjs_content_model_types.html#boxshadowformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3129,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#boxshadowformat.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.BoxShadowFormat"},{"id":3130,"kind":1024,"name":"boxShadow","url":"modules/roosterjs_content_model_types.html#boxshadowformat.__type-4.boxshadow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.BoxShadowFormat.__type"},{"id":3131,"kind":4194304,"name":"ListThreadFormat","url":"modules/roosterjs_content_model_types.html#listthreadformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3132,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListThreadFormat"},{"id":3133,"kind":1024,"name":"startNumberOverride","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28.startnumberoverride","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListThreadFormat.__type"},{"id":3134,"kind":1024,"name":"displayForDummyItem","url":"modules/roosterjs_content_model_types.html#listthreadformat.__type-28.displayfordummyitem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListThreadFormat.__type"},{"id":3135,"kind":4194304,"name":"ListStylePositionFormat","url":"modules/roosterjs_content_model_types.html#liststylepositionformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3136,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#liststylepositionformat.__type-27","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListStylePositionFormat"},{"id":3137,"kind":1024,"name":"listStylePosition","url":"modules/roosterjs_content_model_types.html#liststylepositionformat.__type-27.liststyleposition","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListStylePositionFormat.__type"},{"id":3138,"kind":4194304,"name":"FloatFormat","url":"modules/roosterjs_content_model_types.html#floatformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3139,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#floatformat.__type-12","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FloatFormat"},{"id":3140,"kind":1024,"name":"float","url":"modules/roosterjs_content_model_types.html#floatformat.__type-12.float","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.FloatFormat.__type"},{"id":3141,"kind":4194304,"name":"DatasetFormat","url":"modules/roosterjs_content_model_types.html#datasetformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3142,"kind":4194304,"name":"TableMetadataFormat","url":"modules/roosterjs_content_model_types.html#tablemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3143,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.TableMetadataFormat"},{"id":3144,"kind":1024,"name":"topBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.topbordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3145,"kind":1024,"name":"bottomBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bottombordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3146,"kind":1024,"name":"verticalBorderColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.verticalbordercolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3147,"kind":1024,"name":"hasHeaderRow","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasheaderrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3148,"kind":1024,"name":"headerRowColor","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.headerrowcolor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3149,"kind":1024,"name":"hasFirstColumn","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasfirstcolumn","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3150,"kind":1024,"name":"hasBandedColumns","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasbandedcolumns","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3151,"kind":1024,"name":"hasBandedRows","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.hasbandedrows","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3152,"kind":1024,"name":"bgColorEven","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bgcoloreven","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3153,"kind":1024,"name":"bgColorOdd","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.bgcolorodd","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3154,"kind":1024,"name":"tableBorderFormat","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.tableborderformat","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3155,"kind":1024,"name":"verticalAlign","url":"modules/roosterjs_content_model_types.html#tablemetadataformat.__type-37.verticalalign","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.TableMetadataFormat.__type"},{"id":3156,"kind":4194304,"name":"ListMetadataFormat","url":"modules/roosterjs_content_model_types.html#listmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3157,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ListMetadataFormat"},{"id":3158,"kind":1024,"name":"orderedStyleType","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26.orderedstyletype","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListMetadataFormat.__type"},{"id":3159,"kind":1024,"name":"unorderedStyleType","url":"modules/roosterjs_content_model_types.html#listmetadataformat.__type-26.unorderedstyletype","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ListMetadataFormat.__type"},{"id":3160,"kind":4194304,"name":"ImageResizeMetadataFormat","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3161,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat"},{"id":3162,"kind":1024,"name":"widthPx","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20.widthpx","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat.__type"},{"id":3163,"kind":1024,"name":"heightPx","url":"modules/roosterjs_content_model_types.html#imageresizemetadataformat.__type-20.heightpx","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageResizeMetadataFormat.__type"},{"id":3164,"kind":4194304,"name":"ImageCropMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3165,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageCropMetadataFormat"},{"id":3166,"kind":1024,"name":"leftPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.leftpercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3167,"kind":1024,"name":"rightPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.rightpercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3168,"kind":1024,"name":"topPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.toppercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3169,"kind":1024,"name":"bottomPercent","url":"modules/roosterjs_content_model_types.html#imagecropmetadataformat.__type-19.bottompercent","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageCropMetadataFormat.__type"},{"id":3170,"kind":4194304,"name":"ImageMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3171,"kind":4194304,"name":"ImageRotateMetadataFormat","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3172,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat.__type-21","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ImageRotateMetadataFormat"},{"id":3173,"kind":1024,"name":"angleRad","url":"modules/roosterjs_content_model_types.html#imagerotatemetadataformat.__type-21.anglerad","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ImageRotateMetadataFormat.__type"},{"id":3174,"kind":4194304,"name":"ContentModelBlockGroupType","url":"modules/roosterjs_content_model_types.html#contentmodelblockgrouptype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3175,"kind":4194304,"name":"ContentModelBlockType","url":"modules/roosterjs_content_model_types.html#contentmodelblocktype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3176,"kind":4194304,"name":"ContentModelSegmentType","url":"modules/roosterjs_content_model_types.html#contentmodelsegmenttype","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3177,"kind":4194304,"name":"ContentModelBlock","url":"modules/roosterjs_content_model_types.html#contentmodelblock","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3178,"kind":256,"name":"ContentModelParagraph","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3179,"kind":1024,"name":"segments","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#segments","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3180,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3181,"kind":1024,"name":"decorator","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#decorator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3182,"kind":1024,"name":"isImplicit","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#isimplicit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3183,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3184,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3185,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelparagraph.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraph"},{"id":3186,"kind":256,"name":"ContentModelTable","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3187,"kind":1024,"name":"widths","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#widths","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3188,"kind":1024,"name":"rows","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#rows","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3189,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3190,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3191,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3192,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltable.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTable"},{"id":3193,"kind":256,"name":"ContentModelDivider","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3194,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3195,"kind":1024,"name":"size","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3196,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3197,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3198,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3199,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeldivider.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDivider"},{"id":3200,"kind":256,"name":"ContentModelBlockBase","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3201,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockBase"},{"id":3202,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelblockbase.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBlockBase"},{"id":3203,"kind":256,"name":"ContentModelBlockWithCache","url":"interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3204,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockWithCache"},{"id":3205,"kind":256,"name":"ContentModelTableRow","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3206,"kind":1024,"name":"height","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3207,"kind":1024,"name":"cells","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#cells","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3208,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3209,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltablerow.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableRow"},{"id":3210,"kind":256,"name":"ContentModelEntity","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3211,"kind":1024,"name":"wrapper","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#wrapper","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3212,"kind":1024,"name":"isReadonly","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#isreadonly","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3213,"kind":1024,"name":"type","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3214,"kind":1024,"name":"id","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3215,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3216,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3217,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3218,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3219,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3220,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelentity.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelEntity"},{"id":3221,"kind":256,"name":"ContentModelDocument","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3222,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3223,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3224,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeldocument.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelDocument"},{"id":3225,"kind":256,"name":"ContentModelBlockGroupBase","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3226,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockGroupBase"},{"id":3227,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelBlockGroupBase"},{"id":3228,"kind":256,"name":"ContentModelFormatContainer","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3229,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3230,"kind":1024,"name":"zeroFontSize","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#zerofontsize","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3231,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3232,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3233,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3234,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3235,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelFormatContainer"},{"id":3236,"kind":256,"name":"ContentModelGeneralBlock","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3237,"kind":1024,"name":"element","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#element","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3238,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3239,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3240,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3241,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3242,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralBlock"},{"id":3243,"kind":256,"name":"ContentModelListItem","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3244,"kind":1024,"name":"levels","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#levels","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3245,"kind":1024,"name":"formatHolder","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#formatholder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3246,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3247,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3248,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3249,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellistitem.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListItem"},{"id":3250,"kind":256,"name":"ContentModelTableCell","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3251,"kind":1024,"name":"spanLeft","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#spanleft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3252,"kind":1024,"name":"spanAbove","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#spanabove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3253,"kind":1024,"name":"isHeader","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#isheader","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3254,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3255,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3256,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3257,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3258,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3259,"kind":1024,"name":"cachedElement","url":"interfaces/roosterjs_content_model_types.contentmodeltablecell.html#cachedelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelTableCell"},{"id":3260,"kind":4194304,"name":"ContentModelBlockGroup","url":"modules/roosterjs_content_model_types.html#contentmodelblockgroup","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3261,"kind":256,"name":"ContentModelBr","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3262,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3263,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3264,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3265,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3266,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelbr.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelBr"},{"id":3267,"kind":256,"name":"ContentModelGeneralSegment","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3268,"kind":1024,"name":"element","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#element","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3269,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3270,"kind":1024,"name":"blockGroupType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blockgrouptype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3271,"kind":1024,"name":"blocks","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blocks","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3272,"kind":1024,"name":"blockType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#blocktype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3273,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3274,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3275,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3276,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelGeneralSegment"},{"id":3277,"kind":256,"name":"ContentModelImage","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3278,"kind":1024,"name":"src","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#src","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3279,"kind":1024,"name":"alt","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#alt","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3280,"kind":1024,"name":"title","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3281,"kind":1024,"name":"isSelectedAsImageSelection","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#isselectedasimageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3282,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3283,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3284,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3285,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3286,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3287,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodelimage.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelImage"},{"id":3288,"kind":256,"name":"ContentModelText","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3289,"kind":1024,"name":"text","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3290,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3291,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3292,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3293,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3294,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodeltext.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelText"},{"id":3295,"kind":256,"name":"ContentModelSelectionMarker","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3296,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3297,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3298,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3299,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3300,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSelectionMarker"},{"id":3301,"kind":256,"name":"ContentModelSegmentBase","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html","classes":"tsd-kind-interface tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3302,"kind":1024,"name":"segmentType","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#segmenttype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3303,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3304,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3305,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3306,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelSegmentBase"},{"id":3307,"kind":4194304,"name":"ContentModelSegment","url":"modules/roosterjs_content_model_types.html#contentmodelsegment","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3308,"kind":256,"name":"ContentModelCode","url":"interfaces/roosterjs_content_model_types.contentmodelcode.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3309,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelcode.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelCode"},{"id":3310,"kind":256,"name":"ContentModelLink","url":"interfaces/roosterjs_content_model_types.contentmodellink.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3311,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellink.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelLink"},{"id":3312,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodellink.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelLink"},{"id":3313,"kind":256,"name":"ContentModelParagraphDecorator","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3314,"kind":1024,"name":"tagName","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html#tagname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelParagraphDecorator"},{"id":3315,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelParagraphDecorator"},{"id":3316,"kind":4194304,"name":"ContentModelDecorator","url":"modules/roosterjs_content_model_types.html#contentmodeldecorator","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3317,"kind":256,"name":"ContentModelListLevel","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3318,"kind":1024,"name":"listType","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#listtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3319,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3320,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.contentmodellistlevel.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ContentModelListLevel"},{"id":3321,"kind":256,"name":"Selectable","url":"interfaces/roosterjs_content_model_types.selectable.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3322,"kind":1024,"name":"isSelected","url":"interfaces/roosterjs_content_model_types.selectable.html#isselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.Selectable"},{"id":3323,"kind":4194304,"name":"ContentModelHandlerMap","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3324,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelHandlerMap"},{"id":3325,"kind":1024,"name":"block","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.block","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3326,"kind":1024,"name":"blockGroupChildren","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.blockgroupchildren","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3327,"kind":1024,"name":"br","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.br","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3328,"kind":1024,"name":"entity","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.entity","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3329,"kind":1024,"name":"general","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.general","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3330,"kind":1024,"name":"divider","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.divider","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3331,"kind":1024,"name":"image","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.image","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3332,"kind":1024,"name":"list","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.list","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3333,"kind":1024,"name":"listItem","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.listitem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3334,"kind":1024,"name":"paragraph","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.paragraph","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3335,"kind":1024,"name":"formatContainer","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.formatcontainer","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3336,"kind":1024,"name":"segment","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.segment","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3337,"kind":1024,"name":"segmentDecorator","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.segmentdecorator","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3338,"kind":1024,"name":"table","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.table","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3339,"kind":1024,"name":"text","url":"modules/roosterjs_content_model_types.html#contentmodelhandlermap.__type-8.text","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"roosterjs-content-model-types.ContentModelHandlerMap.__type"},{"id":3340,"kind":4194304,"name":"DefaultImplicitFormatMap","url":"modules/roosterjs_content_model_types.html#defaultimplicitformatmap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3341,"kind":4194304,"name":"FormatAppliers","url":"modules/roosterjs_content_model_types.html#formatappliers","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3342,"kind":4194304,"name":"FormatAppliersPerCategory","url":"modules/roosterjs_content_model_types.html#formatapplierspercategory","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3343,"kind":4194304,"name":"OnNodeCreated","url":"modules/roosterjs_content_model_types.html#onnodecreated","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3344,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#onnodecreated.__type-30","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.OnNodeCreated"},{"id":3345,"kind":256,"name":"ModelToDomSettings","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3346,"kind":1024,"name":"modelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#modelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3347,"kind":1024,"name":"formatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#formatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3348,"kind":1024,"name":"defaultImplicitFormatMap","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultimplicitformatmap","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3349,"kind":1024,"name":"defaultModelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultmodelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3350,"kind":1024,"name":"defaultFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#defaultformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3351,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomsettings.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSettings"},{"id":3352,"kind":4194304,"name":"FormatApplier","url":"modules/roosterjs_content_model_types.html#formatapplier","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3353,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#formatapplier.__type-15","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FormatApplier"},{"id":3354,"kind":4194304,"name":"DefaultStyleMap","url":"modules/roosterjs_content_model_types.html#defaultstylemap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3355,"kind":4194304,"name":"ElementProcessorMap","url":"modules/roosterjs_content_model_types.html#elementprocessormap","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3356,"kind":4194304,"name":"FormatParsers","url":"modules/roosterjs_content_model_types.html#formatparsers","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3357,"kind":4194304,"name":"FormatParsersPerCategory","url":"modules/roosterjs_content_model_types.html#formatparserspercategory","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3358,"kind":256,"name":"DomToModelSettings","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3359,"kind":1024,"name":"elementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#elementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3360,"kind":1024,"name":"defaultStyles","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultstyles","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3361,"kind":1024,"name":"formatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#formatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3362,"kind":1024,"name":"defaultElementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultelementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3363,"kind":1024,"name":"defaultFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelsettings.html#defaultformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSettings"},{"id":3364,"kind":4194304,"name":"FormatParser","url":"modules/roosterjs_content_model_types.html#formatparser","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3365,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#formatparser.__type-16","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.FormatParser"},{"id":3366,"kind":256,"name":"DomToModelContext","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3367,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3368,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3369,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3370,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3371,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3372,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3373,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3374,"kind":1024,"name":"isInSelection","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#isinselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3375,"kind":1024,"name":"rangeEx","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#rangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3376,"kind":1024,"name":"blockFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#blockformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3377,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3378,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3379,"kind":1024,"name":"elementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#elementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3380,"kind":1024,"name":"defaultStyles","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultstyles","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3381,"kind":1024,"name":"formatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#formatparsers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3382,"kind":1024,"name":"defaultElementProcessors","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultelementprocessors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3383,"kind":1024,"name":"defaultFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#defaultformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3384,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3385,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3386,"kind":1024,"name":"blockDecorator","url":"interfaces/roosterjs_content_model_types.domtomodelcontext.html#blockdecorator","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.DomToModelContext"},{"id":3387,"kind":4194304,"name":"ElementProcessor","url":"modules/roosterjs_content_model_types.html#elementprocessor","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3388,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#elementprocessor.__type-11","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ElementProcessor"},{"id":3389,"kind":256,"name":"DomToModelSelectionContext","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3390,"kind":1024,"name":"isInSelection","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html#isinselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSelectionContext"},{"id":3391,"kind":1024,"name":"rangeEx","url":"interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html#rangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelSelectionContext"},{"id":3392,"kind":256,"name":"EditorContext","url":"interfaces/roosterjs_content_model_types.editorcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3393,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.editorcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3394,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.editorcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3395,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.editorcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3396,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.editorcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3397,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.editorcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3398,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.editorcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3399,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.editorcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.EditorContext"},{"id":3400,"kind":256,"name":"DomToModelFormatContext","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3401,"kind":1024,"name":"blockFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#blockformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3402,"kind":1024,"name":"segmentFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#segmentformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3403,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.domtomodelformatcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelFormatContext"},{"id":3404,"kind":256,"name":"DomToModelDecoratorContext","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3405,"kind":1024,"name":"link","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#link","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3406,"kind":1024,"name":"code","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3407,"kind":1024,"name":"blockDecorator","url":"interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html#blockdecorator","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelDecoratorContext"},{"id":3408,"kind":256,"name":"DomToModelListFormat","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3409,"kind":1024,"name":"threadItemCounts","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#threaditemcounts","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3410,"kind":1024,"name":"listParent","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#listparent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3411,"kind":1024,"name":"levels","url":"interfaces/roosterjs_content_model_types.domtomodellistformat.html#levels","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelListFormat"},{"id":3412,"kind":256,"name":"ModelToDomContext","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3413,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3414,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3415,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3416,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3417,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3418,"kind":1024,"name":"isRootRtl","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#isrootrtl","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3419,"kind":1024,"name":"allowCacheElement","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#allowcacheelement","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3420,"kind":1024,"name":"regularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#regularselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3421,"kind":1024,"name":"tableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#tableselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3422,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3423,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3424,"kind":1024,"name":"implicitFormat","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#implicitformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3425,"kind":1024,"name":"modelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#modelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3426,"kind":1024,"name":"formatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#formatappliers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3427,"kind":1024,"name":"defaultImplicitFormatMap","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultimplicitformatmap","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3428,"kind":1024,"name":"defaultModelHandlers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultmodelhandlers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3429,"kind":1024,"name":"defaultFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#defaultformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3430,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomcontext.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomContext"},{"id":3431,"kind":256,"name":"ModelToDomBlockAndSegmentNode","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3432,"kind":1024,"name":"block","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html#block","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomBlockAndSegmentNode"},{"id":3433,"kind":1024,"name":"segment","url":"interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html#segment","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomBlockAndSegmentNode"},{"id":3434,"kind":256,"name":"ModelToDomRegularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3435,"kind":1024,"name":"start","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3436,"kind":1024,"name":"end","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3437,"kind":1024,"name":"current","url":"interfaces/roosterjs_content_model_types.modeltodomregularselection.html#current","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomRegularSelection"},{"id":3438,"kind":256,"name":"ModelToDomTableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3439,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3440,"kind":1024,"name":"firstCell","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#firstcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3441,"kind":1024,"name":"lastCell","url":"interfaces/roosterjs_content_model_types.modeltodomtableselection.html#lastcell","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomTableSelection"},{"id":3442,"kind":256,"name":"ModelToDomImageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomimageselection.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3443,"kind":1024,"name":"image","url":"interfaces/roosterjs_content_model_types.modeltodomimageselection.html#image","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomImageSelection"},{"id":3444,"kind":256,"name":"ModelToDomSelectionContext","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3445,"kind":1024,"name":"regularSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#regularselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3446,"kind":1024,"name":"tableSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#tableselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3447,"kind":1024,"name":"imageSelection","url":"interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html#imageselection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomSelectionContext"},{"id":3448,"kind":256,"name":"ModelToDomListStackItem","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3449,"kind":1024,"name":"node","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#node","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3450,"kind":1024,"name":"listType","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#listtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3451,"kind":1024,"name":"format","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#format","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3452,"kind":1024,"name":"dataset","url":"interfaces/roosterjs_content_model_types.modeltodomliststackitem.html#dataset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-types.ModelToDomListStackItem"},{"id":3453,"kind":256,"name":"ModelToDomListContext","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3454,"kind":1024,"name":"threadItemCounts","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html#threaditemcounts","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListContext"},{"id":3455,"kind":1024,"name":"nodeStack","url":"interfaces/roosterjs_content_model_types.modeltodomlistcontext.html#nodestack","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomListContext"},{"id":3456,"kind":256,"name":"ModelToDomFormatContext","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3457,"kind":1024,"name":"listFormat","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html#listformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomFormatContext"},{"id":3458,"kind":1024,"name":"implicitFormat","url":"interfaces/roosterjs_content_model_types.modeltodomformatcontext.html#implicitformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomFormatContext"},{"id":3459,"kind":4194304,"name":"ContentModelHandler","url":"modules/roosterjs_content_model_types.html#contentmodelhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3460,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelhandler.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelHandler"},{"id":3461,"kind":4194304,"name":"ContentModelBlockHandler","url":"modules/roosterjs_content_model_types.html#contentmodelblockhandler","classes":"tsd-kind-type-alias tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-types"},{"id":3462,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_types.html#contentmodelblockhandler.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-types.ContentModelBlockHandler"},{"id":3463,"kind":256,"name":"DomToModelOption","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3464,"kind":1024,"name":"processorOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#processoroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3465,"kind":1024,"name":"defaultStyleOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#defaultstyleoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3466,"kind":1024,"name":"formatParserOverride","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#formatparseroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3467,"kind":1024,"name":"additionalFormatParsers","url":"interfaces/roosterjs_content_model_types.domtomodeloption.html#additionalformatparsers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.DomToModelOption"},{"id":3468,"kind":256,"name":"ModelToDomOption","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-types"},{"id":3469,"kind":1024,"name":"formatApplierOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#formatapplieroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3470,"kind":1024,"name":"additionalFormatAppliers","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#additionalformatappliers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3471,"kind":1024,"name":"modelHandlerOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#modelhandleroverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3472,"kind":1024,"name":"defaultImplicitFormatOverride","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#defaultimplicitformatoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3473,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_types.modeltodomoption.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-types.ModelToDomOption"},{"id":3474,"kind":64,"name":"domToContentModel","url":"modules/roosterjs_content_model_dom.html#domtocontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3475,"kind":64,"name":"contentModelToDom","url":"modules/roosterjs_content_model_dom.html#contentmodeltodom","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3476,"kind":64,"name":"childProcessor","url":"modules/roosterjs_content_model_dom.html#childprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3477,"kind":64,"name":"handleRegularSelection","url":"modules/roosterjs_content_model_dom.html#handleregularselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3478,"kind":64,"name":"processChildNode","url":"modules/roosterjs_content_model_dom.html#processchildnode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3479,"kind":64,"name":"entityProcessor","url":"modules/roosterjs_content_model_dom.html#entityprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3480,"kind":64,"name":"tableProcessor","url":"modules/roosterjs_content_model_dom.html#tableprocessor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3481,"kind":64,"name":"getRegularSelectionOffsets","url":"modules/roosterjs_content_model_dom.html#getregularselectionoffsets","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3482,"kind":64,"name":"parseFormat","url":"modules/roosterjs_content_model_dom.html#parseformat","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3483,"kind":64,"name":"areSameFormats","url":"modules/roosterjs_content_model_dom.html#aresameformats","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3484,"kind":64,"name":"updateMetadata","url":"modules/roosterjs_content_model_dom.html#updatemetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3485,"kind":64,"name":"hasMetadata","url":"modules/roosterjs_content_model_dom.html#hasmetadata","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3486,"kind":64,"name":"updateListMetadata","url":"modules/roosterjs_content_model_dom.html#updatelistmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3487,"kind":64,"name":"isNodeOfType","url":"modules/roosterjs_content_model_dom.html#isnodeoftype","classes":"tsd-kind-function tsd-parent-kind-module tsd-has-type-parameter","parent":"roosterjs-content-model-dom"},{"id":3488,"kind":256,"name":"NodeTypeMap","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3489,"kind":1024,"name":"2","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#2","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3490,"kind":1024,"name":"8","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#8","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3491,"kind":1024,"name":"11","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#11","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3492,"kind":1024,"name":"9","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#9","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3493,"kind":1024,"name":"10","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#10","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3494,"kind":1024,"name":"1","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#1","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3495,"kind":1024,"name":"7","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#7","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3496,"kind":1024,"name":"3","url":"interfaces/roosterjs_content_model_dom.nodetypemap.html#3","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-dom.NodeTypeMap"},{"id":3497,"kind":64,"name":"createBr","url":"modules/roosterjs_content_model_dom.html#createbr","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3498,"kind":64,"name":"createListItem","url":"modules/roosterjs_content_model_dom.html#createlistitem","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3499,"kind":64,"name":"createFormatContainer","url":"modules/roosterjs_content_model_dom.html#createformatcontainer","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3500,"kind":64,"name":"createParagraph","url":"modules/roosterjs_content_model_dom.html#createparagraph","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3501,"kind":64,"name":"createSelectionMarker","url":"modules/roosterjs_content_model_dom.html#createselectionmarker","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3502,"kind":64,"name":"createTable","url":"modules/roosterjs_content_model_dom.html#createtable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3503,"kind":64,"name":"createTableCell","url":"modules/roosterjs_content_model_dom.html#createtablecell","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3504,"kind":64,"name":"createText","url":"modules/roosterjs_content_model_dom.html#createtext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3505,"kind":64,"name":"createImage","url":"modules/roosterjs_content_model_dom.html#createimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3506,"kind":64,"name":"createContentModelDocument","url":"modules/roosterjs_content_model_dom.html#createcontentmodeldocument","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3507,"kind":64,"name":"createParagraphDecorator","url":"modules/roosterjs_content_model_dom.html#createparagraphdecorator","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3508,"kind":64,"name":"createGeneralSegment","url":"modules/roosterjs_content_model_dom.html#creategeneralsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3509,"kind":64,"name":"createGeneralBlock","url":"modules/roosterjs_content_model_dom.html#creategeneralblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3510,"kind":64,"name":"createEntity","url":"modules/roosterjs_content_model_dom.html#createentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3511,"kind":64,"name":"createDivider","url":"modules/roosterjs_content_model_dom.html#createdivider","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3512,"kind":64,"name":"createListLevel","url":"modules/roosterjs_content_model_dom.html#createlistlevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3513,"kind":64,"name":"addBlock","url":"modules/roosterjs_content_model_dom.html#addblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3514,"kind":64,"name":"addCode","url":"modules/roosterjs_content_model_dom.html#addcode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3515,"kind":64,"name":"addLink","url":"modules/roosterjs_content_model_dom.html#addlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3516,"kind":64,"name":"normalizeContentModel","url":"modules/roosterjs_content_model_dom.html#normalizecontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3517,"kind":64,"name":"isGeneralSegment","url":"modules/roosterjs_content_model_dom.html#isgeneralsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3518,"kind":64,"name":"unwrapBlock","url":"modules/roosterjs_content_model_dom.html#unwrapblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3519,"kind":64,"name":"addSegment","url":"modules/roosterjs_content_model_dom.html#addsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3520,"kind":64,"name":"isWhiteSpacePreserved","url":"modules/roosterjs_content_model_dom.html#iswhitespacepreserved","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3521,"kind":64,"name":"normalizeSingleSegment","url":"modules/roosterjs_content_model_dom.html#normalizesinglesegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3522,"kind":64,"name":"setParagraphNotImplicit","url":"modules/roosterjs_content_model_dom.html#setparagraphnotimplicit","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3523,"kind":64,"name":"parseValueWithUnit","url":"modules/roosterjs_content_model_dom.html#parsevaluewithunit","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3524,"kind":32,"name":"BorderKeys","url":"modules/roosterjs_content_model_dom.html#borderkeys","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3525,"kind":32,"name":"DeprecatedColors","url":"modules/roosterjs_content_model_dom.html#deprecatedcolors","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3526,"kind":32,"name":"defaultImplicitFormatMap","url":"modules/roosterjs_content_model_dom.html#defaultimplicitformatmap","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3527,"kind":64,"name":"createDomToModelContext","url":"modules/roosterjs_content_model_dom.html#createdomtomodelcontext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-dom"},{"id":3528,"kind":256,"name":"ContentModelFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3529,"kind":1024,"name":"imageFormat","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#imageformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3530,"kind":1024,"name":"letterSpacing","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#letterspacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3531,"kind":1024,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isdarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3532,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3533,"kind":1024,"name":"isBold","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isbold","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3534,"kind":1024,"name":"isItalic","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isitalic","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3535,"kind":1024,"name":"isUnderline","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isunderline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3536,"kind":1024,"name":"isStrikeThrough","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isstrikethrough","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3537,"kind":1024,"name":"isSubscript","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#issubscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3538,"kind":1024,"name":"isSuperscript","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#issuperscript","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3539,"kind":1024,"name":"isBullet","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isbullet","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3540,"kind":1024,"name":"isNumbering","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isnumbering","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3541,"kind":1024,"name":"isBlockQuote","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isblockquote","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3542,"kind":1024,"name":"isCodeInline","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#iscodeinline","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3543,"kind":1024,"name":"isCodeBlock","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#iscodeblock","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3544,"kind":1024,"name":"canUnlink","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canunlink","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3545,"kind":1024,"name":"isMultilineSelection","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#ismultilineselection","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3546,"kind":1024,"name":"canAddImageAltText","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canaddimagealttext","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3547,"kind":1024,"name":"headingLevel","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#headinglevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3548,"kind":1024,"name":"headerLevel","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#headerlevel","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3549,"kind":1024,"name":"isInTable","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#isintable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3550,"kind":1024,"name":"tableFormat","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#tableformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3551,"kind":1024,"name":"tableHasHeader","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#tablehasheader","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3552,"kind":1024,"name":"canMergeTableCell","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canmergetablecell","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3553,"kind":1024,"name":"fontName","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#fontname","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3554,"kind":1024,"name":"fontSize","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#fontsize","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3555,"kind":1024,"name":"backgroundColor","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#backgroundcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3556,"kind":1024,"name":"backgroundColors","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#backgroundcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3557,"kind":1024,"name":"textColor","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3558,"kind":1024,"name":"textColors","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textcolors","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3559,"kind":1024,"name":"lineHeight","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#lineheight","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3560,"kind":1024,"name":"marginTop","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#margintop","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3561,"kind":1024,"name":"marginBottom","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#marginbottom","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3562,"kind":1024,"name":"textAlign","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#textalign","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3563,"kind":1024,"name":"direction","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3564,"kind":1024,"name":"canUndo","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canundo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3565,"kind":1024,"name":"canRedo","url":"interfaces/roosterjs_content_model_editor.contentmodelformatstate.html#canredo","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelFormatState"},{"id":3566,"kind":256,"name":"ImageFormatState","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3567,"kind":1024,"name":"borderColor","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#bordercolor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3568,"kind":1024,"name":"borderWidth","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderwidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3569,"kind":1024,"name":"borderStyle","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderstyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3570,"kind":1024,"name":"borderRadius","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#borderradius","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3571,"kind":1024,"name":"boxShadow","url":"interfaces/roosterjs_content_model_editor.imageformatstate.html#boxshadow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ImageFormatState"},{"id":3572,"kind":256,"name":"Border","url":"interfaces/roosterjs_content_model_editor.border.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3573,"kind":1024,"name":"width","url":"interfaces/roosterjs_content_model_editor.border.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3574,"kind":1024,"name":"style","url":"interfaces/roosterjs_content_model_editor.border.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3575,"kind":1024,"name":"color","url":"interfaces/roosterjs_content_model_editor.border.html#color","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.Border"},{"id":3576,"kind":4194304,"name":"CreateEditorContext","url":"modules/roosterjs_content_model_editor.html#createeditorcontext","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3577,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#createeditorcontext.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.CreateEditorContext"},{"id":3578,"kind":256,"name":"ContentModelCoreApiMap","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3579,"kind":1024,"name":"createEditorContext","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createeditorcontext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3580,"kind":1024,"name":"createContentModel","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createcontentmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3581,"kind":1024,"name":"setContentModel","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#setcontentmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3582,"kind":1024,"name":"addUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#addundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3583,"kind":1024,"name":"attachDomEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#attachdomevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3584,"kind":1024,"name":"createPasteFragment","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#createpastefragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3585,"kind":1024,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#ensuretypeincontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3586,"kind":1024,"name":"focus","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#focus","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3587,"kind":1024,"name":"getContent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3588,"kind":1024,"name":"getSelectionRange","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getselectionrange","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3589,"kind":1024,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getselectionrangeex","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3590,"kind":1024,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getstylebasedformatstate","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3591,"kind":1024,"name":"getPendableFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#getpendableformatstate","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3592,"kind":1024,"name":"hasFocus","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#hasfocus","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3593,"kind":1024,"name":"insertNode","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#insertnode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3594,"kind":1024,"name":"restoreUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#restoreundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3595,"kind":1024,"name":"select","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#select","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3596,"kind":1024,"name":"selectRange","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selectrange","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3597,"kind":1024,"name":"setContent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#setcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3598,"kind":1024,"name":"switchShadowEdit","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#switchshadowedit","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3599,"kind":1024,"name":"transformColor","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#transformcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3600,"kind":1024,"name":"triggerEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#triggerevent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3601,"kind":1024,"name":"selectTable","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selecttable","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3602,"kind":1024,"name":"selectImage","url":"interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html#selectimage","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelCoreApiMap"},{"id":3603,"kind":256,"name":"ContentModelEditorCore","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3604,"kind":1024,"name":"api","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#api","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3605,"kind":1024,"name":"originalApi","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#originalapi","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3606,"kind":1024,"name":"cachedModel","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#cachedmodel","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3607,"kind":1024,"name":"cachedRangeEx","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#cachedrangeex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3608,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3609,"kind":1024,"name":"defaultDomToModelOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultdomtomodeloptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3610,"kind":1024,"name":"defaultModelToDomOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#defaultmodeltodomoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3611,"kind":1024,"name":"addDelimiterForEntity","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#adddelimiterforentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3612,"kind":1024,"name":"contentDiv","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#contentdiv","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3613,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3614,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3615,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3616,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3617,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3618,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3619,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3620,"kind":1024,"name":"darkColorHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#darkcolorhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3621,"kind":2048,"name":"edit","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#edit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3622,"kind":2048,"name":"undo","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3623,"kind":2048,"name":"domEvent","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#domevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3624,"kind":2048,"name":"pendingFormatState","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#pendingformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3625,"kind":2048,"name":"copyPaste","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#copypaste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3626,"kind":2048,"name":"entity","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#entity","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3627,"kind":2048,"name":"lifecycle","url":"interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html#lifecycle","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorCore"},{"id":3628,"kind":4194304,"name":"CreateContentModel","url":"modules/roosterjs_content_model_editor.html#createcontentmodel","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3629,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#createcontentmodel.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.CreateContentModel"},{"id":3630,"kind":4194304,"name":"SetContentModel","url":"modules/roosterjs_content_model_editor.html#setcontentmodel","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3631,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#setcontentmodel.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.SetContentModel"},{"id":3632,"kind":256,"name":"ContentModelBeforePasteEvent","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3633,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3634,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3635,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3636,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3637,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3638,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3639,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3640,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3641,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3642,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3643,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3644,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3645,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEvent"},{"id":3646,"kind":256,"name":"ContentModelBeforePasteEventData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3647,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3648,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3649,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3650,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3651,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3652,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3653,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3654,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3655,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3656,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelBeforePasteEventData"},{"id":3657,"kind":256,"name":"CompatibleContentModelBeforePasteEvent","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3658,"kind":1024,"name":"domToModelOption","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#domtomodeloption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3659,"kind":1024,"name":"customizedMerge","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#customizedmerge","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3660,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3661,"kind":1024,"name":"clipboardData","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#clipboarddata","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3662,"kind":1024,"name":"fragment","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#fragment","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3663,"kind":1024,"name":"sanitizingOption","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#sanitizingoption","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3664,"kind":1024,"name":"htmlBefore","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlbefore","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3665,"kind":1024,"name":"htmlAfter","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlafter","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3666,"kind":1024,"name":"htmlAttributes","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#htmlattributes","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3667,"kind":1024,"name":"pasteType","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#pastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3668,"kind":1024,"name":"eventType","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#eventtype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3669,"kind":1024,"name":"eventDataCache","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#eventdatacache","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3670,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.CompatibleContentModelBeforePasteEvent"},{"id":3671,"kind":256,"name":"IContentModelEditor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3672,"kind":2048,"name":"createContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#createcontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3673,"kind":2048,"name":"setContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setcontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3674,"kind":2048,"name":"cacheContentModel","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#cachecontentmodel","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3675,"kind":2048,"name":"getContentModelDefaultFormat","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontentmodeldefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3676,"kind":2048,"name":"dispose","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3677,"kind":2048,"name":"isDisposed","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3678,"kind":2048,"name":"insertNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3679,"kind":2048,"name":"deleteNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3680,"kind":2048,"name":"replaceNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3681,"kind":2048,"name":"getBlockElementAtNode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3682,"kind":2048,"name":"contains","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3683,"kind":2048,"name":"queryElements","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3684,"kind":2048,"name":"collapseNodes","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3685,"kind":2048,"name":"isEmpty","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3686,"kind":2048,"name":"getContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3687,"kind":2048,"name":"setContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3688,"kind":2048,"name":"insertContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3689,"kind":2048,"name":"deleteSelectedContent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3690,"kind":2048,"name":"paste","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3691,"kind":2048,"name":"getSelectionRange","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3692,"kind":2048,"name":"getSelectionRangeEx","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3693,"kind":2048,"name":"getSelectionPath","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3694,"kind":2048,"name":"hasFocus","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3695,"kind":2048,"name":"focus","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3696,"kind":2048,"name":"select","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#select","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3697,"kind":2048,"name":"getFocusedPosition","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3698,"kind":2048,"name":"getElementAtCursor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3699,"kind":2048,"name":"isPositionAtBeginning","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3700,"kind":2048,"name":"getSelectedRegions","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3701,"kind":2048,"name":"addDomEventHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3702,"kind":2048,"name":"triggerPluginEvent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3703,"kind":2048,"name":"triggerContentChangedEvent","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3704,"kind":2048,"name":"undo","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3705,"kind":2048,"name":"redo","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3706,"kind":2048,"name":"addUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3707,"kind":2048,"name":"getUndoState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3708,"kind":2048,"name":"getDocument","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3709,"kind":2048,"name":"getScrollContainer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3710,"kind":2048,"name":"getCustomData","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3711,"kind":2048,"name":"isInIME","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3712,"kind":2048,"name":"getDefaultFormat","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3713,"kind":2048,"name":"getBodyTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3714,"kind":2048,"name":"getSelectionTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3715,"kind":2048,"name":"getBlockTraverser","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3716,"kind":2048,"name":"getContentSearcherOfCursor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3717,"kind":2048,"name":"runAsync","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3718,"kind":2048,"name":"setEditorDomAttribute","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3719,"kind":2048,"name":"getEditorDomAttribute","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3720,"kind":2048,"name":"getRelativeDistanceToEditor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3721,"kind":2048,"name":"addContentEditFeature","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3722,"kind":2048,"name":"removeContentEditFeature","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3723,"kind":2048,"name":"getStyleBasedFormatState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3724,"kind":2048,"name":"getPendableFormatState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3725,"kind":2048,"name":"ensureTypeInContainer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3726,"kind":2048,"name":"setDarkModeState","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3727,"kind":2048,"name":"isDarkMode","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3728,"kind":2048,"name":"transformToDarkColor","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3729,"kind":2048,"name":"getDarkColorHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3730,"kind":2048,"name":"startShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3731,"kind":2048,"name":"stopShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3732,"kind":2048,"name":"isInShadowEdit","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3733,"kind":2048,"name":"isFeatureEnabled","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3734,"kind":2048,"name":"getTrustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3735,"kind":2048,"name":"getZoomScale","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3736,"kind":2048,"name":"setZoomScale","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3737,"kind":2048,"name":"getSizeTransformer","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3738,"kind":2048,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.icontentmodeleditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.IContentModelEditor"},{"id":3739,"kind":256,"name":"ContentModelEditorOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3740,"kind":1024,"name":"defaultDomToModelOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultdomtomodeloptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3741,"kind":1024,"name":"defaultModelToDomOptions","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultmodeltodomoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3742,"kind":1024,"name":"plugins","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#plugins","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3743,"kind":1024,"name":"defaultFormat","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#defaultformat","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3744,"kind":1024,"name":"undoSnapshotService","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#undosnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3745,"kind":1024,"name":"undoMetadataSnapshotService","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#undometadatasnapshotservice","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3746,"kind":1024,"name":"initialContent","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#initialcontent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3747,"kind":1024,"name":"coreApiOverride","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#coreapioverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3748,"kind":1024,"name":"corePluginOverride","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#corepluginoverride","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3749,"kind":1024,"name":"inDarkMode","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#indarkmode","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3750,"kind":1024,"name":"onExternalContentTransform","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#onexternalcontenttransform","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3751,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3752,"kind":1024,"name":"getDarkColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#getdarkcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3753,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3754,"kind":1024,"name":"doNotAdjustEditorColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#donotadjusteditorcolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3755,"kind":1024,"name":"scrollContainer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#scrollcontainer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3756,"kind":1024,"name":"experimentalFeatures","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#experimentalfeatures","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3757,"kind":1024,"name":"allowKeyboardEventPropagation","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#allowkeyboardeventpropagation","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3758,"kind":1024,"name":"allowedCustomPasteType","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#allowedcustompastetype","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3759,"kind":1024,"name":"trustedHTMLHandler","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#trustedhtmlhandler","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3760,"kind":1024,"name":"zoomScale","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#zoomscale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3761,"kind":1024,"name":"sizeTransformer","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#sizetransformer","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3762,"kind":1024,"name":"getVisibleViewport","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#getvisibleviewport","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3763,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3764,"kind":1024,"name":"imageSelectionBorderColor","url":"interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html#imageselectionbordercolor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditorOptions"},{"id":3765,"kind":256,"name":"InsertPoint","url":"interfaces/roosterjs_content_model_editor.insertpoint.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3766,"kind":1024,"name":"marker","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#marker","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3767,"kind":1024,"name":"paragraph","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#paragraph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3768,"kind":1024,"name":"path","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3769,"kind":1024,"name":"tableContext","url":"interfaces/roosterjs_content_model_editor.insertpoint.html#tablecontext","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertPoint"},{"id":3770,"kind":256,"name":"TableSelectionContext","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3771,"kind":1024,"name":"table","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#table","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3772,"kind":1024,"name":"rowIndex","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#rowindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3773,"kind":1024,"name":"colIndex","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#colindex","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3774,"kind":1024,"name":"isWholeTableSelected","url":"interfaces/roosterjs_content_model_editor.tableselectioncontext.html#iswholetableselected","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.TableSelectionContext"},{"id":3775,"kind":256,"name":"DeletedEntity","url":"interfaces/roosterjs_content_model_editor.deletedentity.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3776,"kind":1024,"name":"entity","url":"interfaces/roosterjs_content_model_editor.deletedentity.html#entity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.DeletedEntity"},{"id":3777,"kind":1024,"name":"operation","url":"interfaces/roosterjs_content_model_editor.deletedentity.html#operation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.DeletedEntity"},{"id":3778,"kind":256,"name":"FormatWithContentModelContext","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3779,"kind":1024,"name":"newEntities","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#newentities","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3780,"kind":1024,"name":"deletedEntities","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#deletedentities","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3781,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3782,"kind":1024,"name":"skipUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html#skipundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelContext"},{"id":3783,"kind":256,"name":"FormatWithContentModelOptions","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3784,"kind":1024,"name":"preservePendingFormat","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#preservependingformat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3785,"kind":1024,"name":"rawEvent","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#rawevent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3786,"kind":1024,"name":"changeSource","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#changesource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3787,"kind":1024,"name":"onNodeCreated","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#onnodecreated","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3788,"kind":1024,"name":"getChangeData","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#getchangedata","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3789,"kind":65536,"name":"__type","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3790,"kind":1024,"name":"selectionOverride","url":"interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html#selectionoverride","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.FormatWithContentModelOptions"},{"id":3791,"kind":4194304,"name":"ContentModelFormatter","url":"modules/roosterjs_content_model_editor.html#contentmodelformatter","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3792,"kind":65536,"name":"__type","url":"modules/roosterjs_content_model_editor.html#contentmodelformatter.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"roosterjs-content-model-editor.ContentModelFormatter"},{"id":3793,"kind":256,"name":"InsertEntityOptions","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3794,"kind":1024,"name":"contentNode","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#contentnode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3795,"kind":1024,"name":"focusAfterEntity","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#focusafterentity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3796,"kind":1024,"name":"wrapperDisplay","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#wrapperdisplay","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3797,"kind":1024,"name":"skipUndoSnapshot","url":"interfaces/roosterjs_content_model_editor.insertentityoptions.html#skipundosnapshot","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"roosterjs-content-model-editor.InsertEntityOptions"},{"id":3798,"kind":4194304,"name":"InsertEntityPosition","url":"modules/roosterjs_content_model_editor.html#insertentityposition","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3799,"kind":64,"name":"insertTable","url":"modules/roosterjs_content_model_editor.html#inserttable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3800,"kind":64,"name":"formatTable","url":"modules/roosterjs_content_model_editor.html#formattable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3801,"kind":64,"name":"setTableCellShade","url":"modules/roosterjs_content_model_editor.html#settablecellshade","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3802,"kind":64,"name":"editTable","url":"modules/roosterjs_content_model_editor.html#edittable","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3803,"kind":64,"name":"toggleBullet","url":"modules/roosterjs_content_model_editor.html#togglebullet","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3804,"kind":64,"name":"toggleNumbering","url":"modules/roosterjs_content_model_editor.html#togglenumbering","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3805,"kind":64,"name":"toggleBold","url":"modules/roosterjs_content_model_editor.html#togglebold","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3806,"kind":64,"name":"toggleItalic","url":"modules/roosterjs_content_model_editor.html#toggleitalic","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3807,"kind":64,"name":"toggleUnderline","url":"modules/roosterjs_content_model_editor.html#toggleunderline","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3808,"kind":64,"name":"toggleStrikethrough","url":"modules/roosterjs_content_model_editor.html#togglestrikethrough","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3809,"kind":64,"name":"toggleSubscript","url":"modules/roosterjs_content_model_editor.html#togglesubscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3810,"kind":64,"name":"toggleSuperscript","url":"modules/roosterjs_content_model_editor.html#togglesuperscript","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3811,"kind":64,"name":"setBackgroundColor","url":"modules/roosterjs_content_model_editor.html#setbackgroundcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3812,"kind":64,"name":"setFontName","url":"modules/roosterjs_content_model_editor.html#setfontname","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3813,"kind":64,"name":"setFontSize","url":"modules/roosterjs_content_model_editor.html#setfontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3814,"kind":64,"name":"setTextColor","url":"modules/roosterjs_content_model_editor.html#settextcolor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3815,"kind":64,"name":"changeFontSize","url":"modules/roosterjs_content_model_editor.html#changefontsize","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3816,"kind":64,"name":"applySegmentFormat","url":"modules/roosterjs_content_model_editor.html#applysegmentformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3817,"kind":64,"name":"changeCapitalization","url":"modules/roosterjs_content_model_editor.html#changecapitalization","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3818,"kind":64,"name":"insertImage","url":"modules/roosterjs_content_model_editor.html#insertimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3819,"kind":64,"name":"setListStyle","url":"modules/roosterjs_content_model_editor.html#setliststyle","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3820,"kind":64,"name":"setListStartNumber","url":"modules/roosterjs_content_model_editor.html#setliststartnumber","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3821,"kind":64,"name":"hasSelectionInBlock","url":"modules/roosterjs_content_model_editor.html#hasselectioninblock","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3822,"kind":64,"name":"hasSelectionInSegment","url":"modules/roosterjs_content_model_editor.html#hasselectioninsegment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3823,"kind":64,"name":"hasSelectionInBlockGroup","url":"modules/roosterjs_content_model_editor.html#hasselectioninblockgroup","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3824,"kind":64,"name":"getSelectedSegments","url":"modules/roosterjs_content_model_editor.html#getselectedsegments","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3825,"kind":64,"name":"setIndentation","url":"modules/roosterjs_content_model_editor.html#setindentation","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3826,"kind":64,"name":"setAlignment","url":"modules/roosterjs_content_model_editor.html#setalignment","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3827,"kind":64,"name":"setDirection","url":"modules/roosterjs_content_model_editor.html#setdirection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3828,"kind":64,"name":"setHeadingLevel","url":"modules/roosterjs_content_model_editor.html#setheadinglevel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3829,"kind":64,"name":"toggleBlockQuote","url":"modules/roosterjs_content_model_editor.html#toggleblockquote","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3830,"kind":64,"name":"setSpacing","url":"modules/roosterjs_content_model_editor.html#setspacing","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3831,"kind":64,"name":"setImageBorder","url":"modules/roosterjs_content_model_editor.html#setimageborder","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3832,"kind":64,"name":"setImageBoxShadow","url":"modules/roosterjs_content_model_editor.html#setimageboxshadow","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3833,"kind":64,"name":"changeImage","url":"modules/roosterjs_content_model_editor.html#changeimage","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3834,"kind":64,"name":"getFormatState","url":"modules/roosterjs_content_model_editor.html#getformatstate","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3835,"kind":64,"name":"applyPendingFormat","url":"modules/roosterjs_content_model_editor.html#applypendingformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3836,"kind":64,"name":"clearFormat","url":"modules/roosterjs_content_model_editor.html#clearformat","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3837,"kind":64,"name":"insertLink","url":"modules/roosterjs_content_model_editor.html#insertlink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3838,"kind":64,"name":"removeLink","url":"modules/roosterjs_content_model_editor.html#removelink","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3839,"kind":64,"name":"adjustLinkSelection","url":"modules/roosterjs_content_model_editor.html#adjustlinkselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3840,"kind":64,"name":"setImageAltText","url":"modules/roosterjs_content_model_editor.html#setimagealttext","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3841,"kind":64,"name":"adjustImageSelection","url":"modules/roosterjs_content_model_editor.html#adjustimageselection","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3842,"kind":64,"name":"setParagraphMargin","url":"modules/roosterjs_content_model_editor.html#setparagraphmargin","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3843,"kind":64,"name":"toggleCode","url":"modules/roosterjs_content_model_editor.html#togglecode","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3844,"kind":64,"name":"paste","url":"modules/roosterjs_content_model_editor.html#paste","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3845,"kind":64,"name":"insertEntity","url":"modules/roosterjs_content_model_editor.html#insertentity","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3846,"kind":64,"name":"formatWithContentModel","url":"modules/roosterjs_content_model_editor.html#formatwithcontentmodel","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3847,"kind":128,"name":"ContentModelEditor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3848,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3849,"kind":2048,"name":"createContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#createcontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3850,"kind":2048,"name":"setContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setcontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3851,"kind":2048,"name":"cacheContentModel","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#cachecontentmodel","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3852,"kind":2048,"name":"getContentModelDefaultFormat","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontentmodeldefaultformat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3853,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3854,"kind":2048,"name":"isDisposed","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isdisposed","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3855,"kind":2048,"name":"insertNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#insertnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3856,"kind":2048,"name":"deleteNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#deletenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3857,"kind":2048,"name":"replaceNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#replacenode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3858,"kind":2048,"name":"getBlockElementAtNode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getblockelementatnode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3859,"kind":2048,"name":"contains","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3860,"kind":2048,"name":"queryElements","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#queryelements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3861,"kind":2048,"name":"collapseNodes","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#collapsenodes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3862,"kind":2048,"name":"isEmpty","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isempty","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3863,"kind":2048,"name":"getContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3864,"kind":2048,"name":"setContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3865,"kind":2048,"name":"insertContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#insertcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3866,"kind":2048,"name":"deleteSelectedContent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#deleteselectedcontent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3867,"kind":2048,"name":"paste","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#paste","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3868,"kind":2048,"name":"getSelectionRange","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionrange","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3869,"kind":2048,"name":"getSelectionRangeEx","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionrangeex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3870,"kind":2048,"name":"getSelectionPath","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectionpath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3871,"kind":2048,"name":"hasFocus","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#hasfocus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3872,"kind":2048,"name":"focus","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#focus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3873,"kind":2048,"name":"select","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#select","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3874,"kind":2048,"name":"getFocusedPosition","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getfocusedposition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3875,"kind":2048,"name":"getElementAtCursor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getelementatcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3876,"kind":2048,"name":"isPositionAtBeginning","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#ispositionatbeginning","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3877,"kind":2048,"name":"getSelectedRegions","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectedregions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3878,"kind":2048,"name":"addDomEventHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#adddomeventhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3879,"kind":2048,"name":"triggerPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#triggerpluginevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3880,"kind":2048,"name":"triggerContentChangedEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#triggercontentchangedevent","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3881,"kind":2048,"name":"undo","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#undo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3882,"kind":2048,"name":"redo","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#redo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3883,"kind":2048,"name":"addUndoSnapshot","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#addundosnapshot","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3884,"kind":2048,"name":"getUndoState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getundostate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3885,"kind":2048,"name":"getDocument","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdocument","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3886,"kind":2048,"name":"getScrollContainer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getscrollcontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3887,"kind":2048,"name":"getCustomData","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcustomdata","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3888,"kind":2048,"name":"isInIME","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isinime","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3889,"kind":2048,"name":"getDefaultFormat","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdefaultformat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3890,"kind":2048,"name":"getBodyTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getbodytraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3891,"kind":2048,"name":"getSelectionTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getselectiontraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3892,"kind":2048,"name":"getBlockTraverser","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getblocktraverser","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3893,"kind":2048,"name":"getContentSearcherOfCursor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcontentsearcherofcursor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3894,"kind":2048,"name":"runAsync","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#runasync","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3895,"kind":2048,"name":"setEditorDomAttribute","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#seteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3896,"kind":2048,"name":"getEditorDomAttribute","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#geteditordomattribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3897,"kind":2048,"name":"getRelativeDistanceToEditor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getrelativedistancetoeditor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3898,"kind":2048,"name":"addContentEditFeature","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#addcontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3899,"kind":2048,"name":"removeContentEditFeature","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#removecontenteditfeature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3900,"kind":2048,"name":"getStyleBasedFormatState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getstylebasedformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3901,"kind":2048,"name":"getPendableFormatState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getpendableformatstate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3902,"kind":2048,"name":"ensureTypeInContainer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#ensuretypeincontainer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3903,"kind":2048,"name":"setDarkModeState","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setdarkmodestate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3904,"kind":2048,"name":"isDarkMode","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isdarkmode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3905,"kind":2048,"name":"transformToDarkColor","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#transformtodarkcolor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3906,"kind":2048,"name":"getDarkColorHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getdarkcolorhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3907,"kind":2048,"name":"startShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#startshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3908,"kind":2048,"name":"stopShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#stopshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3909,"kind":2048,"name":"isInShadowEdit","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isinshadowedit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3910,"kind":2048,"name":"isFeatureEnabled","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#isfeatureenabled","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3911,"kind":2048,"name":"getTrustedHTMLHandler","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#gettrustedhtmlhandler","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3912,"kind":2048,"name":"getSizeTransformer","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getsizetransformer","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3913,"kind":2048,"name":"getZoomScale","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3914,"kind":2048,"name":"setZoomScale","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#setzoomscale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3915,"kind":2048,"name":"getVisibleViewport","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getvisibleviewport","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3916,"kind":2048,"name":"getCore","url":"classes/roosterjs_content_model_editor.contentmodeleditor.html#getcore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"roosterjs-content-model-editor.ContentModelEditor"},{"id":3917,"kind":64,"name":"isContentModelEditor","url":"modules/roosterjs_content_model_editor.html#iscontentmodeleditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3918,"kind":128,"name":"ContentModelFormatPlugin","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3919,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3920,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3921,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3922,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3923,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodelformatplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelFormatPlugin"},{"id":3924,"kind":128,"name":"ContentModelEditPlugin","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3925,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3926,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3927,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3928,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3929,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodeleditplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelEditPlugin"},{"id":3930,"kind":128,"name":"ContentModelPastePlugin","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3931,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3932,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3933,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3934,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3935,"kind":2048,"name":"onPluginEvent","url":"classes/roosterjs_content_model_editor.contentmodelpasteplugin.html#onpluginevent","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelPastePlugin"},{"id":3936,"kind":128,"name":"ContentModelTypeInContainerPlugin","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3937,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3938,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3939,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3940,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelTypeInContainerPlugin"},{"id":3941,"kind":128,"name":"ContentModelCopyPastePlugin","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html","classes":"tsd-kind-class tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3942,"kind":512,"name":"constructor","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3943,"kind":2048,"name":"getName","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3944,"kind":2048,"name":"initialize","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#initialize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3945,"kind":2048,"name":"dispose","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#dispose","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3946,"kind":2048,"name":"getState","url":"classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html#getstate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"roosterjs-content-model-editor.ContentModelCopyPastePlugin"},{"id":3947,"kind":64,"name":"createContentModelEditorCore","url":"modules/roosterjs_content_model_editor.html#createcontentmodeleditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3948,"kind":64,"name":"promoteToContentModelEditorCore","url":"modules/roosterjs_content_model_editor.html#promotetocontentmodeleditorcore","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3949,"kind":64,"name":"combineBorderValue","url":"modules/roosterjs_content_model_editor.html#combinebordervalue","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3950,"kind":64,"name":"extractBorderValues","url":"modules/roosterjs_content_model_editor.html#extractbordervalues","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3951,"kind":64,"name":"updateImageMetadata","url":"modules/roosterjs_content_model_editor.html#updateimagemetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3952,"kind":64,"name":"updateTableCellMetadata","url":"modules/roosterjs_content_model_editor.html#updatetablecellmetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3953,"kind":64,"name":"updateTableMetadata","url":"modules/roosterjs_content_model_editor.html#updatetablemetadata","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model-editor"},{"id":3954,"kind":64,"name":"createContentModelEditor","url":"modules/roosterjs_content_model.html#createcontentmodeleditor","classes":"tsd-kind-function tsd-parent-kind-module","parent":"roosterjs-content-model"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,0.001,1,1.911,2,9.177]],["parent/0",[]],["name/1",[0,0.001,1,1.56,2,7.495,3,21.021]],["parent/1",[]],["name/2",[0,0.001,1,1.911,4,17.027]],["parent/2",[]],["name/3",[0,0.001,1,1.911,5,36.347]],["parent/3",[]],["name/4",[0,0.001,1,1.911,6,24.672]],["parent/4",[]],["name/5",[0,0.001,1,1.911,7,27.257]],["parent/5",[]],["name/6",[0,0.001,8,38.844,9,40.703]],["parent/6",[]],["name/7",[0,0.001,10,27.32]],["parent/7",[]],["name/8",[0,0.001]],["parent/8",[]],["name/9",[0,0.001,2,7.495,11,6.167,12,6.167]],["parent/9",[]],["name/10",[0,0.001,4,13.906,11,6.167,12,6.167]],["parent/10",[]],["name/11",[0,0.001,1,1.56,11,6.167,12,6.167]],["parent/11",[]],["name/12",[0,0.001,11,7.552,12,7.552]],["parent/12",[]],["name/13",[13,78.994]],["parent/13",[0,0,1,0.358,2,1.721]],["name/14",[14,78.994]],["parent/14",[0,0,1,0.358,15,5.965]],["name/15",[16,78.994]],["parent/15",[0,0,1,0.358,15,5.965]],["name/16",[17,78.994]],["parent/16",[0,0,1,0.358,15,5.965]],["name/17",[18,78.994]],["parent/17",[0,0,1,0.358,15,5.965]],["name/18",[19,78.994]],["parent/18",[0,0,1,0.358,15,5.965]],["name/19",[20,78.994]],["parent/19",[0,0,1,0.358,15,5.965]],["name/20",[21,78.994]],["parent/20",[0,0,1,0.358,15,5.965]],["name/21",[22,78.994]],["parent/21",[0,0,1,0.358,15,5.965]],["name/22",[23,78.994]],["parent/22",[0,0,1,0.358,15,5.965]],["name/23",[24,78.994]],["parent/23",[0,0,1,0.358,15,5.965]],["name/24",[25,78.994]],["parent/24",[0,0,1,0.358,15,5.965]],["name/25",[26,78.994]],["parent/25",[0,0,1,0.358,15,5.965]],["name/26",[27,78.994]],["parent/26",[0,0,1,0.358,2,1.721]],["name/27",[28,78.994]],["parent/27",[0,0,1,0.358,29,6.816]],["name/28",[30,78.994]],["parent/28",[0,0,1,0.358,29,6.816]],["name/29",[31,73.872]],["parent/29",[0,0,1,0.358,29,6.816]],["name/30",[32,53.274]],["parent/30",[0,0,1,0.358,29,6.816]],["name/31",[33,78.994]],["parent/31",[0,0,1,0.358,29,6.816]],["name/32",[34,78.994]],["parent/32",[0,0,1,0.358,2,1.721]],["name/33",[35,64.29]],["parent/33",[0,0,1,0.358,36,6.495]],["name/34",[37,62.855]],["parent/34",[0,0,1,0.358,36,6.495]],["name/35",[38,78.994]],["parent/35",[0,0,1,0.358,36,6.495]],["name/36",[39,73.872]],["parent/36",[0,0,1,0.358,36,6.495]],["name/37",[40,78.994]],["parent/37",[0,0,1,0.358,36,6.495]],["name/38",[41,78.994]],["parent/38",[0,0,1,0.358,36,6.495]],["name/39",[42,73.872]],["parent/39",[0,0,1,0.358,36,6.495]],["name/40",[43,78.994]],["parent/40",[0,0,1,0.358,2,1.721]],["name/41",[44,78.994]],["parent/41",[0,0,1,0.358,45,8.162]],["name/42",[46,78.994]],["parent/42",[0,0,1,0.358,2,1.721]],["name/43",[47,78.994]],["parent/43",[0,0,1,0.358,48,6.816]],["name/44",[49,28.997]],["parent/44",[0,0,1,0.358,48,6.816]],["name/45",[50,78.994]],["parent/45",[0,0,1,0.358,51,7.633]],["name/46",[52,78.994]],["parent/46",[0,0,1,0.358,51,7.633]],["name/47",[53,78.994]],["parent/47",[0,0,1,0.358,48,6.816]],["name/48",[54,78.994]],["parent/48",[0,0,1,0.358,48,6.816]],["name/49",[55,78.994]],["parent/49",[0,0,1,0.358,48,6.816]],["name/50",[56,78.994]],["parent/50",[0,0,1,0.358,2,1.721]],["name/51",[57,73.872]],["parent/51",[0,0,1,0.358,58,5.886]],["name/52",[59,60.485]],["parent/52",[0,0,1,0.358,58,5.886]],["name/53",[60,55.576]],["parent/53",[0,0,1,0.358,58,5.886]],["name/54",[61,65.965]],["parent/54",[0,0,1,0.358,58,5.886]],["name/55",[49,28.997]],["parent/55",[0,0,1,0.358,58,5.886]],["name/56",[62,67.978]],["parent/56",[0,0,1,0.358,58,5.886]],["name/57",[49,28.997]],["parent/57",[0,0,1,0.358,58,5.886]],["name/58",[63,65.965]],["parent/58",[0,0,1,0.358,58,5.886]],["name/59",[64,78.994]],["parent/59",[0,0,1,0.358,58,5.886]],["name/60",[65,78.994]],["parent/60",[0,0,1,0.358,58,5.886]],["name/61",[66,78.994]],["parent/61",[0,0,1,0.358,58,5.886]],["name/62",[67,78.994]],["parent/62",[0,0,1,0.358,58,5.886]],["name/63",[68,78.994]],["parent/63",[0,0,1,0.358,58,5.886]],["name/64",[69,78.994]],["parent/64",[0,0,1,0.358,2,1.721]],["name/65",[70,73.872]],["parent/65",[0,0,1,0.358,71,7.284]],["name/66",[72,78.994]],["parent/66",[0,0,1,0.358,71,7.284]],["name/67",[73,78.994]],["parent/67",[0,0,1,0.358,71,7.284]],["name/68",[74,78.994]],["parent/68",[0,0,1,0.358,2,1.721]],["name/69",[75,78.994]],["parent/69",[0,0,1,0.358,76,6.816]],["name/70",[77,78.994]],["parent/70",[0,0,1,0.358,76,6.816]],["name/71",[78,78.994]],["parent/71",[0,0,1,0.358,76,6.816]],["name/72",[79,78.994]],["parent/72",[0,0,1,0.358,76,6.816]],["name/73",[80,78.994]],["parent/73",[0,0,1,0.358,76,6.816]],["name/74",[81,78.994]],["parent/74",[0,0,1,0.358,2,1.721]],["name/75",[82,64.29]],["parent/75",[0,0,1,0.358,83,8.162]],["name/76",[84,78.994]],["parent/76",[0,0,1,0.358,2,1.721]],["name/77",[85,73.872]],["parent/77",[0,0,1,0.358,86,4.582]],["name/78",[87,73.872]],["parent/78",[0,0,1,0.358,86,4.582]],["name/79",[88,65.965]],["parent/79",[0,0,1,0.358,86,4.582]],["name/80",[89,73.872]],["parent/80",[0,0,1,0.358,86,4.582]],["name/81",[90,73.872]],["parent/81",[0,0,1,0.358,86,4.582]],["name/82",[91,73.872]],["parent/82",[0,0,1,0.358,86,4.582]],["name/83",[92,65.965]],["parent/83",[0,0,1,0.358,86,4.582]],["name/84",[93,67.978]],["parent/84",[0,0,1,0.358,86,4.582]],["name/85",[94,70.498]],["parent/85",[0,0,1,0.358,86,4.582]],["name/86",[95,73.872]],["parent/86",[0,0,1,0.358,86,4.582]],["name/87",[96,67.978]],["parent/87",[0,0,1,0.358,86,4.582]],["name/88",[97,73.872]],["parent/88",[0,0,1,0.358,86,4.582]],["name/89",[98,73.872]],["parent/89",[0,0,1,0.358,86,4.582]],["name/90",[99,65.965]],["parent/90",[0,0,1,0.358,86,4.582]],["name/91",[100,60.485]],["parent/91",[0,0,1,0.358,86,4.582]],["name/92",[101,73.872]],["parent/92",[0,0,1,0.358,86,4.582]],["name/93",[102,73.872]],["parent/93",[0,0,1,0.358,86,4.582]],["name/94",[103,73.872]],["parent/94",[0,0,1,0.358,86,4.582]],["name/95",[104,70.498]],["parent/95",[0,0,1,0.358,86,4.582]],["name/96",[105,73.872]],["parent/96",[0,0,1,0.358,86,4.582]],["name/97",[106,70.498]],["parent/97",[0,0,1,0.358,86,4.582]],["name/98",[107,70.498]],["parent/98",[0,0,1,0.358,86,4.582]],["name/99",[108,73.872]],["parent/99",[0,0,1,0.358,86,4.582]],["name/100",[109,73.872]],["parent/100",[0,0,1,0.358,86,4.582]],["name/101",[110,73.872]],["parent/101",[0,0,1,0.358,86,4.582]],["name/102",[111,65.965]],["parent/102",[0,0,1,0.358,86,4.582]],["name/103",[112,73.872]],["parent/103",[0,0,1,0.358,86,4.582]],["name/104",[113,73.872]],["parent/104",[0,0,1,0.358,86,4.582]],["name/105",[114,73.872]],["parent/105",[0,0,1,0.358,86,4.582]],["name/106",[115,73.872]],["parent/106",[0,0,1,0.358,86,4.582]],["name/107",[116,64.29]],["parent/107",[0,0,1,0.358,86,4.582]],["name/108",[117,73.872]],["parent/108",[0,0,1,0.358,86,4.582]],["name/109",[118,73.872]],["parent/109",[0,0,1,0.358,86,4.582]],["name/110",[119,73.872]],["parent/110",[0,0,1,0.358,86,4.582]],["name/111",[120,73.872]],["parent/111",[0,0,1,0.358,86,4.582]],["name/112",[121,70.498]],["parent/112",[0,0,1,0.358,86,4.582]],["name/113",[122,58.569]],["parent/113",[0,0,1,0.358,86,4.582]],["name/114",[123,61.6]],["parent/114",[0,0,1,0.358,86,4.582]],["name/115",[124,73.872]],["parent/115",[0,0,1,0.358,86,4.582]],["name/116",[125,73.872]],["parent/116",[0,0,1,0.358,86,4.582]],["name/117",[126,67.978]],["parent/117",[0,0,1,0.358,86,4.582]],["name/118",[127,70.498]],["parent/118",[0,0,1,0.358,86,4.582]],["name/119",[128,70.498]],["parent/119",[0,0,1,0.358,86,4.582]],["name/120",[129,64.29]],["parent/120",[0,0,1,0.358,86,4.582]],["name/121",[130,58.569]],["parent/121",[0,0,1,0.358,86,4.582]],["name/122",[131,73.872]],["parent/122",[0,0,1,0.358,86,4.582]],["name/123",[132,73.872]],["parent/123",[0,0,1,0.358,86,4.582]],["name/124",[133,78.994]],["parent/124",[0,0,1,0.358,2,1.721]],["name/125",[134,73.872]],["parent/125",[0,0,1,0.358,135,6.643]],["name/126",[136,73.872]],["parent/126",[0,0,1,0.358,135,6.643]],["name/127",[137,73.872]],["parent/127",[0,0,1,0.358,135,6.643]],["name/128",[138,73.872]],["parent/128",[0,0,1,0.358,135,6.643]],["name/129",[139,54.949]],["parent/129",[0,0,1,0.358,135,6.643]],["name/130",[140,73.872]],["parent/130",[0,0,1,0.358,135,6.643]],["name/131",[141,70.498]],["parent/131",[0,0,1,0.358,2,1.721]],["name/132",[142,73.872]],["parent/132",[0,0,1,0.358,143,4.827]],["name/133",[144,73.872]],["parent/133",[0,0,1,0.358,143,4.827]],["name/134",[145,73.872]],["parent/134",[0,0,1,0.358,143,4.827]],["name/135",[146,73.872]],["parent/135",[0,0,1,0.358,143,4.827]],["name/136",[147,67.978]],["parent/136",[0,0,1,0.358,143,4.827]],["name/137",[148,73.872]],["parent/137",[0,0,1,0.358,143,4.827]],["name/138",[149,70.498]],["parent/138",[0,0,1,0.358,143,4.827]],["name/139",[150,67.978]],["parent/139",[0,0,1,0.358,143,4.827]],["name/140",[151,73.872]],["parent/140",[0,0,1,0.358,143,4.827]],["name/141",[152,73.872]],["parent/141",[0,0,1,0.358,143,4.827]],["name/142",[153,60.485]],["parent/142",[0,0,1,0.358,143,4.827]],["name/143",[154,73.872]],["parent/143",[0,0,1,0.358,143,4.827]],["name/144",[155,65.965]],["parent/144",[0,0,1,0.358,143,4.827]],["name/145",[156,73.872]],["parent/145",[0,0,1,0.358,143,4.827]],["name/146",[157,65.965]],["parent/146",[0,0,1,0.358,143,4.827]],["name/147",[158,73.872]],["parent/147",[0,0,1,0.358,143,4.827]],["name/148",[159,73.872]],["parent/148",[0,0,1,0.358,143,4.827]],["name/149",[96,67.978]],["parent/149",[0,0,1,0.358,143,4.827]],["name/150",[160,73.872]],["parent/150",[0,0,1,0.358,143,4.827]],["name/151",[161,73.872]],["parent/151",[0,0,1,0.358,143,4.827]],["name/152",[162,73.872]],["parent/152",[0,0,1,0.358,143,4.827]],["name/153",[163,73.872]],["parent/153",[0,0,1,0.358,143,4.827]],["name/154",[164,73.872]],["parent/154",[0,0,1,0.358,143,4.827]],["name/155",[165,70.498]],["parent/155",[0,0,1,0.358,143,4.827]],["name/156",[166,73.872]],["parent/156",[0,0,1,0.358,143,4.827]],["name/157",[167,73.872]],["parent/157",[0,0,1,0.358,143,4.827]],["name/158",[168,73.872]],["parent/158",[0,0,1,0.358,143,4.827]],["name/159",[169,73.872]],["parent/159",[0,0,1,0.358,143,4.827]],["name/160",[170,73.872]],["parent/160",[0,0,1,0.358,143,4.827]],["name/161",[171,73.872]],["parent/161",[0,0,1,0.358,143,4.827]],["name/162",[172,73.872]],["parent/162",[0,0,1,0.358,143,4.827]],["name/163",[173,73.872]],["parent/163",[0,0,1,0.358,143,4.827]],["name/164",[174,67.978]],["parent/164",[0,0,1,0.358,143,4.827]],["name/165",[175,59.481]],["parent/165",[0,0,1,0.358,143,4.827]],["name/166",[176,73.872]],["parent/166",[0,0,1,0.358,143,4.827]],["name/167",[177,73.872]],["parent/167",[0,0,1,0.358,143,4.827]],["name/168",[147,67.978]],["parent/168",[0,0,1,0.358,143,4.827]],["name/169",[178,78.994]],["parent/169",[0,0,1,0.358,2,1.721]],["name/170",[179,60.485]],["parent/170",[0,0,1,0.358,180,6.365]],["name/171",[181,73.872]],["parent/171",[0,0,1,0.358,180,6.365]],["name/172",[182,60.485]],["parent/172",[0,0,1,0.358,180,6.365]],["name/173",[183,67.978]],["parent/173",[0,0,1,0.358,180,6.365]],["name/174",[184,67.978]],["parent/174",[0,0,1,0.358,180,6.365]],["name/175",[185,67.978]],["parent/175",[0,0,1,0.358,180,6.365]],["name/176",[186,67.978]],["parent/176",[0,0,1,0.358,180,6.365]],["name/177",[187,67.978]],["parent/177",[0,0,1,0.358,180,6.365]],["name/178",[188,78.994]],["parent/178",[0,0,1,0.358,2,1.721]],["name/179",[182,60.485]],["parent/179",[0,0,1,0.358,189,7.633]],["name/180",[190,59.481]],["parent/180",[0,0,1,0.358,189,7.633]],["name/181",[191,78.994]],["parent/181",[0,0,1,0.358,2,1.721]],["name/182",[192,67.978]],["parent/182",[0,0,1,0.358,193,7.633]],["name/183",[194,67.978]],["parent/183",[0,0,1,0.358,193,7.633]],["name/184",[195,78.994]],["parent/184",[0,0,1,0.358,2,1.721]],["name/185",[155,65.965]],["parent/185",[0,0,1,0.358,196,7.284]],["name/186",[197,73.872]],["parent/186",[0,0,1,0.358,196,7.284]],["name/187",[157,65.965]],["parent/187",[0,0,1,0.358,196,7.284]],["name/188",[198,70.498]],["parent/188",[0,0,1,0.358,2,1.721]],["name/189",[199,67.978]],["parent/189",[0,0,1,0.358,200,5.886]],["name/190",[92,65.965]],["parent/190",[0,0,1,0.358,200,5.886]],["name/191",[201,50.583]],["parent/191",[0,0,1,0.358,200,5.886]],["name/192",[202,70.498]],["parent/192",[0,0,1,0.358,200,5.886]],["name/193",[122,58.569]],["parent/193",[0,0,1,0.358,200,5.886]],["name/194",[203,59.481]],["parent/194",[0,0,1,0.358,200,5.886]],["name/195",[93,67.978]],["parent/195",[0,0,1,0.358,200,5.886]],["name/196",[204,73.872]],["parent/196",[0,0,1,0.358,200,5.886]],["name/197",[205,67.978]],["parent/197",[0,0,1,0.358,200,5.886]],["name/198",[206,73.872]],["parent/198",[0,0,1,0.358,200,5.886]],["name/199",[207,73.872]],["parent/199",[0,0,1,0.358,200,5.886]],["name/200",[208,67.978]],["parent/200",[0,0,1,0.358,200,5.886]],["name/201",[209,73.872]],["parent/201",[0,0,1,0.358,200,5.886]],["name/202",[210,78.994]],["parent/202",[0,0,1,0.358,2,1.721]],["name/203",[211,73.872]],["parent/203",[0,0,1,0.358,212,7.633]],["name/204",[213,73.872]],["parent/204",[0,0,1,0.358,212,7.633]],["name/205",[214,78.994]],["parent/205",[0,0,1,0.358,2,1.721]],["name/206",[215,67.978]],["parent/206",[0,0,1,0.358,216,6.643]],["name/207",[153,60.485]],["parent/207",[0,0,1,0.358,216,6.643]],["name/208",[217,73.872]],["parent/208",[0,0,1,0.358,216,6.643]],["name/209",[218,73.872]],["parent/209",[0,0,1,0.358,216,6.643]],["name/210",[219,73.872]],["parent/210",[0,0,1,0.358,216,6.643]],["name/211",[175,59.481]],["parent/211",[0,0,1,0.358,216,6.643]],["name/212",[220,78.994]],["parent/212",[0,0,1,0.358,2,1.721]],["name/213",[221,73.872]],["parent/213",[0,0,1,0.358,222,7.024]],["name/214",[223,73.872]],["parent/214",[0,0,1,0.358,222,7.024]],["name/215",[224,73.872]],["parent/215",[0,0,1,0.358,222,7.024]],["name/216",[225,73.872]],["parent/216",[0,0,1,0.358,222,7.024]],["name/217",[226,78.994]],["parent/217",[0,0,1,0.358,2,1.721]],["name/218",[227,73.872]],["parent/218",[0,0,1,0.358,228,7.633]],["name/219",[229,73.872]],["parent/219",[0,0,1,0.358,228,7.633]],["name/220",[230,64.29]],["parent/220",[0,0,1,0.358,2,1.721]],["name/221",[231,73.872]],["parent/221",[0,0,1,0.358,232,7.633]],["name/222",[233,73.872]],["parent/222",[0,0,1,0.358,232,7.633]],["name/223",[234,78.994]],["parent/223",[0,0,1,0.358,2,1.721]],["name/224",[235,73.872]],["parent/224",[0,0,1,0.358,236,7.024]],["name/225",[237,73.872]],["parent/225",[0,0,1,0.358,236,7.024]],["name/226",[238,73.872]],["parent/226",[0,0,1,0.358,236,7.024]],["name/227",[239,73.872]],["parent/227",[0,0,1,0.358,236,7.024]],["name/228",[240,70.498]],["parent/228",[0,0,1,0.358,2,1.721]],["name/229",[241,73.872]],["parent/229",[0,0,1,0.358,242,5.965]],["name/230",[243,73.872]],["parent/230",[0,0,1,0.358,242,5.965]],["name/231",[244,65.965]],["parent/231",[0,0,1,0.358,242,5.965]],["name/232",[150,67.978]],["parent/232",[0,0,1,0.358,242,5.965]],["name/233",[245,73.872]],["parent/233",[0,0,1,0.358,242,5.965]],["name/234",[246,73.872]],["parent/234",[0,0,1,0.358,242,5.965]],["name/235",[247,73.872]],["parent/235",[0,0,1,0.358,242,5.965]],["name/236",[248,73.872]],["parent/236",[0,0,1,0.358,242,5.965]],["name/237",[249,73.872]],["parent/237",[0,0,1,0.358,242,5.965]],["name/238",[250,73.872]],["parent/238",[0,0,1,0.358,242,5.965]],["name/239",[251,73.872]],["parent/239",[0,0,1,0.358,242,5.965]],["name/240",[252,73.872]],["parent/240",[0,0,1,0.358,242,5.965]],["name/241",[63,65.965]],["parent/241",[0,0,1,0.358,2,1.721]],["name/242",[253,73.872]],["parent/242",[0,0,1,0.358,254,5.041]],["name/243",[255,73.872]],["parent/243",[0,0,1,0.358,254,5.041]],["name/244",[256,73.872]],["parent/244",[0,0,1,0.358,254,5.041]],["name/245",[208,67.978]],["parent/245",[0,0,1,0.358,254,5.041]],["name/246",[257,73.872]],["parent/246",[0,0,1,0.358,254,5.041]],["name/247",[258,73.872]],["parent/247",[0,0,1,0.358,254,5.041]],["name/248",[259,73.872]],["parent/248",[0,0,1,0.358,254,5.041]],["name/249",[260,73.872]],["parent/249",[0,0,1,0.358,254,5.041]],["name/250",[261,73.872]],["parent/250",[0,0,1,0.358,254,5.041]],["name/251",[262,73.872]],["parent/251",[0,0,1,0.358,254,5.041]],["name/252",[263,73.872]],["parent/252",[0,0,1,0.358,254,5.041]],["name/253",[264,73.872]],["parent/253",[0,0,1,0.358,254,5.041]],["name/254",[265,73.872]],["parent/254",[0,0,1,0.358,254,5.041]],["name/255",[266,67.978]],["parent/255",[0,0,1,0.358,254,5.041]],["name/256",[267,73.872]],["parent/256",[0,0,1,0.358,254,5.041]],["name/257",[268,73.872]],["parent/257",[0,0,1,0.358,254,5.041]],["name/258",[269,62.855]],["parent/258",[0,0,1,0.358,254,5.041]],["name/259",[270,73.872]],["parent/259",[0,0,1,0.358,254,5.041]],["name/260",[271,73.872]],["parent/260",[0,0,1,0.358,254,5.041]],["name/261",[272,73.872]],["parent/261",[0,0,1,0.358,254,5.041]],["name/262",[273,73.872]],["parent/262",[0,0,1,0.358,254,5.041]],["name/263",[274,73.872]],["parent/263",[0,0,1,0.358,254,5.041]],["name/264",[275,73.872]],["parent/264",[0,0,1,0.358,254,5.041]],["name/265",[276,73.872]],["parent/265",[0,0,1,0.358,254,5.041]],["name/266",[277,73.872]],["parent/266",[0,0,1,0.358,254,5.041]],["name/267",[278,73.872]],["parent/267",[0,0,1,0.358,254,5.041]],["name/268",[279,67.978]],["parent/268",[0,0,1,0.358,254,5.041]],["name/269",[280,73.872]],["parent/269",[0,0,1,0.358,254,5.041]],["name/270",[281,73.872]],["parent/270",[0,0,1,0.358,254,5.041]],["name/271",[282,73.872]],["parent/271",[0,0,1,0.358,254,5.041]],["name/272",[283,78.994]],["parent/272",[0,0,1,0.358,2,1.721]],["name/273",[284,67.978]],["parent/273",[0,0,1,0.358,285,7.633]],["name/274",[286,67.978]],["parent/274",[0,0,1,0.358,285,7.633]],["name/275",[287,78.994]],["parent/275",[0,0,1,0.358,2,1.721]],["name/276",[288,73.872]],["parent/276",[0,0,1,0.358,289,6.816]],["name/277",[290,73.872]],["parent/277",[0,0,1,0.358,289,6.816]],["name/278",[291,73.872]],["parent/278",[0,0,1,0.358,289,6.816]],["name/279",[192,67.978]],["parent/279",[0,0,1,0.358,289,6.816]],["name/280",[292,73.872]],["parent/280",[0,0,1,0.358,289,6.816]],["name/281",[293,78.994]],["parent/281",[0,0,1,0.358,2,1.721]],["name/282",[284,67.978]],["parent/282",[0,0,1,0.358,294,7.633]],["name/283",[286,67.978]],["parent/283",[0,0,1,0.358,294,7.633]],["name/284",[295,78.994]],["parent/284",[0,0,1,0.358,2,1.721]],["name/285",[296,73.872]],["parent/285",[0,0,1,0.358,297,7.024]],["name/286",[298,73.872]],["parent/286",[0,0,1,0.358,297,7.024]],["name/287",[299,73.872]],["parent/287",[0,0,1,0.358,297,7.024]],["name/288",[300,73.872]],["parent/288",[0,0,1,0.358,297,7.024]],["name/289",[301,70.498]],["parent/289",[0,0,1,0.358,2,1.721]],["name/290",[302,64.29]],["parent/290",[0,0,1,0.358,303,7.284]],["name/291",[304,73.872]],["parent/291",[0,0,1,0.358,303,7.284]],["name/292",[305,73.872]],["parent/292",[0,0,1,0.358,303,7.284]],["name/293",[306,78.994]],["parent/293",[0,0,1,0.358,2,1.721]],["name/294",[215,67.978]],["parent/294",[0,0,1,0.358,307,7.024]],["name/295",[153,60.485]],["parent/295",[0,0,1,0.358,307,7.024]],["name/296",[308,73.872]],["parent/296",[0,0,1,0.358,307,7.024]],["name/297",[309,73.872]],["parent/297",[0,0,1,0.358,307,7.024]],["name/298",[310,78.994]],["parent/298",[0,0,1,0.358,2,1.721]],["name/299",[311,73.872]],["parent/299",[0,0,1,0.358,312,7.284]],["name/300",[313,73.872]],["parent/300",[0,0,1,0.358,312,7.284]],["name/301",[314,73.872]],["parent/301",[0,0,1,0.358,312,7.284]],["name/302",[315,78.994]],["parent/302",[0,0,1,0.358,2,1.721]],["name/303",[316,61.6]],["parent/303",[0,0,1,0.358,317,8.162]],["name/304",[318,78.994]],["parent/304",[0,0,1,0.358,2,1.721]],["name/305",[319,73.872]],["parent/305",[0,0,1,0.358,320,5.311]],["name/306",[321,73.872]],["parent/306",[0,0,1,0.358,320,5.311]],["name/307",[322,73.872]],["parent/307",[0,0,1,0.358,320,5.311]],["name/308",[323,73.872]],["parent/308",[0,0,1,0.358,320,5.311]],["name/309",[324,73.872]],["parent/309",[0,0,1,0.358,320,5.311]],["name/310",[325,73.872]],["parent/310",[0,0,1,0.358,320,5.311]],["name/311",[326,73.872]],["parent/311",[0,0,1,0.358,320,5.311]],["name/312",[327,73.872]],["parent/312",[0,0,1,0.358,320,5.311]],["name/313",[328,73.872]],["parent/313",[0,0,1,0.358,320,5.311]],["name/314",[329,73.872]],["parent/314",[0,0,1,0.358,320,5.311]],["name/315",[330,73.872]],["parent/315",[0,0,1,0.358,320,5.311]],["name/316",[331,73.872]],["parent/316",[0,0,1,0.358,320,5.311]],["name/317",[332,73.872]],["parent/317",[0,0,1,0.358,320,5.311]],["name/318",[333,73.872]],["parent/318",[0,0,1,0.358,320,5.311]],["name/319",[334,70.498]],["parent/319",[0,0,1,0.358,320,5.311]],["name/320",[335,70.498]],["parent/320",[0,0,1,0.358,320,5.311]],["name/321",[336,70.498]],["parent/321",[0,0,1,0.358,320,5.311]],["name/322",[337,73.872]],["parent/322",[0,0,1,0.358,320,5.311]],["name/323",[338,73.872]],["parent/323",[0,0,1,0.358,320,5.311]],["name/324",[339,73.872]],["parent/324",[0,0,1,0.358,320,5.311]],["name/325",[340,73.872]],["parent/325",[0,0,1,0.358,320,5.311]],["name/326",[341,73.872]],["parent/326",[0,0,1,0.358,320,5.311]],["name/327",[342,73.872]],["parent/327",[0,0,1,0.358,320,5.311]],["name/328",[343,78.994]],["parent/328",[0,0,1,0.358,2,1.721]],["name/329",[302,64.29]],["parent/329",[0,0,1,0.358,344,6.365]],["name/330",[345,73.872]],["parent/330",[0,0,1,0.358,344,6.365]],["name/331",[346,73.872]],["parent/331",[0,0,1,0.358,344,6.365]],["name/332",[347,73.872]],["parent/332",[0,0,1,0.358,344,6.365]],["name/333",[348,73.872]],["parent/333",[0,0,1,0.358,344,6.365]],["name/334",[349,73.872]],["parent/334",[0,0,1,0.358,344,6.365]],["name/335",[350,73.872]],["parent/335",[0,0,1,0.358,344,6.365]],["name/336",[351,73.872]],["parent/336",[0,0,1,0.358,344,6.365]],["name/337",[352,78.994]],["parent/337",[0,0,1,0.358,2,1.721]],["name/338",[353,73.872]],["parent/338",[0,0,1,0.358,354,7.284]],["name/339",[355,65.965]],["parent/339",[0,0,1,0.358,354,7.284]],["name/340",[356,73.872]],["parent/340",[0,0,1,0.358,354,7.284]],["name/341",[357,78.994]],["parent/341",[0,0,1,0.358,2,1.721]],["name/342",[302,64.29]],["parent/342",[0,0,1,0.358,358,5.886]],["name/343",[359,73.872]],["parent/343",[0,0,1,0.358,358,5.886]],["name/344",[360,73.872]],["parent/344",[0,0,1,0.358,358,5.886]],["name/345",[361,73.872]],["parent/345",[0,0,1,0.358,358,5.886]],["name/346",[362,73.872]],["parent/346",[0,0,1,0.358,358,5.886]],["name/347",[363,73.872]],["parent/347",[0,0,1,0.358,358,5.886]],["name/348",[364,73.872]],["parent/348",[0,0,1,0.358,358,5.886]],["name/349",[365,73.872]],["parent/349",[0,0,1,0.358,358,5.886]],["name/350",[366,73.872]],["parent/350",[0,0,1,0.358,358,5.886]],["name/351",[367,73.872]],["parent/351",[0,0,1,0.358,358,5.886]],["name/352",[368,73.872]],["parent/352",[0,0,1,0.358,358,5.886]],["name/353",[369,73.872]],["parent/353",[0,0,1,0.358,358,5.886]],["name/354",[370,73.872]],["parent/354",[0,0,1,0.358,358,5.886]],["name/355",[371,78.994]],["parent/355",[0,0,1,0.358,2,1.721]],["name/356",[372,73.872]],["parent/356",[0,0,1,0.358,373,6.365]],["name/357",[374,73.872]],["parent/357",[0,0,1,0.358,373,6.365]],["name/358",[375,73.872]],["parent/358",[0,0,1,0.358,373,6.365]],["name/359",[376,73.872]],["parent/359",[0,0,1,0.358,373,6.365]],["name/360",[377,73.872]],["parent/360",[0,0,1,0.358,373,6.365]],["name/361",[378,73.872]],["parent/361",[0,0,1,0.358,373,6.365]],["name/362",[379,67.978]],["parent/362",[0,0,1,0.358,373,6.365]],["name/363",[380,73.872]],["parent/363",[0,0,1,0.358,373,6.365]],["name/364",[381,70.498]],["parent/364",[0,0,1,0.358,2,1.721]],["name/365",[379,67.978]],["parent/365",[0,0,1,0.358,382,6.25]],["name/366",[383,73.872]],["parent/366",[0,0,1,0.358,382,6.25]],["name/367",[384,73.872]],["parent/367",[0,0,1,0.358,382,6.25]],["name/368",[385,73.872]],["parent/368",[0,0,1,0.358,382,6.25]],["name/369",[386,73.872]],["parent/369",[0,0,1,0.358,382,6.25]],["name/370",[387,73.872]],["parent/370",[0,0,1,0.358,382,6.25]],["name/371",[388,73.872]],["parent/371",[0,0,1,0.358,382,6.25]],["name/372",[389,73.872]],["parent/372",[0,0,1,0.358,382,6.25]],["name/373",[390,73.872]],["parent/373",[0,0,1,0.358,382,6.25]],["name/374",[391,73.872]],["parent/374",[0,0,1,0.358,2,1.721]],["name/375",[392,73.872]],["parent/375",[0,0,1,0.358,393,5.268]],["name/376",[394,73.872]],["parent/376",[0,0,1,0.358,393,5.268]],["name/377",[395,73.872]],["parent/377",[0,0,1,0.358,393,5.268]],["name/378",[396,73.872]],["parent/378",[0,0,1,0.358,393,5.268]],["name/379",[397,73.872]],["parent/379",[0,0,1,0.358,393,5.268]],["name/380",[398,73.872]],["parent/380",[0,0,1,0.358,393,5.268]],["name/381",[399,70.498]],["parent/381",[0,0,1,0.358,393,5.268]],["name/382",[174,67.978]],["parent/382",[0,0,1,0.358,393,5.268]],["name/383",[400,73.872]],["parent/383",[0,0,1,0.358,393,5.268]],["name/384",[401,73.872]],["parent/384",[0,0,1,0.358,393,5.268]],["name/385",[402,73.872]],["parent/385",[0,0,1,0.358,393,5.268]],["name/386",[403,73.872]],["parent/386",[0,0,1,0.358,393,5.268]],["name/387",[404,73.872]],["parent/387",[0,0,1,0.358,393,5.268]],["name/388",[405,73.872]],["parent/388",[0,0,1,0.358,393,5.268]],["name/389",[406,73.872]],["parent/389",[0,0,1,0.358,393,5.268]],["name/390",[240,70.498]],["parent/390",[0,0,1,0.358,393,5.268]],["name/391",[244,65.965]],["parent/391",[0,0,1,0.358,393,5.268]],["name/392",[407,73.872]],["parent/392",[0,0,1,0.358,393,5.268]],["name/393",[408,73.872]],["parent/393",[0,0,1,0.358,393,5.268]],["name/394",[409,73.872]],["parent/394",[0,0,1,0.358,393,5.268]],["name/395",[410,73.872]],["parent/395",[0,0,1,0.358,393,5.268]],["name/396",[411,73.872]],["parent/396",[0,0,1,0.358,393,5.268]],["name/397",[412,73.872]],["parent/397",[0,0,1,0.358,393,5.268]],["name/398",[413,73.872]],["parent/398",[0,0,1,0.358,393,5.268]],["name/399",[414,78.994]],["parent/399",[0,0,1,0.358,2,1.721]],["name/400",[415,67.978]],["parent/400",[0,0,1,0.358,416,7.284]],["name/401",[417,65.965]],["parent/401",[0,0,1,0.358,416,7.284]],["name/402",[269,62.855]],["parent/402",[0,0,1,0.358,416,7.284]],["name/403",[418,78.994]],["parent/403",[0,0,1,0.358,2,1.721]],["name/404",[419,67.978]],["parent/404",[0,0,1,0.358,420,5.356]],["name/405",[421,73.872]],["parent/405",[0,0,1,0.358,420,5.356]],["name/406",[422,73.872]],["parent/406",[0,0,1,0.358,420,5.356]],["name/407",[423,73.872]],["parent/407",[0,0,1,0.358,420,5.356]],["name/408",[424,73.872]],["parent/408",[0,0,1,0.358,420,5.356]],["name/409",[425,73.872]],["parent/409",[0,0,1,0.358,420,5.356]],["name/410",[426,73.872]],["parent/410",[0,0,1,0.358,420,5.356]],["name/411",[427,73.872]],["parent/411",[0,0,1,0.358,420,5.356]],["name/412",[428,73.872]],["parent/412",[0,0,1,0.358,420,5.356]],["name/413",[429,73.872]],["parent/413",[0,0,1,0.358,420,5.356]],["name/414",[430,73.872]],["parent/414",[0,0,1,0.358,420,5.356]],["name/415",[431,73.872]],["parent/415",[0,0,1,0.358,420,5.356]],["name/416",[432,73.872]],["parent/416",[0,0,1,0.358,420,5.356]],["name/417",[433,73.872]],["parent/417",[0,0,1,0.358,420,5.356]],["name/418",[434,73.872]],["parent/418",[0,0,1,0.358,420,5.356]],["name/419",[435,73.872]],["parent/419",[0,0,1,0.358,420,5.356]],["name/420",[436,73.872]],["parent/420",[0,0,1,0.358,420,5.356]],["name/421",[437,73.872]],["parent/421",[0,0,1,0.358,420,5.356]],["name/422",[438,73.872]],["parent/422",[0,0,1,0.358,420,5.356]],["name/423",[439,73.872]],["parent/423",[0,0,1,0.358,420,5.356]],["name/424",[440,73.872]],["parent/424",[0,0,1,0.358,420,5.356]],["name/425",[441,67.978]],["parent/425",[0,0,1,0.358,420,5.356]],["name/426",[442,78.994]],["parent/426",[0,0,1,0.358,2,1.721]],["name/427",[419,67.978]],["parent/427",[0,0,1,0.358,443,6.052]],["name/428",[444,73.872]],["parent/428",[0,0,1,0.358,443,6.052]],["name/429",[445,73.872]],["parent/429",[0,0,1,0.358,443,6.052]],["name/430",[446,73.872]],["parent/430",[0,0,1,0.358,443,6.052]],["name/431",[447,73.872]],["parent/431",[0,0,1,0.358,443,6.052]],["name/432",[448,73.872]],["parent/432",[0,0,1,0.358,443,6.052]],["name/433",[449,73.872]],["parent/433",[0,0,1,0.358,443,6.052]],["name/434",[450,73.872]],["parent/434",[0,0,1,0.358,443,6.052]],["name/435",[451,73.872]],["parent/435",[0,0,1,0.358,443,6.052]],["name/436",[452,73.872]],["parent/436",[0,0,1,0.358,443,6.052]],["name/437",[441,67.978]],["parent/437",[0,0,1,0.358,443,6.052]],["name/438",[453,78.994]],["parent/438",[0,0,1,0.358,2,1.721]],["name/439",[454,73.872]],["parent/439",[0,0,1,0.358,455,6.643]],["name/440",[456,73.872]],["parent/440",[0,0,1,0.358,455,6.643]],["name/441",[457,73.872]],["parent/441",[0,0,1,0.358,455,6.643]],["name/442",[458,73.872]],["parent/442",[0,0,1,0.358,455,6.643]],["name/443",[459,73.872]],["parent/443",[0,0,1,0.358,455,6.643]],["name/444",[460,73.872]],["parent/444",[0,0,1,0.358,455,6.643]],["name/445",[461,62.855]],["parent/445",[0,0,1,0.358,2,1.721]],["name/446",[415,67.978]],["parent/446",[0,0,1,0.358,462,7.024]],["name/447",[463,73.872]],["parent/447",[0,0,1,0.358,462,7.024]],["name/448",[464,73.872]],["parent/448",[0,0,1,0.358,462,7.024]],["name/449",[465,73.872]],["parent/449",[0,0,1,0.358,462,7.024]],["name/450",[466,78.994]],["parent/450",[0,0,1,0.358,2,1.721]],["name/451",[467,48.788]],["parent/451",[0,0,1,0.358,468,6.495]],["name/452",[469,64.29]],["parent/452",[0,0,1,0.358,468,6.495]],["name/453",[175,59.481]],["parent/453",[0,0,1,0.358,468,6.495]],["name/454",[470,70.498]],["parent/454",[0,0,1,0.358,468,6.495]],["name/455",[471,43.342]],["parent/455",[0,0,1,0.358,468,6.495]],["name/456",[472,43.342]],["parent/456",[0,0,1,0.358,468,6.495]],["name/457",[49,28.997]],["parent/457",[0,0,1,0.358,468,6.495]],["name/458",[473,78.994]],["parent/458",[0,0,1,0.358,2,1.721]],["name/459",[467,48.788]],["parent/459",[0,0,1,0.358,474,7.024]],["name/460",[469,64.29]],["parent/460",[0,0,1,0.358,474,7.024]],["name/461",[175,59.481]],["parent/461",[0,0,1,0.358,474,7.024]],["name/462",[470,70.498]],["parent/462",[0,0,1,0.358,474,7.024]],["name/463",[475,78.994]],["parent/463",[0,0,1,0.358,2,1.721]],["name/464",[467,48.788]],["parent/464",[0,0,1,0.358,476,6.495]],["name/465",[469,64.29]],["parent/465",[0,0,1,0.358,476,6.495]],["name/466",[175,59.481]],["parent/466",[0,0,1,0.358,476,6.495]],["name/467",[470,70.498]],["parent/467",[0,0,1,0.358,476,6.495]],["name/468",[471,43.342]],["parent/468",[0,0,1,0.358,476,6.495]],["name/469",[472,43.342]],["parent/469",[0,0,1,0.358,476,6.495]],["name/470",[49,28.997]],["parent/470",[0,0,1,0.358,476,6.495]],["name/471",[477,78.994]],["parent/471",[0,0,1,0.358,2,1.721]],["name/472",[471,43.342]],["parent/472",[0,0,1,0.358,478,7.284]],["name/473",[472,43.342]],["parent/473",[0,0,1,0.358,478,7.284]],["name/474",[49,28.997]],["parent/474",[0,0,1,0.358,478,7.284]],["name/475",[479,78.994]],["parent/475",[0,0,1,0.358,2,1.721]],["name/476",[471,43.342]],["parent/476",[0,0,1,0.358,480,7.284]],["name/477",[472,43.342]],["parent/477",[0,0,1,0.358,480,7.284]],["name/478",[49,28.997]],["parent/478",[0,0,1,0.358,480,7.284]],["name/479",[481,78.994]],["parent/479",[0,0,1,0.358,2,1.721]],["name/480",[471,43.342]],["parent/480",[0,0,1,0.358,482,7.284]],["name/481",[472,43.342]],["parent/481",[0,0,1,0.358,482,7.284]],["name/482",[49,28.997]],["parent/482",[0,0,1,0.358,482,7.284]],["name/483",[483,78.994]],["parent/483",[0,0,1,0.358,2,1.721]],["name/484",[484,62.855]],["parent/484",[0,0,1,0.358,485,6.146]],["name/485",[486,60.485]],["parent/485",[0,0,1,0.358,485,6.146]],["name/486",[487,64.29]],["parent/486",[0,0,1,0.358,485,6.146]],["name/487",[488,64.29]],["parent/487",[0,0,1,0.358,485,6.146]],["name/488",[489,64.29]],["parent/488",[0,0,1,0.358,485,6.146]],["name/489",[490,64.29]],["parent/489",[0,0,1,0.358,485,6.146]],["name/490",[461,62.855]],["parent/490",[0,0,1,0.358,485,6.146]],["name/491",[471,43.342]],["parent/491",[0,0,1,0.358,485,6.146]],["name/492",[472,43.342]],["parent/492",[0,0,1,0.358,485,6.146]],["name/493",[49,28.997]],["parent/493",[0,0,1,0.358,485,6.146]],["name/494",[491,78.994]],["parent/494",[0,0,1,0.358,2,1.721]],["name/495",[484,62.855]],["parent/495",[0,0,1,0.358,492,6.495]],["name/496",[486,60.485]],["parent/496",[0,0,1,0.358,492,6.495]],["name/497",[487,64.29]],["parent/497",[0,0,1,0.358,492,6.495]],["name/498",[488,64.29]],["parent/498",[0,0,1,0.358,492,6.495]],["name/499",[489,64.29]],["parent/499",[0,0,1,0.358,492,6.495]],["name/500",[490,64.29]],["parent/500",[0,0,1,0.358,492,6.495]],["name/501",[461,62.855]],["parent/501",[0,0,1,0.358,492,6.495]],["name/502",[493,78.994]],["parent/502",[0,0,1,0.358,2,1.721]],["name/503",[484,62.855]],["parent/503",[0,0,1,0.358,494,6.146]],["name/504",[486,60.485]],["parent/504",[0,0,1,0.358,494,6.146]],["name/505",[487,64.29]],["parent/505",[0,0,1,0.358,494,6.146]],["name/506",[488,64.29]],["parent/506",[0,0,1,0.358,494,6.146]],["name/507",[489,64.29]],["parent/507",[0,0,1,0.358,494,6.146]],["name/508",[490,64.29]],["parent/508",[0,0,1,0.358,494,6.146]],["name/509",[461,62.855]],["parent/509",[0,0,1,0.358,494,6.146]],["name/510",[471,43.342]],["parent/510",[0,0,1,0.358,494,6.146]],["name/511",[472,43.342]],["parent/511",[0,0,1,0.358,494,6.146]],["name/512",[49,28.997]],["parent/512",[0,0,1,0.358,494,6.146]],["name/513",[495,78.994]],["parent/513",[0,0,1,0.358,2,1.721]],["name/514",[496,70.498]],["parent/514",[0,0,1,0.358,497,7.024]],["name/515",[471,43.342]],["parent/515",[0,0,1,0.358,497,7.024]],["name/516",[472,43.342]],["parent/516",[0,0,1,0.358,497,7.024]],["name/517",[49,28.997]],["parent/517",[0,0,1,0.358,497,7.024]],["name/518",[498,78.994]],["parent/518",[0,0,1,0.358,2,1.721]],["name/519",[496,70.498]],["parent/519",[0,0,1,0.358,499,8.162]],["name/520",[500,78.994]],["parent/520",[0,0,1,0.358,2,1.721]],["name/521",[496,70.498]],["parent/521",[0,0,1,0.358,501,7.024]],["name/522",[471,43.342]],["parent/522",[0,0,1,0.358,501,7.024]],["name/523",[472,43.342]],["parent/523",[0,0,1,0.358,501,7.024]],["name/524",[49,28.997]],["parent/524",[0,0,1,0.358,501,7.024]],["name/525",[502,78.994]],["parent/525",[0,0,1,0.358,2,1.721]],["name/526",[503,70.498]],["parent/526",[0,0,1,0.358,504,6.643]],["name/527",[505,70.498]],["parent/527",[0,0,1,0.358,504,6.643]],["name/528",[506,70.498]],["parent/528",[0,0,1,0.358,504,6.643]],["name/529",[471,43.342]],["parent/529",[0,0,1,0.358,504,6.643]],["name/530",[472,43.342]],["parent/530",[0,0,1,0.358,504,6.643]],["name/531",[49,28.997]],["parent/531",[0,0,1,0.358,504,6.643]],["name/532",[507,78.994]],["parent/532",[0,0,1,0.358,2,1.721]],["name/533",[503,70.498]],["parent/533",[0,0,1,0.358,508,7.284]],["name/534",[505,70.498]],["parent/534",[0,0,1,0.358,508,7.284]],["name/535",[506,70.498]],["parent/535",[0,0,1,0.358,508,7.284]],["name/536",[509,78.994]],["parent/536",[0,0,1,0.358,2,1.721]],["name/537",[503,70.498]],["parent/537",[0,0,1,0.358,510,6.643]],["name/538",[505,70.498]],["parent/538",[0,0,1,0.358,510,6.643]],["name/539",[506,70.498]],["parent/539",[0,0,1,0.358,510,6.643]],["name/540",[471,43.342]],["parent/540",[0,0,1,0.358,510,6.643]],["name/541",[472,43.342]],["parent/541",[0,0,1,0.358,510,6.643]],["name/542",[49,28.997]],["parent/542",[0,0,1,0.358,510,6.643]],["name/543",[511,78.994]],["parent/543",[0,0,1,0.358,2,1.721]],["name/544",[190,59.481]],["parent/544",[0,0,1,0.358,512,6.495]],["name/545",[513,70.498]],["parent/545",[0,0,1,0.358,512,6.495]],["name/546",[514,70.498]],["parent/546",[0,0,1,0.358,512,6.495]],["name/547",[515,70.498]],["parent/547",[0,0,1,0.358,512,6.495]],["name/548",[471,43.342]],["parent/548",[0,0,1,0.358,512,6.495]],["name/549",[472,43.342]],["parent/549",[0,0,1,0.358,512,6.495]],["name/550",[49,28.997]],["parent/550",[0,0,1,0.358,512,6.495]],["name/551",[516,78.994]],["parent/551",[0,0,1,0.358,2,1.721]],["name/552",[190,59.481]],["parent/552",[0,0,1,0.358,517,7.024]],["name/553",[513,70.498]],["parent/553",[0,0,1,0.358,517,7.024]],["name/554",[514,70.498]],["parent/554",[0,0,1,0.358,517,7.024]],["name/555",[515,70.498]],["parent/555",[0,0,1,0.358,517,7.024]],["name/556",[518,78.994]],["parent/556",[0,0,1,0.358,2,1.721]],["name/557",[190,59.481]],["parent/557",[0,0,1,0.358,519,6.495]],["name/558",[513,70.498]],["parent/558",[0,0,1,0.358,519,6.495]],["name/559",[514,70.498]],["parent/559",[0,0,1,0.358,519,6.495]],["name/560",[515,70.498]],["parent/560",[0,0,1,0.358,519,6.495]],["name/561",[471,43.342]],["parent/561",[0,0,1,0.358,519,6.495]],["name/562",[472,43.342]],["parent/562",[0,0,1,0.358,519,6.495]],["name/563",[49,28.997]],["parent/563",[0,0,1,0.358,519,6.495]],["name/564",[520,78.994]],["parent/564",[0,0,1,0.358,2,1.721]],["name/565",[471,43.342]],["parent/565",[0,0,1,0.358,521,7.284]],["name/566",[472,43.342]],["parent/566",[0,0,1,0.358,521,7.284]],["name/567",[49,28.997]],["parent/567",[0,0,1,0.358,521,7.284]],["name/568",[522,78.994]],["parent/568",[0,0,1,0.358,2,1.721]],["name/569",[471,43.342]],["parent/569",[0,0,1,0.358,523,7.284]],["name/570",[472,43.342]],["parent/570",[0,0,1,0.358,523,7.284]],["name/571",[49,28.997]],["parent/571",[0,0,1,0.358,523,7.284]],["name/572",[524,78.994]],["parent/572",[0,0,1,0.358,2,1.721]],["name/573",[525,67.978]],["parent/573",[0,0,1,0.358,526,6.25]],["name/574",[527,60.485]],["parent/574",[0,0,1,0.358,526,6.25]],["name/575",[467,48.788]],["parent/575",[0,0,1,0.358,526,6.25]],["name/576",[528,67.978]],["parent/576",[0,0,1,0.358,526,6.25]],["name/577",[529,70.498]],["parent/577",[0,0,1,0.358,526,6.25]],["name/578",[530,70.498]],["parent/578",[0,0,1,0.358,526,6.25]],["name/579",[471,43.342]],["parent/579",[0,0,1,0.358,526,6.25]],["name/580",[472,43.342]],["parent/580",[0,0,1,0.358,526,6.25]],["name/581",[49,28.997]],["parent/581",[0,0,1,0.358,526,6.25]],["name/582",[531,78.994]],["parent/582",[0,0,1,0.358,2,1.721]],["name/583",[525,67.978]],["parent/583",[0,0,1,0.358,532,6.643]],["name/584",[527,60.485]],["parent/584",[0,0,1,0.358,532,6.643]],["name/585",[467,48.788]],["parent/585",[0,0,1,0.358,532,6.643]],["name/586",[528,67.978]],["parent/586",[0,0,1,0.358,532,6.643]],["name/587",[529,70.498]],["parent/587",[0,0,1,0.358,532,6.643]],["name/588",[530,70.498]],["parent/588",[0,0,1,0.358,532,6.643]],["name/589",[533,78.994]],["parent/589",[0,0,1,0.358,2,1.721]],["name/590",[525,67.978]],["parent/590",[0,0,1,0.358,534,6.25]],["name/591",[527,60.485]],["parent/591",[0,0,1,0.358,534,6.25]],["name/592",[467,48.788]],["parent/592",[0,0,1,0.358,534,6.25]],["name/593",[528,67.978]],["parent/593",[0,0,1,0.358,534,6.25]],["name/594",[529,70.498]],["parent/594",[0,0,1,0.358,534,6.25]],["name/595",[530,70.498]],["parent/595",[0,0,1,0.358,534,6.25]],["name/596",[471,43.342]],["parent/596",[0,0,1,0.358,534,6.25]],["name/597",[472,43.342]],["parent/597",[0,0,1,0.358,534,6.25]],["name/598",[49,28.997]],["parent/598",[0,0,1,0.358,534,6.25]],["name/599",[535,78.994]],["parent/599",[0,0,1,0.358,2,1.721]],["name/600",[469,64.29]],["parent/600",[0,0,1,0.358,536,7.024]],["name/601",[471,43.342]],["parent/601",[0,0,1,0.358,536,7.024]],["name/602",[472,43.342]],["parent/602",[0,0,1,0.358,536,7.024]],["name/603",[49,28.997]],["parent/603",[0,0,1,0.358,536,7.024]],["name/604",[537,78.994]],["parent/604",[0,0,1,0.358,2,1.721]],["name/605",[469,64.29]],["parent/605",[0,0,1,0.358,538,8.162]],["name/606",[539,78.994]],["parent/606",[0,0,1,0.358,2,1.721]],["name/607",[469,64.29]],["parent/607",[0,0,1,0.358,540,7.024]],["name/608",[471,43.342]],["parent/608",[0,0,1,0.358,540,7.024]],["name/609",[472,43.342]],["parent/609",[0,0,1,0.358,540,7.024]],["name/610",[49,28.997]],["parent/610",[0,0,1,0.358,540,7.024]],["name/611",[541,78.994]],["parent/611",[0,0,1,0.358,2,1.721]],["name/612",[542,70.498]],["parent/612",[0,0,1,0.358,543,6.643]],["name/613",[544,73.872]],["parent/613",[0,0,1,0.358,543,6.643]],["name/614",[49,28.997]],["parent/614",[0,0,1,0.358,543,6.643]],["name/615",[471,43.342]],["parent/615",[0,0,1,0.358,543,6.643]],["name/616",[472,43.342]],["parent/616",[0,0,1,0.358,543,6.643]],["name/617",[49,28.997]],["parent/617",[0,0,1,0.358,543,6.643]],["name/618",[545,78.994]],["parent/618",[0,0,1,0.358,2,1.721]],["name/619",[542,70.498]],["parent/619",[0,0,1,0.358,546,6.643]],["name/620",[544,73.872]],["parent/620",[0,0,1,0.358,546,6.643]],["name/621",[49,28.997]],["parent/621",[0,0,1,0.358,546,6.643]],["name/622",[471,43.342]],["parent/622",[0,0,1,0.358,546,6.643]],["name/623",[472,43.342]],["parent/623",[0,0,1,0.358,546,6.643]],["name/624",[49,28.997]],["parent/624",[0,0,1,0.358,546,6.643]],["name/625",[547,78.994]],["parent/625",[0,0,1,0.358,2,1.721]],["name/626",[548,78.994]],["parent/626",[0,0,1,0.358,2,1.721]],["name/627",[467,48.788]],["parent/627",[0,0,1,0.358,549,7.024]],["name/628",[471,43.342]],["parent/628",[0,0,1,0.358,549,7.024]],["name/629",[472,43.342]],["parent/629",[0,0,1,0.358,549,7.024]],["name/630",[49,28.997]],["parent/630",[0,0,1,0.358,549,7.024]],["name/631",[550,78.994]],["parent/631",[0,0,1,0.358,2,1.721]],["name/632",[467,48.788]],["parent/632",[0,0,1,0.358,551,7.024]],["name/633",[471,43.342]],["parent/633",[0,0,1,0.358,551,7.024]],["name/634",[472,43.342]],["parent/634",[0,0,1,0.358,551,7.024]],["name/635",[49,28.997]],["parent/635",[0,0,1,0.358,551,7.024]],["name/636",[552,78.994]],["parent/636",[0,0,1,0.358,2,1.721]],["name/637",[553,65.965]],["parent/637",[0,0,1,0.358,554,6.816]],["name/638",[467,48.788]],["parent/638",[0,0,1,0.358,554,6.816]],["name/639",[471,43.342]],["parent/639",[0,0,1,0.358,554,6.816]],["name/640",[472,43.342]],["parent/640",[0,0,1,0.358,554,6.816]],["name/641",[49,28.997]],["parent/641",[0,0,1,0.358,554,6.816]],["name/642",[555,78.994]],["parent/642",[0,0,1,0.358,2,1.721]],["name/643",[556,78.994]],["parent/643",[0,0,1,0.358,2,1.721]],["name/644",[557,70.498]],["parent/644",[0,0,1,0.358,558,6.816]],["name/645",[467,48.788]],["parent/645",[0,0,1,0.358,558,6.816]],["name/646",[471,43.342]],["parent/646",[0,0,1,0.358,558,6.816]],["name/647",[472,43.342]],["parent/647",[0,0,1,0.358,558,6.816]],["name/648",[49,28.997]],["parent/648",[0,0,1,0.358,558,6.816]],["name/649",[559,78.994]],["parent/649",[0,0,1,0.358,2,1.721]],["name/650",[467,48.788]],["parent/650",[0,0,1,0.358,560,7.024]],["name/651",[471,43.342]],["parent/651",[0,0,1,0.358,560,7.024]],["name/652",[472,43.342]],["parent/652",[0,0,1,0.358,560,7.024]],["name/653",[49,28.997]],["parent/653",[0,0,1,0.358,560,7.024]],["name/654",[561,78.994]],["parent/654",[0,0,1,0.358,2,1.721]],["name/655",[467,48.788]],["parent/655",[0,0,1,0.358,562,7.024]],["name/656",[471,43.342]],["parent/656",[0,0,1,0.358,562,7.024]],["name/657",[472,43.342]],["parent/657",[0,0,1,0.358,562,7.024]],["name/658",[49,28.997]],["parent/658",[0,0,1,0.358,562,7.024]],["name/659",[563,78.994]],["parent/659",[0,0,1,0.358,2,1.721]],["name/660",[564,78.994]],["parent/660",[0,0,1,0.358,2,1.721]],["name/661",[467,48.788]],["parent/661",[0,0,1,0.358,565,7.024]],["name/662",[471,43.342]],["parent/662",[0,0,1,0.358,565,7.024]],["name/663",[472,43.342]],["parent/663",[0,0,1,0.358,565,7.024]],["name/664",[49,28.997]],["parent/664",[0,0,1,0.358,565,7.024]],["name/665",[566,78.994]],["parent/665",[0,0,1,0.358,2,1.721]],["name/666",[567,70.498]],["parent/666",[0,0,1,0.358,568,6.816]],["name/667",[467,48.788]],["parent/667",[0,0,1,0.358,568,6.816]],["name/668",[471,43.342]],["parent/668",[0,0,1,0.358,568,6.816]],["name/669",[472,43.342]],["parent/669",[0,0,1,0.358,568,6.816]],["name/670",[49,28.997]],["parent/670",[0,0,1,0.358,568,6.816]],["name/671",[569,78.994]],["parent/671",[0,0,1,0.358,2,1.721]],["name/672",[467,48.788]],["parent/672",[0,0,1,0.358,570,7.024]],["name/673",[471,43.342]],["parent/673",[0,0,1,0.358,570,7.024]],["name/674",[472,43.342]],["parent/674",[0,0,1,0.358,570,7.024]],["name/675",[49,28.997]],["parent/675",[0,0,1,0.358,570,7.024]],["name/676",[571,78.994]],["parent/676",[0,0,1,0.358,2,1.721]],["name/677",[37,62.855]],["parent/677",[0,0,1,0.358,572,6.816]],["name/678",[467,48.788]],["parent/678",[0,0,1,0.358,572,6.816]],["name/679",[471,43.342]],["parent/679",[0,0,1,0.358,572,6.816]],["name/680",[472,43.342]],["parent/680",[0,0,1,0.358,572,6.816]],["name/681",[49,28.997]],["parent/681",[0,0,1,0.358,572,6.816]],["name/682",[573,78.994]],["parent/682",[0,0,1,0.358,2,1.721]],["name/683",[574,78.994]],["parent/683",[0,0,1,0.358,2,1.721]],["name/684",[467,48.788]],["parent/684",[0,0,1,0.358,575,7.024]],["name/685",[471,43.342]],["parent/685",[0,0,1,0.358,575,7.024]],["name/686",[472,43.342]],["parent/686",[0,0,1,0.358,575,7.024]],["name/687",[49,28.997]],["parent/687",[0,0,1,0.358,575,7.024]],["name/688",[576,78.994]],["parent/688",[0,0,1,0.358,2,1.721]],["name/689",[553,65.965]],["parent/689",[0,0,1,0.358,577,6.816]],["name/690",[467,48.788]],["parent/690",[0,0,1,0.358,577,6.816]],["name/691",[471,43.342]],["parent/691",[0,0,1,0.358,577,6.816]],["name/692",[472,43.342]],["parent/692",[0,0,1,0.358,577,6.816]],["name/693",[49,28.997]],["parent/693",[0,0,1,0.358,577,6.816]],["name/694",[578,78.994]],["parent/694",[0,0,1,0.358,2,1.721]],["name/695",[579,78.994]],["parent/695",[0,0,1,0.358,2,1.721]],["name/696",[557,70.498]],["parent/696",[0,0,1,0.358,580,6.816]],["name/697",[467,48.788]],["parent/697",[0,0,1,0.358,580,6.816]],["name/698",[471,43.342]],["parent/698",[0,0,1,0.358,580,6.816]],["name/699",[472,43.342]],["parent/699",[0,0,1,0.358,580,6.816]],["name/700",[49,28.997]],["parent/700",[0,0,1,0.358,580,6.816]],["name/701",[581,78.994]],["parent/701",[0,0,1,0.358,2,1.721]],["name/702",[467,48.788]],["parent/702",[0,0,1,0.358,582,7.024]],["name/703",[471,43.342]],["parent/703",[0,0,1,0.358,582,7.024]],["name/704",[472,43.342]],["parent/704",[0,0,1,0.358,582,7.024]],["name/705",[49,28.997]],["parent/705",[0,0,1,0.358,582,7.024]],["name/706",[583,78.994]],["parent/706",[0,0,1,0.358,2,1.721]],["name/707",[467,48.788]],["parent/707",[0,0,1,0.358,584,7.024]],["name/708",[471,43.342]],["parent/708",[0,0,1,0.358,584,7.024]],["name/709",[472,43.342]],["parent/709",[0,0,1,0.358,584,7.024]],["name/710",[49,28.997]],["parent/710",[0,0,1,0.358,584,7.024]],["name/711",[585,78.994]],["parent/711",[0,0,1,0.358,2,1.721]],["name/712",[586,78.994]],["parent/712",[0,0,1,0.358,2,1.721]],["name/713",[467,48.788]],["parent/713",[0,0,1,0.358,587,7.024]],["name/714",[471,43.342]],["parent/714",[0,0,1,0.358,587,7.024]],["name/715",[472,43.342]],["parent/715",[0,0,1,0.358,587,7.024]],["name/716",[49,28.997]],["parent/716",[0,0,1,0.358,587,7.024]],["name/717",[588,78.994]],["parent/717",[0,0,1,0.358,2,1.721]],["name/718",[567,70.498]],["parent/718",[0,0,1,0.358,589,6.816]],["name/719",[467,48.788]],["parent/719",[0,0,1,0.358,589,6.816]],["name/720",[471,43.342]],["parent/720",[0,0,1,0.358,589,6.816]],["name/721",[472,43.342]],["parent/721",[0,0,1,0.358,589,6.816]],["name/722",[49,28.997]],["parent/722",[0,0,1,0.358,589,6.816]],["name/723",[590,78.994]],["parent/723",[0,0,1,0.358,2,1.721]],["name/724",[467,48.788]],["parent/724",[0,0,1,0.358,591,7.024]],["name/725",[471,43.342]],["parent/725",[0,0,1,0.358,591,7.024]],["name/726",[472,43.342]],["parent/726",[0,0,1,0.358,591,7.024]],["name/727",[49,28.997]],["parent/727",[0,0,1,0.358,591,7.024]],["name/728",[592,78.994]],["parent/728",[0,0,1,0.358,2,1.721]],["name/729",[37,62.855]],["parent/729",[0,0,1,0.358,593,6.816]],["name/730",[467,48.788]],["parent/730",[0,0,1,0.358,593,6.816]],["name/731",[471,43.342]],["parent/731",[0,0,1,0.358,593,6.816]],["name/732",[472,43.342]],["parent/732",[0,0,1,0.358,593,6.816]],["name/733",[49,28.997]],["parent/733",[0,0,1,0.358,593,6.816]],["name/734",[594,78.994]],["parent/734",[0,0,1,0.358,2,1.721]],["name/735",[37,62.855]],["parent/735",[0,0,1,0.358,595,8.162]],["name/736",[596,78.994]],["parent/736",[0,0,1,0.358,2,1.721]],["name/737",[567,70.498]],["parent/737",[0,0,1,0.358,597,8.162]],["name/738",[598,78.994]],["parent/738",[0,0,1,0.358,2,1.721]],["name/739",[553,65.965]],["parent/739",[0,0,1,0.358,599,8.162]],["name/740",[600,78.994]],["parent/740",[0,0,1,0.358,2,1.721]],["name/741",[557,70.498]],["parent/741",[0,0,1,0.358,601,8.162]],["name/742",[602,78.994]],["parent/742",[0,0,1,0.358,2,1.721]],["name/743",[603,78.994]],["parent/743",[0,0,1,0.358,2,1.721]],["name/744",[604,78.994]],["parent/744",[0,0,1,0.358,2,1.721]],["name/745",[605,78.994]],["parent/745",[0,0,1,0.358,2,1.721]],["name/746",[606,78.994]],["parent/746",[0,0,1,0.358,2,1.721]],["name/747",[607,78.994]],["parent/747",[0,0,1,0.358,2,1.721]],["name/748",[486,60.485]],["parent/748",[0,0,1,0.358,608,6.816]],["name/749",[609,67.978]],["parent/749",[0,0,1,0.358,608,6.816]],["name/750",[471,43.342]],["parent/750",[0,0,1,0.358,608,6.816]],["name/751",[472,43.342]],["parent/751",[0,0,1,0.358,608,6.816]],["name/752",[49,28.997]],["parent/752",[0,0,1,0.358,608,6.816]],["name/753",[610,78.994]],["parent/753",[0,0,1,0.358,2,1.721]],["name/754",[471,43.342]],["parent/754",[0,0,1,0.358,611,7.284]],["name/755",[472,43.342]],["parent/755",[0,0,1,0.358,611,7.284]],["name/756",[49,28.997]],["parent/756",[0,0,1,0.358,611,7.284]],["name/757",[612,78.994]],["parent/757",[0,0,1,0.358,2,1.721]],["name/758",[486,60.485]],["parent/758",[0,0,1,0.358,613,7.633]],["name/759",[609,67.978]],["parent/759",[0,0,1,0.358,613,7.633]],["name/760",[614,78.994]],["parent/760",[0,0,1,0.358,2,1.721]],["name/761",[486,60.485]],["parent/761",[0,0,1,0.358,615,6.816]],["name/762",[609,67.978]],["parent/762",[0,0,1,0.358,615,6.816]],["name/763",[471,43.342]],["parent/763",[0,0,1,0.358,615,6.816]],["name/764",[472,43.342]],["parent/764",[0,0,1,0.358,615,6.816]],["name/765",[49,28.997]],["parent/765",[0,0,1,0.358,615,6.816]],["name/766",[616,78.994]],["parent/766",[0,0,1,0.358,2,1.721]],["name/767",[471,43.342]],["parent/767",[0,0,1,0.358,617,7.284]],["name/768",[472,43.342]],["parent/768",[0,0,1,0.358,617,7.284]],["name/769",[49,28.997]],["parent/769",[0,0,1,0.358,617,7.284]],["name/770",[618,78.994]],["parent/770",[0,0,1,0.358,2,1.721]],["name/771",[619,70.498]],["parent/771",[0,0,1,0.358,620,6.816]],["name/772",[621,70.498]],["parent/772",[0,0,1,0.358,620,6.816]],["name/773",[471,43.342]],["parent/773",[0,0,1,0.358,620,6.816]],["name/774",[472,43.342]],["parent/774",[0,0,1,0.358,620,6.816]],["name/775",[49,28.997]],["parent/775",[0,0,1,0.358,620,6.816]],["name/776",[622,78.994]],["parent/776",[0,0,1,0.358,2,1.721]],["name/777",[619,70.498]],["parent/777",[0,0,1,0.358,623,7.633]],["name/778",[621,70.498]],["parent/778",[0,0,1,0.358,623,7.633]],["name/779",[624,78.994]],["parent/779",[0,0,1,0.358,2,1.721]],["name/780",[619,70.498]],["parent/780",[0,0,1,0.358,625,6.816]],["name/781",[621,70.498]],["parent/781",[0,0,1,0.358,625,6.816]],["name/782",[471,43.342]],["parent/782",[0,0,1,0.358,625,6.816]],["name/783",[472,43.342]],["parent/783",[0,0,1,0.358,625,6.816]],["name/784",[49,28.997]],["parent/784",[0,0,1,0.358,625,6.816]],["name/785",[626,78.994]],["parent/785",[0,0,1,0.358,2,1.721]],["name/786",[627,67.978]],["parent/786",[0,0,1,0.358,628,7.024]],["name/787",[471,43.342]],["parent/787",[0,0,1,0.358,628,7.024]],["name/788",[472,43.342]],["parent/788",[0,0,1,0.358,628,7.024]],["name/789",[49,28.997]],["parent/789",[0,0,1,0.358,628,7.024]],["name/790",[629,78.994]],["parent/790",[0,0,1,0.358,2,1.721]],["name/791",[627,67.978]],["parent/791",[0,0,1,0.358,630,8.162]],["name/792",[631,78.994]],["parent/792",[0,0,1,0.358,2,1.721]],["name/793",[627,67.978]],["parent/793",[0,0,1,0.358,632,7.024]],["name/794",[471,43.342]],["parent/794",[0,0,1,0.358,632,7.024]],["name/795",[472,43.342]],["parent/795",[0,0,1,0.358,632,7.024]],["name/796",[49,28.997]],["parent/796",[0,0,1,0.358,632,7.024]],["name/797",[633,78.994]],["parent/797",[0,0,1,0.358,2,1.721]],["name/798",[467,48.788]],["parent/798",[0,0,1,0.358,634,7.024]],["name/799",[471,43.342]],["parent/799",[0,0,1,0.358,634,7.024]],["name/800",[472,43.342]],["parent/800",[0,0,1,0.358,634,7.024]],["name/801",[49,28.997]],["parent/801",[0,0,1,0.358,634,7.024]],["name/802",[635,78.994]],["parent/802",[0,0,1,0.358,2,1.721]],["name/803",[467,48.788]],["parent/803",[0,0,1,0.358,636,8.162]],["name/804",[637,78.994]],["parent/804",[0,0,1,0.358,2,1.721]],["name/805",[467,48.788]],["parent/805",[0,0,1,0.358,638,7.024]],["name/806",[471,43.342]],["parent/806",[0,0,1,0.358,638,7.024]],["name/807",[472,43.342]],["parent/807",[0,0,1,0.358,638,7.024]],["name/808",[49,28.997]],["parent/808",[0,0,1,0.358,638,7.024]],["name/809",[639,78.994]],["parent/809",[0,0,1,0.358,2,1.721]],["name/810",[640,78.994]],["parent/810",[0,0,1,0.358,641,6.495]],["name/811",[642,78.994]],["parent/811",[0,0,1,0.358,641,6.495]],["name/812",[643,78.994]],["parent/812",[0,0,1,0.358,641,6.495]],["name/813",[644,78.994]],["parent/813",[0,0,1,0.358,641,6.495]],["name/814",[645,61.6]],["parent/814",[0,0,1,0.358,641,6.495]],["name/815",[139,54.949]],["parent/815",[0,0,1,0.358,641,6.495]],["name/816",[646,62.855]],["parent/816",[0,0,1,0.358,641,6.495]],["name/817",[484,62.855]],["parent/817",[0,0,1,0.358,2,1.721]],["name/818",[2,16.655]],["parent/818",[0,0,1,0.358,647,5.965]],["name/819",[182,60.485]],["parent/819",[0,0,1,0.358,647,5.965]],["name/820",[648,78.994]],["parent/820",[0,0,1,0.358,647,5.965]],["name/821",[649,78.994]],["parent/821",[0,0,1,0.358,647,5.965]],["name/822",[190,59.481]],["parent/822",[0,0,1,0.358,647,5.965]],["name/823",[650,78.994]],["parent/823",[0,0,1,0.358,647,5.965]],["name/824",[194,67.978]],["parent/824",[0,0,1,0.358,647,5.965]],["name/825",[651,78.994]],["parent/825",[0,0,1,0.358,647,5.965]],["name/826",[652,78.994]],["parent/826",[0,0,1,0.358,647,5.965]],["name/827",[653,78.994]],["parent/827",[0,0,1,0.358,647,5.965]],["name/828",[654,78.994]],["parent/828",[0,0,1,0.358,647,5.965]],["name/829",[655,78.994]],["parent/829",[0,0,1,0.358,647,5.965]],["name/830",[656,78.994]],["parent/830",[0,0,1,0.358,2,1.721]],["name/831",[657,78.994]],["parent/831",[0,0,1,0.358,658,5.965]],["name/832",[49,28.997]],["parent/832",[0,0,1,0.358,658,5.965]],["name/833",[659,50.985]],["parent/833",[0,0,1,0.358,658,5.965]],["name/834",[49,28.997]],["parent/834",[0,0,1,0.358,658,5.965]],["name/835",[660,50.985]],["parent/835",[0,0,1,0.358,658,5.965]],["name/836",[49,28.997]],["parent/836",[0,0,1,0.358,658,5.965]],["name/837",[661,49.122]],["parent/837",[0,0,1,0.358,658,5.965]],["name/838",[49,28.997]],["parent/838",[0,0,1,0.358,658,5.965]],["name/839",[662,62.855]],["parent/839",[0,0,1,0.358,658,5.965]],["name/840",[49,28.997]],["parent/840",[0,0,1,0.358,658,5.965]],["name/841",[663,52.294]],["parent/841",[0,0,1,0.358,658,5.965]],["name/842",[49,28.997]],["parent/842",[0,0,1,0.358,658,5.965]],["name/843",[57,73.872]],["parent/843",[0,0,1,0.358,2,1.721]],["name/844",[664,67.978]],["parent/844",[0,0,1,0.358,665,7.284]],["name/845",[666,78.994]],["parent/845",[0,0,1,0.358,665,7.284]],["name/846",[49,28.997]],["parent/846",[0,0,1,0.358,665,7.284]],["name/847",[667,78.994]],["parent/847",[0,0,1,0.358,2,1.721]],["name/848",[668,78.994]],["parent/848",[0,0,1,0.358,669,7.284]],["name/849",[670,78.994]],["parent/849",[0,0,1,0.358,669,7.284]],["name/850",[49,28.997]],["parent/850",[0,0,1,0.358,669,7.284]],["name/851",[59,60.485]],["parent/851",[0,0,1,0.358,2,1.721]],["name/852",[671,70.498]],["parent/852",[0,0,1,0.358,672,6.25]],["name/853",[100,60.485]],["parent/853",[0,0,1,0.358,672,6.25]],["name/854",[673,62.855]],["parent/854",[0,0,1,0.358,672,6.25]],["name/855",[674,67.978]],["parent/855",[0,0,1,0.358,672,6.25]],["name/856",[675,62.855]],["parent/856",[0,0,1,0.358,672,6.25]],["name/857",[676,67.978]],["parent/857",[0,0,1,0.358,672,6.25]],["name/858",[88,65.965]],["parent/858",[0,0,1,0.358,672,6.25]],["name/859",[116,64.29]],["parent/859",[0,0,1,0.358,672,6.25]],["name/860",[129,64.29]],["parent/860",[0,0,1,0.358,672,6.25]],["name/861",[527,60.485]],["parent/861",[0,0,1,0.358,2,1.721]],["name/862",[32,53.274]],["parent/862",[0,0,1,0.358,677,7.024]],["name/863",[678,65.965]],["parent/863",[0,0,1,0.358,677,7.024]],["name/864",[679,73.872]],["parent/864",[0,0,1,0.358,677,7.024]],["name/865",[680,73.872]],["parent/865",[0,0,1,0.358,677,7.024]],["name/866",[542,70.498]],["parent/866",[0,0,1,0.358,2,1.721]],["name/867",[60,55.576]],["parent/867",[0,0,1,0.358,681,4.884]],["name/868",[682,59.481]],["parent/868",[0,0,1,0.358,681,4.884]],["name/869",[683,70.498]],["parent/869",[0,0,1,0.358,681,4.884]],["name/870",[684,70.498]],["parent/870",[0,0,1,0.358,681,4.884]],["name/871",[685,70.498]],["parent/871",[0,0,1,0.358,681,4.884]],["name/872",[686,70.498]],["parent/872",[0,0,1,0.358,681,4.884]],["name/873",[687,70.498]],["parent/873",[0,0,1,0.358,681,4.884]],["name/874",[688,70.498]],["parent/874",[0,0,1,0.358,681,4.884]],["name/875",[689,70.498]],["parent/875",[0,0,1,0.358,681,4.884]],["name/876",[690,70.498]],["parent/876",[0,0,1,0.358,681,4.884]],["name/877",[691,70.498]],["parent/877",[0,0,1,0.358,681,4.884]],["name/878",[692,70.498]],["parent/878",[0,0,1,0.358,681,4.884]],["name/879",[693,70.498]],["parent/879",[0,0,1,0.358,681,4.884]],["name/880",[694,70.498]],["parent/880",[0,0,1,0.358,681,4.884]],["name/881",[695,70.498]],["parent/881",[0,0,1,0.358,681,4.884]],["name/882",[696,70.498]],["parent/882",[0,0,1,0.358,681,4.884]],["name/883",[697,70.498]],["parent/883",[0,0,1,0.358,681,4.884]],["name/884",[698,70.498]],["parent/884",[0,0,1,0.358,681,4.884]],["name/885",[699,70.498]],["parent/885",[0,0,1,0.358,681,4.884]],["name/886",[700,67.978]],["parent/886",[0,0,1,0.358,681,4.884]],["name/887",[701,70.498]],["parent/887",[0,0,1,0.358,681,4.884]],["name/888",[702,70.498]],["parent/888",[0,0,1,0.358,681,4.884]],["name/889",[99,65.965]],["parent/889",[0,0,1,0.358,681,4.884]],["name/890",[100,60.485]],["parent/890",[0,0,1,0.358,681,4.884]],["name/891",[675,62.855]],["parent/891",[0,0,1,0.358,681,4.884]],["name/892",[676,67.978]],["parent/892",[0,0,1,0.358,681,4.884]],["name/893",[673,62.855]],["parent/893",[0,0,1,0.358,681,4.884]],["name/894",[674,67.978]],["parent/894",[0,0,1,0.358,681,4.884]],["name/895",[703,65.965]],["parent/895",[0,0,1,0.358,681,4.884]],["name/896",[704,67.978]],["parent/896",[0,0,1,0.358,681,4.884]],["name/897",[705,67.978]],["parent/897",[0,0,1,0.358,681,4.884]],["name/898",[706,65.965]],["parent/898",[0,0,1,0.358,681,4.884]],["name/899",[230,64.29]],["parent/899",[0,0,1,0.358,681,4.884]],["name/900",[707,70.498]],["parent/900",[0,0,1,0.358,681,4.884]],["name/901",[708,70.498]],["parent/901",[0,0,1,0.358,681,4.884]],["name/902",[70,73.872]],["parent/902",[0,0,1,0.358,2,1.721]],["name/903",[683,70.498]],["parent/903",[0,0,1,0.358,709,6.643]],["name/904",[684,70.498]],["parent/904",[0,0,1,0.358,709,6.643]],["name/905",[685,70.498]],["parent/905",[0,0,1,0.358,709,6.643]],["name/906",[686,70.498]],["parent/906",[0,0,1,0.358,709,6.643]],["name/907",[687,70.498]],["parent/907",[0,0,1,0.358,709,6.643]],["name/908",[688,70.498]],["parent/908",[0,0,1,0.358,709,6.643]],["name/909",[710,78.994]],["parent/909",[0,0,1,0.358,2,1.721]],["name/910",[689,70.498]],["parent/910",[0,0,1,0.358,711,5.812]],["name/911",[690,70.498]],["parent/911",[0,0,1,0.358,711,5.812]],["name/912",[691,70.498]],["parent/912",[0,0,1,0.358,711,5.812]],["name/913",[692,70.498]],["parent/913",[0,0,1,0.358,711,5.812]],["name/914",[693,70.498]],["parent/914",[0,0,1,0.358,711,5.812]],["name/915",[694,70.498]],["parent/915",[0,0,1,0.358,711,5.812]],["name/916",[695,70.498]],["parent/916",[0,0,1,0.358,711,5.812]],["name/917",[696,70.498]],["parent/917",[0,0,1,0.358,711,5.812]],["name/918",[697,70.498]],["parent/918",[0,0,1,0.358,711,5.812]],["name/919",[698,70.498]],["parent/919",[0,0,1,0.358,711,5.812]],["name/920",[699,70.498]],["parent/920",[0,0,1,0.358,711,5.812]],["name/921",[700,67.978]],["parent/921",[0,0,1,0.358,711,5.812]],["name/922",[701,70.498]],["parent/922",[0,0,1,0.358,711,5.812]],["name/923",[702,70.498]],["parent/923",[0,0,1,0.358,711,5.812]],["name/924",[712,78.994]],["parent/924",[0,0,1,0.358,2,1.721]],["name/925",[99,65.965]],["parent/925",[0,0,1,0.358,713,6.052]],["name/926",[100,60.485]],["parent/926",[0,0,1,0.358,713,6.052]],["name/927",[675,62.855]],["parent/927",[0,0,1,0.358,713,6.052]],["name/928",[676,67.978]],["parent/928",[0,0,1,0.358,713,6.052]],["name/929",[673,62.855]],["parent/929",[0,0,1,0.358,713,6.052]],["name/930",[674,67.978]],["parent/930",[0,0,1,0.358,713,6.052]],["name/931",[703,65.965]],["parent/931",[0,0,1,0.358,713,6.052]],["name/932",[704,67.978]],["parent/932",[0,0,1,0.358,713,6.052]],["name/933",[705,67.978]],["parent/933",[0,0,1,0.358,713,6.052]],["name/934",[706,65.965]],["parent/934",[0,0,1,0.358,713,6.052]],["name/935",[230,64.29]],["parent/935",[0,0,1,0.358,713,6.052]],["name/936",[714,78.994]],["parent/936",[0,0,1,0.358,2,1.721]],["name/937",[707,70.498]],["parent/937",[0,0,1,0.358,715,7.633]],["name/938",[708,70.498]],["parent/938",[0,0,1,0.358,715,7.633]],["name/939",[716,78.994]],["parent/939",[0,0,1,0.358,2,1.721]],["name/940",[717,73.872]],["parent/940",[0,0,1,0.358,718,6.643]],["name/941",[82,64.29]],["parent/941",[0,0,1,0.358,718,6.643]],["name/942",[719,73.872]],["parent/942",[0,0,1,0.358,718,6.643]],["name/943",[49,28.997]],["parent/943",[0,0,1,0.358,718,6.643]],["name/944",[720,73.872]],["parent/944",[0,0,1,0.358,718,6.643]],["name/945",[49,28.997]],["parent/945",[0,0,1,0.358,718,6.643]],["name/946",[721,78.994]],["parent/946",[0,0,1,0.358,2,1.721]],["name/947",[717,73.872]],["parent/947",[0,0,1,0.358,722,7.633]],["name/948",[82,64.29]],["parent/948",[0,0,1,0.358,722,7.633]],["name/949",[723,78.994]],["parent/949",[0,0,1,0.358,2,1.721]],["name/950",[719,73.872]],["parent/950",[0,0,1,0.358,724,7.024]],["name/951",[49,28.997]],["parent/951",[0,0,1,0.358,724,7.024]],["name/952",[720,73.872]],["parent/952",[0,0,1,0.358,724,7.024]],["name/953",[49,28.997]],["parent/953",[0,0,1,0.358,724,7.024]],["name/954",[725,78.994]],["parent/954",[0,0,1,0.358,2,1.721]],["name/955",[726,73.872]],["parent/955",[0,0,1,0.358,727,6.643]],["name/956",[728,73.872]],["parent/956",[0,0,1,0.358,727,6.643]],["name/957",[729,73.872]],["parent/957",[0,0,1,0.358,727,6.643]],["name/958",[730,73.872]],["parent/958",[0,0,1,0.358,727,6.643]],["name/959",[731,73.872]],["parent/959",[0,0,1,0.358,727,6.643]],["name/960",[732,73.872]],["parent/960",[0,0,1,0.358,727,6.643]],["name/961",[733,78.994]],["parent/961",[0,0,1,0.358,2,1.721]],["name/962",[646,62.855]],["parent/962",[0,0,1,0.358,734,6.25]],["name/963",[735,65.965]],["parent/963",[0,0,1,0.358,734,6.25]],["name/964",[736,65.965]],["parent/964",[0,0,1,0.358,734,6.25]],["name/965",[737,65.965]],["parent/965",[0,0,1,0.358,734,6.25]],["name/966",[738,65.965]],["parent/966",[0,0,1,0.358,734,6.25]],["name/967",[645,61.6]],["parent/967",[0,0,1,0.358,734,6.25]],["name/968",[739,65.965]],["parent/968",[0,0,1,0.358,734,6.25]],["name/969",[139,54.949]],["parent/969",[0,0,1,0.358,734,6.25]],["name/970",[740,65.965]],["parent/970",[0,0,1,0.358,734,6.25]],["name/971",[741,78.994]],["parent/971",[0,0,1,0.358,2,1.721]],["name/972",[742,78.994]],["parent/972",[0,0,1,0.358,2,1.721]],["name/973",[743,70.498]],["parent/973",[0,0,1,0.358,744,7.024]],["name/974",[745,70.498]],["parent/974",[0,0,1,0.358,744,7.024]],["name/975",[746,70.498]],["parent/975",[0,0,1,0.358,744,7.024]],["name/976",[747,70.498]],["parent/976",[0,0,1,0.358,744,7.024]],["name/977",[748,78.994]],["parent/977",[0,0,1,0.358,2,1.721]],["name/978",[749,70.498]],["parent/978",[0,0,1,0.358,750,6.816]],["name/979",[743,70.498]],["parent/979",[0,0,1,0.358,750,6.816]],["name/980",[745,70.498]],["parent/980",[0,0,1,0.358,750,6.816]],["name/981",[746,70.498]],["parent/981",[0,0,1,0.358,750,6.816]],["name/982",[747,70.498]],["parent/982",[0,0,1,0.358,750,6.816]],["name/983",[751,78.994]],["parent/983",[0,0,1,0.358,2,1.721]],["name/984",[749,70.498]],["parent/984",[0,0,1,0.358,752,6.643]],["name/985",[175,59.481]],["parent/985",[0,0,1,0.358,752,6.643]],["name/986",[743,70.498]],["parent/986",[0,0,1,0.358,752,6.643]],["name/987",[745,70.498]],["parent/987",[0,0,1,0.358,752,6.643]],["name/988",[746,70.498]],["parent/988",[0,0,1,0.358,752,6.643]],["name/989",[747,70.498]],["parent/989",[0,0,1,0.358,752,6.643]],["name/990",[753,78.994]],["parent/990",[0,0,1,0.358,2,1.721]],["name/991",[754,73.872]],["parent/991",[0,0,1,0.358,755,6.495]],["name/992",[756,73.872]],["parent/992",[0,0,1,0.358,755,6.495]],["name/993",[757,73.872]],["parent/993",[0,0,1,0.358,755,6.495]],["name/994",[758,73.872]],["parent/994",[0,0,1,0.358,755,6.495]],["name/995",[759,73.872]],["parent/995",[0,0,1,0.358,755,6.495]],["name/996",[760,73.872]],["parent/996",[0,0,1,0.358,755,6.495]],["name/997",[761,73.872]],["parent/997",[0,0,1,0.358,755,6.495]],["name/998",[762,78.994]],["parent/998",[0,0,1,0.358,2,1.721]],["name/999",[763,78.994]],["parent/999",[0,0,1,0.358,764,7.284]],["name/1000",[765,78.994]],["parent/1000",[0,0,1,0.358,764,7.284]],["name/1001",[766,78.994]],["parent/1001",[0,0,1,0.358,764,7.284]],["name/1002",[767,78.994]],["parent/1002",[0,0,1,0.358,2,1.721]],["name/1003",[768,73.872]],["parent/1003",[0,0,1,0.358,769,7.633]],["name/1004",[770,73.872]],["parent/1004",[0,0,1,0.358,769,7.633]],["name/1005",[771,78.994]],["parent/1005",[0,0,1,0.358,2,1.721]],["name/1006",[772,65.965]],["parent/1006",[0,0,1,0.358,773,6.365]],["name/1007",[179,60.485]],["parent/1007",[0,0,1,0.358,773,6.365]],["name/1008",[774,73.872]],["parent/1008",[0,0,1,0.358,773,6.365]],["name/1009",[775,73.872]],["parent/1009",[0,0,1,0.358,773,6.365]],["name/1010",[776,73.872]],["parent/1010",[0,0,1,0.358,773,6.365]],["name/1011",[777,73.872]],["parent/1011",[0,0,1,0.358,773,6.365]],["name/1012",[645,61.6]],["parent/1012",[0,0,1,0.358,773,6.365]],["name/1013",[778,70.498]],["parent/1013",[0,0,1,0.358,773,6.365]],["name/1014",[779,78.994]],["parent/1014",[0,0,1,0.358,2,1.721]],["name/1015",[780,78.994]],["parent/1015",[0,0,1,0.358,781,7.024]],["name/1016",[782,78.994]],["parent/1016",[0,0,1,0.358,781,7.024]],["name/1017",[155,65.965]],["parent/1017",[0,0,1,0.358,781,7.024]],["name/1018",[157,65.965]],["parent/1018",[0,0,1,0.358,781,7.024]],["name/1019",[783,78.994]],["parent/1019",[0,0,1,0.358,2,1.721]],["name/1020",[784,78.994]],["parent/1020",[0,0,1,0.358,785,6.643]],["name/1021",[786,78.994]],["parent/1021",[0,0,1,0.358,785,6.643]],["name/1022",[787,73.872]],["parent/1022",[0,0,1,0.358,785,6.643]],["name/1023",[788,73.872]],["parent/1023",[0,0,1,0.358,785,6.643]],["name/1024",[789,73.872]],["parent/1024",[0,0,1,0.358,785,6.643]],["name/1025",[790,73.872]],["parent/1025",[0,0,1,0.358,785,6.643]],["name/1026",[791,78.994]],["parent/1026",[0,0,1,0.358,2,1.721]],["name/1027",[787,73.872]],["parent/1027",[0,0,1,0.358,792,7.024]],["name/1028",[788,73.872]],["parent/1028",[0,0,1,0.358,792,7.024]],["name/1029",[789,73.872]],["parent/1029",[0,0,1,0.358,792,7.024]],["name/1030",[790,73.872]],["parent/1030",[0,0,1,0.358,792,7.024]],["name/1031",[609,67.978]],["parent/1031",[0,0,1,0.358,2,1.721]],["name/1032",[793,70.498]],["parent/1032",[0,0,1,0.358,794,7.633]],["name/1033",[153,60.485]],["parent/1033",[0,0,1,0.358,794,7.633]],["name/1034",[795,73.872]],["parent/1034",[0,0,1,0.358,2,1.721]],["name/1035",[795,73.872]],["parent/1035",[0,0,1,0.358,796,6.816]],["name/1036",[797,78.994]],["parent/1036",[0,0,1,0.358,796,6.816]],["name/1037",[798,78.994]],["parent/1037",[0,0,1,0.358,796,6.816]],["name/1038",[799,78.994]],["parent/1038",[0,0,1,0.358,796,6.816]],["name/1039",[800,78.994]],["parent/1039",[0,0,1,0.358,796,6.816]],["name/1040",[801,78.994]],["parent/1040",[0,0,1,0.358,2,1.721]],["name/1041",[60,55.576]],["parent/1041",[0,0,1,0.358,802,7.633]],["name/1042",[32,53.274]],["parent/1042",[0,0,1,0.358,802,7.633]],["name/1043",[803,78.994]],["parent/1043",[0,0,1,0.358,2,1.721]],["name/1044",[793,70.498]],["parent/1044",[0,0,1,0.358,804,7.024]],["name/1045",[153,60.485]],["parent/1045",[0,0,1,0.358,804,7.024]],["name/1046",[60,55.576]],["parent/1046",[0,0,1,0.358,804,7.024]],["name/1047",[32,53.274]],["parent/1047",[0,0,1,0.358,804,7.024]],["name/1048",[805,78.994]],["parent/1048",[0,0,1,0.358,2,1.721]],["name/1049",[806,78.994]],["parent/1049",[0,0,1,0.358,807,6.816]],["name/1050",[808,70.498]],["parent/1050",[0,0,1,0.358,807,6.816]],["name/1051",[809,70.498]],["parent/1051",[0,0,1,0.358,807,6.816]],["name/1052",[60,55.576]],["parent/1052",[0,0,1,0.358,807,6.816]],["name/1053",[32,53.274]],["parent/1053",[0,0,1,0.358,807,6.816]],["name/1054",[810,78.994]],["parent/1054",[0,0,1,0.358,2,1.721]],["name/1055",[811,78.994]],["parent/1055",[0,0,1,0.358,812,7.284]],["name/1056",[60,55.576]],["parent/1056",[0,0,1,0.358,812,7.284]],["name/1057",[32,53.274]],["parent/1057",[0,0,1,0.358,812,7.284]],["name/1058",[813,78.994]],["parent/1058",[0,0,1,0.358,2,1.721]],["name/1059",[814,78.994]],["parent/1059",[0,0,1,0.358,2,1.721]],["name/1060",[194,67.978]],["parent/1060",[0,0,1,0.358,815,7.024]],["name/1061",[816,78.994]],["parent/1061",[0,0,1,0.358,815,7.024]],["name/1062",[817,78.994]],["parent/1062",[0,0,1,0.358,815,7.024]],["name/1063",[818,78.994]],["parent/1063",[0,0,1,0.358,815,7.024]],["name/1064",[819,78.994]],["parent/1064",[0,0,1,0.358,2,1.721]],["name/1065",[32,53.274]],["parent/1065",[0,0,1,0.358,820,7.284]],["name/1066",[678,65.965]],["parent/1066",[0,0,1,0.358,820,7.284]],["name/1067",[528,67.978]],["parent/1067",[0,0,1,0.358,820,7.284]],["name/1068",[700,67.978]],["parent/1068",[0,0,1,0.358,2,1.721]],["name/1069",[821,73.872]],["parent/1069",[0,0,1,0.358,822,5.886]],["name/1070",[823,73.872]],["parent/1070",[0,0,1,0.358,822,5.886]],["name/1071",[824,73.872]],["parent/1071",[0,0,1,0.358,822,5.886]],["name/1072",[825,73.872]],["parent/1072",[0,0,1,0.358,822,5.886]],["name/1073",[826,73.872]],["parent/1073",[0,0,1,0.358,822,5.886]],["name/1074",[827,73.872]],["parent/1074",[0,0,1,0.358,822,5.886]],["name/1075",[828,73.872]],["parent/1075",[0,0,1,0.358,822,5.886]],["name/1076",[829,73.872]],["parent/1076",[0,0,1,0.358,822,5.886]],["name/1077",[830,73.872]],["parent/1077",[0,0,1,0.358,822,5.886]],["name/1078",[831,73.872]],["parent/1078",[0,0,1,0.358,822,5.886]],["name/1079",[381,70.498]],["parent/1079",[0,0,1,0.358,822,5.886]],["name/1080",[832,78.994]],["parent/1080",[0,0,1,0.358,822,5.886]],["name/1081",[833,67.978]],["parent/1081",[0,0,1,0.358,822,5.886]],["name/1082",[834,78.994]],["parent/1082",[0,0,1,0.358,2,1.721]],["name/1083",[49,28.997]],["parent/1083",[0,0,1,0.358,835,8.162]],["name/1084",[836,78.994]],["parent/1084",[0,0,1,0.358,837,7.633]],["name/1085",[838,78.994]],["parent/1085",[0,0,1,0.358,837,7.633]],["name/1086",[417,65.965]],["parent/1086",[0,0,1,0.358,2,1.721]],["name/1087",[808,70.498]],["parent/1087",[0,0,1,0.358,839,7.633]],["name/1088",[809,70.498]],["parent/1088",[0,0,1,0.358,839,7.633]],["name/1089",[840,73.872]],["parent/1089",[0,0,1,0.358,2,1.721]],["name/1090",[841,78.994]],["parent/1090",[0,0,1,0.358,842,7.633]],["name/1091",[165,70.498]],["parent/1091",[0,0,1,0.358,842,7.633]],["name/1092",[843,78.994]],["parent/1092",[0,0,1,0.358,2,1.721]],["name/1093",[844,73.872]],["parent/1093",[0,0,1,0.358,845,6.052]],["name/1094",[846,73.872]],["parent/1094",[0,0,1,0.358,845,6.052]],["name/1095",[847,73.872]],["parent/1095",[0,0,1,0.358,845,6.052]],["name/1096",[848,73.872]],["parent/1096",[0,0,1,0.358,845,6.052]],["name/1097",[849,73.872]],["parent/1097",[0,0,1,0.358,845,6.052]],["name/1098",[850,73.872]],["parent/1098",[0,0,1,0.358,845,6.052]],["name/1099",[851,73.872]],["parent/1099",[0,0,1,0.358,845,6.052]],["name/1100",[852,73.872]],["parent/1100",[0,0,1,0.358,845,6.052]],["name/1101",[853,73.872]],["parent/1101",[0,0,1,0.358,845,6.052]],["name/1102",[854,73.872]],["parent/1102",[0,0,1,0.358,845,6.052]],["name/1103",[855,73.872]],["parent/1103",[0,0,1,0.358,845,6.052]],["name/1104",[856,78.994]],["parent/1104",[0,0,1,0.358,2,1.721]],["name/1105",[857,78.994]],["parent/1105",[0,0,1,0.358,858,5.886]],["name/1106",[859,78.994]],["parent/1106",[0,0,1,0.358,858,5.886]],["name/1107",[844,73.872]],["parent/1107",[0,0,1,0.358,858,5.886]],["name/1108",[846,73.872]],["parent/1108",[0,0,1,0.358,858,5.886]],["name/1109",[847,73.872]],["parent/1109",[0,0,1,0.358,858,5.886]],["name/1110",[848,73.872]],["parent/1110",[0,0,1,0.358,858,5.886]],["name/1111",[849,73.872]],["parent/1111",[0,0,1,0.358,858,5.886]],["name/1112",[850,73.872]],["parent/1112",[0,0,1,0.358,858,5.886]],["name/1113",[851,73.872]],["parent/1113",[0,0,1,0.358,858,5.886]],["name/1114",[852,73.872]],["parent/1114",[0,0,1,0.358,858,5.886]],["name/1115",[853,73.872]],["parent/1115",[0,0,1,0.358,858,5.886]],["name/1116",[854,73.872]],["parent/1116",[0,0,1,0.358,858,5.886]],["name/1117",[855,73.872]],["parent/1117",[0,0,1,0.358,858,5.886]],["name/1118",[860,78.994]],["parent/1118",[0,0,1,0.358,2,1.721]],["name/1119",[175,59.481]],["parent/1119",[0,0,1,0.358,861,3.914]],["name/1120",[772,65.965]],["parent/1120",[0,0,1,0.358,861,3.914]],["name/1121",[862,73.872]],["parent/1121",[0,0,1,0.358,861,3.914]],["name/1122",[179,60.485]],["parent/1122",[0,0,1,0.358,861,3.914]],["name/1123",[863,73.872]],["parent/1123",[0,0,1,0.358,861,3.914]],["name/1124",[864,73.872]],["parent/1124",[0,0,1,0.358,861,3.914]],["name/1125",[865,73.872]],["parent/1125",[0,0,1,0.358,861,3.914]],["name/1126",[866,73.872]],["parent/1126",[0,0,1,0.358,861,3.914]],["name/1127",[867,73.872]],["parent/1127",[0,0,1,0.358,861,3.914]],["name/1128",[868,73.872]],["parent/1128",[0,0,1,0.358,861,3.914]],["name/1129",[869,73.872]],["parent/1129",[0,0,1,0.358,861,3.914]],["name/1130",[870,73.872]],["parent/1130",[0,0,1,0.358,861,3.914]],["name/1131",[871,73.872]],["parent/1131",[0,0,1,0.358,861,3.914]],["name/1132",[872,73.872]],["parent/1132",[0,0,1,0.358,861,3.914]],["name/1133",[873,73.872]],["parent/1133",[0,0,1,0.358,861,3.914]],["name/1134",[874,73.872]],["parent/1134",[0,0,1,0.358,861,3.914]],["name/1135",[875,73.872]],["parent/1135",[0,0,1,0.358,861,3.914]],["name/1136",[876,73.872]],["parent/1136",[0,0,1,0.358,861,3.914]],["name/1137",[877,73.872]],["parent/1137",[0,0,1,0.358,861,3.914]],["name/1138",[878,73.872]],["parent/1138",[0,0,1,0.358,861,3.914]],["name/1139",[879,73.872]],["parent/1139",[0,0,1,0.358,861,3.914]],["name/1140",[880,73.872]],["parent/1140",[0,0,1,0.358,861,3.914]],["name/1141",[881,73.872]],["parent/1141",[0,0,1,0.358,861,3.914]],["name/1142",[882,73.872]],["parent/1142",[0,0,1,0.358,861,3.914]],["name/1143",[883,73.872]],["parent/1143",[0,0,1,0.358,861,3.914]],["name/1144",[884,73.872]],["parent/1144",[0,0,1,0.358,861,3.914]],["name/1145",[885,73.872]],["parent/1145",[0,0,1,0.358,861,3.914]],["name/1146",[886,73.872]],["parent/1146",[0,0,1,0.358,861,3.914]],["name/1147",[887,73.872]],["parent/1147",[0,0,1,0.358,861,3.914]],["name/1148",[888,73.872]],["parent/1148",[0,0,1,0.358,861,3.914]],["name/1149",[889,73.872]],["parent/1149",[0,0,1,0.358,861,3.914]],["name/1150",[890,73.872]],["parent/1150",[0,0,1,0.358,861,3.914]],["name/1151",[891,73.872]],["parent/1151",[0,0,1,0.358,861,3.914]],["name/1152",[892,73.872]],["parent/1152",[0,0,1,0.358,861,3.914]],["name/1153",[893,73.872]],["parent/1153",[0,0,1,0.358,861,3.914]],["name/1154",[894,73.872]],["parent/1154",[0,0,1,0.358,861,3.914]],["name/1155",[895,73.872]],["parent/1155",[0,0,1,0.358,861,3.914]],["name/1156",[896,73.872]],["parent/1156",[0,0,1,0.358,861,3.914]],["name/1157",[897,73.872]],["parent/1157",[0,0,1,0.358,861,3.914]],["name/1158",[898,73.872]],["parent/1158",[0,0,1,0.358,861,3.914]],["name/1159",[899,73.872]],["parent/1159",[0,0,1,0.358,861,3.914]],["name/1160",[900,73.872]],["parent/1160",[0,0,1,0.358,861,3.914]],["name/1161",[901,73.872]],["parent/1161",[0,0,1,0.358,861,3.914]],["name/1162",[902,73.872]],["parent/1162",[0,0,1,0.358,861,3.914]],["name/1163",[903,73.872]],["parent/1163",[0,0,1,0.358,861,3.914]],["name/1164",[904,73.872]],["parent/1164",[0,0,1,0.358,861,3.914]],["name/1165",[905,73.872]],["parent/1165",[0,0,1,0.358,861,3.914]],["name/1166",[906,73.872]],["parent/1166",[0,0,1,0.358,861,3.914]],["name/1167",[907,73.872]],["parent/1167",[0,0,1,0.358,861,3.914]],["name/1168",[908,73.872]],["parent/1168",[0,0,1,0.358,861,3.914]],["name/1169",[909,73.872]],["parent/1169",[0,0,1,0.358,861,3.914]],["name/1170",[910,73.872]],["parent/1170",[0,0,1,0.358,861,3.914]],["name/1171",[911,73.872]],["parent/1171",[0,0,1,0.358,861,3.914]],["name/1172",[912,73.872]],["parent/1172",[0,0,1,0.358,861,3.914]],["name/1173",[913,73.872]],["parent/1173",[0,0,1,0.358,861,3.914]],["name/1174",[914,73.872]],["parent/1174",[0,0,1,0.358,861,3.914]],["name/1175",[915,73.872]],["parent/1175",[0,0,1,0.358,861,3.914]],["name/1176",[916,73.872]],["parent/1176",[0,0,1,0.358,861,3.914]],["name/1177",[917,73.872]],["parent/1177",[0,0,1,0.358,861,3.914]],["name/1178",[918,73.872]],["parent/1178",[0,0,1,0.358,861,3.914]],["name/1179",[919,73.872]],["parent/1179",[0,0,1,0.358,861,3.914]],["name/1180",[920,73.872]],["parent/1180",[0,0,1,0.358,861,3.914]],["name/1181",[921,73.872]],["parent/1181",[0,0,1,0.358,861,3.914]],["name/1182",[922,73.872]],["parent/1182",[0,0,1,0.358,861,3.914]],["name/1183",[923,73.872]],["parent/1183",[0,0,1,0.358,861,3.914]],["name/1184",[924,73.872]],["parent/1184",[0,0,1,0.358,861,3.914]],["name/1185",[925,73.872]],["parent/1185",[0,0,1,0.358,861,3.914]],["name/1186",[926,73.872]],["parent/1186",[0,0,1,0.358,861,3.914]],["name/1187",[927,73.872]],["parent/1187",[0,0,1,0.358,861,3.914]],["name/1188",[928,73.872]],["parent/1188",[0,0,1,0.358,861,3.914]],["name/1189",[929,73.872]],["parent/1189",[0,0,1,0.358,861,3.914]],["name/1190",[930,73.872]],["parent/1190",[0,0,1,0.358,861,3.914]],["name/1191",[931,73.872]],["parent/1191",[0,0,1,0.358,861,3.914]],["name/1192",[932,73.872]],["parent/1192",[0,0,1,0.358,861,3.914]],["name/1193",[933,73.872]],["parent/1193",[0,0,1,0.358,861,3.914]],["name/1194",[934,73.872]],["parent/1194",[0,0,1,0.358,861,3.914]],["name/1195",[935,73.872]],["parent/1195",[0,0,1,0.358,861,3.914]],["name/1196",[186,67.978]],["parent/1196",[0,0,1,0.358,861,3.914]],["name/1197",[187,67.978]],["parent/1197",[0,0,1,0.358,861,3.914]],["name/1198",[936,73.872]],["parent/1198",[0,0,1,0.358,861,3.914]],["name/1199",[185,67.978]],["parent/1199",[0,0,1,0.358,861,3.914]],["name/1200",[937,73.872]],["parent/1200",[0,0,1,0.358,861,3.914]],["name/1201",[938,73.872]],["parent/1201",[0,0,1,0.358,861,3.914]],["name/1202",[939,73.872]],["parent/1202",[0,0,1,0.358,861,3.914]],["name/1203",[940,73.872]],["parent/1203",[0,0,1,0.358,861,3.914]],["name/1204",[182,60.485]],["parent/1204",[0,0,1,0.358,861,3.914]],["name/1205",[941,73.872]],["parent/1205",[0,0,1,0.358,861,3.914]],["name/1206",[183,67.978]],["parent/1206",[0,0,1,0.358,861,3.914]],["name/1207",[184,67.978]],["parent/1207",[0,0,1,0.358,861,3.914]],["name/1208",[942,73.872]],["parent/1208",[0,0,1,0.358,861,3.914]],["name/1209",[943,78.994]],["parent/1209",[0,0,1,0.358,2,1.721]],["name/1210",[944,78.994]],["parent/1210",[0,0,1,0.358,945,3.88]],["name/1211",[946,78.994]],["parent/1211",[0,0,1,0.358,945,3.88]],["name/1212",[947,78.994]],["parent/1212",[0,0,1,0.358,945,3.88]],["name/1213",[175,59.481]],["parent/1213",[0,0,1,0.358,945,3.88]],["name/1214",[772,65.965]],["parent/1214",[0,0,1,0.358,945,3.88]],["name/1215",[862,73.872]],["parent/1215",[0,0,1,0.358,945,3.88]],["name/1216",[179,60.485]],["parent/1216",[0,0,1,0.358,945,3.88]],["name/1217",[863,73.872]],["parent/1217",[0,0,1,0.358,945,3.88]],["name/1218",[864,73.872]],["parent/1218",[0,0,1,0.358,945,3.88]],["name/1219",[865,73.872]],["parent/1219",[0,0,1,0.358,945,3.88]],["name/1220",[866,73.872]],["parent/1220",[0,0,1,0.358,945,3.88]],["name/1221",[867,73.872]],["parent/1221",[0,0,1,0.358,945,3.88]],["name/1222",[868,73.872]],["parent/1222",[0,0,1,0.358,945,3.88]],["name/1223",[869,73.872]],["parent/1223",[0,0,1,0.358,945,3.88]],["name/1224",[870,73.872]],["parent/1224",[0,0,1,0.358,945,3.88]],["name/1225",[871,73.872]],["parent/1225",[0,0,1,0.358,945,3.88]],["name/1226",[872,73.872]],["parent/1226",[0,0,1,0.358,945,3.88]],["name/1227",[873,73.872]],["parent/1227",[0,0,1,0.358,945,3.88]],["name/1228",[874,73.872]],["parent/1228",[0,0,1,0.358,945,3.88]],["name/1229",[875,73.872]],["parent/1229",[0,0,1,0.358,945,3.88]],["name/1230",[876,73.872]],["parent/1230",[0,0,1,0.358,945,3.88]],["name/1231",[877,73.872]],["parent/1231",[0,0,1,0.358,945,3.88]],["name/1232",[878,73.872]],["parent/1232",[0,0,1,0.358,945,3.88]],["name/1233",[879,73.872]],["parent/1233",[0,0,1,0.358,945,3.88]],["name/1234",[880,73.872]],["parent/1234",[0,0,1,0.358,945,3.88]],["name/1235",[881,73.872]],["parent/1235",[0,0,1,0.358,945,3.88]],["name/1236",[882,73.872]],["parent/1236",[0,0,1,0.358,945,3.88]],["name/1237",[883,73.872]],["parent/1237",[0,0,1,0.358,945,3.88]],["name/1238",[884,73.872]],["parent/1238",[0,0,1,0.358,945,3.88]],["name/1239",[885,73.872]],["parent/1239",[0,0,1,0.358,945,3.88]],["name/1240",[886,73.872]],["parent/1240",[0,0,1,0.358,945,3.88]],["name/1241",[887,73.872]],["parent/1241",[0,0,1,0.358,945,3.88]],["name/1242",[888,73.872]],["parent/1242",[0,0,1,0.358,945,3.88]],["name/1243",[889,73.872]],["parent/1243",[0,0,1,0.358,945,3.88]],["name/1244",[890,73.872]],["parent/1244",[0,0,1,0.358,945,3.88]],["name/1245",[891,73.872]],["parent/1245",[0,0,1,0.358,945,3.88]],["name/1246",[892,73.872]],["parent/1246",[0,0,1,0.358,945,3.88]],["name/1247",[893,73.872]],["parent/1247",[0,0,1,0.358,945,3.88]],["name/1248",[894,73.872]],["parent/1248",[0,0,1,0.358,945,3.88]],["name/1249",[895,73.872]],["parent/1249",[0,0,1,0.358,945,3.88]],["name/1250",[896,73.872]],["parent/1250",[0,0,1,0.358,945,3.88]],["name/1251",[897,73.872]],["parent/1251",[0,0,1,0.358,945,3.88]],["name/1252",[898,73.872]],["parent/1252",[0,0,1,0.358,945,3.88]],["name/1253",[899,73.872]],["parent/1253",[0,0,1,0.358,945,3.88]],["name/1254",[900,73.872]],["parent/1254",[0,0,1,0.358,945,3.88]],["name/1255",[901,73.872]],["parent/1255",[0,0,1,0.358,945,3.88]],["name/1256",[902,73.872]],["parent/1256",[0,0,1,0.358,945,3.88]],["name/1257",[903,73.872]],["parent/1257",[0,0,1,0.358,945,3.88]],["name/1258",[904,73.872]],["parent/1258",[0,0,1,0.358,945,3.88]],["name/1259",[905,73.872]],["parent/1259",[0,0,1,0.358,945,3.88]],["name/1260",[906,73.872]],["parent/1260",[0,0,1,0.358,945,3.88]],["name/1261",[907,73.872]],["parent/1261",[0,0,1,0.358,945,3.88]],["name/1262",[908,73.872]],["parent/1262",[0,0,1,0.358,945,3.88]],["name/1263",[909,73.872]],["parent/1263",[0,0,1,0.358,945,3.88]],["name/1264",[910,73.872]],["parent/1264",[0,0,1,0.358,945,3.88]],["name/1265",[911,73.872]],["parent/1265",[0,0,1,0.358,945,3.88]],["name/1266",[912,73.872]],["parent/1266",[0,0,1,0.358,945,3.88]],["name/1267",[913,73.872]],["parent/1267",[0,0,1,0.358,945,3.88]],["name/1268",[914,73.872]],["parent/1268",[0,0,1,0.358,945,3.88]],["name/1269",[915,73.872]],["parent/1269",[0,0,1,0.358,945,3.88]],["name/1270",[916,73.872]],["parent/1270",[0,0,1,0.358,945,3.88]],["name/1271",[917,73.872]],["parent/1271",[0,0,1,0.358,945,3.88]],["name/1272",[918,73.872]],["parent/1272",[0,0,1,0.358,945,3.88]],["name/1273",[919,73.872]],["parent/1273",[0,0,1,0.358,945,3.88]],["name/1274",[920,73.872]],["parent/1274",[0,0,1,0.358,945,3.88]],["name/1275",[921,73.872]],["parent/1275",[0,0,1,0.358,945,3.88]],["name/1276",[922,73.872]],["parent/1276",[0,0,1,0.358,945,3.88]],["name/1277",[923,73.872]],["parent/1277",[0,0,1,0.358,945,3.88]],["name/1278",[924,73.872]],["parent/1278",[0,0,1,0.358,945,3.88]],["name/1279",[925,73.872]],["parent/1279",[0,0,1,0.358,945,3.88]],["name/1280",[926,73.872]],["parent/1280",[0,0,1,0.358,945,3.88]],["name/1281",[927,73.872]],["parent/1281",[0,0,1,0.358,945,3.88]],["name/1282",[928,73.872]],["parent/1282",[0,0,1,0.358,945,3.88]],["name/1283",[929,73.872]],["parent/1283",[0,0,1,0.358,945,3.88]],["name/1284",[930,73.872]],["parent/1284",[0,0,1,0.358,945,3.88]],["name/1285",[931,73.872]],["parent/1285",[0,0,1,0.358,945,3.88]],["name/1286",[932,73.872]],["parent/1286",[0,0,1,0.358,945,3.88]],["name/1287",[933,73.872]],["parent/1287",[0,0,1,0.358,945,3.88]],["name/1288",[934,73.872]],["parent/1288",[0,0,1,0.358,945,3.88]],["name/1289",[935,73.872]],["parent/1289",[0,0,1,0.358,945,3.88]],["name/1290",[186,67.978]],["parent/1290",[0,0,1,0.358,945,3.88]],["name/1291",[187,67.978]],["parent/1291",[0,0,1,0.358,945,3.88]],["name/1292",[936,73.872]],["parent/1292",[0,0,1,0.358,945,3.88]],["name/1293",[185,67.978]],["parent/1293",[0,0,1,0.358,945,3.88]],["name/1294",[937,73.872]],["parent/1294",[0,0,1,0.358,945,3.88]],["name/1295",[938,73.872]],["parent/1295",[0,0,1,0.358,945,3.88]],["name/1296",[939,73.872]],["parent/1296",[0,0,1,0.358,945,3.88]],["name/1297",[940,73.872]],["parent/1297",[0,0,1,0.358,945,3.88]],["name/1298",[182,60.485]],["parent/1298",[0,0,1,0.358,945,3.88]],["name/1299",[941,73.872]],["parent/1299",[0,0,1,0.358,945,3.88]],["name/1300",[183,67.978]],["parent/1300",[0,0,1,0.358,945,3.88]],["name/1301",[184,67.978]],["parent/1301",[0,0,1,0.358,945,3.88]],["name/1302",[942,73.872]],["parent/1302",[0,0,1,0.358,945,3.88]],["name/1303",[948,78.994]],["parent/1303",[0,0,1,0.358,2,1.721]],["name/1304",[661,49.122]],["parent/1304",[0,0,1,0.358,949,4.281]],["name/1305",[950,65.965]],["parent/1305",[0,0,1,0.358,949,4.281]],["name/1306",[951,61.6]],["parent/1306",[0,0,1,0.358,949,4.281]],["name/1307",[952,65.965]],["parent/1307",[0,0,1,0.358,949,4.281]],["name/1308",[953,65.965]],["parent/1308",[0,0,1,0.358,949,4.281]],["name/1309",[954,64.29]],["parent/1309",[0,0,1,0.358,949,4.281]],["name/1310",[139,54.949]],["parent/1310",[0,0,1,0.358,949,4.281]],["name/1311",[955,64.29]],["parent/1311",[0,0,1,0.358,949,4.281]],["name/1312",[956,64.29]],["parent/1312",[0,0,1,0.358,949,4.281]],["name/1313",[957,65.965]],["parent/1313",[0,0,1,0.358,949,4.281]],["name/1314",[958,61.6]],["parent/1314",[0,0,1,0.358,949,4.281]],["name/1315",[203,59.481]],["parent/1315",[0,0,1,0.358,949,4.281]],["name/1316",[959,65.965]],["parent/1316",[0,0,1,0.358,949,4.281]],["name/1317",[960,64.29]],["parent/1317",[0,0,1,0.358,949,4.281]],["name/1318",[122,58.569]],["parent/1318",[0,0,1,0.358,949,4.281]],["name/1319",[961,61.6]],["parent/1319",[0,0,1,0.358,949,4.281]],["name/1320",[962,61.6]],["parent/1320",[0,0,1,0.358,949,4.281]],["name/1321",[963,64.29]],["parent/1321",[0,0,1,0.358,949,4.281]],["name/1322",[964,61.6]],["parent/1322",[0,0,1,0.358,949,4.281]],["name/1323",[965,61.6]],["parent/1323",[0,0,1,0.358,949,4.281]],["name/1324",[966,61.6]],["parent/1324",[0,0,1,0.358,949,4.281]],["name/1325",[967,65.965]],["parent/1325",[0,0,1,0.358,949,4.281]],["name/1326",[968,65.965]],["parent/1326",[0,0,1,0.358,949,4.281]],["name/1327",[969,65.965]],["parent/1327",[0,0,1,0.358,949,4.281]],["name/1328",[970,65.965]],["parent/1328",[0,0,1,0.358,949,4.281]],["name/1329",[971,65.965]],["parent/1329",[0,0,1,0.358,949,4.281]],["name/1330",[972,65.965]],["parent/1330",[0,0,1,0.358,949,4.281]],["name/1331",[973,65.965]],["parent/1331",[0,0,1,0.358,949,4.281]],["name/1332",[130,58.569]],["parent/1332",[0,0,1,0.358,949,4.281]],["name/1333",[123,61.6]],["parent/1333",[0,0,1,0.358,949,4.281]],["name/1334",[974,61.6]],["parent/1334",[0,0,1,0.358,949,4.281]],["name/1335",[975,65.965]],["parent/1335",[0,0,1,0.358,949,4.281]],["name/1336",[976,65.965]],["parent/1336",[0,0,1,0.358,949,4.281]],["name/1337",[977,65.965]],["parent/1337",[0,0,1,0.358,949,4.281]],["name/1338",[978,65.965]],["parent/1338",[0,0,1,0.358,949,4.281]],["name/1339",[35,64.29]],["parent/1339",[0,0,1,0.358,949,4.281]],["name/1340",[979,65.965]],["parent/1340",[0,0,1,0.358,949,4.281]],["name/1341",[980,65.965]],["parent/1341",[0,0,1,0.358,949,4.281]],["name/1342",[981,65.965]],["parent/1342",[0,0,1,0.358,949,4.281]],["name/1343",[982,65.965]],["parent/1343",[0,0,1,0.358,949,4.281]],["name/1344",[983,65.965]],["parent/1344",[0,0,1,0.358,949,4.281]],["name/1345",[984,65.965]],["parent/1345",[0,0,1,0.358,949,4.281]],["name/1346",[985,65.965]],["parent/1346",[0,0,1,0.358,949,4.281]],["name/1347",[986,65.965]],["parent/1347",[0,0,1,0.358,949,4.281]],["name/1348",[987,65.965]],["parent/1348",[0,0,1,0.358,949,4.281]],["name/1349",[988,65.965]],["parent/1349",[0,0,1,0.358,949,4.281]],["name/1350",[989,65.965]],["parent/1350",[0,0,1,0.358,949,4.281]],["name/1351",[990,61.6]],["parent/1351",[0,0,1,0.358,949,4.281]],["name/1352",[991,60.485]],["parent/1352",[0,0,1,0.358,949,4.281]],["name/1353",[992,61.6]],["parent/1353",[0,0,1,0.358,949,4.281]],["name/1354",[993,65.965]],["parent/1354",[0,0,1,0.358,949,4.281]],["name/1355",[60,55.576]],["parent/1355",[0,0,1,0.358,949,4.281]],["name/1356",[994,65.965]],["parent/1356",[0,0,1,0.358,949,4.281]],["name/1357",[995,65.965]],["parent/1357",[0,0,1,0.358,949,4.281]],["name/1358",[996,65.965]],["parent/1358",[0,0,1,0.358,949,4.281]],["name/1359",[997,65.965]],["parent/1359",[0,0,1,0.358,949,4.281]],["name/1360",[998,65.965]],["parent/1360",[0,0,1,0.358,949,4.281]],["name/1361",[999,64.29]],["parent/1361",[0,0,1,0.358,949,4.281]],["name/1362",[1000,65.965]],["parent/1362",[0,0,1,0.358,949,4.281]],["name/1363",[1001,65.965]],["parent/1363",[0,0,1,0.358,949,4.281]],["name/1364",[1002,65.965]],["parent/1364",[0,0,1,0.358,949,4.281]],["name/1365",[1003,65.965]],["parent/1365",[0,0,1,0.358,949,4.281]],["name/1366",[1004,59.481]],["parent/1366",[0,0,1,0.358,949,4.281]],["name/1367",[1005,64.29]],["parent/1367",[0,0,1,0.358,2,1.721]],["name/1368",[1006,78.994]],["parent/1368",[0,0,1,0.358,1007,6.643]],["name/1369",[1008,78.994]],["parent/1369",[0,0,1,0.358,1007,6.643]],["name/1370",[1009,78.994]],["parent/1370",[0,0,1,0.358,1007,6.643]],["name/1371",[1010,78.994]],["parent/1371",[0,0,1,0.358,1007,6.643]],["name/1372",[1011,78.994]],["parent/1372",[0,0,1,0.358,1007,6.643]],["name/1373",[1012,78.994]],["parent/1373",[0,0,1,0.358,1007,6.643]],["name/1374",[1013,78.994]],["parent/1374",[0,0,1,0.358,2,1.721]],["name/1375",[1014,70.498]],["parent/1375",[0,0,1,0.358,1015,7.284]],["name/1376",[770,73.872]],["parent/1376",[0,0,1,0.358,1015,7.284]],["name/1377",[768,73.872]],["parent/1377",[0,0,1,0.358,1015,7.284]],["name/1378",[1016,78.994]],["parent/1378",[0,0,1,0.358,2,1.721]],["name/1379",[1017,78.994]],["parent/1379",[0,0,1,0.358,2,1.721]],["name/1380",[141,70.498]],["parent/1380",[0,0,1,0.358,1018,6.643]],["name/1381",[1019,73.872]],["parent/1381",[0,0,1,0.358,1018,6.643]],["name/1382",[49,28.997]],["parent/1382",[0,0,1,0.358,1018,6.643]],["name/1383",[1020,73.872]],["parent/1383",[0,0,1,0.358,1018,6.643]],["name/1384",[49,28.997]],["parent/1384",[0,0,1,0.358,1018,6.643]],["name/1385",[1021,73.872]],["parent/1385",[0,0,1,0.358,1018,6.643]],["name/1386",[1022,78.994]],["parent/1386",[0,0,1,0.358,2,1.721]],["name/1387",[1023,78.994]],["parent/1387",[0,0,1,0.358,1024,6.495]],["name/1388",[141,70.498]],["parent/1388",[0,0,1,0.358,1024,6.495]],["name/1389",[1019,73.872]],["parent/1389",[0,0,1,0.358,1024,6.495]],["name/1390",[49,28.997]],["parent/1390",[0,0,1,0.358,1024,6.495]],["name/1391",[1020,73.872]],["parent/1391",[0,0,1,0.358,1024,6.495]],["name/1392",[49,28.997]],["parent/1392",[0,0,1,0.358,1024,6.495]],["name/1393",[1021,73.872]],["parent/1393",[0,0,1,0.358,1024,6.495]],["name/1394",[1025,78.994]],["parent/1394",[0,0,1,0.358,2,1.721]],["name/1395",[659,50.985]],["parent/1395",[0,0,1,0.358,1026,6.146]],["name/1396",[49,28.997]],["parent/1396",[0,0,1,0.358,1026,6.146]],["name/1397",[660,50.985]],["parent/1397",[0,0,1,0.358,1026,6.146]],["name/1398",[49,28.997]],["parent/1398",[0,0,1,0.358,1026,6.146]],["name/1399",[661,49.122]],["parent/1399",[0,0,1,0.358,1026,6.146]],["name/1400",[49,28.997]],["parent/1400",[0,0,1,0.358,1026,6.146]],["name/1401",[662,62.855]],["parent/1401",[0,0,1,0.358,1026,6.146]],["name/1402",[49,28.997]],["parent/1402",[0,0,1,0.358,1026,6.146]],["name/1403",[663,52.294]],["parent/1403",[0,0,1,0.358,1026,6.146]],["name/1404",[49,28.997]],["parent/1404",[0,0,1,0.358,1026,6.146]],["name/1405",[1027,78.994]],["parent/1405",[0,0,1,0.358,2,1.721]],["name/1406",[1028,73.872]],["parent/1406",[0,0,1,0.358,1029,6.052]],["name/1407",[659,50.985]],["parent/1407",[0,0,1,0.358,1029,6.052]],["name/1408",[49,28.997]],["parent/1408",[0,0,1,0.358,1029,6.052]],["name/1409",[660,50.985]],["parent/1409",[0,0,1,0.358,1029,6.052]],["name/1410",[49,28.997]],["parent/1410",[0,0,1,0.358,1029,6.052]],["name/1411",[661,49.122]],["parent/1411",[0,0,1,0.358,1029,6.052]],["name/1412",[49,28.997]],["parent/1412",[0,0,1,0.358,1029,6.052]],["name/1413",[662,62.855]],["parent/1413",[0,0,1,0.358,1029,6.052]],["name/1414",[49,28.997]],["parent/1414",[0,0,1,0.358,1029,6.052]],["name/1415",[663,52.294]],["parent/1415",[0,0,1,0.358,1029,6.052]],["name/1416",[49,28.997]],["parent/1416",[0,0,1,0.358,1029,6.052]],["name/1417",[1030,78.994]],["parent/1417",[0,0,1,0.358,2,1.721]],["name/1418",[1031,67.978]],["parent/1418",[0,0,1,0.358,1032,5.965]],["name/1419",[130,58.569]],["parent/1419",[0,0,1,0.358,1032,5.965]],["name/1420",[1033,78.994]],["parent/1420",[0,0,1,0.358,1032,5.965]],["name/1421",[1034,70.498]],["parent/1421",[0,0,1,0.358,1032,5.965]],["name/1422",[1035,70.498]],["parent/1422",[0,0,1,0.358,1032,5.965]],["name/1423",[399,70.498]],["parent/1423",[0,0,1,0.358,1032,5.965]],["name/1424",[1036,78.994]],["parent/1424",[0,0,1,0.358,1032,5.965]],["name/1425",[1037,70.498]],["parent/1425",[0,0,1,0.358,1032,5.965]],["name/1426",[527,60.485]],["parent/1426",[0,0,1,0.358,1032,5.965]],["name/1427",[269,62.855]],["parent/1427",[0,0,1,0.358,1032,5.965]],["name/1428",[1038,78.994]],["parent/1428",[0,0,1,0.358,1032,5.965]],["name/1429",[1039,70.498]],["parent/1429",[0,0,1,0.358,1032,5.965]],["name/1430",[1040,78.994]],["parent/1430",[0,0,1,0.358,2,1.721]],["name/1431",[1041,78.994]],["parent/1431",[0,0,1,0.358,2,1.721]],["name/1432",[1042,78.994]],["parent/1432",[0,0,1,0.358,2,1.721]],["name/1433",[1043,78.994]],["parent/1433",[0,0,1,0.358,2,1.721]],["name/1434",[1044,78.994]],["parent/1434",[0,0,1,0.358,2,1.721]],["name/1435",[1045,78.994]],["parent/1435",[0,0,1,0.358,2,1.721]],["name/1436",[1046,78.994]],["parent/1436",[0,0,1,0.358,2,1.721]],["name/1437",[1047,73.872]],["parent/1437",[0,0,1,0.358,1048,5.559]],["name/1438",[7,49.468]],["parent/1438",[0,0,1,0.358,1048,5.559]],["name/1439",[6,44.777]],["parent/1439",[0,0,1,0.358,1048,5.559]],["name/1440",[1049,73.872]],["parent/1440",[0,0,1,0.358,1048,5.559]],["name/1441",[1050,64.29]],["parent/1441",[0,0,1,0.358,1048,5.559]],["name/1442",[682,59.481]],["parent/1442",[0,0,1,0.358,1048,5.559]],["name/1443",[1051,64.29]],["parent/1443",[0,0,1,0.358,1048,5.559]],["name/1444",[1004,59.481]],["parent/1444",[0,0,1,0.358,1048,5.559]],["name/1445",[49,28.997]],["parent/1445",[0,0,1,0.358,1048,5.559]],["name/1446",[1052,65.965]],["parent/1446",[0,0,1,0.358,1048,5.559]],["name/1447",[1005,64.29]],["parent/1447",[0,0,1,0.358,1048,5.559]],["name/1448",[1031,67.978]],["parent/1448",[0,0,1,0.358,1048,5.559]],["name/1449",[130,58.569]],["parent/1449",[0,0,1,0.358,1048,5.559]],["name/1450",[1034,70.498]],["parent/1450",[0,0,1,0.358,1048,5.559]],["name/1451",[1035,70.498]],["parent/1451",[0,0,1,0.358,1048,5.559]],["name/1452",[1037,70.498]],["parent/1452",[0,0,1,0.358,1048,5.559]],["name/1453",[527,60.485]],["parent/1453",[0,0,1,0.358,1048,5.559]],["name/1454",[1039,70.498]],["parent/1454",[0,0,1,0.358,1048,5.559]],["name/1455",[974,61.6]],["parent/1455",[0,0,1,0.358,2,1.721]],["name/1456",[49,28.997]],["parent/1456",[0,0,1,0.358,1053,8.162]],["name/1457",[1054,70.498]],["parent/1457",[0,0,1,0.358,2,1.721]],["name/1458",[49,28.997]],["parent/1458",[0,0,1,0.358,1055,8.162]],["name/1459",[1056,78.994]],["parent/1459",[0,0,1,0.358,2,1.721]],["name/1460",[974,61.6]],["parent/1460",[0,0,1,0.358,1057,5.403]],["name/1461",[1054,70.498]],["parent/1461",[0,0,1,0.358,1057,5.403]],["name/1462",[1058,70.498]],["parent/1462",[0,0,1,0.358,1057,5.403]],["name/1463",[992,61.6]],["parent/1463",[0,0,1,0.358,1057,5.403]],["name/1464",[965,61.6]],["parent/1464",[0,0,1,0.358,1057,5.403]],["name/1465",[958,61.6]],["parent/1465",[0,0,1,0.358,1057,5.403]],["name/1466",[961,61.6]],["parent/1466",[0,0,1,0.358,1057,5.403]],["name/1467",[962,61.6]],["parent/1467",[0,0,1,0.358,1057,5.403]],["name/1468",[990,61.6]],["parent/1468",[0,0,1,0.358,1057,5.403]],["name/1469",[991,60.485]],["parent/1469",[0,0,1,0.358,1057,5.403]],["name/1470",[964,61.6]],["parent/1470",[0,0,1,0.358,1057,5.403]],["name/1471",[951,61.6]],["parent/1471",[0,0,1,0.358,1057,5.403]],["name/1472",[1059,70.498]],["parent/1472",[0,0,1,0.358,1057,5.403]],["name/1473",[966,61.6]],["parent/1473",[0,0,1,0.358,1057,5.403]],["name/1474",[1060,70.498]],["parent/1474",[0,0,1,0.358,1057,5.403]],["name/1475",[203,59.481]],["parent/1475",[0,0,1,0.358,1057,5.403]],["name/1476",[1061,70.498]],["parent/1476",[0,0,1,0.358,1057,5.403]],["name/1477",[1062,70.498]],["parent/1477",[0,0,1,0.358,1057,5.403]],["name/1478",[1063,70.498]],["parent/1478",[0,0,1,0.358,1057,5.403]],["name/1479",[1064,70.498]],["parent/1479",[0,0,1,0.358,1057,5.403]],["name/1480",[1065,70.498]],["parent/1480",[0,0,1,0.358,1057,5.403]],["name/1481",[1058,70.498]],["parent/1481",[0,0,1,0.358,2,1.721]],["name/1482",[49,28.997]],["parent/1482",[0,0,1,0.358,1066,8.162]],["name/1483",[992,61.6]],["parent/1483",[0,0,1,0.358,2,1.721]],["name/1484",[49,28.997]],["parent/1484",[0,0,1,0.358,1067,8.162]],["name/1485",[965,61.6]],["parent/1485",[0,0,1,0.358,2,1.721]],["name/1486",[49,28.997]],["parent/1486",[0,0,1,0.358,1068,8.162]],["name/1487",[958,61.6]],["parent/1487",[0,0,1,0.358,2,1.721]],["name/1488",[49,28.997]],["parent/1488",[0,0,1,0.358,1069,8.162]],["name/1489",[961,61.6]],["parent/1489",[0,0,1,0.358,2,1.721]],["name/1490",[49,28.997]],["parent/1490",[0,0,1,0.358,1070,8.162]],["name/1491",[962,61.6]],["parent/1491",[0,0,1,0.358,2,1.721]],["name/1492",[49,28.997]],["parent/1492",[0,0,1,0.358,1071,8.162]],["name/1493",[990,61.6]],["parent/1493",[0,0,1,0.358,2,1.721]],["name/1494",[49,28.997]],["parent/1494",[0,0,1,0.358,1072,8.162]],["name/1495",[991,60.485]],["parent/1495",[0,0,1,0.358,2,1.721]],["name/1496",[49,28.997]],["parent/1496",[0,0,1,0.358,1073,8.162]],["name/1497",[964,61.6]],["parent/1497",[0,0,1,0.358,2,1.721]],["name/1498",[49,28.997]],["parent/1498",[0,0,1,0.358,1074,8.162]],["name/1499",[951,61.6]],["parent/1499",[0,0,1,0.358,2,1.721]],["name/1500",[49,28.997]],["parent/1500",[0,0,1,0.358,1075,8.162]],["name/1501",[1059,70.498]],["parent/1501",[0,0,1,0.358,2,1.721]],["name/1502",[49,28.997]],["parent/1502",[0,0,1,0.358,1076,8.162]],["name/1503",[966,61.6]],["parent/1503",[0,0,1,0.358,2,1.721]],["name/1504",[49,28.997]],["parent/1504",[0,0,1,0.358,1077,8.162]],["name/1505",[1060,70.498]],["parent/1505",[0,0,1,0.358,2,1.721]],["name/1506",[49,28.997]],["parent/1506",[0,0,1,0.358,1078,8.162]],["name/1507",[203,59.481]],["parent/1507",[0,0,1,0.358,2,1.721]],["name/1508",[49,28.997]],["parent/1508",[0,0,1,0.358,1079,8.162]],["name/1509",[1061,70.498]],["parent/1509",[0,0,1,0.358,2,1.721]],["name/1510",[49,28.997]],["parent/1510",[0,0,1,0.358,1080,8.162]],["name/1511",[1062,70.498]],["parent/1511",[0,0,1,0.358,2,1.721]],["name/1512",[49,28.997]],["parent/1512",[0,0,1,0.358,1081,8.162]],["name/1513",[1063,70.498]],["parent/1513",[0,0,1,0.358,2,1.721]],["name/1514",[49,28.997]],["parent/1514",[0,0,1,0.358,1082,8.162]],["name/1515",[1064,70.498]],["parent/1515",[0,0,1,0.358,2,1.721]],["name/1516",[49,28.997]],["parent/1516",[0,0,1,0.358,1083,8.162]],["name/1517",[1065,70.498]],["parent/1517",[0,0,1,0.358,2,1.721]],["name/1518",[49,28.997]],["parent/1518",[0,0,1,0.358,1084,8.162]],["name/1519",[1085,78.994]],["parent/1519",[0,0,1,0.358,2,1.721]],["name/1520",[7,49.468]],["parent/1520",[0,0,1,0.358,1086,5.311]],["name/1521",[59,60.485]],["parent/1521",[0,0,1,0.358,1086,5.311]],["name/1522",[1087,70.498]],["parent/1522",[0,0,1,0.358,1086,5.311]],["name/1523",[1088,70.498]],["parent/1523",[0,0,1,0.358,1086,5.311]],["name/1524",[1089,70.498]],["parent/1524",[0,0,1,0.358,1086,5.311]],["name/1525",[1090,70.498]],["parent/1525",[0,0,1,0.358,1086,5.311]],["name/1526",[1091,70.498]],["parent/1526",[0,0,1,0.358,1086,5.311]],["name/1527",[1092,70.498]],["parent/1527",[0,0,1,0.358,1086,5.311]],["name/1528",[62,67.978]],["parent/1528",[0,0,1,0.358,1086,5.311]],["name/1529",[49,28.997]],["parent/1529",[0,0,1,0.358,1086,5.311]],["name/1530",[61,65.965]],["parent/1530",[0,0,1,0.358,1086,5.311]],["name/1531",[49,28.997]],["parent/1531",[0,0,1,0.358,1086,5.311]],["name/1532",[1093,70.498]],["parent/1532",[0,0,1,0.358,1086,5.311]],["name/1533",[37,62.855]],["parent/1533",[0,0,1,0.358,1086,5.311]],["name/1534",[63,65.965]],["parent/1534",[0,0,1,0.358,1086,5.311]],["name/1535",[1094,70.498]],["parent/1535",[0,0,1,0.358,1086,5.311]],["name/1536",[82,64.29]],["parent/1536",[0,0,1,0.358,1086,5.311]],["name/1537",[1050,64.29]],["parent/1537",[0,0,1,0.358,1086,5.311]],["name/1538",[682,59.481]],["parent/1538",[0,0,1,0.358,1086,5.311]],["name/1539",[1051,64.29]],["parent/1539",[0,0,1,0.358,1086,5.311]],["name/1540",[1004,59.481]],["parent/1540",[0,0,1,0.358,1086,5.311]],["name/1541",[49,28.997]],["parent/1541",[0,0,1,0.358,1086,5.311]],["name/1542",[1052,65.965]],["parent/1542",[0,0,1,0.358,1086,5.311]],["name/1543",[1095,78.994]],["parent/1543",[0,0,1,0.358,2,1.721]],["name/1544",[1096,73.872]],["parent/1544",[0,0,1,0.358,1097,4.747]],["name/1545",[1098,73.872]],["parent/1545",[0,0,1,0.358,1097,4.747]],["name/1546",[1099,73.872]],["parent/1546",[0,0,1,0.358,1097,4.747]],["name/1547",[1100,73.872]],["parent/1547",[0,0,1,0.358,1097,4.747]],["name/1548",[1101,73.872]],["parent/1548",[0,0,1,0.358,1097,4.747]],["name/1549",[1102,73.872]],["parent/1549",[0,0,1,0.358,1097,4.747]],["name/1550",[1103,73.872]],["parent/1550",[0,0,1,0.358,1097,4.747]],["name/1551",[1104,73.872]],["parent/1551",[0,0,1,0.358,1097,4.747]],["name/1552",[1105,73.872]],["parent/1552",[0,0,1,0.358,1097,4.747]],["name/1553",[1106,73.872]],["parent/1553",[0,0,1,0.358,1097,4.747]],["name/1554",[1107,73.872]],["parent/1554",[0,0,1,0.358,1097,4.747]],["name/1555",[1108,73.872]],["parent/1555",[0,0,1,0.358,1097,4.747]],["name/1556",[1109,73.872]],["parent/1556",[0,0,1,0.358,1097,4.747]],["name/1557",[1110,73.872]],["parent/1557",[0,0,1,0.358,1097,4.747]],["name/1558",[1111,73.872]],["parent/1558",[0,0,1,0.358,1097,4.747]],["name/1559",[1112,73.872]],["parent/1559",[0,0,1,0.358,1097,4.747]],["name/1560",[1113,73.872]],["parent/1560",[0,0,1,0.358,1097,4.747]],["name/1561",[1114,73.872]],["parent/1561",[0,0,1,0.358,1097,4.747]],["name/1562",[279,67.978]],["parent/1562",[0,0,1,0.358,1097,4.747]],["name/1563",[1115,73.872]],["parent/1563",[0,0,1,0.358,1097,4.747]],["name/1564",[199,67.978]],["parent/1564",[0,0,1,0.358,1097,4.747]],["name/1565",[1116,73.872]],["parent/1565",[0,0,1,0.358,1097,4.747]],["name/1566",[1117,73.872]],["parent/1566",[0,0,1,0.358,1097,4.747]],["name/1567",[1118,73.872]],["parent/1567",[0,0,1,0.358,1097,4.747]],["name/1568",[1119,73.872]],["parent/1568",[0,0,1,0.358,1097,4.747]],["name/1569",[1120,73.872]],["parent/1569",[0,0,1,0.358,1097,4.747]],["name/1570",[1121,73.872]],["parent/1570",[0,0,1,0.358,1097,4.747]],["name/1571",[1122,73.872]],["parent/1571",[0,0,1,0.358,1097,4.747]],["name/1572",[1123,73.872]],["parent/1572",[0,0,1,0.358,1097,4.747]],["name/1573",[1124,73.872]],["parent/1573",[0,0,1,0.358,1097,4.747]],["name/1574",[1125,73.872]],["parent/1574",[0,0,1,0.358,1097,4.747]],["name/1575",[1126,73.872]],["parent/1575",[0,0,1,0.358,1097,4.747]],["name/1576",[1127,73.872]],["parent/1576",[0,0,1,0.358,1097,4.747]],["name/1577",[1128,73.872]],["parent/1577",[0,0,1,0.358,1097,4.747]],["name/1578",[1129,73.872]],["parent/1578",[0,0,1,0.358,1097,4.747]],["name/1579",[1130,73.872]],["parent/1579",[0,0,1,0.358,1097,4.747]],["name/1580",[1131,73.872]],["parent/1580",[0,0,1,0.358,1097,4.747]],["name/1581",[266,67.978]],["parent/1581",[0,0,1,0.358,1097,4.747]],["name/1582",[1132,73.872]],["parent/1582",[0,0,1,0.358,1097,4.747]],["name/1583",[1133,73.872]],["parent/1583",[0,0,1,0.358,1097,4.747]],["name/1584",[1134,78.994]],["parent/1584",[0,0,1,0.358,2,1.721]],["name/1585",[199,67.978]],["parent/1585",[0,0,1,0.358,1135,7.633]],["name/1586",[1116,73.872]],["parent/1586",[0,0,1,0.358,1135,7.633]],["name/1587",[1136,78.994]],["parent/1587",[0,0,1,0.358,2,1.721]],["name/1588",[1118,73.872]],["parent/1588",[0,0,1,0.358,1137,8.162]],["name/1589",[1138,78.994]],["parent/1589",[0,0,1,0.358,2,1.721]],["name/1590",[1123,73.872]],["parent/1590",[0,0,1,0.358,1139,6.495]],["name/1591",[1124,73.872]],["parent/1591",[0,0,1,0.358,1139,6.495]],["name/1592",[1125,73.872]],["parent/1592",[0,0,1,0.358,1139,6.495]],["name/1593",[1126,73.872]],["parent/1593",[0,0,1,0.358,1139,6.495]],["name/1594",[1127,73.872]],["parent/1594",[0,0,1,0.358,1139,6.495]],["name/1595",[1128,73.872]],["parent/1595",[0,0,1,0.358,1139,6.495]],["name/1596",[1129,73.872]],["parent/1596",[0,0,1,0.358,1139,6.495]],["name/1597",[1140,78.994]],["parent/1597",[0,0,1,0.358,2,1.721]],["name/1598",[1096,73.872]],["parent/1598",[0,0,1,0.358,1141,5.886]],["name/1599",[1098,73.872]],["parent/1599",[0,0,1,0.358,1141,5.886]],["name/1600",[1099,73.872]],["parent/1600",[0,0,1,0.358,1141,5.886]],["name/1601",[1100,73.872]],["parent/1601",[0,0,1,0.358,1141,5.886]],["name/1602",[1101,73.872]],["parent/1602",[0,0,1,0.358,1141,5.886]],["name/1603",[1102,73.872]],["parent/1603",[0,0,1,0.358,1141,5.886]],["name/1604",[1103,73.872]],["parent/1604",[0,0,1,0.358,1141,5.886]],["name/1605",[1104,73.872]],["parent/1605",[0,0,1,0.358,1141,5.886]],["name/1606",[1105,73.872]],["parent/1606",[0,0,1,0.358,1141,5.886]],["name/1607",[1106,73.872]],["parent/1607",[0,0,1,0.358,1141,5.886]],["name/1608",[1107,73.872]],["parent/1608",[0,0,1,0.358,1141,5.886]],["name/1609",[1108,73.872]],["parent/1609",[0,0,1,0.358,1141,5.886]],["name/1610",[1109,73.872]],["parent/1610",[0,0,1,0.358,1141,5.886]],["name/1611",[1142,78.994]],["parent/1611",[0,0,1,0.358,2,1.721]],["name/1612",[1119,73.872]],["parent/1612",[0,0,1,0.358,1143,7.024]],["name/1613",[1120,73.872]],["parent/1613",[0,0,1,0.358,1143,7.024]],["name/1614",[1121,73.872]],["parent/1614",[0,0,1,0.358,1143,7.024]],["name/1615",[1122,73.872]],["parent/1615",[0,0,1,0.358,1143,7.024]],["name/1616",[1144,78.994]],["parent/1616",[0,0,1,0.358,2,1.721]],["name/1617",[1110,73.872]],["parent/1617",[0,0,1,0.358,1145,7.633]],["name/1618",[1111,73.872]],["parent/1618",[0,0,1,0.358,1145,7.633]],["name/1619",[1146,78.994]],["parent/1619",[0,0,1,0.358,2,1.721]],["name/1620",[1117,73.872]],["parent/1620",[0,0,1,0.358,1147,8.162]],["name/1621",[1148,78.994]],["parent/1621",[0,0,1,0.358,2,1.721]],["name/1622",[1115,73.872]],["parent/1622",[0,0,1,0.358,1149,8.162]],["name/1623",[1150,78.994]],["parent/1623",[0,0,1,0.358,2,1.721]],["name/1624",[1112,73.872]],["parent/1624",[0,0,1,0.358,1151,7.024]],["name/1625",[1113,73.872]],["parent/1625",[0,0,1,0.358,1151,7.024]],["name/1626",[1114,73.872]],["parent/1626",[0,0,1,0.358,1151,7.024]],["name/1627",[279,67.978]],["parent/1627",[0,0,1,0.358,1151,7.024]],["name/1628",[1152,78.994]],["parent/1628",[0,0,1,0.358,2,1.721]],["name/1629",[1130,73.872]],["parent/1629",[0,0,1,0.358,1153,7.284]],["name/1630",[1131,73.872]],["parent/1630",[0,0,1,0.358,1153,7.284]],["name/1631",[266,67.978]],["parent/1631",[0,0,1,0.358,1153,7.284]],["name/1632",[1154,78.994]],["parent/1632",[0,0,1,0.358,2,1.721]],["name/1633",[1132,73.872]],["parent/1633",[0,0,1,0.358,1155,7.633]],["name/1634",[1133,73.872]],["parent/1634",[0,0,1,0.358,1155,7.633]],["name/1635",[1156,78.994]],["parent/1635",[0,0,1,0.358,2,1.721]],["name/1636",[1157,78.994]],["parent/1636",[0,0,1,0.358,1158,6.816]],["name/1637",[1159,78.994]],["parent/1637",[0,0,1,0.358,1158,6.816]],["name/1638",[1160,78.994]],["parent/1638",[0,0,1,0.358,1158,6.816]],["name/1639",[1161,78.994]],["parent/1639",[0,0,1,0.358,1158,6.816]],["name/1640",[49,28.997]],["parent/1640",[0,0,1,0.358,1158,6.816]],["name/1641",[1162,78.994]],["parent/1641",[0,0,1,0.358,2,1.721]],["name/1642",[1163,78.994]],["parent/1642",[0,0,1,0.358,1164,6.816]],["name/1643",[778,70.498]],["parent/1643",[0,0,1,0.358,1164,6.816]],["name/1644",[1165,73.872]],["parent/1644",[0,0,1,0.358,1164,6.816]],["name/1645",[1166,78.994]],["parent/1645",[0,0,1,0.358,1164,6.816]],["name/1646",[1167,73.872]],["parent/1646",[0,0,1,0.358,1164,6.816]],["name/1647",[1168,78.994]],["parent/1647",[0,0,1,0.358,2,1.721]],["name/1648",[1169,78.994]],["parent/1648",[0,0,1,0.358,1170,5.356]],["name/1649",[49,28.997]],["parent/1649",[0,0,1,0.358,1170,5.356]],["name/1650",[1171,73.872]],["parent/1650",[0,0,1,0.358,1170,5.356]],["name/1651",[49,28.997]],["parent/1651",[0,0,1,0.358,1170,5.356]],["name/1652",[1172,78.994]],["parent/1652",[0,0,1,0.358,1170,5.356]],["name/1653",[49,28.997]],["parent/1653",[0,0,1,0.358,1170,5.356]],["name/1654",[1173,78.994]],["parent/1654",[0,0,1,0.358,1170,5.356]],["name/1655",[49,28.997]],["parent/1655",[0,0,1,0.358,1170,5.356]],["name/1656",[1174,78.994]],["parent/1656",[0,0,1,0.358,1170,5.356]],["name/1657",[49,28.997]],["parent/1657",[0,0,1,0.358,1170,5.356]],["name/1658",[1175,78.994]],["parent/1658",[0,0,1,0.358,1170,5.356]],["name/1659",[49,28.997]],["parent/1659",[0,0,1,0.358,1170,5.356]],["name/1660",[1176,78.994]],["parent/1660",[0,0,1,0.358,1170,5.356]],["name/1661",[49,28.997]],["parent/1661",[0,0,1,0.358,1170,5.356]],["name/1662",[1177,78.994]],["parent/1662",[0,0,1,0.358,1170,5.356]],["name/1663",[49,28.997]],["parent/1663",[0,0,1,0.358,1170,5.356]],["name/1664",[1178,78.994]],["parent/1664",[0,0,1,0.358,1170,5.356]],["name/1665",[49,28.997]],["parent/1665",[0,0,1,0.358,1170,5.356]],["name/1666",[1179,78.994]],["parent/1666",[0,0,1,0.358,1170,5.356]],["name/1667",[49,28.997]],["parent/1667",[0,0,1,0.358,1170,5.356]],["name/1668",[1180,78.994]],["parent/1668",[0,0,1,0.358,1170,5.356]],["name/1669",[49,28.997]],["parent/1669",[0,0,1,0.358,1170,5.356]],["name/1670",[1181,78.994]],["parent/1670",[0,0,1,0.358,2,1.721]],["name/1671",[1182,78.994]],["parent/1671",[0,0,1,0.358,1183,6.495]],["name/1672",[198,70.498]],["parent/1672",[0,0,1,0.358,1183,6.495]],["name/1673",[1184,78.994]],["parent/1673",[0,0,1,0.358,1183,6.495]],["name/1674",[1185,78.994]],["parent/1674",[0,0,1,0.358,1183,6.495]],["name/1675",[1186,78.994]],["parent/1675",[0,0,1,0.358,1183,6.495]],["name/1676",[1187,78.994]],["parent/1676",[0,0,1,0.358,1183,6.495]],["name/1677",[1188,78.994]],["parent/1677",[0,0,1,0.358,1183,6.495]],["name/1678",[1189,78.994]],["parent/1678",[0,0,1,0.358,2,1.721]],["name/1679",[1190,78.994]],["parent/1679",[0,0,1,0.358,1191,6.816]],["name/1680",[1192,73.872]],["parent/1680",[0,0,1,0.358,1191,6.816]],["name/1681",[1193,73.872]],["parent/1681",[0,0,1,0.358,1191,6.816]],["name/1682",[1194,70.498]],["parent/1682",[0,0,1,0.358,1191,6.816]],["name/1683",[1195,70.498]],["parent/1683",[0,0,1,0.358,1191,6.816]],["name/1684",[1196,78.994]],["parent/1684",[0,0,1,0.358,2,1.721]],["name/1685",[1197,73.872]],["parent/1685",[0,0,1,0.358,1198,6.052]],["name/1686",[1199,73.872]],["parent/1686",[0,0,1,0.358,1198,6.052]],["name/1687",[1200,73.872]],["parent/1687",[0,0,1,0.358,1198,6.052]],["name/1688",[1201,78.994]],["parent/1688",[0,0,1,0.358,1198,6.052]],["name/1689",[1202,78.994]],["parent/1689",[0,0,1,0.358,1198,6.052]],["name/1690",[1203,78.994]],["parent/1690",[0,0,1,0.358,1198,6.052]],["name/1691",[1204,78.994]],["parent/1691",[0,0,1,0.358,1198,6.052]],["name/1692",[1205,78.994]],["parent/1692",[0,0,1,0.358,1198,6.052]],["name/1693",[1206,78.994]],["parent/1693",[0,0,1,0.358,1198,6.052]],["name/1694",[1207,78.994]],["parent/1694",[0,0,1,0.358,1198,6.052]],["name/1695",[1208,78.994]],["parent/1695",[0,0,1,0.358,1198,6.052]],["name/1696",[1209,78.994]],["parent/1696",[0,0,1,0.358,2,1.721]],["name/1697",[1210,78.994]],["parent/1697",[0,0,1,0.358,1211,6.495]],["name/1698",[1212,78.994]],["parent/1698",[0,0,1,0.358,1211,6.495]],["name/1699",[1213,78.994]],["parent/1699",[0,0,1,0.358,1211,6.495]],["name/1700",[1214,73.872]],["parent/1700",[0,0,1,0.358,1211,6.495]],["name/1701",[1215,59.481]],["parent/1701",[0,0,1,0.358,1211,6.495]],["name/1702",[1216,78.994]],["parent/1702",[0,0,1,0.358,1211,6.495]],["name/1703",[1217,78.994]],["parent/1703",[0,0,1,0.358,1211,6.495]],["name/1704",[1218,78.994]],["parent/1704",[0,0,1,0.358,2,1.721]],["name/1705",[32,53.274]],["parent/1705",[0,0,1,0.358,1219,7.284]],["name/1706",[1220,67.978]],["parent/1706",[0,0,1,0.358,1219,7.284]],["name/1707",[1221,67.978]],["parent/1707",[0,0,1,0.358,1219,7.284]],["name/1708",[1222,78.994]],["parent/1708",[0,0,1,0.358,2,1.721]],["name/1709",[32,53.274]],["parent/1709",[0,0,1,0.358,1223,7.284]],["name/1710",[1220,67.978]],["parent/1710",[0,0,1,0.358,1223,7.284]],["name/1711",[1221,67.978]],["parent/1711",[0,0,1,0.358,1223,7.284]],["name/1712",[39,73.872]],["parent/1712",[0,0,1,0.358,2,1.721]],["name/1713",[316,61.6]],["parent/1713",[0,0,1,0.358,1224,6.643]],["name/1714",[840,73.872]],["parent/1714",[0,0,1,0.358,1224,6.643]],["name/1715",[1225,70.498]],["parent/1715",[0,0,1,0.358,1224,6.643]],["name/1716",[32,53.274]],["parent/1716",[0,0,1,0.358,1224,6.643]],["name/1717",[1220,67.978]],["parent/1717",[0,0,1,0.358,1224,6.643]],["name/1718",[1221,67.978]],["parent/1718",[0,0,1,0.358,1224,6.643]],["name/1719",[42,73.872]],["parent/1719",[0,0,1,0.358,2,1.721]],["name/1720",[190,59.481]],["parent/1720",[0,0,1,0.358,1226,7.024]],["name/1721",[32,53.274]],["parent/1721",[0,0,1,0.358,1226,7.024]],["name/1722",[1220,67.978]],["parent/1722",[0,0,1,0.358,1226,7.024]],["name/1723",[1221,67.978]],["parent/1723",[0,0,1,0.358,1226,7.024]],["name/1724",[627,67.978]],["parent/1724",[0,0,1,0.358,2,1.721]],["name/1725",[1227,78.994]],["parent/1725",[0,0,1,0.358,2,1.721]],["name/1726",[179,60.485]],["parent/1726",[0,0,1,0.358,1228,7.284]],["name/1727",[1229,78.994]],["parent/1727",[0,0,1,0.358,1228,7.284]],["name/1728",[1230,78.994]],["parent/1728",[0,0,1,0.358,1228,7.284]],["name/1729",[1231,78.994]],["parent/1729",[0,0,1,0.358,2,1.721]],["name/1730",[49,28.997]],["parent/1730",[0,0,1,0.358,1232,8.162]],["name/1731",[1233,78.994]],["parent/1731",[0,0,1,0.358,2,1.721]],["name/1732",[1234,78.994]],["parent/1732",[0,0,1,0.358,2,1.721]],["name/1733",[49,28.997]],["parent/1733",[0,0,1,0.358,1235,8.162]],["name/1734",[1236,78.994]],["parent/1734",[0,0,1,0.358,2,1.721]],["name/1735",[1237,78.994]],["parent/1735",[0,0,1,0.358,2,1.721]],["name/1736",[49,28.997]],["parent/1736",[0,0,1,0.358,1238,8.162]],["name/1737",[1239,78.994]],["parent/1737",[0,0,1,0.358,2,1.721]],["name/1738",[1240,78.994]],["parent/1738",[0,0,1,0.358,2,1.721]],["name/1739",[1241,78.994]],["parent/1739",[0,0,1,0.358,2,1.721]],["name/1740",[1242,78.994]],["parent/1740",[0,0,1,0.358,2,1.721]],["name/1741",[49,28.997]],["parent/1741",[0,0,1,0.358,1243,8.162]],["name/1742",[1244,78.994]],["parent/1742",[0,0,1,0.358,2,1.721]],["name/1743",[391,73.872]],["parent/1743",[0,0,1,0.358,1245,7.633]],["name/1744",[1246,78.994]],["parent/1744",[0,0,1,0.358,1245,7.633]],["name/1745",[1247,78.994]],["parent/1745",[0,0,1,0.358,2,1.721]],["name/1746",[1050,64.29]],["parent/1746",[0,0,1,0.358,2,1.721]],["name/1747",[49,28.997]],["parent/1747",[0,0,1,0.358,1248,8.162]],["name/1748",[1051,64.29]],["parent/1748",[0,0,1,0.358,2,1.721]],["name/1749",[49,28.997]],["parent/1749",[0,0,1,0.358,1249,8.162]],["name/1750",[1250,78.994]],["parent/1750",[0,0,1,0.358,2,1.721]],["name/1751",[1251,78.994]],["parent/1751",[0,0,1,0.358,2,1.721]],["name/1752",[32,53.274]],["parent/1752",[0,0,1,0.358,1252,7.284]],["name/1753",[1253,62.855]],["parent/1753",[0,0,1,0.358,1252,7.284]],["name/1754",[1254,62.855]],["parent/1754",[0,0,1,0.358,1252,7.284]],["name/1755",[1255,78.994]],["parent/1755",[0,0,1,0.358,2,1.721]],["name/1756",[664,67.978]],["parent/1756",[0,0,1,0.358,1256,7.024]],["name/1757",[32,53.274]],["parent/1757",[0,0,1,0.358,1256,7.024]],["name/1758",[1253,62.855]],["parent/1758",[0,0,1,0.358,1256,7.024]],["name/1759",[1254,62.855]],["parent/1759",[0,0,1,0.358,1256,7.024]],["name/1760",[1257,78.994]],["parent/1760",[0,0,1,0.358,2,1.721]],["name/1761",[664,67.978]],["parent/1761",[0,0,1,0.358,1258,6.643]],["name/1762",[1259,78.994]],["parent/1762",[0,0,1,0.358,1258,6.643]],["name/1763",[1260,78.994]],["parent/1763",[0,0,1,0.358,1258,6.643]],["name/1764",[32,53.274]],["parent/1764",[0,0,1,0.358,1258,6.643]],["name/1765",[1253,62.855]],["parent/1765",[0,0,1,0.358,1258,6.643]],["name/1766",[1254,62.855]],["parent/1766",[0,0,1,0.358,1258,6.643]],["name/1767",[1261,78.994]],["parent/1767",[0,0,1,0.358,2,1.721]],["name/1768",[664,67.978]],["parent/1768",[0,0,1,0.358,1262,7.024]],["name/1769",[32,53.274]],["parent/1769",[0,0,1,0.358,1262,7.024]],["name/1770",[1253,62.855]],["parent/1770",[0,0,1,0.358,1262,7.024]],["name/1771",[1254,62.855]],["parent/1771",[0,0,1,0.358,1262,7.024]],["name/1772",[1263,78.994]],["parent/1772",[0,0,1,0.358,2,1.721]],["name/1773",[1264,78.994]],["parent/1773",[0,0,1,0.358,1265,6.643]],["name/1774",[1266,78.994]],["parent/1774",[0,0,1,0.358,1265,6.643]],["name/1775",[1267,78.994]],["parent/1775",[0,0,1,0.358,1265,6.643]],["name/1776",[32,53.274]],["parent/1776",[0,0,1,0.358,1265,6.643]],["name/1777",[1253,62.855]],["parent/1777",[0,0,1,0.358,1265,6.643]],["name/1778",[1254,62.855]],["parent/1778",[0,0,1,0.358,1265,6.643]],["name/1779",[1268,78.994]],["parent/1779",[0,0,1,0.358,2,1.721]],["name/1780",[1269,78.994]],["parent/1780",[0,0,1,0.358,1270,7.024]],["name/1781",[32,53.274]],["parent/1781",[0,0,1,0.358,1270,7.024]],["name/1782",[1253,62.855]],["parent/1782",[0,0,1,0.358,1270,7.024]],["name/1783",[1254,62.855]],["parent/1783",[0,0,1,0.358,1270,7.024]],["name/1784",[1271,78.994]],["parent/1784",[0,0,1,0.358,2,1.721]],["name/1785",[1272,78.994]],["parent/1785",[0,0,1,0.358,2,1.721]],["name/1786",[1273,78.994]],["parent/1786",[0,0,1,0.358,1274,6.816]],["name/1787",[49,28.997]],["parent/1787",[0,0,1,0.358,1274,6.816]],["name/1788",[32,53.274]],["parent/1788",[0,0,1,0.358,1274,6.816]],["name/1789",[1253,62.855]],["parent/1789",[0,0,1,0.358,1274,6.816]],["name/1790",[1254,62.855]],["parent/1790",[0,0,1,0.358,1274,6.816]],["name/1791",[1275,78.994]],["parent/1791",[0,0,1,0.358,2,1.721]],["name/1792",[1276,78.994]],["parent/1792",[0,0,1,0.358,2,1.721]],["name/1793",[49,28.997]],["parent/1793",[0,0,1,0.358,1277,8.162]],["name/1794",[1278,78.994]],["parent/1794",[0,0,1,0.317,2,1.524,3,4.275]],["name/1795",[155,65.965]],["parent/1795",[0,0,1,0.317,2,1.524,1279,6.451]],["name/1796",[197,73.872]],["parent/1796",[0,0,1,0.317,2,1.524,1279,6.451]],["name/1797",[157,65.965]],["parent/1797",[0,0,1,0.317,2,1.524,1279,6.451]],["name/1798",[1280,78.994]],["parent/1798",[0,0,1,0.317,2,1.524,3,4.275]],["name/1799",[419,67.978]],["parent/1799",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1800",[444,73.872]],["parent/1800",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1801",[445,73.872]],["parent/1801",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1802",[446,73.872]],["parent/1802",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1803",[447,73.872]],["parent/1803",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1804",[448,73.872]],["parent/1804",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1805",[449,73.872]],["parent/1805",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1806",[450,73.872]],["parent/1806",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1807",[451,73.872]],["parent/1807",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1808",[452,73.872]],["parent/1808",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1809",[441,67.978]],["parent/1809",[0,0,1,0.317,2,1.524,1281,5.359]],["name/1810",[1282,78.994]],["parent/1810",[0,0,1,0.317,2,1.524,3,4.275]],["name/1811",[296,73.872]],["parent/1811",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1812",[298,73.872]],["parent/1812",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1813",[299,73.872]],["parent/1813",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1814",[300,73.872]],["parent/1814",[0,0,1,0.317,2,1.524,1283,6.22]],["name/1815",[1284,78.994]],["parent/1815",[0,0,1,0.317,2,1.524,3,4.275]],["name/1816",[199,67.978]],["parent/1816",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1817",[92,65.965]],["parent/1817",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1818",[201,50.583]],["parent/1818",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1819",[202,70.498]],["parent/1819",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1820",[122,58.569]],["parent/1820",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1821",[203,59.481]],["parent/1821",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1822",[93,67.978]],["parent/1822",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1823",[204,73.872]],["parent/1823",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1824",[205,67.978]],["parent/1824",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1825",[206,73.872]],["parent/1825",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1826",[207,73.872]],["parent/1826",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1827",[208,67.978]],["parent/1827",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1828",[209,73.872]],["parent/1828",[0,0,1,0.317,2,1.524,1285,5.212]],["name/1829",[1286,78.994]],["parent/1829",[0,0,1,0.317,2,1.524,3,4.275]],["name/1830",[353,73.872]],["parent/1830",[0,0,1,0.317,2,1.524,1287,6.451]],["name/1831",[355,65.965]],["parent/1831",[0,0,1,0.317,2,1.524,1287,6.451]],["name/1832",[356,73.872]],["parent/1832",[0,0,1,0.317,2,1.524,1287,6.451]],["name/1833",[1288,78.994]],["parent/1833",[0,0,1,0.317,2,1.524,3,4.275]],["name/1834",[211,73.872]],["parent/1834",[0,0,1,0.317,2,1.524,1289,6.759]],["name/1835",[213,73.872]],["parent/1835",[0,0,1,0.317,2,1.524,1289,6.759]],["name/1836",[1290,78.994]],["parent/1836",[0,0,1,0.317,2,1.524,3,4.275]],["name/1837",[215,67.978]],["parent/1837",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1838",[153,60.485]],["parent/1838",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1839",[217,73.872]],["parent/1839",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1840",[218,73.872]],["parent/1840",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1841",[219,73.872]],["parent/1841",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1842",[175,59.481]],["parent/1842",[0,0,1,0.317,2,1.524,1291,5.883]],["name/1843",[1292,78.994]],["parent/1843",[0,0,1,0.317,2,1.524,3,4.275]],["name/1844",[182,60.485]],["parent/1844",[0,0,1,0.317,2,1.524,1293,6.759]],["name/1845",[190,59.481]],["parent/1845",[0,0,1,0.317,2,1.524,1293,6.759]],["name/1846",[1294,78.994]],["parent/1846",[0,0,1,0.317,2,1.524,3,4.275]],["name/1847",[192,67.978]],["parent/1847",[0,0,1,0.317,2,1.524,1295,6.759]],["name/1848",[194,67.978]],["parent/1848",[0,0,1,0.317,2,1.524,1295,6.759]],["name/1849",[1296,78.994]],["parent/1849",[0,0,1,0.317,2,1.524,3,4.275]],["name/1850",[221,73.872]],["parent/1850",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1851",[223,73.872]],["parent/1851",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1852",[224,73.872]],["parent/1852",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1853",[225,73.872]],["parent/1853",[0,0,1,0.317,2,1.524,1297,6.22]],["name/1854",[1298,78.994]],["parent/1854",[0,0,1,0.317,2,1.524,3,4.275]],["name/1855",[454,73.872]],["parent/1855",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1856",[456,73.872]],["parent/1856",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1857",[457,73.872]],["parent/1857",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1858",[458,73.872]],["parent/1858",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1859",[459,73.872]],["parent/1859",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1860",[460,73.872]],["parent/1860",[0,0,1,0.317,2,1.524,1299,5.883]],["name/1861",[1300,78.994]],["parent/1861",[0,0,1,0.317,2,1.524,3,4.275]],["name/1862",[227,73.872]],["parent/1862",[0,0,1,0.317,2,1.524,1301,6.759]],["name/1863",[229,73.872]],["parent/1863",[0,0,1,0.317,2,1.524,1301,6.759]],["name/1864",[1302,78.994]],["parent/1864",[0,0,1,0.317,2,1.524,3,4.275]],["name/1865",[231,73.872]],["parent/1865",[0,0,1,0.317,2,1.524,1303,6.759]],["name/1866",[233,73.872]],["parent/1866",[0,0,1,0.317,2,1.524,1303,6.759]],["name/1867",[1304,78.994]],["parent/1867",[0,0,1,0.317,2,1.524,3,4.275]],["name/1868",[85,73.872]],["parent/1868",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1869",[87,73.872]],["parent/1869",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1870",[88,65.965]],["parent/1870",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1871",[89,73.872]],["parent/1871",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1872",[90,73.872]],["parent/1872",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1873",[91,73.872]],["parent/1873",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1874",[92,65.965]],["parent/1874",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1875",[93,67.978]],["parent/1875",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1876",[94,70.498]],["parent/1876",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1877",[95,73.872]],["parent/1877",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1878",[96,67.978]],["parent/1878",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1879",[97,73.872]],["parent/1879",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1880",[98,73.872]],["parent/1880",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1881",[99,65.965]],["parent/1881",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1882",[100,60.485]],["parent/1882",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1883",[101,73.872]],["parent/1883",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1884",[102,73.872]],["parent/1884",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1885",[103,73.872]],["parent/1885",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1886",[104,70.498]],["parent/1886",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1887",[105,73.872]],["parent/1887",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1888",[106,70.498]],["parent/1888",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1889",[107,70.498]],["parent/1889",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1890",[108,73.872]],["parent/1890",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1891",[109,73.872]],["parent/1891",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1892",[110,73.872]],["parent/1892",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1893",[111,65.965]],["parent/1893",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1894",[112,73.872]],["parent/1894",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1895",[113,73.872]],["parent/1895",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1896",[114,73.872]],["parent/1896",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1897",[115,73.872]],["parent/1897",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1898",[116,64.29]],["parent/1898",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1899",[117,73.872]],["parent/1899",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1900",[118,73.872]],["parent/1900",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1901",[119,73.872]],["parent/1901",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1902",[120,73.872]],["parent/1902",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1903",[121,70.498]],["parent/1903",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1904",[122,58.569]],["parent/1904",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1905",[123,61.6]],["parent/1905",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1906",[124,73.872]],["parent/1906",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1907",[125,73.872]],["parent/1907",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1908",[126,67.978]],["parent/1908",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1909",[127,70.498]],["parent/1909",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1910",[128,70.498]],["parent/1910",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1911",[129,64.29]],["parent/1911",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1912",[130,58.569]],["parent/1912",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1913",[131,73.872]],["parent/1913",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1914",[132,73.872]],["parent/1914",[0,0,1,0.317,2,1.524,1305,4.058]],["name/1915",[1306,78.994]],["parent/1915",[0,0,1,0.317,2,1.524,3,4.275]],["name/1916",[134,73.872]],["parent/1916",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1917",[136,73.872]],["parent/1917",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1918",[137,73.872]],["parent/1918",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1919",[138,73.872]],["parent/1919",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1920",[139,54.949]],["parent/1920",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1921",[140,73.872]],["parent/1921",[0,0,1,0.317,2,1.524,1307,5.883]],["name/1922",[1308,78.994]],["parent/1922",[0,0,1,0.317,2,1.524,3,4.275]],["name/1923",[235,73.872]],["parent/1923",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1924",[237,73.872]],["parent/1924",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1925",[238,73.872]],["parent/1925",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1926",[239,73.872]],["parent/1926",[0,0,1,0.317,2,1.524,1309,6.22]],["name/1927",[1310,78.994]],["parent/1927",[0,0,1,0.317,2,1.524,3,4.275]],["name/1928",[241,73.872]],["parent/1928",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1929",[243,73.872]],["parent/1929",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1930",[244,65.965]],["parent/1930",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1931",[150,67.978]],["parent/1931",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1932",[245,73.872]],["parent/1932",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1933",[246,73.872]],["parent/1933",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1934",[247,73.872]],["parent/1934",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1935",[248,73.872]],["parent/1935",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1936",[249,73.872]],["parent/1936",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1937",[250,73.872]],["parent/1937",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1938",[251,73.872]],["parent/1938",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1939",[252,73.872]],["parent/1939",[0,0,1,0.317,2,1.524,1311,5.283]],["name/1940",[1312,78.994]],["parent/1940",[0,0,1,0.317,2,1.524,3,4.275]],["name/1941",[253,73.872]],["parent/1941",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1942",[255,73.872]],["parent/1942",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1943",[256,73.872]],["parent/1943",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1944",[208,67.978]],["parent/1944",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1945",[257,73.872]],["parent/1945",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1946",[258,73.872]],["parent/1946",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1947",[259,73.872]],["parent/1947",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1948",[260,73.872]],["parent/1948",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1949",[261,73.872]],["parent/1949",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1950",[262,73.872]],["parent/1950",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1951",[263,73.872]],["parent/1951",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1952",[264,73.872]],["parent/1952",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1953",[265,73.872]],["parent/1953",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1954",[266,67.978]],["parent/1954",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1955",[267,73.872]],["parent/1955",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1956",[268,73.872]],["parent/1956",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1957",[269,62.855]],["parent/1957",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1958",[270,73.872]],["parent/1958",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1959",[271,73.872]],["parent/1959",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1960",[272,73.872]],["parent/1960",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1961",[273,73.872]],["parent/1961",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1962",[274,73.872]],["parent/1962",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1963",[275,73.872]],["parent/1963",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1964",[276,73.872]],["parent/1964",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1965",[277,73.872]],["parent/1965",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1966",[278,73.872]],["parent/1966",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1967",[279,67.978]],["parent/1967",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1968",[280,73.872]],["parent/1968",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1969",[281,73.872]],["parent/1969",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1970",[282,73.872]],["parent/1970",[0,0,1,0.317,2,1.524,1313,4.464]],["name/1971",[1314,78.994]],["parent/1971",[0,0,1,0.317,2,1.524,3,4.275]],["name/1972",[284,67.978]],["parent/1972",[0,0,1,0.317,2,1.524,1315,6.759]],["name/1973",[286,67.978]],["parent/1973",[0,0,1,0.317,2,1.524,1315,6.759]],["name/1974",[1316,78.994]],["parent/1974",[0,0,1,0.317,2,1.524,3,4.275]],["name/1975",[288,73.872]],["parent/1975",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1976",[290,73.872]],["parent/1976",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1977",[291,73.872]],["parent/1977",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1978",[192,67.978]],["parent/1978",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1979",[292,73.872]],["parent/1979",[0,0,1,0.317,2,1.524,1317,6.036]],["name/1980",[1318,78.994]],["parent/1980",[0,0,1,0.317,2,1.524,3,4.275]],["name/1981",[302,64.29]],["parent/1981",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1982",[345,73.872]],["parent/1982",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1983",[346,73.872]],["parent/1983",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1984",[347,73.872]],["parent/1984",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1985",[348,73.872]],["parent/1985",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1986",[349,73.872]],["parent/1986",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1987",[350,73.872]],["parent/1987",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1988",[351,73.872]],["parent/1988",[0,0,1,0.317,2,1.524,1319,5.636]],["name/1989",[1320,78.994]],["parent/1989",[0,0,1,0.317,2,1.524,3,4.275]],["name/1990",[284,67.978]],["parent/1990",[0,0,1,0.317,2,1.524,1321,6.759]],["name/1991",[286,67.978]],["parent/1991",[0,0,1,0.317,2,1.524,1321,6.759]],["name/1992",[1322,78.994]],["parent/1992",[0,0,1,0.317,2,1.524,3,4.275]],["name/1993",[142,73.872]],["parent/1993",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1994",[144,73.872]],["parent/1994",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1995",[145,73.872]],["parent/1995",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1996",[146,73.872]],["parent/1996",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1997",[147,67.978]],["parent/1997",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1998",[148,73.872]],["parent/1998",[0,0,1,0.317,2,1.524,1323,4.275]],["name/1999",[149,70.498]],["parent/1999",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2000",[150,67.978]],["parent/2000",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2001",[151,73.872]],["parent/2001",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2002",[152,73.872]],["parent/2002",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2003",[153,60.485]],["parent/2003",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2004",[154,73.872]],["parent/2004",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2005",[155,65.965]],["parent/2005",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2006",[156,73.872]],["parent/2006",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2007",[157,65.965]],["parent/2007",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2008",[158,73.872]],["parent/2008",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2009",[159,73.872]],["parent/2009",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2010",[96,67.978]],["parent/2010",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2011",[160,73.872]],["parent/2011",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2012",[161,73.872]],["parent/2012",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2013",[162,73.872]],["parent/2013",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2014",[163,73.872]],["parent/2014",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2015",[164,73.872]],["parent/2015",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2016",[165,70.498]],["parent/2016",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2017",[166,73.872]],["parent/2017",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2018",[167,73.872]],["parent/2018",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2019",[168,73.872]],["parent/2019",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2020",[169,73.872]],["parent/2020",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2021",[170,73.872]],["parent/2021",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2022",[171,73.872]],["parent/2022",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2023",[172,73.872]],["parent/2023",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2024",[173,73.872]],["parent/2024",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2025",[174,67.978]],["parent/2025",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2026",[175,59.481]],["parent/2026",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2027",[176,73.872]],["parent/2027",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2028",[177,73.872]],["parent/2028",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2029",[147,67.978]],["parent/2029",[0,0,1,0.317,2,1.524,1323,4.275]],["name/2030",[1324,78.994]],["parent/2030",[0,0,1,0.317,2,1.524,3,4.275]],["name/2031",[302,64.29]],["parent/2031",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2032",[359,73.872]],["parent/2032",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2033",[360,73.872]],["parent/2033",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2034",[361,73.872]],["parent/2034",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2035",[362,73.872]],["parent/2035",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2036",[363,73.872]],["parent/2036",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2037",[364,73.872]],["parent/2037",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2038",[365,73.872]],["parent/2038",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2039",[366,73.872]],["parent/2039",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2040",[367,73.872]],["parent/2040",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2041",[368,73.872]],["parent/2041",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2042",[369,73.872]],["parent/2042",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2043",[370,73.872]],["parent/2043",[0,0,1,0.317,2,1.524,1325,5.212]],["name/2044",[1326,78.994]],["parent/2044",[0,0,1,0.317,2,1.524,3,4.275]],["name/2045",[372,73.872]],["parent/2045",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2046",[374,73.872]],["parent/2046",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2047",[375,73.872]],["parent/2047",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2048",[376,73.872]],["parent/2048",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2049",[377,73.872]],["parent/2049",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2050",[378,73.872]],["parent/2050",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2051",[379,67.978]],["parent/2051",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2052",[380,73.872]],["parent/2052",[0,0,1,0.317,2,1.524,1327,5.636]],["name/2053",[1328,78.994]],["parent/2053",[0,0,1,0.317,2,1.524,3,4.275]],["name/2054",[302,64.29]],["parent/2054",[0,0,1,0.317,2,1.524,1329,6.451]],["name/2055",[304,73.872]],["parent/2055",[0,0,1,0.317,2,1.524,1329,6.451]],["name/2056",[305,73.872]],["parent/2056",[0,0,1,0.317,2,1.524,1329,6.451]],["name/2057",[1330,78.994]],["parent/2057",[0,0,1,0.317,2,1.524,3,4.275]],["name/2058",[179,60.485]],["parent/2058",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2059",[181,73.872]],["parent/2059",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2060",[182,60.485]],["parent/2060",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2061",[183,67.978]],["parent/2061",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2062",[184,67.978]],["parent/2062",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2063",[185,67.978]],["parent/2063",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2064",[186,67.978]],["parent/2064",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2065",[187,67.978]],["parent/2065",[0,0,1,0.317,2,1.524,1331,5.636]],["name/2066",[1332,78.994]],["parent/2066",[0,0,1,0.317,2,1.524,3,4.275]],["name/2067",[419,67.978]],["parent/2067",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2068",[421,73.872]],["parent/2068",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2069",[422,73.872]],["parent/2069",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2070",[423,73.872]],["parent/2070",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2071",[424,73.872]],["parent/2071",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2072",[425,73.872]],["parent/2072",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2073",[426,73.872]],["parent/2073",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2074",[427,73.872]],["parent/2074",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2075",[428,73.872]],["parent/2075",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2076",[429,73.872]],["parent/2076",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2077",[430,73.872]],["parent/2077",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2078",[431,73.872]],["parent/2078",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2079",[432,73.872]],["parent/2079",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2080",[433,73.872]],["parent/2080",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2081",[434,73.872]],["parent/2081",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2082",[435,73.872]],["parent/2082",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2083",[436,73.872]],["parent/2083",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2084",[437,73.872]],["parent/2084",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2085",[438,73.872]],["parent/2085",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2086",[439,73.872]],["parent/2086",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2087",[440,73.872]],["parent/2087",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2088",[441,67.978]],["parent/2088",[0,0,1,0.317,2,1.524,1333,4.743]],["name/2089",[1334,78.994]],["parent/2089",[0,0,1,0.317,2,1.524,3,4.275]],["name/2090",[415,67.978]],["parent/2090",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2091",[463,73.872]],["parent/2091",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2092",[464,73.872]],["parent/2092",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2093",[465,73.872]],["parent/2093",[0,0,1,0.317,2,1.524,1335,6.22]],["name/2094",[1336,78.994]],["parent/2094",[0,0,1,0.317,2,1.524,3,4.275]],["name/2095",[392,73.872]],["parent/2095",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2096",[394,73.872]],["parent/2096",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2097",[395,73.872]],["parent/2097",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2098",[396,73.872]],["parent/2098",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2099",[397,73.872]],["parent/2099",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2100",[398,73.872]],["parent/2100",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2101",[399,70.498]],["parent/2101",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2102",[174,67.978]],["parent/2102",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2103",[400,73.872]],["parent/2103",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2104",[401,73.872]],["parent/2104",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2105",[402,73.872]],["parent/2105",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2106",[403,73.872]],["parent/2106",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2107",[404,73.872]],["parent/2107",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2108",[405,73.872]],["parent/2108",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2109",[406,73.872]],["parent/2109",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2110",[240,70.498]],["parent/2110",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2111",[244,65.965]],["parent/2111",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2112",[407,73.872]],["parent/2112",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2113",[408,73.872]],["parent/2113",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2114",[409,73.872]],["parent/2114",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2115",[410,73.872]],["parent/2115",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2116",[411,73.872]],["parent/2116",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2117",[412,73.872]],["parent/2117",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2118",[413,73.872]],["parent/2118",[0,0,1,0.317,2,1.524,1337,4.665]],["name/2119",[1338,78.994]],["parent/2119",[0,0,1,0.317,2,1.524,3,4.275]],["name/2120",[215,67.978]],["parent/2120",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2121",[153,60.485]],["parent/2121",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2122",[308,73.872]],["parent/2122",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2123",[309,73.872]],["parent/2123",[0,0,1,0.317,2,1.524,1339,6.22]],["name/2124",[1340,78.994]],["parent/2124",[0,0,1,0.317,2,1.524,3,4.275]],["name/2125",[311,73.872]],["parent/2125",[0,0,1,0.317,2,1.524,1341,6.451]],["name/2126",[313,73.872]],["parent/2126",[0,0,1,0.317,2,1.524,1341,6.451]],["name/2127",[314,73.872]],["parent/2127",[0,0,1,0.317,2,1.524,1341,6.451]],["name/2128",[1342,78.994]],["parent/2128",[0,0,1,0.317,2,1.524,3,4.275]],["name/2129",[316,61.6]],["parent/2129",[0,0,1,0.317,2,1.524,1343,7.228]],["name/2130",[1344,78.994]],["parent/2130",[0,0,1,0.317,2,1.524,3,4.275]],["name/2131",[415,67.978]],["parent/2131",[0,0,1,0.317,2,1.524,1345,6.451]],["name/2132",[417,65.965]],["parent/2132",[0,0,1,0.317,2,1.524,1345,6.451]],["name/2133",[269,62.855]],["parent/2133",[0,0,1,0.317,2,1.524,1345,6.451]],["name/2134",[1346,78.994]],["parent/2134",[0,0,1,0.317,2,1.524,3,4.275]],["name/2135",[379,67.978]],["parent/2135",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2136",[383,73.872]],["parent/2136",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2137",[384,73.872]],["parent/2137",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2138",[385,73.872]],["parent/2138",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2139",[386,73.872]],["parent/2139",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2140",[387,73.872]],["parent/2140",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2141",[388,73.872]],["parent/2141",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2142",[389,73.872]],["parent/2142",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2143",[390,73.872]],["parent/2143",[0,0,1,0.317,2,1.524,1347,5.534]],["name/2144",[1348,78.994]],["parent/2144",[0,0,1,0.317,2,1.524,3,4.275]],["name/2145",[319,73.872]],["parent/2145",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2146",[321,73.872]],["parent/2146",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2147",[322,73.872]],["parent/2147",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2148",[323,73.872]],["parent/2148",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2149",[324,73.872]],["parent/2149",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2150",[325,73.872]],["parent/2150",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2151",[326,73.872]],["parent/2151",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2152",[327,73.872]],["parent/2152",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2153",[328,73.872]],["parent/2153",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2154",[329,73.872]],["parent/2154",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2155",[330,73.872]],["parent/2155",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2156",[331,73.872]],["parent/2156",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2157",[332,73.872]],["parent/2157",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2158",[333,73.872]],["parent/2158",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2159",[334,70.498]],["parent/2159",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2160",[335,70.498]],["parent/2160",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2161",[336,70.498]],["parent/2161",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2162",[337,73.872]],["parent/2162",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2163",[338,73.872]],["parent/2163",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2164",[339,73.872]],["parent/2164",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2165",[340,73.872]],["parent/2165",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2166",[341,73.872]],["parent/2166",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2167",[342,73.872]],["parent/2167",[0,0,1,0.317,2,1.524,1349,4.703]],["name/2168",[954,64.29]],["parent/2168",[0,0,1,0.358,4,3.193]],["name/2169",[1350,78.994]],["parent/2169",[0,0,1,0.358,4,3.193]],["name/2170",[1351,78.994]],["parent/2170",[0,0,1,0.358,4,3.193]],["name/2171",[1352,78.994]],["parent/2171",[0,0,1,0.358,1353,6.25]],["name/2172",[1354,78.994]],["parent/2172",[0,0,1,0.358,1353,6.25]],["name/2173",[1355,78.994]],["parent/2173",[0,0,1,0.358,1353,6.25]],["name/2174",[726,73.872]],["parent/2174",[0,0,1,0.358,1353,6.25]],["name/2175",[728,73.872]],["parent/2175",[0,0,1,0.358,1353,6.25]],["name/2176",[729,73.872]],["parent/2176",[0,0,1,0.358,1353,6.25]],["name/2177",[730,73.872]],["parent/2177",[0,0,1,0.358,1353,6.25]],["name/2178",[731,73.872]],["parent/2178",[0,0,1,0.358,1353,6.25]],["name/2179",[732,73.872]],["parent/2179",[0,0,1,0.358,1353,6.25]],["name/2180",[1356,78.994]],["parent/2180",[0,0,1,0.358,4,3.193]],["name/2181",[1357,48.464]],["parent/2181",[0,0,1,0.358,1358,6.365]],["name/2182",[754,73.872]],["parent/2182",[0,0,1,0.358,1358,6.365]],["name/2183",[756,73.872]],["parent/2183",[0,0,1,0.358,1358,6.365]],["name/2184",[757,73.872]],["parent/2184",[0,0,1,0.358,1358,6.365]],["name/2185",[758,73.872]],["parent/2185",[0,0,1,0.358,1358,6.365]],["name/2186",[759,73.872]],["parent/2186",[0,0,1,0.358,1358,6.365]],["name/2187",[760,73.872]],["parent/2187",[0,0,1,0.358,1358,6.365]],["name/2188",[761,73.872]],["parent/2188",[0,0,1,0.358,1358,6.365]],["name/2189",[1359,78.994]],["parent/2189",[0,0,1,0.358,4,3.193]],["name/2190",[1360,78.994]],["parent/2190",[0,0,1,0.358,4,3.193]],["name/2191",[1361,78.994]],["parent/2191",[0,0,1,0.358,4,3.193]],["name/2192",[1362,78.994]],["parent/2192",[0,0,1,0.358,4,3.193]],["name/2193",[1363,78.994]],["parent/2193",[0,0,1,0.358,4,3.193]],["name/2194",[1364,78.994]],["parent/2194",[0,0,1,0.358,4,3.193]],["name/2195",[1357,48.464]],["parent/2195",[0,0,1,0.358,1365,6.146]],["name/2196",[646,62.855]],["parent/2196",[0,0,1,0.358,1365,6.146]],["name/2197",[735,65.965]],["parent/2197",[0,0,1,0.358,1365,6.146]],["name/2198",[736,65.965]],["parent/2198",[0,0,1,0.358,1365,6.146]],["name/2199",[737,65.965]],["parent/2199",[0,0,1,0.358,1365,6.146]],["name/2200",[738,65.965]],["parent/2200",[0,0,1,0.358,1365,6.146]],["name/2201",[739,65.965]],["parent/2201",[0,0,1,0.358,1365,6.146]],["name/2202",[645,61.6]],["parent/2202",[0,0,1,0.358,1365,6.146]],["name/2203",[139,54.949]],["parent/2203",[0,0,1,0.358,1365,6.146]],["name/2204",[740,65.965]],["parent/2204",[0,0,1,0.358,1365,6.146]],["name/2205",[1366,78.994]],["parent/2205",[0,0,1,0.358,4,3.193]],["name/2206",[1357,48.464]],["parent/2206",[0,0,1,0.358,1367,6.146]],["name/2207",[646,62.855]],["parent/2207",[0,0,1,0.358,1367,6.146]],["name/2208",[735,65.965]],["parent/2208",[0,0,1,0.358,1367,6.146]],["name/2209",[736,65.965]],["parent/2209",[0,0,1,0.358,1367,6.146]],["name/2210",[737,65.965]],["parent/2210",[0,0,1,0.358,1367,6.146]],["name/2211",[738,65.965]],["parent/2211",[0,0,1,0.358,1367,6.146]],["name/2212",[739,65.965]],["parent/2212",[0,0,1,0.358,1367,6.146]],["name/2213",[645,61.6]],["parent/2213",[0,0,1,0.358,1367,6.146]],["name/2214",[139,54.949]],["parent/2214",[0,0,1,0.358,1367,6.146]],["name/2215",[740,65.965]],["parent/2215",[0,0,1,0.358,1367,6.146]],["name/2216",[1368,78.994]],["parent/2216",[0,0,1,0.358,4,3.193]],["name/2217",[1357,48.464]],["parent/2217",[0,0,1,0.358,1369,6.146]],["name/2218",[646,62.855]],["parent/2218",[0,0,1,0.358,1369,6.146]],["name/2219",[735,65.965]],["parent/2219",[0,0,1,0.358,1369,6.146]],["name/2220",[736,65.965]],["parent/2220",[0,0,1,0.358,1369,6.146]],["name/2221",[737,65.965]],["parent/2221",[0,0,1,0.358,1369,6.146]],["name/2222",[738,65.965]],["parent/2222",[0,0,1,0.358,1369,6.146]],["name/2223",[739,65.965]],["parent/2223",[0,0,1,0.358,1369,6.146]],["name/2224",[645,61.6]],["parent/2224",[0,0,1,0.358,1369,6.146]],["name/2225",[139,54.949]],["parent/2225",[0,0,1,0.358,1369,6.146]],["name/2226",[740,65.965]],["parent/2226",[0,0,1,0.358,1369,6.146]],["name/2227",[1370,78.994]],["parent/2227",[0,0,1,0.358,4,3.193]],["name/2228",[1357,48.464]],["parent/2228",[0,0,1,0.358,1371,5.886]],["name/2229",[1372,78.994]],["parent/2229",[0,0,1,0.358,1371,5.886]],["name/2230",[735,65.965]],["parent/2230",[0,0,1,0.358,1371,5.886]],["name/2231",[736,65.965]],["parent/2231",[0,0,1,0.358,1371,5.886]],["name/2232",[646,62.855]],["parent/2232",[0,0,1,0.358,1371,5.886]],["name/2233",[737,65.965]],["parent/2233",[0,0,1,0.358,1371,5.886]],["name/2234",[738,65.965]],["parent/2234",[0,0,1,0.358,1371,5.886]],["name/2235",[1373,78.994]],["parent/2235",[0,0,1,0.358,1371,5.886]],["name/2236",[1374,78.994]],["parent/2236",[0,0,1,0.358,1371,5.886]],["name/2237",[139,54.949]],["parent/2237",[0,0,1,0.358,1371,5.886]],["name/2238",[739,65.965]],["parent/2238",[0,0,1,0.358,1371,5.886]],["name/2239",[645,61.6]],["parent/2239",[0,0,1,0.358,1371,5.886]],["name/2240",[740,65.965]],["parent/2240",[0,0,1,0.358,1371,5.886]],["name/2241",[1375,78.994]],["parent/2241",[0,0,1,0.358,4,3.193]],["name/2242",[1376,78.994]],["parent/2242",[0,0,1,0.358,4,3.193]],["name/2243",[1377,78.994]],["parent/2243",[0,0,1,0.358,4,3.193]],["name/2244",[1378,78.994]],["parent/2244",[0,0,1,0.358,4,3.193]],["name/2245",[1379,78.994]],["parent/2245",[0,0,1,0.358,4,3.193]],["name/2246",[1380,78.994]],["parent/2246",[0,0,1,0.358,4,3.193]],["name/2247",[1381,78.994]],["parent/2247",[0,0,1,0.358,4,3.193]],["name/2248",[1382,78.994]],["parent/2248",[0,0,1,0.358,4,3.193]],["name/2249",[1383,78.994]],["parent/2249",[0,0,1,0.358,4,3.193]],["name/2250",[1384,78.994]],["parent/2250",[0,0,1,0.358,4,3.193]],["name/2251",[1385,78.994]],["parent/2251",[0,0,1,0.358,4,3.193]],["name/2252",[1386,73.872]],["parent/2252",[0,0,1,0.358,4,3.193]],["name/2253",[1387,78.994]],["parent/2253",[0,0,1,0.358,4,3.193]],["name/2254",[956,64.29]],["parent/2254",[0,0,1,0.358,4,3.193]],["name/2255",[139,54.949]],["parent/2255",[0,0,1,0.358,4,3.193]],["name/2256",[1388,78.994]],["parent/2256",[0,0,1,0.358,4,3.193]],["name/2257",[1389,78.994]],["parent/2257",[0,0,1,0.358,4,3.193]],["name/2258",[1390,78.994]],["parent/2258",[0,0,1,0.358,4,3.193]],["name/2259",[1391,78.994]],["parent/2259",[0,0,1,0.358,4,3.193]],["name/2260",[991,60.485]],["parent/2260",[0,0,1,0.358,4,3.193]],["name/2261",[1392,78.994]],["parent/2261",[0,0,1,0.358,4,3.193]],["name/2262",[1393,78.994]],["parent/2262",[0,0,1,0.358,4,3.193]],["name/2263",[1394,78.994]],["parent/2263",[0,0,1,0.358,4,3.193]],["name/2264",[1395,78.994]],["parent/2264",[0,0,1,0.358,4,3.193]],["name/2265",[1396,78.994]],["parent/2265",[0,0,1,0.358,4,3.193]],["name/2266",[1397,78.994]],["parent/2266",[0,0,1,0.358,4,3.193]],["name/2267",[1398,78.994]],["parent/2267",[0,0,1,0.358,4,3.193]],["name/2268",[955,64.29]],["parent/2268",[0,0,1,0.358,4,3.193]],["name/2269",[1399,78.994]],["parent/2269",[0,0,1,0.358,4,3.193]],["name/2270",[1400,78.994]],["parent/2270",[0,0,1,0.358,4,3.193]],["name/2271",[1401,78.994]],["parent/2271",[0,0,1,0.358,4,3.193]],["name/2272",[1402,78.994]],["parent/2272",[0,0,1,0.358,4,3.193]],["name/2273",[1403,78.994]],["parent/2273",[0,0,1,0.358,4,3.193]],["name/2274",[1404,78.994]],["parent/2274",[0,0,1,0.358,4,3.193]],["name/2275",[1405,78.994]],["parent/2275",[0,0,1,0.358,4,3.193]],["name/2276",[1406,78.994]],["parent/2276",[0,0,1,0.358,4,3.193]],["name/2277",[1407,78.994]],["parent/2277",[0,0,1,0.358,4,3.193]],["name/2278",[1408,78.994]],["parent/2278",[0,0,1,0.358,4,3.193]],["name/2279",[1409,78.994]],["parent/2279",[0,0,1,0.358,4,3.193]],["name/2280",[1410,78.994]],["parent/2280",[0,0,1,0.358,4,3.193]],["name/2281",[1411,78.994]],["parent/2281",[0,0,1,0.358,4,3.193]],["name/2282",[1412,78.994]],["parent/2282",[0,0,1,0.358,4,3.193]],["name/2283",[1413,78.994]],["parent/2283",[0,0,1,0.358,4,3.193]],["name/2284",[1414,78.994]],["parent/2284",[0,0,1,0.358,4,3.193]],["name/2285",[1415,78.994]],["parent/2285",[0,0,1,0.358,4,3.193]],["name/2286",[1416,78.994]],["parent/2286",[0,0,1,0.358,4,3.193]],["name/2287",[1417,78.994]],["parent/2287",[0,0,1,0.358,4,3.193]],["name/2288",[1418,78.994]],["parent/2288",[0,0,1,0.358,4,3.193]],["name/2289",[1419,78.994]],["parent/2289",[0,0,1,0.358,4,3.193]],["name/2290",[1420,78.994]],["parent/2290",[0,0,1,0.358,4,3.193]],["name/2291",[1357,48.464]],["parent/2291",[0,0,1,0.358,1421,5.559]],["name/2292",[316,61.6]],["parent/2292",[0,0,1,0.358,1421,5.559]],["name/2293",[1422,73.872]],["parent/2293",[0,0,1,0.358,1421,5.559]],["name/2294",[1423,78.994]],["parent/2294",[0,0,1,0.358,1421,5.559]],["name/2295",[1424,78.994]],["parent/2295",[0,0,1,0.358,1421,5.559]],["name/2296",[1425,78.994]],["parent/2296",[0,0,1,0.358,1421,5.559]],["name/2297",[1426,78.994]],["parent/2297",[0,0,1,0.358,1421,5.559]],["name/2298",[1427,70.498]],["parent/2298",[0,0,1,0.358,1421,5.559]],["name/2299",[1386,73.872]],["parent/2299",[0,0,1,0.358,1421,5.559]],["name/2300",[1031,67.978]],["parent/2300",[0,0,1,0.358,1421,5.559]],["name/2301",[1428,78.994]],["parent/2301",[0,0,1,0.358,1421,5.559]],["name/2302",[1429,78.994]],["parent/2302",[0,0,1,0.358,1421,5.559]],["name/2303",[1430,78.994]],["parent/2303",[0,0,1,0.358,1421,5.559]],["name/2304",[1431,78.994]],["parent/2304",[0,0,1,0.358,1421,5.559]],["name/2305",[1432,78.994]],["parent/2305",[0,0,1,0.358,1421,5.559]],["name/2306",[1433,78.994]],["parent/2306",[0,0,1,0.358,1421,5.559]],["name/2307",[1434,78.994]],["parent/2307",[0,0,1,0.358,1421,5.559]],["name/2308",[1435,78.994]],["parent/2308",[0,0,1,0.358,1421,5.559]],["name/2309",[1225,70.498]],["parent/2309",[0,0,1,0.358,4,3.193]],["name/2310",[1436,78.994]],["parent/2310",[0,0,1,0.358,4,3.193]],["name/2311",[1357,48.464]],["parent/2311",[0,0,1,0.358,1437,5.742]],["name/2312",[553,65.965]],["parent/2312",[0,0,1,0.358,1437,5.742]],["name/2313",[1438,78.994]],["parent/2313",[0,0,1,0.358,1437,5.742]],["name/2314",[139,54.949]],["parent/2314",[0,0,1,0.358,1437,5.742]],["name/2315",[1439,78.994]],["parent/2315",[0,0,1,0.358,1437,5.742]],["name/2316",[1427,70.498]],["parent/2316",[0,0,1,0.358,1437,5.742]],["name/2317",[1440,78.994]],["parent/2317",[0,0,1,0.358,1437,5.742]],["name/2318",[1441,70.498]],["parent/2318",[0,0,1,0.358,1437,5.742]],["name/2319",[1442,70.498]],["parent/2319",[0,0,1,0.358,1437,5.742]],["name/2320",[1443,73.872]],["parent/2320",[0,0,1,0.358,1437,5.742]],["name/2321",[1444,78.994]],["parent/2321",[0,0,1,0.358,1437,5.742]],["name/2322",[1445,78.994]],["parent/2322",[0,0,1,0.358,1437,5.742]],["name/2323",[1446,78.994]],["parent/2323",[0,0,1,0.358,1437,5.742]],["name/2324",[1447,78.994]],["parent/2324",[0,0,1,0.358,1437,5.742]],["name/2325",[1448,73.872]],["parent/2325",[0,0,1,0.358,1437,5.742]],["name/2326",[1449,78.994]],["parent/2326",[0,0,1,0.358,4,3.193]],["name/2327",[1357,48.464]],["parent/2327",[0,0,1,0.358,1450,5.559]],["name/2328",[1451,78.994]],["parent/2328",[0,0,1,0.358,1450,5.559]],["name/2329",[1452,78.994]],["parent/2329",[0,0,1,0.358,1450,5.559]],["name/2330",[1453,78.994]],["parent/2330",[0,0,1,0.358,1450,5.559]],["name/2331",[1454,78.994]],["parent/2331",[0,0,1,0.358,1450,5.559]],["name/2332",[139,54.949]],["parent/2332",[0,0,1,0.358,1450,5.559]],["name/2333",[1455,78.994]],["parent/2333",[0,0,1,0.358,1450,5.559]],["name/2334",[1456,78.994]],["parent/2334",[0,0,1,0.358,1450,5.559]],["name/2335",[1457,78.994]],["parent/2335",[0,0,1,0.358,1450,5.559]],["name/2336",[1458,78.994]],["parent/2336",[0,0,1,0.358,1450,5.559]],["name/2337",[107,70.498]],["parent/2337",[0,0,1,0.358,1450,5.559]],["name/2338",[121,70.498]],["parent/2338",[0,0,1,0.358,1450,5.559]],["name/2339",[1459,78.994]],["parent/2339",[0,0,1,0.358,1450,5.559]],["name/2340",[1443,73.872]],["parent/2340",[0,0,1,0.358,1450,5.559]],["name/2341",[1460,78.994]],["parent/2341",[0,0,1,0.358,1450,5.559]],["name/2342",[1461,78.994]],["parent/2342",[0,0,1,0.358,1450,5.559]],["name/2343",[1462,78.994]],["parent/2343",[0,0,1,0.358,1450,5.559]],["name/2344",[1427,70.498]],["parent/2344",[0,0,1,0.358,1450,5.559]],["name/2345",[1463,78.994]],["parent/2345",[0,0,1,0.358,4,3.193]],["name/2346",[1464,78.994]],["parent/2346",[0,0,1,0.358,4,3.193]],["name/2347",[1465,78.994]],["parent/2347",[0,0,1,0.358,1466,7.024]],["name/2348",[1467,78.994]],["parent/2348",[0,0,1,0.358,1466,7.024]],["name/2349",[1468,78.994]],["parent/2349",[0,0,1,0.358,1466,7.024]],["name/2350",[1469,78.994]],["parent/2350",[0,0,1,0.358,1466,7.024]],["name/2351",[1470,78.994]],["parent/2351",[0,0,1,0.358,4,3.193]],["name/2352",[1471,78.994]],["parent/2352",[0,0,1,0.358,4,3.193]],["name/2353",[1472,78.994]],["parent/2353",[0,0,1,0.358,4,3.193]],["name/2354",[1473,78.994]],["parent/2354",[0,0,1,0.358,4,3.193]],["name/2355",[1474,78.994]],["parent/2355",[0,0,1,0.358,4,3.193]],["name/2356",[1475,78.994]],["parent/2356",[0,0,1,0.358,4,3.193]],["name/2357",[1476,78.994]],["parent/2357",[0,0,1,0.358,4,3.193]],["name/2358",[1477,78.994]],["parent/2358",[0,0,1,0.358,4,3.193]],["name/2359",[1478,78.994]],["parent/2359",[0,0,1,0.358,4,3.193]],["name/2360",[1479,78.994]],["parent/2360",[0,0,1,0.358,4,3.193]],["name/2361",[749,70.498]],["parent/2361",[0,0,1,0.358,4,3.193]],["name/2362",[1448,73.872]],["parent/2362",[0,0,1,0.358,1480,6.052]],["name/2363",[1481,78.994]],["parent/2363",[0,0,1,0.358,1480,6.052]],["name/2364",[1357,48.464]],["parent/2364",[0,0,1,0.358,1480,6.052]],["name/2365",[772,65.965]],["parent/2365",[0,0,1,0.358,1480,6.052]],["name/2366",[179,60.485]],["parent/2366",[0,0,1,0.358,1480,6.052]],["name/2367",[774,73.872]],["parent/2367",[0,0,1,0.358,1480,6.052]],["name/2368",[775,73.872]],["parent/2368",[0,0,1,0.358,1480,6.052]],["name/2369",[776,73.872]],["parent/2369",[0,0,1,0.358,1480,6.052]],["name/2370",[777,73.872]],["parent/2370",[0,0,1,0.358,1480,6.052]],["name/2371",[645,61.6]],["parent/2371",[0,0,1,0.358,1480,6.052]],["name/2372",[778,70.498]],["parent/2372",[0,0,1,0.358,1480,6.052]],["name/2373",[1482,78.994]],["parent/2373",[0,0,1,0.358,4,3.193]],["name/2374",[1483,78.994]],["parent/2374",[0,0,1,0.358,4,3.193]],["name/2375",[1484,78.994]],["parent/2375",[0,0,1,0.358,4,3.193]],["name/2376",[963,64.29]],["parent/2376",[0,0,1,0.358,4,3.193]],["name/2377",[1485,78.994]],["parent/2377",[0,0,1,0.358,4,3.193]],["name/2378",[1486,78.994]],["parent/2378",[0,0,1,0.358,4,3.193]],["name/2379",[1487,78.994]],["parent/2379",[0,0,1,0.358,4,3.193]],["name/2380",[1488,78.994]],["parent/2380",[0,0,1,0.358,4,3.193]],["name/2381",[1489,78.994]],["parent/2381",[0,0,1,0.358,4,3.193]],["name/2382",[1165,73.872]],["parent/2382",[0,0,1,0.358,4,3.193]],["name/2383",[1490,78.994]],["parent/2383",[0,0,1,0.358,4,3.193]],["name/2384",[1491,78.994]],["parent/2384",[0,0,1,0.358,4,3.193]],["name/2385",[1492,78.994]],["parent/2385",[0,0,1,0.358,4,3.193]],["name/2386",[1493,78.994]],["parent/2386",[0,0,1,0.358,4,3.193]],["name/2387",[1494,78.994]],["parent/2387",[0,0,1,0.358,4,3.193]],["name/2388",[1495,78.994]],["parent/2388",[0,0,1,0.358,4,3.193]],["name/2389",[1496,78.994]],["parent/2389",[0,0,1,0.358,4,3.193]],["name/2390",[1167,73.872]],["parent/2390",[0,0,1,0.358,4,3.193]],["name/2391",[1497,78.994]],["parent/2391",[0,0,1,0.358,4,3.193]],["name/2392",[1498,78.994]],["parent/2392",[0,0,1,0.358,1499,6.643]],["name/2393",[1500,78.994]],["parent/2393",[0,0,1,0.358,1499,6.643]],["name/2394",[1357,48.464]],["parent/2394",[0,0,1,0.358,1499,6.643]],["name/2395",[1501,78.994]],["parent/2395",[0,0,1,0.358,1499,6.643]],["name/2396",[1502,78.994]],["parent/2396",[0,0,1,0.358,1499,6.643]],["name/2397",[1503,78.994]],["parent/2397",[0,0,1,0.358,1499,6.643]],["name/2398",[1504,78.994]],["parent/2398",[0,0,1,0.358,4,3.193]],["name/2399",[1505,78.994]],["parent/2399",[0,0,1,0.358,4,3.193]],["name/2400",[1506,78.994]],["parent/2400",[0,0,1,0.358,4,3.193]],["name/2401",[1507,78.994]],["parent/2401",[0,0,1,0.358,4,3.193]],["name/2402",[1508,78.994]],["parent/2402",[0,0,1,0.358,4,3.193]],["name/2403",[1509,78.994]],["parent/2403",[0,0,1,0.358,4,3.193]],["name/2404",[1510,78.994]],["parent/2404",[0,0,1,0.358,4,3.193]],["name/2405",[1511,78.994]],["parent/2405",[0,0,1,0.358,4,3.193]],["name/2406",[1512,78.994]],["parent/2406",[0,0,1,0.358,4,3.193]],["name/2407",[1513,78.994]],["parent/2407",[0,0,1,0.358,4,3.193]],["name/2408",[1514,78.994]],["parent/2408",[0,0,1,0.358,4,3.193]],["name/2409",[1515,78.994]],["parent/2409",[0,0,1,0.358,4,3.193]],["name/2410",[1516,78.994]],["parent/2410",[0,0,1,0.358,4,3.193]],["name/2411",[1517,78.994]],["parent/2411",[0,0,1,0.358,4,3.193]],["name/2412",[1518,78.994]],["parent/2412",[0,0,1,0.358,4,3.193]],["name/2413",[1519,78.994]],["parent/2413",[0,0,1,0.358,4,3.193]],["name/2414",[1520,78.994]],["parent/2414",[0,0,1,0.358,4,3.193]],["name/2415",[1521,78.994]],["parent/2415",[0,0,1,0.358,4,3.193]],["name/2416",[1522,78.994]],["parent/2416",[0,0,1,0.358,4,3.193]],["name/2417",[1523,78.994]],["parent/2417",[0,0,1,0.358,4,3.193]],["name/2418",[960,64.29]],["parent/2418",[0,0,1,0.358,4,3.193]],["name/2419",[646,62.855]],["parent/2419",[0,0,1,0.358,4,3.193]],["name/2420",[1524,78.994]],["parent/2420",[0,0,1,0.358,4,3.193]],["name/2421",[1525,78.994]],["parent/2421",[0,0,1,0.358,4,3.193]],["name/2422",[1526,78.994]],["parent/2422",[0,0,1,0.358,4,3.193]],["name/2423",[1527,78.994]],["parent/2423",[0,0,1,0.358,4,3.193]],["name/2424",[1528,78.994]],["parent/2424",[0,0,1,0.358,4,3.193]],["name/2425",[1529,78.994]],["parent/2425",[0,0,1,0.358,4,3.193]],["name/2426",[1530,78.994]],["parent/2426",[0,0,1,0.358,4,3.193]],["name/2427",[1531,78.994]],["parent/2427",[0,0,1,0.358,4,3.193]],["name/2428",[1532,78.994]],["parent/2428",[0,0,1,0.358,4,3.193]],["name/2429",[1533,78.994]],["parent/2429",[0,0,1,0.358,4,3.193]],["name/2430",[1534,78.994]],["parent/2430",[0,0,1,0.358,4,3.193]],["name/2431",[1535,78.994]],["parent/2431",[0,0,1,0.358,4,3.193]],["name/2432",[1536,78.994]],["parent/2432",[0,0,1,0.358,4,3.193]],["name/2433",[1,3.468]],["parent/2433",[0,0,1,0.358,5,6.816]],["name/2434",[1357,48.464]],["parent/2434",[0,0,1,0.358,1537,4.249]],["name/2435",[661,49.122]],["parent/2435",[0,0,1,0.358,1537,4.249]],["name/2436",[950,65.965]],["parent/2436",[0,0,1,0.358,1537,4.249]],["name/2437",[951,61.6]],["parent/2437",[0,0,1,0.358,1537,4.249]],["name/2438",[952,65.965]],["parent/2438",[0,0,1,0.358,1537,4.249]],["name/2439",[953,65.965]],["parent/2439",[0,0,1,0.358,1537,4.249]],["name/2440",[954,64.29]],["parent/2440",[0,0,1,0.358,1537,4.249]],["name/2441",[139,54.949]],["parent/2441",[0,0,1,0.358,1537,4.249]],["name/2442",[955,64.29]],["parent/2442",[0,0,1,0.358,1537,4.249]],["name/2443",[956,64.29]],["parent/2443",[0,0,1,0.358,1537,4.249]],["name/2444",[957,65.965]],["parent/2444",[0,0,1,0.358,1537,4.249]],["name/2445",[958,61.6]],["parent/2445",[0,0,1,0.358,1537,4.249]],["name/2446",[203,59.481]],["parent/2446",[0,0,1,0.358,1537,4.249]],["name/2447",[959,65.965]],["parent/2447",[0,0,1,0.358,1537,4.249]],["name/2448",[960,64.29]],["parent/2448",[0,0,1,0.358,1537,4.249]],["name/2449",[122,58.569]],["parent/2449",[0,0,1,0.358,1537,4.249]],["name/2450",[961,61.6]],["parent/2450",[0,0,1,0.358,1537,4.249]],["name/2451",[962,61.6]],["parent/2451",[0,0,1,0.358,1537,4.249]],["name/2452",[963,64.29]],["parent/2452",[0,0,1,0.358,1537,4.249]],["name/2453",[964,61.6]],["parent/2453",[0,0,1,0.358,1537,4.249]],["name/2454",[965,61.6]],["parent/2454",[0,0,1,0.358,1537,4.249]],["name/2455",[966,61.6]],["parent/2455",[0,0,1,0.358,1537,4.249]],["name/2456",[967,65.965]],["parent/2456",[0,0,1,0.358,1537,4.249]],["name/2457",[968,65.965]],["parent/2457",[0,0,1,0.358,1537,4.249]],["name/2458",[969,65.965]],["parent/2458",[0,0,1,0.358,1537,4.249]],["name/2459",[970,65.965]],["parent/2459",[0,0,1,0.358,1537,4.249]],["name/2460",[971,65.965]],["parent/2460",[0,0,1,0.358,1537,4.249]],["name/2461",[972,65.965]],["parent/2461",[0,0,1,0.358,1537,4.249]],["name/2462",[973,65.965]],["parent/2462",[0,0,1,0.358,1537,4.249]],["name/2463",[130,58.569]],["parent/2463",[0,0,1,0.358,1537,4.249]],["name/2464",[123,61.6]],["parent/2464",[0,0,1,0.358,1537,4.249]],["name/2465",[974,61.6]],["parent/2465",[0,0,1,0.358,1537,4.249]],["name/2466",[975,65.965]],["parent/2466",[0,0,1,0.358,1537,4.249]],["name/2467",[976,65.965]],["parent/2467",[0,0,1,0.358,1537,4.249]],["name/2468",[977,65.965]],["parent/2468",[0,0,1,0.358,1537,4.249]],["name/2469",[978,65.965]],["parent/2469",[0,0,1,0.358,1537,4.249]],["name/2470",[35,64.29]],["parent/2470",[0,0,1,0.358,1537,4.249]],["name/2471",[979,65.965]],["parent/2471",[0,0,1,0.358,1537,4.249]],["name/2472",[980,65.965]],["parent/2472",[0,0,1,0.358,1537,4.249]],["name/2473",[981,65.965]],["parent/2473",[0,0,1,0.358,1537,4.249]],["name/2474",[982,65.965]],["parent/2474",[0,0,1,0.358,1537,4.249]],["name/2475",[983,65.965]],["parent/2475",[0,0,1,0.358,1537,4.249]],["name/2476",[984,65.965]],["parent/2476",[0,0,1,0.358,1537,4.249]],["name/2477",[985,65.965]],["parent/2477",[0,0,1,0.358,1537,4.249]],["name/2478",[986,65.965]],["parent/2478",[0,0,1,0.358,1537,4.249]],["name/2479",[987,65.965]],["parent/2479",[0,0,1,0.358,1537,4.249]],["name/2480",[988,65.965]],["parent/2480",[0,0,1,0.358,1537,4.249]],["name/2481",[989,65.965]],["parent/2481",[0,0,1,0.358,1537,4.249]],["name/2482",[990,61.6]],["parent/2482",[0,0,1,0.358,1537,4.249]],["name/2483",[991,60.485]],["parent/2483",[0,0,1,0.358,1537,4.249]],["name/2484",[992,61.6]],["parent/2484",[0,0,1,0.358,1537,4.249]],["name/2485",[993,65.965]],["parent/2485",[0,0,1,0.358,1537,4.249]],["name/2486",[60,55.576]],["parent/2486",[0,0,1,0.358,1537,4.249]],["name/2487",[994,65.965]],["parent/2487",[0,0,1,0.358,1537,4.249]],["name/2488",[995,65.965]],["parent/2488",[0,0,1,0.358,1537,4.249]],["name/2489",[996,65.965]],["parent/2489",[0,0,1,0.358,1537,4.249]],["name/2490",[997,65.965]],["parent/2490",[0,0,1,0.358,1537,4.249]],["name/2491",[998,65.965]],["parent/2491",[0,0,1,0.358,1537,4.249]],["name/2492",[999,64.29]],["parent/2492",[0,0,1,0.358,1537,4.249]],["name/2493",[1000,65.965]],["parent/2493",[0,0,1,0.358,1537,4.249]],["name/2494",[1003,65.965]],["parent/2494",[0,0,1,0.358,1537,4.249]],["name/2495",[1001,65.965]],["parent/2495",[0,0,1,0.358,1537,4.249]],["name/2496",[1002,65.965]],["parent/2496",[0,0,1,0.358,1537,4.249]],["name/2497",[1004,59.481]],["parent/2497",[0,0,1,0.358,1537,4.249]],["name/2498",[1538,70.498]],["parent/2498",[0,0,1,0.358,1537,4.249]],["name/2499",[1539,78.994]],["parent/2499",[0,0,1,0.358,5,6.816]],["name/2500",[1357,48.464]],["parent/2500",[0,0,1,0.358,1540,4.249]],["name/2501",[661,49.122]],["parent/2501",[0,0,1,0.358,1540,4.249]],["name/2502",[950,65.965]],["parent/2502",[0,0,1,0.358,1540,4.249]],["name/2503",[951,61.6]],["parent/2503",[0,0,1,0.358,1540,4.249]],["name/2504",[952,65.965]],["parent/2504",[0,0,1,0.358,1540,4.249]],["name/2505",[953,65.965]],["parent/2505",[0,0,1,0.358,1540,4.249]],["name/2506",[954,64.29]],["parent/2506",[0,0,1,0.358,1540,4.249]],["name/2507",[139,54.949]],["parent/2507",[0,0,1,0.358,1540,4.249]],["name/2508",[955,64.29]],["parent/2508",[0,0,1,0.358,1540,4.249]],["name/2509",[956,64.29]],["parent/2509",[0,0,1,0.358,1540,4.249]],["name/2510",[957,65.965]],["parent/2510",[0,0,1,0.358,1540,4.249]],["name/2511",[958,61.6]],["parent/2511",[0,0,1,0.358,1540,4.249]],["name/2512",[203,59.481]],["parent/2512",[0,0,1,0.358,1540,4.249]],["name/2513",[959,65.965]],["parent/2513",[0,0,1,0.358,1540,4.249]],["name/2514",[960,64.29]],["parent/2514",[0,0,1,0.358,1540,4.249]],["name/2515",[122,58.569]],["parent/2515",[0,0,1,0.358,1540,4.249]],["name/2516",[961,61.6]],["parent/2516",[0,0,1,0.358,1540,4.249]],["name/2517",[962,61.6]],["parent/2517",[0,0,1,0.358,1540,4.249]],["name/2518",[963,64.29]],["parent/2518",[0,0,1,0.358,1540,4.249]],["name/2519",[964,61.6]],["parent/2519",[0,0,1,0.358,1540,4.249]],["name/2520",[965,61.6]],["parent/2520",[0,0,1,0.358,1540,4.249]],["name/2521",[966,61.6]],["parent/2521",[0,0,1,0.358,1540,4.249]],["name/2522",[967,65.965]],["parent/2522",[0,0,1,0.358,1540,4.249]],["name/2523",[968,65.965]],["parent/2523",[0,0,1,0.358,1540,4.249]],["name/2524",[969,65.965]],["parent/2524",[0,0,1,0.358,1540,4.249]],["name/2525",[970,65.965]],["parent/2525",[0,0,1,0.358,1540,4.249]],["name/2526",[971,65.965]],["parent/2526",[0,0,1,0.358,1540,4.249]],["name/2527",[972,65.965]],["parent/2527",[0,0,1,0.358,1540,4.249]],["name/2528",[973,65.965]],["parent/2528",[0,0,1,0.358,1540,4.249]],["name/2529",[130,58.569]],["parent/2529",[0,0,1,0.358,1540,4.249]],["name/2530",[123,61.6]],["parent/2530",[0,0,1,0.358,1540,4.249]],["name/2531",[974,61.6]],["parent/2531",[0,0,1,0.358,1540,4.249]],["name/2532",[975,65.965]],["parent/2532",[0,0,1,0.358,1540,4.249]],["name/2533",[976,65.965]],["parent/2533",[0,0,1,0.358,1540,4.249]],["name/2534",[977,65.965]],["parent/2534",[0,0,1,0.358,1540,4.249]],["name/2535",[978,65.965]],["parent/2535",[0,0,1,0.358,1540,4.249]],["name/2536",[35,64.29]],["parent/2536",[0,0,1,0.358,1540,4.249]],["name/2537",[979,65.965]],["parent/2537",[0,0,1,0.358,1540,4.249]],["name/2538",[980,65.965]],["parent/2538",[0,0,1,0.358,1540,4.249]],["name/2539",[981,65.965]],["parent/2539",[0,0,1,0.358,1540,4.249]],["name/2540",[982,65.965]],["parent/2540",[0,0,1,0.358,1540,4.249]],["name/2541",[983,65.965]],["parent/2541",[0,0,1,0.358,1540,4.249]],["name/2542",[984,65.965]],["parent/2542",[0,0,1,0.358,1540,4.249]],["name/2543",[985,65.965]],["parent/2543",[0,0,1,0.358,1540,4.249]],["name/2544",[986,65.965]],["parent/2544",[0,0,1,0.358,1540,4.249]],["name/2545",[987,65.965]],["parent/2545",[0,0,1,0.358,1540,4.249]],["name/2546",[988,65.965]],["parent/2546",[0,0,1,0.358,1540,4.249]],["name/2547",[989,65.965]],["parent/2547",[0,0,1,0.358,1540,4.249]],["name/2548",[990,61.6]],["parent/2548",[0,0,1,0.358,1540,4.249]],["name/2549",[991,60.485]],["parent/2549",[0,0,1,0.358,1540,4.249]],["name/2550",[992,61.6]],["parent/2550",[0,0,1,0.358,1540,4.249]],["name/2551",[993,65.965]],["parent/2551",[0,0,1,0.358,1540,4.249]],["name/2552",[60,55.576]],["parent/2552",[0,0,1,0.358,1540,4.249]],["name/2553",[994,65.965]],["parent/2553",[0,0,1,0.358,1540,4.249]],["name/2554",[995,65.965]],["parent/2554",[0,0,1,0.358,1540,4.249]],["name/2555",[996,65.965]],["parent/2555",[0,0,1,0.358,1540,4.249]],["name/2556",[997,65.965]],["parent/2556",[0,0,1,0.358,1540,4.249]],["name/2557",[998,65.965]],["parent/2557",[0,0,1,0.358,1540,4.249]],["name/2558",[999,64.29]],["parent/2558",[0,0,1,0.358,1540,4.249]],["name/2559",[1000,65.965]],["parent/2559",[0,0,1,0.358,1540,4.249]],["name/2560",[1003,65.965]],["parent/2560",[0,0,1,0.358,1540,4.249]],["name/2561",[1001,65.965]],["parent/2561",[0,0,1,0.358,1540,4.249]],["name/2562",[1002,65.965]],["parent/2562",[0,0,1,0.358,1540,4.249]],["name/2563",[1004,59.481]],["parent/2563",[0,0,1,0.358,1540,4.249]],["name/2564",[1538,70.498]],["parent/2564",[0,0,1,0.358,1540,4.249]],["name/2565",[999,64.29]],["parent/2565",[0,0,1,0.358,5,6.816]],["name/2566",[1541,78.994]],["parent/2566",[0,0,1,0.358,5,6.816]],["name/2567",[1542,73.872]],["parent/2567",[0,0,1,0.358,6,4.627]],["name/2568",[1543,78.994]],["parent/2568",[0,0,1,0.358,6,4.627]],["name/2569",[1544,78.994]],["parent/2569",[0,0,1,0.358,6,4.627]],["name/2570",[1545,70.498]],["parent/2570",[0,0,1,0.358,6,4.627]],["name/2571",[92,65.965]],["parent/2571",[0,0,1,0.358,6,4.627]],["name/2572",[1546,73.872]],["parent/2572",[0,0,1,0.358,6,4.627]],["name/2573",[1547,78.994]],["parent/2573",[0,0,1,0.358,6,4.627]],["name/2574",[205,67.978]],["parent/2574",[0,0,1,0.358,6,4.627]],["name/2575",[111,65.965]],["parent/2575",[0,0,1,0.358,6,4.627]],["name/2576",[1548,70.498]],["parent/2576",[0,0,1,0.358,6,4.627]],["name/2577",[1549,73.872]],["parent/2577",[0,0,1,0.358,6,4.627]],["name/2578",[1550,73.872]],["parent/2578",[0,0,1,0.358,6,4.627]],["name/2579",[1551,70.498]],["parent/2579",[0,0,1,0.358,6,4.627]],["name/2580",[1552,78.994]],["parent/2580",[0,0,1,0.358,6,4.627]],["name/2581",[1553,78.994]],["parent/2581",[0,0,1,0.358,6,4.627]],["name/2582",[1442,70.498]],["parent/2582",[0,0,1,0.358,6,4.627]],["name/2583",[1554,73.872]],["parent/2583",[0,0,1,0.358,6,4.627]],["name/2584",[1555,73.872]],["parent/2584",[0,0,1,0.358,6,4.627]],["name/2585",[1556,73.872]],["parent/2585",[0,0,1,0.358,6,4.627]],["name/2586",[1557,73.872]],["parent/2586",[0,0,1,0.358,6,4.627]],["name/2587",[1558,73.872]],["parent/2587",[0,0,1,0.358,6,4.627]],["name/2588",[1559,73.872]],["parent/2588",[0,0,1,0.358,6,4.627]],["name/2589",[1441,70.498]],["parent/2589",[0,0,1,0.358,6,4.627]],["name/2590",[1560,73.872]],["parent/2590",[0,0,1,0.358,6,4.627]],["name/2591",[1561,73.872]],["parent/2591",[0,0,1,0.358,6,4.627]],["name/2592",[1562,73.872]],["parent/2592",[0,0,1,0.358,6,4.627]],["name/2593",[1563,73.872]],["parent/2593",[0,0,1,0.358,6,4.627]],["name/2594",[1564,73.872]],["parent/2594",[0,0,1,0.358,6,4.627]],["name/2595",[1565,78.994]],["parent/2595",[0,0,1,0.358,6,4.627]],["name/2596",[1566,73.872]],["parent/2596",[0,0,1,0.358,6,4.627]],["name/2597",[1567,78.994]],["parent/2597",[0,0,1,0.358,6,4.627]],["name/2598",[1568,73.872]],["parent/2598",[0,0,1,0.358,6,4.627]],["name/2599",[1569,73.872]],["parent/2599",[0,0,1,0.358,6,4.627]],["name/2600",[1570,73.872]],["parent/2600",[0,0,1,0.358,6,4.627]],["name/2601",[1571,73.872]],["parent/2601",[0,0,1,0.358,6,4.627]],["name/2602",[1572,73.872]],["parent/2602",[0,0,1,0.358,6,4.627]],["name/2603",[1573,78.994]],["parent/2603",[0,0,1,0.358,6,4.627]],["name/2604",[1574,78.994]],["parent/2604",[0,0,1,0.358,6,4.627]],["name/2605",[1575,78.994]],["parent/2605",[0,0,1,0.358,6,4.627]],["name/2606",[1576,70.498]],["parent/2606",[0,0,1,0.358,6,4.627]],["name/2607",[1577,78.994]],["parent/2607",[0,0,1,0.358,6,4.627]],["name/2608",[1578,78.994]],["parent/2608",[0,0,1,0.358,6,4.627]],["name/2609",[1579,78.994]],["parent/2609",[0,0,1,0.358,7,5.111]],["name/2610",[1357,48.464]],["parent/2610",[0,0,1,0.358,1580,7.024]],["name/2611",[659,50.985]],["parent/2611",[0,0,1,0.358,1580,7.024]],["name/2612",[660,50.985]],["parent/2612",[0,0,1,0.358,1580,7.024]],["name/2613",[661,49.122]],["parent/2613",[0,0,1,0.358,1580,7.024]],["name/2614",[1581,78.994]],["parent/2614",[0,0,1,0.358,7,5.111]],["name/2615",[244,65.965]],["parent/2615",[0,0,1,0.358,7,5.111]],["name/2616",[1357,48.464]],["parent/2616",[0,0,1,0.358,1582,6.816]],["name/2617",[659,50.985]],["parent/2617",[0,0,1,0.358,1582,6.816]],["name/2618",[660,50.985]],["parent/2618",[0,0,1,0.358,1582,6.816]],["name/2619",[661,49.122]],["parent/2619",[0,0,1,0.358,1582,6.816]],["name/2620",[663,52.294]],["parent/2620",[0,0,1,0.358,1582,6.816]],["name/2621",[1583,78.994]],["parent/2621",[0,0,1,0.358,7,5.111]],["name/2622",[1584,78.994]],["parent/2622",[0,0,1,0.358,1585,6.816]],["name/2623",[49,28.997]],["parent/2623",[0,0,1,0.358,1585,6.816]],["name/2624",[1586,78.994]],["parent/2624",[0,0,1,0.358,1585,6.816]],["name/2625",[49,28.997]],["parent/2625",[0,0,1,0.358,1585,6.816]],["name/2626",[1587,78.994]],["parent/2626",[0,0,1,0.358,1585,6.816]],["name/2627",[1588,78.994]],["parent/2627",[0,0,1,0.358,7,5.111]],["name/2628",[1357,48.464]],["parent/2628",[0,0,1,0.358,1589,6.643]],["name/2629",[1590,78.994]],["parent/2629",[0,0,1,0.358,1589,6.643]],["name/2630",[659,50.985]],["parent/2630",[0,0,1,0.358,1589,6.643]],["name/2631",[660,50.985]],["parent/2631",[0,0,1,0.358,1589,6.643]],["name/2632",[661,49.122]],["parent/2632",[0,0,1,0.358,1589,6.643]],["name/2633",[663,52.294]],["parent/2633",[0,0,1,0.358,1589,6.643]],["name/2634",[1591,78.994]],["parent/2634",[0,0,1,0.358,7,5.111]],["name/2635",[1357,48.464]],["parent/2635",[0,0,1,0.358,1592,6.816]],["name/2636",[659,50.985]],["parent/2636",[0,0,1,0.358,1592,6.816]],["name/2637",[660,50.985]],["parent/2637",[0,0,1,0.358,1592,6.816]],["name/2638",[661,49.122]],["parent/2638",[0,0,1,0.358,1592,6.816]],["name/2639",[663,52.294]],["parent/2639",[0,0,1,0.358,1592,6.816]],["name/2640",[1593,78.994]],["parent/2640",[0,0,1,0.358,7,5.111]],["name/2641",[1357,48.464]],["parent/2641",[0,0,1,0.358,1594,6.495]],["name/2642",[659,50.985]],["parent/2642",[0,0,1,0.358,1594,6.495]],["name/2643",[660,50.985]],["parent/2643",[0,0,1,0.358,1594,6.495]],["name/2644",[1595,78.994]],["parent/2644",[0,0,1,0.358,1594,6.495]],["name/2645",[1596,73.872]],["parent/2645",[0,0,1,0.358,1594,6.495]],["name/2646",[661,49.122]],["parent/2646",[0,0,1,0.358,1594,6.495]],["name/2647",[663,52.294]],["parent/2647",[0,0,1,0.358,1594,6.495]],["name/2648",[1597,78.994]],["parent/2648",[0,0,1,0.358,7,5.111]],["name/2649",[1357,48.464]],["parent/2649",[0,0,1,0.358,1598,6.052]],["name/2650",[1,3.468]],["parent/2650",[0,0,1,0.358,1598,6.052]],["name/2651",[1599,73.872]],["parent/2651",[0,0,1,0.358,1598,6.052]],["name/2652",[659,50.985]],["parent/2652",[0,0,1,0.358,1598,6.052]],["name/2653",[660,50.985]],["parent/2653",[0,0,1,0.358,1598,6.052]],["name/2654",[661,49.122]],["parent/2654",[0,0,1,0.358,1598,6.052]],["name/2655",[663,52.294]],["parent/2655",[0,0,1,0.358,1598,6.052]],["name/2656",[1600,73.872]],["parent/2656",[0,0,1,0.358,1598,6.052]],["name/2657",[1601,73.872]],["parent/2657",[0,0,1,0.358,1598,6.052]],["name/2658",[1602,73.872]],["parent/2658",[0,0,1,0.358,1598,6.052]],["name/2659",[1603,73.872]],["parent/2659",[0,0,1,0.358,1598,6.052]],["name/2660",[1604,78.994]],["parent/2660",[0,0,1,0.358,7,5.111]],["name/2661",[1605,78.994]],["parent/2661",[0,0,1,0.358,7,5.111]],["name/2662",[1606,78.994]],["parent/2662",[0,0,1,0.358,7,5.111]],["name/2663",[1607,78.994]],["parent/2663",[0,0,1,0.358,7,5.111]],["name/2664",[1608,78.994]],["parent/2664",[0,0,1,0.358,7,5.111]],["name/2665",[1609,78.994]],["parent/2665",[0,0,1,0.358,7,5.111]],["name/2666",[1610,78.994]],["parent/2666",[0,0,1,0.358,7,5.111]],["name/2667",[202,70.498]],["parent/2667",[0,0,1,0.358,7,5.111]],["name/2668",[1357,48.464]],["parent/2668",[0,0,1,0.358,1611,5.886]],["name/2669",[1612,78.994]],["parent/2669",[0,0,1,0.358,1611,5.886]],["name/2670",[1613,78.994]],["parent/2670",[0,0,1,0.358,1611,5.886]],["name/2671",[1,3.468]],["parent/2671",[0,0,1,0.358,1611,5.886]],["name/2672",[1599,73.872]],["parent/2672",[0,0,1,0.358,1611,5.886]],["name/2673",[659,50.985]],["parent/2673",[0,0,1,0.358,1611,5.886]],["name/2674",[660,50.985]],["parent/2674",[0,0,1,0.358,1611,5.886]],["name/2675",[661,49.122]],["parent/2675",[0,0,1,0.358,1611,5.886]],["name/2676",[663,52.294]],["parent/2676",[0,0,1,0.358,1611,5.886]],["name/2677",[1600,73.872]],["parent/2677",[0,0,1,0.358,1611,5.886]],["name/2678",[1601,73.872]],["parent/2678",[0,0,1,0.358,1611,5.886]],["name/2679",[1602,73.872]],["parent/2679",[0,0,1,0.358,1611,5.886]],["name/2680",[1603,73.872]],["parent/2680",[0,0,1,0.358,1611,5.886]],["name/2681",[122,58.569]],["parent/2681",[0,0,1,0.358,7,5.111]],["name/2682",[1357,48.464]],["parent/2682",[0,0,1,0.358,1614,6.816]],["name/2683",[659,50.985]],["parent/2683",[0,0,1,0.358,1614,6.816]],["name/2684",[660,50.985]],["parent/2684",[0,0,1,0.358,1614,6.816]],["name/2685",[661,49.122]],["parent/2685",[0,0,1,0.358,1614,6.816]],["name/2686",[663,52.294]],["parent/2686",[0,0,1,0.358,1614,6.816]],["name/2687",[1615,78.994]],["parent/2687",[0,0,1,0.358,7,5.111]],["name/2688",[1357,48.464]],["parent/2688",[0,0,1,0.358,1616,6.495]],["name/2689",[1617,78.994]],["parent/2689",[0,0,1,0.358,1616,6.495]],["name/2690",[659,50.985]],["parent/2690",[0,0,1,0.358,1616,6.495]],["name/2691",[660,50.985]],["parent/2691",[0,0,1,0.358,1616,6.495]],["name/2692",[661,49.122]],["parent/2692",[0,0,1,0.358,1616,6.495]],["name/2693",[662,62.855]],["parent/2693",[0,0,1,0.358,1616,6.495]],["name/2694",[663,52.294]],["parent/2694",[0,0,1,0.358,1616,6.495]],["name/2695",[1618,78.994]],["parent/2695",[0,0,1,0.358,7,5.111]],["name/2696",[1357,48.464]],["parent/2696",[0,0,1,0.358,1619,6.816]],["name/2697",[659,50.985]],["parent/2697",[0,0,1,0.358,1619,6.816]],["name/2698",[660,50.985]],["parent/2698",[0,0,1,0.358,1619,6.816]],["name/2699",[661,49.122]],["parent/2699",[0,0,1,0.358,1619,6.816]],["name/2700",[663,52.294]],["parent/2700",[0,0,1,0.358,1619,6.816]],["name/2701",[1620,78.994]],["parent/2701",[0,0,1,0.358,7,5.111]],["name/2702",[1357,48.464]],["parent/2702",[0,0,1,0.358,1621,6.816]],["name/2703",[659,50.985]],["parent/2703",[0,0,1,0.358,1621,6.816]],["name/2704",[660,50.985]],["parent/2704",[0,0,1,0.358,1621,6.816]],["name/2705",[661,49.122]],["parent/2705",[0,0,1,0.358,1621,6.816]],["name/2706",[663,52.294]],["parent/2706",[0,0,1,0.358,1621,6.816]],["name/2707",[1622,78.994]],["parent/2707",[0,0,1,0.358,7,5.111]],["name/2708",[1357,48.464]],["parent/2708",[0,0,1,0.358,1623,6.816]],["name/2709",[659,50.985]],["parent/2709",[0,0,1,0.358,1623,6.816]],["name/2710",[660,50.985]],["parent/2710",[0,0,1,0.358,1623,6.816]],["name/2711",[661,49.122]],["parent/2711",[0,0,1,0.358,1623,6.816]],["name/2712",[663,52.294]],["parent/2712",[0,0,1,0.358,1623,6.816]],["name/2713",[1624,78.994]],["parent/2713",[0,0,1,0.358,7,5.111]],["name/2714",[1357,48.464]],["parent/2714",[0,0,1,0.358,1625,6.816]],["name/2715",[659,50.985]],["parent/2715",[0,0,1,0.358,1625,6.816]],["name/2716",[660,50.985]],["parent/2716",[0,0,1,0.358,1625,6.816]],["name/2717",[661,49.122]],["parent/2717",[0,0,1,0.358,1625,6.816]],["name/2718",[663,52.294]],["parent/2718",[0,0,1,0.358,1625,6.816]],["name/2719",[61,65.965]],["parent/2719",[0,0,8,7.284,9,7.633]],["name/2720",[1626,78.994]],["parent/2720",[0,0,10,4.563]],["name/2721",[1627,78.994]],["parent/2721",[0,0,10,4.563]],["name/2722",[1628,78.994]],["parent/2722",[0,0,10,4.563]],["name/2723",[1629,78.994]],["parent/2723",[0,0,10,4.563]],["name/2724",[1630,78.994]],["parent/2724",[0,0,10,4.563]],["name/2725",[1631,78.994]],["parent/2725",[0,0,1632,8.766]],["name/2726",[1633,78.994]],["parent/2726",[0,0,1632,8.766]],["name/2727",[1634,78.994]],["parent/2727",[0,0,10,4.563]],["name/2728",[1635,73.872]],["parent/2728",[0,0,1636,6.95]],["name/2729",[659,50.985]],["parent/2729",[0,0,1636,6.95]],["name/2730",[49,28.997]],["parent/2730",[0,0,1636,6.95]],["name/2731",[660,50.985]],["parent/2731",[0,0,1636,6.95]],["name/2732",[49,28.997]],["parent/2732",[0,0,1636,6.95]],["name/2733",[661,49.122]],["parent/2733",[0,0,1636,6.95]],["name/2734",[49,28.997]],["parent/2734",[0,0,1636,6.95]],["name/2735",[662,62.855]],["parent/2735",[0,0,1636,6.95]],["name/2736",[49,28.997]],["parent/2736",[0,0,1636,6.95]],["name/2737",[663,52.294]],["parent/2737",[0,0,1636,6.95]],["name/2738",[49,28.997]],["parent/2738",[0,0,1636,6.95]],["name/2739",[1637,78.994]],["parent/2739",[0,0,10,4.563]],["name/2740",[1638,78.994]],["parent/2740",[0,0,10,4.563]],["name/2741",[1639,78.994]],["parent/2741",[0,0,10,4.563]],["name/2742",[1640,78.994]],["parent/2742",[0,0,1641,5.957]],["name/2743",[49,28.997]],["parent/2743",[0,0,1641,5.957]],["name/2744",[1642,78.994]],["parent/2744",[0,0,1641,5.957]],["name/2745",[7,49.468]],["parent/2745",[0,0,1641,5.957]],["name/2746",[59,60.485]],["parent/2746",[0,0,1641,5.957]],["name/2747",[1087,70.498]],["parent/2747",[0,0,1641,5.957]],["name/2748",[1088,70.498]],["parent/2748",[0,0,1641,5.957]],["name/2749",[1089,70.498]],["parent/2749",[0,0,1641,5.957]],["name/2750",[1090,70.498]],["parent/2750",[0,0,1641,5.957]],["name/2751",[1091,70.498]],["parent/2751",[0,0,1641,5.957]],["name/2752",[1092,70.498]],["parent/2752",[0,0,1641,5.957]],["name/2753",[62,67.978]],["parent/2753",[0,0,1641,5.957]],["name/2754",[49,28.997]],["parent/2754",[0,0,1641,5.957]],["name/2755",[61,65.965]],["parent/2755",[0,0,1641,5.957]],["name/2756",[49,28.997]],["parent/2756",[0,0,1641,5.957]],["name/2757",[1093,70.498]],["parent/2757",[0,0,1641,5.957]],["name/2758",[37,62.855]],["parent/2758",[0,0,1641,5.957]],["name/2759",[63,65.965]],["parent/2759",[0,0,1641,5.957]],["name/2760",[1094,70.498]],["parent/2760",[0,0,1641,5.957]],["name/2761",[82,64.29]],["parent/2761",[0,0,1641,5.957]],["name/2762",[1050,64.29]],["parent/2762",[0,0,1641,5.957]],["name/2763",[682,59.481]],["parent/2763",[0,0,1641,5.957]],["name/2764",[1051,64.29]],["parent/2764",[0,0,1641,5.957]],["name/2765",[1004,59.481]],["parent/2765",[0,0,1641,5.957]],["name/2766",[49,28.997]],["parent/2766",[0,0,1641,5.957]],["name/2767",[1052,65.965]],["parent/2767",[0,0,1641,5.957]],["name/2768",[1643,78.994]],["parent/2768",[0,0,10,4.563]],["name/2769",[1644,78.994]],["parent/2769",[0,0,1645,7.629]],["name/2770",[1646,78.994]],["parent/2770",[0,0,1645,7.629]],["name/2771",[1171,73.872]],["parent/2771",[0,0,1645,7.629]],["name/2772",[1647,78.994]],["parent/2772",[0,0,1645,7.629]],["name/2773",[1648,78.994]],["parent/2773",[0,0,1645,7.629]],["name/2774",[1596,73.872]],["parent/2774",[0,0,1645,7.629]],["name/2775",[1649,78.994]],["parent/2775",[0,0,10,4.563]],["name/2776",[1650,78.994]],["parent/2776",[0,0,1651,6.851]],["name/2777",[49,28.997]],["parent/2777",[0,0,1651,6.851]],["name/2778",[659,50.985]],["parent/2778",[0,0,1651,6.851]],["name/2779",[49,28.997]],["parent/2779",[0,0,1651,6.851]],["name/2780",[660,50.985]],["parent/2780",[0,0,1651,6.851]],["name/2781",[49,28.997]],["parent/2781",[0,0,1651,6.851]],["name/2782",[661,49.122]],["parent/2782",[0,0,1651,6.851]],["name/2783",[49,28.997]],["parent/2783",[0,0,1651,6.851]],["name/2784",[662,62.855]],["parent/2784",[0,0,1651,6.851]],["name/2785",[49,28.997]],["parent/2785",[0,0,1651,6.851]],["name/2786",[663,52.294]],["parent/2786",[0,0,1651,6.851]],["name/2787",[49,28.997]],["parent/2787",[0,0,1651,6.851]],["name/2788",[1652,78.994]],["parent/2788",[0,0,10,4.563]],["name/2789",[1653,78.994]],["parent/2789",[0,0,10,4.563]],["name/2790",[1654,78.994]],["parent/2790",[0,0,10,4.563]],["name/2791",[1655,78.994]],["parent/2791",[0,0,1656,6.322]],["name/2792",[49,28.997]],["parent/2792",[0,0,1656,6.322]],["name/2793",[1657,78.994]],["parent/2793",[0,0,1656,6.322]],["name/2794",[49,28.997]],["parent/2794",[0,0,1656,6.322]],["name/2795",[1658,78.994]],["parent/2795",[0,0,1656,6.322]],["name/2796",[49,28.997]],["parent/2796",[0,0,1656,6.322]],["name/2797",[1659,78.994]],["parent/2797",[0,0,1656,6.322]],["name/2798",[49,28.997]],["parent/2798",[0,0,1656,6.322]],["name/2799",[1635,73.872]],["parent/2799",[0,0,1656,6.322]],["name/2800",[659,50.985]],["parent/2800",[0,0,1656,6.322]],["name/2801",[49,28.997]],["parent/2801",[0,0,1656,6.322]],["name/2802",[660,50.985]],["parent/2802",[0,0,1656,6.322]],["name/2803",[49,28.997]],["parent/2803",[0,0,1656,6.322]],["name/2804",[661,49.122]],["parent/2804",[0,0,1656,6.322]],["name/2805",[49,28.997]],["parent/2805",[0,0,1656,6.322]],["name/2806",[662,62.855]],["parent/2806",[0,0,1656,6.322]],["name/2807",[49,28.997]],["parent/2807",[0,0,1656,6.322]],["name/2808",[663,52.294]],["parent/2808",[0,0,1656,6.322]],["name/2809",[49,28.997]],["parent/2809",[0,0,1656,6.322]],["name/2810",[1660,78.994]],["parent/2810",[0,0,10,4.563]],["name/2811",[1014,70.498]],["parent/2811",[0,0,1661,6.851]],["name/2812",[1662,78.994]],["parent/2812",[0,0,1661,6.851]],["name/2813",[1663,78.994]],["parent/2813",[0,0,1661,6.851]],["name/2814",[1664,73.872]],["parent/2814",[0,0,1661,6.851]],["name/2815",[1665,73.872]],["parent/2815",[0,0,1661,6.851]],["name/2816",[49,28.997]],["parent/2816",[0,0,1661,6.851]],["name/2817",[1666,78.994]],["parent/2817",[0,0,1661,6.851]],["name/2818",[49,28.997]],["parent/2818",[0,0,1661,6.851]],["name/2819",[1667,78.994]],["parent/2819",[0,0,1661,6.851]],["name/2820",[49,28.997]],["parent/2820",[0,0,1661,6.851]],["name/2821",[1668,78.994]],["parent/2821",[0,0,1661,6.851]],["name/2822",[1669,78.994]],["parent/2822",[0,0,1661,6.851]],["name/2823",[1670,78.994]],["parent/2823",[0,0,10,4.563]],["name/2824",[553,65.965]],["parent/2824",[0,0,1671,7.31]],["name/2825",[1672,73.872]],["parent/2825",[0,0,1671,7.31]],["name/2826",[1673,78.994]],["parent/2826",[0,0,1671,7.31]],["name/2827",[1674,73.872]],["parent/2827",[0,0,1671,7.31]],["name/2828",[49,28.997]],["parent/2828",[0,0,1671,7.31]],["name/2829",[1675,78.994]],["parent/2829",[0,0,1671,7.31]],["name/2830",[49,28.997]],["parent/2830",[0,0,1671,7.31]],["name/2831",[1676,73.872]],["parent/2831",[0,0,1671,7.31]],["name/2832",[1677,78.994]],["parent/2832",[0,0,10,4.563]],["name/2833",[1678,78.994]],["parent/2833",[0,0,1679,8.366]],["name/2834",[1680,78.994]],["parent/2834",[0,0,1679,8.366]],["name/2835",[1681,78.994]],["parent/2835",[0,0,1679,8.366]],["name/2836",[1682,78.994]],["parent/2836",[0,0,10,4.563]],["name/2837",[88,65.965]],["parent/2837",[0,0,1683,5.714]],["name/2838",[116,64.29]],["parent/2838",[0,0,1683,5.714]],["name/2839",[129,64.29]],["parent/2839",[0,0,1683,5.714]],["name/2840",[1684,78.994]],["parent/2840",[0,0,1683,5.714]],["name/2841",[100,60.485]],["parent/2841",[0,0,1683,5.714]],["name/2842",[106,70.498]],["parent/2842",[0,0,1683,5.714]],["name/2843",[94,70.498]],["parent/2843",[0,0,1683,5.714]],["name/2844",[673,62.855]],["parent/2844",[0,0,1683,5.714]],["name/2845",[675,62.855]],["parent/2845",[0,0,1683,5.714]],["name/2846",[1685,78.994]],["parent/2846",[0,0,1683,5.714]],["name/2847",[1686,78.994]],["parent/2847",[0,0,1683,5.714]],["name/2848",[1687,78.994]],["parent/2848",[0,0,1683,5.714]],["name/2849",[1688,78.994]],["parent/2849",[0,0,1683,5.714]],["name/2850",[1689,78.994]],["parent/2850",[0,0,1683,5.714]],["name/2851",[335,70.498]],["parent/2851",[0,0,1683,5.714]],["name/2852",[334,70.498]],["parent/2852",[0,0,1683,5.714]],["name/2853",[336,70.498]],["parent/2853",[0,0,1683,5.714]],["name/2854",[1690,73.872]],["parent/2854",[0,0,1683,5.714]],["name/2855",[1551,70.498]],["parent/2855",[0,0,1683,5.714]],["name/2856",[1548,70.498]],["parent/2856",[0,0,1683,5.714]],["name/2857",[111,65.965]],["parent/2857",[0,0,1683,5.714]],["name/2858",[128,70.498]],["parent/2858",[0,0,1683,5.714]],["name/2859",[127,70.498]],["parent/2859",[0,0,1683,5.714]],["name/2860",[126,67.978]],["parent/2860",[0,0,1683,5.714]],["name/2861",[104,70.498]],["parent/2861",[0,0,1683,5.714]],["name/2862",[1691,58.569]],["parent/2862",[0,0,1683,5.714]],["name/2863",[1692,78.994]],["parent/2863",[0,0,1683,5.714]],["name/2864",[1693,78.994]],["parent/2864",[0,0,1683,5.714]],["name/2865",[130,58.569]],["parent/2865",[0,0,1683,5.714]],["name/2866",[123,61.6]],["parent/2866",[0,0,1683,5.714]],["name/2867",[1545,70.498]],["parent/2867",[0,0,1683,5.714]],["name/2868",[1694,78.994]],["parent/2868",[0,0,1683,5.714]],["name/2869",[1695,78.994]],["parent/2869",[0,0,10,4.563]],["name/2870",[1696,78.994]],["parent/2870",[0,0,10,4.563]],["name/2871",[1697,78.994]],["parent/2871",[0,0,10,4.563]],["name/2872",[1698,78.994]],["parent/2872",[0,0,10,4.563]],["name/2873",[1699,78.994]],["parent/2873",[0,0,10,4.563]],["name/2874",[1700,78.994]],["parent/2874",[0,0,10,4.563]],["name/2875",[1701,78.994]],["parent/2875",[0,0,10,4.563]],["name/2876",[1702,78.994]],["parent/2876",[0,0,10,4.563]],["name/2877",[1703,78.994]],["parent/2877",[0,0,10,4.563]],["name/2878",[1704,78.994]],["parent/2878",[0,0,10,4.563]],["name/2879",[1705,78.994]],["parent/2879",[0,0,10,4.563]],["name/2880",[1706,78.994]],["parent/2880",[0,0,10,4.563]],["name/2881",[1707,78.994]],["parent/2881",[0,0,10,4.563]],["name/2882",[1708,78.994]],["parent/2882",[0,0,10,4.563]],["name/2883",[1709,78.994]],["parent/2883",[0,0,10,4.563]],["name/2884",[1710,78.994]],["parent/2884",[0,0,10,4.563]],["name/2885",[1711,78.994]],["parent/2885",[0,0,10,4.563]],["name/2886",[1712,78.994]],["parent/2886",[0,0,10,4.563]],["name/2887",[1713,78.994]],["parent/2887",[0,0,10,4.563]],["name/2888",[1714,78.994]],["parent/2888",[0,0,10,4.563]],["name/2889",[1715,78.994]],["parent/2889",[0,0,10,4.563]],["name/2890",[1716,78.994]],["parent/2890",[0,0,10,4.563]],["name/2891",[1717,78.994]],["parent/2891",[0,0,10,4.563]],["name/2892",[1718,78.994]],["parent/2892",[0,0,10,4.563]],["name/2893",[1719,78.994]],["parent/2893",[0,0,10,4.563]],["name/2894",[1720,78.994]],["parent/2894",[0,0,10,4.563]],["name/2895",[1721,78.994]],["parent/2895",[0,0,10,4.563]],["name/2896",[1722,78.994]],["parent/2896",[0,0,10,4.563]],["name/2897",[1723,78.994]],["parent/2897",[0,0,10,4.563]],["name/2898",[1724,78.994]],["parent/2898",[0,0,10,4.563]],["name/2899",[1725,78.994]],["parent/2899",[0,0,10,4.563]],["name/2900",[1726,78.994]],["parent/2900",[0,0,10,4.563]],["name/2901",[1727,78.994]],["parent/2901",[0,0,10,4.563]],["name/2902",[1728,78.994]],["parent/2902",[0,0,10,4.563]],["name/2903",[1729,78.994]],["parent/2903",[0,0,10,4.563]],["name/2904",[1730,78.994]],["parent/2904",[0,0,10,4.563]],["name/2905",[1731,78.994]],["parent/2905",[0,0,10,4.563]],["name/2906",[1732,78.994]],["parent/2906",[0,0,10,4.563]],["name/2907",[1733,78.994]],["parent/2907",[0,0,10,4.563]],["name/2908",[1734,78.994]],["parent/2908",[0,0,10,4.563]],["name/2909",[1735,78.994]],["parent/2909",[0,0,10,4.563]],["name/2910",[1736,78.994]],["parent/2910",[0,0,10,4.563]],["name/2911",[1737,78.994]],["parent/2911",[0,0,10,4.563]],["name/2912",[1738,78.994]],["parent/2912",[0,0,10,4.563]],["name/2913",[1739,78.994]],["parent/2913",[0,0,10,4.563]],["name/2914",[1014,70.498]],["parent/2914",[0,0,1740,6.95]],["name/2915",[1664,73.872]],["parent/2915",[0,0,1740,6.95]],["name/2916",[1665,73.872]],["parent/2916",[0,0,1740,6.95]],["name/2917",[49,28.997]],["parent/2917",[0,0,1740,6.95]],["name/2918",[1741,78.994]],["parent/2918",[0,0,1740,6.95]],["name/2919",[49,28.997]],["parent/2919",[0,0,1740,6.95]],["name/2920",[1742,78.994]],["parent/2920",[0,0,1740,6.95]],["name/2921",[1674,73.872]],["parent/2921",[0,0,1740,6.95]],["name/2922",[49,28.997]],["parent/2922",[0,0,1740,6.95]],["name/2923",[1672,73.872]],["parent/2923",[0,0,1740,6.95]],["name/2924",[1676,73.872]],["parent/2924",[0,0,1740,6.95]],["name/2925",[1743,78.994]],["parent/2925",[0,0,10,4.563]],["name/2926",[1744,78.994]],["parent/2926",[0,0,10,4.563]],["name/2927",[1745,78.994]],["parent/2927",[0,0,10,4.563]],["name/2928",[1746,78.994]],["parent/2928",[0,0,10,4.563]],["name/2929",[1747,78.994]],["parent/2929",[0,0,10,4.563]],["name/2930",[1748,78.994]],["parent/2930",[0,0,10,4.563]],["name/2931",[1749,78.994]],["parent/2931",[0,0,10,4.563]],["name/2932",[1750,78.994]],["parent/2932",[0,0,10,4.563]],["name/2933",[1751,78.994]],["parent/2933",[0,0,10,4.563]],["name/2934",[1752,78.994]],["parent/2934",[0,0,10,4.563]],["name/2935",[1753,78.994]],["parent/2935",[0,0,10,4.563]],["name/2936",[1754,78.994]],["parent/2936",[0,0,10,4.563]],["name/2937",[1755,78.994]],["parent/2937",[0,0,10,4.563]],["name/2938",[1756,78.994]],["parent/2938",[0,0,10,4.563]],["name/2939",[1757,78.994]],["parent/2939",[0,0,10,4.563]],["name/2940",[1758,78.994]],["parent/2940",[0,0,10,4.563]],["name/2941",[1759,78.994]],["parent/2941",[0,0,10,4.563]],["name/2942",[1760,78.994]],["parent/2942",[0,0,10,4.563]],["name/2943",[1761,78.994]],["parent/2943",[0,0,10,4.563]],["name/2944",[1762,78.994]],["parent/2944",[0,0,10,4.563]],["name/2945",[1763,78.994]],["parent/2945",[0,0,10,4.563]],["name/2946",[1764,78.994]],["parent/2946",[0,0,1765,8.066]],["name/2947",[1766,78.994]],["parent/2947",[0,0,1765,8.066]],["name/2948",[1767,78.994]],["parent/2948",[0,0,1765,8.066]],["name/2949",[1768,78.994]],["parent/2949",[0,0,1765,8.066]],["name/2950",[1769,78.994]],["parent/2950",[0,0]],["name/2951",[1770,78.994]],["parent/2951",[0,0,2,1.524,11,1.254,12,1.254]],["name/2952",[1771,78.994]],["parent/2952",[0,0,2,1.524,11,1.254,12,1.254]],["name/2953",[201,50.583]],["parent/2953",[0,0,11,1.254,12,1.254,1772,7.228]],["name/2954",[1773,78.994]],["parent/2954",[0,0,2,1.524,11,1.254,12,1.254]],["name/2955",[1774,78.994]],["parent/2955",[0,0,2,1.524,11,1.254,12,1.254]],["name/2956",[1215,59.481]],["parent/2956",[0,0,11,1.254,12,1.254,1775,7.228]],["name/2957",[1776,78.994]],["parent/2957",[0,0,2,1.524,11,1.254,12,1.254]],["name/2958",[1777,78.994]],["parent/2958",[0,0,2,1.524,11,1.254,12,1.254]],["name/2959",[1778,78.994]],["parent/2959",[0,0,2,1.524,11,1.254,12,1.254]],["name/2960",[1779,78.994]],["parent/2960",[0,0,2,1.524,11,1.254,12,1.254]],["name/2961",[1780,78.994]],["parent/2961",[0,0,2,1.524,11,1.254,12,1.254]],["name/2962",[1781,78.994]],["parent/2962",[0,0,2,1.524,11,1.254,12,1.254]],["name/2963",[1782,78.994]],["parent/2963",[0,0,2,1.524,11,1.254,12,1.254]],["name/2964",[1783,78.994]],["parent/2964",[0,0,2,1.524,11,1.254,12,1.254]],["name/2965",[1784,78.994]],["parent/2965",[0,0,2,1.524,11,1.254,12,1.254]],["name/2966",[49,28.997]],["parent/2966",[0,0,11,1.254,12,1.254,1785,7.228]],["name/2967",[1786,78.994]],["parent/2967",[0,0,2,1.524,11,1.254,12,1.254]],["name/2968",[355,65.965]],["parent/2968",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2969",[1788,78.994]],["parent/2969",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2970",[1789,78.994]],["parent/2970",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2971",[1790,70.498]],["parent/2971",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2972",[1791,78.994]],["parent/2972",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2973",[1792,78.994]],["parent/2973",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2974",[316,61.6]],["parent/2974",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2975",[1793,78.994]],["parent/2975",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2976",[1794,78.994]],["parent/2976",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2977",[1795,78.994]],["parent/2977",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2978",[1796,78.994]],["parent/2978",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2979",[1797,78.994]],["parent/2979",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2980",[1798,73.872]],["parent/2980",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2981",[1799,78.994]],["parent/2981",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2982",[190,59.481]],["parent/2982",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2983",[1800,58.569]],["parent/2983",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2984",[1801,78.994]],["parent/2984",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2985",[1691,58.569]],["parent/2985",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2986",[1215,59.481]],["parent/2986",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2987",[1802,73.872]],["parent/2987",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2988",[1803,78.994]],["parent/2988",[0,0,11,1.254,12,1.254,1787,4.785]],["name/2989",[1804,78.994]],["parent/2989",[0,0,2,1.524,11,1.254,12,1.254]],["name/2990",[1805,78.994]],["parent/2990",[0,0,2,1.524,11,1.254,12,1.254]],["name/2991",[675,62.855]],["parent/2991",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2992",[88,65.965]],["parent/2992",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2993",[1807,73.872]],["parent/2993",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2994",[1808,78.994]],["parent/2994",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2995",[1809,70.498]],["parent/2995",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2996",[1215,59.481]],["parent/2996",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2997",[230,64.29]],["parent/2997",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2998",[1810,73.872]],["parent/2998",[0,0,11,1.254,12,1.254,1806,4.351]],["name/2999",[1811,73.872]],["parent/2999",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3000",[671,70.498]],["parent/3000",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3001",[100,60.485]],["parent/3001",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3002",[1812,73.872]],["parent/3002",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3003",[678,65.965]],["parent/3003",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3004",[116,64.29]],["parent/3004",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3005",[1813,70.498]],["parent/3005",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3006",[703,65.965]],["parent/3006",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3007",[1800,58.569]],["parent/3007",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3008",[1814,78.994]],["parent/3008",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3009",[1815,78.994]],["parent/3009",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3010",[1816,73.872]],["parent/3010",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3011",[1817,78.994]],["parent/3011",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3012",[1818,78.994]],["parent/3012",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3013",[1819,73.872]],["parent/3013",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3014",[1820,78.994]],["parent/3014",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3015",[1821,78.994]],["parent/3015",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3016",[1822,73.872]],["parent/3016",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3017",[1823,78.994]],["parent/3017",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3018",[706,65.965]],["parent/3018",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3019",[673,62.855]],["parent/3019",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3020",[1824,78.994]],["parent/3020",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3021",[129,64.29]],["parent/3021",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3022",[833,67.978]],["parent/3022",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3023",[1825,73.872]],["parent/3023",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3024",[1826,73.872]],["parent/3024",[0,0,11,1.254,12,1.254,1806,4.351]],["name/3025",[1827,78.994]],["parent/3025",[0,0,2,1.524,11,1.254,12,1.254]],["name/3026",[1828,78.994]],["parent/3026",[0,0,2,1.524,11,1.254,12,1.254]],["name/3027",[49,28.997]],["parent/3027",[0,0,11,1.254,12,1.254,1829,7.228]],["name/3028",[675,62.855]],["parent/3028",[0,0,11,1.254,12,1.254,1830,7.228]],["name/3029",[1831,78.994]],["parent/3029",[0,0,2,1.524,11,1.254,12,1.254]],["name/3030",[49,28.997]],["parent/3030",[0,0,11,1.254,12,1.254,1832,7.228]],["name/3031",[1833,78.994]],["parent/3031",[0,0,11,1.254,12,1.254,1834,7.228]],["name/3032",[1835,78.994]],["parent/3032",[0,0,2,1.524,11,1.254,12,1.254]],["name/3033",[49,28.997]],["parent/3033",[0,0,11,1.254,12,1.254,1836,7.228]],["name/3034",[671,70.498]],["parent/3034",[0,0,11,1.254,12,1.254,1837,7.228]],["name/3035",[1838,78.994]],["parent/3035",[0,0,2,1.524,11,1.254,12,1.254]],["name/3036",[49,28.997]],["parent/3036",[0,0,11,1.254,12,1.254,1839,7.228]],["name/3037",[100,60.485]],["parent/3037",[0,0,11,1.254,12,1.254,1840,7.228]],["name/3038",[1841,78.994]],["parent/3038",[0,0,2,1.524,11,1.254,12,1.254]],["name/3039",[49,28.997]],["parent/3039",[0,0,11,1.254,12,1.254,1842,7.228]],["name/3040",[116,64.29]],["parent/3040",[0,0,11,1.254,12,1.254,1843,7.228]],["name/3041",[1844,78.994]],["parent/3041",[0,0,2,1.524,11,1.254,12,1.254]],["name/3042",[49,28.997]],["parent/3042",[0,0,11,1.254,12,1.254,1845,7.228]],["name/3043",[1813,70.498]],["parent/3043",[0,0,11,1.254,12,1.254,1846,7.228]],["name/3044",[1847,78.994]],["parent/3044",[0,0,2,1.524,11,1.254,12,1.254]],["name/3045",[49,28.997]],["parent/3045",[0,0,11,1.254,12,1.254,1848,7.228]],["name/3046",[703,65.965]],["parent/3046",[0,0,11,1.254,12,1.254,1849,7.228]],["name/3047",[1850,78.994]],["parent/3047",[0,0,2,1.524,11,1.254,12,1.254]],["name/3048",[49,28.997]],["parent/3048",[0,0,11,1.254,12,1.254,1851,7.228]],["name/3049",[126,67.978]],["parent/3049",[0,0,11,1.254,12,1.254,1852,7.228]],["name/3050",[1853,78.994]],["parent/3050",[0,0,2,1.524,11,1.254,12,1.254]],["name/3051",[49,28.997]],["parent/3051",[0,0,11,1.254,12,1.254,1854,7.228]],["name/3052",[1855,78.994]],["parent/3052",[0,0,11,1.254,12,1.254,1856,7.228]],["name/3053",[1857,78.994]],["parent/3053",[0,0,2,1.524,11,1.254,12,1.254]],["name/3054",[49,28.997]],["parent/3054",[0,0,11,1.254,12,1.254,1858,7.228]],["name/3055",[673,62.855]],["parent/3055",[0,0,11,1.254,12,1.254,1859,7.228]],["name/3056",[1860,78.994]],["parent/3056",[0,0,2,1.524,11,1.254,12,1.254]],["name/3057",[49,28.997]],["parent/3057",[0,0,11,1.254,12,1.254,1861,7.228]],["name/3058",[129,64.29]],["parent/3058",[0,0,11,1.254,12,1.254,1862,7.228]],["name/3059",[1863,78.994]],["parent/3059",[0,0,2,1.524,11,1.254,12,1.254]],["name/3060",[49,28.997]],["parent/3060",[0,0,11,1.254,12,1.254,1864,7.228]],["name/3061",[1865,78.994]],["parent/3061",[0,0,11,1.254,12,1.254,1866,7.228]],["name/3062",[1867,78.994]],["parent/3062",[0,0,2,1.524,11,1.254,12,1.254]],["name/3063",[49,28.997]],["parent/3063",[0,0,11,1.254,12,1.254,1868,7.228]],["name/3064",[833,67.978]],["parent/3064",[0,0,11,1.254,12,1.254,1869,7.228]],["name/3065",[1870,78.994]],["parent/3065",[0,0,2,1.524,11,1.254,12,1.254]],["name/3066",[49,28.997]],["parent/3066",[0,0,11,1.254,12,1.254,1871,7.228]],["name/3067",[1826,73.872]],["parent/3067",[0,0,11,1.254,12,1.254,1872,7.228]],["name/3068",[1873,78.994]],["parent/3068",[0,0,2,1.524,11,1.254,12,1.254]],["name/3069",[49,28.997]],["parent/3069",[0,0,11,1.254,12,1.254,1874,7.228]],["name/3070",[1875,78.994]],["parent/3070",[0,0,11,1.254,12,1.254,1876,6.036]],["name/3071",[1877,78.994]],["parent/3071",[0,0,11,1.254,12,1.254,1876,6.036]],["name/3072",[1878,78.994]],["parent/3072",[0,0,11,1.254,12,1.254,1876,6.036]],["name/3073",[1879,78.994]],["parent/3073",[0,0,11,1.254,12,1.254,1876,6.036]],["name/3074",[1880,73.872]],["parent/3074",[0,0,11,1.254,12,1.254,1876,6.036]],["name/3075",[1881,78.994]],["parent/3075",[0,0,2,1.524,11,1.254,12,1.254]],["name/3076",[49,28.997]],["parent/3076",[0,0,11,1.254,12,1.254,1882,7.228]],["name/3077",[230,64.29]],["parent/3077",[0,0,11,1.254,12,1.254,1883,7.228]],["name/3078",[1884,78.994]],["parent/3078",[0,0,2,1.524,11,1.254,12,1.254]],["name/3079",[49,28.997]],["parent/3079",[0,0,11,1.254,12,1.254,1885,7.228]],["name/3080",[1812,73.872]],["parent/3080",[0,0,11,1.254,12,1.254,1886,7.228]],["name/3081",[1887,78.994]],["parent/3081",[0,0,2,1.524,11,1.254,12,1.254]],["name/3082",[49,28.997]],["parent/3082",[0,0,11,1.254,12,1.254,1888,7.228]],["name/3083",[704,67.978]],["parent/3083",[0,0,11,1.254,12,1.254,1889,6.22]],["name/3084",[1890,78.994]],["parent/3084",[0,0,11,1.254,12,1.254,1889,6.22]],["name/3085",[705,67.978]],["parent/3085",[0,0,11,1.254,12,1.254,1889,6.22]],["name/3086",[1891,78.994]],["parent/3086",[0,0,11,1.254,12,1.254,1889,6.22]],["name/3087",[1892,78.994]],["parent/3087",[0,0,2,1.524,11,1.254,12,1.254]],["name/3088",[49,28.997]],["parent/3088",[0,0,11,1.254,12,1.254,1893,7.228]],["name/3089",[1894,78.994]],["parent/3089",[0,0,11,1.254,12,1.254,1895,6.22]],["name/3090",[1896,78.994]],["parent/3090",[0,0,11,1.254,12,1.254,1895,6.22]],["name/3091",[1897,78.994]],["parent/3091",[0,0,11,1.254,12,1.254,1895,6.22]],["name/3092",[1898,78.994]],["parent/3092",[0,0,11,1.254,12,1.254,1895,6.22]],["name/3093",[1899,78.994]],["parent/3093",[0,0,2,1.524,11,1.254,12,1.254]],["name/3094",[49,28.997]],["parent/3094",[0,0,11,1.254,12,1.254,1900,7.228]],["name/3095",[706,65.965]],["parent/3095",[0,0,11,1.254,12,1.254,1901,7.228]],["name/3096",[1902,78.994]],["parent/3096",[0,0,2,1.524,11,1.254,12,1.254]],["name/3097",[49,28.997]],["parent/3097",[0,0,11,1.254,12,1.254,1903,7.228]],["name/3098",[1825,73.872]],["parent/3098",[0,0,11,1.254,12,1.254,1904,7.228]],["name/3099",[1905,78.994]],["parent/3099",[0,0,2,1.524,11,1.254,12,1.254]],["name/3100",[49,28.997]],["parent/3100",[0,0,11,1.254,12,1.254,1906,7.228]],["name/3101",[1810,73.872]],["parent/3101",[0,0,11,1.254,12,1.254,1907,7.228]],["name/3102",[1908,78.994]],["parent/3102",[0,0,2,1.524,11,1.254,12,1.254]],["name/3103",[49,28.997]],["parent/3103",[0,0,11,1.254,12,1.254,1909,7.228]],["name/3104",[678,65.965]],["parent/3104",[0,0,11,1.254,12,1.254,1910,7.228]],["name/3105",[1911,78.994]],["parent/3105",[0,0,2,1.524,11,1.254,12,1.254]],["name/3106",[49,28.997]],["parent/3106",[0,0,11,1.254,12,1.254,1912,7.228]],["name/3107",[1913,78.994]],["parent/3107",[0,0,11,1.254,12,1.254,1914,7.228]],["name/3108",[1915,78.994]],["parent/3108",[0,0,2,1.524,11,1.254,12,1.254]],["name/3109",[49,28.997]],["parent/3109",[0,0,11,1.254,12,1.254,1916,7.228]],["name/3110",[1822,73.872]],["parent/3110",[0,0,11,1.254,12,1.254,1917,7.228]],["name/3111",[1918,78.994]],["parent/3111",[0,0,2,1.524,11,1.254,12,1.254]],["name/3112",[49,28.997]],["parent/3112",[0,0,11,1.254,12,1.254,1919,7.228]],["name/3113",[1920,78.994]],["parent/3113",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3114",[1922,78.994]],["parent/3114",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3115",[1923,78.994]],["parent/3115",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3116",[1924,78.994]],["parent/3116",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3117",[1925,78.994]],["parent/3117",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3118",[1926,78.994]],["parent/3118",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3119",[1927,78.994]],["parent/3119",[0,0,11,1.254,12,1.254,1921,5.751]],["name/3120",[1928,78.994]],["parent/3120",[0,0,2,1.524,11,1.254,12,1.254]],["name/3121",[49,28.997]],["parent/3121",[0,0,11,1.254,12,1.254,1929,7.228]],["name/3122",[1194,70.498]],["parent/3122",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3123",[1195,70.498]],["parent/3123",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3124",[1931,78.994]],["parent/3124",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3125",[1932,78.994]],["parent/3125",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3126",[1199,73.872]],["parent/3126",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3127",[1200,73.872]],["parent/3127",[0,0,11,1.254,12,1.254,1930,5.883]],["name/3128",[1933,78.994]],["parent/3128",[0,0,2,1.524,11,1.254,12,1.254]],["name/3129",[49,28.997]],["parent/3129",[0,0,11,1.254,12,1.254,1934,7.228]],["name/3130",[1809,70.498]],["parent/3130",[0,0,11,1.254,12,1.254,1935,7.228]],["name/3131",[1936,78.994]],["parent/3131",[0,0,2,1.524,11,1.254,12,1.254]],["name/3132",[49,28.997]],["parent/3132",[0,0,11,1.254,12,1.254,1937,7.228]],["name/3133",[1938,78.994]],["parent/3133",[0,0,11,1.254,12,1.254,1939,6.759]],["name/3134",[1940,78.994]],["parent/3134",[0,0,11,1.254,12,1.254,1939,6.759]],["name/3135",[1941,78.994]],["parent/3135",[0,0,2,1.524,11,1.254,12,1.254]],["name/3136",[49,28.997]],["parent/3136",[0,0,11,1.254,12,1.254,1942,7.228]],["name/3137",[1816,73.872]],["parent/3137",[0,0,11,1.254,12,1.254,1943,7.228]],["name/3138",[1944,78.994]],["parent/3138",[0,0,2,1.524,11,1.254,12,1.254]],["name/3139",[49,28.997]],["parent/3139",[0,0,11,1.254,12,1.254,1945,7.228]],["name/3140",[1811,73.872]],["parent/3140",[0,0,11,1.254,12,1.254,1946,7.228]],["name/3141",[1947,78.994]],["parent/3141",[0,0,2,1.524,11,1.254,12,1.254]],["name/3142",[1948,78.994]],["parent/3142",[0,0,2,1.524,11,1.254,12,1.254]],["name/3143",[49,28.997]],["parent/3143",[0,0,11,1.254,12,1.254,1949,7.228]],["name/3144",[821,73.872]],["parent/3144",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3145",[823,73.872]],["parent/3145",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3146",[824,73.872]],["parent/3146",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3147",[825,73.872]],["parent/3147",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3148",[826,73.872]],["parent/3148",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3149",[827,73.872]],["parent/3149",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3150",[828,73.872]],["parent/3150",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3151",[829,73.872]],["parent/3151",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3152",[830,73.872]],["parent/3152",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3153",[831,73.872]],["parent/3153",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3154",[381,70.498]],["parent/3154",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3155",[833,67.978]],["parent/3155",[0,0,11,1.254,12,1.254,1950,5.283]],["name/3156",[1951,78.994]],["parent/3156",[0,0,2,1.524,11,1.254,12,1.254]],["name/3157",[49,28.997]],["parent/3157",[0,0,11,1.254,12,1.254,1952,7.228]],["name/3158",[1953,78.994]],["parent/3158",[0,0,11,1.254,12,1.254,1954,6.759]],["name/3159",[1955,78.994]],["parent/3159",[0,0,11,1.254,12,1.254,1954,6.759]],["name/3160",[1956,78.994]],["parent/3160",[0,0,2,1.524,11,1.254,12,1.254]],["name/3161",[49,28.997]],["parent/3161",[0,0,11,1.254,12,1.254,1957,7.228]],["name/3162",[1958,78.994]],["parent/3162",[0,0,11,1.254,12,1.254,1959,6.759]],["name/3163",[1960,78.994]],["parent/3163",[0,0,11,1.254,12,1.254,1959,6.759]],["name/3164",[1961,78.994]],["parent/3164",[0,0,2,1.524,11,1.254,12,1.254]],["name/3165",[49,28.997]],["parent/3165",[0,0,11,1.254,12,1.254,1962,7.228]],["name/3166",[1963,78.994]],["parent/3166",[0,0,11,1.254,12,1.254,1964,6.22]],["name/3167",[1965,78.994]],["parent/3167",[0,0,11,1.254,12,1.254,1964,6.22]],["name/3168",[1966,78.994]],["parent/3168",[0,0,11,1.254,12,1.254,1964,6.22]],["name/3169",[1967,78.994]],["parent/3169",[0,0,11,1.254,12,1.254,1964,6.22]],["name/3170",[1968,78.994]],["parent/3170",[0,0,2,1.524,11,1.254,12,1.254]],["name/3171",[1969,78.994]],["parent/3171",[0,0,2,1.524,11,1.254,12,1.254]],["name/3172",[49,28.997]],["parent/3172",[0,0,11,1.254,12,1.254,1970,7.228]],["name/3173",[1971,78.994]],["parent/3173",[0,0,11,1.254,12,1.254,1972,7.228]],["name/3174",[1973,78.994]],["parent/3174",[0,0,2,1.524,11,1.254,12,1.254]],["name/3175",[1974,78.994]],["parent/3175",[0,0,2,1.524,11,1.254,12,1.254]],["name/3176",[1975,78.994]],["parent/3176",[0,0,2,1.524,11,1.254,12,1.254]],["name/3177",[1976,78.994]],["parent/3177",[0,0,2,1.524,11,1.254,12,1.254]],["name/3178",[1977,78.994]],["parent/3178",[0,0,2,1.524,11,1.254,12,1.254]],["name/3179",[1978,78.994]],["parent/3179",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3180",[1980,70.498]],["parent/3180",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3181",[1981,78.994]],["parent/3181",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3182",[1982,78.994]],["parent/3182",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3183",[1983,62.855]],["parent/3183",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3184",[1984,60.485]],["parent/3184",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3185",[201,50.583]],["parent/3185",[0,0,11,1.254,12,1.254,1979,5.751]],["name/3186",[1985,78.994]],["parent/3186",[0,0,2,1.524,11,1.254,12,1.254]],["name/3187",[1986,78.994]],["parent/3187",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3188",[1988,78.994]],["parent/3188",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3189",[1984,60.485]],["parent/3189",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3190",[201,50.583]],["parent/3190",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3191",[1215,59.481]],["parent/3191",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3192",[1983,62.855]],["parent/3192",[0,0,11,1.254,12,1.254,1987,5.883]],["name/3193",[1989,78.994]],["parent/3193",[0,0,2,1.524,11,1.254,12,1.254]],["name/3194",[1990,70.498]],["parent/3194",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3195",[1819,73.872]],["parent/3195",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3196",[1992,58.569]],["parent/3196",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3197",[1983,62.855]],["parent/3197",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3198",[1984,60.485]],["parent/3198",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3199",[201,50.583]],["parent/3199",[0,0,11,1.254,12,1.254,1991,5.883]],["name/3200",[1993,78.994]],["parent/3200",[0,0,2,1.524,11,1.254,12,1.254]],["name/3201",[1984,60.485]],["parent/3201",[0,0,11,1.254,12,1.254,1994,6.759]],["name/3202",[201,50.583]],["parent/3202",[0,0,11,1.254,12,1.254,1994,6.759]],["name/3203",[1995,78.994]],["parent/3203",[0,0,2,1.524,11,1.254,12,1.254]],["name/3204",[1983,62.855]],["parent/3204",[0,0,11,1.254,12,1.254,1996,7.228]],["name/3205",[1997,78.994]],["parent/3205",[0,0,2,1.524,11,1.254,12,1.254]],["name/3206",[1195,70.498]],["parent/3206",[0,0,11,1.254,12,1.254,1998,6.22]],["name/3207",[1422,73.872]],["parent/3207",[0,0,11,1.254,12,1.254,1998,6.22]],["name/3208",[1983,62.855]],["parent/3208",[0,0,11,1.254,12,1.254,1998,6.22]],["name/3209",[201,50.583]],["parent/3209",[0,0,11,1.254,12,1.254,1998,6.22]],["name/3210",[1999,78.994]],["parent/3210",[0,0,2,1.524,11,1.254,12,1.254]],["name/3211",[679,73.872]],["parent/3211",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3212",[680,73.872]],["parent/3212",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3213",[32,53.274]],["parent/3213",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3214",[678,65.965]],["parent/3214",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3215",[1984,60.485]],["parent/3215",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3216",[201,50.583]],["parent/3216",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3217",[2001,62.855]],["parent/3217",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3218",[1800,58.569]],["parent/3218",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3219",[1691,58.569]],["parent/3219",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3220",[1992,58.569]],["parent/3220",[0,0,11,1.254,12,1.254,2000,5.443]],["name/3221",[2002,78.994]],["parent/3221",[0,0,2,1.524,11,1.254,12,1.254]],["name/3222",[2003,62.855]],["parent/3222",[0,0,11,1.254,12,1.254,2004,6.451]],["name/3223",[2005,62.855]],["parent/3223",[0,0,11,1.254,12,1.254,2004,6.451]],["name/3224",[201,50.583]],["parent/3224",[0,0,11,1.254,12,1.254,2004,6.451]],["name/3225",[2006,78.994]],["parent/3225",[0,0,2,1.524,11,1.254,12,1.254]],["name/3226",[2003,62.855]],["parent/3226",[0,0,11,1.254,12,1.254,2007,6.759]],["name/3227",[2005,62.855]],["parent/3227",[0,0,11,1.254,12,1.254,2007,6.759]],["name/3228",[2008,78.994]],["parent/3228",[0,0,2,1.524,11,1.254,12,1.254]],["name/3229",[1990,70.498]],["parent/3229",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3230",[2010,78.994]],["parent/3230",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3231",[1983,62.855]],["parent/3231",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3232",[2003,62.855]],["parent/3232",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3233",[2005,62.855]],["parent/3233",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3234",[1984,60.485]],["parent/3234",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3235",[201,50.583]],["parent/3235",[0,0,11,1.254,12,1.254,2009,5.751]],["name/3236",[2011,78.994]],["parent/3236",[0,0,2,1.524,11,1.254,12,1.254]],["name/3237",[179,60.485]],["parent/3237",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3238",[1992,58.569]],["parent/3238",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3239",[2003,62.855]],["parent/3239",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3240",[2005,62.855]],["parent/3240",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3241",[1984,60.485]],["parent/3241",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3242",[201,50.583]],["parent/3242",[0,0,11,1.254,12,1.254,2012,5.883]],["name/3243",[2013,78.994]],["parent/3243",[0,0,2,1.524,11,1.254,12,1.254]],["name/3244",[2014,73.872]],["parent/3244",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3245",[2016,78.994]],["parent/3245",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3246",[2003,62.855]],["parent/3246",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3247",[2005,62.855]],["parent/3247",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3248",[1984,60.485]],["parent/3248",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3249",[201,50.583]],["parent/3249",[0,0,11,1.254,12,1.254,2015,5.883]],["name/3250",[2017,78.994]],["parent/3250",[0,0,2,1.524,11,1.254,12,1.254]],["name/3251",[1192,73.872]],["parent/3251",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3252",[1193,73.872]],["parent/3252",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3253",[2019,78.994]],["parent/3253",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3254",[1992,58.569]],["parent/3254",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3255",[2003,62.855]],["parent/3255",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3256",[2005,62.855]],["parent/3256",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3257",[201,50.583]],["parent/3257",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3258",[1215,59.481]],["parent/3258",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3259",[1983,62.855]],["parent/3259",[0,0,11,1.254,12,1.254,2018,5.534]],["name/3260",[2020,78.994]],["parent/3260",[0,0,2,1.524,11,1.254,12,1.254]],["name/3261",[2021,78.994]],["parent/3261",[0,0,2,1.524,11,1.254,12,1.254]],["name/3262",[2001,62.855]],["parent/3262",[0,0,11,1.254,12,1.254,2022,6.036]],["name/3263",[1800,58.569]],["parent/3263",[0,0,11,1.254,12,1.254,2022,6.036]],["name/3264",[1691,58.569]],["parent/3264",[0,0,11,1.254,12,1.254,2022,6.036]],["name/3265",[1992,58.569]],["parent/3265",[0,0,11,1.254,12,1.254,2022,6.036]],["name/3266",[201,50.583]],["parent/3266",[0,0,11,1.254,12,1.254,2022,6.036]],["name/3267",[2023,78.994]],["parent/3267",[0,0,2,1.524,11,1.254,12,1.254]],["name/3268",[179,60.485]],["parent/3268",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3269",[1992,58.569]],["parent/3269",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3270",[2003,62.855]],["parent/3270",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3271",[2005,62.855]],["parent/3271",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3272",[1984,60.485]],["parent/3272",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3273",[201,50.583]],["parent/3273",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3274",[2001,62.855]],["parent/3274",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3275",[1800,58.569]],["parent/3275",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3276",[1691,58.569]],["parent/3276",[0,0,11,1.254,12,1.254,2024,5.534]],["name/3277",[2025,78.994]],["parent/3277",[0,0,2,1.524,11,1.254,12,1.254]],["name/3278",[2026,78.994]],["parent/3278",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3279",[149,70.498]],["parent/3279",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3280",[31,73.872]],["parent/3280",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3281",[2028,78.994]],["parent/3281",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3282",[2001,62.855]],["parent/3282",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3283",[1800,58.569]],["parent/3283",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3284",[1691,58.569]],["parent/3284",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3285",[1992,58.569]],["parent/3285",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3286",[201,50.583]],["parent/3286",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3287",[1215,59.481]],["parent/3287",[0,0,11,1.254,12,1.254,2027,5.443]],["name/3288",[2029,78.994]],["parent/3288",[0,0,2,1.524,11,1.254,12,1.254]],["name/3289",[182,60.485]],["parent/3289",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3290",[2001,62.855]],["parent/3290",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3291",[1800,58.569]],["parent/3291",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3292",[1691,58.569]],["parent/3292",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3293",[1992,58.569]],["parent/3293",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3294",[201,50.583]],["parent/3294",[0,0,11,1.254,12,1.254,2030,5.883]],["name/3295",[2031,78.994]],["parent/3295",[0,0,2,1.524,11,1.254,12,1.254]],["name/3296",[1992,58.569]],["parent/3296",[0,0,11,1.254,12,1.254,2032,6.036]],["name/3297",[2001,62.855]],["parent/3297",[0,0,11,1.254,12,1.254,2032,6.036]],["name/3298",[1800,58.569]],["parent/3298",[0,0,11,1.254,12,1.254,2032,6.036]],["name/3299",[1691,58.569]],["parent/3299",[0,0,11,1.254,12,1.254,2032,6.036]],["name/3300",[201,50.583]],["parent/3300",[0,0,11,1.254,12,1.254,2032,6.036]],["name/3301",[2033,78.994]],["parent/3301",[0,0,2,1.524,11,1.254,12,1.254]],["name/3302",[2001,62.855]],["parent/3302",[0,0,11,1.254,12,1.254,2034,6.036]],["name/3303",[1800,58.569]],["parent/3303",[0,0,11,1.254,12,1.254,2034,6.036]],["name/3304",[1691,58.569]],["parent/3304",[0,0,11,1.254,12,1.254,2034,6.036]],["name/3305",[1992,58.569]],["parent/3305",[0,0,11,1.254,12,1.254,2034,6.036]],["name/3306",[201,50.583]],["parent/3306",[0,0,11,1.254,12,1.254,2034,6.036]],["name/3307",[2035,78.994]],["parent/3307",[0,0,2,1.524,11,1.254,12,1.254]],["name/3308",[2036,78.994]],["parent/3308",[0,0,2,1.524,11,1.254,12,1.254]],["name/3309",[201,50.583]],["parent/3309",[0,0,11,1.254,12,1.254,2037,7.228]],["name/3310",[2038,78.994]],["parent/3310",[0,0,2,1.524,11,1.254,12,1.254]],["name/3311",[201,50.583]],["parent/3311",[0,0,11,1.254,12,1.254,2039,6.759]],["name/3312",[1215,59.481]],["parent/3312",[0,0,11,1.254,12,1.254,2039,6.759]],["name/3313",[2040,78.994]],["parent/3313",[0,0,2,1.524,11,1.254,12,1.254]],["name/3314",[1990,70.498]],["parent/3314",[0,0,11,1.254,12,1.254,2041,6.759]],["name/3315",[201,50.583]],["parent/3315",[0,0,11,1.254,12,1.254,2041,6.759]],["name/3316",[2042,78.994]],["parent/3316",[0,0,2,1.524,11,1.254,12,1.254]],["name/3317",[2043,78.994]],["parent/3317",[0,0,2,1.524,11,1.254,12,1.254]],["name/3318",[301,70.498]],["parent/3318",[0,0,11,1.254,12,1.254,2044,6.451]],["name/3319",[201,50.583]],["parent/3319",[0,0,11,1.254,12,1.254,2044,6.451]],["name/3320",[1215,59.481]],["parent/3320",[0,0,11,1.254,12,1.254,2044,6.451]],["name/3321",[2045,78.994]],["parent/3321",[0,0,2,1.524,11,1.254,12,1.254]],["name/3322",[1992,58.569]],["parent/3322",[0,0,11,1.254,12,1.254,2046,7.228]],["name/3323",[2047,78.994]],["parent/3323",[0,0,2,1.524,11,1.254,12,1.254]],["name/3324",[49,28.997]],["parent/3324",[0,0,11,1.254,12,1.254,2048,7.228]],["name/3325",[355,65.965]],["parent/3325",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3326",[2050,78.994]],["parent/3326",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3327",[2051,78.994]],["parent/3327",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3328",[527,60.485]],["parent/3328",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3329",[2052,78.994]],["parent/3329",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3330",[1802,73.872]],["parent/3330",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3331",[190,59.481]],["parent/3331",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3332",[2053,78.994]],["parent/3332",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3333",[1798,73.872]],["parent/3333",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3334",[2054,73.872]],["parent/3334",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3335",[2055,78.994]],["parent/3335",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3336",[1790,70.498]],["parent/3336",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3337",[2056,78.994]],["parent/3337",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3338",[316,61.6]],["parent/3338",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3339",[182,60.485]],["parent/3339",[0,0,11,1.254,12,1.254,2049,5.085]],["name/3340",[2057,67.978]],["parent/3340",[0,0,2,1.524,11,1.254,12,1.254]],["name/3341",[2058,70.498]],["parent/3341",[0,0,2,1.524,11,1.254,12,1.254]],["name/3342",[2059,78.994]],["parent/3342",[0,0,2,1.524,11,1.254,12,1.254]],["name/3343",[2060,65.965]],["parent/3343",[0,0,2,1.524,11,1.254,12,1.254]],["name/3344",[49,28.997]],["parent/3344",[0,0,11,1.254,12,1.254,2061,7.228]],["name/3345",[2062,78.994]],["parent/3345",[0,0,2,1.524,11,1.254,12,1.254]],["name/3346",[2063,73.872]],["parent/3346",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3347",[2058,70.498]],["parent/3347",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3348",[2057,67.978]],["parent/3348",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3349",[2065,73.872]],["parent/3349",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3350",[2066,73.872]],["parent/3350",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3351",[2060,65.965]],["parent/3351",[0,0,11,1.254,12,1.254,2064,5.883]],["name/3352",[2067,78.994]],["parent/3352",[0,0,2,1.524,11,1.254,12,1.254]],["name/3353",[49,28.997]],["parent/3353",[0,0,11,1.254,12,1.254,2068,7.228]],["name/3354",[2069,78.994]],["parent/3354",[0,0,2,1.524,11,1.254,12,1.254]],["name/3355",[2070,78.994]],["parent/3355",[0,0,2,1.524,11,1.254,12,1.254]],["name/3356",[2071,70.498]],["parent/3356",[0,0,2,1.524,11,1.254,12,1.254]],["name/3357",[2072,78.994]],["parent/3357",[0,0,2,1.524,11,1.254,12,1.254]],["name/3358",[2073,78.994]],["parent/3358",[0,0,2,1.524,11,1.254,12,1.254]],["name/3359",[2074,73.872]],["parent/3359",[0,0,11,1.254,12,1.254,2075,6.036]],["name/3360",[2076,73.872]],["parent/3360",[0,0,11,1.254,12,1.254,2075,6.036]],["name/3361",[2071,70.498]],["parent/3361",[0,0,11,1.254,12,1.254,2075,6.036]],["name/3362",[2077,73.872]],["parent/3362",[0,0,11,1.254,12,1.254,2075,6.036]],["name/3363",[2078,73.872]],["parent/3363",[0,0,11,1.254,12,1.254,2075,6.036]],["name/3364",[2079,78.994]],["parent/3364",[0,0,2,1.524,11,1.254,12,1.254]],["name/3365",[49,28.997]],["parent/3365",[0,0,11,1.254,12,1.254,2080,7.228]],["name/3366",[2081,78.994]],["parent/3366",[0,0,2,1.524,11,1.254,12,1.254]],["name/3367",[60,55.576]],["parent/3367",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3368",[59,60.485]],["parent/3368",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3369",[1005,64.29]],["parent/3369",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3370",[2083,67.978]],["parent/3370",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3371",[682,59.481]],["parent/3371",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3372",[2084,70.498]],["parent/3372",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3373",[2085,70.498]],["parent/3373",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3374",[2086,73.872]],["parent/3374",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3375",[2087,73.872]],["parent/3375",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3376",[1576,70.498]],["parent/3376",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3377",[1980,70.498]],["parent/3377",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3378",[2088,67.978]],["parent/3378",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3379",[2074,73.872]],["parent/3379",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3380",[2076,73.872]],["parent/3380",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3381",[2071,70.498]],["parent/3381",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3382",[2077,73.872]],["parent/3382",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3383",[2078,73.872]],["parent/3383",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3384",[1800,58.569]],["parent/3384",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3385",[1691,58.569]],["parent/3385",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3386",[2089,73.872]],["parent/3386",[0,0,11,1.254,12,1.254,2082,4.829]],["name/3387",[2090,78.994]],["parent/3387",[0,0,2,1.524,11,1.254,12,1.254]],["name/3388",[49,28.997]],["parent/3388",[0,0,11,1.254,12,1.254,2091,7.228]],["name/3389",[2092,78.994]],["parent/3389",[0,0,2,1.524,11,1.254,12,1.254]],["name/3390",[2086,73.872]],["parent/3390",[0,0,11,1.254,12,1.254,2093,6.759]],["name/3391",[2087,73.872]],["parent/3391",[0,0,11,1.254,12,1.254,2093,6.759]],["name/3392",[2094,78.994]],["parent/3392",[0,0,2,1.524,11,1.254,12,1.254]],["name/3393",[60,55.576]],["parent/3393",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3394",[59,60.485]],["parent/3394",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3395",[1005,64.29]],["parent/3395",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3396",[2083,67.978]],["parent/3396",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3397",[682,59.481]],["parent/3397",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3398",[2084,70.498]],["parent/3398",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3399",[2085,70.498]],["parent/3399",[0,0,11,1.254,12,1.254,2095,5.751]],["name/3400",[2096,78.994]],["parent/3400",[0,0,2,1.524,11,1.254,12,1.254]],["name/3401",[1576,70.498]],["parent/3401",[0,0,11,1.254,12,1.254,2097,6.451]],["name/3402",[1980,70.498]],["parent/3402",[0,0,11,1.254,12,1.254,2097,6.451]],["name/3403",[2088,67.978]],["parent/3403",[0,0,11,1.254,12,1.254,2097,6.451]],["name/3404",[2098,78.994]],["parent/3404",[0,0,2,1.524,11,1.254,12,1.254]],["name/3405",[1800,58.569]],["parent/3405",[0,0,11,1.254,12,1.254,2099,6.451]],["name/3406",[1691,58.569]],["parent/3406",[0,0,11,1.254,12,1.254,2099,6.451]],["name/3407",[2089,73.872]],["parent/3407",[0,0,11,1.254,12,1.254,2099,6.451]],["name/3408",[2100,78.994]],["parent/3408",[0,0,2,1.524,11,1.254,12,1.254]],["name/3409",[2101,73.872]],["parent/3409",[0,0,11,1.254,12,1.254,2102,6.451]],["name/3410",[2103,78.994]],["parent/3410",[0,0,11,1.254,12,1.254,2102,6.451]],["name/3411",[2014,73.872]],["parent/3411",[0,0,11,1.254,12,1.254,2102,6.451]],["name/3412",[2104,78.994]],["parent/3412",[0,0,2,1.524,11,1.254,12,1.254]],["name/3413",[60,55.576]],["parent/3413",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3414",[59,60.485]],["parent/3414",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3415",[1005,64.29]],["parent/3415",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3416",[2083,67.978]],["parent/3416",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3417",[682,59.481]],["parent/3417",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3418",[2084,70.498]],["parent/3418",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3419",[2085,70.498]],["parent/3419",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3420",[2106,73.872]],["parent/3420",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3421",[417,65.965]],["parent/3421",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3422",[269,62.855]],["parent/3422",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3423",[2088,67.978]],["parent/3423",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3424",[2107,73.872]],["parent/3424",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3425",[2063,73.872]],["parent/3425",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3426",[2058,70.498]],["parent/3426",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3427",[2057,67.978]],["parent/3427",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3428",[2065,73.872]],["parent/3428",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3429",[2066,73.872]],["parent/3429",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3430",[2060,65.965]],["parent/3430",[0,0,11,1.254,12,1.254,2105,4.923]],["name/3431",[2108,78.994]],["parent/3431",[0,0,2,1.524,11,1.254,12,1.254]],["name/3432",[355,65.965]],["parent/3432",[0,0,11,1.254,12,1.254,2109,6.759]],["name/3433",[1790,70.498]],["parent/3433",[0,0,11,1.254,12,1.254,2109,6.759]],["name/3434",[2110,78.994]],["parent/3434",[0,0,2,1.524,11,1.254,12,1.254]],["name/3435",[793,70.498]],["parent/3435",[0,0,11,1.254,12,1.254,2111,6.451]],["name/3436",[153,60.485]],["parent/3436",[0,0,11,1.254,12,1.254,2111,6.451]],["name/3437",[2112,78.994]],["parent/3437",[0,0,11,1.254,12,1.254,2111,6.451]],["name/3438",[2113,78.994]],["parent/3438",[0,0,2,1.524,11,1.254,12,1.254]],["name/3439",[316,61.6]],["parent/3439",[0,0,11,1.254,12,1.254,2114,6.451]],["name/3440",[808,70.498]],["parent/3440",[0,0,11,1.254,12,1.254,2114,6.451]],["name/3441",[809,70.498]],["parent/3441",[0,0,11,1.254,12,1.254,2114,6.451]],["name/3442",[2115,78.994]],["parent/3442",[0,0,2,1.524,11,1.254,12,1.254]],["name/3443",[190,59.481]],["parent/3443",[0,0,11,1.254,12,1.254,2116,7.228]],["name/3444",[2117,78.994]],["parent/3444",[0,0,2,1.524,11,1.254,12,1.254]],["name/3445",[2106,73.872]],["parent/3445",[0,0,11,1.254,12,1.254,2118,6.451]],["name/3446",[417,65.965]],["parent/3446",[0,0,11,1.254,12,1.254,2118,6.451]],["name/3447",[269,62.855]],["parent/3447",[0,0,11,1.254,12,1.254,2118,6.451]],["name/3448",[2119,78.994]],["parent/3448",[0,0,2,1.524,11,1.254,12,1.254]],["name/3449",[772,65.965]],["parent/3449",[0,0,11,1.254,12,1.254,2120,6.22]],["name/3450",[301,70.498]],["parent/3450",[0,0,11,1.254,12,1.254,2120,6.22]],["name/3451",[201,50.583]],["parent/3451",[0,0,11,1.254,12,1.254,2120,6.22]],["name/3452",[1215,59.481]],["parent/3452",[0,0,11,1.254,12,1.254,2120,6.22]],["name/3453",[2121,78.994]],["parent/3453",[0,0,2,1.524,11,1.254,12,1.254]],["name/3454",[2101,73.872]],["parent/3454",[0,0,11,1.254,12,1.254,2122,6.759]],["name/3455",[2123,78.994]],["parent/3455",[0,0,11,1.254,12,1.254,2122,6.759]],["name/3456",[2124,78.994]],["parent/3456",[0,0,2,1.524,11,1.254,12,1.254]],["name/3457",[2088,67.978]],["parent/3457",[0,0,11,1.254,12,1.254,2125,6.759]],["name/3458",[2107,73.872]],["parent/3458",[0,0,11,1.254,12,1.254,2125,6.759]],["name/3459",[2126,78.994]],["parent/3459",[0,0,2,1.524,11,1.254,12,1.254]],["name/3460",[49,28.997]],["parent/3460",[0,0,11,1.254,12,1.254,2127,7.228]],["name/3461",[2128,78.994]],["parent/3461",[0,0,2,1.524,11,1.254,12,1.254]],["name/3462",[49,28.997]],["parent/3462",[0,0,11,1.254,12,1.254,2129,7.228]],["name/3463",[2130,67.978]],["parent/3463",[0,0,2,1.524,11,1.254,12,1.254]],["name/3464",[2131,78.994]],["parent/3464",[0,0,11,1.254,12,1.254,2132,6.22]],["name/3465",[2133,78.994]],["parent/3465",[0,0,11,1.254,12,1.254,2132,6.22]],["name/3466",[2134,78.994]],["parent/3466",[0,0,11,1.254,12,1.254,2132,6.22]],["name/3467",[2135,78.994]],["parent/3467",[0,0,11,1.254,12,1.254,2132,6.22]],["name/3468",[2136,78.994]],["parent/3468",[0,0,2,1.524,11,1.254,12,1.254]],["name/3469",[2137,78.994]],["parent/3469",[0,0,11,1.254,12,1.254,2138,6.036]],["name/3470",[2139,78.994]],["parent/3470",[0,0,11,1.254,12,1.254,2138,6.036]],["name/3471",[2140,78.994]],["parent/3471",[0,0,11,1.254,12,1.254,2138,6.036]],["name/3472",[2141,78.994]],["parent/3472",[0,0,11,1.254,12,1.254,2138,6.036]],["name/3473",[2060,65.965]],["parent/3473",[0,0,11,1.254,12,1.254,2138,6.036]],["name/3474",[2142,78.994]],["parent/3474",[0,0,4,2.828,11,1.254,12,1.254]],["name/3475",[2143,78.994]],["parent/3475",[0,0,4,2.828,11,1.254,12,1.254]],["name/3476",[2144,78.994]],["parent/3476",[0,0,4,2.828,11,1.254,12,1.254]],["name/3477",[2145,78.994]],["parent/3477",[0,0,4,2.828,11,1.254,12,1.254]],["name/3478",[2146,78.994]],["parent/3478",[0,0,4,2.828,11,1.254,12,1.254]],["name/3479",[2147,78.994]],["parent/3479",[0,0,4,2.828,11,1.254,12,1.254]],["name/3480",[2148,78.994]],["parent/3480",[0,0,4,2.828,11,1.254,12,1.254]],["name/3481",[2149,78.994]],["parent/3481",[0,0,4,2.828,11,1.254,12,1.254]],["name/3482",[2150,78.994]],["parent/3482",[0,0,4,2.828,11,1.254,12,1.254]],["name/3483",[2151,78.994]],["parent/3483",[0,0,4,2.828,11,1.254,12,1.254]],["name/3484",[2152,78.994]],["parent/3484",[0,0,4,2.828,11,1.254,12,1.254]],["name/3485",[2153,78.994]],["parent/3485",[0,0,4,2.828,11,1.254,12,1.254]],["name/3486",[2154,78.994]],["parent/3486",[0,0,4,2.828,11,1.254,12,1.254]],["name/3487",[2155,78.994]],["parent/3487",[0,0,4,2.828,11,1.254,12,1.254]],["name/3488",[2156,78.994]],["parent/3488",[0,0,4,2.828,11,1.254,12,1.254]],["name/3489",[2157,78.994]],["parent/3489",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3490",[2159,78.994]],["parent/3490",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3491",[2160,78.994]],["parent/3491",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3492",[2161,78.994]],["parent/3492",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3493",[2162,78.994]],["parent/3493",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3494",[2163,78.994]],["parent/3494",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3495",[2164,78.994]],["parent/3495",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3496",[2165,78.994]],["parent/3496",[0,0,11,1.254,12,1.254,2158,5.636]],["name/3497",[2166,78.994]],["parent/3497",[0,0,4,2.828,11,1.254,12,1.254]],["name/3498",[2167,78.994]],["parent/3498",[0,0,4,2.828,11,1.254,12,1.254]],["name/3499",[2168,78.994]],["parent/3499",[0,0,4,2.828,11,1.254,12,1.254]],["name/3500",[2169,78.994]],["parent/3500",[0,0,4,2.828,11,1.254,12,1.254]],["name/3501",[2170,78.994]],["parent/3501",[0,0,4,2.828,11,1.254,12,1.254]],["name/3502",[2171,78.994]],["parent/3502",[0,0,4,2.828,11,1.254,12,1.254]],["name/3503",[2172,78.994]],["parent/3503",[0,0,4,2.828,11,1.254,12,1.254]],["name/3504",[2173,78.994]],["parent/3504",[0,0,4,2.828,11,1.254,12,1.254]],["name/3505",[2174,78.994]],["parent/3505",[0,0,4,2.828,11,1.254,12,1.254]],["name/3506",[2175,78.994]],["parent/3506",[0,0,4,2.828,11,1.254,12,1.254]],["name/3507",[2176,78.994]],["parent/3507",[0,0,4,2.828,11,1.254,12,1.254]],["name/3508",[2177,78.994]],["parent/3508",[0,0,4,2.828,11,1.254,12,1.254]],["name/3509",[2178,78.994]],["parent/3509",[0,0,4,2.828,11,1.254,12,1.254]],["name/3510",[2179,78.994]],["parent/3510",[0,0,4,2.828,11,1.254,12,1.254]],["name/3511",[2180,78.994]],["parent/3511",[0,0,4,2.828,11,1.254,12,1.254]],["name/3512",[2181,78.994]],["parent/3512",[0,0,4,2.828,11,1.254,12,1.254]],["name/3513",[2182,78.994]],["parent/3513",[0,0,4,2.828,11,1.254,12,1.254]],["name/3514",[2183,78.994]],["parent/3514",[0,0,4,2.828,11,1.254,12,1.254]],["name/3515",[2184,78.994]],["parent/3515",[0,0,4,2.828,11,1.254,12,1.254]],["name/3516",[2185,78.994]],["parent/3516",[0,0,4,2.828,11,1.254,12,1.254]],["name/3517",[2186,78.994]],["parent/3517",[0,0,4,2.828,11,1.254,12,1.254]],["name/3518",[2187,78.994]],["parent/3518",[0,0,4,2.828,11,1.254,12,1.254]],["name/3519",[2188,78.994]],["parent/3519",[0,0,4,2.828,11,1.254,12,1.254]],["name/3520",[2189,78.994]],["parent/3520",[0,0,4,2.828,11,1.254,12,1.254]],["name/3521",[2190,78.994]],["parent/3521",[0,0,4,2.828,11,1.254,12,1.254]],["name/3522",[2191,78.994]],["parent/3522",[0,0,4,2.828,11,1.254,12,1.254]],["name/3523",[2192,78.994]],["parent/3523",[0,0,4,2.828,11,1.254,12,1.254]],["name/3524",[2193,78.994]],["parent/3524",[0,0,4,2.828,11,1.254,12,1.254]],["name/3525",[2194,78.994]],["parent/3525",[0,0,4,2.828,11,1.254,12,1.254]],["name/3526",[2057,67.978]],["parent/3526",[0,0,4,2.828,11,1.254,12,1.254]],["name/3527",[2195,78.994]],["parent/3527",[0,0,4,2.828,11,1.254,12,1.254]],["name/3528",[2196,78.994]],["parent/3528",[0,0,1,0.317,11,1.254,12,1.254]],["name/3529",[2197,78.994]],["parent/3529",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3530",[1813,70.498]],["parent/3530",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3531",[60,55.576]],["parent/3531",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3532",[682,59.481]],["parent/3532",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3533",[683,70.498]],["parent/3533",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3534",[684,70.498]],["parent/3534",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3535",[685,70.498]],["parent/3535",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3536",[686,70.498]],["parent/3536",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3537",[687,70.498]],["parent/3537",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3538",[688,70.498]],["parent/3538",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3539",[689,70.498]],["parent/3539",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3540",[690,70.498]],["parent/3540",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3541",[691,70.498]],["parent/3541",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3542",[692,70.498]],["parent/3542",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3543",[693,70.498]],["parent/3543",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3544",[694,70.498]],["parent/3544",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3545",[695,70.498]],["parent/3545",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3546",[696,70.498]],["parent/3546",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3547",[697,70.498]],["parent/3547",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3548",[698,70.498]],["parent/3548",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3549",[699,70.498]],["parent/3549",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3550",[700,67.978]],["parent/3550",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3551",[701,70.498]],["parent/3551",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3552",[702,70.498]],["parent/3552",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3553",[99,65.965]],["parent/3553",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3554",[100,60.485]],["parent/3554",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3555",[675,62.855]],["parent/3555",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3556",[676,67.978]],["parent/3556",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3557",[673,62.855]],["parent/3557",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3558",[674,67.978]],["parent/3558",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3559",[703,65.965]],["parent/3559",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3560",[704,67.978]],["parent/3560",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3561",[705,67.978]],["parent/3561",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3562",[706,65.965]],["parent/3562",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3563",[230,64.29]],["parent/3563",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3564",[707,70.498]],["parent/3564",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3565",[708,70.498]],["parent/3565",[0,0,11,1.254,12,1.254,2198,4.275]],["name/3566",[2199,78.994]],["parent/3566",[0,0,1,0.317,11,1.254,12,1.254]],["name/3567",[1197,73.872]],["parent/3567",[0,0,11,1.254,12,1.254,2200,6.036]],["name/3568",[2201,78.994]],["parent/3568",[0,0,11,1.254,12,1.254,2200,6.036]],["name/3569",[2202,78.994]],["parent/3569",[0,0,11,1.254,12,1.254,2200,6.036]],["name/3570",[1880,73.872]],["parent/3570",[0,0,11,1.254,12,1.254,2200,6.036]],["name/3571",[1809,70.498]],["parent/3571",[0,0,11,1.254,12,1.254,2200,6.036]],["name/3572",[1807,73.872]],["parent/3572",[0,0,1,0.317,11,1.254,12,1.254]],["name/3573",[1194,70.498]],["parent/3573",[0,0,11,1.254,12,1.254,2203,6.451]],["name/3574",[1214,73.872]],["parent/3574",[0,0,11,1.254,12,1.254,2203,6.451]],["name/3575",[8,70.498]],["parent/3575",[0,0,11,1.254,12,1.254,2203,6.451]],["name/3576",[2204,73.872]],["parent/3576",[0,0,1,0.317,11,1.254,12,1.254]],["name/3577",[49,28.997]],["parent/3577",[0,0,11,1.254,12,1.254,2205,7.228]],["name/3578",[2206,78.994]],["parent/3578",[0,0,1,0.317,11,1.254,12,1.254]],["name/3579",[2204,73.872]],["parent/3579",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3580",[2208,67.978]],["parent/3580",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3581",[2209,67.978]],["parent/3581",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3582",[974,61.6]],["parent/3582",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3583",[1054,70.498]],["parent/3583",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3584",[1058,70.498]],["parent/3584",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3585",[992,61.6]],["parent/3585",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3586",[965,61.6]],["parent/3586",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3587",[958,61.6]],["parent/3587",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3588",[961,61.6]],["parent/3588",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3589",[962,61.6]],["parent/3589",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3590",[990,61.6]],["parent/3590",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3591",[991,60.485]],["parent/3591",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3592",[964,61.6]],["parent/3592",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3593",[951,61.6]],["parent/3593",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3594",[1059,70.498]],["parent/3594",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3595",[966,61.6]],["parent/3595",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3596",[1060,70.498]],["parent/3596",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3597",[203,59.481]],["parent/3597",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3598",[1061,70.498]],["parent/3598",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3599",[1062,70.498]],["parent/3599",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3600",[1063,70.498]],["parent/3600",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3601",[1064,70.498]],["parent/3601",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3602",[1065,70.498]],["parent/3602",[0,0,11,1.254,12,1.254,2207,4.665]],["name/3603",[2210,78.994]],["parent/3603",[0,0,1,0.317,11,1.254,12,1.254]],["name/3604",[6,44.777]],["parent/3604",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3605",[1049,73.872]],["parent/3605",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3606",[2212,78.994]],["parent/3606",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3607",[2213,78.994]],["parent/3607",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3608",[59,60.485]],["parent/3608",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3609",[2214,73.872]],["parent/3609",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3610",[2215,73.872]],["parent/3610",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3611",[2083,67.978]],["parent/3611",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3612",[1047,73.872]],["parent/3612",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3613",[7,49.468]],["parent/3613",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3614",[1050,64.29]],["parent/3614",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3615",[682,59.481]],["parent/3615",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3616",[1051,64.29]],["parent/3616",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3617",[1004,59.481]],["parent/3617",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3618",[49,28.997]],["parent/3618",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3619",[1052,65.965]],["parent/3619",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3620",[1005,64.29]],["parent/3620",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3621",[1031,67.978]],["parent/3621",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3622",[130,58.569]],["parent/3622",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3623",[1034,70.498]],["parent/3623",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3624",[1035,70.498]],["parent/3624",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3625",[1037,70.498]],["parent/3625",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3626",[527,60.485]],["parent/3626",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3627",[1039,70.498]],["parent/3627",[0,0,11,1.254,12,1.254,2211,4.665]],["name/3628",[2208,67.978]],["parent/3628",[0,0,1,0.317,11,1.254,12,1.254]],["name/3629",[49,28.997]],["parent/3629",[0,0,11,1.254,12,1.254,2216,7.228]],["name/3630",[2209,67.978]],["parent/3630",[0,0,1,0.317,11,1.254,12,1.254]],["name/3631",[49,28.997]],["parent/3631",[0,0,11,1.254,12,1.254,2217,7.228]],["name/3632",[2218,78.994]],["parent/3632",[0,0,1,0.317,11,1.254,12,1.254]],["name/3633",[2130,67.978]],["parent/3633",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3634",[2220,70.498]],["parent/3634",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3635",[49,28.997]],["parent/3635",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3636",[484,62.855]],["parent/3636",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3637",[486,60.485]],["parent/3637",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3638",[487,64.29]],["parent/3638",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3639",[488,64.29]],["parent/3639",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3640",[489,64.29]],["parent/3640",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3641",[490,64.29]],["parent/3641",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3642",[461,62.855]],["parent/3642",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3643",[471,43.342]],["parent/3643",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3644",[472,43.342]],["parent/3644",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3645",[49,28.997]],["parent/3645",[0,0,11,1.254,12,1.254,2219,5.212]],["name/3646",[2221,78.994]],["parent/3646",[0,0,1,0.317,11,1.254,12,1.254]],["name/3647",[2130,67.978]],["parent/3647",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3648",[2220,70.498]],["parent/3648",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3649",[49,28.997]],["parent/3649",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3650",[484,62.855]],["parent/3650",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3651",[486,60.485]],["parent/3651",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3652",[487,64.29]],["parent/3652",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3653",[488,64.29]],["parent/3653",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3654",[489,64.29]],["parent/3654",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3655",[490,64.29]],["parent/3655",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3656",[461,62.855]],["parent/3656",[0,0,11,1.254,12,1.254,2222,5.443]],["name/3657",[2223,78.994]],["parent/3657",[0,0,1,0.317,11,1.254,12,1.254]],["name/3658",[2130,67.978]],["parent/3658",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3659",[2220,70.498]],["parent/3659",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3660",[49,28.997]],["parent/3660",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3661",[484,62.855]],["parent/3661",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3662",[486,60.485]],["parent/3662",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3663",[487,64.29]],["parent/3663",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3664",[488,64.29]],["parent/3664",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3665",[489,64.29]],["parent/3665",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3666",[490,64.29]],["parent/3666",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3667",[461,62.855]],["parent/3667",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3668",[471,43.342]],["parent/3668",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3669",[472,43.342]],["parent/3669",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3670",[49,28.997]],["parent/3670",[0,0,11,1.254,12,1.254,2224,5.212]],["name/3671",[2225,78.994]],["parent/3671",[0,0,1,0.317,11,1.254,12,1.254]],["name/3672",[2208,67.978]],["parent/3672",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3673",[2209,67.978]],["parent/3673",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3674",[2227,73.872]],["parent/3674",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3675",[2228,73.872]],["parent/3675",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3676",[661,49.122]],["parent/3676",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3677",[950,65.965]],["parent/3677",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3678",[951,61.6]],["parent/3678",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3679",[952,65.965]],["parent/3679",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3680",[953,65.965]],["parent/3680",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3681",[954,64.29]],["parent/3681",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3682",[139,54.949]],["parent/3682",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3683",[955,64.29]],["parent/3683",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3684",[956,64.29]],["parent/3684",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3685",[957,65.965]],["parent/3685",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3686",[958,61.6]],["parent/3686",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3687",[203,59.481]],["parent/3687",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3688",[959,65.965]],["parent/3688",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3689",[960,64.29]],["parent/3689",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3690",[122,58.569]],["parent/3690",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3691",[961,61.6]],["parent/3691",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3692",[962,61.6]],["parent/3692",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3693",[963,64.29]],["parent/3693",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3694",[964,61.6]],["parent/3694",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3695",[965,61.6]],["parent/3695",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3696",[966,61.6]],["parent/3696",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3697",[967,65.965]],["parent/3697",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3698",[968,65.965]],["parent/3698",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3699",[969,65.965]],["parent/3699",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3700",[970,65.965]],["parent/3700",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3701",[971,65.965]],["parent/3701",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3702",[972,65.965]],["parent/3702",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3703",[973,65.965]],["parent/3703",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3704",[130,58.569]],["parent/3704",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3705",[123,61.6]],["parent/3705",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3706",[974,61.6]],["parent/3706",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3707",[975,65.965]],["parent/3707",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3708",[976,65.965]],["parent/3708",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3709",[977,65.965]],["parent/3709",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3710",[978,65.965]],["parent/3710",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3711",[35,64.29]],["parent/3711",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3712",[979,65.965]],["parent/3712",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3713",[980,65.965]],["parent/3713",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3714",[981,65.965]],["parent/3714",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3715",[982,65.965]],["parent/3715",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3716",[983,65.965]],["parent/3716",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3717",[984,65.965]],["parent/3717",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3718",[985,65.965]],["parent/3718",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3719",[986,65.965]],["parent/3719",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3720",[987,65.965]],["parent/3720",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3721",[988,65.965]],["parent/3721",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3722",[989,65.965]],["parent/3722",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3723",[990,61.6]],["parent/3723",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3724",[991,60.485]],["parent/3724",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3725",[992,61.6]],["parent/3725",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3726",[993,65.965]],["parent/3726",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3727",[60,55.576]],["parent/3727",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3728",[994,65.965]],["parent/3728",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3729",[995,65.965]],["parent/3729",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3730",[996,65.965]],["parent/3730",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3731",[997,65.965]],["parent/3731",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3732",[998,65.965]],["parent/3732",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3733",[999,64.29]],["parent/3733",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3734",[1000,65.965]],["parent/3734",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3735",[1001,65.965]],["parent/3735",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3736",[1002,65.965]],["parent/3736",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3737",[1003,65.965]],["parent/3737",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3738",[1004,59.481]],["parent/3738",[0,0,11,1.254,12,1.254,2226,3.735]],["name/3739",[2229,78.994]],["parent/3739",[0,0,1,0.317,11,1.254,12,1.254]],["name/3740",[2214,73.872]],["parent/3740",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3741",[2215,73.872]],["parent/3741",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3742",[7,49.468]],["parent/3742",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3743",[59,60.485]],["parent/3743",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3744",[1087,70.498]],["parent/3744",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3745",[1088,70.498]],["parent/3745",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3746",[1089,70.498]],["parent/3746",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3747",[1090,70.498]],["parent/3747",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3748",[1091,70.498]],["parent/3748",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3749",[1092,70.498]],["parent/3749",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3750",[62,67.978]],["parent/3750",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3751",[49,28.997]],["parent/3751",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3752",[61,65.965]],["parent/3752",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3753",[49,28.997]],["parent/3753",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3754",[1093,70.498]],["parent/3754",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3755",[37,62.855]],["parent/3755",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3756",[63,65.965]],["parent/3756",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3757",[1094,70.498]],["parent/3757",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3758",[82,64.29]],["parent/3758",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3759",[1050,64.29]],["parent/3759",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3760",[682,59.481]],["parent/3760",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3761",[1051,64.29]],["parent/3761",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3762",[1004,59.481]],["parent/3762",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3763",[49,28.997]],["parent/3763",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3764",[1052,65.965]],["parent/3764",[0,0,11,1.254,12,1.254,2230,4.628]],["name/3765",[2231,78.994]],["parent/3765",[0,0,1,0.317,11,1.254,12,1.254]],["name/3766",[2232,78.994]],["parent/3766",[0,0,11,1.254,12,1.254,2233,6.22]],["name/3767",[2054,73.872]],["parent/3767",[0,0,11,1.254,12,1.254,2233,6.22]],["name/3768",[2234,78.994]],["parent/3768",[0,0,11,1.254,12,1.254,2233,6.22]],["name/3769",[2235,78.994]],["parent/3769",[0,0,11,1.254,12,1.254,2233,6.22]],["name/3770",[2236,78.994]],["parent/3770",[0,0,1,0.317,11,1.254,12,1.254]],["name/3771",[316,61.6]],["parent/3771",[0,0,11,1.254,12,1.254,2237,6.22]],["name/3772",[2238,78.994]],["parent/3772",[0,0,11,1.254,12,1.254,2237,6.22]],["name/3773",[2239,78.994]],["parent/3773",[0,0,11,1.254,12,1.254,2237,6.22]],["name/3774",[1225,70.498]],["parent/3774",[0,0,11,1.254,12,1.254,2237,6.22]],["name/3775",[2240,78.994]],["parent/3775",[0,0,1,0.317,11,1.254,12,1.254]],["name/3776",[527,60.485]],["parent/3776",[0,0,11,1.254,12,1.254,2241,6.759]],["name/3777",[525,67.978]],["parent/3777",[0,0,11,1.254,12,1.254,2241,6.759]],["name/3778",[2242,78.994]],["parent/3778",[0,0,1,0.317,11,1.254,12,1.254]],["name/3779",[2243,78.994]],["parent/3779",[0,0,11,1.254,12,1.254,2244,6.22]],["name/3780",[2245,78.994]],["parent/3780",[0,0,11,1.254,12,1.254,2244,6.22]],["name/3781",[467,48.788]],["parent/3781",[0,0,11,1.254,12,1.254,2244,6.22]],["name/3782",[2246,73.872]],["parent/3782",[0,0,11,1.254,12,1.254,2244,6.22]],["name/3783",[2247,78.994]],["parent/3783",[0,0,1,0.317,11,1.254,12,1.254]],["name/3784",[2248,78.994]],["parent/3784",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3785",[467,48.788]],["parent/3785",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3786",[198,70.498]],["parent/3786",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3787",[2060,65.965]],["parent/3787",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3788",[2250,78.994]],["parent/3788",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3789",[49,28.997]],["parent/3789",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3790",[2251,78.994]],["parent/3790",[0,0,11,1.254,12,1.254,2249,5.751]],["name/3791",[2252,78.994]],["parent/3791",[0,0,1,0.317,11,1.254,12,1.254]],["name/3792",[49,28.997]],["parent/3792",[0,0,11,1.254,12,1.254,2253,7.228]],["name/3793",[2254,78.994]],["parent/3793",[0,0,1,0.317,11,1.254,12,1.254]],["name/3794",[2255,78.994]],["parent/3794",[0,0,11,1.254,12,1.254,2256,6.22]],["name/3795",[2257,78.994]],["parent/3795",[0,0,11,1.254,12,1.254,2256,6.22]],["name/3796",[2258,78.994]],["parent/3796",[0,0,11,1.254,12,1.254,2256,6.22]],["name/3797",[2246,73.872]],["parent/3797",[0,0,11,1.254,12,1.254,2256,6.22]],["name/3798",[2259,78.994]],["parent/3798",[0,0,1,0.317,11,1.254,12,1.254]],["name/3799",[1548,70.498]],["parent/3799",[0,0,1,0.317,11,1.254,12,1.254]],["name/3800",[1550,73.872]],["parent/3800",[0,0,1,0.317,11,1.254,12,1.254]],["name/3801",[2260,78.994]],["parent/3801",[0,0,1,0.317,11,1.254,12,1.254]],["name/3802",[1549,73.872]],["parent/3802",[0,0,1,0.317,11,1.254,12,1.254]],["name/3803",[1562,73.872]],["parent/3803",[0,0,1,0.317,11,1.254,12,1.254]],["name/3804",[1564,73.872]],["parent/3804",[0,0,1,0.317,11,1.254,12,1.254]],["name/3805",[1561,73.872]],["parent/3805",[0,0,1,0.317,11,1.254,12,1.254]],["name/3806",[1563,73.872]],["parent/3806",[0,0,1,0.317,11,1.254,12,1.254]],["name/3807",[1571,73.872]],["parent/3807",[0,0,1,0.317,11,1.254,12,1.254]],["name/3808",[1568,73.872]],["parent/3808",[0,0,1,0.317,11,1.254,12,1.254]],["name/3809",[1569,73.872]],["parent/3809",[0,0,1,0.317,11,1.254,12,1.254]],["name/3810",[1570,73.872]],["parent/3810",[0,0,1,0.317,11,1.254,12,1.254]],["name/3811",[1554,73.872]],["parent/3811",[0,0,1,0.317,11,1.254,12,1.254]],["name/3812",[1557,73.872]],["parent/3812",[0,0,1,0.317,11,1.254,12,1.254]],["name/3813",[1558,73.872]],["parent/3813",[0,0,1,0.317,11,1.254,12,1.254]],["name/3814",[1555,73.872]],["parent/3814",[0,0,1,0.317,11,1.254,12,1.254]],["name/3815",[1542,73.872]],["parent/3815",[0,0,1,0.317,11,1.254,12,1.254]],["name/3816",[2261,78.994]],["parent/3816",[0,0,1,0.317,11,1.254,12,1.254]],["name/3817",[1560,73.872]],["parent/3817",[0,0,1,0.317,11,1.254,12,1.254]],["name/3818",[111,65.965]],["parent/3818",[0,0,1,0.317,11,1.254,12,1.254]],["name/3819",[2262,78.994]],["parent/3819",[0,0,1,0.317,11,1.254,12,1.254]],["name/3820",[2263,78.994]],["parent/3820",[0,0,1,0.317,11,1.254,12,1.254]],["name/3821",[2264,78.994]],["parent/3821",[0,0,1,0.317,11,1.254,12,1.254]],["name/3822",[2265,78.994]],["parent/3822",[0,0,1,0.317,11,1.254,12,1.254]],["name/3823",[2266,78.994]],["parent/3823",[0,0,1,0.317,11,1.254,12,1.254]],["name/3824",[2267,78.994]],["parent/3824",[0,0,1,0.317,11,1.254,12,1.254]],["name/3825",[1441,70.498]],["parent/3825",[0,0,1,0.317,11,1.254,12,1.254]],["name/3826",[1442,70.498]],["parent/3826",[0,0,1,0.317,11,1.254,12,1.254]],["name/3827",[1556,73.872]],["parent/3827",[0,0,1,0.317,11,1.254,12,1.254]],["name/3828",[1572,73.872]],["parent/3828",[0,0,1,0.317,11,1.254,12,1.254]],["name/3829",[1566,73.872]],["parent/3829",[0,0,1,0.317,11,1.254,12,1.254]],["name/3830",[2268,78.994]],["parent/3830",[0,0,1,0.317,11,1.254,12,1.254]],["name/3831",[2269,78.994]],["parent/3831",[0,0,1,0.317,11,1.254,12,1.254]],["name/3832",[2270,78.994]],["parent/3832",[0,0,1,0.317,11,1.254,12,1.254]],["name/3833",[2271,78.994]],["parent/3833",[0,0,1,0.317,11,1.254,12,1.254]],["name/3834",[1546,73.872]],["parent/3834",[0,0,1,0.317,11,1.254,12,1.254]],["name/3835",[2272,78.994]],["parent/3835",[0,0,1,0.317,11,1.254,12,1.254]],["name/3836",[1545,70.498]],["parent/3836",[0,0,1,0.317,11,1.254,12,1.254]],["name/3837",[1690,73.872]],["parent/3837",[0,0,1,0.317,11,1.254,12,1.254]],["name/3838",[1551,70.498]],["parent/3838",[0,0,1,0.317,11,1.254,12,1.254]],["name/3839",[2273,78.994]],["parent/3839",[0,0,1,0.317,11,1.254,12,1.254]],["name/3840",[1559,73.872]],["parent/3840",[0,0,1,0.317,11,1.254,12,1.254]],["name/3841",[2274,78.994]],["parent/3841",[0,0,1,0.317,11,1.254,12,1.254]],["name/3842",[2275,78.994]],["parent/3842",[0,0,1,0.317,11,1.254,12,1.254]],["name/3843",[2276,78.994]],["parent/3843",[0,0,1,0.317,11,1.254,12,1.254]],["name/3844",[122,58.569]],["parent/3844",[0,0,1,0.317,11,1.254,12,1.254]],["name/3845",[205,67.978]],["parent/3845",[0,0,1,0.317,11,1.254,12,1.254]],["name/3846",[2277,78.994]],["parent/3846",[0,0,1,0.317,11,1.254,12,1.254]],["name/3847",[2278,78.994]],["parent/3847",[0,0,1,0.317,11,1.254,12,1.254]],["name/3848",[1357,48.464]],["parent/3848",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3849",[2208,67.978]],["parent/3849",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3850",[2209,67.978]],["parent/3850",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3851",[2227,73.872]],["parent/3851",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3852",[2228,73.872]],["parent/3852",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3853",[661,49.122]],["parent/3853",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3854",[950,65.965]],["parent/3854",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3855",[951,61.6]],["parent/3855",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3856",[952,65.965]],["parent/3856",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3857",[953,65.965]],["parent/3857",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3858",[954,64.29]],["parent/3858",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3859",[139,54.949]],["parent/3859",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3860",[955,64.29]],["parent/3860",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3861",[956,64.29]],["parent/3861",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3862",[957,65.965]],["parent/3862",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3863",[958,61.6]],["parent/3863",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3864",[203,59.481]],["parent/3864",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3865",[959,65.965]],["parent/3865",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3866",[960,64.29]],["parent/3866",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3867",[122,58.569]],["parent/3867",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3868",[961,61.6]],["parent/3868",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3869",[962,61.6]],["parent/3869",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3870",[963,64.29]],["parent/3870",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3871",[964,61.6]],["parent/3871",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3872",[965,61.6]],["parent/3872",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3873",[966,61.6]],["parent/3873",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3874",[967,65.965]],["parent/3874",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3875",[968,65.965]],["parent/3875",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3876",[969,65.965]],["parent/3876",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3877",[970,65.965]],["parent/3877",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3878",[971,65.965]],["parent/3878",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3879",[972,65.965]],["parent/3879",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3880",[973,65.965]],["parent/3880",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3881",[130,58.569]],["parent/3881",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3882",[123,61.6]],["parent/3882",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3883",[974,61.6]],["parent/3883",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3884",[975,65.965]],["parent/3884",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3885",[976,65.965]],["parent/3885",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3886",[977,65.965]],["parent/3886",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3887",[978,65.965]],["parent/3887",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3888",[35,64.29]],["parent/3888",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3889",[979,65.965]],["parent/3889",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3890",[980,65.965]],["parent/3890",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3891",[981,65.965]],["parent/3891",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3892",[982,65.965]],["parent/3892",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3893",[983,65.965]],["parent/3893",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3894",[984,65.965]],["parent/3894",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3895",[985,65.965]],["parent/3895",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3896",[986,65.965]],["parent/3896",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3897",[987,65.965]],["parent/3897",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3898",[988,65.965]],["parent/3898",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3899",[989,65.965]],["parent/3899",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3900",[990,61.6]],["parent/3900",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3901",[991,60.485]],["parent/3901",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3902",[992,61.6]],["parent/3902",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3903",[993,65.965]],["parent/3903",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3904",[60,55.576]],["parent/3904",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3905",[994,65.965]],["parent/3905",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3906",[995,65.965]],["parent/3906",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3907",[996,65.965]],["parent/3907",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3908",[997,65.965]],["parent/3908",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3909",[998,65.965]],["parent/3909",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3910",[999,64.29]],["parent/3910",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3911",[1000,65.965]],["parent/3911",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3912",[1003,65.965]],["parent/3912",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3913",[1001,65.965]],["parent/3913",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3914",[1002,65.965]],["parent/3914",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3915",[1004,59.481]],["parent/3915",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3916",[1538,70.498]],["parent/3916",[0,0,11,1.254,12,1.254,2279,3.708]],["name/3917",[2280,78.994]],["parent/3917",[0,0,1,0.317,11,1.254,12,1.254]],["name/3918",[2281,78.994]],["parent/3918",[0,0,1,0.317,11,1.254,12,1.254]],["name/3919",[1357,48.464]],["parent/3919",[0,0,11,1.254,12,1.254,2282,6.036]],["name/3920",[659,50.985]],["parent/3920",[0,0,11,1.254,12,1.254,2282,6.036]],["name/3921",[660,50.985]],["parent/3921",[0,0,11,1.254,12,1.254,2282,6.036]],["name/3922",[661,49.122]],["parent/3922",[0,0,11,1.254,12,1.254,2282,6.036]],["name/3923",[663,52.294]],["parent/3923",[0,0,11,1.254,12,1.254,2282,6.036]],["name/3924",[2283,78.994]],["parent/3924",[0,0,1,0.317,11,1.254,12,1.254]],["name/3925",[1357,48.464]],["parent/3925",[0,0,11,1.254,12,1.254,2284,6.036]],["name/3926",[659,50.985]],["parent/3926",[0,0,11,1.254,12,1.254,2284,6.036]],["name/3927",[660,50.985]],["parent/3927",[0,0,11,1.254,12,1.254,2284,6.036]],["name/3928",[661,49.122]],["parent/3928",[0,0,11,1.254,12,1.254,2284,6.036]],["name/3929",[663,52.294]],["parent/3929",[0,0,11,1.254,12,1.254,2284,6.036]],["name/3930",[2285,78.994]],["parent/3930",[0,0,1,0.317,11,1.254,12,1.254]],["name/3931",[1357,48.464]],["parent/3931",[0,0,11,1.254,12,1.254,2286,6.036]],["name/3932",[659,50.985]],["parent/3932",[0,0,11,1.254,12,1.254,2286,6.036]],["name/3933",[660,50.985]],["parent/3933",[0,0,11,1.254,12,1.254,2286,6.036]],["name/3934",[661,49.122]],["parent/3934",[0,0,11,1.254,12,1.254,2286,6.036]],["name/3935",[663,52.294]],["parent/3935",[0,0,11,1.254,12,1.254,2286,6.036]],["name/3936",[2287,78.994]],["parent/3936",[0,0,1,0.317,11,1.254,12,1.254]],["name/3937",[1357,48.464]],["parent/3937",[0,0,11,1.254,12,1.254,2288,6.22]],["name/3938",[659,50.985]],["parent/3938",[0,0,11,1.254,12,1.254,2288,6.22]],["name/3939",[660,50.985]],["parent/3939",[0,0,11,1.254,12,1.254,2288,6.22]],["name/3940",[661,49.122]],["parent/3940",[0,0,11,1.254,12,1.254,2288,6.22]],["name/3941",[2289,78.994]],["parent/3941",[0,0,1,0.317,11,1.254,12,1.254]],["name/3942",[1357,48.464]],["parent/3942",[0,0,11,1.254,12,1.254,2290,6.036]],["name/3943",[659,50.985]],["parent/3943",[0,0,11,1.254,12,1.254,2290,6.036]],["name/3944",[660,50.985]],["parent/3944",[0,0,11,1.254,12,1.254,2290,6.036]],["name/3945",[661,49.122]],["parent/3945",[0,0,11,1.254,12,1.254,2290,6.036]],["name/3946",[1028,73.872]],["parent/3946",[0,0,11,1.254,12,1.254,2290,6.036]],["name/3947",[2291,78.994]],["parent/3947",[0,0,1,0.317,11,1.254,12,1.254]],["name/3948",[2292,78.994]],["parent/3948",[0,0,1,0.317,11,1.254,12,1.254]],["name/3949",[2293,78.994]],["parent/3949",[0,0,1,0.317,11,1.254,12,1.254]],["name/3950",[2294,78.994]],["parent/3950",[0,0,1,0.317,11,1.254,12,1.254]],["name/3951",[2295,78.994]],["parent/3951",[0,0,1,0.317,11,1.254,12,1.254]],["name/3952",[2296,78.994]],["parent/3952",[0,0,1,0.317,11,1.254,12,1.254]],["name/3953",[2297,78.994]],["parent/3953",[0,0,1,0.317,11,1.254,12,1.254]],["name/3954",[2298,78.994]],["parent/3954",[0,0,11,1.416,12,1.416]]],"invertedIndex":[["1",{"_index":2163,"name":{"3494":{}},"parent":{}}],["10",{"_index":2162,"name":{"3493":{}},"parent":{}}],["11",{"_index":2160,"name":{"3491":{}},"parent":{}}],["2",{"_index":2157,"name":{"3489":{}},"parent":{}}],["3",{"_index":2165,"name":{"3496":{}},"parent":{}}],["7",{"_index":2164,"name":{"3495":{}},"parent":{}}],["8",{"_index":2159,"name":{"3490":{}},"parent":{}}],["9",{"_index":2161,"name":{"3492":{}},"parent":{}}],["__type",{"_index":49,"name":{"44":{},"55":{},"57":{},"457":{},"470":{},"474":{},"478":{},"482":{},"493":{},"512":{},"517":{},"524":{},"531":{},"542":{},"550":{},"563":{},"567":{},"571":{},"581":{},"598":{},"603":{},"610":{},"614":{},"617":{},"621":{},"624":{},"630":{},"635":{},"641":{},"648":{},"653":{},"658":{},"664":{},"670":{},"675":{},"681":{},"687":{},"693":{},"700":{},"705":{},"710":{},"716":{},"722":{},"727":{},"733":{},"752":{},"756":{},"765":{},"769":{},"775":{},"784":{},"789":{},"796":{},"801":{},"808":{},"832":{},"834":{},"836":{},"838":{},"840":{},"842":{},"846":{},"850":{},"943":{},"945":{},"951":{},"953":{},"1083":{},"1382":{},"1384":{},"1390":{},"1392":{},"1396":{},"1398":{},"1400":{},"1402":{},"1404":{},"1408":{},"1410":{},"1412":{},"1414":{},"1416":{},"1445":{},"1456":{},"1458":{},"1482":{},"1484":{},"1486":{},"1488":{},"1490":{},"1492":{},"1494":{},"1496":{},"1498":{},"1500":{},"1502":{},"1504":{},"1506":{},"1508":{},"1510":{},"1512":{},"1514":{},"1516":{},"1518":{},"1529":{},"1531":{},"1541":{},"1640":{},"1649":{},"1651":{},"1653":{},"1655":{},"1657":{},"1659":{},"1661":{},"1663":{},"1665":{},"1667":{},"1669":{},"1730":{},"1733":{},"1736":{},"1741":{},"1747":{},"1749":{},"1787":{},"1793":{},"2623":{},"2625":{},"2730":{},"2732":{},"2734":{},"2736":{},"2738":{},"2743":{},"2754":{},"2756":{},"2766":{},"2777":{},"2779":{},"2781":{},"2783":{},"2785":{},"2787":{},"2792":{},"2794":{},"2796":{},"2798":{},"2801":{},"2803":{},"2805":{},"2807":{},"2809":{},"2816":{},"2818":{},"2820":{},"2828":{},"2830":{},"2917":{},"2919":{},"2922":{},"2966":{},"3027":{},"3030":{},"3033":{},"3036":{},"3039":{},"3042":{},"3045":{},"3048":{},"3051":{},"3054":{},"3057":{},"3060":{},"3063":{},"3066":{},"3069":{},"3076":{},"3079":{},"3082":{},"3088":{},"3094":{},"3097":{},"3100":{},"3103":{},"3106":{},"3109":{},"3112":{},"3121":{},"3129":{},"3132":{},"3136":{},"3139":{},"3143":{},"3157":{},"3161":{},"3165":{},"3172":{},"3324":{},"3344":{},"3353":{},"3365":{},"3388":{},"3460":{},"3462":{},"3577":{},"3618":{},"3629":{},"3631":{},"3635":{},"3645":{},"3649":{},"3660":{},"3670":{},"3751":{},"3753":{},"3763":{},"3789":{},"3792":{}},"parent":{}}],["adaptivehandlesresizer",{"_index":265,"name":{"254":{},"1953":{}},"parent":{}}],["addblock",{"_index":2182,"name":{"3513":{}},"parent":{}}],["addcode",{"_index":2183,"name":{"3514":{}},"parent":{}}],["addcontenteditfeature",{"_index":988,"name":{"1349":{},"2480":{},"2546":{},"3721":{},"3898":{}},"parent":{}}],["adddelimiterafter",{"_index":1360,"name":{"2190":{}},"parent":{}}],["adddelimiterbefore",{"_index":1361,"name":{"2191":{}},"parent":{}}],["adddelimiterforentity",{"_index":2083,"name":{"3370":{},"3396":{},"3416":{},"3611":{}},"parent":{}}],["adddelimiters",{"_index":1359,"name":{"2189":{}},"parent":{}}],["adddomeventhandler",{"_index":971,"name":{"1329":{},"2460":{},"2526":{},"3701":{},"3878":{}},"parent":{}}],["additionalallowedattributes",{"_index":849,"name":{"1097":{},"1111":{}},"parent":{}}],["additionalallowedcssclasses",{"_index":850,"name":{"1098":{},"1112":{}},"parent":{}}],["additionaldata",{"_index":506,"name":{"528":{},"535":{},"539":{}},"parent":{}}],["additionaldefaultstylevalues",{"_index":851,"name":{"1099":{},"1113":{}},"parent":{}}],["additionalformatappliers",{"_index":2139,"name":{"3470":{}},"parent":{}}],["additionalformatparsers",{"_index":2135,"name":{"3467":{}},"parent":{}}],["additionalglobalstylenodes",{"_index":852,"name":{"1100":{},"1114":{}},"parent":{}}],["additionalpredefinedcssforelement",{"_index":853,"name":{"1101":{},"1115":{}},"parent":{}}],["additionaltagreplacements",{"_index":848,"name":{"1096":{},"1110":{}},"parent":{}}],["addlink",{"_index":2184,"name":{"3515":{}},"parent":{}}],["addnegativemargins",{"_index":1459,"name":{"2339":{}},"parent":{}}],["addrangetoselection",{"_index":1489,"name":{"2381":{}},"parent":{}}],["addsegment",{"_index":2188,"name":{"3519":{}},"parent":{}}],["addshadowroot",{"_index":250,"name":{"238":{},"1937":{}},"parent":{}}],["addsnapshot",{"_index":1165,"name":{"1644":{},"2382":{}},"parent":{}}],["addsnapshotv2",{"_index":1490,"name":{"2383":{}},"parent":{}}],["addundosnapshot",{"_index":974,"name":{"1334":{},"1455":{},"1460":{},"2465":{},"2531":{},"3582":{},"3706":{},"3883":{}},"parent":{}}],["adjustimageselection",{"_index":2274,"name":{"3841":{}},"parent":{}}],["adjustinsertposition",{"_index":1523,"name":{"2417":{}},"parent":{}}],["adjustlinkselection",{"_index":2273,"name":{"3839":{}},"parent":{}}],["after",{"_index":309,"name":{"297":{},"2123":{}},"parent":{}}],["aligncellbottom",{"_index":342,"name":{"327":{},"2167":{}},"parent":{}}],["aligncellcenter",{"_index":338,"name":{"323":{},"2163":{}},"parent":{}}],["aligncellleft",{"_index":337,"name":{"322":{},"2162":{}},"parent":{}}],["aligncellmiddle",{"_index":341,"name":{"326":{},"2166":{}},"parent":{}}],["aligncellright",{"_index":339,"name":{"324":{},"2164":{}},"parent":{}}],["aligncelltop",{"_index":340,"name":{"325":{},"2165":{}},"parent":{}}],["aligncenter",{"_index":334,"name":{"319":{},"2159":{},"2852":{}},"parent":{}}],["aligncenterbuttonstringkey",{"_index":1711,"name":{"2885":{}},"parent":{}}],["alignleft",{"_index":335,"name":{"320":{},"2160":{},"2851":{}},"parent":{}}],["alignleftbuttonstringkey",{"_index":1710,"name":{"2884":{}},"parent":{}}],["alignment",{"_index":195,"name":{"184":{}},"parent":{}}],["alignright",{"_index":336,"name":{"321":{},"2161":{},"2853":{}},"parent":{}}],["alignrightbuttonstringkey",{"_index":1712,"name":{"2886":{}},"parent":{}}],["all",{"_index":351,"name":{"336":{},"1988":{}},"parent":{}}],["allbuttonkeys",{"_index":1732,"name":{"2906":{}},"parent":{}}],["allbuttonstringkeys",{"_index":1728,"name":{"2902":{}},"parent":{}}],["allowcacheelement",{"_index":2085,"name":{"3373":{},"3399":{},"3419":{}},"parent":{}}],["allowdefaultmenu",{"_index":1587,"name":{"2626":{}},"parent":{}}],["allowedcustompastetype",{"_index":82,"name":{"75":{},"941":{},"948":{},"1536":{},"2761":{},"3758":{}},"parent":{}}],["allowfunctionkeys",{"_index":1021,"name":{"1385":{},"1393":{}},"parent":{}}],["allowkeyboardeventpropagation",{"_index":1094,"name":{"1535":{},"2760":{},"3757":{}},"parent":{}}],["allowlinkpreview",{"_index":717,"name":{"940":{},"947":{}},"parent":{}}],["allowlivepreview",{"_index":1673,"name":{"2826":{}},"parent":{}}],["allownull",{"_index":1254,"name":{"1754":{},"1759":{},"1766":{},"1771":{},"1778":{},"1783":{},"1790":{}},"parent":{}}],["alt",{"_index":149,"name":{"138":{},"1999":{},"3279":{}},"parent":{}}],["alwaysapplydefaultformat",{"_index":262,"name":{"251":{},"1950":{}},"parent":{}}],["anchorclass",{"_index":1925,"name":{"3117":{}},"parent":{}}],["anchorid",{"_index":1924,"name":{"3116":{}},"parent":{}}],["anchortitle",{"_index":1926,"name":{"3118":{}},"parent":{}}],["anglerad",{"_index":1971,"name":{"3173":{}},"parent":{}}],["api",{"_index":6,"name":{"4":{},"1439":{},"3604":{}},"parent":{"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{}}}],["appenditem",{"_index":1445,"name":{"2322":{}},"parent":{}}],["applycellshading",{"_index":1574,"name":{"2604":{}},"parent":{}}],["applyformat",{"_index":1386,"name":{"2252":{},"2299":{}},"parent":{}}],["applyliststyle",{"_index":1462,"name":{"2343":{}},"parent":{}}],["applypendingformat",{"_index":2272,"name":{"3835":{}},"parent":{}}],["applysegmentformat",{"_index":2261,"name":{"3816":{}},"parent":{}}],["applystyle",{"_index":740,"name":{"970":{},"2204":{},"2215":{},"2226":{},"2240":{}},"parent":{}}],["applytextstyle",{"_index":1375,"name":{"2241":{}},"parent":{}}],["areallcollapsed",{"_index":1221,"name":{"1707":{},"1711":{},"1718":{},"1723":{}},"parent":{}}],["aresameformats",{"_index":2151,"name":{"3483":{}},"parent":{}}],["array",{"_index":458,"name":{"442":{},"1858":{}},"parent":{}}],["arraydefinition",{"_index":1263,"name":{"1772":{}},"parent":{}}],["arrayitemtype",{"_index":1250,"name":{"1750":{}},"parent":{}}],["arraypush",{"_index":1533,"name":{"2429":{}},"parent":{}}],["asimage",{"_index":465,"name":{"449":{},"2093":{}},"parent":{}}],["asplaintext",{"_index":463,"name":{"447":{},"2091":{}},"parent":{}}],["attachdomevent",{"_index":1054,"name":{"1457":{},"1461":{},"3583":{}},"parent":{}}],["attr",{"_index":942,"name":{"1208":{},"1302":{}},"parent":{}}],["attribute",{"_index":181,"name":{"171":{},"2059":{}},"parent":{}}],["attributecallback",{"_index":1231,"name":{"1729":{}},"parent":{}}],["attributecallbackmap",{"_index":1233,"name":{"1731":{}},"parent":{}}],["attributecallbacks",{"_index":846,"name":{"1094":{},"1108":{}},"parent":{}}],["attributes",{"_index":1216,"name":{"1702":{}},"parent":{}}],["autobullet",{"_index":1096,"name":{"1544":{},"1598":{}},"parent":{}}],["autobulletlist",{"_index":1105,"name":{"1552":{},"1606":{}},"parent":{}}],["autocompleteindex",{"_index":799,"name":{"1038":{}},"parent":{}}],["autocompleteposition",{"_index":80,"name":{"73":{}},"parent":{}}],["autodetect",{"_index":356,"name":{"340":{},"1832":{}},"parent":{}}],["autofocus",{"_index":1768,"name":{"2949":{}},"parent":{}}],["autoformat",{"_index":1624,"name":{"2713":{}},"parent":{}}],["autoformatlist",{"_index":277,"name":{"266":{},"1965":{}},"parent":{}}],["autohyphen",{"_index":266,"name":{"255":{},"1581":{},"1631":{},"1954":{}},"parent":{}}],["autolink",{"_index":199,"name":{"189":{},"1564":{},"1585":{},"1816":{}},"parent":{}}],["autolinkfeaturesettings",{"_index":1134,"name":{"1584":{}},"parent":{}}],["autonumberinglist",{"_index":1106,"name":{"1553":{},"1607":{}},"parent":{}}],["autourldetect",{"_index":85,"name":{"77":{},"1868":{}},"parent":{}}],["b",{"_index":162,"name":{"152":{},"2013":{}},"parent":{}}],["backcolor",{"_index":87,"name":{"78":{},"1869":{}},"parent":{}}],["backgroundcolor",{"_index":675,"name":{"856":{},"891":{},"927":{},"2845":{},"2991":{},"3028":{},"3555":{}},"parent":{}}],["backgroundcolorbuttonstringkey",{"_index":1703,"name":{"2877":{}},"parent":{}}],["backgroundcolorformat",{"_index":1828,"name":{"3026":{}},"parent":{}}],["backgroundcolorkeys",{"_index":1756,"name":{"2938":{}},"parent":{}}],["backgroundcolors",{"_index":676,"name":{"857":{},"892":{},"928":{},"3556":{}},"parent":{}}],["backspace",{"_index":144,"name":{"133":{},"1994":{}},"parent":{}}],["backspaceafterentity",{"_index":1126,"name":{"1575":{},"1593":{}},"parent":{}}],["basepluginevent",{"_index":477,"name":{"471":{}},"parent":{}}],["before",{"_index":308,"name":{"296":{},"2122":{}},"parent":{}}],["beforecutcopy",{"_index":401,"name":{"384":{},"2104":{}},"parent":{}}],["beforecutcopyevent",{"_index":466,"name":{"450":{}},"parent":{}}],["beforecutcopyeventdata",{"_index":473,"name":{"458":{}},"parent":{}}],["beforedispatch",{"_index":1246,"name":{"1744":{}},"parent":{}}],["beforedispose",{"_index":404,"name":{"387":{},"2107":{}},"parent":{}}],["beforedisposeevent",{"_index":479,"name":{"475":{}},"parent":{}}],["beforekeyboardediting",{"_index":413,"name":{"398":{},"2118":{}},"parent":{}}],["beforekeyboardeditingdata",{"_index":635,"name":{"802":{}},"parent":{}}],["beforekeyboardeditingevent",{"_index":633,"name":{"797":{}},"parent":{}}],["beforepaste",{"_index":402,"name":{"385":{},"2105":{}},"parent":{}}],["beforepasteevent",{"_index":483,"name":{"483":{}},"parent":{}}],["beforepasteeventdata",{"_index":491,"name":{"494":{}},"parent":{}}],["beforesetcontent",{"_index":410,"name":{"395":{},"2115":{}},"parent":{}}],["beforesetcontentevent",{"_index":495,"name":{"513":{}},"parent":{}}],["beforesetcontenteventdata",{"_index":498,"name":{"518":{}},"parent":{}}],["begin",{"_index":215,"name":{"206":{},"294":{},"1837":{},"2120":{}},"parent":{}}],["bgcoloreven",{"_index":830,"name":{"1077":{},"3152":{}},"parent":{}}],["bgcolorodd",{"_index":831,"name":{"1078":{},"3153":{}},"parent":{}}],["bgcoloroverride",{"_index":836,"name":{"1084":{}},"parent":{}}],["block",{"_index":355,"name":{"339":{},"1831":{},"2968":{},"3325":{},"3432":{}},"parent":{}}],["blockdecorator",{"_index":2089,"name":{"3386":{},"3407":{}},"parent":{}}],["blockelement",{"_index":639,"name":{"809":{}},"parent":{}}],["blockformat",{"_index":1576,"name":{"2606":{},"3376":{},"3401":{}},"parent":{}}],["blockgroupchildren",{"_index":2050,"name":{"3326":{}},"parent":{}}],["blockgrouptype",{"_index":2003,"name":{"3222":{},"3226":{},"3232":{},"3239":{},"3246":{},"3255":{},"3270":{}},"parent":{}}],["blocklistitem",{"_index":362,"name":{"346":{},"2035":{}},"parent":{}}],["blockquotewrapper",{"_index":360,"name":{"344":{},"2033":{}},"parent":{}}],["blocks",{"_index":2005,"name":{"3223":{},"3227":{},"3233":{},"3240":{},"3247":{},"3256":{},"3271":{}},"parent":{}}],["blocktype",{"_index":1984,"name":{"3184":{},"3189":{},"3198":{},"3201":{},"3215":{},"3234":{},"3241":{},"3248":{},"3272":{}},"parent":{}}],["body",{"_index":311,"name":{"299":{},"2125":{}},"parent":{}}],["bold",{"_index":88,"name":{"79":{},"858":{},"1870":{},"2837":{},"2992":{}},"parent":{}}],["boldbuttonstringkey",{"_index":1695,"name":{"2869":{}},"parent":{}}],["boldformat",{"_index":1831,"name":{"3029":{}},"parent":{}}],["boolean",{"_index":454,"name":{"439":{},"1855":{}},"parent":{}}],["booleandefinition",{"_index":1261,"name":{"1767":{}},"parent":{}}],["border",{"_index":1807,"name":{"2993":{},"3572":{}},"parent":{}}],["borderbottom",{"_index":1878,"name":{"3072":{}},"parent":{}}],["borderbox",{"_index":1808,"name":{"2994":{}},"parent":{}}],["borderboxformat",{"_index":1863,"name":{"3059":{}},"parent":{}}],["bordercollapse",{"_index":1913,"name":{"3107":{}},"parent":{}}],["bordercolor",{"_index":1197,"name":{"1685":{},"3567":{}},"parent":{}}],["borderformat",{"_index":1873,"name":{"3068":{}},"parent":{}}],["borderkeys",{"_index":2193,"name":{"3524":{}},"parent":{}}],["borderleft",{"_index":1879,"name":{"3073":{}},"parent":{}}],["borderradius",{"_index":1880,"name":{"3074":{},"3570":{}},"parent":{}}],["borderright",{"_index":1877,"name":{"3071":{}},"parent":{}}],["borderstyle",{"_index":2202,"name":{"3569":{}},"parent":{}}],["bordertop",{"_index":1875,"name":{"3070":{}},"parent":{}}],["borderwidth",{"_index":2201,"name":{"3568":{}},"parent":{}}],["bottom",{"_index":782,"name":{"1016":{}},"parent":{}}],["bottombordercolor",{"_index":823,"name":{"1070":{},"3145":{}},"parent":{}}],["bottompercent",{"_index":1967,"name":{"3169":{}},"parent":{}}],["boxshadow",{"_index":1809,"name":{"2995":{},"3130":{},"3571":{}},"parent":{}}],["boxshadowformat",{"_index":1933,"name":{"3128":{}},"parent":{}}],["br",{"_index":2051,"name":{"3327":{}},"parent":{}}],["browser",{"_index":1384,"name":{"2250":{}},"parent":{}}],["browserinfo",{"_index":13,"name":{"13":{}},"parent":{}}],["buildineditfeature",{"_index":1022,"name":{"1386":{}},"parent":{}}],["bulletedlist",{"_index":1685,"name":{"2846":{}},"parent":{}}],["bulletedlistbuttonstringkey",{"_index":1704,"name":{"2878":{}},"parent":{}}],["bulletlisttype",{"_index":442,"name":{"426":{}},"parent":{}}],["buttons",{"_index":1680,"name":{"2834":{}},"parent":{}}],["cachecontentmodel",{"_index":2227,"name":{"3674":{},"3851":{}},"parent":{}}],["cachedelement",{"_index":1983,"name":{"3183":{},"3192":{},"3197":{},"3204":{},"3208":{},"3231":{},"3259":{}},"parent":{}}],["cachedmodel",{"_index":2212,"name":{"3606":{}},"parent":{}}],["cachedrangeex",{"_index":2213,"name":{"3607":{}},"parent":{}}],["cachegeteventdata",{"_index":1513,"name":{"2407":{}},"parent":{}}],["canaddimagealttext",{"_index":696,"name":{"882":{},"917":{},"3546":{}},"parent":{}}],["canappendatcursor",{"_index":1467,"name":{"2348":{}},"parent":{}}],["cancelbuttonstringkey",{"_index":1628,"name":{"2722":{}},"parent":{}}],["canmerge",{"_index":1457,"name":{"2335":{}},"parent":{}}],["canmergetablecell",{"_index":702,"name":{"888":{},"923":{},"3552":{}},"parent":{}}],["canmove",{"_index":1163,"name":{"1642":{}},"parent":{}}],["canmovecurrentsnapshot",{"_index":1491,"name":{"2384":{}},"parent":{}}],["canpersist",{"_index":1230,"name":{"1728":{}},"parent":{}}],["canredo",{"_index":708,"name":{"901":{},"938":{},"3565":{}},"parent":{}}],["canregenerateimage",{"_index":1604,"name":{"2660":{}},"parent":{}}],["canundo",{"_index":707,"name":{"900":{},"937":{},"3564":{}},"parent":{}}],["canundoautocomplete",{"_index":1167,"name":{"1646":{},"2390":{}},"parent":{}}],["canunlink",{"_index":694,"name":{"880":{},"915":{},"3544":{}},"parent":{}}],["capitalization",{"_index":295,"name":{"284":{}},"parent":{}}],["capitalizeeachword",{"_index":300,"name":{"288":{},"1814":{}},"parent":{}}],["cdatasection",{"_index":941,"name":{"1205":{},"1299":{}},"parent":{}}],["cells",{"_index":1422,"name":{"2293":{},"3207":{}},"parent":{}}],["cellshadebuttonstringkey",{"_index":1729,"name":{"2903":{}},"parent":{}}],["center",{"_index":197,"name":{"186":{},"1796":{}},"parent":{}}],["chainsanitizercallback",{"_index":1506,"name":{"2400":{}},"parent":{}}],["changecapitalization",{"_index":1560,"name":{"2590":{},"3817":{}},"parent":{}}],["changeelementtag",{"_index":1387,"name":{"2253":{}},"parent":{}}],["changefontsize",{"_index":1542,"name":{"2567":{},"3815":{}},"parent":{}}],["changeimage",{"_index":2271,"name":{"3833":{}},"parent":{}}],["changelisttype",{"_index":1443,"name":{"2320":{},"2340":{}},"parent":{}}],["changesource",{"_index":198,"name":{"188":{},"1672":{},"3786":{}},"parent":{}}],["characterdata",{"_index":940,"name":{"1203":{},"1297":{}},"parent":{}}],["childnode",{"_index":939,"name":{"1202":{},"1296":{}},"parent":{}}],["childprocessor",{"_index":2144,"name":{"3476":{}},"parent":{}}],["children",{"_index":1217,"name":{"1703":{}},"parent":{}}],["circle",{"_index":452,"name":{"436":{},"1808":{}},"parent":{}}],["classname",{"_index":1213,"name":{"1699":{}},"parent":{}}],["cleanhtml",{"_index":288,"name":{"276":{},"1975":{}},"parent":{}}],["clear",{"_index":390,"name":{"373":{},"2143":{}},"parent":{}}],["clearauthenticationcache",{"_index":89,"name":{"80":{},"1871":{}},"parent":{}}],["clearblockformat",{"_index":1544,"name":{"2569":{}},"parent":{}}],["cleareventdatacache",{"_index":1514,"name":{"2408":{}},"parent":{}}],["clearformat",{"_index":1545,"name":{"2570":{},"2867":{},"3836":{}},"parent":{}}],["clearformatbuttonstringkey",{"_index":1727,"name":{"2901":{}},"parent":{}}],["clearformatmode",{"_index":352,"name":{"337":{}},"parent":{}}],["clearproceedingsnapshots",{"_index":1492,"name":{"2385":{}},"parent":{}}],["clearproceedingsnapshotsv2",{"_index":1493,"name":{"2386":{}},"parent":{}}],["clearredo",{"_index":1166,"name":{"1645":{}},"parent":{}}],["click",{"_index":243,"name":{"230":{},"1929":{}},"parent":{}}],["clickingpoint",{"_index":47,"name":{"43":{}},"parent":{}}],["clickonentity",{"_index":1123,"name":{"1572":{},"1590":{}},"parent":{}}],["clipboarddata",{"_index":484,"name":{"484":{},"495":{},"503":{},"817":{},"3636":{},"3650":{},"3661":{}},"parent":{}}],["clonedroot",{"_index":469,"name":{"452":{},"460":{},"465":{},"600":{},"605":{},"607":{}},"parent":{}}],["code",{"_index":1691,"name":{"2862":{},"2985":{},"3219":{},"3264":{},"3276":{},"3284":{},"3292":{},"3299":{},"3304":{},"3385":{},"3406":{}},"parent":{}}],["codebuttonstringkey",{"_index":1722,"name":{"2896":{}},"parent":{}}],["codefeaturesettings",{"_index":1154,"name":{"1632":{}},"parent":{}}],["col",{"_index":1424,"name":{"2295":{}},"parent":{}}],["colindex",{"_index":2239,"name":{"3773":{}},"parent":{}}],["collapsenodes",{"_index":956,"name":{"1312":{},"2254":{},"2443":{},"2509":{},"3684":{},"3861":{}},"parent":{}}],["collapsenodesinregion",{"_index":1476,"name":{"2357":{}},"parent":{}}],["collapsetosingleelement",{"_index":640,"name":{"810":{}},"parent":{}}],["color",{"_index":8,"name":{"6":{},"3575":{}},"parent":{"2719":{}}}],["colorkeyandvalue",{"_index":1013,"name":{"1374":{}},"parent":{}}],["colortransformdirection",{"_index":210,"name":{"202":{}},"parent":{}}],["combinebordervalue",{"_index":2293,"name":{"3949":{}},"parent":{}}],["comma",{"_index":168,"name":{"158":{},"2019":{}},"parent":{}}],["commandbarproperties",{"_index":1669,"name":{"2822":{}},"parent":{}}],["commandbarsubmenuproperties",{"_index":1676,"name":{"2831":{},"2924":{}},"parent":{}}],["comment",{"_index":184,"name":{"174":{},"1207":{},"1301":{},"2062":{}},"parent":{}}],["commit",{"_index":1469,"name":{"2350":{}},"parent":{}}],["commitentity",{"_index":1507,"name":{"2401":{}},"parent":{}}],["commitlistchains",{"_index":1577,"name":{"2607":{}},"parent":{}}],["compatible",{"_index":3,"name":{"1":{}},"parent":{"1794":{},"1798":{},"1810":{},"1815":{},"1829":{},"1833":{},"1836":{},"1843":{},"1846":{},"1849":{},"1854":{},"1861":{},"1864":{},"1867":{},"1915":{},"1922":{},"1927":{},"1940":{},"1971":{},"1974":{},"1980":{},"1989":{},"1992":{},"2030":{},"2044":{},"2053":{},"2057":{},"2066":{},"2089":{},"2094":{},"2119":{},"2124":{},"2128":{},"2130":{},"2134":{},"2144":{}}}],["compatible.compatiblealignment",{"_index":1279,"name":{},"parent":{"1795":{},"1796":{},"1797":{}}}],["compatible.compatiblebulletlisttype",{"_index":1281,"name":{},"parent":{"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{}}}],["compatible.compatiblecapitalization",{"_index":1283,"name":{},"parent":{"1811":{},"1812":{},"1813":{},"1814":{}}}],["compatible.compatiblechangesource",{"_index":1285,"name":{},"parent":{"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{}}}],["compatible.compatibleclearformatmode",{"_index":1287,"name":{},"parent":{"1830":{},"1831":{},"1832":{}}}],["compatible.compatiblecolortransformdirection",{"_index":1289,"name":{},"parent":{"1834":{},"1835":{}}}],["compatible.compatiblecontentposition",{"_index":1291,"name":{},"parent":{"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{}}}],["compatible.compatiblecontenttype",{"_index":1295,"name":{},"parent":{"1847":{},"1848":{}}}],["compatible.compatiblecontenttypeprefix",{"_index":1293,"name":{},"parent":{"1844":{},"1845":{}}}],["compatible.compatibledarkmodedatasetnames",{"_index":1297,"name":{},"parent":{"1850":{},"1851":{},"1852":{},"1853":{}}}],["compatible.compatibledefinitiontype",{"_index":1299,"name":{},"parent":{"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{}}}],["compatible.compatibledelimiterclasses",{"_index":1301,"name":{},"parent":{"1862":{},"1863":{}}}],["compatible.compatibledirection",{"_index":1303,"name":{},"parent":{"1865":{},"1866":{}}}],["compatible.compatibledocumentcommand",{"_index":1305,"name":{},"parent":{"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{}}}],["compatible.compatibledocumentposition",{"_index":1307,"name":{},"parent":{"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{}}}],["compatible.compatibleentityclasses",{"_index":1309,"name":{},"parent":{"1923":{},"1924":{},"1925":{},"1926":{}}}],["compatible.compatibleentityoperation",{"_index":1311,"name":{},"parent":{"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{}}}],["compatible.compatibleexperimentalfeatures",{"_index":1313,"name":{},"parent":{"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{}}}],["compatible.compatiblefontsizechange",{"_index":1315,"name":{},"parent":{"1972":{},"1973":{}}}],["compatible.compatiblegetcontentmode",{"_index":1317,"name":{},"parent":{"1975":{},"1976":{},"1977":{},"1978":{},"1979":{}}}],["compatible.compatibleimageeditoperation",{"_index":1319,"name":{},"parent":{"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{}}}],["compatible.compatibleindentation",{"_index":1321,"name":{},"parent":{"1990":{},"1991":{}}}],["compatible.compatiblekeys",{"_index":1323,"name":{},"parent":{"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{}}}],["compatible.compatibleknowncreateelementdataindex",{"_index":1325,"name":{},"parent":{"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{}}}],["compatible.compatibleknownpastesourcetype",{"_index":1327,"name":{},"parent":{"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{}}}],["compatible.compatiblelisttype",{"_index":1329,"name":{},"parent":{"2054":{},"2055":{},"2056":{}}}],["compatible.compatiblenodetype",{"_index":1331,"name":{},"parent":{"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{}}}],["compatible.compatiblenumberinglisttype",{"_index":1333,"name":{},"parent":{"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{}}}],["compatible.compatiblepastetype",{"_index":1335,"name":{},"parent":{"2090":{},"2091":{},"2092":{},"2093":{}}}],["compatible.compatibleplugineventtype",{"_index":1337,"name":{},"parent":{"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{}}}],["compatible.compatiblepositiontype",{"_index":1339,"name":{},"parent":{"2120":{},"2121":{},"2122":{},"2123":{}}}],["compatible.compatiblequeryscope",{"_index":1341,"name":{},"parent":{"2125":{},"2126":{},"2127":{}}}],["compatible.compatibleregiontype",{"_index":1343,"name":{},"parent":{"2129":{}}}],["compatible.compatibleselectionrangetypes",{"_index":1345,"name":{},"parent":{"2131":{},"2132":{},"2133":{}}}],["compatible.compatibletableborderformat",{"_index":1347,"name":{},"parent":{"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{}}}],["compatible.compatibletableoperation",{"_index":1349,"name":{},"parent":{"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{}}}],["compatiblealignment",{"_index":1278,"name":{"1794":{}},"parent":{}}],["compatiblebeforecutcopyevent",{"_index":475,"name":{"463":{}},"parent":{}}],["compatiblebeforedisposeevent",{"_index":481,"name":{"479":{}},"parent":{}}],["compatiblebeforekeyboardeditingevent",{"_index":637,"name":{"804":{}},"parent":{}}],["compatiblebeforepasteevent",{"_index":493,"name":{"502":{}},"parent":{}}],["compatiblebeforesetcontentevent",{"_index":500,"name":{"520":{}},"parent":{}}],["compatiblebulletlisttype",{"_index":1280,"name":{"1798":{}},"parent":{}}],["compatiblecapitalization",{"_index":1282,"name":{"1810":{}},"parent":{}}],["compatiblechangesource",{"_index":1284,"name":{"1815":{}},"parent":{}}],["compatibleclearformatmode",{"_index":1286,"name":{"1829":{}},"parent":{}}],["compatiblecolortransformdirection",{"_index":1288,"name":{"1833":{}},"parent":{}}],["compatiblecontentchangedevent",{"_index":509,"name":{"536":{}},"parent":{}}],["compatiblecontentmodelbeforepasteevent",{"_index":2223,"name":{"3657":{}},"parent":{}}],["compatiblecontentposition",{"_index":1290,"name":{"1836":{}},"parent":{}}],["compatiblecontenttype",{"_index":1294,"name":{"1846":{}},"parent":{}}],["compatiblecontenttypeprefix",{"_index":1292,"name":{"1843":{}},"parent":{}}],["compatibledarkmodedatasetnames",{"_index":1296,"name":{"1849":{}},"parent":{}}],["compatibledefinitiontype",{"_index":1298,"name":{"1854":{}},"parent":{}}],["compatibledelimiterclasses",{"_index":1300,"name":{"1861":{}},"parent":{}}],["compatibledirection",{"_index":1302,"name":{"1864":{}},"parent":{}}],["compatibledocumentcommand",{"_index":1304,"name":{"1867":{}},"parent":{}}],["compatibledocumentposition",{"_index":1306,"name":{"1915":{}},"parent":{}}],["compatibleeditimageevent",{"_index":518,"name":{"556":{}},"parent":{}}],["compatibleeditorreadyevent",{"_index":522,"name":{"568":{}},"parent":{}}],["compatibleentershadoweditevent",{"_index":614,"name":{"760":{}},"parent":{}}],["compatibleentityclasses",{"_index":1308,"name":{"1922":{}},"parent":{}}],["compatibleentityoperation",{"_index":1310,"name":{"1927":{}},"parent":{}}],["compatibleentityoperationevent",{"_index":533,"name":{"589":{}},"parent":{}}],["compatibleexperimentalfeatures",{"_index":1312,"name":{"1940":{}},"parent":{}}],["compatibleextractcontentwithdomevent",{"_index":539,"name":{"606":{}},"parent":{}}],["compatiblefontsizechange",{"_index":1314,"name":{"1971":{}},"parent":{}}],["compatiblegetcontentmode",{"_index":1316,"name":{"1974":{}},"parent":{}}],["compatibleimageeditoperation",{"_index":1318,"name":{"1980":{}},"parent":{}}],["compatibleindentation",{"_index":1320,"name":{"1989":{}},"parent":{}}],["compatiblekeys",{"_index":1322,"name":{"1992":{}},"parent":{}}],["compatibleknowncreateelementdataindex",{"_index":1324,"name":{"2030":{}},"parent":{}}],["compatibleknownpastesourcetype",{"_index":1326,"name":{"2044":{}},"parent":{}}],["compatibleleaveshadoweditevent",{"_index":616,"name":{"766":{}},"parent":{}}],["compatiblelisttype",{"_index":1328,"name":{"2053":{}},"parent":{}}],["compatiblenodetype",{"_index":1330,"name":{"2057":{}},"parent":{}}],["compatiblenumberinglisttype",{"_index":1332,"name":{"2066":{}},"parent":{}}],["compatiblepastetype",{"_index":1334,"name":{"2089":{}},"parent":{}}],["compatiblependingformatstatechangedevent",{"_index":545,"name":{"618":{}},"parent":{}}],["compatibleplugincompositionevent",{"_index":574,"name":{"683":{}},"parent":{}}],["compatibleplugincontextmenuevent",{"_index":576,"name":{"688":{}},"parent":{}}],["compatibleplugindomevent",{"_index":573,"name":{"682":{}},"parent":{}}],["compatibleplugineventtype",{"_index":1336,"name":{"2094":{}},"parent":{}}],["compatibleplugininputevent",{"_index":590,"name":{"723":{}},"parent":{}}],["compatiblepluginkeyboardevent",{"_index":578,"name":{"694":{}},"parent":{}}],["compatiblepluginkeydownevent",{"_index":579,"name":{"695":{}},"parent":{}}],["compatiblepluginkeypressevent",{"_index":581,"name":{"701":{}},"parent":{}}],["compatiblepluginkeyupevent",{"_index":583,"name":{"706":{}},"parent":{}}],["compatiblepluginmousedownevent",{"_index":586,"name":{"712":{}},"parent":{}}],["compatiblepluginmouseevent",{"_index":585,"name":{"711":{}},"parent":{}}],["compatiblepluginmouseupevent",{"_index":588,"name":{"717":{}},"parent":{}}],["compatiblepluginscrollevent",{"_index":592,"name":{"728":{}},"parent":{}}],["compatiblepositiontype",{"_index":1338,"name":{"2119":{}},"parent":{}}],["compatiblequeryscope",{"_index":1340,"name":{"2124":{}},"parent":{}}],["compatibleregiontype",{"_index":1342,"name":{"2128":{}},"parent":{}}],["compatibleselectionchangedevent",{"_index":631,"name":{"792":{}},"parent":{}}],["compatibleselectionrangetypes",{"_index":1344,"name":{"2130":{}},"parent":{}}],["compatibletableborderformat",{"_index":1346,"name":{"2134":{}},"parent":{}}],["compatibletableoperation",{"_index":1348,"name":{"2144":{}},"parent":{}}],["compatiblezoomchangedevent",{"_index":624,"name":{"779":{}},"parent":{}}],["compositionend",{"_index":397,"name":{"379":{},"2099":{}},"parent":{}}],["constructor",{"_index":1357,"name":{"2181":{},"2195":{},"2206":{},"2217":{},"2228":{},"2291":{},"2311":{},"2327":{},"2364":{},"2394":{},"2434":{},"2500":{},"2610":{},"2616":{},"2628":{},"2635":{},"2641":{},"2649":{},"2668":{},"2682":{},"2688":{},"2696":{},"2702":{},"2708":{},"2714":{},"3848":{},"3919":{},"3925":{},"3931":{},"3937":{},"3942":{}},"parent":{}}],["containedby",{"_index":140,"name":{"130":{},"1921":{}},"parent":{}}],["container",{"_index":1803,"name":{"2988":{}},"parent":{}}],["contains",{"_index":139,"name":{"129":{},"815":{},"969":{},"1310":{},"1920":{},"2203":{},"2214":{},"2225":{},"2237":{},"2255":{},"2314":{},"2332":{},"2441":{},"2507":{},"3682":{},"3859":{}},"parent":{}}],["content",{"_index":11,"name":{"9":{},"10":{},"11":{},"12":{}},"parent":{"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{},"3954":{}}}],["contentchanged",{"_index":174,"name":{"164":{},"382":{},"2025":{},"2102":{}},"parent":{}}],["contentchangeddata",{"_index":667,"name":{"847":{}},"parent":{}}],["contentchangedevent",{"_index":502,"name":{"525":{}},"parent":{}}],["contentchangedeventdata",{"_index":507,"name":{"532":{}},"parent":{}}],["contentdiv",{"_index":1047,"name":{"1437":{},"3612":{}},"parent":{}}],["contentedit",{"_index":1579,"name":{"2609":{}},"parent":{}}],["contenteditfeature",{"_index":1016,"name":{"1378":{}},"parent":{}}],["contenteditfeaturesettings",{"_index":1095,"name":{"1543":{}},"parent":{}}],["contentforshadowentity",{"_index":530,"name":{"578":{},"588":{},"595":{}},"parent":{}}],["contentmetadata",{"_index":813,"name":{"1058":{}},"parent":{}}],["contentmetadatabase",{"_index":801,"name":{"1040":{}},"parent":{}}],["contentmodelbeforepasteevent",{"_index":2218,"name":{"3632":{}},"parent":{}}],["contentmodelbeforepasteeventdata",{"_index":2221,"name":{"3646":{}},"parent":{}}],["contentmodelblock",{"_index":1976,"name":{"3177":{}},"parent":{}}],["contentmodelblockbase",{"_index":1993,"name":{"3200":{}},"parent":{}}],["contentmodelblockformat",{"_index":1776,"name":{"2957":{}},"parent":{}}],["contentmodelblockgroup",{"_index":2020,"name":{"3260":{}},"parent":{}}],["contentmodelblockgroupbase",{"_index":2006,"name":{"3225":{}},"parent":{}}],["contentmodelblockgrouptype",{"_index":1973,"name":{"3174":{}},"parent":{}}],["contentmodelblockhandler",{"_index":2128,"name":{"3461":{}},"parent":{}}],["contentmodelblocktype",{"_index":1974,"name":{"3175":{}},"parent":{}}],["contentmodelblockwithcache",{"_index":1995,"name":{"3203":{}},"parent":{}}],["contentmodelbr",{"_index":2021,"name":{"3261":{}},"parent":{}}],["contentmodelcode",{"_index":2036,"name":{"3308":{}},"parent":{}}],["contentmodelcodeformat",{"_index":1781,"name":{"2962":{}},"parent":{}}],["contentmodelcopypasteplugin",{"_index":2289,"name":{"3941":{}},"parent":{}}],["contentmodelcoreapimap",{"_index":2206,"name":{"3578":{}},"parent":{}}],["contentmodeldecorator",{"_index":2042,"name":{"3316":{}},"parent":{}}],["contentmodeldivider",{"_index":1989,"name":{"3193":{}},"parent":{}}],["contentmodeldividerformat",{"_index":1783,"name":{"2964":{}},"parent":{}}],["contentmodeldocument",{"_index":2002,"name":{"3221":{}},"parent":{}}],["contentmodeleditor",{"_index":2278,"name":{"3847":{}},"parent":{}}],["contentmodeleditorcore",{"_index":2210,"name":{"3603":{}},"parent":{}}],["contentmodeleditoroptions",{"_index":2229,"name":{"3739":{}},"parent":{}}],["contentmodeleditplugin",{"_index":2283,"name":{"3924":{}},"parent":{}}],["contentmodelentity",{"_index":1999,"name":{"3210":{}},"parent":{}}],["contentmodelformatbase",{"_index":1784,"name":{"2965":{}},"parent":{}}],["contentmodelformatcontainer",{"_index":2008,"name":{"3228":{}},"parent":{}}],["contentmodelformatcontainerformat",{"_index":1782,"name":{"2963":{}},"parent":{}}],["contentmodelformatmap",{"_index":1786,"name":{"2967":{}},"parent":{}}],["contentmodelformatplugin",{"_index":2281,"name":{"3918":{}},"parent":{}}],["contentmodelformatstate",{"_index":2196,"name":{"3528":{}},"parent":{}}],["contentmodelformatter",{"_index":2252,"name":{"3791":{}},"parent":{}}],["contentmodelgeneralblock",{"_index":2011,"name":{"3236":{}},"parent":{}}],["contentmodelgeneralsegment",{"_index":2023,"name":{"3267":{}},"parent":{}}],["contentmodelhandler",{"_index":2126,"name":{"3459":{}},"parent":{}}],["contentmodelhandlermap",{"_index":2047,"name":{"3323":{}},"parent":{}}],["contentmodelhyperlinkformat",{"_index":1780,"name":{"2961":{}},"parent":{}}],["contentmodelimage",{"_index":2025,"name":{"3277":{}},"parent":{}}],["contentmodelimageformat",{"_index":1804,"name":{"2989":{}},"parent":{}}],["contentmodellink",{"_index":2038,"name":{"3310":{}},"parent":{}}],["contentmodellistitem",{"_index":2013,"name":{"3243":{}},"parent":{}}],["contentmodellistitemformat",{"_index":1778,"name":{"2959":{}},"parent":{}}],["contentmodellistitemlevelformat",{"_index":1779,"name":{"2960":{}},"parent":{}}],["contentmodellistlevel",{"_index":2043,"name":{"3317":{}},"parent":{}}],["contentmodelparagraph",{"_index":1977,"name":{"3178":{}},"parent":{}}],["contentmodelparagraphdecorator",{"_index":2040,"name":{"3313":{}},"parent":{}}],["contentmodelpaste",{"_index":281,"name":{"270":{},"1969":{}},"parent":{}}],["contentmodelpasteplugin",{"_index":2285,"name":{"3930":{}},"parent":{}}],["contentmodelsegment",{"_index":2035,"name":{"3307":{}},"parent":{}}],["contentmodelsegmentbase",{"_index":2033,"name":{"3301":{}},"parent":{}}],["contentmodelsegmentformat",{"_index":1770,"name":{"2951":{}},"parent":{}}],["contentmodelsegmenttype",{"_index":1975,"name":{"3176":{}},"parent":{}}],["contentmodelselectionmarker",{"_index":2031,"name":{"3295":{}},"parent":{}}],["contentmodeltable",{"_index":1985,"name":{"3186":{}},"parent":{}}],["contentmodeltablecell",{"_index":2017,"name":{"3250":{}},"parent":{}}],["contentmodeltablecellformat",{"_index":1777,"name":{"2958":{}},"parent":{}}],["contentmodeltableformat",{"_index":1773,"name":{"2954":{}},"parent":{}}],["contentmodeltablerow",{"_index":1997,"name":{"3205":{}},"parent":{}}],["contentmodeltext",{"_index":2029,"name":{"3288":{}},"parent":{}}],["contentmodeltodom",{"_index":2143,"name":{"3475":{}},"parent":{}}],["contentmodeltypeincontainerplugin",{"_index":2287,"name":{"3936":{}},"parent":{}}],["contentmodelwithdataset",{"_index":1774,"name":{"2955":{}},"parent":{}}],["contentmodelwithformat",{"_index":1771,"name":{"2952":{}},"parent":{}}],["contentnode",{"_index":2255,"name":{"3794":{}},"parent":{}}],["contentposition",{"_index":214,"name":{"205":{}},"parent":{}}],["contentreadonly",{"_index":90,"name":{"81":{},"1872":{}},"parent":{}}],["contenttraverser",{"_index":1351,"name":{"2170":{}},"parent":{}}],["contenttype",{"_index":191,"name":{"181":{}},"parent":{}}],["contenttypeprefix",{"_index":188,"name":{"178":{}},"parent":{}}],["contextmenu",{"_index":244,"name":{"231":{},"391":{},"1930":{},"2111":{},"2615":{}},"parent":{}}],["contextmenuitem",{"_index":1739,"name":{"2913":{}},"parent":{}}],["contextmenuoptions",{"_index":1583,"name":{"2621":{}},"parent":{}}],["contextmenuprovider",{"_index":656,"name":{"830":{}},"parent":{}}],["contextmenuproviders",{"_index":41,"name":{"38":{}},"parent":{}}],["contextmenuwrapper",{"_index":363,"name":{"347":{},"2036":{}},"parent":{}}],["convertcssonly",{"_index":859,"name":{"1106":{}},"parent":{}}],["convertglobalcsstoinlinecss",{"_index":1503,"name":{"2397":{}},"parent":{}}],["convertinlinecss",{"_index":1498,"name":{"2392":{}},"parent":{}}],["convertsingleimagebody",{"_index":263,"name":{"252":{},"1951":{}},"parent":{}}],["coordinates",{"_index":840,"name":{"1089":{},"1714":{}},"parent":{}}],["copy",{"_index":91,"name":{"82":{},"1873":{}},"parent":{}}],["copypaste",{"_index":1037,"name":{"1425":{},"1452":{},"3625":{}},"parent":{}}],["copypastepluginstate",{"_index":81,"name":{"74":{}},"parent":{}}],["copypastetempdiv",{"_index":361,"name":{"345":{},"2034":{}},"parent":{}}],["core",{"_index":5,"name":{"3":{}},"parent":{"2433":{},"2499":{},"2565":{},"2566":{}}}],["core.editor",{"_index":1537,"name":{},"parent":{"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{}}}],["core.editorbase",{"_index":1540,"name":{},"parent":{"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{}}}],["coreapimap",{"_index":1056,"name":{"1459":{}},"parent":{}}],["coreapioverride",{"_index":1090,"name":{"1525":{},"2750":{},"3747":{}},"parent":{}}],["corecreator",{"_index":1276,"name":{"1792":{}},"parent":{}}],["corepluginoverride",{"_index":1091,"name":{"1526":{},"2751":{},"3748":{}},"parent":{}}],["coreplugins",{"_index":1030,"name":{"1417":{}},"parent":{}}],["cornerresize",{"_index":345,"name":{"330":{},"1982":{}},"parent":{}}],["createarraydefinition",{"_index":1528,"name":{"2424":{}},"parent":{}}],["createblocktraverser",{"_index":1355,"name":{"2173":{}},"parent":{}}],["createbodytraverser",{"_index":1352,"name":{"2171":{}},"parent":{}}],["createbooleandefinition",{"_index":1526,"name":{"2422":{}},"parent":{}}],["createbr",{"_index":2166,"name":{"3497":{}},"parent":{}}],["createcontentmodel",{"_index":2208,"name":{"3580":{},"3628":{},"3672":{},"3849":{}},"parent":{}}],["createcontentmodeldocument",{"_index":2175,"name":{"3506":{}},"parent":{}}],["createcontentmodeleditor",{"_index":2298,"name":{"3954":{}},"parent":{}}],["createcontentmodeleditorcore",{"_index":2291,"name":{"3947":{}},"parent":{}}],["createcontextmenuplugin",{"_index":1734,"name":{"2908":{}},"parent":{}}],["createcontextmenuprovider",{"_index":1735,"name":{"2909":{}},"parent":{}}],["createdefaulthtmlsanitizeroptions",{"_index":1505,"name":{"2399":{}},"parent":{}}],["createdivider",{"_index":2180,"name":{"3511":{}},"parent":{}}],["createdomtomodelcontext",{"_index":2195,"name":{"3527":{}},"parent":{}}],["createeditor",{"_index":1769,"name":{"2950":{}},"parent":{}}],["createeditorcontext",{"_index":2204,"name":{"3576":{},"3579":{}},"parent":{}}],["createeditorcore",{"_index":1541,"name":{"2566":{}},"parent":{}}],["createelement",{"_index":1414,"name":{"2284":{}},"parent":{}}],["createelementdata",{"_index":1209,"name":{"1696":{}},"parent":{}}],["createemojiplugin",{"_index":1760,"name":{"2942":{}},"parent":{}}],["createentity",{"_index":2179,"name":{"3510":{}},"parent":{}}],["createentityplaceholder",{"_index":1510,"name":{"2404":{}},"parent":{}}],["createformatcontainer",{"_index":2168,"name":{"3499":{}},"parent":{}}],["creategeneralblock",{"_index":2178,"name":{"3509":{}},"parent":{}}],["creategeneralsegment",{"_index":2177,"name":{"3508":{}},"parent":{}}],["createimage",{"_index":2174,"name":{"3505":{}},"parent":{}}],["createimageeditmenuprovider",{"_index":1737,"name":{"2911":{}},"parent":{}}],["createlink",{"_index":92,"name":{"83":{},"190":{},"1817":{},"1874":{},"2571":{}},"parent":{}}],["createlistchains",{"_index":1465,"name":{"2347":{}},"parent":{}}],["createlisteditmenuprovider",{"_index":1736,"name":{"2910":{}},"parent":{}}],["createlistitem",{"_index":2167,"name":{"3498":{}},"parent":{}}],["createlistlevel",{"_index":2181,"name":{"3512":{}},"parent":{}}],["createnumberdefinition",{"_index":1525,"name":{"2421":{}},"parent":{}}],["createobjectdefinition",{"_index":1529,"name":{"2425":{}},"parent":{}}],["createparagraph",{"_index":2169,"name":{"3500":{}},"parent":{}}],["createparagraphdecorator",{"_index":2176,"name":{"3507":{}},"parent":{}}],["createpastefragment",{"_index":1058,"name":{"1462":{},"1481":{},"3584":{}},"parent":{}}],["createpasteoptionplugin",{"_index":1755,"name":{"2937":{}},"parent":{}}],["createrange",{"_index":1482,"name":{"2373":{}},"parent":{}}],["createribbonplugin",{"_index":1733,"name":{"2907":{}},"parent":{}}],["createselectionmarker",{"_index":2170,"name":{"3501":{}},"parent":{}}],["createselectiontraverser",{"_index":1354,"name":{"2172":{}},"parent":{}}],["createsnapshots",{"_index":1496,"name":{"2389":{}},"parent":{}}],["createstringdefinition",{"_index":1527,"name":{"2423":{}},"parent":{}}],["createtable",{"_index":2171,"name":{"3502":{}},"parent":{}}],["createtablecell",{"_index":2172,"name":{"3503":{}},"parent":{}}],["createtableeditmenuprovider",{"_index":1738,"name":{"2912":{}},"parent":{}}],["createtext",{"_index":2173,"name":{"3504":{}},"parent":{}}],["createuiutilities",{"_index":1637,"name":{"2739":{}},"parent":{}}],["createupdatecontentplugin",{"_index":1653,"name":{"2789":{}},"parent":{}}],["createvlistatblock",{"_index":1468,"name":{"2349":{}},"parent":{}}],["createvlistfromregion",{"_index":1463,"name":{"2345":{}},"parent":{}}],["crop",{"_index":350,"name":{"335":{},"1987":{}},"parent":{}}],["cssstylecallback",{"_index":1234,"name":{"1732":{}},"parent":{}}],["cssstylecallbackmap",{"_index":1236,"name":{"1734":{}},"parent":{}}],["cssstylecallbacks",{"_index":847,"name":{"1095":{},"1109":{}},"parent":{}}],["ctrl",{"_index":176,"name":{"166":{},"2027":{}},"parent":{}}],["ctrl_left",{"_index":148,"name":{"137":{},"1998":{}},"parent":{}}],["current",{"_index":2112,"name":{"3437":{}},"parent":{}}],["currentblockelement",{"_index":726,"name":{"955":{},"2174":{}},"parent":{}}],["currentelementorstyle",{"_index":857,"name":{"1105":{}},"parent":{}}],["currentindex",{"_index":798,"name":{"1037":{}},"parent":{}}],["currentinlineelement",{"_index":730,"name":{"958":{},"2177":{}},"parent":{}}],["cursorfeaturesettings",{"_index":1136,"name":{"1587":{}},"parent":{}}],["customdata",{"_index":57,"name":{"51":{},"843":{}},"parent":{}}],["customize",{"_index":460,"name":{"444":{},"1860":{}},"parent":{}}],["customizedefinition",{"_index":1272,"name":{"1785":{}},"parent":{}}],["customizedmerge",{"_index":2220,"name":{"3634":{},"3648":{},"3659":{}},"parent":{}}],["customreplace",{"_index":1588,"name":{"2627":{}},"parent":{}}],["customreplacement",{"_index":1156,"name":{"1635":{}},"parent":{}}],["customvalues",{"_index":654,"name":{"828":{}},"parent":{}}],["cut",{"_index":93,"name":{"84":{},"195":{},"1822":{},"1875":{}},"parent":{}}],["cutpastelistchain",{"_index":1591,"name":{"2634":{}},"parent":{}}],["darkcolorhandler",{"_index":1005,"name":{"1367":{},"1447":{},"3369":{},"3395":{},"3415":{},"3620":{}},"parent":{}}],["darkmodecolor",{"_index":768,"name":{"1003":{},"1377":{}},"parent":{}}],["darkmodedatasetnames",{"_index":220,"name":{"212":{}},"parent":{}}],["darktolight",{"_index":213,"name":{"204":{},"1835":{}},"parent":{}}],["dash",{"_index":445,"name":{"429":{},"1801":{}},"parent":{}}],["dash_underscore",{"_index":169,"name":{"159":{},"2020":{}},"parent":{}}],["data",{"_index":505,"name":{"527":{},"534":{},"538":{}},"parent":{}}],["dataprovider",{"_index":1617,"name":{"2689":{}},"parent":{}}],["dataset",{"_index":1215,"name":{"1701":{},"2956":{},"2986":{},"2996":{},"3191":{},"3258":{},"3287":{},"3312":{},"3320":{},"3452":{}},"parent":{}}],["datasetformat",{"_index":1947,"name":{"3141":{}},"parent":{}}],["decimal",{"_index":421,"name":{"405":{},"2068":{}},"parent":{}}],["decimaldash",{"_index":422,"name":{"406":{},"2069":{}},"parent":{}}],["decimaldoubleparenthesis",{"_index":424,"name":{"408":{},"2071":{}},"parent":{}}],["decimalparenthesis",{"_index":423,"name":{"407":{},"2070":{}},"parent":{}}],["decorator",{"_index":1981,"name":{"3181":{}},"parent":{}}],["decrease",{"_index":286,"name":{"274":{},"283":{},"1973":{},"1991":{}},"parent":{}}],["decreasefontsize",{"_index":94,"name":{"85":{},"1876":{},"2843":{}},"parent":{}}],["decreasefontsizebuttonstringkey",{"_index":1701,"name":{"2875":{}},"parent":{}}],["decreaseindent",{"_index":1687,"name":{"2848":{}},"parent":{}}],["decreaseindentbuttonstringkey",{"_index":1707,"name":{"2881":{}},"parent":{}}],["default",{"_index":379,"name":{"362":{},"365":{},"2051":{},"2135":{}},"parent":{}}],["defaultdisabled",{"_index":1023,"name":{"1387":{}},"parent":{}}],["defaultdomtomodeloptions",{"_index":2214,"name":{"3609":{},"3740":{}},"parent":{}}],["defaultelementprocessors",{"_index":2077,"name":{"3362":{},"3382":{}},"parent":{}}],["defaultformat",{"_index":59,"name":{"52":{},"851":{},"1521":{},"2746":{},"3368":{},"3394":{},"3414":{},"3608":{},"3743":{}},"parent":{}}],["defaultformatappliers",{"_index":2066,"name":{"3350":{},"3429":{}},"parent":{}}],["defaultformatinspan",{"_index":272,"name":{"261":{},"1960":{}},"parent":{}}],["defaultformatoncontainer",{"_index":273,"name":{"262":{},"1961":{}},"parent":{}}],["defaultformatparsers",{"_index":2078,"name":{"3363":{},"3383":{}},"parent":{}}],["defaultimplicitformatmap",{"_index":2057,"name":{"3340":{},"3348":{},"3427":{},"3526":{}},"parent":{}}],["defaultimplicitformatoverride",{"_index":2141,"name":{"3472":{}},"parent":{}}],["defaultmodelhandlers",{"_index":2065,"name":{"3349":{},"3428":{}},"parent":{}}],["defaultmodeltodomoptions",{"_index":2215,"name":{"3610":{},"3741":{}},"parent":{}}],["defaultparagraphseparator",{"_index":95,"name":{"86":{},"1877":{}},"parent":{}}],["defaultshortcut",{"_index":1117,"name":{"1566":{},"1620":{}},"parent":{}}],["defaultstylemap",{"_index":2069,"name":{"3354":{}},"parent":{}}],["defaultstyleoverride",{"_index":2133,"name":{"3465":{}},"parent":{}}],["defaultstyles",{"_index":2076,"name":{"3360":{},"3380":{}},"parent":{}}],["definition",{"_index":1275,"name":{"1791":{}},"parent":{}}],["definitionbase",{"_index":1251,"name":{"1751":{}},"parent":{}}],["definitiontype",{"_index":453,"name":{"438":{}},"parent":{}}],["delete",{"_index":96,"name":{"87":{},"149":{},"1878":{},"2010":{}},"parent":{}}],["deletebeforeentity",{"_index":1127,"name":{"1576":{},"1594":{}},"parent":{}}],["deletecolumn",{"_index":325,"name":{"310":{},"2150":{}},"parent":{}}],["deletedentities",{"_index":2245,"name":{"3780":{}},"parent":{}}],["deletedentity",{"_index":2240,"name":{"3775":{}},"parent":{}}],["deletenode",{"_index":952,"name":{"1307":{},"2438":{},"2504":{},"3679":{},"3856":{}},"parent":{}}],["deleterow",{"_index":326,"name":{"311":{},"2151":{}},"parent":{}}],["deleteselectedcontent",{"_index":960,"name":{"1317":{},"2418":{},"2448":{},"2514":{},"3689":{},"3866":{}},"parent":{}}],["deletetable",{"_index":324,"name":{"309":{},"2149":{}},"parent":{}}],["deletetablewithbackspace",{"_index":279,"name":{"268":{},"1562":{},"1627":{},"1967":{}},"parent":{}}],["delimiter_after",{"_index":229,"name":{"219":{},"1863":{}},"parent":{}}],["delimiter_before",{"_index":227,"name":{"218":{},"1862":{}},"parent":{}}],["delimiterclasses",{"_index":226,"name":{"217":{}},"parent":{}}],["deprecatedcolors",{"_index":2194,"name":{"3525":{}},"parent":{}}],["dialogitem",{"_index":1763,"name":{"2945":{}},"parent":{}}],["direction",{"_index":230,"name":{"220":{},"899":{},"935":{},"2997":{},"3077":{},"3563":{}},"parent":{}}],["directionformat",{"_index":1881,"name":{"3075":{}},"parent":{}}],["disablecrop",{"_index":1207,"name":{"1694":{}},"parent":{}}],["disablelistchain",{"_index":282,"name":{"271":{},"1970":{}},"parent":{}}],["disablerotate",{"_index":1206,"name":{"1693":{}},"parent":{}}],["disablesideresize",{"_index":1205,"name":{"1692":{}},"parent":{}}],["disc",{"_index":444,"name":{"428":{},"1800":{}},"parent":{}}],["disconnected",{"_index":136,"name":{"126":{},"1917":{}},"parent":{}}],["dismiss",{"_index":1586,"name":{"2624":{}},"parent":{}}],["display",{"_index":1810,"name":{"2998":{},"3101":{}},"parent":{}}],["displayfordummyitem",{"_index":1940,"name":{"3134":{}},"parent":{}}],["displayformat",{"_index":1905,"name":{"3099":{}},"parent":{}}],["dispose",{"_index":661,"name":{"837":{},"1304":{},"1399":{},"1411":{},"2435":{},"2501":{},"2613":{},"2619":{},"2632":{},"2638":{},"2646":{},"2654":{},"2675":{},"2685":{},"2692":{},"2699":{},"2705":{},"2711":{},"2717":{},"2733":{},"2782":{},"2804":{},"3676":{},"3853":{},"3922":{},"3928":{},"3934":{},"3940":{},"3945":{}},"parent":{}}],["disposer",{"_index":666,"name":{"845":{}},"parent":{}}],["divider",{"_index":1802,"name":{"2987":{},"3330":{}},"parent":{}}],["dnddirectionx",{"_index":1609,"name":{"2665":{}},"parent":{}}],["dnddirectiony",{"_index":1610,"name":{"2666":{}},"parent":{}}],["document",{"_index":185,"name":{"175":{},"1199":{},"1293":{},"2063":{}},"parent":{}}],["documentcommand",{"_index":84,"name":{"76":{}},"parent":{}}],["documentfragment",{"_index":187,"name":{"177":{},"1197":{},"1291":{},"2065":{}},"parent":{}}],["documentposition",{"_index":133,"name":{"124":{}},"parent":{}}],["documenttype",{"_index":186,"name":{"176":{},"1196":{},"1290":{},"2064":{}},"parent":{}}],["dom",{"_index":4,"name":{"2":{},"10":{}},"parent":{"2168":{},"2169":{},"2170":{},"2180":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2205":{},"2216":{},"2227":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2309":{},"2310":{},"2326":{},"2345":{},"2346":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{}}}],["dom.contenttraverser",{"_index":1353,"name":{},"parent":{"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{}}}],["dom.htmlsanitizer",{"_index":1499,"name":{},"parent":{"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{}}}],["dom.imageinlineelement",{"_index":1365,"name":{},"parent":{"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{}}}],["dom.linkinlineelement",{"_index":1367,"name":{},"parent":{"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{}}}],["dom.nodeinlineelement",{"_index":1369,"name":{},"parent":{"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{}}}],["dom.nodetypemap",{"_index":2158,"name":{},"parent":{"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{}}}],["dom.partialinlineelement",{"_index":1371,"name":{},"parent":{"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{}}}],["dom.position",{"_index":1480,"name":{},"parent":{"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{}}}],["dom.positioncontentsearcher",{"_index":1358,"name":{},"parent":{"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{}}}],["dom.vlist",{"_index":1437,"name":{},"parent":{"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{}}}],["dom.vlistchain",{"_index":1466,"name":{},"parent":{"2347":{},"2348":{},"2349":{},"2350":{}}}],["dom.vlistitem",{"_index":1450,"name":{},"parent":{"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{}}}],["dom.vtable",{"_index":1421,"name":{},"parent":{"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{}}}],["domain",{"_index":28,"name":{"27":{}},"parent":{}}],["domend",{"_index":217,"name":{"208":{},"1839":{}},"parent":{}}],["domevent",{"_index":1034,"name":{"1421":{},"1450":{},"3623":{}},"parent":{}}],["domeventhandler",{"_index":1247,"name":{"1745":{}},"parent":{}}],["domeventhandlerfunction",{"_index":1242,"name":{"1740":{}},"parent":{}}],["domeventhandlerobject",{"_index":1244,"name":{"1742":{}},"parent":{}}],["domeventpluginstate",{"_index":34,"name":{"32":{}},"parent":{}}],["domtocontentmodel",{"_index":2142,"name":{"3474":{}},"parent":{}}],["domtomodelcontext",{"_index":2081,"name":{"3366":{}},"parent":{}}],["domtomodeldecoratorcontext",{"_index":2098,"name":{"3404":{}},"parent":{}}],["domtomodelformatcontext",{"_index":2096,"name":{"3400":{}},"parent":{}}],["domtomodellistformat",{"_index":2100,"name":{"3408":{}},"parent":{}}],["domtomodeloption",{"_index":2130,"name":{"3463":{},"3633":{},"3647":{},"3658":{}},"parent":{}}],["domtomodelselectioncontext",{"_index":2092,"name":{"3389":{}},"parent":{}}],["domtomodelsettings",{"_index":2073,"name":{"3358":{}},"parent":{}}],["donotadjusteditorcolor",{"_index":1093,"name":{"1532":{},"2757":{},"3754":{}},"parent":{}}],["doublelongarrow",{"_index":451,"name":{"435":{},"1807":{}},"parent":{}}],["down",{"_index":158,"name":{"147":{},"2008":{}},"parent":{}}],["drop",{"_index":204,"name":{"196":{},"1823":{}},"parent":{}}],["dropdownmenu",{"_index":1668,"name":{"2821":{}},"parent":{}}],["edgelinkpreview",{"_index":27,"name":{"26":{}},"parent":{}}],["edit",{"_index":1031,"name":{"1418":{},"1448":{},"2300":{},"3621":{}},"parent":{}}],["editimage",{"_index":409,"name":{"394":{},"2114":{}},"parent":{}}],["editimageevent",{"_index":511,"name":{"543":{}},"parent":{}}],["editimageeventdata",{"_index":516,"name":{"551":{}},"parent":{}}],["editor",{"_index":1,"name":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"11":{},"2433":{},"2650":{},"2671":{}},"parent":{"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":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"626":{},"627":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"757":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{},"939":{},"940":{},"941":{},"942":{},"943":{},"944":{},"945":{},"946":{},"947":{},"948":{},"949":{},"950":{},"951":{},"952":{},"953":{},"954":{},"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{},"971":{},"972":{},"973":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{},"1083":{},"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{},"1091":{},"1092":{},"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{},"1104":{},"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{},"1303":{},"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{},"1374":{},"1375":{},"1376":{},"1377":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{},"1584":{},"1585":{},"1586":{},"1587":{},"1588":{},"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{},"1597":{},"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{},"1616":{},"1617":{},"1618":{},"1619":{},"1620":{},"1621":{},"1622":{},"1623":{},"1624":{},"1625":{},"1626":{},"1627":{},"1628":{},"1629":{},"1630":{},"1631":{},"1632":{},"1633":{},"1634":{},"1635":{},"1636":{},"1637":{},"1638":{},"1639":{},"1640":{},"1641":{},"1642":{},"1643":{},"1644":{},"1645":{},"1646":{},"1647":{},"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{},"1670":{},"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{},"1681":{},"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{},"1747":{},"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{},"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2168":{},"2169":{},"2170":{},"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{},"2616":{},"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{},"2623":{},"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{},"2687":{},"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"3528":{},"3566":{},"3572":{},"3576":{},"3578":{},"3603":{},"3628":{},"3630":{},"3632":{},"3646":{},"3657":{},"3671":{},"3739":{},"3765":{},"3770":{},"3775":{},"3778":{},"3783":{},"3791":{},"3793":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3917":{},"3918":{},"3924":{},"3930":{},"3936":{},"3941":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{}}}],["editor.border",{"_index":2203,"name":{},"parent":{"3573":{},"3574":{},"3575":{}}}],["editor.compatiblecontentmodelbeforepasteevent",{"_index":2224,"name":{},"parent":{"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{}}}],["editor.contentmodelbeforepasteevent",{"_index":2219,"name":{},"parent":{"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{}}}],["editor.contentmodelbeforepasteeventdata",{"_index":2222,"name":{},"parent":{"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{}}}],["editor.contentmodelcopypasteplugin",{"_index":2290,"name":{},"parent":{"3942":{},"3943":{},"3944":{},"3945":{},"3946":{}}}],["editor.contentmodelcoreapimap",{"_index":2207,"name":{},"parent":{"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{}}}],["editor.contentmodeleditor",{"_index":2279,"name":{},"parent":{"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{}}}],["editor.contentmodeleditorcore",{"_index":2211,"name":{},"parent":{"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{}}}],["editor.contentmodeleditoroptions",{"_index":2230,"name":{},"parent":{"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{}}}],["editor.contentmodeleditplugin",{"_index":2284,"name":{},"parent":{"3925":{},"3926":{},"3927":{},"3928":{},"3929":{}}}],["editor.contentmodelformatplugin",{"_index":2282,"name":{},"parent":{"3919":{},"3920":{},"3921":{},"3922":{},"3923":{}}}],["editor.contentmodelformatstate",{"_index":2198,"name":{},"parent":{"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{}}}],["editor.contentmodelformatter",{"_index":2253,"name":{},"parent":{"3792":{}}}],["editor.contentmodelpasteplugin",{"_index":2286,"name":{},"parent":{"3931":{},"3932":{},"3933":{},"3934":{},"3935":{}}}],["editor.contentmodeltypeincontainerplugin",{"_index":2288,"name":{},"parent":{"3937":{},"3938":{},"3939":{},"3940":{}}}],["editor.createcontentmodel",{"_index":2216,"name":{},"parent":{"3629":{}}}],["editor.createeditorcontext",{"_index":2205,"name":{},"parent":{"3577":{}}}],["editor.deletedentity",{"_index":2241,"name":{},"parent":{"3776":{},"3777":{}}}],["editor.formatwithcontentmodelcontext",{"_index":2244,"name":{},"parent":{"3779":{},"3780":{},"3781":{},"3782":{}}}],["editor.formatwithcontentmodeloptions",{"_index":2249,"name":{},"parent":{"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{}}}],["editor.icontentmodeleditor",{"_index":2226,"name":{},"parent":{"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{}}}],["editor.imageformatstate",{"_index":2200,"name":{},"parent":{"3567":{},"3568":{},"3569":{},"3570":{},"3571":{}}}],["editor.insertentityoptions",{"_index":2256,"name":{},"parent":{"3794":{},"3795":{},"3796":{},"3797":{}}}],["editor.insertpoint",{"_index":2233,"name":{},"parent":{"3766":{},"3767":{},"3768":{},"3769":{}}}],["editor.setcontentmodel",{"_index":2217,"name":{},"parent":{"3631":{}}}],["editor.tableselectioncontext",{"_index":2237,"name":{},"parent":{"3771":{},"3772":{},"3773":{},"3774":{}}}],["editorbase",{"_index":1539,"name":{"2499":{}},"parent":{}}],["editorcontext",{"_index":2094,"name":{"3392":{}},"parent":{}}],["editorcore",{"_index":1046,"name":{"1436":{}},"parent":{}}],["editorcreator",{"_index":1640,"name":{"2742":{}},"parent":{}}],["editoroptions",{"_index":1085,"name":{"1519":{}},"parent":{}}],["editorplugin",{"_index":1025,"name":{"1394":{}},"parent":{}}],["editorready",{"_index":403,"name":{"386":{},"2106":{}},"parent":{}}],["editorreadyevent",{"_index":520,"name":{"564":{}},"parent":{}}],["editorundostate",{"_index":714,"name":{"936":{}},"parent":{}}],["editpluginstate",{"_index":43,"name":{"40":{}},"parent":{}}],["edittable",{"_index":1549,"name":{"2577":{},"3802":{}},"parent":{}}],["editwithcontentmodel",{"_index":275,"name":{"264":{},"1963":{}},"parent":{}}],["eight_asterisk",{"_index":161,"name":{"151":{},"2012":{}},"parent":{}}],["eight_astirisk",{"_index":160,"name":{"150":{},"2011":{}},"parent":{}}],["element",{"_index":179,"name":{"170":{},"1007":{},"1122":{},"1216":{},"1726":{},"2058":{},"2366":{},"3237":{},"3268":{}},"parent":{}}],["elementbasedformatstate",{"_index":710,"name":{"909":{}},"parent":{}}],["elementbasedsegment",{"_index":1789,"name":{"2970":{}},"parent":{}}],["elementcallback",{"_index":1237,"name":{"1735":{}},"parent":{}}],["elementcallbackmap",{"_index":1240,"name":{"1738":{}},"parent":{}}],["elementcallbacks",{"_index":844,"name":{"1093":{},"1107":{}},"parent":{}}],["elementidprefix",{"_index":1182,"name":{"1671":{}},"parent":{}}],["elementprocessor",{"_index":2090,"name":{"3387":{}},"parent":{}}],["elementprocessormap",{"_index":2070,"name":{"3355":{}},"parent":{}}],["elementprocessors",{"_index":2074,"name":{"3359":{},"3379":{}},"parent":{}}],["emojistringkeys",{"_index":1761,"name":{"2943":{}},"parent":{}}],["emptyline",{"_index":359,"name":{"343":{},"2032":{}},"parent":{}}],["emptylineformatinspan",{"_index":370,"name":{"354":{},"2043":{}},"parent":{}}],["enableinlinetableediting",{"_index":97,"name":{"88":{},"1879":{}},"parent":{}}],["enableobjectresizing",{"_index":98,"name":{"89":{},"1880":{}},"parent":{}}],["end",{"_index":153,"name":{"142":{},"207":{},"295":{},"1033":{},"1045":{},"1838":{},"2003":{},"2121":{},"3436":{}},"parent":{}}],["ensuretypeincontainer",{"_index":992,"name":{"1353":{},"1463":{},"1483":{},"2484":{},"2550":{},"3585":{},"3725":{},"3902":{}},"parent":{}}],["enter",{"_index":146,"name":{"135":{},"1996":{}},"parent":{}}],["enterbeforereadonlyentity",{"_index":1125,"name":{"1574":{},"1592":{}},"parent":{}}],["enteredshadowedit",{"_index":407,"name":{"392":{},"2112":{}},"parent":{}}],["entershadoweditevent",{"_index":607,"name":{"747":{}},"parent":{}}],["entershadowediteventdata",{"_index":612,"name":{"757":{}},"parent":{}}],["entity",{"_index":527,"name":{"574":{},"584":{},"591":{},"861":{},"1426":{},"1453":{},"3328":{},"3626":{},"3776":{}},"parent":{}}],["entity_id_prefix",{"_index":238,"name":{"226":{},"1925":{}},"parent":{}}],["entity_info_name",{"_index":235,"name":{"224":{},"1923":{}},"parent":{}}],["entity_readonly_prefix",{"_index":239,"name":{"227":{},"1926":{}},"parent":{}}],["entity_type_prefix",{"_index":237,"name":{"225":{},"1924":{}},"parent":{}}],["entityclasses",{"_index":234,"name":{"223":{}},"parent":{}}],["entityfeaturesettings",{"_index":1138,"name":{"1589":{}},"parent":{}}],["entitymap",{"_index":55,"name":{"49":{}},"parent":{}}],["entityoperation",{"_index":240,"name":{"228":{},"390":{},"2110":{}},"parent":{}}],["entityoperationevent",{"_index":524,"name":{"572":{}},"parent":{}}],["entityoperationeventdata",{"_index":531,"name":{"582":{}},"parent":{}}],["entitypluginstate",{"_index":46,"name":{"42":{}},"parent":{}}],["entityprocessor",{"_index":2147,"name":{"3479":{}},"parent":{}}],["entitystate",{"_index":819,"name":{"1064":{}},"parent":{}}],["entitystates",{"_index":818,"name":{"1063":{}},"parent":{}}],["equals",{"_index":644,"name":{"813":{}},"parent":{}}],["equalto",{"_index":777,"name":{"1011":{},"2370":{}},"parent":{}}],["escape",{"_index":150,"name":{"139":{},"232":{},"1931":{},"2000":{}},"parent":{}}],["escapefromentity",{"_index":1124,"name":{"1573":{},"1591":{}},"parent":{}}],["especial_type_1",{"_index":387,"name":{"370":{},"2140":{}},"parent":{}}],["especial_type_2",{"_index":388,"name":{"371":{},"2141":{}},"parent":{}}],["especial_type_3",{"_index":389,"name":{"372":{},"2142":{}},"parent":{}}],["eventdatacache",{"_index":472,"name":{"456":{},"469":{},"473":{},"477":{},"481":{},"492":{},"511":{},"516":{},"523":{},"530":{},"541":{},"549":{},"562":{},"566":{},"570":{},"580":{},"597":{},"602":{},"609":{},"616":{},"623":{},"629":{},"634":{},"640":{},"647":{},"652":{},"657":{},"663":{},"669":{},"674":{},"680":{},"686":{},"692":{},"699":{},"704":{},"709":{},"715":{},"721":{},"726":{},"732":{},"751":{},"755":{},"764":{},"768":{},"774":{},"783":{},"788":{},"795":{},"800":{},"807":{},"3644":{},"3669":{}},"parent":{}}],["eventtype",{"_index":471,"name":{"455":{},"468":{},"472":{},"476":{},"480":{},"491":{},"510":{},"515":{},"522":{},"529":{},"540":{},"548":{},"561":{},"565":{},"569":{},"579":{},"596":{},"601":{},"608":{},"615":{},"622":{},"628":{},"633":{},"639":{},"646":{},"651":{},"656":{},"662":{},"668":{},"673":{},"679":{},"685":{},"691":{},"698":{},"703":{},"708":{},"714":{},"720":{},"725":{},"731":{},"750":{},"754":{},"763":{},"767":{},"773":{},"782":{},"787":{},"794":{},"799":{},"806":{},"3643":{},"3668":{}},"parent":{}}],["exceldesktop",{"_index":374,"name":{"357":{},"2046":{}},"parent":{}}],["excelonline",{"_index":375,"name":{"358":{},"2047":{}},"parent":{}}],["exec",{"_index":1501,"name":{"2395":{}},"parent":{}}],["experimentalfeatures",{"_index":63,"name":{"58":{},"241":{},"1534":{},"2759":{},"3756":{}},"parent":{}}],["experimentcommitlistchains",{"_index":1578,"name":{"2608":{}},"parent":{}}],["extractbordervalues",{"_index":2294,"name":{"3950":{}},"parent":{}}],["extractclipboardevent",{"_index":1376,"name":{"2242":{}},"parent":{}}],["extractclipboardeventoption",{"_index":716,"name":{"939":{}},"parent":{}}],["extractclipboarditems",{"_index":1377,"name":{"2243":{}},"parent":{}}],["extractclipboarditemsforie",{"_index":1378,"name":{"2244":{}},"parent":{}}],["extractclipboarditemsforieoptions",{"_index":723,"name":{"949":{}},"parent":{}}],["extractclipboarditemsoption",{"_index":721,"name":{"946":{}},"parent":{}}],["extractcontentmetadata",{"_index":1488,"name":{"2380":{}},"parent":{}}],["extractcontentwithdom",{"_index":400,"name":{"383":{},"2103":{}},"parent":{}}],["extractcontentwithdomevent",{"_index":535,"name":{"599":{}},"parent":{}}],["extractcontentwithdomeventdata",{"_index":537,"name":{"604":{}},"parent":{}}],["features",{"_index":44,"name":{"41":{}},"parent":{}}],["files",{"_index":650,"name":{"823":{}},"parent":{}}],["findclosestelementancestor",{"_index":1388,"name":{"2256":{}},"parent":{}}],["findlightcolorfromdarkcolor",{"_index":1011,"name":{"1372":{}},"parent":{}}],["first_column_header_external",{"_index":386,"name":{"369":{},"2139":{}},"parent":{}}],["firstcell",{"_index":808,"name":{"1050":{},"1087":{},"3440":{}},"parent":{}}],["flipimage",{"_index":1602,"name":{"2658":{},"2679":{}},"parent":{}}],["flipwhenrtl",{"_index":1663,"name":{"2813":{}},"parent":{}}],["float",{"_index":1811,"name":{"2999":{},"3140":{}},"parent":{}}],["floatformat",{"_index":1944,"name":{"3138":{}},"parent":{}}],["focus",{"_index":965,"name":{"1323":{},"1464":{},"1485":{},"2454":{},"2520":{},"3586":{},"3695":{},"3872":{}},"parent":{}}],["focusafterentity",{"_index":2257,"name":{"3795":{}},"parent":{}}],["focusoninit",{"_index":1642,"name":{"2744":{}},"parent":{}}],["following",{"_index":138,"name":{"128":{},"1919":{}},"parent":{}}],["font",{"_index":1684,"name":{"2840":{}},"parent":{}}],["font_sizes",{"_index":1543,"name":{"2568":{}},"parent":{}}],["fontbuttonstringkey",{"_index":1698,"name":{"2872":{}},"parent":{}}],["fontfamily",{"_index":671,"name":{"852":{},"3000":{},"3034":{}},"parent":{}}],["fontfamilyformat",{"_index":1835,"name":{"3032":{}},"parent":{}}],["fontname",{"_index":99,"name":{"90":{},"889":{},"925":{},"1881":{},"3553":{}},"parent":{}}],["fontsize",{"_index":100,"name":{"91":{},"853":{},"890":{},"926":{},"1882":{},"2841":{},"3001":{},"3037":{},"3554":{}},"parent":{}}],["fontsizebuttonstringkey",{"_index":1699,"name":{"2873":{}},"parent":{}}],["fontsizechange",{"_index":283,"name":{"272":{}},"parent":{}}],["fontsizeformat",{"_index":1838,"name":{"3035":{}},"parent":{}}],["fontweight",{"_index":1833,"name":{"3031":{}},"parent":{}}],["force",{"_index":1644,"name":{"2769":{}},"parent":{}}],["forceupdate",{"_index":1650,"name":{"2776":{}},"parent":{}}],["foreachcellofcurrentcolumn",{"_index":1429,"name":{"2302":{}},"parent":{}}],["foreachcellofcurrentrow",{"_index":1431,"name":{"2304":{}},"parent":{}}],["foreachtextinlineelement",{"_index":760,"name":{"996":{},"2187":{}},"parent":{}}],["forecolor",{"_index":101,"name":{"92":{},"1883":{}},"parent":{}}],["format",{"_index":201,"name":{"191":{},"1818":{},"2953":{},"3185":{},"3190":{},"3199":{},"3202":{},"3209":{},"3216":{},"3224":{},"3235":{},"3242":{},"3249":{},"3257":{},"3266":{},"3273":{},"3286":{},"3294":{},"3300":{},"3306":{},"3309":{},"3311":{},"3315":{},"3319":{},"3451":{}},"parent":{}}],["formatapiname",{"_index":668,"name":{"848":{}},"parent":{}}],["formatapplier",{"_index":2067,"name":{"3352":{}},"parent":{}}],["formatapplieroverride",{"_index":2137,"name":{"3469":{}},"parent":{}}],["formatappliers",{"_index":2058,"name":{"3341":{},"3347":{},"3426":{}},"parent":{}}],["formatapplierspercategory",{"_index":2059,"name":{"3342":{}},"parent":{}}],["formatblock",{"_index":102,"name":{"93":{},"1884":{}},"parent":{}}],["formatcallback",{"_index":544,"name":{"613":{},"620":{}},"parent":{}}],["formatcontainer",{"_index":2055,"name":{"3335":{}},"parent":{}}],["formathandlertypemap",{"_index":1805,"name":{"2990":{}},"parent":{}}],["formatholder",{"_index":2016,"name":{"3245":{}},"parent":{}}],["formatinfo",{"_index":1425,"name":{"2296":{}},"parent":{}}],["formatkey",{"_index":1827,"name":{"3025":{}},"parent":{}}],["formatparser",{"_index":2079,"name":{"3364":{}},"parent":{}}],["formatparseroverride",{"_index":2134,"name":{"3466":{}},"parent":{}}],["formatparsers",{"_index":2071,"name":{"3356":{},"3361":{},"3381":{}},"parent":{}}],["formatparserspercategory",{"_index":2072,"name":{"3357":{}},"parent":{}}],["formatstate",{"_index":542,"name":{"612":{},"619":{},"866":{}},"parent":{}}],["formattable",{"_index":1550,"name":{"2578":{},"3800":{}},"parent":{}}],["formatwithcontentmodel",{"_index":2277,"name":{"3846":{}},"parent":{}}],["formatwithcontentmodelcontext",{"_index":2242,"name":{"3778":{}},"parent":{}}],["formatwithcontentmodeloptions",{"_index":2247,"name":{"3783":{}},"parent":{}}],["forward_slash",{"_index":172,"name":{"162":{},"2023":{}},"parent":{}}],["forwarddelete",{"_index":103,"name":{"94":{},"1885":{}},"parent":{}}],["forwardslash",{"_index":171,"name":{"161":{},"2022":{}},"parent":{}}],["fragment",{"_index":486,"name":{"485":{},"496":{},"504":{},"748":{},"758":{},"761":{},"3637":{},"3651":{},"3662":{}},"parent":{}}],["fromhtml",{"_index":1389,"name":{"2257":{}},"parent":{}}],["fullselectionend",{"_index":786,"name":{"1021":{}},"parent":{}}],["fullselectionstart",{"_index":784,"name":{"1020":{}},"parent":{}}],["general",{"_index":2052,"name":{"3329":{}},"parent":{}}],["genericcontenteditfeature",{"_index":1017,"name":{"1379":{}},"parent":{}}],["genericpluginstate",{"_index":1042,"name":{"1432":{}},"parent":{}}],["getallfeatures",{"_index":1581,"name":{"2614":{}},"parent":{}}],["getbackgroundcolorvalue",{"_index":1758,"name":{"2940":{}},"parent":{}}],["getblockelementatnode",{"_index":954,"name":{"1309":{},"2168":{},"2440":{},"2506":{},"3681":{},"3858":{}},"parent":{}}],["getblocktraverser",{"_index":982,"name":{"1343":{},"2474":{},"2540":{},"3715":{},"3892":{}},"parent":{}}],["getbodytraverser",{"_index":980,"name":{"1341":{},"2472":{},"2538":{},"3713":{},"3890":{}},"parent":{}}],["getbrowserinfo",{"_index":1385,"name":{"2251":{}},"parent":{}}],["getbuttons",{"_index":1731,"name":{"2905":{}},"parent":{}}],["getcell",{"_index":1432,"name":{"2305":{}},"parent":{}}],["getcellswithborder",{"_index":1430,"name":{"2303":{}},"parent":{}}],["getchangedata",{"_index":2250,"name":{"3788":{}},"parent":{}}],["getcomputedstyle",{"_index":1391,"name":{"2259":{}},"parent":{}}],["getcomputedstyles",{"_index":1390,"name":{"2258":{}},"parent":{}}],["getcontainernode",{"_index":735,"name":{"963":{},"2197":{},"2208":{},"2219":{},"2230":{}},"parent":{}}],["getcontent",{"_index":958,"name":{"1314":{},"1465":{},"1487":{},"2445":{},"2511":{},"3587":{},"3686":{},"3863":{}},"parent":{}}],["getcontentmode",{"_index":287,"name":{"275":{}},"parent":{}}],["getcontentmodeldefaultformat",{"_index":2228,"name":{"3675":{},"3852":{}},"parent":{}}],["getcontentsearcherofcursor",{"_index":983,"name":{"1344":{},"2475":{},"2541":{},"3716":{},"3893":{}},"parent":{}}],["getcontextmenuitems",{"_index":657,"name":{"831":{}},"parent":{}}],["getcore",{"_index":1538,"name":{"2498":{},"2564":{},"3916":{}},"parent":{}}],["getcurrenttd",{"_index":1433,"name":{"2306":{}},"parent":{}}],["getcustomdata",{"_index":978,"name":{"1338":{},"2469":{},"2535":{},"3710":{},"3887":{}},"parent":{}}],["getdarkcolor",{"_index":61,"name":{"54":{},"1530":{},"2719":{},"2755":{},"3752":{}},"parent":{}}],["getdarkcolorhandler",{"_index":995,"name":{"1357":{},"2488":{},"2554":{},"3729":{},"3906":{}},"parent":{}}],["getdecoratedinline",{"_index":1372,"name":{"2229":{}},"parent":{}}],["getdefaultformat",{"_index":979,"name":{"1340":{},"2471":{},"2537":{},"3712":{},"3889":{}},"parent":{}}],["getdelimiterfromelement",{"_index":1362,"name":{"2192":{}},"parent":{}}],["getdocument",{"_index":976,"name":{"1336":{},"2467":{},"2533":{},"3708":{},"3885":{}},"parent":{}}],["geteditordomattribute",{"_index":986,"name":{"1347":{},"2478":{},"2544":{},"3719":{},"3896":{}},"parent":{}}],["getelementatcursor",{"_index":968,"name":{"1326":{},"2457":{},"2523":{},"3698":{},"3875":{}},"parent":{}}],["getelementbasedformatstate",{"_index":1547,"name":{"2573":{}},"parent":{}}],["getend",{"_index":1481,"name":{"2363":{}},"parent":{}}],["getendnode",{"_index":643,"name":{"812":{}},"parent":{}}],["getendposition",{"_index":738,"name":{"966":{},"2200":{},"2211":{},"2222":{},"2234":{}},"parent":{}}],["getentityfromelement",{"_index":1508,"name":{"2402":{}},"parent":{}}],["getentityselector",{"_index":1509,"name":{"2403":{}},"parent":{}}],["getentitystate",{"_index":670,"name":{"849":{}},"parent":{}}],["getfirstlastblockelement",{"_index":1350,"name":{"2169":{}},"parent":{}}],["getfirstleafnode",{"_index":1405,"name":{"2275":{}},"parent":{}}],["getfocusedposition",{"_index":967,"name":{"1325":{},"2456":{},"2522":{},"3697":{},"3874":{}},"parent":{}}],["getformatstate",{"_index":1546,"name":{"2572":{},"3834":{}},"parent":{}}],["gethtmlwithselectionpath",{"_index":1485,"name":{"2377":{}},"parent":{}}],["getinheritablestyles",{"_index":1504,"name":{"2398":{}},"parent":{}}],["getinlineelementafter",{"_index":757,"name":{"993":{},"2184":{}},"parent":{}}],["getinlineelementatnode",{"_index":1363,"name":{"2193":{}},"parent":{}}],["getinlineelementbefore",{"_index":756,"name":{"992":{},"2183":{}},"parent":{}}],["getinnerhtml",{"_index":1411,"name":{"2281":{}},"parent":{}}],["getintersectedrect",{"_index":1417,"name":{"2287":{}},"parent":{}}],["getknowncolorscopy",{"_index":1010,"name":{"1371":{}},"parent":{}}],["getlastitemnumber",{"_index":1439,"name":{"2315":{}},"parent":{}}],["getlastleafnode",{"_index":1406,"name":{"2276":{}},"parent":{}}],["getlevel",{"_index":1452,"name":{"2329":{}},"parent":{}}],["getlistitemindex",{"_index":1447,"name":{"2324":{}},"parent":{}}],["getlisttype",{"_index":1451,"name":{"2328":{}},"parent":{}}],["getlocalizedstring",{"_index":1638,"name":{"2740":{}},"parent":{}}],["getmetadata",{"_index":1530,"name":{"2426":{}},"parent":{}}],["getname",{"_index":659,"name":{"833":{},"1395":{},"1407":{},"2611":{},"2617":{},"2630":{},"2636":{},"2642":{},"2652":{},"2673":{},"2683":{},"2690":{},"2697":{},"2703":{},"2709":{},"2715":{},"2729":{},"2778":{},"2800":{},"3920":{},"3926":{},"3932":{},"3938":{},"3943":{}},"parent":{}}],["getnearestnontextinlineelement",{"_index":761,"name":{"997":{},"2188":{}},"parent":{}}],["getnewliststart",{"_index":1454,"name":{"2331":{}},"parent":{}}],["getnextblockelement",{"_index":728,"name":{"956":{},"2175":{}},"parent":{}}],["getnextinlineelement",{"_index":731,"name":{"959":{},"2178":{}},"parent":{}}],["getnextleafsibling",{"_index":1403,"name":{"2273":{}},"parent":{}}],["getnode",{"_index":1453,"name":{"2330":{}},"parent":{}}],["getobjectkeys",{"_index":1534,"name":{"2430":{}},"parent":{}}],["getparentblock",{"_index":736,"name":{"964":{},"2198":{},"2209":{},"2220":{},"2231":{}},"parent":{}}],["getpastesource",{"_index":1536,"name":{"2432":{}},"parent":{}}],["getpastetype",{"_index":1383,"name":{"2249":{}},"parent":{}}],["getpendableformatstate",{"_index":991,"name":{"1352":{},"1469":{},"1495":{},"2260":{},"2483":{},"2549":{},"3591":{},"3724":{},"3901":{}},"parent":{}}],["getpositionrect",{"_index":1483,"name":{"2374":{}},"parent":{}}],["getpreviousblockelement",{"_index":729,"name":{"957":{},"2176":{}},"parent":{}}],["getpreviousinlineelement",{"_index":732,"name":{"960":{},"2179":{}},"parent":{}}],["getpreviousleafsibling",{"_index":1404,"name":{"2274":{}},"parent":{}}],["getrangefromtext",{"_index":759,"name":{"995":{},"2186":{}},"parent":{}}],["getregionsfromrange",{"_index":1474,"name":{"2355":{}},"parent":{}}],["getregularselectionoffsets",{"_index":2149,"name":{"3481":{}},"parent":{}}],["getrelativedistancetoeditor",{"_index":987,"name":{"1348":{},"2479":{},"2545":{},"3720":{},"3897":{}},"parent":{}}],["getscrollcontainer",{"_index":977,"name":{"1337":{},"2468":{},"2534":{},"3709":{},"3886":{}},"parent":{}}],["getselectedblockelementsinregion",{"_index":1475,"name":{"2356":{}},"parent":{}}],["getselectedindex",{"_index":1179,"name":{"1666":{}},"parent":{}}],["getselecteditemkey",{"_index":1675,"name":{"2829":{}},"parent":{}}],["getselectedregions",{"_index":970,"name":{"1328":{},"2459":{},"2525":{},"3700":{},"3877":{}},"parent":{}}],["getselectedsegments",{"_index":2267,"name":{"3824":{}},"parent":{}}],["getselectionpath",{"_index":963,"name":{"1321":{},"2376":{},"2452":{},"2518":{},"3693":{},"3870":{}},"parent":{}}],["getselectionrange",{"_index":961,"name":{"1319":{},"1466":{},"1489":{},"2450":{},"2516":{},"3588":{},"3691":{},"3868":{}},"parent":{}}],["getselectionrangeex",{"_index":962,"name":{"1320":{},"1467":{},"1491":{},"2451":{},"2517":{},"3589":{},"3692":{},"3869":{}},"parent":{}}],["getselectionrangeinregion",{"_index":1478,"name":{"2359":{}},"parent":{}}],["getselectiontraverser",{"_index":981,"name":{"1342":{},"2473":{},"2539":{},"3714":{},"3891":{}},"parent":{}}],["getsizetransformer",{"_index":1003,"name":{"1365":{},"2494":{},"2560":{},"3737":{},"3912":{}},"parent":{}}],["getstart",{"_index":1448,"name":{"2325":{},"2362":{}},"parent":{}}],["getstartnode",{"_index":642,"name":{"811":{}},"parent":{}}],["getstartposition",{"_index":737,"name":{"965":{},"2199":{},"2210":{},"2221":{},"2233":{}},"parent":{}}],["getstate",{"_index":1028,"name":{"1406":{},"3946":{}},"parent":{}}],["getstylebasedformatstate",{"_index":990,"name":{"1351":{},"1468":{},"1493":{},"2482":{},"2548":{},"3590":{},"3723":{},"3900":{}},"parent":{}}],["getstyles",{"_index":1518,"name":{"2412":{}},"parent":{}}],["getsubstringbefore",{"_index":758,"name":{"994":{},"2185":{}},"parent":{}}],["gettablecellmetadata",{"_index":1473,"name":{"2354":{}},"parent":{}}],["gettableformatinfo",{"_index":1471,"name":{"2352":{}},"parent":{}}],["gettagofnode",{"_index":1394,"name":{"2263":{}},"parent":{}}],["gettd",{"_index":1434,"name":{"2307":{}},"parent":{}}],["gettempdiv",{"_index":719,"name":{"942":{},"950":{}},"parent":{}}],["gettextcolorvalue",{"_index":1759,"name":{"2941":{}},"parent":{}}],["gettextcontent",{"_index":646,"name":{"816":{},"962":{},"2196":{},"2207":{},"2218":{},"2232":{},"2419":{}},"parent":{}}],["gettrustedhtmlhandler",{"_index":1000,"name":{"1362":{},"2493":{},"2559":{},"3734":{},"3911":{}},"parent":{}}],["getundostate",{"_index":975,"name":{"1335":{},"2466":{},"2532":{},"3707":{},"3884":{}},"parent":{}}],["getvisibleviewport",{"_index":1004,"name":{"1366":{},"1444":{},"1540":{},"2497":{},"2563":{},"2765":{},"3617":{},"3738":{},"3762":{},"3915":{}},"parent":{}}],["getwordbefore",{"_index":754,"name":{"991":{},"2182":{}},"parent":{}}],["getzoomscale",{"_index":1001,"name":{"1363":{},"2495":{},"2561":{},"3735":{},"3913":{}},"parent":{}}],["googlesheets",{"_index":377,"name":{"360":{},"2049":{}},"parent":{}}],["grave_tilde",{"_index":173,"name":{"163":{},"2024":{}},"parent":{}}],["handleautocomplete",{"_index":1186,"name":{"1675":{}},"parent":{}}],["handledbyeditfeature",{"_index":557,"name":{"644":{},"696":{},"741":{}},"parent":{}}],["handleevent",{"_index":1020,"name":{"1383":{},"1391":{}},"parent":{}}],["handleimagepaste",{"_index":1379,"name":{"2245":{}},"parent":{}}],["handleregularselection",{"_index":2145,"name":{"3477":{}},"parent":{}}],["handletextpaste",{"_index":1380,"name":{"2246":{}},"parent":{}}],["hasbandedcolumns",{"_index":828,"name":{"1075":{},"3150":{}},"parent":{}}],["hasbandedrows",{"_index":829,"name":{"1076":{},"3151":{}},"parent":{}}],["hasfirstcolumn",{"_index":827,"name":{"1074":{},"3149":{}},"parent":{}}],["hasfocus",{"_index":964,"name":{"1322":{},"1470":{},"1497":{},"2453":{},"2519":{},"3592":{},"3694":{},"3871":{}},"parent":{}}],["hasheaderrow",{"_index":825,"name":{"1072":{},"3147":{}},"parent":{}}],["hasmetadata",{"_index":2153,"name":{"3485":{}},"parent":{}}],["hasnewcontent",{"_index":78,"name":{"71":{}},"parent":{}}],["hasselectioninblock",{"_index":2264,"name":{"3821":{}},"parent":{}}],["hasselectioninblockgroup",{"_index":2266,"name":{"3823":{}},"parent":{}}],["hasselectioninsegment",{"_index":2265,"name":{"3822":{}},"parent":{}}],["header",{"_index":1694,"name":{"2868":{}},"parent":{}}],["headerbuttonstringkey",{"_index":1721,"name":{"2895":{}},"parent":{}}],["headerlevel",{"_index":698,"name":{"884":{},"919":{},"3548":{}},"parent":{}}],["headerrowcolor",{"_index":826,"name":{"1073":{},"3148":{}},"parent":{}}],["heading",{"_index":104,"name":{"95":{},"1886":{},"2861":{}},"parent":{}}],["headingbuttonstringkey",{"_index":1720,"name":{"2894":{}},"parent":{}}],["headinglevel",{"_index":697,"name":{"883":{},"918":{},"3547":{}},"parent":{}}],["height",{"_index":1195,"name":{"1683":{},"3123":{},"3206":{}},"parent":{}}],["heightpx",{"_index":1960,"name":{"3163":{}},"parent":{}}],["hideresizehandle",{"_index":1613,"name":{"2670":{}},"parent":{}}],["hilitecolor",{"_index":105,"name":{"96":{},"1887":{}},"parent":{}}],["home",{"_index":154,"name":{"143":{},"2004":{}},"parent":{}}],["href",{"_index":1922,"name":{"3114":{}},"parent":{}}],["html",{"_index":194,"name":{"183":{},"824":{},"1060":{},"1848":{}},"parent":{}}],["htmlafter",{"_index":489,"name":{"488":{},"499":{},"507":{},"3640":{},"3654":{},"3665":{}},"parent":{}}],["htmlalign",{"_index":1812,"name":{"3002":{},"3080":{}},"parent":{}}],["htmlalignformat",{"_index":1884,"name":{"3078":{}},"parent":{}}],["htmlanchorelement",{"_index":935,"name":{"1195":{},"1289":{}},"parent":{}}],["htmlappletelement",{"_index":947,"name":{"1212":{}},"parent":{}}],["htmlareaelement",{"_index":934,"name":{"1194":{},"1288":{}},"parent":{}}],["htmlattributes",{"_index":490,"name":{"489":{},"500":{},"508":{},"3641":{},"3655":{},"3666":{}},"parent":{}}],["htmlaudioelement",{"_index":902,"name":{"1162":{},"1256":{}},"parent":{}}],["htmlbaseelement",{"_index":932,"name":{"1192":{},"1286":{}},"parent":{}}],["htmlbasefontelement",{"_index":946,"name":{"1211":{}},"parent":{}}],["htmlbefore",{"_index":488,"name":{"487":{},"498":{},"506":{},"3639":{},"3653":{},"3664":{}},"parent":{}}],["htmlbodyelement",{"_index":931,"name":{"1191":{},"1285":{}},"parent":{}}],["htmlbrelement",{"_index":933,"name":{"1193":{},"1287":{}},"parent":{}}],["htmlbuttonelement",{"_index":930,"name":{"1190":{},"1284":{}},"parent":{}}],["htmlcanvaselement",{"_index":929,"name":{"1189":{},"1283":{}},"parent":{}}],["htmldataelement",{"_index":927,"name":{"1187":{},"1281":{}},"parent":{}}],["htmldatalistelement",{"_index":926,"name":{"1186":{},"1280":{}},"parent":{}}],["htmldetailselement",{"_index":925,"name":{"1185":{},"1279":{}},"parent":{}}],["htmldialogelement",{"_index":924,"name":{"1184":{},"1278":{}},"parent":{}}],["htmldirectoryelement",{"_index":923,"name":{"1183":{},"1277":{}},"parent":{}}],["htmldivelement",{"_index":922,"name":{"1182":{},"1276":{}},"parent":{}}],["htmldlistelement",{"_index":928,"name":{"1188":{},"1282":{}},"parent":{}}],["htmldocument",{"_index":938,"name":{"1201":{},"1295":{}},"parent":{}}],["htmlelement",{"_index":863,"name":{"1123":{},"1217":{}},"parent":{}}],["htmlembedelement",{"_index":921,"name":{"1181":{},"1275":{}},"parent":{}}],["htmlfieldsetelement",{"_index":920,"name":{"1180":{},"1274":{}},"parent":{}}],["htmlfirstlevelchildtags",{"_index":653,"name":{"827":{}},"parent":{}}],["htmlfontelement",{"_index":919,"name":{"1179":{},"1273":{}},"parent":{}}],["htmlformelement",{"_index":918,"name":{"1178":{},"1272":{}},"parent":{}}],["htmlframeelement",{"_index":917,"name":{"1177":{},"1271":{}},"parent":{}}],["htmlframesetelement",{"_index":916,"name":{"1176":{},"1270":{}},"parent":{}}],["htmlheadelement",{"_index":914,"name":{"1174":{},"1268":{}},"parent":{}}],["htmlheadingelement",{"_index":913,"name":{"1173":{},"1267":{}},"parent":{}}],["htmlhrelement",{"_index":915,"name":{"1175":{},"1269":{}},"parent":{}}],["htmlhtmlelement",{"_index":912,"name":{"1172":{},"1266":{}},"parent":{}}],["htmliframeelement",{"_index":911,"name":{"1171":{},"1265":{}},"parent":{}}],["htmlimageelement",{"_index":910,"name":{"1170":{},"1264":{}},"parent":{}}],["htmlinputelement",{"_index":909,"name":{"1169":{},"1263":{}},"parent":{}}],["htmllabelelement",{"_index":907,"name":{"1167":{},"1261":{}},"parent":{}}],["htmllegendelement",{"_index":906,"name":{"1166":{},"1260":{}},"parent":{}}],["htmllielement",{"_index":908,"name":{"1168":{},"1262":{}},"parent":{}}],["htmllinkelement",{"_index":905,"name":{"1165":{},"1259":{}},"parent":{}}],["htmlmapelement",{"_index":904,"name":{"1164":{},"1258":{}},"parent":{}}],["htmlmarqueeelement",{"_index":903,"name":{"1163":{},"1257":{}},"parent":{}}],["htmlmediaelement",{"_index":900,"name":{"1160":{},"1254":{}},"parent":{}}],["htmlmenuelement",{"_index":899,"name":{"1159":{},"1253":{}},"parent":{}}],["htmlmetaelement",{"_index":898,"name":{"1158":{},"1252":{}},"parent":{}}],["htmlmeterelement",{"_index":897,"name":{"1157":{},"1251":{}},"parent":{}}],["htmlmodelement",{"_index":896,"name":{"1156":{},"1250":{}},"parent":{}}],["htmlobjectelement",{"_index":894,"name":{"1154":{},"1248":{}},"parent":{}}],["htmlolistelement",{"_index":895,"name":{"1155":{},"1249":{}},"parent":{}}],["htmloptgroupelement",{"_index":893,"name":{"1153":{},"1247":{}},"parent":{}}],["htmloptionelement",{"_index":892,"name":{"1152":{},"1246":{}},"parent":{}}],["htmloutputelement",{"_index":891,"name":{"1151":{},"1245":{}},"parent":{}}],["htmlparagraphelement",{"_index":890,"name":{"1150":{},"1244":{}},"parent":{}}],["htmlparamelement",{"_index":889,"name":{"1149":{},"1243":{}},"parent":{}}],["htmlpictureelement",{"_index":888,"name":{"1148":{},"1242":{}},"parent":{}}],["htmlpreelement",{"_index":887,"name":{"1147":{},"1241":{}},"parent":{}}],["htmlprogresselement",{"_index":886,"name":{"1146":{},"1240":{}},"parent":{}}],["htmlquoteelement",{"_index":885,"name":{"1145":{},"1239":{}},"parent":{}}],["htmlsanitizer",{"_index":1497,"name":{"2391":{}},"parent":{}}],["htmlsanitizeroptions",{"_index":843,"name":{"1092":{}},"parent":{}}],["htmlscriptelement",{"_index":884,"name":{"1144":{},"1238":{}},"parent":{}}],["htmlselectelement",{"_index":883,"name":{"1143":{},"1237":{}},"parent":{}}],["htmlslotelement",{"_index":882,"name":{"1142":{},"1236":{}},"parent":{}}],["htmlsourceelement",{"_index":881,"name":{"1141":{},"1235":{}},"parent":{}}],["htmlspanelement",{"_index":880,"name":{"1140":{},"1234":{}},"parent":{}}],["htmlstyleelement",{"_index":879,"name":{"1139":{},"1233":{}},"parent":{}}],["htmltablecaptionelement",{"_index":878,"name":{"1138":{},"1232":{}},"parent":{}}],["htmltablecellelement",{"_index":875,"name":{"1135":{},"1229":{}},"parent":{}}],["htmltablecolelement",{"_index":874,"name":{"1134":{},"1228":{}},"parent":{}}],["htmltabledatacellelement",{"_index":877,"name":{"1137":{},"1231":{}},"parent":{}}],["htmltableelement",{"_index":873,"name":{"1133":{},"1227":{}},"parent":{}}],["htmltableheadercellelement",{"_index":876,"name":{"1136":{},"1230":{}},"parent":{}}],["htmltablerowelement",{"_index":872,"name":{"1132":{},"1226":{}},"parent":{}}],["htmltablesectionelement",{"_index":871,"name":{"1131":{},"1225":{}},"parent":{}}],["htmltemplateelement",{"_index":870,"name":{"1130":{},"1224":{}},"parent":{}}],["htmltextareaelement",{"_index":869,"name":{"1129":{},"1223":{}},"parent":{}}],["htmltimeelement",{"_index":868,"name":{"1128":{},"1222":{}},"parent":{}}],["htmltitleelement",{"_index":867,"name":{"1127":{},"1221":{}},"parent":{}}],["htmltrackelement",{"_index":866,"name":{"1126":{},"1220":{}},"parent":{}}],["htmlulistelement",{"_index":865,"name":{"1125":{},"1219":{}},"parent":{}}],["htmlunknownelement",{"_index":864,"name":{"1124":{},"1218":{}},"parent":{}}],["htmlvideoelement",{"_index":901,"name":{"1161":{},"1255":{}},"parent":{}}],["hyperlink",{"_index":1593,"name":{"2640":{}},"parent":{}}],["hyphen",{"_index":450,"name":{"434":{},"1806":{}},"parent":{}}],["i",{"_index":163,"name":{"153":{},"2014":{}},"parent":{}}],["iconname",{"_index":1662,"name":{"2812":{}},"parent":{}}],["icontentmodeleditor",{"_index":2225,"name":{"3671":{}},"parent":{}}],["icontenttraverser",{"_index":725,"name":{"954":{}},"parent":{}}],["id",{"_index":678,"name":{"863":{},"1066":{},"3003":{},"3104":{},"3214":{}},"parent":{}}],["idformat",{"_index":1908,"name":{"3102":{}},"parent":{}}],["ieditor",{"_index":948,"name":{"1303":{}},"parent":{}}],["image",{"_index":190,"name":{"180":{},"544":{},"552":{},"557":{},"822":{},"1720":{},"1845":{},"2982":{},"3331":{},"3443":{}},"parent":{}}],["imagecontentmetadata",{"_index":810,"name":{"1054":{}},"parent":{}}],["imagecrop",{"_index":261,"name":{"250":{},"1949":{}},"parent":{}}],["imagecropmetadataformat",{"_index":1961,"name":{"3164":{}},"parent":{}}],["imagedatauri",{"_index":652,"name":{"826":{}},"parent":{}}],["imageedit",{"_index":1597,"name":{"2648":{}},"parent":{}}],["imageeditmenuitemstringkey",{"_index":1744,"name":{"2926":{}},"parent":{}}],["imageeditoperation",{"_index":343,"name":{"328":{}},"parent":{}}],["imageeditoptions",{"_index":1196,"name":{"1684":{}},"parent":{}}],["imageeditwrapper",{"_index":364,"name":{"348":{},"2037":{}},"parent":{}}],["imageformat",{"_index":2197,"name":{"3529":{}},"parent":{}}],["imageformatstate",{"_index":2199,"name":{"3566":{}},"parent":{}}],["imageid",{"_index":811,"name":{"1055":{}},"parent":{}}],["imageinlineelement",{"_index":1364,"name":{"2194":{}},"parent":{}}],["imagemetadataformat",{"_index":1968,"name":{"3170":{}},"parent":{}}],["imageresize",{"_index":202,"name":{"192":{},"1819":{},"2667":{}},"parent":{}}],["imageresizemetadataformat",{"_index":1956,"name":{"3160":{}},"parent":{}}],["imagerotate",{"_index":260,"name":{"249":{},"1948":{}},"parent":{}}],["imagerotatemetadataformat",{"_index":1969,"name":{"3171":{}},"parent":{}}],["imageselection",{"_index":269,"name":{"258":{},"402":{},"1427":{},"1957":{},"2133":{},"3422":{},"3447":{}},"parent":{}}],["imageselectionbordercolor",{"_index":1052,"name":{"1446":{},"1542":{},"2767":{},"3619":{},"3764":{}},"parent":{}}],["imageselectionrange",{"_index":42,"name":{"39":{},"1719":{}},"parent":{}}],["imageselector",{"_index":1203,"name":{"1690":{}},"parent":{}}],["implicitformat",{"_index":2107,"name":{"3424":{},"3458":{}},"parent":{}}],["increase",{"_index":284,"name":{"273":{},"282":{},"1972":{},"1990":{}},"parent":{}}],["increasefontsize",{"_index":106,"name":{"97":{},"1888":{},"2842":{}},"parent":{}}],["increasefontsizebuttonstringkey",{"_index":1700,"name":{"2874":{}},"parent":{}}],["increaseindent",{"_index":1688,"name":{"2849":{}},"parent":{}}],["increaseindentbuttonstringkey",{"_index":1708,"name":{"2882":{}},"parent":{}}],["indarkmode",{"_index":1092,"name":{"1527":{},"2752":{},"3749":{}},"parent":{}}],["indent",{"_index":107,"name":{"98":{},"1889":{},"2337":{}},"parent":{}}],["indentation",{"_index":293,"name":{"281":{}},"parent":{}}],["indenttableontab",{"_index":1114,"name":{"1561":{},"1626":{}},"parent":{}}],["indentwhenaltshiftright",{"_index":1108,"name":{"1555":{},"1609":{}},"parent":{}}],["indentwhentab",{"_index":1098,"name":{"1545":{},"1599":{}},"parent":{}}],["indentwhentabtext",{"_index":1130,"name":{"1579":{},"1629":{}},"parent":{}}],["initialcontent",{"_index":1089,"name":{"1524":{},"2749":{},"3746":{}},"parent":{}}],["initialize",{"_index":660,"name":{"835":{},"1397":{},"1409":{},"2612":{},"2618":{},"2631":{},"2637":{},"2643":{},"2653":{},"2674":{},"2684":{},"2691":{},"2698":{},"2704":{},"2710":{},"2716":{},"2731":{},"2780":{},"2802":{},"3921":{},"3927":{},"3933":{},"3939":{},"3944":{}},"parent":{}}],["initvalue",{"_index":1767,"name":{"2948":{}},"parent":{}}],["inline",{"_index":353,"name":{"338":{},"1830":{}},"parent":{}}],["inlineelement",{"_index":733,"name":{"961":{}},"parent":{}}],["inlineentityreadonlydelimiters",{"_index":280,"name":{"269":{},"1968":{}},"parent":{}}],["input",{"_index":396,"name":{"378":{},"2098":{}},"parent":{}}],["inselection",{"_index":314,"name":{"301":{},"2127":{}},"parent":{}}],["insertabove",{"_index":319,"name":{"305":{},"2145":{}},"parent":{}}],["insertbelow",{"_index":321,"name":{"306":{},"2146":{}},"parent":{}}],["insertbronreturn",{"_index":108,"name":{"99":{},"1890":{}},"parent":{}}],["insertcontent",{"_index":959,"name":{"1316":{},"2447":{},"2513":{},"3688":{},"3865":{}},"parent":{}}],["insertentity",{"_index":205,"name":{"197":{},"1824":{},"2574":{},"3845":{}},"parent":{}}],["insertentityoptions",{"_index":2254,"name":{"3793":{}},"parent":{}}],["insertentityposition",{"_index":2259,"name":{"3798":{}},"parent":{}}],["inserthorizontalrule",{"_index":109,"name":{"100":{},"1891":{}},"parent":{}}],["inserthtml",{"_index":110,"name":{"101":{},"1892":{}},"parent":{}}],["insertimage",{"_index":111,"name":{"102":{},"1893":{},"2575":{},"2857":{},"3818":{}},"parent":{}}],["insertimagebuttonstringkey",{"_index":1716,"name":{"2890":{}},"parent":{}}],["insertleft",{"_index":322,"name":{"307":{},"2147":{}},"parent":{}}],["insertlinebeforestructurednodefeature",{"_index":1115,"name":{"1563":{},"1622":{}},"parent":{}}],["insertlink",{"_index":1690,"name":{"2854":{},"3837":{}},"parent":{}}],["insertlinkbuttonstringkey",{"_index":1713,"name":{"2887":{}},"parent":{}}],["insertnode",{"_index":951,"name":{"1306":{},"1471":{},"1499":{},"2437":{},"2503":{},"3593":{},"3678":{},"3855":{}},"parent":{}}],["insertonnewline",{"_index":745,"name":{"974":{},"980":{},"987":{}},"parent":{}}],["insertoption",{"_index":741,"name":{"971":{}},"parent":{}}],["insertoptionbase",{"_index":742,"name":{"972":{}},"parent":{}}],["insertoptionbasic",{"_index":748,"name":{"977":{}},"parent":{}}],["insertoptionrange",{"_index":751,"name":{"983":{}},"parent":{}}],["insertorderedlist",{"_index":112,"name":{"103":{},"1894":{}},"parent":{}}],["insertparagraph",{"_index":114,"name":{"105":{},"1896":{}},"parent":{}}],["insertpoint",{"_index":2231,"name":{"3765":{}},"parent":{}}],["insertright",{"_index":323,"name":{"308":{},"2148":{}},"parent":{}}],["inserttable",{"_index":1548,"name":{"2576":{},"2856":{},"3799":{}},"parent":{}}],["inserttablebuttonstringkey",{"_index":1715,"name":{"2889":{}},"parent":{}}],["inserttext",{"_index":115,"name":{"106":{},"1897":{}},"parent":{}}],["inserttoregionroot",{"_index":747,"name":{"976":{},"982":{},"989":{}},"parent":{}}],["insertunorderedlist",{"_index":113,"name":{"104":{},"1895":{}},"parent":{}}],["ipositioncontentsearcher",{"_index":753,"name":{"990":{}},"parent":{}}],["isafter",{"_index":645,"name":{"814":{},"967":{},"1012":{},"2202":{},"2213":{},"2224":{},"2239":{},"2371":{}},"parent":{}}],["isandroid",{"_index":25,"name":{"24":{}},"parent":{}}],["isatend",{"_index":775,"name":{"1009":{},"2368":{}},"parent":{}}],["isblockelement",{"_index":1395,"name":{"2264":{}},"parent":{}}],["isblockquote",{"_index":691,"name":{"877":{},"912":{},"3541":{}},"parent":{}}],["isbold",{"_index":683,"name":{"869":{},"903":{},"3533":{}},"parent":{}}],["isbullet",{"_index":689,"name":{"875":{},"910":{},"3539":{}},"parent":{}}],["ischaractervalue",{"_index":1516,"name":{"2410":{}},"parent":{}}],["ischecked",{"_index":1666,"name":{"2817":{}},"parent":{}}],["ischrome",{"_index":21,"name":{"20":{}},"parent":{}}],["isclicking",{"_index":567,"name":{"666":{},"718":{},"737":{}},"parent":{}}],["iscodeblock",{"_index":693,"name":{"879":{},"914":{},"3543":{}},"parent":{}}],["iscodeinline",{"_index":692,"name":{"878":{},"913":{},"3542":{}},"parent":{}}],["iscontentmodeleditor",{"_index":2280,"name":{"3917":{}},"parent":{}}],["isctrlormetapressed",{"_index":1517,"name":{"2411":{}},"parent":{}}],["iscut",{"_index":470,"name":{"454":{},"462":{},"467":{}},"parent":{}}],["isdarkmode",{"_index":60,"name":{"53":{},"867":{},"1041":{},"1046":{},"1052":{},"1056":{},"1355":{},"2486":{},"2552":{},"3367":{},"3393":{},"3413":{},"3531":{},"3727":{},"3904":{}},"parent":{}}],["isdeleted",{"_index":1229,"name":{"1727":{}},"parent":{}}],["isdisabled",{"_index":1667,"name":{"2819":{}},"parent":{}}],["isdisposed",{"_index":950,"name":{"1305":{},"2436":{},"2502":{},"3677":{},"3854":{}},"parent":{}}],["isdummy",{"_index":1455,"name":{"2333":{}},"parent":{}}],["isedge",{"_index":23,"name":{"22":{}},"parent":{}}],["isempty",{"_index":957,"name":{"1313":{},"2444":{},"2510":{},"3685":{},"3862":{}},"parent":{}}],["isfeatureenabled",{"_index":999,"name":{"1361":{},"2492":{},"2558":{},"2565":{},"3733":{},"3910":{}},"parent":{}}],["isfirefox",{"_index":22,"name":{"21":{}},"parent":{}}],["isgeneralsegment",{"_index":2186,"name":{"3517":{}},"parent":{}}],["isheader",{"_index":2019,"name":{"3253":{}},"parent":{}}],["ishorizontal",{"_index":1185,"name":{"1674":{}},"parent":{}}],["isie",{"_index":18,"name":{"17":{}},"parent":{}}],["isie11orgreater",{"_index":19,"name":{"18":{}},"parent":{}}],["isieoredge",{"_index":24,"name":{"23":{}},"parent":{}}],["isimplicit",{"_index":1982,"name":{"3182":{}},"parent":{}}],["isinime",{"_index":35,"name":{"33":{},"1339":{},"2470":{},"2536":{},"3711":{},"3888":{}},"parent":{}}],["isinselection",{"_index":2086,"name":{"3374":{},"3390":{}},"parent":{}}],["isinshadowedit",{"_index":998,"name":{"1360":{},"2491":{},"2557":{},"3732":{},"3909":{}},"parent":{}}],["isintable",{"_index":699,"name":{"885":{},"920":{},"3549":{}},"parent":{}}],["isitalic",{"_index":684,"name":{"870":{},"904":{},"3534":{}},"parent":{}}],["ismac",{"_index":14,"name":{"14":{}},"parent":{}}],["ismobileortablet",{"_index":26,"name":{"25":{}},"parent":{}}],["ismodifierkey",{"_index":1515,"name":{"2409":{}},"parent":{}}],["ismultilineselection",{"_index":695,"name":{"881":{},"916":{},"3545":{}},"parent":{}}],["isnested",{"_index":79,"name":{"72":{}},"parent":{}}],["isnodeafter",{"_index":1418,"name":{"2288":{}},"parent":{}}],["isnodeempty",{"_index":1396,"name":{"2265":{}},"parent":{}}],["isnodeinregion",{"_index":1477,"name":{"2358":{}},"parent":{}}],["isnodeoftype",{"_index":2155,"name":{"3487":{}},"parent":{}}],["isnumbering",{"_index":690,"name":{"876":{},"911":{},"3540":{}},"parent":{}}],["isoperationallowed",{"_index":1600,"name":{"2656":{},"2677":{}},"parent":{}}],["isoptional",{"_index":1253,"name":{"1753":{},"1758":{},"1765":{},"1770":{},"1777":{},"1782":{},"1789":{}},"parent":{}}],["isorphanitem",{"_index":1456,"name":{"2334":{}},"parent":{}}],["ispositionatbeginning",{"_index":969,"name":{"1327":{},"2458":{},"2524":{},"3699":{},"3876":{}},"parent":{}}],["ispositionatbeginningof",{"_index":1484,"name":{"2375":{}},"parent":{}}],["isreadonly",{"_index":680,"name":{"865":{},"3212":{}},"parent":{}}],["isresizedto",{"_index":1606,"name":{"2662":{}},"parent":{}}],["isrestoring",{"_index":77,"name":{"70":{}},"parent":{}}],["isrighttoleft",{"_index":1633,"name":{"2726":{}},"parent":{}}],["isrootrtl",{"_index":2084,"name":{"3372":{},"3398":{},"3418":{}},"parent":{}}],["issafari",{"_index":20,"name":{"19":{}},"parent":{}}],["isselected",{"_index":1992,"name":{"3196":{},"3220":{},"3238":{},"3254":{},"3265":{},"3269":{},"3285":{},"3293":{},"3296":{},"3305":{},"3322":{}},"parent":{}}],["isselectedasimageselection",{"_index":2028,"name":{"3281":{}},"parent":{}}],["isstrikethrough",{"_index":686,"name":{"872":{},"906":{},"3536":{}},"parent":{}}],["issubscript",{"_index":687,"name":{"873":{},"907":{},"3537":{}},"parent":{}}],["issuperscript",{"_index":688,"name":{"874":{},"908":{},"3538":{}},"parent":{}}],["istextualinlineelement",{"_index":739,"name":{"968":{},"2201":{},"2212":{},"2223":{},"2238":{}},"parent":{}}],["isunderline",{"_index":685,"name":{"871":{},"905":{},"3535":{}},"parent":{}}],["isvoidhtmlelement",{"_index":1397,"name":{"2266":{}},"parent":{}}],["iswebkit",{"_index":17,"name":{"16":{}},"parent":{}}],["iswhitespacepreserved",{"_index":2189,"name":{"3520":{}},"parent":{}}],["iswholetableselected",{"_index":1225,"name":{"1715":{},"2309":{},"3774":{}},"parent":{}}],["iswin",{"_index":16,"name":{"15":{}},"parent":{}}],["italic",{"_index":116,"name":{"107":{},"859":{},"1898":{},"2838":{},"3004":{},"3040":{}},"parent":{}}],["italicbuttonstringkey",{"_index":1696,"name":{"2870":{}},"parent":{}}],["italicformat",{"_index":1841,"name":{"3038":{}},"parent":{}}],["itemclassname",{"_index":1672,"name":{"2825":{},"2923":{}},"parent":{}}],["itemdef",{"_index":1264,"name":{"1773":{}},"parent":{}}],["itemrender",{"_index":1674,"name":{"2827":{},"2921":{}},"parent":{}}],["items",{"_index":553,"name":{"637":{},"689":{},"739":{},"2312":{},"2824":{}},"parent":{}}],["justifycenter",{"_index":117,"name":{"108":{},"1899":{}},"parent":{}}],["justifyfull",{"_index":118,"name":{"109":{},"1900":{}},"parent":{}}],["justifyleft",{"_index":119,"name":{"110":{},"1901":{}},"parent":{}}],["justifyright",{"_index":120,"name":{"111":{},"1902":{}},"parent":{}}],["keepcellshade",{"_index":832,"name":{"1080":{}},"parent":{}}],["key",{"_index":1014,"name":{"1375":{},"2811":{},"2914":{}},"parent":{}}],["keyboard",{"_index":209,"name":{"201":{},"1828":{}},"parent":{}}],["keydown",{"_index":392,"name":{"375":{},"2095":{}},"parent":{}}],["keyofstateplugin",{"_index":1041,"name":{"1431":{}},"parent":{}}],["keypress",{"_index":394,"name":{"376":{},"2096":{}},"parent":{}}],["keys",{"_index":141,"name":{"131":{},"1380":{},"1388":{}},"parent":{}}],["keyup",{"_index":395,"name":{"377":{},"2097":{}},"parent":{}}],["knowncolors",{"_index":817,"name":{"1062":{}},"parent":{}}],["knowncreateelementdata",{"_index":1415,"name":{"2285":{}},"parent":{}}],["knowncreateelementdataindex",{"_index":357,"name":{"341":{}},"parent":{}}],["knownentityelements",{"_index":53,"name":{"47":{}},"parent":{}}],["knownentityitem",{"_index":1227,"name":{"1725":{}},"parent":{}}],["knownpastesourcetype",{"_index":371,"name":{"355":{}},"parent":{}}],["knownribbonbuttonkey",{"_index":1682,"name":{"2836":{}},"parent":{}}],["labelkey",{"_index":1764,"name":{"2946":{}},"parent":{}}],["lastcell",{"_index":809,"name":{"1051":{},"1088":{},"3441":{}},"parent":{}}],["leaveshadoweditevent",{"_index":610,"name":{"753":{}},"parent":{}}],["leavingshadowedit",{"_index":408,"name":{"393":{},"2113":{}},"parent":{}}],["left",{"_index":155,"name":{"144":{},"185":{},"1017":{},"1795":{},"2005":{}},"parent":{}}],["leftpercent",{"_index":1963,"name":{"3166":{}},"parent":{}}],["lefttoright",{"_index":231,"name":{"221":{},"1865":{}},"parent":{}}],["letterspacing",{"_index":1813,"name":{"3005":{},"3043":{},"3530":{}},"parent":{}}],["letterspacingformat",{"_index":1844,"name":{"3041":{}},"parent":{}}],["levels",{"_index":2014,"name":{"3244":{},"3411":{}},"parent":{}}],["lifecycle",{"_index":1039,"name":{"1429":{},"1454":{},"3627":{}},"parent":{}}],["lifecyclepluginstate",{"_index":56,"name":{"50":{}},"parent":{}}],["lightmodecolor",{"_index":770,"name":{"1004":{},"1376":{}},"parent":{}}],["lighttodark",{"_index":211,"name":{"203":{},"1834":{}},"parent":{}}],["lineheight",{"_index":703,"name":{"895":{},"931":{},"3006":{},"3046":{},"3559":{}},"parent":{}}],["lineheightformat",{"_index":1847,"name":{"3044":{}},"parent":{}}],["link",{"_index":1800,"name":{"2983":{},"3007":{},"3218":{},"3263":{},"3275":{},"3283":{},"3291":{},"3298":{},"3303":{},"3384":{},"3405":{}},"parent":{}}],["linkdata",{"_index":762,"name":{"998":{}},"parent":{}}],["linkformat",{"_index":1918,"name":{"3111":{}},"parent":{}}],["linkinlineelement",{"_index":1366,"name":{"2205":{}},"parent":{}}],["linkpreview",{"_index":649,"name":{"821":{}},"parent":{}}],["list",{"_index":2053,"name":{"3332":{}},"parent":{}}],["list_with_side_borders",{"_index":383,"name":{"366":{},"2136":{}},"parent":{}}],["listchain",{"_index":208,"name":{"200":{},"245":{},"1827":{},"1944":{}},"parent":{}}],["listfeaturesettings",{"_index":1140,"name":{"1597":{}},"parent":{}}],["listformat",{"_index":2088,"name":{"3378":{},"3403":{},"3423":{},"3457":{}},"parent":{}}],["listitem",{"_index":1798,"name":{"2980":{},"3333":{}},"parent":{}}],["listitemalignment",{"_index":271,"name":{"260":{},"1959":{}},"parent":{}}],["listitemelement",{"_index":1797,"name":{"2979":{}},"parent":{}}],["listitemthread",{"_index":1814,"name":{"3008":{}},"parent":{}}],["listlevel",{"_index":1799,"name":{"2981":{}},"parent":{}}],["listlevelthread",{"_index":1815,"name":{"3009":{}},"parent":{}}],["listmetadataformat",{"_index":1951,"name":{"3156":{}},"parent":{}}],["listnumbermenuitemstringkey",{"_index":1743,"name":{"2925":{}},"parent":{}}],["listparent",{"_index":2103,"name":{"3410":{}},"parent":{}}],["liststyleposition",{"_index":1816,"name":{"3010":{},"3137":{}},"parent":{}}],["liststylepositionformat",{"_index":1941,"name":{"3135":{}},"parent":{}}],["listthreadformat",{"_index":1936,"name":{"3131":{}},"parent":{}}],["listtype",{"_index":301,"name":{"289":{},"3318":{},"3450":{}},"parent":{}}],["localizedstrings",{"_index":1626,"name":{"2720":{}},"parent":{}}],["longarrow",{"_index":448,"name":{"432":{},"1804":{}},"parent":{}}],["loweralpha",{"_index":425,"name":{"409":{},"2072":{}},"parent":{}}],["loweralphadash",{"_index":428,"name":{"412":{},"2075":{}},"parent":{}}],["loweralphadoubleparenthesis",{"_index":427,"name":{"411":{},"2074":{}},"parent":{}}],["loweralphaparenthesis",{"_index":426,"name":{"410":{},"2073":{}},"parent":{}}],["lowercase",{"_index":298,"name":{"286":{},"1812":{}},"parent":{}}],["lowerroman",{"_index":433,"name":{"417":{},"2080":{}},"parent":{}}],["lowerromandash",{"_index":436,"name":{"420":{},"2083":{}},"parent":{}}],["lowerromandoubleparenthesis",{"_index":435,"name":{"419":{},"2082":{}},"parent":{}}],["lowerromanparenthesis",{"_index":434,"name":{"418":{},"2081":{}},"parent":{}}],["ltr",{"_index":1692,"name":{"2863":{}},"parent":{}}],["ltrbuttonstringkey",{"_index":1723,"name":{"2897":{}},"parent":{}}],["maintainlistchain",{"_index":1103,"name":{"1550":{},"1604":{}},"parent":{}}],["maintainlistchainwhendelete",{"_index":1104,"name":{"1551":{},"1605":{}},"parent":{}}],["margin",{"_index":1817,"name":{"3011":{}},"parent":{}}],["marginbottom",{"_index":705,"name":{"897":{},"933":{},"3085":{},"3561":{}},"parent":{}}],["marginformat",{"_index":1887,"name":{"3081":{}},"parent":{}}],["marginleft",{"_index":1891,"name":{"3086":{}},"parent":{}}],["marginright",{"_index":1890,"name":{"3084":{}},"parent":{}}],["margintop",{"_index":704,"name":{"896":{},"932":{},"3083":{},"3560":{}},"parent":{}}],["markdownbold",{"_index":1119,"name":{"1568":{},"1612":{}},"parent":{}}],["markdownfeaturesettings",{"_index":1142,"name":{"1611":{}},"parent":{}}],["markdowninlinecode",{"_index":1122,"name":{"1571":{},"1615":{}},"parent":{}}],["markdownitalic",{"_index":1120,"name":{"1569":{},"1613":{}},"parent":{}}],["markdownstrikethru",{"_index":1121,"name":{"1570":{},"1614":{}},"parent":{}}],["marker",{"_index":2232,"name":{"3766":{}},"parent":{}}],["matchesselector",{"_index":1413,"name":{"2283":{}},"parent":{}}],["matchlink",{"_index":1398,"name":{"2267":{}},"parent":{}}],["matchsourcecasesensitive",{"_index":1160,"name":{"1638":{}},"parent":{}}],["max",{"_index":441,"name":{"425":{},"437":{},"1809":{},"2088":{}},"parent":{}}],["maxheight",{"_index":1932,"name":{"3125":{}},"parent":{}}],["maxlength",{"_index":1267,"name":{"1775":{}},"parent":{}}],["maxsize",{"_index":800,"name":{"1039":{}},"parent":{}}],["maxvalue",{"_index":1260,"name":{"1763":{}},"parent":{}}],["maxwidth",{"_index":1931,"name":{"3124":{}},"parent":{}}],["menuitemsplitterkey0",{"_index":1629,"name":{"2723":{}},"parent":{}}],["mergeabove",{"_index":327,"name":{"312":{},"2152":{}},"parent":{}}],["mergebelow",{"_index":328,"name":{"313":{},"2153":{}},"parent":{}}],["mergeblocksinregion",{"_index":1479,"name":{"2360":{}},"parent":{}}],["mergecells",{"_index":331,"name":{"316":{},"2156":{}},"parent":{}}],["mergeformat",{"_index":464,"name":{"448":{},"2092":{}},"parent":{}}],["mergeinnewlinewhenbackspaceonfirstchar",{"_index":1102,"name":{"1549":{},"1603":{}},"parent":{}}],["mergeitems",{"_index":1458,"name":{"2336":{}},"parent":{}}],["mergeleft",{"_index":329,"name":{"314":{},"2154":{}},"parent":{}}],["mergelistonbackspaceafterlist",{"_index":1107,"name":{"1554":{},"1608":{}},"parent":{}}],["mergepastedline",{"_index":257,"name":{"246":{},"1945":{}},"parent":{}}],["mergeright",{"_index":330,"name":{"315":{},"2155":{}},"parent":{}}],["mergevlist",{"_index":1446,"name":{"2323":{}},"parent":{}}],["meta",{"_index":177,"name":{"167":{},"2028":{}},"parent":{}}],["meta_left",{"_index":167,"name":{"157":{},"2018":{}},"parent":{}}],["metadata",{"_index":816,"name":{"1061":{}},"parent":{}}],["min",{"_index":419,"name":{"404":{},"427":{},"1799":{},"2067":{}},"parent":{}}],["minheight",{"_index":1200,"name":{"1687":{},"3127":{}},"parent":{}}],["minlength",{"_index":1266,"name":{"1774":{}},"parent":{}}],["minrotatedeg",{"_index":1202,"name":{"1689":{}},"parent":{}}],["minvalue",{"_index":1259,"name":{"1762":{}},"parent":{}}],["minwidth",{"_index":1199,"name":{"1686":{},"3126":{}},"parent":{}}],["modeindependentcolor",{"_index":767,"name":{"1002":{}},"parent":{}}],["model",{"_index":12,"name":{"9":{},"10":{},"11":{},"12":{}},"parent":{"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{},"3954":{}}}],["modelhandleroverride",{"_index":2140,"name":{"3471":{}},"parent":{}}],["modelhandlers",{"_index":2063,"name":{"3346":{},"3425":{}},"parent":{}}],["modeltodomblockandsegmentnode",{"_index":2108,"name":{"3431":{}},"parent":{}}],["modeltodomcontext",{"_index":2104,"name":{"3412":{}},"parent":{}}],["modeltodomformatcontext",{"_index":2124,"name":{"3456":{}},"parent":{}}],["modeltodomimageselection",{"_index":2115,"name":{"3442":{}},"parent":{}}],["modeltodomlistcontext",{"_index":2121,"name":{"3453":{}},"parent":{}}],["modeltodomliststackitem",{"_index":2119,"name":{"3448":{}},"parent":{}}],["modeltodomoption",{"_index":2136,"name":{"3468":{}},"parent":{}}],["modeltodomregularselection",{"_index":2110,"name":{"3434":{}},"parent":{}}],["modeltodomselectioncontext",{"_index":2117,"name":{"3444":{}},"parent":{}}],["modeltodomsettings",{"_index":2062,"name":{"3345":{}},"parent":{}}],["modeltodomtableselection",{"_index":2113,"name":{"3438":{}},"parent":{}}],["morecommandsbuttonstringkey",{"_index":1706,"name":{"2880":{}},"parent":{}}],["mousedown",{"_index":398,"name":{"380":{},"2100":{}},"parent":{}}],["mouseup",{"_index":399,"name":{"381":{},"1423":{},"2101":{}},"parent":{}}],["move",{"_index":778,"name":{"1013":{},"1643":{},"2372":{}},"parent":{}}],["movebetweendelimitersfeature",{"_index":1128,"name":{"1577":{},"1595":{}},"parent":{}}],["movechildnodes",{"_index":1416,"name":{"2286":{}},"parent":{}}],["movecontentwithentityplaceholders",{"_index":1511,"name":{"2405":{}},"parent":{}}],["movecurrentsnapshot",{"_index":1494,"name":{"2387":{}},"parent":{}}],["movecurrentsnapsnot",{"_index":1495,"name":{"2388":{}},"parent":{}}],["name",{"_index":1920,"name":{"3113":{}},"parent":{}}],["namespace",{"_index":1212,"name":{"1698":{}},"parent":{}}],["newbullet",{"_index":255,"name":{"243":{},"1942":{}},"parent":{}}],["newcontent",{"_index":496,"name":{"514":{},"519":{},"521":{}},"parent":{}}],["newentities",{"_index":2243,"name":{"3779":{}},"parent":{}}],["newentity",{"_index":241,"name":{"229":{},"1928":{}},"parent":{}}],["newindentation",{"_index":253,"name":{"242":{},"1941":{}},"parent":{}}],["newnumbering",{"_index":256,"name":{"244":{},"1943":{}},"parent":{}}],["newsrc",{"_index":515,"name":{"547":{},"555":{},"560":{}},"parent":{}}],["newzoomscale",{"_index":621,"name":{"772":{},"778":{},"781":{}},"parent":{}}],["nextinlineelement",{"_index":1373,"name":{"2235":{}},"parent":{}}],["no_header_borders",{"_index":384,"name":{"367":{},"2137":{}},"parent":{}}],["no_side_borders",{"_index":385,"name":{"368":{},"2138":{}},"parent":{}}],["nocyclecursormove",{"_index":1118,"name":{"1567":{},"1588":{}},"parent":{}}],["node",{"_index":772,"name":{"1006":{},"1120":{},"1214":{},"2365":{},"3449":{}},"parent":{}}],["nodeafter",{"_index":789,"name":{"1024":{},"1029":{}},"parent":{}}],["nodebefore",{"_index":788,"name":{"1023":{},"1028":{}},"parent":{}}],["nodeinlineelement",{"_index":1368,"name":{"2216":{}},"parent":{}}],["nodeposition",{"_index":771,"name":{"1005":{}},"parent":{}}],["nodestack",{"_index":2123,"name":{"3455":{}},"parent":{}}],["nodetype",{"_index":178,"name":{"169":{}},"parent":{}}],["nodetypemap",{"_index":2156,"name":{"3488":{}},"parent":{}}],["none",{"_index":302,"name":{"290":{},"329":{},"342":{},"1981":{},"2031":{},"2054":{}},"parent":{}}],["normal",{"_index":415,"name":{"400":{},"446":{},"2090":{},"2131":{}},"parent":{}}],["normalcontentmetadata",{"_index":803,"name":{"1043":{}},"parent":{}}],["normalize",{"_index":776,"name":{"1010":{},"2369":{}},"parent":{}}],["normalizecontentmodel",{"_index":2185,"name":{"3516":{}},"parent":{}}],["normalizedurl",{"_index":766,"name":{"1001":{}},"parent":{}}],["normalizelist",{"_index":268,"name":{"257":{},"1956":{}},"parent":{}}],["normalizerect",{"_index":1408,"name":{"2278":{}},"parent":{}}],["normalizesinglesegment",{"_index":2190,"name":{"3521":{}},"parent":{}}],["normalizetable",{"_index":1038,"name":{"1428":{}},"parent":{}}],["normalizetablecellsize",{"_index":1435,"name":{"2308":{}},"parent":{}}],["normalselectionrange",{"_index":1222,"name":{"1708":{}},"parent":{}}],["null",{"_index":142,"name":{"132":{},"1993":{}},"parent":{}}],["number",{"_index":456,"name":{"440":{},"1856":{}},"parent":{}}],["numberdefinition",{"_index":1257,"name":{"1760":{}},"parent":{}}],["numberedlist",{"_index":1686,"name":{"2847":{}},"parent":{}}],["numberedlistbuttonstringkey",{"_index":1705,"name":{"2879":{}},"parent":{}}],["numberinglisttype",{"_index":418,"name":{"403":{}},"parent":{}}],["object",{"_index":459,"name":{"443":{},"1859":{}},"parent":{}}],["objectdefinition",{"_index":1268,"name":{"1779":{}},"parent":{}}],["objectpropertydefinition",{"_index":1271,"name":{"1784":{}},"parent":{}}],["offset",{"_index":774,"name":{"1008":{},"2367":{}},"parent":{}}],["okbuttonstringkey",{"_index":1627,"name":{"2721":{}},"parent":{}}],["oldzoomscale",{"_index":619,"name":{"771":{},"777":{},"780":{}},"parent":{}}],["onblur",{"_index":1596,"name":{"2645":{},"2774":{}},"parent":{}}],["onbuttonclick",{"_index":1657,"name":{"2793":{}},"parent":{}}],["onclick",{"_index":1665,"name":{"2815":{},"2916":{}},"parent":{}}],["oncontentchanged",{"_index":1178,"name":{"1664":{}},"parent":{}}],["oncontentchangedevent",{"_index":1648,"name":{"2773":{}},"parent":{}}],["ondispose",{"_index":1171,"name":{"1650":{},"2771":{}},"parent":{}}],["onexternalcontenttransform",{"_index":62,"name":{"56":{},"1528":{},"2753":{},"3750":{}},"parent":{}}],["oninitalize",{"_index":1169,"name":{"1648":{}},"parent":{}}],["oninitialize",{"_index":1646,"name":{"2770":{}},"parent":{}}],["onissuggestingchanged",{"_index":1172,"name":{"1652":{}},"parent":{}}],["onmouse",{"_index":1595,"name":{"2644":{}},"parent":{}}],["onnodecreated",{"_index":2060,"name":{"3343":{},"3351":{},"3430":{},"3473":{},"3787":{}},"parent":{}}],["onpluginevent",{"_index":663,"name":{"841":{},"1403":{},"1415":{},"2620":{},"2633":{},"2639":{},"2647":{},"2655":{},"2676":{},"2686":{},"2694":{},"2700":{},"2706":{},"2712":{},"2718":{},"2737":{},"2786":{},"2808":{},"3923":{},"3929":{},"3935":{}},"parent":{}}],["onremove",{"_index":1176,"name":{"1660":{}},"parent":{}}],["onscroll",{"_index":1180,"name":{"1668":{}},"parent":{}}],["onselection",{"_index":313,"name":{"300":{},"2126":{}},"parent":{}}],["onselectstate",{"_index":1208,"name":{"1695":{}},"parent":{}}],["onshowresizehandle",{"_index":1608,"name":{"2664":{}},"parent":{}}],["onuserinput",{"_index":1647,"name":{"2772":{}},"parent":{}}],["operation",{"_index":525,"name":{"573":{},"583":{},"590":{},"3777":{}},"parent":{}}],["options",{"_index":1599,"name":{"2651":{},"2672":{}},"parent":{}}],["ordered",{"_index":304,"name":{"291":{},"2055":{}},"parent":{}}],["orderedstyletype",{"_index":1953,"name":{"3158":{}},"parent":{}}],["originalapi",{"_index":1049,"name":{"1440":{},"3605":{}},"parent":{}}],["originalattributebackgroundcolor",{"_index":225,"name":{"216":{},"1853":{}},"parent":{}}],["originalattributecolor",{"_index":224,"name":{"215":{},"1852":{}},"parent":{}}],["originalsrc",{"_index":513,"name":{"545":{},"553":{},"558":{}},"parent":{}}],["originalstylebackgroundcolor",{"_index":223,"name":{"214":{},"1851":{}},"parent":{}}],["originalstylecolor",{"_index":221,"name":{"213":{},"1850":{}},"parent":{}}],["originalurl",{"_index":765,"name":{"1000":{}},"parent":{}}],["outdent",{"_index":121,"name":{"112":{},"1903":{},"2338":{}},"parent":{}}],["outdentwhenaltshiftleft",{"_index":1109,"name":{"1556":{},"1610":{}},"parent":{}}],["outdentwhenbackspaceonemptyfirstline",{"_index":1100,"name":{"1547":{},"1601":{}},"parent":{}}],["outdentwhenenteronemptyline",{"_index":1101,"name":{"1548":{},"1602":{}},"parent":{}}],["outdentwhenshifttab",{"_index":1099,"name":{"1546":{},"1600":{}},"parent":{}}],["outdentwhentabtext",{"_index":1131,"name":{"1580":{},"1630":{}},"parent":{}}],["outside",{"_index":219,"name":{"210":{},"1841":{}},"parent":{}}],["overwrite",{"_index":247,"name":{"235":{},"1934":{}},"parent":{}}],["padding",{"_index":1818,"name":{"3012":{}},"parent":{}}],["paddingbottom",{"_index":1897,"name":{"3091":{}},"parent":{}}],["paddingformat",{"_index":1892,"name":{"3087":{}},"parent":{}}],["paddingleft",{"_index":1898,"name":{"3092":{}},"parent":{}}],["paddingright",{"_index":1896,"name":{"3090":{}},"parent":{}}],["paddingtop",{"_index":1894,"name":{"3089":{}},"parent":{}}],["pageup",{"_index":152,"name":{"141":{},"2002":{}},"parent":{}}],["pagex",{"_index":50,"name":{"45":{}},"parent":{}}],["pagey",{"_index":52,"name":{"46":{}},"parent":{}}],["paragraph",{"_index":2054,"name":{"3334":{},"3767":{}},"parent":{}}],["parentnode",{"_index":862,"name":{"1121":{},"1215":{}},"parent":{}}],["parsecolor",{"_index":1419,"name":{"2289":{}},"parent":{}}],["parsecolorvalue",{"_index":1009,"name":{"1370":{}},"parent":{}}],["parseformat",{"_index":2150,"name":{"3482":{}},"parent":{}}],["parsevaluewithunit",{"_index":2192,"name":{"3523":{}},"parent":{}}],["partialinlineelement",{"_index":1370,"name":{"2227":{}},"parent":{}}],["partialoverwrite",{"_index":248,"name":{"236":{},"1935":{}},"parent":{}}],["paste",{"_index":122,"name":{"113":{},"193":{},"1318":{},"1820":{},"1904":{},"2449":{},"2515":{},"2681":{},"3690":{},"3844":{},"3867":{}},"parent":{}}],["pastenativeevent",{"_index":655,"name":{"829":{}},"parent":{}}],["pasteoptionbuttonkeys",{"_index":1753,"name":{"2935":{}},"parent":{}}],["pasteoptionstringkeys",{"_index":1754,"name":{"2936":{}},"parent":{}}],["pastetype",{"_index":461,"name":{"445":{},"490":{},"501":{},"509":{},"3642":{},"3656":{},"3667":{}},"parent":{}}],["pastewithlinkpreview",{"_index":259,"name":{"248":{},"1947":{}},"parent":{}}],["path",{"_index":2234,"name":{"3768":{}},"parent":{}}],["pendableformatcommandmap",{"_index":1392,"name":{"2261":{}},"parent":{}}],["pendableformatnames",{"_index":1393,"name":{"2262":{}},"parent":{}}],["pendableformatposition",{"_index":72,"name":{"66":{}},"parent":{}}],["pendableformatspan",{"_index":73,"name":{"67":{}},"parent":{}}],["pendableformatstate",{"_index":70,"name":{"65":{},"902":{}},"parent":{}}],["pendingformatstate",{"_index":1035,"name":{"1422":{},"1451":{},"3624":{}},"parent":{}}],["pendingformatstatechanged",{"_index":405,"name":{"388":{},"2108":{}},"parent":{}}],["pendingformatstatechangedevent",{"_index":541,"name":{"611":{}},"parent":{}}],["pendingformatstatepluginstate",{"_index":69,"name":{"64":{}},"parent":{}}],["pendingstylebasedformat",{"_index":267,"name":{"256":{},"1955":{}},"parent":{}}],["period",{"_index":170,"name":{"160":{},"2021":{}},"parent":{}}],["pickerdataprovider",{"_index":1168,"name":{"1647":{}},"parent":{}}],["pickerplugin",{"_index":1615,"name":{"2687":{}},"parent":{}}],["pickerpluginoptions",{"_index":1181,"name":{"1670":{}},"parent":{}}],["plaintext",{"_index":192,"name":{"182":{},"279":{},"1847":{},"1978":{}},"parent":{}}],["plaintextfast",{"_index":292,"name":{"280":{},"1979":{}},"parent":{}}],["plugin",{"_index":1678,"name":{"2833":{}},"parent":{}}],["plugincompositionevent",{"_index":550,"name":{"631":{}},"parent":{}}],["plugincontextmenuevent",{"_index":552,"name":{"636":{}},"parent":{}}],["plugincontextmenueventdata",{"_index":598,"name":{"738":{}},"parent":{}}],["plugindomevent",{"_index":547,"name":{"625":{}},"parent":{}}],["plugindomeventbase",{"_index":548,"name":{"626":{}},"parent":{}}],["pluginevent",{"_index":602,"name":{"742":{}},"parent":{}}],["plugineventdata",{"_index":603,"name":{"743":{}},"parent":{}}],["plugineventdatageneric",{"_index":604,"name":{"744":{}},"parent":{}}],["plugineventfromtype",{"_index":605,"name":{"745":{}},"parent":{}}],["plugineventfromtypegeneric",{"_index":606,"name":{"746":{}},"parent":{}}],["plugineventtype",{"_index":391,"name":{"374":{},"1743":{}},"parent":{}}],["plugininputevent",{"_index":569,"name":{"671":{}},"parent":{}}],["pluginkey",{"_index":1040,"name":{"1430":{}},"parent":{}}],["pluginkeyboardevent",{"_index":555,"name":{"642":{}},"parent":{}}],["pluginkeydownevent",{"_index":556,"name":{"643":{}},"parent":{}}],["pluginkeydowneventdata",{"_index":600,"name":{"740":{}},"parent":{}}],["pluginkeypressevent",{"_index":559,"name":{"649":{}},"parent":{}}],["pluginkeyupevent",{"_index":561,"name":{"654":{}},"parent":{}}],["pluginmousedownevent",{"_index":564,"name":{"660":{}},"parent":{}}],["pluginmouseevent",{"_index":563,"name":{"659":{}},"parent":{}}],["pluginmouseupevent",{"_index":566,"name":{"665":{}},"parent":{}}],["pluginmouseupeventdata",{"_index":596,"name":{"736":{}},"parent":{}}],["plugins",{"_index":7,"name":{"5":{},"1438":{},"1520":{},"2745":{},"3613":{},"3742":{}},"parent":{"2609":{},"2614":{},"2615":{},"2621":{},"2627":{},"2634":{},"2640":{},"2648":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2681":{},"2687":{},"2695":{},"2701":{},"2707":{},"2713":{}}}],["plugins.autoformat",{"_index":1625,"name":{},"parent":{"2714":{},"2715":{},"2716":{},"2717":{},"2718":{}}}],["plugins.contentedit",{"_index":1580,"name":{},"parent":{"2610":{},"2611":{},"2612":{},"2613":{}}}],["plugins.contextmenu",{"_index":1582,"name":{},"parent":{"2616":{},"2617":{},"2618":{},"2619":{},"2620":{}}}],["plugins.contextmenuoptions",{"_index":1585,"name":{},"parent":{"2622":{},"2623":{},"2624":{},"2625":{},"2626":{}}}],["plugins.customreplace",{"_index":1589,"name":{},"parent":{"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{}}}],["plugins.cutpastelistchain",{"_index":1592,"name":{},"parent":{"2635":{},"2636":{},"2637":{},"2638":{},"2639":{}}}],["plugins.hyperlink",{"_index":1594,"name":{},"parent":{"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{}}}],["plugins.imageedit",{"_index":1598,"name":{},"parent":{"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{}}}],["plugins.imageresize",{"_index":1611,"name":{},"parent":{"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{}}}],["plugins.paste",{"_index":1614,"name":{},"parent":{"2682":{},"2683":{},"2684":{},"2685":{},"2686":{}}}],["plugins.pickerplugin",{"_index":1616,"name":{},"parent":{"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{}}}],["plugins.tablecellselection",{"_index":1623,"name":{},"parent":{"2708":{},"2709":{},"2710":{},"2711":{},"2712":{}}}],["plugins.tableresize",{"_index":1619,"name":{},"parent":{"2696":{},"2697":{},"2698":{},"2699":{},"2700":{}}}],["plugins.watermark",{"_index":1621,"name":{},"parent":{"2702":{},"2703":{},"2704":{},"2705":{},"2706":{}}}],["pluginscrollevent",{"_index":571,"name":{"676":{}},"parent":{}}],["pluginscrolleventdata",{"_index":594,"name":{"734":{}},"parent":{}}],["pluginstate",{"_index":1043,"name":{"1433":{}},"parent":{}}],["pluginwithstate",{"_index":1027,"name":{"1405":{}},"parent":{}}],["position",{"_index":749,"name":{"978":{},"984":{},"2361":{}},"parent":{}}],["positioncontentsearcher",{"_index":1356,"name":{"2180":{}},"parent":{}}],["positiontype",{"_index":306,"name":{"293":{}},"parent":{}}],["powerpointdesktop",{"_index":376,"name":{"359":{},"2048":{}},"parent":{}}],["preceding",{"_index":137,"name":{"127":{},"1918":{}},"parent":{}}],["predefinedcssmap",{"_index":1241,"name":{"1739":{}},"parent":{}}],["preferred_format",{"_index":30,"name":{"28":{}},"parent":{}}],["preservehtmlcomments",{"_index":854,"name":{"1102":{},"1116":{}},"parent":{}}],["preservependingformat",{"_index":2248,"name":{"3784":{}},"parent":{}}],["preserveratio",{"_index":1201,"name":{"1688":{}},"parent":{}}],["previousinlineelement",{"_index":1374,"name":{"2236":{}},"parent":{}}],["previoussrc",{"_index":514,"name":{"546":{},"554":{},"559":{}},"parent":{}}],["print_screen",{"_index":159,"name":{"148":{},"2009":{}},"parent":{}}],["processchildnode",{"_index":2146,"name":{"3478":{}},"parent":{}}],["processinginstruction",{"_index":183,"name":{"173":{},"1206":{},"1300":{},"2061":{}},"parent":{}}],["processoroverride",{"_index":2131,"name":{"3464":{}},"parent":{}}],["promotetocontentmodeleditorcore",{"_index":2292,"name":{"3948":{}},"parent":{}}],["propertydef",{"_index":1269,"name":{"1780":{}},"parent":{}}],["queryelements",{"_index":955,"name":{"1311":{},"2268":{},"2442":{},"2508":{},"3683":{},"3860":{}},"parent":{}}],["queryscope",{"_index":310,"name":{"298":{}},"parent":{}}],["querystringupdated",{"_index":1173,"name":{"1654":{}},"parent":{}}],["quote",{"_index":1689,"name":{"2850":{}},"parent":{}}],["quotebuttonstringkey",{"_index":1709,"name":{"2883":{}},"parent":{}}],["quotefeaturesettings",{"_index":1144,"name":{"1616":{}},"parent":{}}],["range",{"_index":175,"name":{"165":{},"211":{},"453":{},"461":{},"466":{},"985":{},"1119":{},"1213":{},"1842":{},"2026":{}},"parent":{}}],["rangeex",{"_index":2087,"name":{"3375":{},"3391":{}},"parent":{}}],["ranges",{"_index":1220,"name":{"1706":{},"1710":{},"1717":{},"1722":{}},"parent":{}}],["rawevent",{"_index":467,"name":{"451":{},"459":{},"464":{},"575":{},"585":{},"592":{},"627":{},"632":{},"638":{},"645":{},"650":{},"655":{},"661":{},"667":{},"672":{},"678":{},"684":{},"690":{},"697":{},"702":{},"707":{},"713":{},"719":{},"724":{},"730":{},"798":{},"803":{},"805":{},"3781":{},"3785":{}},"parent":{}}],["rawhtml",{"_index":648,"name":{"820":{}},"parent":{}}],["rawhtmlonly",{"_index":290,"name":{"277":{},"1976":{}},"parent":{}}],["rawhtmlwithselection",{"_index":291,"name":{"278":{},"1977":{}},"parent":{}}],["react",{"_index":10,"name":{"7":{}},"parent":{"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2727":{},"2739":{},"2740":{},"2741":{},"2768":{},"2775":{},"2788":{},"2789":{},"2790":{},"2810":{},"2823":{},"2832":{},"2836":{},"2869":{},"2870":{},"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{},"2884":{},"2885":{},"2886":{},"2887":{},"2888":{},"2889":{},"2890":{},"2891":{},"2892":{},"2893":{},"2894":{},"2895":{},"2896":{},"2897":{},"2898":{},"2899":{},"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{},"2913":{},"2925":{},"2926":{},"2927":{},"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{},"2943":{},"2944":{},"2945":{}}}],["react.contextmenuitem",{"_index":1740,"name":{},"parent":{"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{}}}],["react.dialogitem",{"_index":1765,"name":{},"parent":{"2946":{},"2947":{},"2948":{},"2949":{}}}],["react.knownribbonbuttonkey",{"_index":1683,"name":{},"parent":{"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{},"2861":{},"2862":{},"2863":{},"2864":{},"2865":{},"2866":{},"2867":{},"2868":{}}}],["react.reacteditorplugin",{"_index":1636,"name":{},"parent":{"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{}}}],["react.ribbonbutton",{"_index":1661,"name":{},"parent":{"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{}}}],["react.ribbonbuttondropdown",{"_index":1671,"name":{},"parent":{"2824":{},"2825":{},"2826":{},"2827":{},"2828":{},"2829":{},"2830":{},"2831":{}}}],["react.ribbonplugin",{"_index":1656,"name":{},"parent":{"2791":{},"2792":{},"2793":{},"2794":{},"2795":{},"2796":{},"2797":{},"2798":{},"2799":{},"2800":{},"2801":{},"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{}}}],["react.ribbonprops",{"_index":1679,"name":{},"parent":{"2833":{},"2834":{},"2835":{}}}],["react.roosterprops",{"_index":1641,"name":{},"parent":{"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{}}}],["react.uiutilities",{"_index":1632,"name":{},"parent":{"2725":{},"2726":{}}}],["react.updatecontentplugin",{"_index":1651,"name":{},"parent":{"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{}}}],["react.updatemode",{"_index":1645,"name":{},"parent":{"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{}}}],["reacteditorplugin",{"_index":1634,"name":{"2727":{}},"parent":{}}],["readfile",{"_index":1410,"name":{"2280":{}},"parent":{}}],["rect",{"_index":779,"name":{"1014":{}},"parent":{}}],["redo",{"_index":123,"name":{"114":{},"1333":{},"1905":{},"2464":{},"2530":{},"2866":{},"3705":{},"3882":{}},"parent":{}}],["redobuttonstringkey",{"_index":1726,"name":{"2900":{}},"parent":{}}],["region",{"_index":783,"name":{"1019":{}},"parent":{}}],["regionbase",{"_index":791,"name":{"1026":{}},"parent":{}}],["regiontype",{"_index":315,"name":{"302":{}},"parent":{}}],["registercolor",{"_index":1006,"name":{"1368":{}},"parent":{}}],["registerformatchangedcallback",{"_index":1655,"name":{"2791":{}},"parent":{}}],["regularselection",{"_index":2106,"name":{"3420":{},"3445":{}},"parent":{}}],["relationship",{"_index":1927,"name":{"3119":{}},"parent":{}}],["removecodewhenbackspaceonemptyfirstline",{"_index":1133,"name":{"1583":{},"1634":{}},"parent":{}}],["removecodewhenenteronemptyline",{"_index":1132,"name":{"1582":{},"1633":{}},"parent":{}}],["removecontenteditfeature",{"_index":989,"name":{"1350":{},"2481":{},"2547":{},"3722":{},"3899":{}},"parent":{}}],["removeentitybetweendelimiters",{"_index":1129,"name":{"1578":{},"1596":{}},"parent":{}}],["removeformat",{"_index":124,"name":{"115":{},"1906":{}},"parent":{}}],["removefromend",{"_index":246,"name":{"234":{},"1933":{}},"parent":{}}],["removefromstart",{"_index":245,"name":{"233":{},"1932":{}},"parent":{}}],["removeglobalcssstyle",{"_index":1522,"name":{"2416":{}},"parent":{}}],["removeimportantstylerule",{"_index":1520,"name":{"2414":{}},"parent":{}}],["removelink",{"_index":1551,"name":{"2579":{},"2855":{},"3838":{}},"parent":{}}],["removelinkbuttonstringkey",{"_index":1714,"name":{"2888":{}},"parent":{}}],["removemetadata",{"_index":1532,"name":{"2428":{}},"parent":{}}],["removeshadowroot",{"_index":251,"name":{"239":{},"1938":{}},"parent":{}}],["removetempdiv",{"_index":720,"name":{"944":{},"952":{}},"parent":{}}],["render",{"_index":1584,"name":{"2622":{}},"parent":{}}],["rendercomponent",{"_index":1631,"name":{"2725":{}},"parent":{}}],["replacementhtml",{"_index":1159,"name":{"1637":{}},"parent":{}}],["replacenode",{"_index":953,"name":{"1308":{},"2439":{},"2505":{},"3680":{},"3857":{}},"parent":{}}],["replaceselection",{"_index":746,"name":{"975":{},"981":{},"988":{}},"parent":{}}],["replacetemporarycontent",{"_index":249,"name":{"237":{},"1936":{}},"parent":{}}],["replacewithnode",{"_index":1552,"name":{"2580":{}},"parent":{}}],["reset",{"_index":1008,"name":{"1369":{}},"parent":{}}],["resetimage",{"_index":1607,"name":{"2663":{}},"parent":{}}],["resize",{"_index":347,"name":{"332":{},"1984":{}},"parent":{}}],["resizeandrotate",{"_index":349,"name":{"334":{},"1986":{}},"parent":{}}],["resizebypercentage",{"_index":1605,"name":{"2661":{}},"parent":{}}],["restorecontentwithentityplaceholder",{"_index":1512,"name":{"2406":{}},"parent":{}}],["restoreundosnapshot",{"_index":1059,"name":{"1472":{},"1501":{},"3594":{}},"parent":{}}],["retrievemetadatafromclipboard",{"_index":1381,"name":{"2247":{}},"parent":{}}],["reusablecontentmodel",{"_index":274,"name":{"263":{},"1962":{}},"parent":{}}],["reuseallancestorlistelements",{"_index":278,"name":{"267":{},"1966":{}},"parent":{}}],["ribbon",{"_index":1730,"name":{"2904":{}},"parent":{}}],["ribbonbutton",{"_index":1660,"name":{"2810":{}},"parent":{}}],["ribbonbuttondropdown",{"_index":1670,"name":{"2823":{}},"parent":{}}],["ribbonplugin",{"_index":1654,"name":{"2790":{}},"parent":{}}],["ribbonprops",{"_index":1677,"name":{"2832":{}},"parent":{}}],["right",{"_index":157,"name":{"146":{},"187":{},"1018":{},"1797":{},"2007":{}},"parent":{}}],["rightpercent",{"_index":1965,"name":{"3167":{}},"parent":{}}],["righttoleft",{"_index":233,"name":{"222":{},"1866":{}},"parent":{}}],["rooster",{"_index":1652,"name":{"2788":{}},"parent":{}}],["roosterjs",{"_index":0,"name":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{}},"parent":{"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":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{},"450":{},"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"528":{},"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{},"618":{},"619":{},"620":{},"621":{},"622":{},"623":{},"624":{},"625":{},"626":{},"627":{},"628":{},"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"756":{},"757":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{},"939":{},"940":{},"941":{},"942":{},"943":{},"944":{},"945":{},"946":{},"947":{},"948":{},"949":{},"950":{},"951":{},"952":{},"953":{},"954":{},"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{},"971":{},"972":{},"973":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{},"1083":{},"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{},"1091":{},"1092":{},"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{},"1104":{},"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{},"1303":{},"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{},"1374":{},"1375":{},"1376":{},"1377":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{},"1584":{},"1585":{},"1586":{},"1587":{},"1588":{},"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{},"1597":{},"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{},"1616":{},"1617":{},"1618":{},"1619":{},"1620":{},"1621":{},"1622":{},"1623":{},"1624":{},"1625":{},"1626":{},"1627":{},"1628":{},"1629":{},"1630":{},"1631":{},"1632":{},"1633":{},"1634":{},"1635":{},"1636":{},"1637":{},"1638":{},"1639":{},"1640":{},"1641":{},"1642":{},"1643":{},"1644":{},"1645":{},"1646":{},"1647":{},"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{},"1670":{},"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{},"1681":{},"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{},"1747":{},"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{},"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2168":{},"2169":{},"2170":{},"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{},"2616":{},"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{},"2623":{},"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{},"2687":{},"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"2719":{},"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2725":{},"2726":{},"2727":{},"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{},"2739":{},"2740":{},"2741":{},"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{},"2768":{},"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{},"2775":{},"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{},"2788":{},"2789":{},"2790":{},"2791":{},"2792":{},"2793":{},"2794":{},"2795":{},"2796":{},"2797":{},"2798":{},"2799":{},"2800":{},"2801":{},"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{},"2810":{},"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{},"2823":{},"2824":{},"2825":{},"2826":{},"2827":{},"2828":{},"2829":{},"2830":{},"2831":{},"2832":{},"2833":{},"2834":{},"2835":{},"2836":{},"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{},"2861":{},"2862":{},"2863":{},"2864":{},"2865":{},"2866":{},"2867":{},"2868":{},"2869":{},"2870":{},"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{},"2884":{},"2885":{},"2886":{},"2887":{},"2888":{},"2889":{},"2890":{},"2891":{},"2892":{},"2893":{},"2894":{},"2895":{},"2896":{},"2897":{},"2898":{},"2899":{},"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{},"2913":{},"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{},"2925":{},"2926":{},"2927":{},"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{},"2943":{},"2944":{},"2945":{},"2946":{},"2947":{},"2948":{},"2949":{},"2950":{},"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{},"3558":{},"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{},"3954":{}}}],["roosterprops",{"_index":1639,"name":{"2741":{}},"parent":{}}],["rootlist",{"_index":1438,"name":{"2313":{}},"parent":{}}],["rootnode",{"_index":787,"name":{"1022":{},"1027":{}},"parent":{}}],["rotate",{"_index":348,"name":{"333":{},"1985":{}},"parent":{}}],["rotateelement",{"_index":1553,"name":{"2581":{}},"parent":{}}],["rotateiconhtml",{"_index":1204,"name":{"1691":{}},"parent":{}}],["rotateimage",{"_index":1603,"name":{"2659":{},"2680":{}},"parent":{}}],["row",{"_index":1423,"name":{"2294":{}},"parent":{}}],["rowindex",{"_index":2238,"name":{"3772":{}},"parent":{}}],["rows",{"_index":1988,"name":{"3188":{}},"parent":{}}],["rtl",{"_index":1693,"name":{"2864":{}},"parent":{}}],["rtlbuttonstringkey",{"_index":1724,"name":{"2898":{}},"parent":{}}],["runasync",{"_index":984,"name":{"1345":{},"2476":{},"2542":{},"3717":{},"3894":{}},"parent":{}}],["safeinstanceof",{"_index":1409,"name":{"2279":{}},"parent":{}}],["same",{"_index":134,"name":{"125":{},"1916":{}},"parent":{}}],["sanitize",{"_index":1502,"name":{"2396":{}},"parent":{}}],["sanitizehtml",{"_index":1500,"name":{"2393":{}},"parent":{}}],["sanitizehtmloptions",{"_index":856,"name":{"1104":{}},"parent":{}}],["sanitizepastecontent",{"_index":1382,"name":{"2248":{}},"parent":{}}],["sanitizingoption",{"_index":487,"name":{"486":{},"497":{},"505":{},"3638":{},"3652":{},"3663":{}},"parent":{}}],["savetablecellmetadata",{"_index":1472,"name":{"2353":{}},"parent":{}}],["scheme",{"_index":763,"name":{"999":{}},"parent":{}}],["scroll",{"_index":406,"name":{"389":{},"2109":{}},"parent":{}}],["scrollcontainer",{"_index":37,"name":{"34":{},"677":{},"729":{},"735":{},"1533":{},"2758":{},"3755":{}},"parent":{}}],["segment",{"_index":1790,"name":{"2971":{},"3336":{},"3433":{}},"parent":{}}],["segmentdecorator",{"_index":2056,"name":{"3337":{}},"parent":{}}],["segmentformat",{"_index":1980,"name":{"3180":{},"3377":{},"3402":{}},"parent":{}}],["segmentonblock",{"_index":1791,"name":{"2972":{}},"parent":{}}],["segmentontablecell",{"_index":1792,"name":{"2973":{}},"parent":{}}],["segments",{"_index":1978,"name":{"3179":{}},"parent":{}}],["segmenttype",{"_index":2001,"name":{"3217":{},"3262":{},"3274":{},"3282":{},"3290":{},"3297":{},"3302":{}},"parent":{}}],["segmentunderlink",{"_index":1801,"name":{"2984":{}},"parent":{}}],["select",{"_index":966,"name":{"1324":{},"1473":{},"1503":{},"2455":{},"2521":{},"3595":{},"3696":{},"3873":{}},"parent":{}}],["selectable",{"_index":2045,"name":{"3321":{}},"parent":{}}],["selectall",{"_index":125,"name":{"116":{},"1907":{}},"parent":{}}],["selectimage",{"_index":1065,"name":{"1480":{},"1517":{},"3602":{}},"parent":{}}],["selection",{"_index":1426,"name":{"2297":{}},"parent":{}}],["selectionchanged",{"_index":412,"name":{"397":{},"2117":{}},"parent":{}}],["selectionchangedevent",{"_index":626,"name":{"785":{}},"parent":{}}],["selectionchangedeventdata",{"_index":629,"name":{"790":{}},"parent":{}}],["selectionoverride",{"_index":2251,"name":{"3790":{}},"parent":{}}],["selectionpath",{"_index":609,"name":{"749":{},"759":{},"762":{},"1031":{}},"parent":{}}],["selectionrange",{"_index":38,"name":{"35":{}},"parent":{}}],["selectionrangeex",{"_index":627,"name":{"786":{},"791":{},"793":{},"1724":{}},"parent":{}}],["selectionrangeexbase",{"_index":1218,"name":{"1704":{}},"parent":{}}],["selectionrangetypes",{"_index":414,"name":{"399":{}},"parent":{}}],["selectionstart",{"_index":218,"name":{"209":{},"1840":{}},"parent":{}}],["selectoption",{"_index":1174,"name":{"1656":{}},"parent":{}}],["selectrange",{"_index":1060,"name":{"1474":{},"1505":{},"3596":{}},"parent":{}}],["selecttable",{"_index":1064,"name":{"1479":{},"1515":{},"3601":{}},"parent":{}}],["sentence",{"_index":296,"name":{"285":{},"1811":{}},"parent":{}}],["setalignment",{"_index":1442,"name":{"2319":{},"2582":{},"3826":{}},"parent":{}}],["setalignmenttoselectedcells",{"_index":1428,"name":{"2301":{}},"parent":{}}],["setbackgroundcolor",{"_index":1554,"name":{"2583":{},"3811":{}},"parent":{}}],["setcolor",{"_index":1412,"name":{"2282":{}},"parent":{}}],["setcontent",{"_index":203,"name":{"194":{},"1315":{},"1475":{},"1507":{},"1821":{},"2446":{},"2512":{},"3597":{},"3687":{},"3864":{}},"parent":{}}],["setcontentmodel",{"_index":2209,"name":{"3581":{},"3630":{},"3673":{},"3850":{}},"parent":{}}],["setcursorpoint",{"_index":1177,"name":{"1662":{}},"parent":{}}],["setdarkmodestate",{"_index":993,"name":{"1354":{},"2485":{},"2551":{},"3726":{},"3903":{}},"parent":{}}],["setdirection",{"_index":1556,"name":{"2585":{},"3827":{}},"parent":{}}],["seteditingimage",{"_index":1601,"name":{"2657":{},"2678":{}},"parent":{}}],["seteditordomattribute",{"_index":985,"name":{"1346":{},"2477":{},"2543":{},"3718":{},"3895":{}},"parent":{}}],["setfontname",{"_index":1557,"name":{"2586":{},"3812":{}},"parent":{}}],["setfontsize",{"_index":1558,"name":{"2587":{},"3813":{}},"parent":{}}],["setglobalcssstyles",{"_index":1521,"name":{"2415":{}},"parent":{}}],["setheadinglevel",{"_index":1572,"name":{"2602":{},"3828":{}},"parent":{}}],["sethtmlwithmetadata",{"_index":1487,"name":{"2379":{}},"parent":{}}],["sethtmlwithselectionpath",{"_index":1486,"name":{"2378":{}},"parent":{}}],["setimagealttext",{"_index":1559,"name":{"2588":{},"3840":{}},"parent":{}}],["setimageborder",{"_index":2269,"name":{"3831":{}},"parent":{}}],["setimageboxshadow",{"_index":2270,"name":{"3832":{}},"parent":{}}],["setindentation",{"_index":1441,"name":{"2318":{},"2589":{},"3825":{}},"parent":{}}],["setisdummy",{"_index":1460,"name":{"2341":{}},"parent":{}}],["setlistitemstyle",{"_index":1470,"name":{"2351":{}},"parent":{}}],["setliststartnumber",{"_index":2263,"name":{"3820":{}},"parent":{}}],["setliststyle",{"_index":2262,"name":{"3819":{}},"parent":{}}],["setliststyletype",{"_index":1444,"name":{"2321":{}},"parent":{}}],["setmetadata",{"_index":1531,"name":{"2427":{}},"parent":{}}],["setnewliststart",{"_index":1461,"name":{"2342":{}},"parent":{}}],["setorderedlistnumbering",{"_index":1565,"name":{"2595":{}},"parent":{}}],["setparagraphmargin",{"_index":2275,"name":{"3842":{}},"parent":{}}],["setparagraphnotimplicit",{"_index":2191,"name":{"3522":{}},"parent":{}}],["setspacing",{"_index":2268,"name":{"3830":{}},"parent":{}}],["setstyles",{"_index":1519,"name":{"2413":{}},"parent":{}}],["settablecellshade",{"_index":2260,"name":{"3801":{}},"parent":{}}],["settextcolor",{"_index":1555,"name":{"2584":{},"3814":{}},"parent":{}}],["setuiutilities",{"_index":1635,"name":{"2728":{},"2799":{}},"parent":{}}],["setzoomscale",{"_index":1002,"name":{"1364":{},"2496":{},"2562":{},"3736":{},"3914":{}},"parent":{}}],["shadoweditentities",{"_index":65,"name":{"60":{}},"parent":{}}],["shadoweditfragment",{"_index":64,"name":{"59":{}},"parent":{}}],["shadoweditimageselectionpath",{"_index":68,"name":{"63":{}},"parent":{}}],["shadoweditselectionpath",{"_index":66,"name":{"61":{}},"parent":{}}],["shadowedittableselectionpath",{"_index":67,"name":{"62":{}},"parent":{}}],["shadowentitycache",{"_index":54,"name":{"48":{}},"parent":{}}],["shadowroot",{"_index":936,"name":{"1198":{},"1292":{}},"parent":{}}],["shift",{"_index":147,"name":{"136":{},"168":{},"1997":{},"2029":{}},"parent":{}}],["shifthighlight",{"_index":1175,"name":{"1658":{}},"parent":{}}],["shortarrow",{"_index":447,"name":{"431":{},"1803":{}},"parent":{}}],["shortcutfeaturesettings",{"_index":1146,"name":{"1619":{}},"parent":{}}],["shouldhandleevent",{"_index":1019,"name":{"1381":{},"1389":{}},"parent":{}}],["shouldpersist",{"_index":529,"name":{"577":{},"587":{},"594":{}},"parent":{}}],["shouldreplace",{"_index":1161,"name":{"1639":{}},"parent":{}}],["shouldshow",{"_index":1741,"name":{"2918":{}},"parent":{}}],["showinputdialog",{"_index":1762,"name":{"2944":{}},"parent":{}}],["showresizehandle",{"_index":1612,"name":{"2669":{}},"parent":{}}],["sideresize",{"_index":346,"name":{"331":{},"1983":{}},"parent":{}}],["singledirectionresize",{"_index":258,"name":{"247":{},"1946":{}},"parent":{}}],["singleimage",{"_index":380,"name":{"363":{},"2052":{}},"parent":{}}],["size",{"_index":1819,"name":{"3013":{},"3195":{}},"parent":{}}],["sizeformat",{"_index":1928,"name":{"3120":{}},"parent":{}}],["sizetransformer",{"_index":1051,"name":{"1443":{},"1539":{},"1748":{},"2764":{},"3616":{},"3761":{}},"parent":{}}],["skiptags",{"_index":790,"name":{"1025":{},"1030":{}},"parent":{}}],["skipundosnapshot",{"_index":2246,"name":{"3782":{},"3797":{}},"parent":{}}],["snapshot",{"_index":814,"name":{"1059":{}},"parent":{}}],["snapshotbeforepaste",{"_index":651,"name":{"825":{}},"parent":{}}],["snapshots",{"_index":795,"name":{"1034":{},"1035":{}},"parent":{}}],["snapshotsservice",{"_index":75,"name":{"69":{}},"parent":{}}],["source",{"_index":503,"name":{"526":{},"533":{},"537":{}},"parent":{}}],["sourcestring",{"_index":1157,"name":{"1636":{}},"parent":{}}],["space",{"_index":151,"name":{"140":{},"2001":{}},"parent":{}}],["spacingformat",{"_index":1911,"name":{"3105":{}},"parent":{}}],["spanabove",{"_index":1193,"name":{"1681":{},"3252":{}},"parent":{}}],["spanleft",{"_index":1192,"name":{"1680":{},"3251":{}},"parent":{}}],["split",{"_index":1440,"name":{"2317":{}},"parent":{}}],["splitbalancednoderange",{"_index":1400,"name":{"2270":{}},"parent":{}}],["splithorizontally",{"_index":332,"name":{"317":{},"2157":{}},"parent":{}}],["splitparentnode",{"_index":1399,"name":{"2269":{}},"parent":{}}],["splittextnode",{"_index":1407,"name":{"2277":{}},"parent":{}}],["splitvertically",{"_index":333,"name":{"318":{},"2158":{}},"parent":{}}],["square",{"_index":446,"name":{"430":{},"1802":{}},"parent":{}}],["src",{"_index":2026,"name":{"3278":{}},"parent":{}}],["start",{"_index":793,"name":{"1032":{},"1044":{},"3435":{}},"parent":{}}],["startlivepreview",{"_index":1658,"name":{"2795":{}},"parent":{}}],["startnumberoverride",{"_index":1938,"name":{"3133":{}},"parent":{}}],["startshadowedit",{"_index":996,"name":{"1358":{},"2489":{},"2555":{},"3730":{},"3907":{}},"parent":{}}],["state",{"_index":528,"name":{"576":{},"586":{},"593":{},"1067":{}},"parent":{}}],["statepluginkeys",{"_index":1044,"name":{"1434":{}},"parent":{}}],["stoplivepreview",{"_index":1659,"name":{"2797":{}},"parent":{}}],["stopprintablekeyboardeventpropagation",{"_index":40,"name":{"37":{}},"parent":{}}],["stopshadowedit",{"_index":997,"name":{"1359":{},"2490":{},"2556":{},"3731":{},"3908":{}},"parent":{}}],["strike",{"_index":1820,"name":{"3014":{}},"parent":{}}],["strikeformat",{"_index":1850,"name":{"3047":{}},"parent":{}}],["strikethrough",{"_index":126,"name":{"117":{},"1908":{},"2860":{},"3049":{}},"parent":{}}],["strikethroughbuttonstringkey",{"_index":1719,"name":{"2893":{}},"parent":{}}],["string",{"_index":457,"name":{"441":{},"1857":{}},"parent":{}}],["stringdefinition",{"_index":1255,"name":{"1755":{}},"parent":{}}],["stringmap",{"_index":1239,"name":{"1737":{}},"parent":{}}],["strings",{"_index":1681,"name":{"2835":{}},"parent":{}}],["structurednodefeaturesettings",{"_index":1148,"name":{"1621":{}},"parent":{}}],["style",{"_index":1214,"name":{"1700":{},"3574":{}},"parent":{}}],["stylebasedformatstate",{"_index":712,"name":{"924":{}},"parent":{}}],["stylebasedsegment",{"_index":1788,"name":{"2969":{}},"parent":{}}],["stylewithcss",{"_index":132,"name":{"123":{},"1914":{}},"parent":{}}],["subitems",{"_index":1742,"name":{"2920":{}},"parent":{}}],["subscript",{"_index":127,"name":{"118":{},"1909":{},"2859":{}},"parent":{}}],["subscriptbuttonstringkey",{"_index":1718,"name":{"2892":{}},"parent":{}}],["suggestionlabelprefix",{"_index":1188,"name":{"1677":{}},"parent":{}}],["suggestionslabel",{"_index":1187,"name":{"1676":{}},"parent":{}}],["superorsubscript",{"_index":1821,"name":{"3015":{}},"parent":{}}],["superorsubscriptformat",{"_index":1853,"name":{"3050":{}},"parent":{}}],["superorsubscriptsequence",{"_index":1855,"name":{"3052":{}},"parent":{}}],["superscript",{"_index":128,"name":{"119":{},"1910":{},"2858":{}},"parent":{}}],["superscriptbuttonstringkey",{"_index":1717,"name":{"2891":{}},"parent":{}}],["svgcursorelement",{"_index":944,"name":{"1210":{}},"parent":{}}],["switchshadowedit",{"_index":1061,"name":{"1476":{},"1509":{},"3598":{}},"parent":{}}],["switchtodarkmode",{"_index":206,"name":{"198":{},"1825":{}},"parent":{}}],["switchtolightmode",{"_index":207,"name":{"199":{},"1826":{}},"parent":{}}],["tab",{"_index":145,"name":{"134":{},"1995":{}},"parent":{}}],["tabintable",{"_index":1112,"name":{"1559":{},"1624":{}},"parent":{}}],["tabkeytextfeatures",{"_index":276,"name":{"265":{},"1964":{}},"parent":{}}],["table",{"_index":316,"name":{"303":{},"1713":{},"2129":{},"2292":{},"2974":{},"3338":{},"3439":{},"3771":{}},"parent":{}}],["tablealignment",{"_index":264,"name":{"253":{},"1952":{}},"parent":{}}],["tableborder",{"_index":1795,"name":{"2977":{}},"parent":{}}],["tableborderformat",{"_index":381,"name":{"364":{},"1079":{},"3154":{}},"parent":{}}],["tablecell",{"_index":1793,"name":{"2975":{}},"parent":{}}],["tablecellborder",{"_index":1796,"name":{"2978":{}},"parent":{}}],["tablecellmetadataformat",{"_index":834,"name":{"1082":{}},"parent":{}}],["tablecellselection",{"_index":1622,"name":{"2707":{}},"parent":{}}],["tablecontentmetadata",{"_index":805,"name":{"1048":{}},"parent":{}}],["tablecontext",{"_index":2235,"name":{"3769":{}},"parent":{}}],["tableeditalignmenuitemstringkey",{"_index":1749,"name":{"2931":{}},"parent":{}}],["tableeditaligntablemenuitemstringkey",{"_index":1752,"name":{"2934":{}},"parent":{}}],["tableeditdeletemenuitemstringkey",{"_index":1746,"name":{"2928":{}},"parent":{}}],["tableeditinsertmenuitemstringkey",{"_index":1745,"name":{"2927":{}},"parent":{}}],["tableeditmenuitemstringkey",{"_index":1751,"name":{"2933":{}},"parent":{}}],["tableeditmergemenuitemstringkey",{"_index":1747,"name":{"2929":{}},"parent":{}}],["tableeditshademenuitemstringkey",{"_index":1750,"name":{"2932":{}},"parent":{}}],["tableeditsplitmenuitemstringkey",{"_index":1748,"name":{"2930":{}},"parent":{}}],["tablefeaturesettings",{"_index":1150,"name":{"1623":{}},"parent":{}}],["tableformat",{"_index":700,"name":{"886":{},"921":{},"1068":{},"3550":{}},"parent":{}}],["tablehasheader",{"_index":701,"name":{"887":{},"922":{},"3551":{}},"parent":{}}],["tablehorizontalresizer",{"_index":365,"name":{"349":{},"2038":{}},"parent":{}}],["tableid",{"_index":806,"name":{"1049":{}},"parent":{}}],["tablelayout",{"_index":1822,"name":{"3016":{},"3110":{}},"parent":{}}],["tablelayoutformat",{"_index":1915,"name":{"3108":{}},"parent":{}}],["tablemetadataformat",{"_index":1948,"name":{"3142":{}},"parent":{}}],["tableoperation",{"_index":318,"name":{"304":{}},"parent":{}}],["tableprocessor",{"_index":2148,"name":{"3480":{}},"parent":{}}],["tableresize",{"_index":1618,"name":{"2695":{}},"parent":{}}],["tableresizerltr",{"_index":367,"name":{"351":{},"2040":{}},"parent":{}}],["tableresizerrtl",{"_index":368,"name":{"352":{},"2041":{}},"parent":{}}],["tablerow",{"_index":1794,"name":{"2976":{}},"parent":{}}],["tableselection",{"_index":417,"name":{"401":{},"1086":{},"2132":{},"3421":{},"3446":{}},"parent":{}}],["tableselectioncontext",{"_index":2236,"name":{"3770":{}},"parent":{}}],["tableselectionrange",{"_index":39,"name":{"36":{},"1712":{}},"parent":{}}],["tableselector",{"_index":369,"name":{"353":{},"2042":{}},"parent":{}}],["tablespacing",{"_index":1823,"name":{"3017":{}},"parent":{}}],["tableverticalresizer",{"_index":366,"name":{"350":{},"2039":{}},"parent":{}}],["tag",{"_index":1210,"name":{"1697":{}},"parent":{}}],["tagname",{"_index":1990,"name":{"3194":{},"3229":{},"3314":{}},"parent":{}}],["target",{"_index":1923,"name":{"3115":{}},"parent":{}}],["targetwindow",{"_index":943,"name":{"1209":{}},"parent":{}}],["targetwindowbase",{"_index":860,"name":{"1118":{}},"parent":{}}],["td",{"_index":1190,"name":{"1679":{}},"parent":{}}],["text",{"_index":182,"name":{"172":{},"179":{},"819":{},"1204":{},"1298":{},"1844":{},"2060":{},"3289":{},"3339":{}},"parent":{}}],["textalign",{"_index":706,"name":{"898":{},"934":{},"3018":{},"3095":{},"3562":{}},"parent":{}}],["textalignformat",{"_index":1899,"name":{"3093":{}},"parent":{}}],["textcolor",{"_index":673,"name":{"854":{},"893":{},"929":{},"2844":{},"3019":{},"3055":{},"3557":{}},"parent":{}}],["textcolorbuttonstringkey",{"_index":1702,"name":{"2876":{}},"parent":{}}],["textcolorformat",{"_index":1857,"name":{"3053":{}},"parent":{}}],["textcolorkeys",{"_index":1757,"name":{"2939":{}},"parent":{}}],["textcolorontablecell",{"_index":1824,"name":{"3020":{}},"parent":{}}],["textcolors",{"_index":674,"name":{"855":{},"894":{},"930":{},"3558":{}},"parent":{}}],["textfeaturesettings",{"_index":1152,"name":{"1628":{}},"parent":{}}],["threaditemcounts",{"_index":2101,"name":{"3409":{},"3454":{}},"parent":{}}],["title",{"_index":31,"name":{"29":{},"3280":{}},"parent":{}}],["toarray",{"_index":1535,"name":{"2431":{}},"parent":{}}],["toggleblockquote",{"_index":1566,"name":{"2596":{},"3829":{}},"parent":{}}],["togglebold",{"_index":1561,"name":{"2591":{},"3805":{}},"parent":{}}],["togglebullet",{"_index":1562,"name":{"2592":{},"3803":{}},"parent":{}}],["togglecode",{"_index":2276,"name":{"3843":{}},"parent":{}}],["togglecodeblock",{"_index":1567,"name":{"2597":{}},"parent":{}}],["toggleheader",{"_index":1573,"name":{"2603":{}},"parent":{}}],["toggleitalic",{"_index":1563,"name":{"2593":{},"3806":{}},"parent":{}}],["togglelisttype",{"_index":1575,"name":{"2605":{}},"parent":{}}],["togglenumbering",{"_index":1564,"name":{"2594":{},"3804":{}},"parent":{}}],["togglestrikethrough",{"_index":1568,"name":{"2598":{},"3808":{}},"parent":{}}],["togglesubscript",{"_index":1569,"name":{"2599":{},"3809":{}},"parent":{}}],["togglesuperscript",{"_index":1570,"name":{"2600":{},"3810":{}},"parent":{}}],["toggleunderline",{"_index":1571,"name":{"2601":{},"3807":{}},"parent":{}}],["top",{"_index":780,"name":{"1015":{}},"parent":{}}],["topbordercolor",{"_index":821,"name":{"1069":{},"3144":{}},"parent":{}}],["toppercent",{"_index":1966,"name":{"3168":{}},"parent":{}}],["totalsize",{"_index":797,"name":{"1036":{}},"parent":{}}],["transformcolor",{"_index":1062,"name":{"1477":{},"1511":{},"3599":{}},"parent":{}}],["transformelementcolor",{"_index":1012,"name":{"1373":{}},"parent":{}}],["transformtodarkcolor",{"_index":994,"name":{"1356":{},"2487":{},"2553":{},"3728":{},"3905":{}},"parent":{}}],["triggercharacter",{"_index":1184,"name":{"1673":{}},"parent":{}}],["triggercontentchangedevent",{"_index":973,"name":{"1331":{},"2462":{},"2528":{},"3703":{},"3880":{}},"parent":{}}],["triggerevent",{"_index":1063,"name":{"1478":{},"1513":{},"3600":{}},"parent":{}}],["triggerpluginevent",{"_index":972,"name":{"1330":{},"2461":{},"2527":{},"3702":{},"3879":{}},"parent":{}}],["trustedhtmlhandler",{"_index":1050,"name":{"1441":{},"1537":{},"1746":{},"2762":{},"3614":{},"3759":{}},"parent":{}}],["type",{"_index":32,"name":{"30":{},"862":{},"1042":{},"1047":{},"1053":{},"1057":{},"1065":{},"1705":{},"1709":{},"1716":{},"1721":{},"1752":{},"1757":{},"1764":{},"1769":{},"1776":{},"1781":{},"1788":{},"3213":{}},"parent":{}}],["typeafterlink",{"_index":1036,"name":{"1424":{}},"parent":{}}],["typeincontainer",{"_index":1033,"name":{"1420":{}},"parent":{}}],["typeofstateplugin",{"_index":1045,"name":{"1435":{}},"parent":{}}],["types",{"_index":2,"name":{"0":{},"1":{},"9":{},"818":{}},"parent":{"13":{},"26":{},"32":{},"40":{},"42":{},"50":{},"64":{},"68":{},"74":{},"76":{},"124":{},"131":{},"169":{},"178":{},"181":{},"184":{},"188":{},"202":{},"205":{},"212":{},"217":{},"220":{},"223":{},"228":{},"241":{},"272":{},"275":{},"281":{},"284":{},"289":{},"293":{},"298":{},"302":{},"304":{},"328":{},"337":{},"341":{},"355":{},"364":{},"374":{},"399":{},"403":{},"426":{},"438":{},"445":{},"450":{},"458":{},"463":{},"471":{},"475":{},"479":{},"483":{},"494":{},"502":{},"513":{},"518":{},"520":{},"525":{},"532":{},"536":{},"543":{},"551":{},"556":{},"564":{},"568":{},"572":{},"582":{},"589":{},"599":{},"604":{},"606":{},"611":{},"618":{},"625":{},"626":{},"631":{},"636":{},"642":{},"643":{},"649":{},"654":{},"659":{},"660":{},"665":{},"671":{},"676":{},"682":{},"683":{},"688":{},"694":{},"695":{},"701":{},"706":{},"711":{},"712":{},"717":{},"723":{},"728":{},"734":{},"736":{},"738":{},"740":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"753":{},"757":{},"760":{},"766":{},"770":{},"776":{},"779":{},"785":{},"790":{},"792":{},"797":{},"802":{},"804":{},"809":{},"817":{},"830":{},"843":{},"847":{},"851":{},"861":{},"866":{},"902":{},"909":{},"924":{},"936":{},"939":{},"946":{},"949":{},"954":{},"961":{},"971":{},"972":{},"977":{},"983":{},"990":{},"998":{},"1002":{},"1005":{},"1014":{},"1019":{},"1026":{},"1031":{},"1034":{},"1040":{},"1043":{},"1048":{},"1054":{},"1058":{},"1059":{},"1064":{},"1068":{},"1082":{},"1086":{},"1089":{},"1092":{},"1104":{},"1118":{},"1209":{},"1303":{},"1367":{},"1374":{},"1378":{},"1379":{},"1386":{},"1394":{},"1405":{},"1417":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1455":{},"1457":{},"1459":{},"1481":{},"1483":{},"1485":{},"1487":{},"1489":{},"1491":{},"1493":{},"1495":{},"1497":{},"1499":{},"1501":{},"1503":{},"1505":{},"1507":{},"1509":{},"1511":{},"1513":{},"1515":{},"1517":{},"1519":{},"1543":{},"1584":{},"1587":{},"1589":{},"1597":{},"1611":{},"1616":{},"1619":{},"1621":{},"1623":{},"1628":{},"1632":{},"1635":{},"1641":{},"1647":{},"1670":{},"1678":{},"1684":{},"1696":{},"1704":{},"1708":{},"1712":{},"1719":{},"1724":{},"1725":{},"1729":{},"1731":{},"1732":{},"1734":{},"1735":{},"1737":{},"1738":{},"1739":{},"1740":{},"1742":{},"1745":{},"1746":{},"1748":{},"1750":{},"1751":{},"1755":{},"1760":{},"1767":{},"1772":{},"1779":{},"1784":{},"1785":{},"1791":{},"1792":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2951":{},"2952":{},"2954":{},"2955":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2967":{},"2989":{},"2990":{},"3025":{},"3026":{},"3029":{},"3032":{},"3035":{},"3038":{},"3041":{},"3044":{},"3047":{},"3050":{},"3053":{},"3056":{},"3059":{},"3062":{},"3065":{},"3068":{},"3075":{},"3078":{},"3081":{},"3087":{},"3093":{},"3096":{},"3099":{},"3102":{},"3105":{},"3108":{},"3111":{},"3120":{},"3128":{},"3131":{},"3135":{},"3138":{},"3141":{},"3142":{},"3156":{},"3160":{},"3164":{},"3170":{},"3171":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3186":{},"3193":{},"3200":{},"3203":{},"3205":{},"3210":{},"3221":{},"3225":{},"3228":{},"3236":{},"3243":{},"3250":{},"3260":{},"3261":{},"3267":{},"3277":{},"3288":{},"3295":{},"3301":{},"3307":{},"3308":{},"3310":{},"3313":{},"3316":{},"3317":{},"3321":{},"3323":{},"3340":{},"3341":{},"3342":{},"3343":{},"3345":{},"3352":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3364":{},"3366":{},"3387":{},"3389":{},"3392":{},"3400":{},"3404":{},"3408":{},"3412":{},"3431":{},"3434":{},"3438":{},"3442":{},"3444":{},"3448":{},"3453":{},"3456":{},"3459":{},"3461":{},"3463":{},"3468":{}}}],["types.addundosnapshot",{"_index":1053,"name":{},"parent":{"1456":{}}}],["types.alignment",{"_index":196,"name":{},"parent":{"185":{},"186":{},"187":{}}}],["types.arraydefinition",{"_index":1265,"name":{},"parent":{"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{}}}],["types.attachdomevent",{"_index":1055,"name":{},"parent":{"1458":{}}}],["types.attributecallback",{"_index":1232,"name":{},"parent":{"1730":{}}}],["types.autolinkfeaturesettings",{"_index":1135,"name":{},"parent":{"1585":{},"1586":{}}}],["types.backgroundcolorformat",{"_index":1829,"name":{},"parent":{"3027":{}}}],["types.backgroundcolorformat.__type",{"_index":1830,"name":{},"parent":{"3028":{}}}],["types.basepluginevent",{"_index":478,"name":{},"parent":{"472":{},"473":{},"474":{}}}],["types.beforecutcopyevent",{"_index":468,"name":{},"parent":{"451":{},"452":{},"453":{},"454":{},"455":{},"456":{},"457":{}}}],["types.beforecutcopyeventdata",{"_index":474,"name":{},"parent":{"459":{},"460":{},"461":{},"462":{}}}],["types.beforedisposeevent",{"_index":480,"name":{},"parent":{"476":{},"477":{},"478":{}}}],["types.beforekeyboardeditingdata",{"_index":636,"name":{},"parent":{"803":{}}}],["types.beforekeyboardeditingevent",{"_index":634,"name":{},"parent":{"798":{},"799":{},"800":{},"801":{}}}],["types.beforepasteevent",{"_index":485,"name":{},"parent":{"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{}}}],["types.beforepasteeventdata",{"_index":492,"name":{},"parent":{"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{}}}],["types.beforesetcontentevent",{"_index":497,"name":{},"parent":{"514":{},"515":{},"516":{},"517":{}}}],["types.beforesetcontenteventdata",{"_index":499,"name":{},"parent":{"519":{}}}],["types.blockelement",{"_index":641,"name":{},"parent":{"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{}}}],["types.boldformat",{"_index":1832,"name":{},"parent":{"3030":{}}}],["types.boldformat.__type",{"_index":1834,"name":{},"parent":{"3031":{}}}],["types.booleandefinition",{"_index":1262,"name":{},"parent":{"1768":{},"1769":{},"1770":{},"1771":{}}}],["types.borderboxformat",{"_index":1864,"name":{},"parent":{"3060":{}}}],["types.borderboxformat.__type",{"_index":1866,"name":{},"parent":{"3061":{}}}],["types.borderformat",{"_index":1874,"name":{},"parent":{"3069":{}}}],["types.borderformat.__type",{"_index":1876,"name":{},"parent":{"3070":{},"3071":{},"3072":{},"3073":{},"3074":{}}}],["types.boxshadowformat",{"_index":1934,"name":{},"parent":{"3129":{}}}],["types.boxshadowformat.__type",{"_index":1935,"name":{},"parent":{"3130":{}}}],["types.browserinfo",{"_index":15,"name":{},"parent":{"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{}}}],["types.buildineditfeature",{"_index":1024,"name":{},"parent":{"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{}}}],["types.bulletlisttype",{"_index":443,"name":{},"parent":{"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{}}}],["types.capitalization",{"_index":297,"name":{},"parent":{"285":{},"286":{},"287":{},"288":{}}}],["types.changesource",{"_index":200,"name":{},"parent":{"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{}}}],["types.clearformatmode",{"_index":354,"name":{},"parent":{"338":{},"339":{},"340":{}}}],["types.clipboarddata",{"_index":647,"name":{},"parent":{"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{}}}],["types.codefeaturesettings",{"_index":1155,"name":{},"parent":{"1633":{},"1634":{}}}],["types.colorkeyandvalue",{"_index":1015,"name":{},"parent":{"1375":{},"1376":{},"1377":{}}}],["types.colortransformdirection",{"_index":212,"name":{},"parent":{"203":{},"204":{}}}],["types.compatiblebeforecutcopyevent",{"_index":476,"name":{},"parent":{"464":{},"465":{},"466":{},"467":{},"468":{},"469":{},"470":{}}}],["types.compatiblebeforedisposeevent",{"_index":482,"name":{},"parent":{"480":{},"481":{},"482":{}}}],["types.compatiblebeforekeyboardeditingevent",{"_index":638,"name":{},"parent":{"805":{},"806":{},"807":{},"808":{}}}],["types.compatiblebeforepasteevent",{"_index":494,"name":{},"parent":{"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{}}}],["types.compatiblebeforesetcontentevent",{"_index":501,"name":{},"parent":{"521":{},"522":{},"523":{},"524":{}}}],["types.compatiblecontentchangedevent",{"_index":510,"name":{},"parent":{"537":{},"538":{},"539":{},"540":{},"541":{},"542":{}}}],["types.compatibleeditimageevent",{"_index":519,"name":{},"parent":{"557":{},"558":{},"559":{},"560":{},"561":{},"562":{},"563":{}}}],["types.compatibleeditorreadyevent",{"_index":523,"name":{},"parent":{"569":{},"570":{},"571":{}}}],["types.compatibleentershadoweditevent",{"_index":615,"name":{},"parent":{"761":{},"762":{},"763":{},"764":{},"765":{}}}],["types.compatibleentityoperationevent",{"_index":534,"name":{},"parent":{"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{}}}],["types.compatibleextractcontentwithdomevent",{"_index":540,"name":{},"parent":{"607":{},"608":{},"609":{},"610":{}}}],["types.compatibleleaveshadoweditevent",{"_index":617,"name":{},"parent":{"767":{},"768":{},"769":{}}}],["types.compatiblependingformatstatechangedevent",{"_index":546,"name":{},"parent":{"619":{},"620":{},"621":{},"622":{},"623":{},"624":{}}}],["types.compatibleplugincompositionevent",{"_index":575,"name":{},"parent":{"684":{},"685":{},"686":{},"687":{}}}],["types.compatibleplugincontextmenuevent",{"_index":577,"name":{},"parent":{"689":{},"690":{},"691":{},"692":{},"693":{}}}],["types.compatibleplugininputevent",{"_index":591,"name":{},"parent":{"724":{},"725":{},"726":{},"727":{}}}],["types.compatiblepluginkeydownevent",{"_index":580,"name":{},"parent":{"696":{},"697":{},"698":{},"699":{},"700":{}}}],["types.compatiblepluginkeypressevent",{"_index":582,"name":{},"parent":{"702":{},"703":{},"704":{},"705":{}}}],["types.compatiblepluginkeyupevent",{"_index":584,"name":{},"parent":{"707":{},"708":{},"709":{},"710":{}}}],["types.compatiblepluginmousedownevent",{"_index":587,"name":{},"parent":{"713":{},"714":{},"715":{},"716":{}}}],["types.compatiblepluginmouseupevent",{"_index":589,"name":{},"parent":{"718":{},"719":{},"720":{},"721":{},"722":{}}}],["types.compatiblepluginscrollevent",{"_index":593,"name":{},"parent":{"729":{},"730":{},"731":{},"732":{},"733":{}}}],["types.compatibleselectionchangedevent",{"_index":632,"name":{},"parent":{"793":{},"794":{},"795":{},"796":{}}}],["types.compatiblezoomchangedevent",{"_index":625,"name":{},"parent":{"780":{},"781":{},"782":{},"783":{},"784":{}}}],["types.contentchangeddata",{"_index":669,"name":{},"parent":{"848":{},"849":{},"850":{}}}],["types.contentchangedevent",{"_index":504,"name":{},"parent":{"526":{},"527":{},"528":{},"529":{},"530":{},"531":{}}}],["types.contentchangedeventdata",{"_index":508,"name":{},"parent":{"533":{},"534":{},"535":{}}}],["types.contenteditfeaturesettings",{"_index":1097,"name":{},"parent":{"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{},"1559":{},"1560":{},"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{},"1572":{},"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{}}}],["types.contentmetadatabase",{"_index":802,"name":{},"parent":{"1041":{},"1042":{}}}],["types.contentmodelblockbase",{"_index":1994,"name":{},"parent":{"3201":{},"3202":{}}}],["types.contentmodelblockgroupbase",{"_index":2007,"name":{},"parent":{"3226":{},"3227":{}}}],["types.contentmodelblockhandler",{"_index":2129,"name":{},"parent":{"3462":{}}}],["types.contentmodelblockwithcache",{"_index":1996,"name":{},"parent":{"3204":{}}}],["types.contentmodelbr",{"_index":2022,"name":{},"parent":{"3262":{},"3263":{},"3264":{},"3265":{},"3266":{}}}],["types.contentmodelcode",{"_index":2037,"name":{},"parent":{"3309":{}}}],["types.contentmodeldivider",{"_index":1991,"name":{},"parent":{"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{}}}],["types.contentmodeldocument",{"_index":2004,"name":{},"parent":{"3222":{},"3223":{},"3224":{}}}],["types.contentmodelentity",{"_index":2000,"name":{},"parent":{"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{}}}],["types.contentmodelformatbase",{"_index":1785,"name":{},"parent":{"2966":{}}}],["types.contentmodelformatcontainer",{"_index":2009,"name":{},"parent":{"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{}}}],["types.contentmodelformatmap",{"_index":1787,"name":{},"parent":{"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{},"2984":{},"2985":{},"2986":{},"2987":{},"2988":{}}}],["types.contentmodelgeneralblock",{"_index":2012,"name":{},"parent":{"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{}}}],["types.contentmodelgeneralsegment",{"_index":2024,"name":{},"parent":{"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{}}}],["types.contentmodelhandler",{"_index":2127,"name":{},"parent":{"3460":{}}}],["types.contentmodelhandlermap",{"_index":2048,"name":{},"parent":{"3324":{}}}],["types.contentmodelhandlermap.__type",{"_index":2049,"name":{},"parent":{"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{}}}],["types.contentmodelimage",{"_index":2027,"name":{},"parent":{"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{}}}],["types.contentmodellink",{"_index":2039,"name":{},"parent":{"3311":{},"3312":{}}}],["types.contentmodellistitem",{"_index":2015,"name":{},"parent":{"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{}}}],["types.contentmodellistlevel",{"_index":2044,"name":{},"parent":{"3318":{},"3319":{},"3320":{}}}],["types.contentmodelparagraph",{"_index":1979,"name":{},"parent":{"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{}}}],["types.contentmodelparagraphdecorator",{"_index":2041,"name":{},"parent":{"3314":{},"3315":{}}}],["types.contentmodelsegmentbase",{"_index":2034,"name":{},"parent":{"3302":{},"3303":{},"3304":{},"3305":{},"3306":{}}}],["types.contentmodelselectionmarker",{"_index":2032,"name":{},"parent":{"3296":{},"3297":{},"3298":{},"3299":{},"3300":{}}}],["types.contentmodeltable",{"_index":1987,"name":{},"parent":{"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{}}}],["types.contentmodeltablecell",{"_index":2018,"name":{},"parent":{"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{}}}],["types.contentmodeltablerow",{"_index":1998,"name":{},"parent":{"3206":{},"3207":{},"3208":{},"3209":{}}}],["types.contentmodeltext",{"_index":2030,"name":{},"parent":{"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{}}}],["types.contentmodelwithdataset",{"_index":1775,"name":{},"parent":{"2956":{}}}],["types.contentmodelwithformat",{"_index":1772,"name":{},"parent":{"2953":{}}}],["types.contentposition",{"_index":216,"name":{},"parent":{"206":{},"207":{},"208":{},"209":{},"210":{},"211":{}}}],["types.contenttype",{"_index":193,"name":{},"parent":{"182":{},"183":{}}}],["types.contenttypeprefix",{"_index":189,"name":{},"parent":{"179":{},"180":{}}}],["types.contextmenuprovider",{"_index":658,"name":{},"parent":{"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{}}}],["types.coordinates",{"_index":842,"name":{},"parent":{"1090":{},"1091":{}}}],["types.copypastepluginstate",{"_index":83,"name":{},"parent":{"75":{}}}],["types.coreapimap",{"_index":1057,"name":{},"parent":{"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{}}}],["types.corecreator",{"_index":1277,"name":{},"parent":{"1793":{}}}],["types.coreplugins",{"_index":1032,"name":{},"parent":{"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{}}}],["types.createelementdata",{"_index":1211,"name":{},"parent":{"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{}}}],["types.createpastefragment",{"_index":1066,"name":{},"parent":{"1482":{}}}],["types.cssstylecallback",{"_index":1235,"name":{},"parent":{"1733":{}}}],["types.cursorfeaturesettings",{"_index":1137,"name":{},"parent":{"1588":{}}}],["types.customdata",{"_index":665,"name":{},"parent":{"844":{},"845":{},"846":{}}}],["types.customizedefinition",{"_index":1274,"name":{},"parent":{"1786":{},"1787":{},"1788":{},"1789":{},"1790":{}}}],["types.customreplacement",{"_index":1158,"name":{},"parent":{"1636":{},"1637":{},"1638":{},"1639":{},"1640":{}}}],["types.darkcolorhandler",{"_index":1007,"name":{},"parent":{"1368":{},"1369":{},"1370":{},"1371":{},"1372":{},"1373":{}}}],["types.darkmodedatasetnames",{"_index":222,"name":{},"parent":{"213":{},"214":{},"215":{},"216":{}}}],["types.defaultformat",{"_index":672,"name":{},"parent":{"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{}}}],["types.definitionbase",{"_index":1252,"name":{},"parent":{"1752":{},"1753":{},"1754":{}}}],["types.definitiontype",{"_index":455,"name":{},"parent":{"439":{},"440":{},"441":{},"442":{},"443":{},"444":{}}}],["types.delimiterclasses",{"_index":228,"name":{},"parent":{"218":{},"219":{}}}],["types.direction",{"_index":232,"name":{},"parent":{"221":{},"222":{}}}],["types.directionformat",{"_index":1882,"name":{},"parent":{"3076":{}}}],["types.directionformat.__type",{"_index":1883,"name":{},"parent":{"3077":{}}}],["types.displayformat",{"_index":1906,"name":{},"parent":{"3100":{}}}],["types.displayformat.__type",{"_index":1907,"name":{},"parent":{"3101":{}}}],["types.documentcommand",{"_index":86,"name":{},"parent":{"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":{}}}],["types.documentposition",{"_index":135,"name":{},"parent":{"125":{},"126":{},"127":{},"128":{},"129":{},"130":{}}}],["types.domeventhandlerfunction",{"_index":1243,"name":{},"parent":{"1741":{}}}],["types.domeventhandlerobject",{"_index":1245,"name":{},"parent":{"1743":{},"1744":{}}}],["types.domeventpluginstate",{"_index":36,"name":{},"parent":{"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{}}}],["types.domtomodelcontext",{"_index":2082,"name":{},"parent":{"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{}}}],["types.domtomodeldecoratorcontext",{"_index":2099,"name":{},"parent":{"3405":{},"3406":{},"3407":{}}}],["types.domtomodelformatcontext",{"_index":2097,"name":{},"parent":{"3401":{},"3402":{},"3403":{}}}],["types.domtomodellistformat",{"_index":2102,"name":{},"parent":{"3409":{},"3410":{},"3411":{}}}],["types.domtomodeloption",{"_index":2132,"name":{},"parent":{"3464":{},"3465":{},"3466":{},"3467":{}}}],["types.domtomodelselectioncontext",{"_index":2093,"name":{},"parent":{"3390":{},"3391":{}}}],["types.domtomodelsettings",{"_index":2075,"name":{},"parent":{"3359":{},"3360":{},"3361":{},"3362":{},"3363":{}}}],["types.edgelinkpreview",{"_index":29,"name":{},"parent":{"27":{},"28":{},"29":{},"30":{},"31":{}}}],["types.editimageevent",{"_index":512,"name":{},"parent":{"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{}}}],["types.editimageeventdata",{"_index":517,"name":{},"parent":{"552":{},"553":{},"554":{},"555":{}}}],["types.editorcontext",{"_index":2095,"name":{},"parent":{"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{}}}],["types.editorcore",{"_index":1048,"name":{},"parent":{"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{}}}],["types.editoroptions",{"_index":1086,"name":{},"parent":{"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{}}}],["types.editorplugin",{"_index":1026,"name":{},"parent":{"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{}}}],["types.editorreadyevent",{"_index":521,"name":{},"parent":{"565":{},"566":{},"567":{}}}],["types.editorundostate",{"_index":715,"name":{},"parent":{"937":{},"938":{}}}],["types.editpluginstate",{"_index":45,"name":{},"parent":{"41":{}}}],["types.elementbasedformatstate",{"_index":711,"name":{},"parent":{"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{}}}],["types.elementcallback",{"_index":1238,"name":{},"parent":{"1736":{}}}],["types.elementprocessor",{"_index":2091,"name":{},"parent":{"3388":{}}}],["types.ensuretypeincontainer",{"_index":1067,"name":{},"parent":{"1484":{}}}],["types.entershadoweditevent",{"_index":608,"name":{},"parent":{"748":{},"749":{},"750":{},"751":{},"752":{}}}],["types.entershadowediteventdata",{"_index":613,"name":{},"parent":{"758":{},"759":{}}}],["types.entity",{"_index":677,"name":{},"parent":{"862":{},"863":{},"864":{},"865":{}}}],["types.entityclasses",{"_index":236,"name":{},"parent":{"224":{},"225":{},"226":{},"227":{}}}],["types.entityfeaturesettings",{"_index":1139,"name":{},"parent":{"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{}}}],["types.entityoperation",{"_index":242,"name":{},"parent":{"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{}}}],["types.entityoperationevent",{"_index":526,"name":{},"parent":{"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{}}}],["types.entityoperationeventdata",{"_index":532,"name":{},"parent":{"583":{},"584":{},"585":{},"586":{},"587":{},"588":{}}}],["types.entitypluginstate",{"_index":48,"name":{},"parent":{"43":{},"44":{},"47":{},"48":{},"49":{}}}],["types.entitypluginstate.__type",{"_index":51,"name":{},"parent":{"45":{},"46":{}}}],["types.entitystate",{"_index":820,"name":{},"parent":{"1065":{},"1066":{},"1067":{}}}],["types.experimentalfeatures",{"_index":254,"name":{},"parent":{"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{}}}],["types.extractclipboardeventoption",{"_index":718,"name":{},"parent":{"940":{},"941":{},"942":{},"943":{},"944":{},"945":{}}}],["types.extractclipboarditemsforieoptions",{"_index":724,"name":{},"parent":{"950":{},"951":{},"952":{},"953":{}}}],["types.extractclipboarditemsoption",{"_index":722,"name":{},"parent":{"947":{},"948":{}}}],["types.extractcontentwithdomevent",{"_index":536,"name":{},"parent":{"600":{},"601":{},"602":{},"603":{}}}],["types.extractcontentwithdomeventdata",{"_index":538,"name":{},"parent":{"605":{}}}],["types.floatformat",{"_index":1945,"name":{},"parent":{"3139":{}}}],["types.floatformat.__type",{"_index":1946,"name":{},"parent":{"3140":{}}}],["types.focus",{"_index":1068,"name":{},"parent":{"1486":{}}}],["types.fontfamilyformat",{"_index":1836,"name":{},"parent":{"3033":{}}}],["types.fontfamilyformat.__type",{"_index":1837,"name":{},"parent":{"3034":{}}}],["types.fontsizechange",{"_index":285,"name":{},"parent":{"273":{},"274":{}}}],["types.fontsizeformat",{"_index":1839,"name":{},"parent":{"3036":{}}}],["types.fontsizeformat.__type",{"_index":1840,"name":{},"parent":{"3037":{}}}],["types.formatapplier",{"_index":2068,"name":{},"parent":{"3353":{}}}],["types.formathandlertypemap",{"_index":1806,"name":{},"parent":{"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{},"3014":{},"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{}}}],["types.formatparser",{"_index":2080,"name":{},"parent":{"3365":{}}}],["types.formatstate",{"_index":681,"name":{},"parent":{"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{}}}],["types.genericcontenteditfeature",{"_index":1018,"name":{},"parent":{"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{}}}],["types.getcontent",{"_index":1069,"name":{},"parent":{"1488":{}}}],["types.getcontentmode",{"_index":289,"name":{},"parent":{"276":{},"277":{},"278":{},"279":{},"280":{}}}],["types.getpendableformatstate",{"_index":1073,"name":{},"parent":{"1496":{}}}],["types.getselectionrange",{"_index":1070,"name":{},"parent":{"1490":{}}}],["types.getselectionrangeex",{"_index":1071,"name":{},"parent":{"1492":{}}}],["types.getstylebasedformatstate",{"_index":1072,"name":{},"parent":{"1494":{}}}],["types.hasfocus",{"_index":1074,"name":{},"parent":{"1498":{}}}],["types.htmlalignformat",{"_index":1885,"name":{},"parent":{"3079":{}}}],["types.htmlalignformat.__type",{"_index":1886,"name":{},"parent":{"3080":{}}}],["types.htmlsanitizeroptions",{"_index":845,"name":{},"parent":{"1093":{},"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{}}}],["types.icontenttraverser",{"_index":727,"name":{},"parent":{"955":{},"956":{},"957":{},"958":{},"959":{},"960":{}}}],["types.idformat",{"_index":1909,"name":{},"parent":{"3103":{}}}],["types.idformat.__type",{"_index":1910,"name":{},"parent":{"3104":{}}}],["types.ieditor",{"_index":949,"name":{},"parent":{"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{},"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{}}}],["types.imagecontentmetadata",{"_index":812,"name":{},"parent":{"1055":{},"1056":{},"1057":{}}}],["types.imagecropmetadataformat",{"_index":1962,"name":{},"parent":{"3165":{}}}],["types.imagecropmetadataformat.__type",{"_index":1964,"name":{},"parent":{"3166":{},"3167":{},"3168":{},"3169":{}}}],["types.imageeditoperation",{"_index":344,"name":{},"parent":{"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{}}}],["types.imageeditoptions",{"_index":1198,"name":{},"parent":{"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{}}}],["types.imageresizemetadataformat",{"_index":1957,"name":{},"parent":{"3161":{}}}],["types.imageresizemetadataformat.__type",{"_index":1959,"name":{},"parent":{"3162":{},"3163":{}}}],["types.imagerotatemetadataformat",{"_index":1970,"name":{},"parent":{"3172":{}}}],["types.imagerotatemetadataformat.__type",{"_index":1972,"name":{},"parent":{"3173":{}}}],["types.imageselectionrange",{"_index":1226,"name":{},"parent":{"1720":{},"1721":{},"1722":{},"1723":{}}}],["types.indentation",{"_index":294,"name":{},"parent":{"282":{},"283":{}}}],["types.inlineelement",{"_index":734,"name":{},"parent":{"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{}}}],["types.insertnode",{"_index":1075,"name":{},"parent":{"1500":{}}}],["types.insertoptionbase",{"_index":744,"name":{},"parent":{"973":{},"974":{},"975":{},"976":{}}}],["types.insertoptionbasic",{"_index":750,"name":{},"parent":{"978":{},"979":{},"980":{},"981":{},"982":{}}}],["types.insertoptionrange",{"_index":752,"name":{},"parent":{"984":{},"985":{},"986":{},"987":{},"988":{},"989":{}}}],["types.ipositioncontentsearcher",{"_index":755,"name":{},"parent":{"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{}}}],["types.italicformat",{"_index":1842,"name":{},"parent":{"3039":{}}}],["types.italicformat.__type",{"_index":1843,"name":{},"parent":{"3040":{}}}],["types.keys",{"_index":143,"name":{},"parent":{"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":{}}}],["types.knowncreateelementdataindex",{"_index":358,"name":{},"parent":{"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{}}}],["types.knownentityitem",{"_index":1228,"name":{},"parent":{"1726":{},"1727":{},"1728":{}}}],["types.knownpastesourcetype",{"_index":373,"name":{},"parent":{"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{}}}],["types.leaveshadoweditevent",{"_index":611,"name":{},"parent":{"754":{},"755":{},"756":{}}}],["types.letterspacingformat",{"_index":1845,"name":{},"parent":{"3042":{}}}],["types.letterspacingformat.__type",{"_index":1846,"name":{},"parent":{"3043":{}}}],["types.lifecyclepluginstate",{"_index":58,"name":{},"parent":{"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{}}}],["types.lineheightformat",{"_index":1848,"name":{},"parent":{"3045":{}}}],["types.lineheightformat.__type",{"_index":1849,"name":{},"parent":{"3046":{}}}],["types.linkdata",{"_index":764,"name":{},"parent":{"999":{},"1000":{},"1001":{}}}],["types.linkformat",{"_index":1919,"name":{},"parent":{"3112":{}}}],["types.linkformat.__type",{"_index":1921,"name":{},"parent":{"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{}}}],["types.listfeaturesettings",{"_index":1141,"name":{},"parent":{"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{}}}],["types.listmetadataformat",{"_index":1952,"name":{},"parent":{"3157":{}}}],["types.listmetadataformat.__type",{"_index":1954,"name":{},"parent":{"3158":{},"3159":{}}}],["types.liststylepositionformat",{"_index":1942,"name":{},"parent":{"3136":{}}}],["types.liststylepositionformat.__type",{"_index":1943,"name":{},"parent":{"3137":{}}}],["types.listthreadformat",{"_index":1937,"name":{},"parent":{"3132":{}}}],["types.listthreadformat.__type",{"_index":1939,"name":{},"parent":{"3133":{},"3134":{}}}],["types.listtype",{"_index":303,"name":{},"parent":{"290":{},"291":{},"292":{}}}],["types.marginformat",{"_index":1888,"name":{},"parent":{"3082":{}}}],["types.marginformat.__type",{"_index":1889,"name":{},"parent":{"3083":{},"3084":{},"3085":{},"3086":{}}}],["types.markdownfeaturesettings",{"_index":1143,"name":{},"parent":{"1612":{},"1613":{},"1614":{},"1615":{}}}],["types.modeindependentcolor",{"_index":769,"name":{},"parent":{"1003":{},"1004":{}}}],["types.modeltodomblockandsegmentnode",{"_index":2109,"name":{},"parent":{"3432":{},"3433":{}}}],["types.modeltodomcontext",{"_index":2105,"name":{},"parent":{"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{}}}],["types.modeltodomformatcontext",{"_index":2125,"name":{},"parent":{"3457":{},"3458":{}}}],["types.modeltodomimageselection",{"_index":2116,"name":{},"parent":{"3443":{}}}],["types.modeltodomlistcontext",{"_index":2122,"name":{},"parent":{"3454":{},"3455":{}}}],["types.modeltodomliststackitem",{"_index":2120,"name":{},"parent":{"3449":{},"3450":{},"3451":{},"3452":{}}}],["types.modeltodomoption",{"_index":2138,"name":{},"parent":{"3469":{},"3470":{},"3471":{},"3472":{},"3473":{}}}],["types.modeltodomregularselection",{"_index":2111,"name":{},"parent":{"3435":{},"3436":{},"3437":{}}}],["types.modeltodomselectioncontext",{"_index":2118,"name":{},"parent":{"3445":{},"3446":{},"3447":{}}}],["types.modeltodomsettings",{"_index":2064,"name":{},"parent":{"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{}}}],["types.modeltodomtableselection",{"_index":2114,"name":{},"parent":{"3439":{},"3440":{},"3441":{}}}],["types.nodeposition",{"_index":773,"name":{},"parent":{"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{}}}],["types.nodetype",{"_index":180,"name":{},"parent":{"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{}}}],["types.normalcontentmetadata",{"_index":804,"name":{},"parent":{"1044":{},"1045":{},"1046":{},"1047":{}}}],["types.normalselectionrange",{"_index":1223,"name":{},"parent":{"1709":{},"1710":{},"1711":{}}}],["types.numberdefinition",{"_index":1258,"name":{},"parent":{"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{}}}],["types.numberinglisttype",{"_index":420,"name":{},"parent":{"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{}}}],["types.objectdefinition",{"_index":1270,"name":{},"parent":{"1780":{},"1781":{},"1782":{},"1783":{}}}],["types.onnodecreated",{"_index":2061,"name":{},"parent":{"3344":{}}}],["types.paddingformat",{"_index":1893,"name":{},"parent":{"3088":{}}}],["types.paddingformat.__type",{"_index":1895,"name":{},"parent":{"3089":{},"3090":{},"3091":{},"3092":{}}}],["types.pastetype",{"_index":462,"name":{},"parent":{"446":{},"447":{},"448":{},"449":{}}}],["types.pendableformatstate",{"_index":709,"name":{},"parent":{"903":{},"904":{},"905":{},"906":{},"907":{},"908":{}}}],["types.pendingformatstatechangedevent",{"_index":543,"name":{},"parent":{"612":{},"613":{},"614":{},"615":{},"616":{},"617":{}}}],["types.pendingformatstatepluginstate",{"_index":71,"name":{},"parent":{"65":{},"66":{},"67":{}}}],["types.pickerdataprovider",{"_index":1170,"name":{},"parent":{"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{}}}],["types.pickerpluginoptions",{"_index":1183,"name":{},"parent":{"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{}}}],["types.plugincompositionevent",{"_index":551,"name":{},"parent":{"632":{},"633":{},"634":{},"635":{}}}],["types.plugincontextmenuevent",{"_index":554,"name":{},"parent":{"637":{},"638":{},"639":{},"640":{},"641":{}}}],["types.plugincontextmenueventdata",{"_index":599,"name":{},"parent":{"739":{}}}],["types.plugindomeventbase",{"_index":549,"name":{},"parent":{"627":{},"628":{},"629":{},"630":{}}}],["types.plugineventtype",{"_index":393,"name":{},"parent":{"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{}}}],["types.plugininputevent",{"_index":570,"name":{},"parent":{"672":{},"673":{},"674":{},"675":{}}}],["types.pluginkeydownevent",{"_index":558,"name":{},"parent":{"644":{},"645":{},"646":{},"647":{},"648":{}}}],["types.pluginkeydowneventdata",{"_index":601,"name":{},"parent":{"741":{}}}],["types.pluginkeypressevent",{"_index":560,"name":{},"parent":{"650":{},"651":{},"652":{},"653":{}}}],["types.pluginkeyupevent",{"_index":562,"name":{},"parent":{"655":{},"656":{},"657":{},"658":{}}}],["types.pluginmousedownevent",{"_index":565,"name":{},"parent":{"661":{},"662":{},"663":{},"664":{}}}],["types.pluginmouseupevent",{"_index":568,"name":{},"parent":{"666":{},"667":{},"668":{},"669":{},"670":{}}}],["types.pluginmouseupeventdata",{"_index":597,"name":{},"parent":{"737":{}}}],["types.pluginscrollevent",{"_index":572,"name":{},"parent":{"677":{},"678":{},"679":{},"680":{},"681":{}}}],["types.pluginscrolleventdata",{"_index":595,"name":{},"parent":{"735":{}}}],["types.pluginwithstate",{"_index":1029,"name":{},"parent":{"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{}}}],["types.positiontype",{"_index":307,"name":{},"parent":{"294":{},"295":{},"296":{},"297":{}}}],["types.queryscope",{"_index":312,"name":{},"parent":{"299":{},"300":{},"301":{}}}],["types.quotefeaturesettings",{"_index":1145,"name":{},"parent":{"1617":{},"1618":{}}}],["types.rect",{"_index":781,"name":{},"parent":{"1015":{},"1016":{},"1017":{},"1018":{}}}],["types.region",{"_index":785,"name":{},"parent":{"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{}}}],["types.regionbase",{"_index":792,"name":{},"parent":{"1027":{},"1028":{},"1029":{},"1030":{}}}],["types.regiontype",{"_index":317,"name":{},"parent":{"303":{}}}],["types.restoreundosnapshot",{"_index":1076,"name":{},"parent":{"1502":{}}}],["types.sanitizehtmloptions",{"_index":858,"name":{},"parent":{"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{}}}],["types.select",{"_index":1077,"name":{},"parent":{"1504":{}}}],["types.selectable",{"_index":2046,"name":{},"parent":{"3322":{}}}],["types.selectimage",{"_index":1084,"name":{},"parent":{"1518":{}}}],["types.selectionchangedevent",{"_index":628,"name":{},"parent":{"786":{},"787":{},"788":{},"789":{}}}],["types.selectionchangedeventdata",{"_index":630,"name":{},"parent":{"791":{}}}],["types.selectionpath",{"_index":794,"name":{},"parent":{"1032":{},"1033":{}}}],["types.selectionrangeexbase",{"_index":1219,"name":{},"parent":{"1705":{},"1706":{},"1707":{}}}],["types.selectionrangetypes",{"_index":416,"name":{},"parent":{"400":{},"401":{},"402":{}}}],["types.selectrange",{"_index":1078,"name":{},"parent":{"1506":{}}}],["types.selecttable",{"_index":1083,"name":{},"parent":{"1516":{}}}],["types.setcontent",{"_index":1079,"name":{},"parent":{"1508":{}}}],["types.shortcutfeaturesettings",{"_index":1147,"name":{},"parent":{"1620":{}}}],["types.sizeformat",{"_index":1929,"name":{},"parent":{"3121":{}}}],["types.sizeformat.__type",{"_index":1930,"name":{},"parent":{"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{}}}],["types.sizetransformer",{"_index":1249,"name":{},"parent":{"1749":{}}}],["types.snapshot",{"_index":815,"name":{},"parent":{"1060":{},"1061":{},"1062":{},"1063":{}}}],["types.snapshots",{"_index":796,"name":{},"parent":{"1035":{},"1036":{},"1037":{},"1038":{},"1039":{}}}],["types.spacingformat",{"_index":1912,"name":{},"parent":{"3106":{}}}],["types.spacingformat.__type",{"_index":1914,"name":{},"parent":{"3107":{}}}],["types.strikeformat",{"_index":1851,"name":{},"parent":{"3048":{}}}],["types.strikeformat.__type",{"_index":1852,"name":{},"parent":{"3049":{}}}],["types.stringdefinition",{"_index":1256,"name":{},"parent":{"1756":{},"1757":{},"1758":{},"1759":{}}}],["types.structurednodefeaturesettings",{"_index":1149,"name":{},"parent":{"1622":{}}}],["types.stylebasedformatstate",{"_index":713,"name":{},"parent":{"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{}}}],["types.superorsubscriptformat",{"_index":1854,"name":{},"parent":{"3051":{}}}],["types.superorsubscriptformat.__type",{"_index":1856,"name":{},"parent":{"3052":{}}}],["types.switchshadowedit",{"_index":1080,"name":{},"parent":{"1510":{}}}],["types.tableborderformat",{"_index":382,"name":{},"parent":{"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{},"372":{},"373":{}}}],["types.tablecellmetadataformat",{"_index":835,"name":{},"parent":{"1083":{}}}],["types.tablecellmetadataformat.__type",{"_index":837,"name":{},"parent":{"1084":{},"1085":{}}}],["types.tablecontentmetadata",{"_index":807,"name":{},"parent":{"1049":{},"1050":{},"1051":{},"1052":{},"1053":{}}}],["types.tablefeaturesettings",{"_index":1151,"name":{},"parent":{"1624":{},"1625":{},"1626":{},"1627":{}}}],["types.tableformat",{"_index":822,"name":{},"parent":{"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{}}}],["types.tablelayoutformat",{"_index":1916,"name":{},"parent":{"3109":{}}}],["types.tablelayoutformat.__type",{"_index":1917,"name":{},"parent":{"3110":{}}}],["types.tablemetadataformat",{"_index":1949,"name":{},"parent":{"3143":{}}}],["types.tablemetadataformat.__type",{"_index":1950,"name":{},"parent":{"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{}}}],["types.tableoperation",{"_index":320,"name":{},"parent":{"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{}}}],["types.tableselection",{"_index":839,"name":{},"parent":{"1087":{},"1088":{}}}],["types.tableselectionrange",{"_index":1224,"name":{},"parent":{"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{}}}],["types.targetwindow",{"_index":945,"name":{},"parent":{"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{},"1256":{},"1257":{},"1258":{},"1259":{},"1260":{},"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{}}}],["types.targetwindowbase",{"_index":861,"name":{},"parent":{"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{}}}],["types.textalignformat",{"_index":1900,"name":{},"parent":{"3094":{}}}],["types.textalignformat.__type",{"_index":1901,"name":{},"parent":{"3095":{}}}],["types.textcolorformat",{"_index":1858,"name":{},"parent":{"3054":{}}}],["types.textcolorformat.__type",{"_index":1859,"name":{},"parent":{"3055":{}}}],["types.textfeaturesettings",{"_index":1153,"name":{},"parent":{"1629":{},"1630":{},"1631":{}}}],["types.transformcolor",{"_index":1081,"name":{},"parent":{"1512":{}}}],["types.triggerevent",{"_index":1082,"name":{},"parent":{"1514":{}}}],["types.trustedhtmlhandler",{"_index":1248,"name":{},"parent":{"1747":{}}}],["types.underlineformat",{"_index":1861,"name":{},"parent":{"3057":{}}}],["types.underlineformat.__type",{"_index":1862,"name":{},"parent":{"3058":{}}}],["types.undopluginstate",{"_index":76,"name":{},"parent":{"69":{},"70":{},"71":{},"72":{},"73":{}}}],["types.undosnapshotsservice",{"_index":1164,"name":{},"parent":{"1642":{},"1643":{},"1644":{},"1645":{},"1646":{}}}],["types.vcell",{"_index":1191,"name":{},"parent":{"1679":{},"1680":{},"1681":{},"1682":{},"1683":{}}}],["types.verticalalignformat",{"_index":1868,"name":{},"parent":{"3063":{}}}],["types.verticalalignformat.__type",{"_index":1869,"name":{},"parent":{"3064":{}}}],["types.whitespaceformat",{"_index":1903,"name":{},"parent":{"3097":{}}}],["types.whitespaceformat.__type",{"_index":1904,"name":{},"parent":{"3098":{}}}],["types.wordbreakformat",{"_index":1871,"name":{},"parent":{"3066":{}}}],["types.wordbreakformat.__type",{"_index":1872,"name":{},"parent":{"3067":{}}}],["types.zoomchangedevent",{"_index":620,"name":{},"parent":{"771":{},"772":{},"773":{},"774":{},"775":{}}}],["types.zoomchangedeventdata",{"_index":623,"name":{},"parent":{"777":{},"778":{}}}],["u",{"_index":164,"name":{"154":{},"2015":{}},"parent":{}}],["uiutilities",{"_index":1630,"name":{"2724":{}},"parent":{}}],["underline",{"_index":129,"name":{"120":{},"860":{},"1911":{},"2839":{},"3021":{},"3058":{}},"parent":{}}],["underlinebuttonstringkey",{"_index":1697,"name":{"2871":{}},"parent":{}}],["underlineformat",{"_index":1860,"name":{"3056":{}},"parent":{}}],["undo",{"_index":130,"name":{"121":{},"1332":{},"1419":{},"1449":{},"1912":{},"2463":{},"2529":{},"2865":{},"3622":{},"3704":{},"3881":{}},"parent":{}}],["undobuttonstringkey",{"_index":1725,"name":{"2899":{}},"parent":{}}],["undometadatasnapshotservice",{"_index":1088,"name":{"1523":{},"2748":{},"3745":{}},"parent":{}}],["undopluginstate",{"_index":74,"name":{"68":{}},"parent":{}}],["undosnapshotservice",{"_index":1087,"name":{"1522":{},"2747":{},"3744":{}},"parent":{}}],["undosnapshotsservice",{"_index":1162,"name":{"1641":{}},"parent":{}}],["unfilledarrow",{"_index":449,"name":{"433":{},"1805":{}},"parent":{}}],["unknowntagreplacement",{"_index":855,"name":{"1103":{},"1117":{}},"parent":{}}],["unlink",{"_index":131,"name":{"122":{},"1913":{}},"parent":{}}],["unlinkwhenbackspaceafterlink",{"_index":1116,"name":{"1565":{},"1586":{}},"parent":{}}],["unlocalizedlabel",{"_index":1766,"name":{"2947":{}},"parent":{}}],["unlocalizedtext",{"_index":1664,"name":{"2814":{},"2915":{}},"parent":{}}],["unordered",{"_index":305,"name":{"292":{},"2056":{}},"parent":{}}],["unorderedstyletype",{"_index":1955,"name":{"3159":{}},"parent":{}}],["unquotewhenbackspaceonemptyfirstline",{"_index":1110,"name":{"1557":{},"1617":{}},"parent":{}}],["unquotewhenenteronemptyline",{"_index":1111,"name":{"1558":{},"1618":{}},"parent":{}}],["unwrap",{"_index":1401,"name":{"2271":{}},"parent":{}}],["unwrapblock",{"_index":2187,"name":{"3518":{}},"parent":{}}],["up",{"_index":156,"name":{"145":{},"2006":{}},"parent":{}}],["updatecontentplugin",{"_index":1649,"name":{"2775":{}},"parent":{}}],["updatecursor",{"_index":743,"name":{"973":{},"979":{},"986":{}},"parent":{}}],["updateentitystate",{"_index":252,"name":{"240":{},"1939":{}},"parent":{}}],["updateimagemetadata",{"_index":2295,"name":{"3951":{}},"parent":{}}],["updatelistmetadata",{"_index":2154,"name":{"3486":{}},"parent":{}}],["updatemetadata",{"_index":2152,"name":{"3484":{}},"parent":{}}],["updatemode",{"_index":1643,"name":{"2768":{}},"parent":{}}],["updatereplacements",{"_index":1590,"name":{"2629":{}},"parent":{}}],["updatetablecellmetadata",{"_index":2296,"name":{"3952":{}},"parent":{}}],["updatetablemetadata",{"_index":2297,"name":{"3953":{}},"parent":{}}],["updownintable",{"_index":1113,"name":{"1560":{},"1625":{}},"parent":{}}],["upperalpha",{"_index":429,"name":{"413":{},"2076":{}},"parent":{}}],["upperalphadash",{"_index":432,"name":{"416":{},"2079":{}},"parent":{}}],["upperalphadoubleparenthesis",{"_index":431,"name":{"415":{},"2078":{}},"parent":{}}],["upperalphaparenthesis",{"_index":430,"name":{"414":{},"2077":{}},"parent":{}}],["uppercase",{"_index":299,"name":{"287":{},"1813":{}},"parent":{}}],["upperroman",{"_index":437,"name":{"421":{},"2084":{}},"parent":{}}],["upperromandash",{"_index":440,"name":{"424":{},"2087":{}},"parent":{}}],["upperromandoubleparenthesis",{"_index":439,"name":{"423":{},"2086":{}},"parent":{}}],["upperromanparenthesis",{"_index":438,"name":{"422":{},"2085":{}},"parent":{}}],["url",{"_index":33,"name":{"31":{}},"parent":{}}],["useborderbox",{"_index":1865,"name":{"3061":{}},"parent":{}}],["utils",{"_index":9,"name":{"6":{}},"parent":{"2719":{}}}],["validate",{"_index":1524,"name":{"2420":{}},"parent":{}}],["validator",{"_index":1273,"name":{"1786":{}},"parent":{}}],["valignoverride",{"_index":838,"name":{"1085":{}},"parent":{}}],["value",{"_index":664,"name":{"844":{},"1756":{},"1761":{},"1768":{}},"parent":{}}],["variablebaseddarkcolor",{"_index":270,"name":{"259":{},"1958":{}},"parent":{}}],["vcell",{"_index":1189,"name":{"1678":{}},"parent":{}}],["verticalalign",{"_index":833,"name":{"1081":{},"3022":{},"3064":{},"3155":{}},"parent":{}}],["verticalalignformat",{"_index":1867,"name":{"3062":{}},"parent":{}}],["verticalbordercolor",{"_index":824,"name":{"1071":{},"3146":{}},"parent":{}}],["vlist",{"_index":1436,"name":{"2310":{}},"parent":{}}],["vlistchain",{"_index":1464,"name":{"2346":{}},"parent":{}}],["vlistitem",{"_index":1449,"name":{"2326":{}},"parent":{}}],["vtable",{"_index":1420,"name":{"2290":{}},"parent":{}}],["waccomponents",{"_index":378,"name":{"361":{},"2050":{}},"parent":{}}],["watermark",{"_index":1620,"name":{"2701":{}},"parent":{}}],["whitespace",{"_index":1825,"name":{"3023":{},"3098":{}},"parent":{}}],["whitespaceformat",{"_index":1902,"name":{"3096":{}},"parent":{}}],["width",{"_index":1194,"name":{"1682":{},"3122":{},"3573":{}},"parent":{}}],["widthpx",{"_index":1958,"name":{"3162":{}},"parent":{}}],["widths",{"_index":1986,"name":{"3187":{}},"parent":{}}],["willhandleeventexclusively",{"_index":662,"name":{"839":{},"1401":{},"1413":{},"2693":{},"2735":{},"2784":{},"2806":{}},"parent":{}}],["wordbreak",{"_index":1826,"name":{"3024":{},"3067":{}},"parent":{}}],["wordbreakformat",{"_index":1870,"name":{"3065":{}},"parent":{}}],["worddesktop",{"_index":372,"name":{"356":{},"2045":{}},"parent":{}}],["wrap",{"_index":1402,"name":{"2272":{}},"parent":{}}],["wrapper",{"_index":679,"name":{"864":{},"3211":{}},"parent":{}}],["wrapperdisplay",{"_index":2258,"name":{"3796":{}},"parent":{}}],["writeback",{"_index":1427,"name":{"2298":{},"2316":{},"2344":{}},"parent":{}}],["x",{"_index":841,"name":{"1090":{}},"parent":{}}],["xmldocument",{"_index":937,"name":{"1200":{},"1294":{}},"parent":{}}],["y",{"_index":165,"name":{"155":{},"1091":{},"2016":{}},"parent":{}}],["z",{"_index":166,"name":{"156":{},"2017":{}},"parent":{}}],["zerofontsize",{"_index":2010,"name":{"3230":{}},"parent":{}}],["zoomchanged",{"_index":411,"name":{"396":{},"2116":{}},"parent":{}}],["zoomchangedevent",{"_index":618,"name":{"770":{}},"parent":{}}],["zoomchangedeventdata",{"_index":622,"name":{"776":{}},"parent":{}}],["zoomscale",{"_index":682,"name":{"868":{},"1442":{},"1538":{},"2763":{},"3371":{},"3397":{},"3417":{},"3532":{},"3615":{},"3760":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html b/docs/classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html index d31bf709f7e..8ae33646ce1 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodelcopypasteplugin.html @@ -121,7 +121,7 @@

constructor

  • @@ -153,7 +153,7 @@

    dispose

    @@ -176,7 +176,7 @@

    getName

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

    getState

    @@ -222,7 +222,7 @@

    initialize

    diff --git a/docs/classes/roosterjs_content_model_editor.contentmodeleditor.html b/docs/classes/roosterjs_content_model_editor.contentmodeleditor.html index 904f94da727..b429db24e44 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodeleditor.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodeleditor.html @@ -192,7 +192,7 @@

    constructor

    @@ -234,7 +234,7 @@

    addContentEditFeature

    Implementation of IContentModelEditor.addContentEditFeature

    Inherited from EditorBase.addContentEditFeature

    @@ -267,7 +267,7 @@

    addDomEventHandler

    Implementation of IContentModelEditor.addDomEventHandler

    Inherited from EditorBase.addDomEventHandler

    @@ -314,7 +314,7 @@

    addUndoSnapshot

    Implementation of IContentModelEditor.addUndoSnapshot

    Inherited from EditorBase.addUndoSnapshot

    @@ -386,7 +386,7 @@

    cacheContentModel

    @@ -418,7 +418,7 @@

    collapseNodes

    Implementation of IContentModelEditor.collapseNodes

    Inherited from EditorBase.collapseNodes

    @@ -468,7 +468,7 @@

    contains

    Implementation of IContentModelEditor.contains

    Inherited from EditorBase.contains

    @@ -498,7 +498,7 @@

    createContentModel

    @@ -534,7 +534,7 @@

    deleteNode

    Implementation of IContentModelEditor.deleteNode

    Inherited from EditorBase.deleteNode

    @@ -568,7 +568,7 @@

    deleteSelectedContent

    Implementation of IContentModelEditor.deleteSelectedContent

    Inherited from EditorBase.deleteSelectedContent

    @@ -592,7 +592,7 @@

    dispose

    Implementation of IContentModelEditor.dispose

    Inherited from EditorBase.dispose

    @@ -616,7 +616,7 @@

    ensureTypeInContainer

    Implementation of IContentModelEditor.ensureTypeInContainer

    Inherited from EditorBase.ensureTypeInContainer

    @@ -655,7 +655,7 @@

    focus

    Implementation of IContentModelEditor.focus

    Inherited from EditorBase.focus

    @@ -679,7 +679,7 @@

    getBlockElementAtNode

    Implementation of IContentModelEditor.getBlockElementAtNode

    Inherited from EditorBase.getBlockElementAtNode

    @@ -713,7 +713,7 @@

    getBlockTraverser

    Implementation of IContentModelEditor.getBlockTraverser

    Inherited from EditorBase.getBlockTraverser

    @@ -747,7 +747,7 @@

    getBodyTraverser

    Implementation of IContentModelEditor.getBodyTraverser

    Inherited from EditorBase.getBodyTraverser

    @@ -780,7 +780,7 @@

    getContent

    Implementation of IContentModelEditor.getContent

    Inherited from EditorBase.getContent

    @@ -813,7 +813,7 @@

    getContentModelDefaultFormat

    @@ -839,7 +839,7 @@

    getContentSearcherOfCursor

    Implementation of IContentModelEditor.getContentSearcherOfCursor

    Inherited from EditorBase.getContentSearcherOfCursor

    @@ -873,7 +873,7 @@

    Protected getCore

    @@ -900,7 +900,7 @@

    getCustomData

    Implementation of IContentModelEditor.getCustomData

    Inherited from EditorBase.getCustomData

    @@ -983,7 +983,7 @@

    getDarkColorHandler

    Implementation of IContentModelEditor.getDarkColorHandler

    Inherited from EditorBase.getDarkColorHandler

    @@ -1007,7 +1007,7 @@

    getDefaultFormat

    Implementation of IContentModelEditor.getDefaultFormat

    Inherited from EditorBase.getDefaultFormat

    @@ -1032,7 +1032,7 @@

    getDocument

    Implementation of IContentModelEditor.getDocument

    Inherited from EditorBase.getDocument

    @@ -1057,7 +1057,7 @@

    getEditorDomAttribute

    Implementation of IContentModelEditor.getEditorDomAttribute

    Inherited from EditorBase.getEditorDomAttribute

    @@ -1090,7 +1090,7 @@

    getElementAtCursor

    Implementation of IContentModelEditor.getElementAtCursor

    Inherited from EditorBase.getElementAtCursor

    @@ -1141,7 +1141,7 @@

    getFocusedPosition

    Implementation of IContentModelEditor.getFocusedPosition

    Inherited from EditorBase.getFocusedPosition

    @@ -1165,7 +1165,7 @@

    getPendableFormatState

    Implementation of IContentModelEditor.getPendableFormatState

    Inherited from EditorBase.getPendableFormatState

    @@ -1199,7 +1199,7 @@

    getRelativeDistanceToEditor

    Implementation of IContentModelEditor.getRelativeDistanceToEditor

    Inherited from EditorBase.getRelativeDistanceToEditor

    @@ -1243,7 +1243,7 @@

    getScrollContainer

    Implementation of IContentModelEditor.getScrollContainer

    Inherited from EditorBase.getScrollContainer

    @@ -1267,7 +1267,7 @@

    getSelectedRegions

    Implementation of IContentModelEditor.getSelectedRegions

    Inherited from EditorBase.getSelectedRegions

    @@ -1297,7 +1297,7 @@

    getSelectionPath

    Implementation of IContentModelEditor.getSelectionPath

    Inherited from EditorBase.getSelectionPath

    @@ -1323,7 +1323,7 @@

    getSelectionRange

    Implementation of IContentModelEditor.getSelectionRange

    Inherited from EditorBase.getSelectionRange

    @@ -1359,7 +1359,7 @@

    getSelectionRangeEx

    Implementation of IContentModelEditor.getSelectionRangeEx

    Inherited from EditorBase.getSelectionRangeEx

    @@ -1385,7 +1385,7 @@

    getSelectionTraverser

    Implementation of IContentModelEditor.getSelectionTraverser

    Inherited from EditorBase.getSelectionTraverser

    @@ -1416,7 +1416,7 @@

    getSizeTransformer

    Implementation of IContentModelEditor.getSizeTransformer

    Inherited from EditorBase.getSizeTransformer

    @@ -1442,7 +1442,7 @@

    getStyleBasedFormatState

    Implementation of IContentModelEditor.getStyleBasedFormatState

    Inherited from EditorBase.getStyleBasedFormatState

    @@ -1472,7 +1472,7 @@

    getTrustedHTMLHandler

    Implementation of IContentModelEditor.getTrustedHTMLHandler

    Inherited from EditorBase.getTrustedHTMLHandler

    @@ -1499,7 +1499,7 @@

    getUndoState

    Implementation of IContentModelEditor.getUndoState

    Inherited from EditorBase.getUndoState

    @@ -1523,7 +1523,7 @@

    getVisibleViewport

    Implementation of IContentModelEditor.getVisibleViewport

    Inherited from EditorBase.getVisibleViewport

    @@ -1547,7 +1547,7 @@

    getZoomScale

    Implementation of IContentModelEditor.getZoomScale

    Inherited from EditorBase.getZoomScale

    @@ -1574,7 +1574,7 @@

    hasFocus

    Implementation of IContentModelEditor.hasFocus

    Inherited from EditorBase.hasFocus

    @@ -1599,7 +1599,7 @@

    insertContent

    Implementation of IContentModelEditor.insertContent

    Inherited from EditorBase.insertContent

    @@ -1639,7 +1639,7 @@

    insertNode

    Implementation of IContentModelEditor.insertNode

    Inherited from EditorBase.insertNode

    @@ -1683,7 +1683,7 @@

    isDarkMode

    Implementation of IContentModelEditor.isDarkMode

    Inherited from EditorBase.isDarkMode

    @@ -1708,7 +1708,7 @@

    isDisposed

    Implementation of IContentModelEditor.isDisposed

    Inherited from EditorBase.isDisposed

    @@ -1733,7 +1733,7 @@

    isEmpty

    Implementation of IContentModelEditor.isEmpty

    Inherited from EditorBase.isEmpty

    @@ -1767,7 +1767,7 @@

    isFeatureEnabled

    Implementation of IContentModelEditor.isFeatureEnabled

    Inherited from EditorBase.isFeatureEnabled

    @@ -1800,7 +1800,7 @@

    isInIME

    Implementation of IContentModelEditor.isInIME

    Inherited from EditorBase.isInIME

    @@ -1825,7 +1825,7 @@

    isInShadowEdit

    Implementation of IContentModelEditor.isInShadowEdit

    Inherited from EditorBase.isInShadowEdit

    @@ -1849,7 +1849,7 @@

    isPositionAtBeginning

    Implementation of IContentModelEditor.isPositionAtBeginning

    Inherited from EditorBase.isPositionAtBeginning

    @@ -1884,7 +1884,7 @@

    paste

    Implementation of IContentModelEditor.paste

    Inherited from EditorBase.paste

    @@ -1929,7 +1929,7 @@

    queryElements

    Implementation of IContentModelEditor.queryElements

    Inherited from EditorBase.queryElements

    @@ -1984,7 +1984,7 @@

    redo

    Implementation of IContentModelEditor.redo

    Inherited from EditorBase.redo

    @@ -2008,7 +2008,7 @@

    removeContentEditFeature

    Implementation of IContentModelEditor.removeContentEditFeature

    Inherited from EditorBase.removeContentEditFeature

    @@ -2041,7 +2041,7 @@

    replaceNode

    Implementation of IContentModelEditor.replaceNode

    Inherited from EditorBase.replaceNode

    @@ -2087,7 +2087,7 @@

    runAsync

    Implementation of IContentModelEditor.runAsync

    Inherited from EditorBase.runAsync

    @@ -2151,7 +2151,7 @@

    select

    Implementation of IContentModelEditor.select

    Inherited from EditorBase.select

    @@ -2191,7 +2191,7 @@

    setContent

    Implementation of IContentModelEditor.setContent

    Inherited from EditorBase.setContent

    @@ -2229,7 +2229,7 @@

    setContentModel

    @@ -2268,7 +2268,7 @@

    setDarkModeState

    Implementation of IContentModelEditor.setDarkModeState

    Inherited from EditorBase.setDarkModeState

    @@ -2301,7 +2301,7 @@

    setEditorDomAttribute

    Implementation of IContentModelEditor.setEditorDomAttribute

    Inherited from EditorBase.setEditorDomAttribute

    @@ -2340,7 +2340,7 @@

    setZoomScale

    Implementation of IContentModelEditor.setZoomScale

    Inherited from EditorBase.setZoomScale

    @@ -2375,7 +2375,7 @@

    startShadowEdit

    Implementation of IContentModelEditor.startShadowEdit

    Inherited from EditorBase.startShadowEdit

    @@ -2404,7 +2404,7 @@

    stopShadowEdit

    Implementation of IContentModelEditor.stopShadowEdit

    Inherited from EditorBase.stopShadowEdit

    @@ -2420,7 +2420,7 @@

    Returns void

    transformToDarkColor

    Returns void

  • @@ -2461,7 +2467,7 @@

    triggerContentChangedEvent

    Implementation of IContentModelEditor.triggerContentChangedEvent

    Inherited from EditorBase.triggerContentChangedEvent

    @@ -2500,7 +2506,7 @@

    triggerPluginEvent

    Implementation of IContentModelEditor.triggerPluginEvent

    Inherited from EditorBase.triggerPluginEvent

    @@ -2554,7 +2560,7 @@

    undo

    Implementation of IContentModelEditor.undo

    Inherited from EditorBase.undo

    diff --git a/docs/classes/roosterjs_content_model_editor.contentmodeleditplugin.html b/docs/classes/roosterjs_content_model_editor.contentmodeleditplugin.html index 2b43d73e685..c5a640d9ca6 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodeleditplugin.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodeleditplugin.html @@ -144,7 +144,7 @@

    dispose

    @@ -169,7 +169,7 @@

    getName

    @@ -192,7 +192,7 @@

    initialize

    @@ -226,7 +226,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_content_model_editor.contentmodelformatplugin.html b/docs/classes/roosterjs_content_model_editor.contentmodelformatplugin.html index 65fa18763c4..735fb0057f6 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodelformatplugin.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodelformatplugin.html @@ -143,7 +143,7 @@

    dispose

    @@ -168,7 +168,7 @@

    getName

    @@ -191,7 +191,7 @@

    initialize

    @@ -225,7 +225,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_content_model_editor.contentmodelpasteplugin.html b/docs/classes/roosterjs_content_model_editor.contentmodelpasteplugin.html index 668535498a9..9c865d9ef9a 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodelpasteplugin.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodelpasteplugin.html @@ -128,7 +128,7 @@

    constructor

  • @@ -163,7 +163,7 @@

    dispose

    @@ -188,7 +188,7 @@

    getName

    @@ -211,7 +211,7 @@

    initialize

    @@ -245,7 +245,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html b/docs/classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html index 8d5786dc6c2..ca77a37b451 100644 --- a/docs/classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html +++ b/docs/classes/roosterjs_content_model_editor.contentmodeltypeincontainerplugin.html @@ -138,7 +138,7 @@

    dispose

    @@ -163,7 +163,7 @@

    getName

    @@ -186,7 +186,7 @@

    initialize

    diff --git a/docs/classes/roosterjs_editor_core.editor.html b/docs/classes/roosterjs_editor_core.editor.html index fde6e5eb234..82d7db6e174 100644 --- a/docs/classes/roosterjs_editor_core.editor.html +++ b/docs/classes/roosterjs_editor_core.editor.html @@ -181,7 +181,7 @@

    constructor

    @@ -222,7 +222,7 @@

    addContentEditFeature

    @@ -254,7 +254,7 @@

    addDomEventHandler

    Parameters

    @@ -293,7 +293,7 @@

    addUndoSnapshot

    @@ -365,7 +365,7 @@

    collapseNodes

    @@ -414,7 +414,7 @@

    contains

    Parameters

    @@ -438,7 +438,7 @@

    deleteNode

    @@ -471,7 +471,7 @@

    deleteSelectedContent

    @@ -494,7 +494,7 @@

    dispose

    @@ -517,7 +517,7 @@

    ensureTypeInContainer

    @@ -555,7 +555,7 @@

    focus

    @@ -578,7 +578,7 @@

    getBlockElementAtNode

    @@ -611,7 +611,7 @@

    getBlockTraverser

    @@ -644,7 +644,7 @@

    getBodyTraverser

    @@ -676,7 +676,7 @@

    getContent

    @@ -709,7 +709,7 @@

    getContentSearcherOfCursor

    @@ -743,7 +743,7 @@

    Protected getCore

    @@ -769,7 +769,7 @@

    getCustomData

    @@ -851,7 +851,7 @@

    getDarkColorHandler

    @@ -874,7 +874,7 @@

    getDefaultFormat

    @@ -898,7 +898,7 @@

    getDocument

    @@ -922,7 +922,7 @@

    getEditorDomAttribute

    @@ -954,7 +954,7 @@

    getElementAtCursor

    @@ -1004,7 +1004,7 @@

    getFocusedPosition

    @@ -1027,7 +1027,7 @@

    getPendableFormatState

    @@ -1060,7 +1060,7 @@

    getRelativeDistanceToEditor

    @@ -1103,7 +1103,7 @@

    getScrollContainer

    @@ -1126,7 +1126,7 @@

    getSelectedRegions

    @@ -1155,7 +1155,7 @@

    getSelectionPath

    @@ -1180,7 +1180,7 @@

    getSelectionRange

    @@ -1215,7 +1215,7 @@

    getSelectionRangeEx

    @@ -1240,7 +1240,7 @@

    getSelectionTraverser

    @@ -1270,7 +1270,7 @@

    getSizeTransformer

    @@ -1295,7 +1295,7 @@

    getStyleBasedFormatState

    @@ -1324,7 +1324,7 @@

    getTrustedHTMLHandler

    @@ -1350,7 +1350,7 @@

    getUndoState

    @@ -1373,7 +1373,7 @@

    getVisibleViewport

    @@ -1396,7 +1396,7 @@

    getZoomScale

    @@ -1422,7 +1422,7 @@

    hasFocus

    @@ -1446,7 +1446,7 @@

    insertContent

    @@ -1485,7 +1485,7 @@

    insertNode

    @@ -1528,7 +1528,7 @@

    isDarkMode

    @@ -1552,7 +1552,7 @@

    isDisposed

    @@ -1576,7 +1576,7 @@

    isEmpty

    @@ -1609,7 +1609,7 @@

    isFeatureEnabled

    @@ -1641,7 +1641,7 @@

    isInIME

    @@ -1665,7 +1665,7 @@

    isInShadowEdit

    @@ -1688,7 +1688,7 @@

    isPositionAtBeginning

    @@ -1722,7 +1722,7 @@

    paste

    @@ -1766,7 +1766,7 @@

    queryElements

    Parameters

    @@ -1814,7 +1814,7 @@

    redo

    @@ -1837,7 +1837,7 @@

    removeContentEditFeature

    @@ -1869,7 +1869,7 @@

    replaceNode

    @@ -1914,7 +1914,7 @@

    runAsync

    @@ -1977,7 +1977,7 @@

    select

    Parameters

    @@ -2010,7 +2010,7 @@

    setContent

    @@ -2048,7 +2048,7 @@

    setDarkModeState

    @@ -2080,7 +2080,7 @@

    setEditorDomAttribute

    @@ -2118,7 +2118,7 @@

    setZoomScale

    @@ -2152,7 +2152,7 @@

    startShadowEdit

    @@ -2180,7 +2180,7 @@

    stopShadowEdit

    @@ -2196,14 +2196,14 @@

    Returns void

    transformToDarkColor

    Returns void

  • @@ -2235,7 +2241,7 @@

    triggerContentChangedEvent

    @@ -2273,7 +2279,7 @@

    triggerPluginEvent

    @@ -2326,7 +2332,7 @@

    undo

    diff --git a/docs/classes/roosterjs_editor_core.editorbase.html b/docs/classes/roosterjs_editor_core.editorbase.html index 68db6e641e0..a330abe0f10 100644 --- a/docs/classes/roosterjs_editor_core.editorbase.html +++ b/docs/classes/roosterjs_editor_core.editorbase.html @@ -200,7 +200,7 @@

    constructor

  • @@ -253,7 +253,7 @@

    addContentEditFeature

    @@ -285,7 +285,7 @@

    addDomEventHandler

    @@ -331,7 +331,7 @@

    addUndoSnapshot

    @@ -403,7 +403,7 @@

    collapseNodes

    @@ -452,7 +452,7 @@

    contains

    @@ -482,7 +482,7 @@

    deleteNode

    @@ -515,7 +515,7 @@

    deleteSelectedContent

    @@ -538,7 +538,7 @@

    dispose

    @@ -561,7 +561,7 @@

    ensureTypeInContainer

  • @@ -812,7 +812,7 @@

    getCustomData

    @@ -894,7 +894,7 @@

    getDarkColorHandler

    @@ -917,7 +917,7 @@

    getDefaultFormat

    @@ -941,7 +941,7 @@

    getDocument

    @@ -965,7 +965,7 @@

    getEditorDomAttribute

    @@ -997,7 +997,7 @@

    getElementAtCursor

    @@ -1047,7 +1047,7 @@

    getFocusedPosition

    @@ -1070,7 +1070,7 @@

    getPendableFormatState

    @@ -1103,7 +1103,7 @@

    getRelativeDistanceToEditor

    @@ -1146,7 +1146,7 @@

    getScrollContainer

    @@ -1169,7 +1169,7 @@

    getSelectedRegions

    @@ -1198,7 +1198,7 @@

    getSelectionPath

    @@ -1223,7 +1223,7 @@

    getSelectionRange

    @@ -1258,7 +1258,7 @@

    getSelectionRangeEx

    @@ -1283,7 +1283,7 @@

    getSelectionTraverser

    @@ -1313,7 +1313,7 @@

    getSizeTransformer

    @@ -1338,7 +1338,7 @@

    getStyleBasedFormatState

    @@ -1367,7 +1367,7 @@

    getTrustedHTMLHandler

    @@ -1393,7 +1393,7 @@

    getUndoState

    @@ -1416,7 +1416,7 @@

    getVisibleViewport

    @@ -1439,7 +1439,7 @@

    getZoomScale

    @@ -1465,7 +1465,7 @@

    hasFocus

    @@ -1489,7 +1489,7 @@

    insertContent

    @@ -1528,7 +1528,7 @@

    insertNode

    @@ -1571,7 +1571,7 @@

    isDarkMode

    @@ -1595,7 +1595,7 @@

    isDisposed

    @@ -1619,7 +1619,7 @@

    isEmpty

    @@ -1652,7 +1652,7 @@

    isFeatureEnabled

    @@ -1684,7 +1684,7 @@

    isInIME

    @@ -1708,7 +1708,7 @@

    isInShadowEdit

    @@ -1731,7 +1731,7 @@

    isPositionAtBeginning

    @@ -1765,7 +1765,7 @@

    paste

    @@ -1809,7 +1809,7 @@

    queryElements

    @@ -1863,7 +1863,7 @@

    redo

    @@ -1886,7 +1886,7 @@

    removeContentEditFeature

    @@ -1918,7 +1918,7 @@

    replaceNode

    @@ -1963,7 +1963,7 @@

    runAsync

    @@ -2026,7 +2026,7 @@

    select

    @@ -2065,7 +2065,7 @@

    setContent

    @@ -2103,7 +2103,7 @@

    setDarkModeState

    @@ -2135,7 +2135,7 @@

    setEditorDomAttribute

    @@ -2173,7 +2173,7 @@

    setZoomScale

    @@ -2207,7 +2207,7 @@

    startShadowEdit

    @@ -2235,7 +2235,7 @@

    stopShadowEdit

    @@ -2251,14 +2251,14 @@

    Returns void

    transformToDarkColor

    Returns void

  • @@ -2290,7 +2296,7 @@

    triggerContentChangedEvent

    @@ -2328,7 +2334,7 @@

    triggerPluginEvent

    @@ -2381,7 +2387,7 @@

    undo

    diff --git a/docs/classes/roosterjs_editor_dom.contenttraverser.html b/docs/classes/roosterjs_editor_dom.contenttraverser.html index 6f2bcb703f0..ae89f4f671f 100644 --- a/docs/classes/roosterjs_editor_dom.contenttraverser.html +++ b/docs/classes/roosterjs_editor_dom.contenttraverser.html @@ -129,7 +129,7 @@

    currentBlockElement

    @@ -152,7 +152,7 @@

    currentInlineElement

    @@ -178,7 +178,7 @@

    getNextBlockElement

    @@ -201,7 +201,7 @@

    getNextInlineElement

    @@ -224,7 +224,7 @@

    getPreviousBlockElement

    @@ -247,7 +247,7 @@

    getPreviousInlineElement

    @@ -269,7 +269,7 @@

    Static createBlockTrav
  • @@ -316,7 +316,7 @@

    Static createBodyTrave
  • @@ -359,7 +359,7 @@

    Static createSelection
  • diff --git a/docs/classes/roosterjs_editor_dom.htmlsanitizer.html b/docs/classes/roosterjs_editor_dom.htmlsanitizer.html index 6cd2c0332dc..b49e616124b 100644 --- a/docs/classes/roosterjs_editor_dom.htmlsanitizer.html +++ b/docs/classes/roosterjs_editor_dom.htmlsanitizer.html @@ -120,7 +120,7 @@

    constructor

  • @@ -154,7 +154,7 @@

    convertGlobalCssToInlineCss

  • @@ -185,7 +185,7 @@

    exec

  • @@ -234,7 +234,7 @@

    sanitize

  • @@ -272,7 +272,7 @@

    Static convertInlineCs
  • @@ -312,7 +312,7 @@

    Static sanitizeHtml

  • diff --git a/docs/classes/roosterjs_editor_dom.imageinlineelement.html b/docs/classes/roosterjs_editor_dom.imageinlineelement.html index 6fb6b334516..74425098f89 100644 --- a/docs/classes/roosterjs_editor_dom.imageinlineelement.html +++ b/docs/classes/roosterjs_editor_dom.imageinlineelement.html @@ -126,7 +126,7 @@

    constructor

    Parameters

    @@ -156,7 +156,7 @@

    applyStyle

    @@ -206,7 +206,7 @@

    contains

    @@ -235,7 +235,7 @@

    getContainerNode

    @@ -258,7 +258,7 @@

    getEndPosition

    @@ -281,7 +281,7 @@

    getParentBlock

    Returns BlockElement

    @@ -299,7 +299,7 @@

    getStartPosition

    @@ -322,7 +322,7 @@

    getTextContent

    @@ -345,7 +345,7 @@

    isAfter

    @@ -374,7 +374,7 @@

    isTextualInlineElement

    diff --git a/docs/classes/roosterjs_editor_dom.linkinlineelement.html b/docs/classes/roosterjs_editor_dom.linkinlineelement.html index a2948607f1d..0f11e00edf4 100644 --- a/docs/classes/roosterjs_editor_dom.linkinlineelement.html +++ b/docs/classes/roosterjs_editor_dom.linkinlineelement.html @@ -126,7 +126,7 @@

    constructor

    Parameters

    @@ -156,7 +156,7 @@

    applyStyle

    @@ -206,7 +206,7 @@

    contains

    @@ -235,7 +235,7 @@

    getContainerNode

    @@ -258,7 +258,7 @@

    getEndPosition

    @@ -281,7 +281,7 @@

    getParentBlock

    Returns BlockElement

    @@ -299,7 +299,7 @@

    getStartPosition

    @@ -322,7 +322,7 @@

    getTextContent

    @@ -345,7 +345,7 @@

    isAfter

    @@ -374,7 +374,7 @@

    isTextualInlineElement

    diff --git a/docs/classes/roosterjs_editor_dom.nodeinlineelement.html b/docs/classes/roosterjs_editor_dom.nodeinlineelement.html index 5838d6a27da..b2ff7c245a2 100644 --- a/docs/classes/roosterjs_editor_dom.nodeinlineelement.html +++ b/docs/classes/roosterjs_editor_dom.nodeinlineelement.html @@ -137,7 +137,7 @@

    constructor

  • Parameters

    @@ -167,7 +167,7 @@

    applyStyle

    @@ -217,7 +217,7 @@

    contains

    @@ -246,7 +246,7 @@

    getContainerNode

    @@ -269,7 +269,7 @@

    getEndPosition

    @@ -292,7 +292,7 @@

    getParentBlock

    @@ -315,7 +315,7 @@

    getStartPosition

    @@ -338,7 +338,7 @@

    getTextContent

    @@ -361,7 +361,7 @@

    isAfter

    @@ -390,7 +390,7 @@

    isTextualInlineElement

    diff --git a/docs/classes/roosterjs_editor_dom.partialinlineelement.html b/docs/classes/roosterjs_editor_dom.partialinlineelement.html index 3e5f482af07..4fa3c6b2b90 100644 --- a/docs/classes/roosterjs_editor_dom.partialinlineelement.html +++ b/docs/classes/roosterjs_editor_dom.partialinlineelement.html @@ -138,7 +138,7 @@

    constructor

  • Parameters

    @@ -170,7 +170,7 @@

    nextInlineElement

  • @@ -192,7 +192,7 @@

    previousInlineElement

  • @@ -342,7 +342,7 @@

    getEndPosition

    @@ -365,7 +365,7 @@

    getParentBlock

    @@ -388,7 +388,7 @@

    getStartPosition

    @@ -411,7 +411,7 @@

    getTextContent

    @@ -434,7 +434,7 @@

    isAfter

    @@ -463,7 +463,7 @@

    isTextualInlineElement

    diff --git a/docs/classes/roosterjs_editor_dom.position.html b/docs/classes/roosterjs_editor_dom.position.html index c28d287d9cb..e244d9068ad 100644 --- a/docs/classes/roosterjs_editor_dom.position.html +++ b/docs/classes/roosterjs_editor_dom.position.html @@ -134,7 +134,7 @@

    constructor

  • @@ -157,7 +157,7 @@

    Returns
    @@ -193,7 +193,7 @@

    Returns
    @@ -230,7 +230,7 @@

    Readonly element

    @@ -241,7 +241,7 @@

    Readonly isAtEnd

    @@ -252,7 +252,7 @@

    Readonly node

    @@ -263,7 +263,7 @@

    Readonly offset

    @@ -281,7 +281,7 @@

    equalTo

    @@ -313,7 +313,7 @@

    isAfter

    @@ -342,7 +342,7 @@

    move

    @@ -374,7 +374,7 @@

    normalize

    @@ -397,7 +397,7 @@

    Static getEnd

  • @@ -428,7 +428,7 @@

    Static getStart

  • diff --git a/docs/classes/roosterjs_editor_dom.positioncontentsearcher.html b/docs/classes/roosterjs_editor_dom.positioncontentsearcher.html index 5960376e5f6..659d8aa4a20 100644 --- a/docs/classes/roosterjs_editor_dom.positioncontentsearcher.html +++ b/docs/classes/roosterjs_editor_dom.positioncontentsearcher.html @@ -124,7 +124,7 @@

    constructor

  • @@ -165,7 +165,7 @@

    forEachTextInlineElement

    @@ -216,7 +216,7 @@

    getInlineElementAfter

    @@ -240,7 +240,7 @@

    getInlineElementBefore

    @@ -264,7 +264,7 @@

    getNearestNonTextInlineElement

    @@ -288,7 +288,7 @@

    getRangeFromText

    @@ -327,7 +327,7 @@

    getSubStringBefore

    @@ -363,7 +363,7 @@

    getWordBefore

    diff --git a/docs/classes/roosterjs_editor_dom.vlist.html b/docs/classes/roosterjs_editor_dom.vlist.html index ca2669e2a9d..78f020b71a8 100644 --- a/docs/classes/roosterjs_editor_dom.vlist.html +++ b/docs/classes/roosterjs_editor_dom.vlist.html @@ -166,7 +166,7 @@

    constructor

  • @@ -196,7 +196,7 @@

    Readonly items

    items: VListItem[] = []
    @@ -220,7 +220,7 @@

    appendItem

  • @@ -257,7 +257,7 @@

    changeListType

  • @@ -302,7 +302,7 @@

    contains

  • @@ -333,7 +333,7 @@

    getLastItemNumber

  • @@ -356,7 +356,7 @@

    getListItemIndex

  • @@ -407,7 +407,7 @@

    getStart

  • @@ -430,7 +430,7 @@

    mergeVList

  • @@ -467,7 +467,7 @@

    setAlignment

  • @@ -511,7 +511,7 @@

    setIndentation

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

    Returns void
    @@ -602,7 +602,7 @@

    setListStyleType

  • @@ -640,7 +640,7 @@

    split

  • @@ -677,7 +677,7 @@

    writeBack

  • diff --git a/docs/classes/roosterjs_editor_dom.vlistchain.html b/docs/classes/roosterjs_editor_dom.vlistchain.html index af3543ff098..18e9d671d28 100644 --- a/docs/classes/roosterjs_editor_dom.vlistchain.html +++ b/docs/classes/roosterjs_editor_dom.vlistchain.html @@ -111,7 +111,7 @@

    canAppendAtCursor

  • @@ -142,7 +142,7 @@

    commit

  • @@ -180,7 +180,7 @@

    createVListAtBlock

  • @@ -217,7 +217,7 @@

    Static createListChain
  • diff --git a/docs/classes/roosterjs_editor_dom.vlistitem.html b/docs/classes/roosterjs_editor_dom.vlistitem.html index 27e34bb3632..bfda2a498c3 100644 --- a/docs/classes/roosterjs_editor_dom.vlistitem.html +++ b/docs/classes/roosterjs_editor_dom.vlistitem.html @@ -132,7 +132,7 @@

    constructor

  • @@ -173,7 +173,7 @@

    addNegativeMargins

  • @@ -195,7 +195,7 @@

    applyListStyle

  • @@ -232,7 +232,7 @@

    canMerge

  • @@ -261,7 +261,7 @@

    changeListType

  • @@ -292,7 +292,7 @@

    contains

  • @@ -323,7 +323,7 @@

    getLevel

  • @@ -345,7 +345,7 @@

    getListType

  • @@ -367,7 +367,7 @@

    getNewListStart

  • @@ -389,7 +389,7 @@

    getNode

  • @@ -411,7 +411,7 @@

    indent

  • @@ -434,7 +434,7 @@

    isDummy

  • @@ -458,7 +458,7 @@

    isOrphanItem

  • @@ -482,7 +482,7 @@

    mergeItems

  • @@ -511,7 +511,7 @@

    outdent

  • @@ -543,7 +543,7 @@

    setIsDummy

  • @@ -574,7 +574,7 @@

    setNewListStart

  • @@ -602,7 +602,7 @@

    writeBack

  • diff --git a/docs/classes/roosterjs_editor_dom.vtable.html b/docs/classes/roosterjs_editor_dom.vtable.html index 8f208c4df9c..d3b7a13fea6 100644 --- a/docs/classes/roosterjs_editor_dom.vtable.html +++ b/docs/classes/roosterjs_editor_dom.vtable.html @@ -138,7 +138,7 @@

    constructor

  • @@ -180,7 +180,7 @@

    cells

    cells: VCell[][] = null
    @@ -195,7 +195,7 @@

    col

    col: number
    @@ -210,7 +210,7 @@

    formatInfo

    formatInfo: Required<TableFormat> = null
    @@ -225,7 +225,7 @@

    row

    row: number
    @@ -240,7 +240,7 @@

    table

    table: HTMLTableElement
    @@ -263,7 +263,7 @@

    selection

  • @@ -276,7 +276,7 @@

    Returns
    @@ -307,7 +307,7 @@

    applyFormat

  • @@ -338,7 +338,7 @@

    edit

  • @@ -369,7 +369,7 @@

    forEachCellOfCurrentColumn

  • @@ -424,7 +424,7 @@

    forEachCellOfCurrentRow

  • @@ -476,7 +476,7 @@

    getCell

  • @@ -514,7 +514,7 @@

    getCellsWithBorder

  • @@ -565,7 +565,7 @@

    getCurrentTd

  • @@ -587,7 +587,7 @@

    getTd

  • @@ -624,7 +624,7 @@

    normalizeTableCellSize

  • Parameters

    @@ -647,7 +647,7 @@

    setAlignmentToSelectedCells

  • Parameters

    @@ -685,7 +685,7 @@

    writeBack

  • diff --git a/docs/classes/roosterjs_editor_plugins.autoformat.html b/docs/classes/roosterjs_editor_plugins.autoformat.html index 3159c1e4fe2..348992a9a43 100644 --- a/docs/classes/roosterjs_editor_plugins.autoformat.html +++ b/docs/classes/roosterjs_editor_plugins.autoformat.html @@ -139,7 +139,7 @@

    dispose

    @@ -162,7 +162,7 @@

    getName

    @@ -185,7 +185,7 @@

    initialize

    @@ -217,7 +217,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.contentedit.html b/docs/classes/roosterjs_editor_plugins.contentedit.html index 1ea3dfa89c9..37b47c02a99 100644 --- a/docs/classes/roosterjs_editor_plugins.contentedit.html +++ b/docs/classes/roosterjs_editor_plugins.contentedit.html @@ -131,7 +131,7 @@

    constructor

  • @@ -172,7 +172,7 @@

    dispose

    @@ -195,7 +195,7 @@

    getName

    @@ -218,7 +218,7 @@

    initialize

    diff --git a/docs/classes/roosterjs_editor_plugins.contextmenu.html b/docs/classes/roosterjs_editor_plugins.contextmenu.html index 45ea6b2d7c8..52bd8d39746 100644 --- a/docs/classes/roosterjs_editor_plugins.contextmenu.html +++ b/docs/classes/roosterjs_editor_plugins.contextmenu.html @@ -129,7 +129,7 @@

    constructor

  • @@ -170,7 +170,7 @@

    dispose

    @@ -193,7 +193,7 @@

    getName

    @@ -216,7 +216,7 @@

    initialize

    @@ -248,7 +248,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.customreplace.html b/docs/classes/roosterjs_editor_plugins.customreplace.html index 437f1a1e389..e06bc077ad6 100644 --- a/docs/classes/roosterjs_editor_plugins.customreplace.html +++ b/docs/classes/roosterjs_editor_plugins.customreplace.html @@ -123,7 +123,7 @@

    constructor

  • @@ -158,7 +158,7 @@

    dispose

    @@ -181,7 +181,7 @@

    getName

    @@ -204,7 +204,7 @@

    initialize

    @@ -236,7 +236,7 @@

    onPluginEvent

    @@ -267,7 +267,7 @@

    updateReplacements

  • diff --git a/docs/classes/roosterjs_editor_plugins.cutpastelistchain.html b/docs/classes/roosterjs_editor_plugins.cutpastelistchain.html index 01e0a03a83c..5fc2cf8f3e2 100644 --- a/docs/classes/roosterjs_editor_plugins.cutpastelistchain.html +++ b/docs/classes/roosterjs_editor_plugins.cutpastelistchain.html @@ -139,7 +139,7 @@

    dispose

    @@ -162,7 +162,7 @@

    getName

    @@ -185,7 +185,7 @@

    initialize

    @@ -217,7 +217,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.hyperlink.html b/docs/classes/roosterjs_editor_plugins.hyperlink.html index 424078461f1..bb45fa4d492 100644 --- a/docs/classes/roosterjs_editor_plugins.hyperlink.html +++ b/docs/classes/roosterjs_editor_plugins.hyperlink.html @@ -123,7 +123,7 @@

    constructor

  • @@ -213,7 +213,7 @@

    dispose

    @@ -236,7 +236,7 @@

    getName

    @@ -259,7 +259,7 @@

    initialize

    @@ -290,7 +290,7 @@

    Protected onBlur

  • Parameters

    @@ -313,7 +313,7 @@

    Protected onMouse

  • Parameters

    @@ -337,7 +337,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.imageedit.html b/docs/classes/roosterjs_editor_plugins.imageedit.html index 6a8cdb0c429..e355e58c77d 100644 --- a/docs/classes/roosterjs_editor_plugins.imageedit.html +++ b/docs/classes/roosterjs_editor_plugins.imageedit.html @@ -137,7 +137,7 @@

    constructor

  • @@ -262,7 +262,7 @@

    getName

    @@ -285,7 +285,7 @@

    initialize

    @@ -316,7 +316,7 @@

    isOperationAllowed

  • @@ -349,7 +349,7 @@

    onPluginEvent

    @@ -380,7 +380,7 @@

    rotateImage

  • @@ -418,7 +418,7 @@

    setEditingImage

  • @@ -447,7 +447,7 @@

    Returns void
    diff --git a/docs/classes/roosterjs_editor_plugins.imageresize.html b/docs/classes/roosterjs_editor_plugins.imageresize.html index 02b36b586df..aab75947ebf 100644 --- a/docs/classes/roosterjs_editor_plugins.imageresize.html +++ b/docs/classes/roosterjs_editor_plugins.imageresize.html @@ -136,7 +136,7 @@

    constructor

    @@ -192,7 +192,7 @@

    Protected editor

    @@ -203,7 +203,7 @@

    Protected options

    @@ -221,7 +221,7 @@

    dispose

    @@ -244,7 +244,7 @@

    flipImage

    @@ -281,7 +281,7 @@

    getName

    @@ -303,7 +303,7 @@

    hideResizeHandle

  • @@ -333,7 +333,7 @@

    initialize

    @@ -365,7 +365,7 @@

    isOperationAllowed

    @@ -398,7 +398,7 @@

    onPluginEvent

    @@ -430,7 +430,7 @@

    rotateImage

    @@ -469,7 +469,7 @@

    setEditingImage

    @@ -499,7 +499,7 @@

    Returns void

    Inherited from ImageEdit.setEditingImage

    @@ -537,7 +537,7 @@

    showResizeHandle

  • diff --git a/docs/classes/roosterjs_editor_plugins.paste.html b/docs/classes/roosterjs_editor_plugins.paste.html index 231b3af42ed..9d8c5cbbde4 100644 --- a/docs/classes/roosterjs_editor_plugins.paste.html +++ b/docs/classes/roosterjs_editor_plugins.paste.html @@ -126,7 +126,7 @@

    constructor

  • @@ -168,7 +168,7 @@

    dispose

    @@ -191,7 +191,7 @@

    getName

    @@ -214,7 +214,7 @@

    initialize

    @@ -246,7 +246,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.pickerplugin.html b/docs/classes/roosterjs_editor_plugins.pickerplugin.html index aece6f4463e..fcfc640a973 100644 --- a/docs/classes/roosterjs_editor_plugins.pickerplugin.html +++ b/docs/classes/roosterjs_editor_plugins.pickerplugin.html @@ -143,7 +143,7 @@

    constructor

  • Type parameters

    @@ -189,7 +189,7 @@

    dispose

    @@ -212,7 +212,7 @@

    getName

    @@ -235,7 +235,7 @@

    initialize

    @@ -267,7 +267,7 @@

    onPluginEvent

    @@ -299,7 +299,7 @@

    willHandleEventExclusively

    diff --git a/docs/classes/roosterjs_editor_plugins.tablecellselection.html b/docs/classes/roosterjs_editor_plugins.tablecellselection.html index 03434289bf1..c33e419e932 100644 --- a/docs/classes/roosterjs_editor_plugins.tablecellselection.html +++ b/docs/classes/roosterjs_editor_plugins.tablecellselection.html @@ -121,7 +121,7 @@

    constructor

  • Returns TableCellSelection

    @@ -142,7 +142,7 @@

    dispose

    @@ -165,7 +165,7 @@

    getName

    @@ -188,7 +188,7 @@

    initialize

    @@ -220,7 +220,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.tableresize.html b/docs/classes/roosterjs_editor_plugins.tableresize.html index 106b335a914..51a7ca2a6e9 100644 --- a/docs/classes/roosterjs_editor_plugins.tableresize.html +++ b/docs/classes/roosterjs_editor_plugins.tableresize.html @@ -121,7 +121,7 @@

    constructor

  • @@ -187,7 +187,7 @@

    dispose

    @@ -210,7 +210,7 @@

    getName

    @@ -233,7 +233,7 @@

    initialize

    @@ -265,7 +265,7 @@

    onPluginEvent

    diff --git a/docs/classes/roosterjs_editor_plugins.watermark.html b/docs/classes/roosterjs_editor_plugins.watermark.html index 2c76d09282a..0508e210626 100644 --- a/docs/classes/roosterjs_editor_plugins.watermark.html +++ b/docs/classes/roosterjs_editor_plugins.watermark.html @@ -121,7 +121,7 @@

    constructor

  • @@ -162,7 +162,7 @@

    dispose

    @@ -185,7 +185,7 @@

    getName

    @@ -208,7 +208,7 @@

    initialize

    @@ -240,7 +240,7 @@

    onPluginEvent

    diff --git a/docs/enums/roosterjs_editor_types.alignment.html b/docs/enums/roosterjs_editor_types.alignment.html index ae4ad48f321..ebbfa41789a 100644 --- a/docs/enums/roosterjs_editor_types.alignment.html +++ b/docs/enums/roosterjs_editor_types.alignment.html @@ -96,7 +96,7 @@

    Center

    Center: = 1
    @@ -111,7 +111,7 @@

    Left

    Left: = 0
    @@ -126,7 +126,7 @@

    Right

    Right: = 2
    diff --git a/docs/enums/roosterjs_editor_types.bulletlisttype.html b/docs/enums/roosterjs_editor_types.bulletlisttype.html index a66e56682af..abe5f5a9e60 100644 --- a/docs/enums/roosterjs_editor_types.bulletlisttype.html +++ b/docs/enums/roosterjs_editor_types.bulletlisttype.html @@ -104,7 +104,7 @@

    Circle

    Circle: = 9
    @@ -119,7 +119,7 @@

    Dash

    Dash: = 2
    @@ -134,7 +134,7 @@

    Disc

    Disc: = 1
    @@ -149,7 +149,7 @@

    DoubleLongArrow

    DoubleLongArrow: = 8
    @@ -164,7 +164,7 @@

    Hyphen

    Hyphen: = 7
    @@ -179,7 +179,7 @@

    LongArrow

    LongArrow: = 5
    @@ -194,7 +194,7 @@

    Max

    Max: = 9
    @@ -209,7 +209,7 @@

    Min

    Min: = 1
    @@ -224,7 +224,7 @@

    ShortArrow

    ShortArrow: = 4
    @@ -239,7 +239,7 @@

    Square

    Square: = 3
    @@ -254,7 +254,7 @@

    UnfilledArrow

    UnfilledArrow: = 6
    diff --git a/docs/enums/roosterjs_editor_types.capitalization.html b/docs/enums/roosterjs_editor_types.capitalization.html index b7ef47f53e2..582e62cf8b1 100644 --- a/docs/enums/roosterjs_editor_types.capitalization.html +++ b/docs/enums/roosterjs_editor_types.capitalization.html @@ -98,7 +98,7 @@

    CapitalizeEachWord

    CapitalizeEachWord: = "capitalize"
    @@ -113,7 +113,7 @@

    Lowercase

    Lowercase: = "lowercase"
    @@ -128,7 +128,7 @@

    Sentence

    Sentence: = "sentence"
    @@ -144,7 +144,7 @@

    Uppercase

    Uppercase: = "uppercase"
    diff --git a/docs/enums/roosterjs_editor_types.changesource.html b/docs/enums/roosterjs_editor_types.changesource.html index e24fb5fe3ad..a6b8a585fba 100644 --- a/docs/enums/roosterjs_editor_types.changesource.html +++ b/docs/enums/roosterjs_editor_types.changesource.html @@ -107,7 +107,7 @@

    AutoLink

    AutoLink: = "AutoLink"
    @@ -122,7 +122,7 @@

    CreateLink

    CreateLink: = "CreateLink"
    @@ -137,7 +137,7 @@

    Cut

    Cut: = "Cut"
    @@ -152,7 +152,7 @@

    Drop

    Drop: = "Drop"
    @@ -167,7 +167,7 @@

    Format

    Format: = "Format"
    @@ -182,7 +182,7 @@

    ImageResize

    ImageResize: = "ImageResize"
    @@ -197,7 +197,7 @@

    InsertEntity

    InsertEntity: = "InsertEntity"
    @@ -212,7 +212,7 @@

    Keyboard

    Keyboard: = "Keyboard"
    @@ -228,7 +228,7 @@

    ListChain

    ListChain: = "ListChain"
    @@ -243,7 +243,7 @@

    Paste

    Paste: = "Paste"
    @@ -258,7 +258,7 @@

    SetContent

    SetContent: = "SetContent"
    @@ -273,7 +273,7 @@

    SwitchToDarkMode

    SwitchToDarkMode: = "SwitchToDarkMode"
    @@ -288,7 +288,7 @@

    SwitchToLightMode

    SwitchToLightMode: = "SwitchToLightMode"
    diff --git a/docs/enums/roosterjs_editor_types.clearformatmode.html b/docs/enums/roosterjs_editor_types.clearformatmode.html index 4ff04ad6812..107e754b290 100644 --- a/docs/enums/roosterjs_editor_types.clearformatmode.html +++ b/docs/enums/roosterjs_editor_types.clearformatmode.html @@ -96,7 +96,7 @@

    AutoDetect

    AutoDetect: = 2
    @@ -111,7 +111,7 @@

    Block

    Block: = 1
    @@ -126,7 +126,7 @@

    Inline

    Inline: = 0
    diff --git a/docs/enums/roosterjs_editor_types.colortransformdirection.html b/docs/enums/roosterjs_editor_types.colortransformdirection.html index 143595b10ce..f3289aa3a65 100644 --- a/docs/enums/roosterjs_editor_types.colortransformdirection.html +++ b/docs/enums/roosterjs_editor_types.colortransformdirection.html @@ -95,7 +95,7 @@

    DarkToLight

    DarkToLight: = 1
    @@ -110,7 +110,7 @@

    LightToDark

    LightToDark: = 0
    diff --git a/docs/enums/roosterjs_editor_types.contentposition.html b/docs/enums/roosterjs_editor_types.contentposition.html index 5fdba99d509..ee921dcf2ec 100644 --- a/docs/enums/roosterjs_editor_types.contentposition.html +++ b/docs/enums/roosterjs_editor_types.contentposition.html @@ -101,7 +101,7 @@

    Begin

    Begin: = 0
    @@ -116,7 +116,7 @@

    DomEnd

    DomEnd: = 2
    @@ -131,7 +131,7 @@

    End

    End: = 1
    @@ -146,7 +146,7 @@

    Outside

    Outside: = 4
    @@ -161,7 +161,7 @@

    Range

    Range: = 5
    @@ -176,7 +176,7 @@

    SelectionStart

    SelectionStart: = 3
    diff --git a/docs/enums/roosterjs_editor_types.contenttype.html b/docs/enums/roosterjs_editor_types.contenttype.html index 91999f602b2..840a9ef3921 100644 --- a/docs/enums/roosterjs_editor_types.contenttype.html +++ b/docs/enums/roosterjs_editor_types.contenttype.html @@ -95,7 +95,7 @@

    HTML

    HTML: = "text/html"
    @@ -110,7 +110,7 @@

    PlainText

    PlainText: = "text/plain"
    diff --git a/docs/enums/roosterjs_editor_types.contenttypeprefix.html b/docs/enums/roosterjs_editor_types.contenttypeprefix.html index 9db569ae7d5..59e714fc7a9 100644 --- a/docs/enums/roosterjs_editor_types.contenttypeprefix.html +++ b/docs/enums/roosterjs_editor_types.contenttypeprefix.html @@ -95,7 +95,7 @@

    Image

    Image: = "image/"
    @@ -110,7 +110,7 @@

    Text

    Text: = "text/"
    diff --git a/docs/enums/roosterjs_editor_types.darkmodedatasetnames.html b/docs/enums/roosterjs_editor_types.darkmodedatasetnames.html index a6f7c1319cb..7aa53665667 100644 --- a/docs/enums/roosterjs_editor_types.darkmodedatasetnames.html +++ b/docs/enums/roosterjs_editor_types.darkmodedatasetnames.html @@ -99,7 +99,7 @@

    OriginalAttributeBackgroundColor

    OriginalAttributeBackgroundColor: = "ogab"
    @@ -114,7 +114,7 @@

    OriginalAttributeColor

    OriginalAttributeColor: = "ogac"
    @@ -129,7 +129,7 @@

    OriginalStyleBackgroundColor

    OriginalStyleBackgroundColor: = "ogsb"
    @@ -144,7 +144,7 @@

    OriginalStyleColor

    OriginalStyleColor: = "ogsc"
    diff --git a/docs/enums/roosterjs_editor_types.definitiontype.html b/docs/enums/roosterjs_editor_types.definitiontype.html index 67a25f1368b..df8f60801d4 100644 --- a/docs/enums/roosterjs_editor_types.definitiontype.html +++ b/docs/enums/roosterjs_editor_types.definitiontype.html @@ -99,7 +99,7 @@

    Array

    Array: = 3
    @@ -114,7 +114,7 @@

    Boolean

    Boolean: = 0
    @@ -129,7 +129,7 @@

    Customize

    Customize: = 5
    @@ -144,7 +144,7 @@

    Number

    Number: = 1
    @@ -159,7 +159,7 @@

    Object

    Object: = 4
    @@ -174,7 +174,7 @@

    String

    String: = 2
    diff --git a/docs/enums/roosterjs_editor_types.delimiterclasses.html b/docs/enums/roosterjs_editor_types.delimiterclasses.html index 9252db3f18d..28dedf9afa9 100644 --- a/docs/enums/roosterjs_editor_types.delimiterclasses.html +++ b/docs/enums/roosterjs_editor_types.delimiterclasses.html @@ -95,7 +95,7 @@

    DELIMITER_AFTER

    DELIMITER_AFTER: = "entityDelimiterAfter"
    @@ -110,7 +110,7 @@

    DELIMITER_BEFORE

    DELIMITER_BEFORE: = "entityDelimiterBefore"
    diff --git a/docs/enums/roosterjs_editor_types.direction.html b/docs/enums/roosterjs_editor_types.direction.html index b1ebd3671c9..d838013f004 100644 --- a/docs/enums/roosterjs_editor_types.direction.html +++ b/docs/enums/roosterjs_editor_types.direction.html @@ -95,7 +95,7 @@

    LeftToRight

    LeftToRight: = 0
    @@ -110,7 +110,7 @@

    RightToLeft

    RightToLeft: = 1
    diff --git a/docs/enums/roosterjs_editor_types.documentcommand.html b/docs/enums/roosterjs_editor_types.documentcommand.html index c20b54c54ff..f91a301e8f0 100644 --- a/docs/enums/roosterjs_editor_types.documentcommand.html +++ b/docs/enums/roosterjs_editor_types.documentcommand.html @@ -141,7 +141,7 @@

    AutoUrlDetect

    AutoUrlDetect: = "AutoUrlDetect"
    @@ -156,7 +156,7 @@

    BackColor

    BackColor: = "backColor"
    @@ -173,7 +173,7 @@

    Bold

    Bold: = "bold"
    @@ -188,7 +188,7 @@

    ClearAuthenticationCache

    ClearAuthenticationCache: = "ClearAuthenticationCache"
    @@ -203,7 +203,7 @@

    ContentReadOnly

    ContentReadOnly: = "contentReadOnly"
    @@ -219,7 +219,7 @@

    Copy

    Copy: = "copy"
    @@ -235,7 +235,7 @@

    CreateLink

    CreateLink: = "createLink"
    @@ -252,7 +252,7 @@

    Cut

    Cut: = "cut"
    @@ -268,7 +268,7 @@

    DecreaseFontSize

    DecreaseFontSize: = "decreaseFontSize"
    @@ -283,7 +283,7 @@

    DefaultParagraphSeparator

    DefaultParagraphSeparator: = "defaultParagraphSeparator"
    @@ -299,7 +299,7 @@

    Delete

    Delete: = "delete"
    @@ -314,7 +314,7 @@

    EnableInlineTableEditing

    EnableInlineTableEditing: = "enableInlineTableEditing"
    @@ -329,7 +329,7 @@

    EnableObjectResizing

    EnableObjectResizing: = "enableObjectResizing"
    @@ -344,7 +344,7 @@

    FontName

    FontName: = "fontName"
    @@ -360,7 +360,7 @@

    FontSize

    FontSize: = "fontSize"
    @@ -375,7 +375,7 @@

    ForeColor

    ForeColor: = "foreColor"
    @@ -391,7 +391,7 @@

    FormatBlock

    FormatBlock: = "formatBlock"
    @@ -409,7 +409,7 @@

    ForwardDelete

    ForwardDelete: = "forwardDelete"
    @@ -424,7 +424,7 @@

    Heading

    Heading: = "heading"
    @@ -440,7 +440,7 @@

    HiliteColor

    HiliteColor: = "hiliteColor"
    @@ -456,7 +456,7 @@

    IncreaseFontSize

    IncreaseFontSize: = "increaseFontSize"
    @@ -471,7 +471,7 @@

    Indent

    Indent: = "indent"
    @@ -487,7 +487,7 @@

    InsertBrOnReturn

    InsertBrOnReturn: = "insertBrOnReturn"
    @@ -503,7 +503,7 @@

    InsertHTML

    InsertHTML: = "insertHTML"
    @@ -519,7 +519,7 @@

    InsertHorizontalRule

    InsertHorizontalRule: = "insertHorizontalRule"
    @@ -534,7 +534,7 @@

    InsertImage

    InsertImage: = "insertImage"
    @@ -550,7 +550,7 @@

    InsertOrderedList

    InsertOrderedList: = "insertOrderedList"
    @@ -565,7 +565,7 @@

    InsertParagraph

    InsertParagraph: = "insertParagraph"
    @@ -581,7 +581,7 @@

    InsertText

    InsertText: = "insertText"
    @@ -596,7 +596,7 @@

    InsertUnorderedList

    InsertUnorderedList: = "insertUnorderedList"
    @@ -611,7 +611,7 @@

    Italic

    Italic: = "italic"
    @@ -627,7 +627,7 @@

    JustifyCenter

    JustifyCenter: = "justifyCenter"
    @@ -642,7 +642,7 @@

    JustifyFull

    JustifyFull: = "justifyFull"
    @@ -657,7 +657,7 @@

    JustifyLeft

    JustifyLeft: = "justifyLeft"
    @@ -672,7 +672,7 @@

    JustifyRight

    JustifyRight: = "justifyRight"
    @@ -687,7 +687,7 @@

    Outdent

    Outdent: = "outdent"
    @@ -702,7 +702,7 @@

    Paste

    Paste: = "paste"
    @@ -717,7 +717,7 @@

    Redo

    Redo: = "redo"
    @@ -732,7 +732,7 @@

    RemoveFormat

    RemoveFormat: = "removeFormat"
    @@ -747,7 +747,7 @@

    SelectAll

    SelectAll: = "selectAll"
    @@ -762,7 +762,7 @@

    StrikeThrough

    StrikeThrough: = "strikeThrough"
    @@ -777,7 +777,7 @@

    StyleWithCSS

    StyleWithCSS: = "styleWithCSS"
    @@ -792,7 +792,7 @@

    Subscript

    Subscript: = "subscript"
    @@ -807,7 +807,7 @@

    Superscript

    Superscript: = "superscript"
    @@ -822,7 +822,7 @@

    Underline

    Underline: = "underline"
    @@ -837,7 +837,7 @@

    Undo

    Undo: = "undo"
    @@ -852,7 +852,7 @@

    Unlink

    Unlink: = "unlink"
    diff --git a/docs/enums/roosterjs_editor_types.documentposition.html b/docs/enums/roosterjs_editor_types.documentposition.html index f0d9fdc4a5d..3af697f8c4a 100644 --- a/docs/enums/roosterjs_editor_types.documentposition.html +++ b/docs/enums/roosterjs_editor_types.documentposition.html @@ -100,7 +100,7 @@

    ContainedBy

    ContainedBy: = 16
    @@ -115,7 +115,7 @@

    Contains

    Contains: = 8
    @@ -130,7 +130,7 @@

    Disconnected

    Disconnected: = 1
    @@ -145,7 +145,7 @@

    Following

    Following: = 4
    @@ -160,7 +160,7 @@

    Preceding

    Preceding: = 2
    @@ -175,7 +175,7 @@

    Same

    Same: = 0
    diff --git a/docs/enums/roosterjs_editor_types.entityclasses.html b/docs/enums/roosterjs_editor_types.entityclasses.html index 86680ac42dc..5b96be14f21 100644 --- a/docs/enums/roosterjs_editor_types.entityclasses.html +++ b/docs/enums/roosterjs_editor_types.entityclasses.html @@ -97,7 +97,7 @@

    ENTITY_ID_PREFIX

    ENTITY_ID_PREFIX: = "_EId_"
    @@ -112,7 +112,7 @@

    ENTITY_INFO_NAME

    ENTITY_INFO_NAME: = "_Entity"
    @@ -127,7 +127,7 @@

    ENTITY_READONLY_PREFIX

    ENTITY_READONLY_PREFIX: = "_EReadonly_"
    @@ -142,7 +142,7 @@

    ENTITY_TYPE_PREFIX

    ENTITY_TYPE_PREFIX: = "_EType_"
    diff --git a/docs/enums/roosterjs_editor_types.entityoperation.html b/docs/enums/roosterjs_editor_types.entityoperation.html index 016c1916736..bbb3717be9d 100644 --- a/docs/enums/roosterjs_editor_types.entityoperation.html +++ b/docs/enums/roosterjs_editor_types.entityoperation.html @@ -105,7 +105,7 @@

    AddShadowRoot

    AddShadowRoot: = 9
    @@ -121,7 +121,7 @@

    Click

    Click: = 1
    @@ -136,7 +136,7 @@

    ContextMenu

    ContextMenu: = 2
    @@ -151,7 +151,7 @@

    Escape

    Escape: = 3
    @@ -166,7 +166,7 @@

    NewEntity

    NewEntity: = 0
    @@ -185,7 +185,7 @@

    Overwrite

    Overwrite: = 6
    @@ -202,7 +202,7 @@

    PartialOverwrite

    PartialOverwrite: = 7
    @@ -218,7 +218,7 @@

    RemoveFromEnd

    RemoveFromEnd: = 5
    @@ -233,7 +233,7 @@

    RemoveFromStart

    RemoveFromStart: = 4
    @@ -248,7 +248,7 @@

    RemoveShadowRoot

    RemoveShadowRoot: = 10
    @@ -264,7 +264,7 @@

    ReplaceTemporaryContent

    ReplaceTemporaryContent: = 8
    @@ -283,7 +283,7 @@

    UpdateEntityState

    UpdateEntityState: = 11
    diff --git a/docs/enums/roosterjs_editor_types.experimentalfeatures.html b/docs/enums/roosterjs_editor_types.experimentalfeatures.html index 9b85c7a87fc..38bd062420d 100644 --- a/docs/enums/roosterjs_editor_types.experimentalfeatures.html +++ b/docs/enums/roosterjs_editor_types.experimentalfeatures.html @@ -123,7 +123,7 @@

    AdaptiveHandlesResizer

    AdaptiveHandlesResizer: = "AdaptiveHandlesResizer"
    @@ -141,7 +141,7 @@

    AlwaysApplyDefaultFormat

    AlwaysApplyDefaultFormat: = "AlwaysApplyDefaultFormat"
    @@ -159,7 +159,7 @@

    AutoFormatList

    AutoFormatList: = "AutoFormatList"
    @@ -174,7 +174,7 @@

    AutoHyphen

    AutoHyphen: = "AutoHyphen"
    @@ -192,7 +192,7 @@

    ContentModelPaste

    ContentModelPaste: = "ContentModelPaste"
    @@ -207,7 +207,7 @@

    ConvertSingleImageBody

    ConvertSingleImageBody: = "ConvertSingleImageBody"
    @@ -225,7 +225,7 @@

    DefaultFormatInSpan

    DefaultFormatInSpan: = "DefaultFormatInSpan"
    @@ -241,7 +241,7 @@

    DefaultFormatOnContainer

    DefaultFormatOnContainer: = "DefaultFormatOnContainer"
    @@ -257,7 +257,7 @@

    DeleteTableWithBackspace

    DeleteTableWithBackspace: = "DeleteTableWithBackspace"
    @@ -272,7 +272,7 @@

    DisableListChain

    DisableListChain: = "DisableListChain"
    @@ -287,7 +287,7 @@

    EditWithContentModel

    EditWithContentModel: = "EditWithContentModel"
    @@ -305,7 +305,7 @@

    ImageCrop

    ImageCrop: = "ImageCrop"
    @@ -322,7 +322,7 @@

    ImageRotate

    ImageRotate: = "ImageRotate"
    @@ -339,7 +339,7 @@

    ImageSelection

    ImageSelection: = "ImageSelection"
    @@ -357,7 +357,7 @@

    InlineEntityReadOnlyDelimiters

    InlineEntityReadOnlyDelimiters: = "InlineEntityReadOnlyDelimiters"
    @@ -372,7 +372,7 @@

    ListChain

    ListChain: = "ListChain"
    @@ -389,7 +389,7 @@

    ListItemAlignment

    ListItemAlignment: = "ListItemAlignment"
    @@ -407,7 +407,7 @@

    MergePastedLine

    MergePastedLine: = "MergePastedLine"
    @@ -424,7 +424,7 @@

    NewBullet

    NewBullet: = "NewBullet"
    @@ -441,7 +441,7 @@

    NewIndentation

    NewIndentation: = "NewIndentation"
    @@ -458,7 +458,7 @@

    NewNumbering

    NewNumbering: = "NewNumbering"
    @@ -475,7 +475,7 @@

    NormalizeList

    NormalizeList: = "NormalizeList"
    @@ -494,7 +494,7 @@

    PasteWithLinkPreview

    PasteWithLinkPreview: = "PasteWithLinkPreview"
    @@ -511,7 +511,7 @@

    PendingStyleBasedFormat

    PendingStyleBasedFormat: = "PendingStyleBasedFormat"
    @@ -531,7 +531,7 @@

    ReusableContentModel

    ReusableContentModel: = "ReusableContentModel"
    @@ -549,7 +549,7 @@

    ReuseAllAncestorListElements

    ReuseAllAncestorListElements: = "ReuseAllAncestorListElements"
    @@ -567,7 +567,7 @@

    SingleDirectionResize

    SingleDirectionResize: = "SingleDirectionResize"
    @@ -584,7 +584,7 @@

    TabKeyTextFeatures

    TabKeyTextFeatures: = "TabKeyTextFeatures"
    @@ -599,7 +599,7 @@

    TableAlignment

    TableAlignment: = "TableAlignment"
    @@ -617,7 +617,7 @@

    VariableBasedDarkColor

    VariableBasedDarkColor: = "VariableBasedDarkColor"
    diff --git a/docs/enums/roosterjs_editor_types.fontsizechange.html b/docs/enums/roosterjs_editor_types.fontsizechange.html index af45619593b..d27afd04691 100644 --- a/docs/enums/roosterjs_editor_types.fontsizechange.html +++ b/docs/enums/roosterjs_editor_types.fontsizechange.html @@ -96,7 +96,7 @@

    Decrease

    Decrease: = 1
    @@ -111,7 +111,7 @@

    Increase

    Increase: = 0
    diff --git a/docs/enums/roosterjs_editor_types.getcontentmode.html b/docs/enums/roosterjs_editor_types.getcontentmode.html index 9ab205caf64..e793a149e5a 100644 --- a/docs/enums/roosterjs_editor_types.getcontentmode.html +++ b/docs/enums/roosterjs_editor_types.getcontentmode.html @@ -98,7 +98,7 @@

    CleanHTML

    CleanHTML: = 0
    @@ -116,7 +116,7 @@

    PlainText

    PlainText: = 3
    @@ -131,7 +131,7 @@

    PlainTextFast

    PlainTextFast: = 4
    @@ -148,7 +148,7 @@

    RawHTMLOnly

    RawHTMLOnly: = 1
    @@ -163,7 +163,7 @@

    RawHTMLWithSelection

    RawHTMLWithSelection: = 2
    diff --git a/docs/enums/roosterjs_editor_types.imageeditoperation.html b/docs/enums/roosterjs_editor_types.imageeditoperation.html index 9102d32ea3b..371e38060d9 100644 --- a/docs/enums/roosterjs_editor_types.imageeditoperation.html +++ b/docs/enums/roosterjs_editor_types.imageeditoperation.html @@ -101,7 +101,7 @@

    All

    All: = 15
    @@ -116,7 +116,7 @@

    CornerResize

    CornerResize: = 1
    @@ -131,7 +131,7 @@

    Crop

    Crop: = 8
    @@ -146,7 +146,7 @@

    None

    None: = 0
    @@ -161,7 +161,7 @@

    Resize

    Resize: = 3
    @@ -176,7 +176,7 @@

    ResizeAndRotate

    ResizeAndRotate: = 7
    @@ -191,7 +191,7 @@

    Rotate

    Rotate: = 4
    @@ -206,7 +206,7 @@

    SideResize

    SideResize: = 2
    diff --git a/docs/enums/roosterjs_editor_types.indentation.html b/docs/enums/roosterjs_editor_types.indentation.html index 12d8c1ad3fb..228830ea946 100644 --- a/docs/enums/roosterjs_editor_types.indentation.html +++ b/docs/enums/roosterjs_editor_types.indentation.html @@ -96,7 +96,7 @@

    Decrease

    Decrease: = 1
    @@ -111,7 +111,7 @@

    Increase

    Increase: = 0
    diff --git a/docs/enums/roosterjs_editor_types.keys.html b/docs/enums/roosterjs_editor_types.keys.html index 816305e84fa..f3a4a14b979 100644 --- a/docs/enums/roosterjs_editor_types.keys.html +++ b/docs/enums/roosterjs_editor_types.keys.html @@ -130,7 +130,7 @@

    ALT

    ALT: = 18
    @@ -140,7 +140,7 @@

    B

    B: = 66
    @@ -150,7 +150,7 @@

    BACKSPACE

    BACKSPACE: = 8
    @@ -160,7 +160,7 @@

    COMMA

    COMMA: = 188
    @@ -170,7 +170,7 @@

    CONTENTCHANGED

    CONTENTCHANGED: = 257
    @@ -185,7 +185,7 @@

    CTRL_LEFT

    CTRL_LEFT: = 17
    @@ -195,7 +195,7 @@

    Ctrl

    Ctrl: = 4096
    @@ -205,7 +205,7 @@

    DASH_UNDERSCORE

    DASH_UNDERSCORE: = 189
    @@ -215,7 +215,7 @@

    DELETE

    DELETE: = 46
    @@ -225,7 +225,7 @@

    DOWN

    DOWN: = 40
    @@ -235,7 +235,7 @@

    EIGHT_ASTERISK

    EIGHT_ASTERISK: = 56
    @@ -245,7 +245,7 @@

    EIGHT_ASTIRISK

    EIGHT_ASTIRISK: = 56
    @@ -262,7 +262,7 @@

    END

    END: = 35
    @@ -272,7 +272,7 @@

    ENTER

    ENTER: = 13
    @@ -282,7 +282,7 @@

    ESCAPE

    ESCAPE: = 27
    @@ -292,7 +292,7 @@

    FORWARDSLASH

    FORWARDSLASH: = 191
    @@ -309,7 +309,7 @@

    FORWARD_SLASH

    FORWARD_SLASH: = 191
    @@ -319,7 +319,7 @@

    GRAVE_TILDE

    GRAVE_TILDE: = 192
    @@ -329,7 +329,7 @@

    HOME

    HOME: = 36
    @@ -339,7 +339,7 @@

    I

    I: = 73
    @@ -349,7 +349,7 @@

    LEFT

    LEFT: = 37
    @@ -359,7 +359,7 @@

    META_LEFT

    META_LEFT: = 91
    @@ -369,7 +369,7 @@

    Meta

    Meta: = 8192
    @@ -379,7 +379,7 @@

    NULL

    NULL: = 0
    @@ -389,7 +389,7 @@

    PAGEUP

    PAGEUP: = 33
    @@ -399,7 +399,7 @@

    PERIOD

    PERIOD: = 190
    @@ -409,7 +409,7 @@

    PRINT_SCREEN

    PRINT_SCREEN: = 44
    @@ -419,7 +419,7 @@

    RANGE

    RANGE: = 258
    @@ -429,7 +429,7 @@

    RIGHT

    RIGHT: = 39
    @@ -439,7 +439,7 @@

    SHIFT

    SHIFT: = 16
    @@ -449,7 +449,7 @@

    SPACE

    SPACE: = 32
    @@ -459,7 +459,7 @@

    Shift

    Shift: = 16384
    @@ -469,7 +469,7 @@

    TAB

    TAB: = 9
    @@ -479,7 +479,7 @@

    U

    U: = 85
    @@ -489,7 +489,7 @@

    UP

    UP: = 38
    @@ -499,7 +499,7 @@

    Y

    Y: = 89
    @@ -509,7 +509,7 @@

    Z

    Z: = 90
    diff --git a/docs/enums/roosterjs_editor_types.knowncreateelementdataindex.html b/docs/enums/roosterjs_editor_types.knowncreateelementdataindex.html index 0456175b078..8a7fa6f8603 100644 --- a/docs/enums/roosterjs_editor_types.knowncreateelementdataindex.html +++ b/docs/enums/roosterjs_editor_types.knowncreateelementdataindex.html @@ -106,7 +106,7 @@

    BlockListItem

    BlockListItem: = 4
    @@ -121,7 +121,7 @@

    BlockquoteWrapper

    BlockquoteWrapper: = 2
    @@ -136,7 +136,7 @@

    ContextMenuWrapper

    ContextMenuWrapper: = 5
    @@ -151,7 +151,7 @@

    CopyPasteTempDiv

    CopyPasteTempDiv: = 3
    @@ -166,7 +166,7 @@

    EmptyLine

    EmptyLine: = 1
    @@ -181,7 +181,7 @@

    EmptyLineFormatInSpan

    EmptyLineFormatInSpan: = 12
    @@ -197,7 +197,7 @@

    ImageEditWrapper

    ImageEditWrapper: = 6
    @@ -212,7 +212,7 @@

    None

    None: = 0
    @@ -227,7 +227,7 @@

    TableHorizontalResizer

    TableHorizontalResizer: = 7
    @@ -243,7 +243,7 @@

    TableResizerLTR

    TableResizerLTR: = 9
    @@ -259,7 +259,7 @@

    TableResizerRTL

    TableResizerRTL: = 10
    @@ -275,7 +275,7 @@

    TableSelector

    TableSelector: = 11
    @@ -291,7 +291,7 @@

    TableVerticalResizer

    TableVerticalResizer: = 8
    diff --git a/docs/enums/roosterjs_editor_types.knownpastesourcetype.html b/docs/enums/roosterjs_editor_types.knownpastesourcetype.html index 208b5632894..f0f34161b2b 100644 --- a/docs/enums/roosterjs_editor_types.knownpastesourcetype.html +++ b/docs/enums/roosterjs_editor_types.knownpastesourcetype.html @@ -101,7 +101,7 @@

    Default

    Default: = 6
    @@ -111,7 +111,7 @@

    ExcelDesktop

    ExcelDesktop: = 1
    @@ -121,7 +121,7 @@

    ExcelOnline

    ExcelOnline: = 2
    @@ -131,7 +131,7 @@

    GoogleSheets

    GoogleSheets: = 4
    @@ -141,7 +141,7 @@

    PowerPointDesktop

    PowerPointDesktop: = 3
    @@ -151,7 +151,7 @@

    SingleImage

    SingleImage: = 7
    @@ -161,7 +161,7 @@

    WacComponents

    WacComponents: = 5
    @@ -171,7 +171,7 @@

    WordDesktop

    WordDesktop: = 0
    diff --git a/docs/enums/roosterjs_editor_types.listtype.html b/docs/enums/roosterjs_editor_types.listtype.html index 23d8481dbeb..beb2fa9b6ea 100644 --- a/docs/enums/roosterjs_editor_types.listtype.html +++ b/docs/enums/roosterjs_editor_types.listtype.html @@ -96,7 +96,7 @@

    None

    None: = 0
    @@ -112,7 +112,7 @@

    Ordered

    Ordered: = 1
    @@ -128,7 +128,7 @@

    Unordered

    Unordered: = 2
    diff --git a/docs/enums/roosterjs_editor_types.nodetype.html b/docs/enums/roosterjs_editor_types.nodetype.html index 4233190d284..16f6d13fed5 100644 --- a/docs/enums/roosterjs_editor_types.nodetype.html +++ b/docs/enums/roosterjs_editor_types.nodetype.html @@ -103,7 +103,7 @@

    Attribute

    Attribute: = 2
    @@ -118,7 +118,7 @@

    Comment

    Comment: = 8
    @@ -133,7 +133,7 @@

    Document

    Document: = 9
    @@ -148,7 +148,7 @@

    DocumentFragment

    DocumentFragment: = 11
    @@ -163,7 +163,7 @@

    DocumentType

    DocumentType: = 10
    @@ -178,7 +178,7 @@

    Element

    Element: = 1
    @@ -193,7 +193,7 @@

    ProcessingInstruction

    ProcessingInstruction: = 7
    @@ -208,7 +208,7 @@

    Text

    Text: = 3
    diff --git a/docs/enums/roosterjs_editor_types.numberinglisttype.html b/docs/enums/roosterjs_editor_types.numberinglisttype.html index 04529a0fc5f..0baad291bbc 100644 --- a/docs/enums/roosterjs_editor_types.numberinglisttype.html +++ b/docs/enums/roosterjs_editor_types.numberinglisttype.html @@ -115,7 +115,7 @@

    Decimal

    Decimal: = 1
    @@ -130,7 +130,7 @@

    DecimalDash

    DecimalDash: = 2
    @@ -145,7 +145,7 @@

    DecimalDoubleParenthesis

    DecimalDoubleParenthesis: = 4
    @@ -160,7 +160,7 @@

    DecimalParenthesis

    DecimalParenthesis: = 3
    @@ -175,7 +175,7 @@

    LowerAlpha

    LowerAlpha: = 5
    @@ -190,7 +190,7 @@

    LowerAlphaDash

    LowerAlphaDash: = 8
    @@ -205,7 +205,7 @@

    LowerAlphaDoubleParenthesis

    LowerAlphaDoubleParenthesis: = 7
    @@ -220,7 +220,7 @@

    LowerAlphaParenthesis

    LowerAlphaParenthesis: = 6
    @@ -235,7 +235,7 @@

    LowerRoman

    LowerRoman: = 13
    @@ -250,7 +250,7 @@

    LowerRomanDash

    LowerRomanDash: = 16
    @@ -265,7 +265,7 @@

    LowerRomanDoubleParenthesis

    LowerRomanDoubleParenthesis: = 15
    @@ -280,7 +280,7 @@

    LowerRomanParenthesis

    LowerRomanParenthesis: = 14
    @@ -295,7 +295,7 @@

    Max

    Max: = 20
    @@ -310,7 +310,7 @@

    Min

    Min: = 1
    @@ -325,7 +325,7 @@

    UpperAlpha

    UpperAlpha: = 9
    @@ -340,7 +340,7 @@

    UpperAlphaDash

    UpperAlphaDash: = 12
    @@ -355,7 +355,7 @@

    UpperAlphaDoubleParenthesis

    UpperAlphaDoubleParenthesis: = 11
    @@ -370,7 +370,7 @@

    UpperAlphaParenthesis

    UpperAlphaParenthesis: = 10
    @@ -385,7 +385,7 @@

    UpperRoman

    UpperRoman: = 17
    @@ -400,7 +400,7 @@

    UpperRomanDash

    UpperRomanDash: = 20
    @@ -415,7 +415,7 @@

    UpperRomanDoubleParenthesis

    UpperRomanDoubleParenthesis: = 19
    @@ -430,7 +430,7 @@

    UpperRomanParenthesis

    UpperRomanParenthesis: = 18
    diff --git a/docs/enums/roosterjs_editor_types.pastetype.html b/docs/enums/roosterjs_editor_types.pastetype.html index 4df6b0c10e5..2467701c9d2 100644 --- a/docs/enums/roosterjs_editor_types.pastetype.html +++ b/docs/enums/roosterjs_editor_types.pastetype.html @@ -97,7 +97,7 @@

    AsImage

    AsImage: = 3
    @@ -112,7 +112,7 @@

    AsPlainText

    AsPlainText: = 1
    @@ -127,7 +127,7 @@

    MergeFormat

    MergeFormat: = 2
    @@ -142,7 +142,7 @@

    Normal

    Normal: = 0
    diff --git a/docs/enums/roosterjs_editor_types.plugineventtype.html b/docs/enums/roosterjs_editor_types.plugineventtype.html index 9ae2c21859a..98067def119 100644 --- a/docs/enums/roosterjs_editor_types.plugineventtype.html +++ b/docs/enums/roosterjs_editor_types.plugineventtype.html @@ -117,7 +117,7 @@

    BeforeCutCopy

    BeforeCutCopy: = 9
    @@ -132,7 +132,7 @@

    BeforeDispose

    BeforeDispose: = 12
    @@ -147,7 +147,7 @@

    BeforeKeyboardEditing

    BeforeKeyboardEditing: = 23
    @@ -164,7 +164,7 @@

    BeforePaste

    BeforePaste: = 10
    @@ -179,7 +179,7 @@

    BeforeSetContent

    BeforeSetContent: = 20
    @@ -195,7 +195,7 @@

    CompositionEnd

    CompositionEnd: = 4
    @@ -210,7 +210,7 @@

    ContentChanged

    ContentChanged: = 7
    @@ -225,7 +225,7 @@

    ContextMenu

    ContextMenu: = 16
    @@ -240,7 +240,7 @@

    EditImage

    EditImage: = 19
    @@ -255,7 +255,7 @@

    EditorReady

    EditorReady: = 11
    @@ -270,7 +270,7 @@

    EnteredShadowEdit

    EnteredShadowEdit: = 17
    @@ -285,7 +285,7 @@

    EntityOperation

    EntityOperation: = 15
    @@ -300,7 +300,7 @@

    ExtractContentWithDom

    ExtractContentWithDom: = 8
    @@ -318,7 +318,7 @@

    Input

    Input: = 3
    @@ -333,7 +333,7 @@

    KeyDown

    KeyDown: = 0
    @@ -348,7 +348,7 @@

    KeyPress

    KeyPress: = 1
    @@ -363,7 +363,7 @@

    KeyUp

    KeyUp: = 2
    @@ -378,7 +378,7 @@

    LeavingShadowEdit

    LeavingShadowEdit: = 18
    @@ -393,7 +393,7 @@

    MouseDown

    MouseDown: = 5
    @@ -408,7 +408,7 @@

    MouseUp

    MouseUp: = 6
    @@ -423,7 +423,7 @@

    PendingFormatStateChanged

    PendingFormatStateChanged: = 13
    @@ -438,7 +438,7 @@

    Scroll

    Scroll: = 14
    @@ -453,7 +453,7 @@

    SelectionChanged

    SelectionChanged: = 22
    @@ -469,7 +469,7 @@

    ZoomChanged

    ZoomChanged: = 21
    diff --git a/docs/enums/roosterjs_editor_types.positiontype.html b/docs/enums/roosterjs_editor_types.positiontype.html index 7414f46be28..b5f9997f748 100644 --- a/docs/enums/roosterjs_editor_types.positiontype.html +++ b/docs/enums/roosterjs_editor_types.positiontype.html @@ -97,7 +97,7 @@

    After

    After: = -3
    @@ -112,7 +112,7 @@

    Before

    Before: = -2
    @@ -127,7 +127,7 @@

    Begin

    Begin: = 0
    @@ -142,7 +142,7 @@

    End

    End: = -1
    diff --git a/docs/enums/roosterjs_editor_types.queryscope.html b/docs/enums/roosterjs_editor_types.queryscope.html index 43a082c9892..987c952dedb 100644 --- a/docs/enums/roosterjs_editor_types.queryscope.html +++ b/docs/enums/roosterjs_editor_types.queryscope.html @@ -96,7 +96,7 @@

    Body

    Body: = 0
    @@ -111,7 +111,7 @@

    InSelection

    InSelection: = 2
    @@ -126,7 +126,7 @@

    OnSelection

    OnSelection: = 1
    diff --git a/docs/enums/roosterjs_editor_types.regiontype.html b/docs/enums/roosterjs_editor_types.regiontype.html index 9b433092798..8c3551ca365 100644 --- a/docs/enums/roosterjs_editor_types.regiontype.html +++ b/docs/enums/roosterjs_editor_types.regiontype.html @@ -94,7 +94,7 @@

    Table

    Table: = 0
    diff --git a/docs/enums/roosterjs_editor_types.selectionrangetypes.html b/docs/enums/roosterjs_editor_types.selectionrangetypes.html index 02d4185eb3a..7422f70c7c1 100644 --- a/docs/enums/roosterjs_editor_types.selectionrangetypes.html +++ b/docs/enums/roosterjs_editor_types.selectionrangetypes.html @@ -96,7 +96,7 @@

    ImageSelection

    ImageSelection: = 2
    @@ -111,7 +111,7 @@

    Normal

    Normal: = 0
    @@ -126,7 +126,7 @@

    TableSelection

    TableSelection: = 1
    diff --git a/docs/enums/roosterjs_editor_types.tableborderformat.html b/docs/enums/roosterjs_editor_types.tableborderformat.html index af65d3d00fa..d35182ac66f 100644 --- a/docs/enums/roosterjs_editor_types.tableborderformat.html +++ b/docs/enums/roosterjs_editor_types.tableborderformat.html @@ -102,7 +102,7 @@

    CLEAR

    CLEAR: = 8
    @@ -117,7 +117,7 @@

    DEFAULT

    DEFAULT: = 0
    @@ -136,7 +136,7 @@

    ESPECIAL_TYPE_1

    ESPECIAL_TYPE_1: = 5
    @@ -156,7 +156,7 @@

    ESPECIAL_TYPE_2

    ESPECIAL_TYPE_2: = 6
    @@ -176,7 +176,7 @@

    ESPECIAL_TYPE_3

    ESPECIAL_TYPE_3: = 7
    @@ -194,7 +194,7 @@

    FIRST_COLUMN_HEADER_EXTERNAL

    FIRST_COLUMN_HEADER_EXTERNAL: = 4
    @@ -213,7 +213,7 @@

    LIST_WITH_SIDE_BORDERS

    LIST_WITH_SIDE_BORDERS: = 1
    @@ -232,7 +232,7 @@

    NO_HEADER_BORDERS

    NO_HEADER_BORDERS: = 2
    @@ -250,7 +250,7 @@

    NO_SIDE_BORDERS

    NO_SIDE_BORDERS: = 3
    diff --git a/docs/enums/roosterjs_editor_types.tableoperation.html b/docs/enums/roosterjs_editor_types.tableoperation.html index 173138e1ebf..84ea9395a1e 100644 --- a/docs/enums/roosterjs_editor_types.tableoperation.html +++ b/docs/enums/roosterjs_editor_types.tableoperation.html @@ -116,7 +116,7 @@

    AlignCellBottom

    AlignCellBottom: = 22
    @@ -131,7 +131,7 @@

    AlignCellCenter

    AlignCellCenter: = 18
    @@ -146,7 +146,7 @@

    AlignCellLeft

    AlignCellLeft: = 17
    @@ -161,7 +161,7 @@

    AlignCellMiddle

    AlignCellMiddle: = 21
    @@ -176,7 +176,7 @@

    AlignCellRight

    AlignCellRight: = 19
    @@ -191,7 +191,7 @@

    AlignCellTop

    AlignCellTop: = 20
    @@ -206,7 +206,7 @@

    AlignCenter

    AlignCenter: = 14
    @@ -221,7 +221,7 @@

    AlignLeft

    AlignLeft: = 15
    @@ -236,7 +236,7 @@

    AlignRight

    AlignRight: = 16
    @@ -251,7 +251,7 @@

    DeleteColumn

    DeleteColumn: = 5
    @@ -266,7 +266,7 @@

    DeleteRow

    DeleteRow: = 6
    @@ -281,7 +281,7 @@

    DeleteTable

    DeleteTable: = 4
    @@ -296,7 +296,7 @@

    InsertAbove

    InsertAbove: = 0
    @@ -311,7 +311,7 @@

    InsertBelow

    InsertBelow: = 1
    @@ -326,7 +326,7 @@

    InsertLeft

    InsertLeft: = 2
    @@ -341,7 +341,7 @@

    InsertRight

    InsertRight: = 3
    @@ -356,7 +356,7 @@

    MergeAbove

    MergeAbove: = 7
    @@ -371,7 +371,7 @@

    MergeBelow

    MergeBelow: = 8
    @@ -386,7 +386,7 @@

    MergeCells

    MergeCells: = 11
    @@ -401,7 +401,7 @@

    MergeLeft

    MergeLeft: = 9
    @@ -416,7 +416,7 @@

    MergeRight

    MergeRight: = 10
    @@ -431,7 +431,7 @@

    SplitHorizontally

    SplitHorizontally: = 12
    @@ -446,7 +446,7 @@

    SplitVertically

    SplitVertically: = 13
    diff --git a/docs/enums/roosterjs_react.knownribbonbuttonkey.html b/docs/enums/roosterjs_react.knownribbonbuttonkey.html index 97e58f372db..abbc5c42096 100644 --- a/docs/enums/roosterjs_react.knownribbonbuttonkey.html +++ b/docs/enums/roosterjs_react.knownribbonbuttonkey.html @@ -125,7 +125,7 @@

    AlignCenter

    AlignCenter: = 15
    @@ -140,7 +140,7 @@

    AlignLeft

    AlignLeft: = 14
    @@ -155,7 +155,7 @@

    AlignRight

    AlignRight: = 16
    @@ -170,7 +170,7 @@

    BackgroundColor

    BackgroundColor: = 8
    @@ -185,7 +185,7 @@

    Bold

    Bold: = 0
    @@ -200,7 +200,7 @@

    BulletedList

    BulletedList: = 9
    @@ -215,7 +215,7 @@

    ClearFormat

    ClearFormat: = 30
    @@ -230,7 +230,7 @@

    Code

    Code: = 25
    @@ -245,7 +245,7 @@

    DecreaseFontSize

    DecreaseFontSize: = 6
    @@ -260,7 +260,7 @@

    DecreaseIndent

    DecreaseIndent: = 11
    @@ -275,7 +275,7 @@

    Font

    Font: = 3
    @@ -290,7 +290,7 @@

    FontSize

    FontSize: = 4
    @@ -305,7 +305,7 @@

    Header

    Header: = 31
    @@ -323,7 +323,7 @@

    Heading

    Heading: = 24
    @@ -338,7 +338,7 @@

    IncreaseFontSize

    IncreaseFontSize: = 5
    @@ -353,7 +353,7 @@

    IncreaseIndent

    IncreaseIndent: = 12
    @@ -368,7 +368,7 @@

    InsertImage

    InsertImage: = 20
    @@ -383,7 +383,7 @@

    InsertLink

    InsertLink: = 17
    @@ -398,7 +398,7 @@

    InsertTable

    InsertTable: = 19
    @@ -413,7 +413,7 @@

    Italic

    Italic: = 1
    @@ -428,7 +428,7 @@

    Ltr

    Ltr: = 26
    @@ -443,7 +443,7 @@

    NumberedList

    NumberedList: = 10
    @@ -458,7 +458,7 @@

    Quote

    Quote: = 13
    @@ -473,7 +473,7 @@

    Redo

    Redo: = 29
    @@ -488,7 +488,7 @@

    RemoveLink

    RemoveLink: = 18
    @@ -503,7 +503,7 @@

    Rtl

    Rtl: = 27
    @@ -518,7 +518,7 @@

    Strikethrough

    Strikethrough: = 23
    @@ -533,7 +533,7 @@

    Subscript

    Subscript: = 22
    @@ -548,7 +548,7 @@

    Superscript

    Superscript: = 21
    @@ -563,7 +563,7 @@

    TextColor

    TextColor: = 7
    @@ -578,7 +578,7 @@

    Underline

    Underline: = 2
    @@ -593,7 +593,7 @@

    Undo

    Undo: = 28
    diff --git a/docs/enums/roosterjs_react.updatemode.html b/docs/enums/roosterjs_react.updatemode.html index ba8dc812e9d..8d104506d2e 100644 --- a/docs/enums/roosterjs_react.updatemode.html +++ b/docs/enums/roosterjs_react.updatemode.html @@ -99,7 +99,7 @@

    Force

    Force: = 0
    @@ -114,7 +114,7 @@

    OnBlur

    OnBlur: = 16
    @@ -129,7 +129,7 @@

    OnContentChangedEvent

    OnContentChangedEvent: = 8
    @@ -144,7 +144,7 @@

    OnDispose

    OnDispose: = 2
    @@ -159,7 +159,7 @@

    OnInitialize

    OnInitialize: = 1
    @@ -174,7 +174,7 @@

    OnUserInput

    OnUserInput: = 4
    diff --git a/docs/interfaces/roosterjs_content_model_dom.nodetypemap.html b/docs/interfaces/roosterjs_content_model_dom.nodetypemap.html index c948365033a..2b5f57537b5 100644 --- a/docs/interfaces/roosterjs_content_model_dom.nodetypemap.html +++ b/docs/interfaces/roosterjs_content_model_dom.nodetypemap.html @@ -109,7 +109,7 @@

    1

    1: HTMLElement
    @@ -124,7 +124,7 @@

    10

    10: DocumentType
    @@ -139,7 +139,7 @@

    11

    11: DocumentFragment
    @@ -154,7 +154,7 @@

    2

    2: Attr
    @@ -169,7 +169,7 @@

    3

    3: Text
    @@ -184,7 +184,7 @@

    7

    7: ProcessingInstruction
    @@ -199,7 +199,7 @@

    8

    8: Comment
    @@ -214,7 +214,7 @@

    9

    9: Document
    diff --git a/docs/interfaces/roosterjs_content_model_editor.border.html b/docs/interfaces/roosterjs_content_model_editor.border.html index 2727fc4f100..0a9e6014c7c 100644 --- a/docs/interfaces/roosterjs_content_model_editor.border.html +++ b/docs/interfaces/roosterjs_content_model_editor.border.html @@ -105,7 +105,7 @@

    Optional color

    color: string
    @@ -120,7 +120,7 @@

    Optional style

    style: string
    @@ -135,7 +135,7 @@

    Optional width

    width: string
    diff --git a/docs/interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html b/docs/interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html index 6a9850c4165..c4bcae9f0a1 100644 --- a/docs/interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html +++ b/docs/interfaces/roosterjs_content_model_editor.compatiblecontentmodelbeforepasteevent.html @@ -121,7 +121,7 @@

    clipboardData

    @@ -137,7 +137,7 @@

    Optional customizedMerge<
    @@ -177,7 +177,7 @@

    domToModelOption

    @@ -193,7 +193,7 @@

    Optional eventDataCa
    @@ -219,7 +219,7 @@

    eventType

    @@ -235,7 +235,7 @@

    fragment

    @@ -251,7 +251,7 @@

    htmlAfter

    @@ -267,7 +267,7 @@

    htmlAttributes

    @@ -283,7 +283,7 @@

    htmlBefore

    @@ -299,7 +299,7 @@

    Readonly pasteType

    @@ -315,7 +315,7 @@

    sanitizingOption

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html b/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html index e62ef603ff1..38d0ba48266 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteevent.html @@ -121,7 +121,7 @@

    clipboardData

    @@ -137,7 +137,7 @@

    Optional customizedMerge<
    @@ -177,7 +177,7 @@

    domToModelOption

    @@ -193,7 +193,7 @@

    Optional eventDataCa
    @@ -219,7 +219,7 @@

    eventType

    @@ -235,7 +235,7 @@

    fragment

    @@ -251,7 +251,7 @@

    htmlAfter

    @@ -267,7 +267,7 @@

    htmlAttributes

    @@ -283,7 +283,7 @@

    htmlBefore

    @@ -299,7 +299,7 @@

    Readonly pasteType

    @@ -315,7 +315,7 @@

    sanitizingOption

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html b/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html index 7d96ef7242e..19b77a42e70 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodelbeforepasteeventdata.html @@ -124,7 +124,7 @@

    clipboardData

    @@ -139,7 +139,7 @@

    Optional customizedMerge<
    customizedMerge: (target: ContentModelDocument, source: ContentModelDocument) => void
    @@ -178,7 +178,7 @@

    domToModelOption

    domToModelOption: Partial<DomToModelOption>
    @@ -194,7 +194,7 @@

    fragment

    @@ -210,7 +210,7 @@

    htmlAfter

    @@ -226,7 +226,7 @@

    htmlAttributes

    @@ -242,7 +242,7 @@

    htmlBefore

    @@ -258,7 +258,7 @@

    Readonly pasteType

    @@ -274,7 +274,7 @@

    sanitizingOption

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html b/docs/interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html index 9e21ec7ae7e..681b7872b9c 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodelcoreapimap.html @@ -132,7 +132,7 @@

    addUndoSnapshot

    @@ -163,7 +163,7 @@

    attachDomEvent

    @@ -192,7 +192,7 @@

    createContentModel

    createContentModel: CreateContentModel
    @@ -215,7 +215,7 @@

    createEditorContext

    createEditorContext: CreateEditorContext
    @@ -236,7 +236,7 @@

    createPasteFragment

    @@ -270,7 +270,7 @@

    ensureTypeInContainer

    @@ -300,7 +300,7 @@

    focus

    @@ -321,7 +321,7 @@

    getContent

    @@ -348,7 +348,7 @@

    getPendableFormatState

    @@ -375,7 +375,7 @@

    getSelectionRange

    @@ -402,7 +402,7 @@

    getSelectionRangeEx

    @@ -429,7 +429,7 @@

    getStyleBasedFormatState

    @@ -453,7 +453,7 @@

    hasFocus

    @@ -477,7 +477,7 @@

    insertNode

    @@ -501,7 +501,7 @@

    restoreUndoSnapshot

    @@ -525,7 +525,7 @@

    select

    @@ -559,7 +559,7 @@

    selectImage

    @@ -589,7 +589,7 @@

    selectRange

    @@ -618,7 +618,7 @@

    selectTable

    @@ -652,7 +652,7 @@

    setContent

    @@ -679,7 +679,7 @@

    setContentModel

    setContentModel: SetContentModel
    @@ -706,7 +706,7 @@

    switchShadowEdit

    @@ -730,7 +730,7 @@

    transformColor

    @@ -770,7 +770,7 @@

    triggerEvent

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html b/docs/interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html index e7af5d8da7b..9198d6ea8ac 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodeleditorcore.html @@ -134,7 +134,7 @@

    addDelimiterForEntity

    addDelimiterForEntity: boolean
    @@ -150,7 +150,7 @@

    Readonly api

    @@ -165,7 +165,7 @@

    Optional cachedModel

    @@ -180,7 +180,7 @@

    Optional cachedRange
    cachedRangeEx: SelectionRangeEx
    @@ -196,7 +196,7 @@

    Readonly contentDiv

    @@ -212,7 +212,7 @@

    darkColorHandler

    @@ -228,7 +228,7 @@

    defaultDomToModelOptions

    defaultDomToModelOptions: DomToModelOption
    @@ -243,7 +243,7 @@

    defaultFormat

    @@ -258,7 +258,7 @@

    defaultModelToDomOptions

    defaultModelToDomOptions: ModelToDomOption
    @@ -274,7 +274,7 @@

    getVisibleViewport

    @@ -305,7 +305,7 @@

    Optional imageSelection

    Inherited from EditorCore.imageSelectionBorderColor

    @@ -321,7 +321,7 @@

    Readonly originalApi

    @@ -337,7 +337,7 @@

    Readonly plugins

    @@ -353,7 +353,7 @@

    sizeTransformer

    @@ -371,7 +371,7 @@

    Readonly trustedHTMLHandler

    Inherited from EditorCore.trustedHTMLHandler

    @@ -389,7 +389,7 @@

    zoomScale

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html b/docs/interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html index 0b4a43a4789..f722a3dfa8b 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodeleditoroptions.html @@ -129,7 +129,7 @@

    Optional allowKeyboard

    Inherited from EditorOptions.allowKeyboardEventPropagation

    @@ -148,7 +148,7 @@

    Optional allowedCustom

    Inherited from EditorOptions.allowedCustomPasteType

    @@ -165,7 +165,7 @@

    Optional coreApiOver
    @@ -182,7 +182,7 @@

    Optional corePluginO
    @@ -198,7 +198,7 @@

    Optional defaultDomT
    defaultDomToModelOptions: DomToModelOption
    @@ -214,7 +214,7 @@

    Optional defaultFormat

    Inherited from EditorOptions.defaultFormat

    @@ -231,7 +231,7 @@

    Optional defaultModeldefaultModelToDomOptions: ModelToDomOption

    @@ -247,7 +247,7 @@

    Optional doNotAdjust
    @@ -263,7 +263,7 @@

    Optional experimentalFeat
    @@ -279,7 +279,7 @@

    Optional getDarkColo
    @@ -317,7 +317,7 @@

    Optional getVisibleV
    @@ -348,7 +348,7 @@

    Optional imageSelection

    Inherited from EditorOptions.imageSelectionBorderColor

    @@ -364,7 +364,7 @@

    Optional inDarkMode<
    @@ -380,7 +380,7 @@

    Optional initialContent

    Inherited from EditorOptions.initialContent

    @@ -397,7 +397,7 @@

    Optional onExternalC
    @@ -438,7 +438,7 @@

    Optional plugins

    @@ -457,7 +457,7 @@

    Optional scrollContainer<
    @@ -474,7 +474,7 @@

    Optional sizeTransformer<
    @@ -492,7 +492,7 @@

    Optional trustedHTMLHandler

    Inherited from EditorOptions.trustedHTMLHandler

    @@ -510,7 +510,7 @@

    Optional undoMetadata

    Inherited from EditorOptions.undoMetadataSnapshotService

    @@ -527,7 +527,7 @@

    Optional undoSnapshot

    Inherited from EditorOptions.undoSnapshotService

    @@ -546,7 +546,7 @@

    Optional zoomScale

    diff --git a/docs/interfaces/roosterjs_content_model_editor.contentmodelformatstate.html b/docs/interfaces/roosterjs_content_model_editor.contentmodelformatstate.html index 7fd6a7b6f2d..c06bf783191 100644 --- a/docs/interfaces/roosterjs_content_model_editor.contentmodelformatstate.html +++ b/docs/interfaces/roosterjs_content_model_editor.contentmodelformatstate.html @@ -144,7 +144,7 @@

    Optional backgroundColor<
    @@ -160,7 +160,7 @@

    Optional backgroundColors
    @@ -176,7 +176,7 @@

    Optional canAddImage
    @@ -192,7 +192,7 @@

    Optional canMergeTab
    @@ -208,7 +208,7 @@

    Optional canRedo

    @@ -224,7 +224,7 @@

    Optional canUndo

    @@ -240,7 +240,7 @@

    Optional canUnlink

    @@ -256,7 +256,7 @@

    Optional direction

    @@ -272,7 +272,7 @@

    Optional fontName

    @@ -288,7 +288,7 @@

    Optional fontSize

    @@ -304,7 +304,7 @@

    Optional headerLevel

    @@ -323,7 +323,7 @@

    Optional headingLevel

    Inherited from FormatState.headingLevel

    @@ -338,7 +338,7 @@

    Optional imageFormat

    imageFormat: ImageFormatState
    @@ -354,7 +354,7 @@

    Optional isBlockQuot
    @@ -370,7 +370,7 @@

    Optional isBold

    @@ -386,7 +386,7 @@

    Optional isBullet

    @@ -402,7 +402,7 @@

    Optional isCodeBlock
    @@ -418,7 +418,7 @@

    Optional isCodeInlin
    @@ -434,7 +434,7 @@

    Optional isDarkMode<
    @@ -450,7 +450,7 @@

    Optional isInTable

    @@ -466,7 +466,7 @@

    Optional isItalic

    @@ -482,7 +482,7 @@

    Optional isMultiline
    @@ -498,7 +498,7 @@

    Optional isNumbering

    @@ -514,7 +514,7 @@

    Optional isStrikeThr
    @@ -530,7 +530,7 @@

    Optional isSubscript

    @@ -546,7 +546,7 @@

    Optional isSuperscript

    Inherited from FormatState.isSuperscript

    @@ -562,7 +562,7 @@

    Optional isUnderline

    @@ -577,7 +577,7 @@

    Optional letterSpacingletterSpacing: string

    @@ -593,7 +593,7 @@

    Optional lineHeight

    @@ -609,7 +609,7 @@

    Optional marginBottom

    Inherited from FormatState.marginBottom

    @@ -625,7 +625,7 @@

    Optional marginTop

    @@ -641,7 +641,7 @@

    Optional tableFormat

    @@ -657,7 +657,7 @@

    Optional tableHasHea
    @@ -673,7 +673,7 @@

    Optional textAlign

    @@ -689,7 +689,7 @@

    Optional textColor

    @@ -705,7 +705,7 @@

    Optional textColors

    @@ -721,7 +721,7 @@

    Optional zoomScale

    diff --git a/docs/interfaces/roosterjs_content_model_editor.deletedentity.html b/docs/interfaces/roosterjs_content_model_editor.deletedentity.html index d3482da609f..1d0c573e81f 100644 --- a/docs/interfaces/roosterjs_content_model_editor.deletedentity.html +++ b/docs/interfaces/roosterjs_content_model_editor.deletedentity.html @@ -103,7 +103,7 @@

    entity

    @@ -113,7 +113,7 @@

    operation

    diff --git a/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html b/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html index 3c639a1428a..73403b29479 100644 --- a/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html +++ b/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodelcontext.html @@ -89,6 +89,7 @@

    Index

    Properties

    @@ -104,7 +105,7 @@

    Readonly deletedEntities<
    deletedEntities: DeletedEntity[]
    @@ -113,13 +114,28 @@

    Readonly deletedEntities<

    +
    + +

    Readonly newEntities

    +
    newEntities: ContentModelEntity[]
    + +
    +
    +

    New entities added during the format process

    +
    +
    +

    Optional Readonly rawEvent

    rawEvent: Event
    @@ -134,7 +150,7 @@

    Optional skipUndoSna
    skipUndoSnapshot: boolean
    @@ -205,6 +221,9 @@

    Optional skipUndoSna
  • deletedEntities
  • +
  • + newEntities +
  • rawEvent
  • diff --git a/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html b/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html index 12661a0da33..aa852f3452d 100644 --- a/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html +++ b/docs/interfaces/roosterjs_content_model_editor.formatwithcontentmodeloptions.html @@ -107,7 +107,7 @@

    Optional changeSource

    changeSource: string
    @@ -122,7 +122,7 @@

    Optional getChangeDa
    getChangeData: () => any
    @@ -152,7 +152,7 @@

    Optional onNodeCreat
    onNodeCreated: OnNodeCreated
    @@ -175,7 +175,7 @@

    Optional preservePending<
    preservePendingFormat: boolean
    @@ -190,7 +190,7 @@

    Optional rawEvent

    rawEvent: Event
    @@ -205,7 +205,7 @@

    Optional selectionOverrid
    selectionOverride: SelectionRangeEx
    diff --git a/docs/interfaces/roosterjs_content_model_editor.icontentmodeleditor.html b/docs/interfaces/roosterjs_content_model_editor.icontentmodeleditor.html index 6e39b1abda4..fcee3828748 100644 --- a/docs/interfaces/roosterjs_content_model_editor.icontentmodeleditor.html +++ b/docs/interfaces/roosterjs_content_model_editor.icontentmodeleditor.html @@ -185,7 +185,7 @@

    addContentEditFeature

    @@ -218,7 +218,7 @@

    addDomEventHandler

    @@ -261,7 +261,7 @@

    Returns void

    Inherited from IEditor.addDomEventHandler

    @@ -307,7 +307,7 @@

    addUndoSnapshot

    @@ -381,7 +381,7 @@

    cacheContentModel

  • @@ -412,7 +412,7 @@

    collapseNodes

    @@ -462,7 +462,7 @@

    contains

    @@ -486,7 +486,7 @@

    Returns boolean

    Inherited from IEditor.contains

    @@ -518,7 +518,7 @@

    createContentModel

  • @@ -556,7 +556,7 @@

    deleteNode

    @@ -589,7 +589,7 @@

    deleteSelectedContent

    @@ -612,7 +612,7 @@

    dispose

  • @@ -851,7 +851,7 @@

    getContentSearcherOfCursor

    @@ -885,7 +885,7 @@

    getCustomData

    @@ -967,7 +967,7 @@

    getDarkColorHandler

    @@ -990,7 +990,7 @@

    getDefaultFormat

    @@ -1014,7 +1014,7 @@

    getDocument

    @@ -1038,7 +1038,7 @@

    getEditorDomAttribute

    @@ -1070,7 +1070,7 @@

    getElementAtCursor

    @@ -1120,7 +1120,7 @@

    getFocusedPosition

    @@ -1143,7 +1143,7 @@

    getPendableFormatState

    @@ -1176,7 +1176,7 @@

    getRelativeDistanceToEditor

    @@ -1219,7 +1219,7 @@

    getScrollContainer

    @@ -1242,7 +1242,7 @@

    getSelectedRegions

    @@ -1271,7 +1271,7 @@

    getSelectionPath

    @@ -1296,7 +1296,7 @@

    getSelectionRange

    @@ -1331,7 +1331,7 @@

    getSelectionRangeEx

    @@ -1356,7 +1356,7 @@

    getSelectionTraverser

    @@ -1386,7 +1386,7 @@

    getSizeTransformer

    @@ -1411,7 +1411,7 @@

    getStyleBasedFormatState

    @@ -1440,7 +1440,7 @@

    getTrustedHTMLHandler

    @@ -1466,7 +1466,7 @@

    getUndoState

    @@ -1489,7 +1489,7 @@

    getVisibleViewport

    @@ -1512,7 +1512,7 @@

    getZoomScale

    @@ -1538,7 +1538,7 @@

    hasFocus

    @@ -1562,7 +1562,7 @@

    insertContent

    @@ -1601,7 +1601,7 @@

    insertNode

    @@ -1644,7 +1644,7 @@

    isDarkMode

    @@ -1668,7 +1668,7 @@

    isDisposed

    @@ -1692,7 +1692,7 @@

    isEmpty

    @@ -1725,7 +1725,7 @@

    isFeatureEnabled

    @@ -1757,7 +1757,7 @@

    isInIME

    @@ -1781,7 +1781,7 @@

    isInShadowEdit

    @@ -1804,7 +1804,7 @@

    isPositionAtBeginning

    @@ -1838,7 +1838,7 @@

    paste

    @@ -1885,7 +1885,7 @@

    queryElements

    @@ -1939,7 +1939,7 @@

    Returns HTMLEleme
    @@ -1993,7 +1993,7 @@

    Returns T<
    @@ -2053,7 +2053,7 @@

    Returns HTMLEleme
    @@ -2122,7 +2122,7 @@

    redo

    @@ -2145,7 +2145,7 @@

    removeContentEditFeature

    @@ -2177,7 +2177,7 @@

    replaceNode

    @@ -2222,7 +2222,7 @@

    runAsync

    @@ -2293,7 +2293,7 @@

    select

    @@ -2317,7 +2317,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2341,7 +2341,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2371,7 +2371,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2395,7 +2395,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2425,7 +2425,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2467,7 +2467,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2491,7 +2491,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2520,7 +2520,7 @@

    Returns boolean

    Inherited from IEditor.select

    @@ -2552,7 +2552,7 @@

    setContent

    @@ -2589,7 +2589,7 @@

    setContentModel

  • @@ -2627,7 +2627,7 @@

    setDarkModeState

    @@ -2659,7 +2659,7 @@

    setEditorDomAttribute

    @@ -2697,7 +2697,7 @@

    setZoomScale

    @@ -2728,7 +2728,7 @@

    startShadowEdit

    @@ -2756,7 +2756,7 @@

    stopShadowEdit

    @@ -2772,14 +2772,14 @@

    Returns void

    transformToDarkColor

    Returns void

  • @@ -2811,7 +2817,7 @@

    triggerContentChangedEvent

    @@ -2849,7 +2855,7 @@

    triggerPluginEvent

    @@ -2902,7 +2908,7 @@

    undo

    diff --git a/docs/interfaces/roosterjs_content_model_editor.imageformatstate.html b/docs/interfaces/roosterjs_content_model_editor.imageformatstate.html index adb62f1b904..c65064d4286 100644 --- a/docs/interfaces/roosterjs_content_model_editor.imageformatstate.html +++ b/docs/interfaces/roosterjs_content_model_editor.imageformatstate.html @@ -106,7 +106,7 @@

    Optional borderColor

    borderColor: string
    @@ -121,7 +121,7 @@

    Optional borderRadius

    borderRadius: string
    @@ -136,7 +136,7 @@

    Optional borderStyle

    borderStyle: string
    @@ -151,7 +151,7 @@

    Optional borderWidth

    borderWidth: string
    @@ -166,7 +166,7 @@

    Optional boxShadow

    boxShadow: string
    diff --git a/docs/interfaces/roosterjs_content_model_editor.insertentityoptions.html b/docs/interfaces/roosterjs_content_model_editor.insertentityoptions.html index e8a67d7fae4..1a74e806609 100644 --- a/docs/interfaces/roosterjs_content_model_editor.insertentityoptions.html +++ b/docs/interfaces/roosterjs_content_model_editor.insertentityoptions.html @@ -105,7 +105,7 @@

    Optional contentNode

    contentNode: Node
    @@ -120,7 +120,7 @@

    Optional focusAfterE
    focusAfterEntity: boolean
    @@ -135,7 +135,7 @@

    Optional skipUndoSna
    skipUndoSnapshot: boolean
    @@ -150,7 +150,7 @@

    Optional wrapperDisplaywrapperDisplay: "block" | "inline" | "none" | "inline-block"

    diff --git a/docs/interfaces/roosterjs_content_model_editor.insertpoint.html b/docs/interfaces/roosterjs_content_model_editor.insertpoint.html index 309bbc776ff..dc9fc4a65c1 100644 --- a/docs/interfaces/roosterjs_content_model_editor.insertpoint.html +++ b/docs/interfaces/roosterjs_content_model_editor.insertpoint.html @@ -105,7 +105,7 @@

    marker

    @@ -120,7 +120,7 @@

    paragraph

    @@ -135,7 +135,7 @@

    path

    @@ -150,7 +150,7 @@

    Optional tableContext

    tableContext: TableSelectionContext
    diff --git a/docs/interfaces/roosterjs_content_model_editor.tableselectioncontext.html b/docs/interfaces/roosterjs_content_model_editor.tableselectioncontext.html index f5a78620316..7f376858337 100644 --- a/docs/interfaces/roosterjs_content_model_editor.tableselectioncontext.html +++ b/docs/interfaces/roosterjs_content_model_editor.tableselectioncontext.html @@ -105,7 +105,7 @@

    colIndex

    colIndex: number
    @@ -120,7 +120,7 @@

    isWholeTableSelected

    isWholeTableSelected: boolean
    @@ -135,7 +135,7 @@

    rowIndex

    rowIndex: number
    @@ -150,7 +150,7 @@

    table

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelblockbase.html b/docs/interfaces/roosterjs_content_model_types.contentmodelblockbase.html index e73389ada57..ac38731a56c 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelblockbase.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelblockbase.html @@ -142,7 +142,7 @@

    blockType

    blockType: T
    @@ -158,7 +158,7 @@

    format

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html b/docs/interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html index c2b9375d850..96df2381c7d 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelblockgroupbase.html @@ -128,7 +128,7 @@

    blockGroupType

    blockGroupType: T
    @@ -143,7 +143,7 @@

    blocks

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html b/docs/interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html index 68c06c37cfb..82dc7134cec 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelblockwithcache.html @@ -130,7 +130,7 @@

    Optional cachedElementcachedElement: TElement

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelbr.html b/docs/interfaces/roosterjs_content_model_types.contentmodelbr.html index 918217e9c21..3b449a41372 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelbr.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelbr.html @@ -112,7 +112,7 @@

    Optional code

    @@ -128,7 +128,7 @@

    format

    @@ -144,7 +144,7 @@

    Optional isSelected

    @@ -160,7 +160,7 @@

    Optional link

    @@ -176,7 +176,7 @@

    segmentType

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelcode.html b/docs/interfaces/roosterjs_content_model_types.contentmodelcode.html index 44d6740a061..cc97139072a 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelcode.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelcode.html @@ -110,7 +110,7 @@

    format

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeldivider.html b/docs/interfaces/roosterjs_content_model_types.contentmodeldivider.html index b04a8a4c567..ed78bdd5f93 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeldivider.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeldivider.html @@ -119,7 +119,7 @@

    blockType

    @@ -135,7 +135,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

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

    format

    @@ -167,7 +167,7 @@

    Optional isSelected

    @@ -182,7 +182,7 @@

    Optional size

    size: string
    @@ -197,7 +197,7 @@

    tagName

    tagName: "div" | "hr"
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeldocument.html b/docs/interfaces/roosterjs_content_model_types.contentmodeldocument.html index 7350a78bdf7..e52460eb216 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeldocument.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeldocument.html @@ -113,7 +113,7 @@

    blockGroupType

    @@ -129,7 +129,7 @@

    blocks

    @@ -145,7 +145,7 @@

    Optional format

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelentity.html b/docs/interfaces/roosterjs_content_model_types.contentmodelentity.html index ebd467130df..c4ab4cbd576 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelentity.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelentity.html @@ -120,7 +120,7 @@

    blockType

    @@ -136,7 +136,7 @@

    Optional code

    @@ -152,7 +152,7 @@

    format

    @@ -167,7 +167,7 @@

    Optional id

    id: string
    @@ -182,7 +182,7 @@

    isReadonly

    isReadonly: boolean
    @@ -198,7 +198,7 @@

    Optional isSelected

    @@ -214,7 +214,7 @@

    Optional link

    @@ -230,7 +230,7 @@

    segmentType

    @@ -245,7 +245,7 @@

    Optional type

    type: string
    @@ -260,7 +260,7 @@

    wrapper

    wrapper: HTMLElement
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html b/docs/interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html index 1dd420514ce..f6fb75be07f 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelformatcontainer.html @@ -120,7 +120,7 @@

    blockGroupType

    @@ -136,7 +136,7 @@

    blockType

    @@ -152,7 +152,7 @@

    blocks

    @@ -168,7 +168,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

    @@ -184,7 +184,7 @@

    format

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

    tagName

    tagName: string
    @@ -214,7 +214,7 @@

    Optional zeroFontSiz
    zeroFontSize: boolean
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelformatmap.html b/docs/interfaces/roosterjs_content_model_types.contentmodelformatmap.html index 71405720e54..45dea38ddfb 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelformatmap.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelformatmap.html @@ -122,7 +122,7 @@

    block

    @@ -137,7 +137,7 @@

    code

    @@ -152,7 +152,7 @@

    container

    @@ -167,7 +167,7 @@

    dataset

    dataset: DatasetFormat
    @@ -182,7 +182,7 @@

    divider

    @@ -197,7 +197,7 @@

    elementBasedSegment

    elementBasedSegment: ContentModelSegmentFormat
    @@ -212,7 +212,7 @@

    image

    @@ -227,7 +227,7 @@

    link

    @@ -242,7 +242,7 @@

    listItem

    @@ -257,7 +257,7 @@

    listItemElement

    @@ -272,7 +272,7 @@

    listLevel

    @@ -287,7 +287,7 @@

    segment

    @@ -302,7 +302,7 @@

    segmentOnBlock

    @@ -319,7 +319,7 @@

    segmentOnTableCell

    segmentOnTableCell: ContentModelSegmentFormat
    @@ -337,7 +337,7 @@

    segmentUnderLink

    segmentUnderLink: ContentModelHyperLinkFormat
    @@ -352,7 +352,7 @@

    styleBasedSegment

    styleBasedSegment: ContentModelSegmentFormat
    @@ -367,7 +367,7 @@

    table

    @@ -382,7 +382,7 @@

    tableBorder

    @@ -397,7 +397,7 @@

    tableCell

    @@ -412,7 +412,7 @@

    tableCellBorder

    @@ -427,7 +427,7 @@

    tableRow

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html b/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html index 3bc2cbc0b57..070f5d25972 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralblock.html @@ -124,7 +124,7 @@

    blockGroupType

    @@ -140,7 +140,7 @@

    blockType

    @@ -156,7 +156,7 @@

    blocks

    @@ -171,7 +171,7 @@

    element

    element: HTMLElement
    @@ -187,7 +187,7 @@

    format

    @@ -203,7 +203,7 @@

    Optional isSelected

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html b/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html index c670dd6bda1..4ead05398eb 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelgeneralsegment.html @@ -119,7 +119,7 @@

    blockGroupType

    @@ -135,7 +135,7 @@

    blockType

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

    blocks

    @@ -167,7 +167,7 @@

    Optional code

    @@ -183,7 +183,7 @@

    element

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

    format

    @@ -215,7 +215,7 @@

    Optional isSelected

    @@ -231,7 +231,7 @@

    Optional link

    @@ -247,7 +247,7 @@

    segmentType

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelimage.html b/docs/interfaces/roosterjs_content_model_types.contentmodelimage.html index 42366a43c92..e9d9ed9ee71 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelimage.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelimage.html @@ -119,7 +119,7 @@

    Optional alt

    alt: string
    @@ -135,7 +135,7 @@

    Optional code

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

    dataset

    @@ -167,7 +167,7 @@

    format

    @@ -183,7 +183,7 @@

    Optional isSelected

    @@ -198,7 +198,7 @@

    Optional isSelectedA
    isSelectedAsImageSelection: boolean
    @@ -214,7 +214,7 @@

    Optional link

    @@ -230,7 +230,7 @@

    segmentType

    @@ -245,7 +245,7 @@

    src

    src: string
    @@ -260,7 +260,7 @@

    Optional title

    title: string
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodellink.html b/docs/interfaces/roosterjs_content_model_types.contentmodellink.html index fc3db9070f6..263529b499d 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodellink.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodellink.html @@ -114,7 +114,7 @@

    dataset

    @@ -130,7 +130,7 @@

    format

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodellistitem.html b/docs/interfaces/roosterjs_content_model_types.contentmodellistitem.html index ef9bd23f520..1aaa3a65c79 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodellistitem.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodellistitem.html @@ -116,7 +116,7 @@

    blockGroupType

    @@ -132,7 +132,7 @@

    blockType

    @@ -148,7 +148,7 @@

    blocks

    @@ -164,7 +164,7 @@

    format

    @@ -179,7 +179,7 @@

    formatHolder

    @@ -194,7 +194,7 @@

    levels

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodellistlevel.html b/docs/interfaces/roosterjs_content_model_types.contentmodellistlevel.html index 51576b13dc2..ead668b6c88 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodellistlevel.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodellistlevel.html @@ -113,7 +113,7 @@

    dataset

    @@ -129,7 +129,7 @@

    format

    @@ -144,7 +144,7 @@

    listType

    listType: "OL" | "UL"
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelparagraph.html b/docs/interfaces/roosterjs_content_model_types.contentmodelparagraph.html index 5fd485208e7..781dff812d5 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelparagraph.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelparagraph.html @@ -117,7 +117,7 @@

    blockType

    @@ -133,7 +133,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

    @@ -148,7 +148,7 @@

    Optional decorator

    @@ -164,7 +164,7 @@

    format

    @@ -179,7 +179,7 @@

    Optional isImplicit

    isImplicit: boolean
    @@ -195,7 +195,7 @@

    Optional segmentFormatsegmentFormat: ContentModelSegmentFormat

    @@ -210,7 +210,7 @@

    segments

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html b/docs/interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html index 6567d7e6ce9..03b637e7d71 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelparagraphdecorator.html @@ -111,7 +111,7 @@

    format

    @@ -126,7 +126,7 @@

    tagName

    tagName: string
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html b/docs/interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html index 0189267364d..6bf264887a6 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelsegmentbase.html @@ -145,7 +145,7 @@

    Optional code

    @@ -161,7 +161,7 @@

    format

    @@ -177,7 +177,7 @@

    Optional isSelected

    @@ -192,7 +192,7 @@

    Optional link

    @@ -207,7 +207,7 @@

    segmentType

    segmentType: T
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html b/docs/interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html index 95828d209a7..0f592f68190 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelselectionmarker.html @@ -112,7 +112,7 @@

    Optional code

    @@ -128,7 +128,7 @@

    format

    @@ -144,7 +144,7 @@

    isSelected

    @@ -160,7 +160,7 @@

    Optional link

    @@ -176,7 +176,7 @@

    segmentType

    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeltable.html b/docs/interfaces/roosterjs_content_model_types.contentmodeltable.html index 785330012c3..21a22d72d49 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeltable.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeltable.html @@ -119,7 +119,7 @@

    blockType

    @@ -135,7 +135,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

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

    dataset

    @@ -167,7 +167,7 @@

    format

    @@ -182,7 +182,7 @@

    rows

    @@ -197,7 +197,7 @@

    widths

    widths: number[]
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeltablecell.html b/docs/interfaces/roosterjs_content_model_types.contentmodeltablecell.html index d9a5e7cc38f..491ab695634 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeltablecell.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeltablecell.html @@ -128,7 +128,7 @@

    blockGroupType

    @@ -144,7 +144,7 @@

    blocks

    @@ -160,7 +160,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

    @@ -176,7 +176,7 @@

    dataset

    @@ -192,7 +192,7 @@

    format

    @@ -207,7 +207,7 @@

    Optional isHeader

    isHeader: boolean
    @@ -223,7 +223,7 @@

    Optional isSelected

    @@ -238,7 +238,7 @@

    spanAbove

    spanAbove: boolean
    @@ -253,7 +253,7 @@

    spanLeft

    spanLeft: boolean
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeltablerow.html b/docs/interfaces/roosterjs_content_model_types.contentmodeltablerow.html index 572d39d6f25..60b88440784 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeltablerow.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeltablerow.html @@ -114,7 +114,7 @@

    Optional cachedElement

    Inherited from ContentModelBlockWithCache.cachedElement

    @@ -129,7 +129,7 @@

    cells

    @@ -145,7 +145,7 @@

    format

    @@ -160,7 +160,7 @@

    height

    height: number
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodeltext.html b/docs/interfaces/roosterjs_content_model_types.contentmodeltext.html index 209a994ea70..2a002ea7770 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodeltext.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodeltext.html @@ -113,7 +113,7 @@

    Optional code

    @@ -129,7 +129,7 @@

    format

    @@ -145,7 +145,7 @@

    Optional isSelected

    @@ -161,7 +161,7 @@

    Optional link

    @@ -177,7 +177,7 @@

    segmentType

    @@ -192,7 +192,7 @@

    text

    text: string
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelwithdataset.html b/docs/interfaces/roosterjs_content_model_types.contentmodelwithdataset.html index 1ae710842c2..f74af989916 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelwithdataset.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelwithdataset.html @@ -127,7 +127,7 @@

    dataset

    dataset: DatasetFormat
    diff --git a/docs/interfaces/roosterjs_content_model_types.contentmodelwithformat.html b/docs/interfaces/roosterjs_content_model_types.contentmodelwithformat.html index fa94a6609c3..9f132b36328 100644 --- a/docs/interfaces/roosterjs_content_model_types.contentmodelwithformat.html +++ b/docs/interfaces/roosterjs_content_model_types.contentmodelwithformat.html @@ -136,7 +136,7 @@

    format

    format: T
    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodelcontext.html b/docs/interfaces/roosterjs_content_model_types.domtomodelcontext.html index 6ecfb625e62..8fe0e73d693 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodelcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodelcontext.html @@ -139,7 +139,7 @@

    Optional addDelimiter

    Inherited from EditorContext.addDelimiterForEntity

    @@ -155,7 +155,7 @@

    Optional allowCacheE
    @@ -172,7 +172,7 @@

    blockDecorator

    @@ -188,7 +188,7 @@

    blockFormat

    @@ -204,7 +204,7 @@

    code

    @@ -220,7 +220,7 @@

    Optional darkColorHa
    @@ -236,7 +236,7 @@

    defaultElementProcessors

    @@ -253,7 +253,7 @@

    Optional defaultFormat

    Inherited from EditorContext.defaultFormat

    @@ -269,7 +269,7 @@

    defaultFormatParsers

    @@ -286,7 +286,7 @@

    defaultStyles

    @@ -302,7 +302,7 @@

    elementProcessors

    @@ -318,7 +318,7 @@

    formatParsers

    @@ -334,7 +334,7 @@

    Optional isDarkMode<
    @@ -350,7 +350,7 @@

    Optional isInSelection

    Inherited from DomToModelSelectionContext.isInSelection

    @@ -366,7 +366,7 @@

    Optional isRootRtl

    Inherited from EditorContext.isRootRtl

    @@ -382,7 +382,7 @@

    link

    @@ -398,7 +398,7 @@

    listFormat

    @@ -414,7 +414,7 @@

    Optional rangeEx

    @@ -430,7 +430,7 @@

    segmentFormat

    @@ -446,7 +446,7 @@

    Optional zoomScale

    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html b/docs/interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html index 462f7e940bf..8a7050dcba7 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodeldecoratorcontext.html @@ -109,7 +109,7 @@

    blockDecorator

    @@ -124,7 +124,7 @@

    code

    @@ -139,7 +139,7 @@

    link

    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodelformatcontext.html b/docs/interfaces/roosterjs_content_model_types.domtomodelformatcontext.html index d1ebaa4beb5..3f3f4163378 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodelformatcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodelformatcontext.html @@ -109,7 +109,7 @@

    blockFormat

    @@ -124,7 +124,7 @@

    listFormat

    @@ -139,7 +139,7 @@

    segmentFormat

    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodellistformat.html b/docs/interfaces/roosterjs_content_model_types.domtomodellistformat.html index 7317709ffbc..6adec06c2f3 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodellistformat.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodellistformat.html @@ -104,7 +104,7 @@

    levels

    @@ -119,7 +119,7 @@

    Optional listParent

    @@ -134,7 +134,7 @@

    threadItemCounts

    threadItemCounts: number[]
    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodeloption.html b/docs/interfaces/roosterjs_content_model_types.domtomodeloption.html index c9162c4407e..e39c2565eb1 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodeloption.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodeloption.html @@ -105,7 +105,7 @@

    Optional additionalFormat
    additionalFormatParsers: Partial<FormatParsersPerCategory>
    @@ -120,7 +120,7 @@

    Optional defaultStyledefaultStyleOverride: DefaultStyleMap

    @@ -135,7 +135,7 @@

    Optional formatParserformatParserOverride: Partial<FormatParsers>

    @@ -150,7 +150,7 @@

    Optional processorOverrid
    processorOverride: Partial<ElementProcessorMap>
    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html b/docs/interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html index df2f696b1ef..58a23c8c92b 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodelselectioncontext.html @@ -108,7 +108,7 @@

    Optional isInSelectionisInSelection: boolean

    @@ -123,7 +123,7 @@

    Optional rangeEx

    diff --git a/docs/interfaces/roosterjs_content_model_types.domtomodelsettings.html b/docs/interfaces/roosterjs_content_model_types.domtomodelsettings.html index ad98fe8fd5e..4e6ac1e073d 100644 --- a/docs/interfaces/roosterjs_content_model_types.domtomodelsettings.html +++ b/docs/interfaces/roosterjs_content_model_types.domtomodelsettings.html @@ -111,7 +111,7 @@

    defaultElementProcessors

    defaultElementProcessors: Readonly<ElementProcessorMap>
    @@ -127,7 +127,7 @@

    defaultFormatParsers

    defaultFormatParsers: Readonly<FormatParsers>
    @@ -143,7 +143,7 @@

    defaultStyles

    defaultStyles: DefaultStyleMap
    @@ -158,7 +158,7 @@

    elementProcessors

    elementProcessors: ElementProcessorMap
    @@ -173,7 +173,7 @@

    formatParsers

    diff --git a/docs/interfaces/roosterjs_content_model_types.editorcontext.html b/docs/interfaces/roosterjs_content_model_types.editorcontext.html index ac0e414fd3e..2eb6da1c060 100644 --- a/docs/interfaces/roosterjs_content_model_types.editorcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.editorcontext.html @@ -116,7 +116,7 @@

    Optional addDelimiteraddDelimiterForEntity: boolean

    @@ -131,7 +131,7 @@

    Optional allowCacheE
    allowCacheElement: boolean
    @@ -147,7 +147,7 @@

    Optional darkColorHa
    darkColorHandler: DarkColorHandler
    @@ -162,7 +162,7 @@

    Optional defaultFormatdefaultFormat: ContentModelSegmentFormat

    @@ -177,7 +177,7 @@

    Optional isDarkMode<
    isDarkMode: boolean
    @@ -192,7 +192,7 @@

    Optional isRootRtlisRootRtl: boolean

    @@ -207,7 +207,7 @@

    Optional zoomScale

    zoomScale: number
    diff --git a/docs/interfaces/roosterjs_content_model_types.formathandlertypemap.html b/docs/interfaces/roosterjs_content_model_types.formathandlertypemap.html index 3f0981dbd06..1ed06892703 100644 --- a/docs/interfaces/roosterjs_content_model_types.formathandlertypemap.html +++ b/docs/interfaces/roosterjs_content_model_types.formathandlertypemap.html @@ -135,7 +135,7 @@

    backgroundColor

    backgroundColor: BackgroundColorFormat
    @@ -150,7 +150,7 @@

    bold

    @@ -165,7 +165,7 @@

    border

    border: BorderFormat
    @@ -180,7 +180,7 @@

    borderBox

    borderBox: BorderBoxFormat
    @@ -195,7 +195,7 @@

    boxShadow

    boxShadow: BoxShadowFormat
    @@ -210,7 +210,7 @@

    dataset

    dataset: DatasetFormat
    @@ -225,7 +225,7 @@

    direction

    direction: DirectionFormat
    @@ -240,7 +240,7 @@

    display

    display: DisplayFormat
    @@ -255,7 +255,7 @@

    float

    @@ -270,7 +270,7 @@

    fontFamily

    fontFamily: FontFamilyFormat
    @@ -285,7 +285,7 @@

    fontSize

    fontSize: FontSizeFormat
    @@ -300,7 +300,7 @@

    htmlAlign

    htmlAlign: HtmlAlignFormat
    @@ -315,7 +315,7 @@

    id

    @@ -330,7 +330,7 @@

    italic

    italic: ItalicFormat
    @@ -345,7 +345,7 @@

    letterSpacing

    letterSpacing: LetterSpacingFormat
    @@ -360,7 +360,7 @@

    lineHeight

    lineHeight: LineHeightFormat
    @@ -375,7 +375,7 @@

    link

    @@ -390,7 +390,7 @@

    listItemThread

    listItemThread: ListThreadFormat
    @@ -405,7 +405,7 @@

    listLevelThread

    listLevelThread: ListThreadFormat
    @@ -420,7 +420,7 @@

    listStylePosition

    listStylePosition: ListStylePositionFormat
    @@ -435,7 +435,7 @@

    margin

    margin: MarginFormat
    @@ -450,7 +450,7 @@

    padding

    padding: PaddingFormat
    @@ -465,7 +465,7 @@

    size

    @@ -480,7 +480,7 @@

    strike

    strike: StrikeFormat
    @@ -495,7 +495,7 @@

    superOrSubScript

    superOrSubScript: SuperOrSubScriptFormat
    @@ -510,7 +510,7 @@

    tableLayout

    tableLayout: TableLayoutFormat
    @@ -525,7 +525,7 @@

    tableSpacing

    tableSpacing: SpacingFormat
    @@ -540,7 +540,7 @@

    textAlign

    textAlign: TextAlignFormat
    @@ -555,7 +555,7 @@

    textColor

    textColor: TextColorFormat
    @@ -570,7 +570,7 @@

    textColorOnTableCell

    textColorOnTableCell: TextColorFormat
    @@ -585,7 +585,7 @@

    underline

    underline: UnderlineFormat
    @@ -600,7 +600,7 @@

    verticalAlign

    verticalAlign: VerticalAlignFormat
    @@ -615,7 +615,7 @@

    whiteSpace

    whiteSpace: WhiteSpaceFormat
    @@ -630,7 +630,7 @@

    wordBreak

    wordBreak: WordBreakFormat
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html b/docs/interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html index 8c80c6d7024..819c0db9ab3 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomblockandsegmentnode.html @@ -103,7 +103,7 @@

    block

    block: Node
    @@ -119,7 +119,7 @@

    segment

    segment: Node
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomcontext.html b/docs/interfaces/roosterjs_content_model_types.modeltodomcontext.html index bb6bf474605..db2d0e798b8 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomcontext.html @@ -134,7 +134,7 @@

    Optional addDelimiter

    Inherited from EditorContext.addDelimiterForEntity

    @@ -150,7 +150,7 @@

    Optional allowCacheE
    @@ -167,7 +167,7 @@

    Optional darkColorHa
    @@ -183,7 +183,7 @@

    Optional defaultFormat

    Inherited from EditorContext.defaultFormat

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

    defaultFormatAppliers

    @@ -216,7 +216,7 @@

    defaultImplicitFormatMap

    @@ -232,7 +232,7 @@

    defaultModelHandlers

    @@ -249,7 +249,7 @@

    formatAppliers

    @@ -265,7 +265,7 @@

    Optional imageSelection

    Inherited from ModelToDomSelectionContext.imageSelection

    @@ -281,7 +281,7 @@

    implicitFormat

    @@ -297,7 +297,7 @@

    Optional isDarkMode<
    @@ -313,7 +313,7 @@

    Optional isRootRtl

    Inherited from EditorContext.isRootRtl

    @@ -329,7 +329,7 @@

    listFormat

    @@ -345,7 +345,7 @@

    modelHandlers

    @@ -361,7 +361,7 @@

    Optional onNodeCreat
    @@ -385,7 +385,7 @@

    regularSelection

    @@ -401,7 +401,7 @@

    Optional tableSelection

    Inherited from ModelToDomSelectionContext.tableSelection

    @@ -417,7 +417,7 @@

    Optional zoomScale

    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomformatcontext.html b/docs/interfaces/roosterjs_content_model_types.modeltodomformatcontext.html index 57f9c0c873f..fd0d4a0115c 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomformatcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomformatcontext.html @@ -108,7 +108,7 @@

    implicitFormat

    @@ -123,7 +123,7 @@

    listFormat

    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomimageselection.html b/docs/interfaces/roosterjs_content_model_types.modeltodomimageselection.html index 95d04749fd7..3a596724f18 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomimageselection.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomimageselection.html @@ -102,7 +102,7 @@

    image

    image: HTMLImageElement
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomlistcontext.html b/docs/interfaces/roosterjs_content_model_types.modeltodomlistcontext.html index f90f127b688..ff02d8acb34 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomlistcontext.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomlistcontext.html @@ -103,7 +103,7 @@

    nodeStack

    @@ -118,7 +118,7 @@

    threadItemCounts

    threadItemCounts: number[]
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomliststackitem.html b/docs/interfaces/roosterjs_content_model_types.modeltodomliststackitem.html index b1552045732..6cd86ae1297 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomliststackitem.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomliststackitem.html @@ -111,7 +111,7 @@

    Optional dataset

    @@ -127,7 +127,7 @@

    Optional format

    @@ -143,7 +143,7 @@

    Optional listType

    @@ -158,7 +158,7 @@

    node

    node: Node
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomoption.html b/docs/interfaces/roosterjs_content_model_types.modeltodomoption.html index 1b3150351bd..3e465b5decc 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomoption.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomoption.html @@ -106,7 +106,7 @@

    Optional additionalFormat
    additionalFormatAppliers: Partial<FormatAppliersPerCategory>
    @@ -121,7 +121,7 @@

    Optional defaultImplicit<
    defaultImplicitFormatOverride: DefaultImplicitFormatMap
    @@ -136,7 +136,7 @@

    Optional formatApplierformatApplierOverride: Partial<FormatAppliers>

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

    Optional modelHandlermodelHandlerOverride: Partial<ContentModelHandlerMap>

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

    Optional onNodeCreat
    onNodeCreated: OnNodeCreated
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomregularselection.html b/docs/interfaces/roosterjs_content_model_types.modeltodomregularselection.html index 1448f0a36e6..1a6414f891f 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomregularselection.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomregularselection.html @@ -104,7 +104,7 @@

    current

    @@ -119,7 +119,7 @@

    Optional end

    @@ -134,7 +134,7 @@

    Optional start

    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html b/docs/interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html index 97fd8c51b0b..ffd724d4743 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomselectioncontext.html @@ -109,7 +109,7 @@

    Optional imageSelectionimageSelection: ModelToDomImageSelection

    @@ -124,7 +124,7 @@

    regularSelection

    regularSelection: ModelToDomRegularSelection
    @@ -139,7 +139,7 @@

    Optional tableSelectiontableSelection: ModelToDomTableSelection

    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomsettings.html b/docs/interfaces/roosterjs_content_model_types.modeltodomsettings.html index 970b11fea8d..9f8b80abbea 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomsettings.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomsettings.html @@ -112,7 +112,7 @@

    defaultFormatAppliers

    defaultFormatAppliers: Readonly<FormatAppliers>
    @@ -128,7 +128,7 @@

    defaultImplicitFormatMap

    defaultImplicitFormatMap: DefaultImplicitFormatMap
    @@ -143,7 +143,7 @@

    defaultModelHandlers

    defaultModelHandlers: Readonly<ContentModelHandlerMap>
    @@ -159,7 +159,7 @@

    formatAppliers

    @@ -174,7 +174,7 @@

    modelHandlers

    modelHandlers: ContentModelHandlerMap
    @@ -189,7 +189,7 @@

    Optional onNodeCreat
    onNodeCreated: OnNodeCreated
    diff --git a/docs/interfaces/roosterjs_content_model_types.modeltodomtableselection.html b/docs/interfaces/roosterjs_content_model_types.modeltodomtableselection.html index 564d0112de7..cb861a31ebc 100644 --- a/docs/interfaces/roosterjs_content_model_types.modeltodomtableselection.html +++ b/docs/interfaces/roosterjs_content_model_types.modeltodomtableselection.html @@ -104,7 +104,7 @@

    firstCell

    firstCell: Coordinates
    @@ -119,7 +119,7 @@

    lastCell

    lastCell: Coordinates
    @@ -134,7 +134,7 @@

    table

    table: HTMLTableElement
    diff --git a/docs/interfaces/roosterjs_content_model_types.selectable.html b/docs/interfaces/roosterjs_content_model_types.selectable.html index 66ad85d0f39..c137aba50cf 100644 --- a/docs/interfaces/roosterjs_content_model_types.selectable.html +++ b/docs/interfaces/roosterjs_content_model_types.selectable.html @@ -116,7 +116,7 @@

    Optional isSelected

    isSelected: boolean
    diff --git a/docs/interfaces/roosterjs_editor_plugins.contextmenuoptions.html b/docs/interfaces/roosterjs_editor_plugins.contextmenuoptions.html index 8a904f2b0dc..0e63b49108f 100644 --- a/docs/interfaces/roosterjs_editor_plugins.contextmenuoptions.html +++ b/docs/interfaces/roosterjs_editor_plugins.contextmenuoptions.html @@ -112,7 +112,7 @@

    Optional allowDefaultallowDefaultMenu: boolean

    @@ -127,7 +127,7 @@

    Optional dismiss

    dismiss: (container: HTMLElement) => void
    @@ -169,7 +169,7 @@

    render

    render: (container: HTMLElement, items: T[], onDismiss: () => void) => void
    diff --git a/docs/interfaces/roosterjs_editor_plugins.onshowresizehandle.html b/docs/interfaces/roosterjs_editor_plugins.onshowresizehandle.html index 8fece59fd6b..3ebce692b54 100644 --- a/docs/interfaces/roosterjs_editor_plugins.onshowresizehandle.html +++ b/docs/interfaces/roosterjs_editor_plugins.onshowresizehandle.html @@ -83,7 +83,7 @@

    Callable

  • diff --git a/docs/interfaces/roosterjs_editor_types.arraydefinition.html b/docs/interfaces/roosterjs_editor_types.arraydefinition.html index e730d13ddf7..88fc626be0f 100644 --- a/docs/interfaces/roosterjs_editor_types.arraydefinition.html +++ b/docs/interfaces/roosterjs_editor_types.arraydefinition.html @@ -121,7 +121,7 @@

    Optional allowNull

    @@ -137,7 +137,7 @@

    Optional isOptional

    @@ -152,7 +152,7 @@

    itemDef

    @@ -167,7 +167,7 @@

    Optional maxLength

    maxLength: number
    @@ -182,7 +182,7 @@

    Optional minLength

    minLength: number
    @@ -198,7 +198,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.autolinkfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.autolinkfeaturesettings.html index a1fbd505e30..f074a014ba3 100644 --- a/docs/interfaces/roosterjs_editor_types.autolinkfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.autolinkfeaturesettings.html @@ -108,7 +108,7 @@

    autoLink

    autoLink: boolean
    @@ -128,7 +128,7 @@

    unlinkWhenBackspaceAfterLink

    unlinkWhenBackspaceAfterLink: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.basepluginevent.html b/docs/interfaces/roosterjs_editor_types.basepluginevent.html index 17cef850795..2a23c4204d4 100644 --- a/docs/interfaces/roosterjs_editor_types.basepluginevent.html +++ b/docs/interfaces/roosterjs_editor_types.basepluginevent.html @@ -206,7 +206,7 @@

    Optional eventDataCa
    eventDataCache: {}
    @@ -231,7 +231,7 @@

    eventType

    eventType: T
    diff --git a/docs/interfaces/roosterjs_editor_types.beforecutcopyevent.html b/docs/interfaces/roosterjs_editor_types.beforecutcopyevent.html index 4898973ce52..f254b7632c7 100644 --- a/docs/interfaces/roosterjs_editor_types.beforecutcopyevent.html +++ b/docs/interfaces/roosterjs_editor_types.beforecutcopyevent.html @@ -116,7 +116,7 @@

    clonedRoot

    @@ -132,7 +132,7 @@

    Optional eventDataCa
    @@ -158,7 +158,7 @@

    eventType

    @@ -174,7 +174,7 @@

    isCut

    @@ -190,7 +190,7 @@

    range

    @@ -206,7 +206,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.beforecutcopyeventdata.html b/docs/interfaces/roosterjs_editor_types.beforecutcopyeventdata.html index ef07d49568e..e45d635a951 100644 --- a/docs/interfaces/roosterjs_editor_types.beforecutcopyeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.beforecutcopyeventdata.html @@ -113,7 +113,7 @@

    clonedRoot

    clonedRoot: HTMLDivElement
    @@ -128,7 +128,7 @@

    isCut

    isCut: boolean
    @@ -143,7 +143,7 @@

    range

    range: Range
    @@ -158,7 +158,7 @@

    rawEvent

    rawEvent: ClipboardEvent
    diff --git a/docs/interfaces/roosterjs_editor_types.beforedisposeevent.html b/docs/interfaces/roosterjs_editor_types.beforedisposeevent.html index efdc35f0f8a..b1640e16e33 100644 --- a/docs/interfaces/roosterjs_editor_types.beforedisposeevent.html +++ b/docs/interfaces/roosterjs_editor_types.beforedisposeevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html b/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html index 00a692fc595..a027f8be72b 100644 --- a/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html +++ b/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingdata.html @@ -110,7 +110,7 @@

    rawEvent

    rawEvent: KeyboardEvent
    diff --git a/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html b/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html index e1ddd5b695c..4dce91ac497 100644 --- a/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html +++ b/docs/interfaces/roosterjs_editor_types.beforekeyboardeditingevent.html @@ -113,7 +113,7 @@

    Optional eventDataCa
    @@ -139,7 +139,7 @@

    eventType

    @@ -155,7 +155,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.beforepasteevent.html b/docs/interfaces/roosterjs_editor_types.beforepasteevent.html index 75c6224c188..82a89efa607 100644 --- a/docs/interfaces/roosterjs_editor_types.beforepasteevent.html +++ b/docs/interfaces/roosterjs_editor_types.beforepasteevent.html @@ -124,7 +124,7 @@

    clipboardData

    @@ -140,7 +140,7 @@

    Optional eventDataCa
    @@ -166,7 +166,7 @@

    eventType

    @@ -182,7 +182,7 @@

    fragment

    @@ -198,7 +198,7 @@

    htmlAfter

    @@ -214,7 +214,7 @@

    htmlAttributes

    @@ -230,7 +230,7 @@

    htmlBefore

    @@ -246,7 +246,7 @@

    Readonly pasteType

    @@ -262,7 +262,7 @@

    sanitizingOption

    diff --git a/docs/interfaces/roosterjs_editor_types.beforepasteeventdata.html b/docs/interfaces/roosterjs_editor_types.beforepasteeventdata.html index 84c6840f033..87261464e88 100644 --- a/docs/interfaces/roosterjs_editor_types.beforepasteeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.beforepasteeventdata.html @@ -119,7 +119,7 @@

    clipboardData

    clipboardData: ClipboardData
    @@ -134,7 +134,7 @@

    fragment

    fragment: DocumentFragment
    @@ -149,7 +149,7 @@

    htmlAfter

    htmlAfter: string
    @@ -164,7 +164,7 @@

    htmlAttributes

    htmlAttributes: Record<string, string>
    @@ -179,7 +179,7 @@

    htmlBefore

    htmlBefore: string
    @@ -194,7 +194,7 @@

    Readonly pasteType

    @@ -209,7 +209,7 @@

    sanitizingOption

    sanitizingOption: Required<HtmlSanitizerOptions>
    diff --git a/docs/interfaces/roosterjs_editor_types.beforesetcontentevent.html b/docs/interfaces/roosterjs_editor_types.beforesetcontentevent.html index ece0376ab87..3c46988b529 100644 --- a/docs/interfaces/roosterjs_editor_types.beforesetcontentevent.html +++ b/docs/interfaces/roosterjs_editor_types.beforesetcontentevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    newContent

    diff --git a/docs/interfaces/roosterjs_editor_types.beforesetcontenteventdata.html b/docs/interfaces/roosterjs_editor_types.beforesetcontenteventdata.html index 5d26e57a671..cb222e08695 100644 --- a/docs/interfaces/roosterjs_editor_types.beforesetcontenteventdata.html +++ b/docs/interfaces/roosterjs_editor_types.beforesetcontenteventdata.html @@ -110,7 +110,7 @@

    newContent

    newContent: string
    diff --git a/docs/interfaces/roosterjs_editor_types.blockelement.html b/docs/interfaces/roosterjs_editor_types.blockelement.html index a24896f91fa..8d2df17aff8 100644 --- a/docs/interfaces/roosterjs_editor_types.blockelement.html +++ b/docs/interfaces/roosterjs_editor_types.blockelement.html @@ -115,7 +115,7 @@

    collapseToSingleElement

  • @@ -137,7 +137,7 @@

    contains

  • @@ -165,7 +165,7 @@

    equals

  • @@ -193,7 +193,7 @@

    getEndNode

  • @@ -215,7 +215,7 @@

    getStartNode

  • @@ -237,7 +237,7 @@

    getTextContent

  • @@ -259,7 +259,7 @@

    isAfter

  • diff --git a/docs/interfaces/roosterjs_editor_types.booleandefinition.html b/docs/interfaces/roosterjs_editor_types.booleandefinition.html index e102fc12f8e..aa9b81140dc 100644 --- a/docs/interfaces/roosterjs_editor_types.booleandefinition.html +++ b/docs/interfaces/roosterjs_editor_types.booleandefinition.html @@ -111,7 +111,7 @@

    Optional allowNull

    @@ -127,7 +127,7 @@

    Optional isOptional

    @@ -143,7 +143,7 @@

    type

    @@ -158,7 +158,7 @@

    Optional value

    value: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.browserinfo.html b/docs/interfaces/roosterjs_editor_types.browserinfo.html index a7f1d5f0a12..2fd39809068 100644 --- a/docs/interfaces/roosterjs_editor_types.browserinfo.html +++ b/docs/interfaces/roosterjs_editor_types.browserinfo.html @@ -113,7 +113,7 @@

    Optional isAndroid: boolean

    @@ -128,7 +128,7 @@

    Optional isChrome: boolean

    @@ -143,7 +143,7 @@

    Optional isEdge: boolean

    @@ -158,7 +158,7 @@

    Optional isFirefox: boolean

    @@ -173,7 +173,7 @@

    Optional isIE: boolean

    @@ -188,7 +188,7 @@

    Optional isIE11OrGreater: boolean

    @@ -203,7 +203,7 @@

    Optional isIEOrEdge: boolean

    @@ -218,7 +218,7 @@

    Optional isMac: boolean

    @@ -233,7 +233,7 @@

    Optional isMobileOrTablet: boolean

    @@ -248,7 +248,7 @@

    Optional isSafari: boolean

    @@ -263,7 +263,7 @@

    Optional isWebKit: boolean

    @@ -278,7 +278,7 @@

    Optional isWin: boolean

    diff --git a/docs/interfaces/roosterjs_editor_types.buildineditfeature.html b/docs/interfaces/roosterjs_editor_types.buildineditfeature.html index 743cabe3fe4..c426710656b 100644 --- a/docs/interfaces/roosterjs_editor_types.buildineditfeature.html +++ b/docs/interfaces/roosterjs_editor_types.buildineditfeature.html @@ -120,7 +120,7 @@

    Optional allowFunction

    Inherited from GenericContentEditFeature.allowFunctionKeys

    @@ -136,7 +136,7 @@

    Optional defaultDisabled<
    defaultDisabled: boolean
    @@ -152,7 +152,7 @@

    handleEvent

    @@ -202,7 +202,7 @@

    keys

    @@ -218,7 +218,7 @@

    shouldHandleEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.clipboarddata.html b/docs/interfaces/roosterjs_editor_types.clipboarddata.html index aa81717ad3a..67c87de9f68 100644 --- a/docs/interfaces/roosterjs_editor_types.clipboarddata.html +++ b/docs/interfaces/roosterjs_editor_types.clipboarddata.html @@ -113,7 +113,7 @@

    customValues

    customValues: Record<string, string>
    @@ -129,7 +129,7 @@

    Optional files

    files: File[]
    @@ -144,7 +144,7 @@

    Optional html

    html: string
    @@ -159,7 +159,7 @@

    Optional htmlFirstLe
    htmlFirstLevelChildTags: string[]
    @@ -174,7 +174,7 @@

    image

    image: File
    @@ -189,7 +189,7 @@

    Optional imageDataUr
    imageDataUri: string
    @@ -204,7 +204,7 @@

    Optional linkPreview

    linkPreview: EdgeLinkPreview
    @@ -219,7 +219,7 @@

    Optional pasteNativeEvent: boolean

    @@ -234,7 +234,7 @@

    rawHtml

    rawHtml: string
    @@ -251,7 +251,7 @@

    Optional snapshotBeforesnapshotBeforePaste: string

    @@ -266,7 +266,7 @@

    text

    text: string
    @@ -281,7 +281,7 @@

    types

    types: string[]
    diff --git a/docs/interfaces/roosterjs_editor_types.codefeaturesettings.html b/docs/interfaces/roosterjs_editor_types.codefeaturesettings.html index b8b31b60f4d..ddb792e18f7 100644 --- a/docs/interfaces/roosterjs_editor_types.codefeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.codefeaturesettings.html @@ -108,7 +108,7 @@

    removeCodeWhenBackspaceOnEmptyFirstLine

    removeCodeWhenBackspaceOnEmptyFirstLine: boolean
    @@ -128,7 +128,7 @@

    removeCodeWhenEnterOnEmptyLine

    removeCodeWhenEnterOnEmptyLine: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.colorkeyandvalue.html b/docs/interfaces/roosterjs_editor_types.colorkeyandvalue.html index cd21bb81af9..4eae067387a 100644 --- a/docs/interfaces/roosterjs_editor_types.colorkeyandvalue.html +++ b/docs/interfaces/roosterjs_editor_types.colorkeyandvalue.html @@ -104,7 +104,7 @@

    Optional darkModeCol
    darkModeColor: string
    @@ -119,7 +119,7 @@

    Optional key

    key: string
    @@ -134,7 +134,7 @@

    lightModeColor

    lightModeColor: string
    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html b/docs/interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html index 82e4a3d26e8..2f035dc756d 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblebeforecutcopyevent.html @@ -116,7 +116,7 @@

    clonedRoot

    @@ -132,7 +132,7 @@

    Optional eventDataCa
    @@ -158,7 +158,7 @@

    eventType

    @@ -174,7 +174,7 @@

    isCut

    @@ -190,7 +190,7 @@

    range

    @@ -206,7 +206,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html b/docs/interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html index 981bf7f3471..51d51cad0eb 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblebeforedisposeevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html b/docs/interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html index a7c0a95104a..05d03d4a07f 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblebeforekeyboardeditingevent.html @@ -113,7 +113,7 @@

    Optional eventDataCa
    @@ -139,7 +139,7 @@

    eventType

    @@ -155,7 +155,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html b/docs/interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html index 6dc5f89dfdf..645c4ffc7da 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblebeforepasteevent.html @@ -124,7 +124,7 @@

    clipboardData

    @@ -140,7 +140,7 @@

    Optional eventDataCa
    @@ -166,7 +166,7 @@

    eventType

    @@ -182,7 +182,7 @@

    fragment

    @@ -198,7 +198,7 @@

    htmlAfter

    @@ -214,7 +214,7 @@

    htmlAttributes

    @@ -230,7 +230,7 @@

    htmlBefore

    @@ -246,7 +246,7 @@

    Readonly pasteType

    @@ -262,7 +262,7 @@

    sanitizingOption

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html b/docs/interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html index f07fcc6cf9f..54e4b3a98af 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblebeforesetcontentevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    newContent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html b/docs/interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html index 3b1486386ab..f71fae3b0fb 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblecontentchangedevent.html @@ -115,7 +115,7 @@

    Optional additionalData

    Inherited from ContentChangedEventData.additionalData

  • @@ -126,7 +126,7 @@

    Optional data

    @@ -142,7 +142,7 @@

    Optional eventDataCa
    @@ -168,7 +168,7 @@

    eventType

    @@ -184,7 +184,7 @@

    source

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleeditimageevent.html b/docs/interfaces/roosterjs_editor_types.compatibleeditimageevent.html index e53c4c836f6..ee33f6b540c 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleeditimageevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleeditimageevent.html @@ -117,7 +117,7 @@

    Optional eventDataCa
    @@ -143,7 +143,7 @@

    eventType

    @@ -159,7 +159,7 @@

    Readonly image

    @@ -175,7 +175,7 @@

    newSrc

    @@ -192,7 +192,7 @@

    Readonly originalSrc

    @@ -208,7 +208,7 @@

    Readonly previousSrc

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html b/docs/interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html index 8922a6bd7d4..f43c322a2f3 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleeditorreadyevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html b/docs/interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html index 5d140889d99..c017e1fec1b 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleentershadoweditevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    fragment

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

    selectionPath

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleentityoperationevent.html b/docs/interfaces/roosterjs_editor_types.compatibleentityoperationevent.html index 1ba3797faf5..89066ba29fe 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleentityoperationevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleentityoperationevent.html @@ -119,7 +119,7 @@

    Optional contentForS
    @@ -136,7 +136,7 @@

    entity

    @@ -152,7 +152,7 @@

    Optional eventDataCa
    @@ -178,7 +178,7 @@

    eventType

    @@ -194,7 +194,7 @@

    operation

    @@ -210,7 +210,7 @@

    Optional rawEvent

    @@ -226,7 +226,7 @@

    Optional shouldPersist

    Inherited from EntityOperationEventData.shouldPersist

    @@ -244,7 +244,7 @@

    Optional state

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html b/docs/interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html index 9768c66c73f..d28463c2764 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleextractcontentwithdomevent.html @@ -116,7 +116,7 @@

    clonedRoot

    @@ -133,7 +133,7 @@

    Optional eventDataCa
    @@ -159,7 +159,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html b/docs/interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html index c186315de76..2b0f2f82806 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleleaveshadoweditevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html b/docs/interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html index 19bf283778a..8ea1e80ddaa 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblependingformatstatechangedevent.html @@ -111,7 +111,7 @@

    Optional eventDataCa
    @@ -137,7 +137,7 @@

    eventType

    @@ -152,7 +152,7 @@

    Optional formatCallbackformatCallback: (element: HTMLElement, isInnerNode?: boolean) => any

    @@ -191,7 +191,7 @@

    formatState

    formatState: PendableFormatState
    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html b/docs/interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html index 5d5042e2a8b..4b00af83b0a 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleplugincompositionevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html b/docs/interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html index 8ae4f133cea..7ad4297705e 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleplugincontextmenuevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    items

    @@ -174,7 +174,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleplugininputevent.html b/docs/interfaces/roosterjs_editor_types.compatibleplugininputevent.html index 46fab66b31a..18bb08136eb 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleplugininputevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleplugininputevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html index 7b5d9f503d7..7309861999c 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeydownevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    Optional handledByEdit

    Inherited from PluginKeyDownEventData.handledByEditFeature

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

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html index dca72d9b667..126b1261c58 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeypressevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html index 6b1e9234223..27430b9aa34 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginkeyupevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html index 7161a06e941..6075cdea388 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginmousedownevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html index c03208826a0..13357ae47db 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginmouseupevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    Optional isClicking

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

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html b/docs/interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html index 535d11d9010..46fe0ed59ed 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblepluginscrollevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    rawEvent

    @@ -167,7 +167,7 @@

    scrollContainer

    diff --git a/docs/interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html b/docs/interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html index ff0b7595baa..271cde96bf4 100644 --- a/docs/interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatibleselectionchangedevent.html @@ -113,7 +113,7 @@

    Optional eventDataCa
    @@ -139,7 +139,7 @@

    eventType

    @@ -155,7 +155,7 @@

    selectionRangeEx

    diff --git a/docs/interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html b/docs/interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html index 36155b9d00e..bd73017e00f 100644 --- a/docs/interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.compatiblezoomchangedevent.html @@ -115,7 +115,7 @@

    Optional eventDataCa
    @@ -141,7 +141,7 @@

    eventType

    @@ -157,7 +157,7 @@

    newZoomScale

    @@ -173,7 +173,7 @@

    oldZoomScale

    diff --git a/docs/interfaces/roosterjs_editor_types.contentchangeddata.html b/docs/interfaces/roosterjs_editor_types.contentchangeddata.html index f4b6e2bde5a..78e94ef0d4c 100644 --- a/docs/interfaces/roosterjs_editor_types.contentchangeddata.html +++ b/docs/interfaces/roosterjs_editor_types.contentchangeddata.html @@ -103,7 +103,7 @@

    Optional formatApiNa
    formatApiName: string
    @@ -118,7 +118,7 @@

    Optional getEntitySt
    getEntityState: () => EntityState[]
    diff --git a/docs/interfaces/roosterjs_editor_types.contentchangedevent.html b/docs/interfaces/roosterjs_editor_types.contentchangedevent.html index 218ab9eac57..aabd1249cdc 100644 --- a/docs/interfaces/roosterjs_editor_types.contentchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.contentchangedevent.html @@ -115,7 +115,7 @@

    Optional additionalData

    Inherited from ContentChangedEventData.additionalData

    @@ -126,7 +126,7 @@

    Optional data

    @@ -142,7 +142,7 @@

    Optional eventDataCa
    @@ -168,7 +168,7 @@

    eventType

    @@ -184,7 +184,7 @@

    source

    diff --git a/docs/interfaces/roosterjs_editor_types.contentchangedeventdata.html b/docs/interfaces/roosterjs_editor_types.contentchangedeventdata.html index acb6ab6e3bd..2290b8d78e8 100644 --- a/docs/interfaces/roosterjs_editor_types.contentchangedeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.contentchangedeventdata.html @@ -112,7 +112,7 @@

    Optional additionalDataadditionalData: ContentChangedData

    @@ -122,7 +122,7 @@

    Optional data

    data: any
    @@ -137,7 +137,7 @@

    source

    source: string
    diff --git a/docs/interfaces/roosterjs_editor_types.contenteditfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.contenteditfeaturesettings.html index 38ddb9a21f3..b615effcb2f 100644 --- a/docs/interfaces/roosterjs_editor_types.contenteditfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.contenteditfeaturesettings.html @@ -177,7 +177,7 @@

    autoBullet

    @@ -198,7 +198,7 @@

    autoBulletList

    @@ -219,7 +219,7 @@

    autoHyphen

    @@ -238,7 +238,7 @@

    autoLink

    @@ -259,7 +259,7 @@

    autoNumberingList

    @@ -280,7 +280,7 @@

    backspaceAfterEntity

    @@ -297,7 +297,7 @@

    clickOnEntity

    @@ -314,7 +314,7 @@

    defaultShortcut

    @@ -335,7 +335,7 @@

    deleteBeforeEntity

    @@ -352,7 +352,7 @@

    deleteTableWithBackspace

    @@ -369,7 +369,7 @@

    enterBeforeReadonlyEntity

    @@ -388,7 +388,7 @@

    escapeFromEntity

    @@ -405,7 +405,7 @@

    indentTableOnTab

    @@ -421,7 +421,7 @@

    indentWhenAltShiftRight

    @@ -442,7 +442,7 @@

    indentWhenTab

    @@ -463,7 +463,7 @@

    indentWhenTabText

    @@ -484,7 +484,7 @@

    insertLineBeforeStructuredNodeFeature

    @@ -506,7 +506,7 @@

    maintainListChain

    @@ -522,7 +522,7 @@

    maintainListChainWhenDelete

    @@ -538,7 +538,7 @@

    markdownBold

    @@ -559,7 +559,7 @@

    markdownInlineCode

    @@ -580,7 +580,7 @@

    markdownItalic

    @@ -601,7 +601,7 @@

    markdownStrikethru

    @@ -622,7 +622,7 @@

    mergeInNewLineWhenBackspaceOnFirstChar

    @@ -643,7 +643,7 @@

    mergeListOnBackspaceAfterList

    @@ -664,7 +664,7 @@

    moveBetweenDelimitersFeature

    @@ -680,7 +680,7 @@

    noCycleCursorMove

    @@ -702,7 +702,7 @@

    outdentWhenAltShiftLeft

    @@ -723,7 +723,7 @@

    outdentWhenBackspaceOnEmptyFirstLine

    @@ -744,7 +744,7 @@

    outdentWhenEnterOnEmptyLine

    @@ -765,7 +765,7 @@

    outdentWhenShiftTab

    @@ -786,7 +786,7 @@

    outdentWhenTabText

    @@ -804,7 +804,7 @@

    removeCodeWhenBackspaceOnEmptyFirstLine

    @@ -825,7 +825,7 @@

    removeCodeWhenEnterOnEmptyLine

    @@ -846,7 +846,7 @@

    removeEntityBetweenDelimiters

    @@ -862,7 +862,7 @@

    tabInTable

    @@ -883,7 +883,7 @@

    unlinkWhenBackspaceAfterLink

    @@ -904,7 +904,7 @@

    unquoteWhenBackspaceOnEmptyFirstLine

    @@ -925,7 +925,7 @@

    unquoteWhenEnterOnEmptyLine

    @@ -946,7 +946,7 @@

    upDownInTable

    diff --git a/docs/interfaces/roosterjs_editor_types.contentmetadatabase.html b/docs/interfaces/roosterjs_editor_types.contentmetadatabase.html index 421d1141e06..93d2ecc20a3 100644 --- a/docs/interfaces/roosterjs_editor_types.contentmetadatabase.html +++ b/docs/interfaces/roosterjs_editor_types.contentmetadatabase.html @@ -122,7 +122,7 @@

    isDarkMode

    isDarkMode: boolean
    @@ -132,7 +132,7 @@

    type

    type: T
    diff --git a/docs/interfaces/roosterjs_editor_types.contextmenuprovider.html b/docs/interfaces/roosterjs_editor_types.contextmenuprovider.html index cd3e5046a6d..cee865405ad 100644 --- a/docs/interfaces/roosterjs_editor_types.contextmenuprovider.html +++ b/docs/interfaces/roosterjs_editor_types.contextmenuprovider.html @@ -121,7 +121,7 @@

    dispose

    @@ -153,7 +153,7 @@

    getContextMenuItems

    getContextMenuItems: (target: Node) => T[]
    @@ -185,7 +185,7 @@

    getName

    @@ -216,7 +216,7 @@

    initialize

    @@ -260,7 +260,7 @@

    Optional onPluginEve
    @@ -304,7 +304,7 @@

    Optional willHandleE
    diff --git a/docs/interfaces/roosterjs_editor_types.coordinates.html b/docs/interfaces/roosterjs_editor_types.coordinates.html index c1bbcf7544c..c89aa9d9801 100644 --- a/docs/interfaces/roosterjs_editor_types.coordinates.html +++ b/docs/interfaces/roosterjs_editor_types.coordinates.html @@ -103,7 +103,7 @@

    x

    x: number
    @@ -118,7 +118,7 @@

    y

    y: number
    diff --git a/docs/interfaces/roosterjs_editor_types.copypastepluginstate.html b/docs/interfaces/roosterjs_editor_types.copypastepluginstate.html index 4b8c2530d46..2d2fe19f34c 100644 --- a/docs/interfaces/roosterjs_editor_types.copypastepluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.copypastepluginstate.html @@ -102,7 +102,7 @@

    allowedCustomPasteType

    allowedCustomPasteType: string[]
    diff --git a/docs/interfaces/roosterjs_editor_types.coreapimap.html b/docs/interfaces/roosterjs_editor_types.coreapimap.html index aed064aa356..5aa28d5c27e 100644 --- a/docs/interfaces/roosterjs_editor_types.coreapimap.html +++ b/docs/interfaces/roosterjs_editor_types.coreapimap.html @@ -128,7 +128,7 @@

    addUndoSnapshot

    addUndoSnapshot: AddUndoSnapshot
    @@ -158,7 +158,7 @@

    attachDomEvent

    attachDomEvent: AttachDomEvent
    @@ -187,7 +187,7 @@

    createPasteFragment

    createPasteFragment: CreatePasteFragment
    @@ -220,7 +220,7 @@

    ensureTypeInContainer

    ensureTypeInContainer: EnsureTypeInContainer
    @@ -249,7 +249,7 @@

    focus

    focus: Focus
    @@ -269,7 +269,7 @@

    getContent

    getContent: GetContent
    @@ -295,7 +295,7 @@

    getPendableFormatState

    getPendableFormatState: GetPendableFormatState
    @@ -321,7 +321,7 @@

    getSelectionRange

    getSelectionRange: GetSelectionRange
    @@ -347,7 +347,7 @@

    getSelectionRangeEx

    getSelectionRangeEx: GetSelectionRangeEx
    @@ -373,7 +373,7 @@

    getStyleBasedFormatState

    getStyleBasedFormatState: GetStyleBasedFormatState
    @@ -396,7 +396,7 @@

    hasFocus

    hasFocus: HasFocus
    @@ -419,7 +419,7 @@

    insertNode

    insertNode: InsertNode
    @@ -442,7 +442,7 @@

    restoreUndoSnapshot

    restoreUndoSnapshot: RestoreUndoSnapshot
    @@ -465,7 +465,7 @@

    select

    select: Select
    @@ -498,7 +498,7 @@

    selectImage

    selectImage: SelectImage
    @@ -527,7 +527,7 @@

    selectRange

    selectRange: SelectRange
    @@ -555,7 +555,7 @@

    selectTable

    selectTable: SelectTable
    @@ -588,7 +588,7 @@

    setContent

    setContent: SetContent
    @@ -615,7 +615,7 @@

    switchShadowEdit

    switchShadowEdit: SwitchShadowEdit
    @@ -638,7 +638,7 @@

    transformColor

    transformColor: TransformColor
    @@ -677,7 +677,7 @@

    triggerEvent

    triggerEvent: TriggerEvent
    diff --git a/docs/interfaces/roosterjs_editor_types.coreplugins.html b/docs/interfaces/roosterjs_editor_types.coreplugins.html index 3987af83a42..ab34147fa35 100644 --- a/docs/interfaces/roosterjs_editor_types.coreplugins.html +++ b/docs/interfaces/roosterjs_editor_types.coreplugins.html @@ -114,7 +114,7 @@

    Readonly copyPaste

    @@ -129,7 +129,7 @@

    Readonly domEvent

    @@ -144,7 +144,7 @@

    Readonly edit

    @@ -159,7 +159,7 @@

    Readonly entity

    @@ -174,7 +174,7 @@

    Readonly imageSelectionimageSelection: EditorPlugin

    @@ -189,7 +189,7 @@

    Readonly lifecycle

    @@ -204,7 +204,7 @@

    Readonly mouseUp

    mouseUp: EditorPlugin
    @@ -220,7 +220,7 @@

    Readonly normalizeTablenormalizeTable: EditorPlugin

    @@ -235,7 +235,7 @@

    Readonly pendingFormatpendingFormatState: PluginWithState<PendingFormatStatePluginState>

    @@ -250,7 +250,7 @@

    Readonly typeAfterLi
    typeAfterLink: EditorPlugin
    @@ -268,7 +268,7 @@

    Readonly typeInContainer<
    typeInContainer: EditorPlugin
    @@ -283,7 +283,7 @@

    Readonly undo

    diff --git a/docs/interfaces/roosterjs_editor_types.createelementdata.html b/docs/interfaces/roosterjs_editor_types.createelementdata.html index d7ec7121c9e..a46c154351a 100644 --- a/docs/interfaces/roosterjs_editor_types.createelementdata.html +++ b/docs/interfaces/roosterjs_editor_types.createelementdata.html @@ -108,7 +108,7 @@

    Optional attributes

    attributes: Record<string, string>
    @@ -123,7 +123,7 @@

    Optional children

    children: (string | CreateElementData)[]
    @@ -138,7 +138,7 @@

    Optional className

    className: string
    @@ -153,7 +153,7 @@

    Optional dataset

    dataset: Record<string, string>
    @@ -168,7 +168,7 @@

    Optional namespace

    namespace: string
    @@ -183,7 +183,7 @@

    Optional style

    style: string
    @@ -198,7 +198,7 @@

    tag

    tag: string
    diff --git a/docs/interfaces/roosterjs_editor_types.cursorfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.cursorfeaturesettings.html index e7947ba4c76..97c8a2be180 100644 --- a/docs/interfaces/roosterjs_editor_types.cursorfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.cursorfeaturesettings.html @@ -107,7 +107,7 @@

    noCycleCursorMove

    noCycleCursorMove: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.customdata.html b/docs/interfaces/roosterjs_editor_types.customdata.html index 158bdb7158e..ffbab371453 100644 --- a/docs/interfaces/roosterjs_editor_types.customdata.html +++ b/docs/interfaces/roosterjs_editor_types.customdata.html @@ -103,7 +103,7 @@

    Optional disposer

    disposer: (value: any) => void
    @@ -140,7 +140,7 @@

    value

    value: any
    diff --git a/docs/interfaces/roosterjs_editor_types.customizedefinition.html b/docs/interfaces/roosterjs_editor_types.customizedefinition.html index 032477648af..ceb865d8fe7 100644 --- a/docs/interfaces/roosterjs_editor_types.customizedefinition.html +++ b/docs/interfaces/roosterjs_editor_types.customizedefinition.html @@ -112,7 +112,7 @@

    Optional allowNull

    @@ -128,7 +128,7 @@

    Optional isOptional

    @@ -144,7 +144,7 @@

    type

    @@ -159,7 +159,7 @@

    validator

    validator: (input: any) => boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.customreplacement.html b/docs/interfaces/roosterjs_editor_types.customreplacement.html index 7751b89c785..aec8d7ff985 100644 --- a/docs/interfaces/roosterjs_editor_types.customreplacement.html +++ b/docs/interfaces/roosterjs_editor_types.customreplacement.html @@ -105,7 +105,7 @@

    matchSourceCaseSensitive

    matchSourceCaseSensitive: boolean
    @@ -120,7 +120,7 @@

    replacementHTML

    replacementHTML: string
    @@ -135,7 +135,7 @@

    Optional shouldReplaceshouldReplace: (replacement: CustomReplacement, content: string, sourceEditor?: IEditor) => boolean

    @@ -193,7 +193,7 @@

    sourceString

    sourceString: string
    diff --git a/docs/interfaces/roosterjs_editor_types.darkcolorhandler.html b/docs/interfaces/roosterjs_editor_types.darkcolorhandler.html index 54f11030a2f..ae54190b55f 100644 --- a/docs/interfaces/roosterjs_editor_types.darkcolorhandler.html +++ b/docs/interfaces/roosterjs_editor_types.darkcolorhandler.html @@ -111,7 +111,7 @@

    findLightColorFromDarkColor

  • @@ -142,7 +142,7 @@

    getKnownColorsCopy

  • @@ -164,7 +164,7 @@

    parseColorValue

  • @@ -203,7 +203,7 @@

    registerColor

  • @@ -247,7 +247,7 @@

    reset

  • @@ -269,7 +269,7 @@

    transformElementColor

  • diff --git a/docs/interfaces/roosterjs_editor_types.defaultformat.html b/docs/interfaces/roosterjs_editor_types.defaultformat.html index f19bc93d60e..af3553aa6ae 100644 --- a/docs/interfaces/roosterjs_editor_types.defaultformat.html +++ b/docs/interfaces/roosterjs_editor_types.defaultformat.html @@ -110,7 +110,7 @@

    Optional backgroundColor<
    backgroundColor: string
    @@ -125,7 +125,7 @@

    Optional backgroundColors
    backgroundColors: ModeIndependentColor
    @@ -140,7 +140,7 @@

    Optional bold

    bold: boolean
    @@ -155,7 +155,7 @@

    Optional fontFamily

    fontFamily: string
    @@ -170,7 +170,7 @@

    Optional fontSize

    fontSize: string
    @@ -185,7 +185,7 @@

    Optional italic

    italic: boolean
    @@ -200,7 +200,7 @@

    Optional textColor

    textColor: string
    @@ -215,7 +215,7 @@

    Optional textColors

    @@ -230,7 +230,7 @@

    Optional underline

    underline: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.definitionbase.html b/docs/interfaces/roosterjs_editor_types.definitionbase.html index 93a59530ad9..aebf7aec451 100644 --- a/docs/interfaces/roosterjs_editor_types.definitionbase.html +++ b/docs/interfaces/roosterjs_editor_types.definitionbase.html @@ -132,7 +132,7 @@

    Optional allowNull

    allowNull: boolean
    @@ -147,7 +147,7 @@

    Optional isOptional

    isOptional: boolean
    @@ -162,7 +162,7 @@

    type

    type: T
    diff --git a/docs/interfaces/roosterjs_editor_types.domeventhandlerobject.html b/docs/interfaces/roosterjs_editor_types.domeventhandlerobject.html index f84d64af0de..5e2bf8ee53f 100644 --- a/docs/interfaces/roosterjs_editor_types.domeventhandlerobject.html +++ b/docs/interfaces/roosterjs_editor_types.domeventhandlerobject.html @@ -103,7 +103,7 @@

    beforeDispatch

    beforeDispatch: DOMEventHandlerFunction<Event>
    @@ -119,7 +119,7 @@

    pluginEventType

    diff --git a/docs/interfaces/roosterjs_editor_types.domeventpluginstate.html b/docs/interfaces/roosterjs_editor_types.domeventpluginstate.html index a039ad79c7c..21f84a75863 100644 --- a/docs/interfaces/roosterjs_editor_types.domeventpluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.domeventpluginstate.html @@ -108,7 +108,7 @@

    contextMenuProviders

    contextMenuProviders: ContextMenuProvider<any>[]
    @@ -123,7 +123,7 @@

    imageSelectionRange

    imageSelectionRange: ImageSelectionRange
    @@ -138,7 +138,7 @@

    isInIME

    isInIME: boolean
    @@ -153,7 +153,7 @@

    scrollContainer

    scrollContainer: HTMLElement
    @@ -168,7 +168,7 @@

    selectionRange

    selectionRange: Range
    @@ -183,7 +183,7 @@

    stopPrintableKeyboardEventPropagation

    stopPrintableKeyboardEventPropagation: boolean
    @@ -198,7 +198,7 @@

    tableSelectionRange

    tableSelectionRange: TableSelectionRange
    diff --git a/docs/interfaces/roosterjs_editor_types.edgelinkpreview.html b/docs/interfaces/roosterjs_editor_types.edgelinkpreview.html index c2e088d7b7c..030e432fba6 100644 --- a/docs/interfaces/roosterjs_editor_types.edgelinkpreview.html +++ b/docs/interfaces/roosterjs_editor_types.edgelinkpreview.html @@ -106,7 +106,7 @@

    domain

    domain: string
    @@ -121,7 +121,7 @@

    preferred_format

    preferred_format: string
    @@ -136,7 +136,7 @@

    title

    title: string
    @@ -151,7 +151,7 @@

    type

    type: string
    @@ -166,7 +166,7 @@

    url

    url: string
    diff --git a/docs/interfaces/roosterjs_editor_types.editimageevent.html b/docs/interfaces/roosterjs_editor_types.editimageevent.html index a1bef446a2c..9e6c2f2e86c 100644 --- a/docs/interfaces/roosterjs_editor_types.editimageevent.html +++ b/docs/interfaces/roosterjs_editor_types.editimageevent.html @@ -117,7 +117,7 @@

    Optional eventDataCa
    @@ -143,7 +143,7 @@

    eventType

    @@ -159,7 +159,7 @@

    Readonly image

    @@ -175,7 +175,7 @@

    newSrc

    @@ -192,7 +192,7 @@

    Readonly originalSrc

    @@ -208,7 +208,7 @@

    Readonly previousSrc

    diff --git a/docs/interfaces/roosterjs_editor_types.editimageeventdata.html b/docs/interfaces/roosterjs_editor_types.editimageeventdata.html index 4281373db2c..da5c6d71b02 100644 --- a/docs/interfaces/roosterjs_editor_types.editimageeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.editimageeventdata.html @@ -113,7 +113,7 @@

    Readonly image

    image: HTMLImageElement
    @@ -128,7 +128,7 @@

    newSrc

    newSrc: string
    @@ -144,7 +144,7 @@

    Readonly originalSrc

    originalSrc: string
    @@ -159,7 +159,7 @@

    Readonly previousSrc

    previousSrc: string
    diff --git a/docs/interfaces/roosterjs_editor_types.editorcore.html b/docs/interfaces/roosterjs_editor_types.editorcore.html index eb8d557d1b5..0df493d555c 100644 --- a/docs/interfaces/roosterjs_editor_types.editorcore.html +++ b/docs/interfaces/roosterjs_editor_types.editorcore.html @@ -133,7 +133,7 @@

    Readonly api

    @@ -148,7 +148,7 @@

    Readonly contentDiv

    contentDiv: HTMLDivElement
    @@ -163,7 +163,7 @@

    darkColorHandler

    darkColorHandler: DarkColorHandler
    @@ -179,7 +179,7 @@

    getVisibleViewport

    getVisibleViewport: () => Rect
    @@ -209,7 +209,7 @@

    Optional imageSelectionimageSelectionBorderColor: string

    @@ -224,7 +224,7 @@

    Readonly originalApi

    originalApi: CoreApiMap
    @@ -239,7 +239,7 @@

    Readonly plugins

    plugins: EditorPlugin[]
    @@ -254,7 +254,7 @@

    sizeTransformer

    sizeTransformer: SizeTransformer
    @@ -271,7 +271,7 @@

    Readonly trustedHTMLHandlertrustedHTMLHandler: TrustedHTMLHandler

    @@ -288,7 +288,7 @@

    zoomScale

    zoomScale: number
    diff --git a/docs/interfaces/roosterjs_editor_types.editoroptions.html b/docs/interfaces/roosterjs_editor_types.editoroptions.html index 29011c1af19..34eafcdae55 100644 --- a/docs/interfaces/roosterjs_editor_types.editoroptions.html +++ b/docs/interfaces/roosterjs_editor_types.editoroptions.html @@ -129,7 +129,7 @@

    Optional allowKeyboardallowKeyboardEventPropagation: boolean

    @@ -147,7 +147,7 @@

    Optional allowedCustomallowedCustomPasteType: string[]

    @@ -163,7 +163,7 @@

    Optional coreApiOver
    coreApiOverride: Partial<CoreApiMap>
    @@ -179,7 +179,7 @@

    Optional corePluginO
    corePluginOverride: Partial<CorePlugins>
    @@ -195,7 +195,7 @@

    Optional defaultFormatdefaultFormat: DefaultFormat

    @@ -212,7 +212,7 @@

    Optional doNotAdjust
    doNotAdjustEditorColor: boolean
    @@ -227,7 +227,7 @@

    Optional experimentalFeat
    @@ -242,7 +242,7 @@

    Optional getDarkColo
    getDarkColor: (lightColor: string) => string
    @@ -279,7 +279,7 @@

    Optional getVisibleV
    getVisibleViewport: () => Rect
    @@ -309,7 +309,7 @@

    Optional imageSelectionimageSelectionBorderColor: string

    @@ -324,7 +324,7 @@

    Optional inDarkMode<
    inDarkMode: boolean
    @@ -339,7 +339,7 @@

    Optional initialContentinitialContent: string

    @@ -355,7 +355,7 @@

    Optional onExternalC
    onExternalContentTransform: (element: HTMLElement, fromDarkMode: boolean, toDarkMode: boolean, darkColorHandler: DarkColorHandler) => void
    @@ -395,7 +395,7 @@

    Optional plugins

    plugins: EditorPlugin[]
    @@ -413,7 +413,7 @@

    Optional scrollContainer<
    scrollContainer: HTMLElement
    @@ -429,7 +429,7 @@

    Optional sizeTransformer<
    sizeTransformer: SizeTransformer
    @@ -446,7 +446,7 @@

    Optional trustedHTMLHandlertrustedHTMLHandler: TrustedHTMLHandler

    @@ -463,7 +463,7 @@

    Optional undoMetadataundoMetadataSnapshotService: UndoSnapshotsService<Snapshot>

    @@ -479,7 +479,7 @@

    Optional undoSnapshotundoSnapshotService: UndoSnapshotsService<string>

    @@ -497,7 +497,7 @@

    Optional zoomScale

    zoomScale: number
    diff --git a/docs/interfaces/roosterjs_editor_types.editorplugin.html b/docs/interfaces/roosterjs_editor_types.editorplugin.html index 7d5b40f278d..74ca4f16565 100644 --- a/docs/interfaces/roosterjs_editor_types.editorplugin.html +++ b/docs/interfaces/roosterjs_editor_types.editorplugin.html @@ -141,7 +141,7 @@

    dispose

    dispose: () => void
    @@ -173,7 +173,7 @@

    getName

    getName: () => string
    @@ -203,7 +203,7 @@

    initialize

    initialize: (editor: IEditor) => void
    @@ -246,7 +246,7 @@

    Optional onPluginEve
    onPluginEvent: (event: PluginEvent) => void
    @@ -289,7 +289,7 @@

    Optional willHandleE
    willHandleEventExclusively: (event: PluginEvent) => boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.editorreadyevent.html b/docs/interfaces/roosterjs_editor_types.editorreadyevent.html index f5844549eae..47aed196fd2 100644 --- a/docs/interfaces/roosterjs_editor_types.editorreadyevent.html +++ b/docs/interfaces/roosterjs_editor_types.editorreadyevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.editorundostate.html b/docs/interfaces/roosterjs_editor_types.editorundostate.html index b0bc1fb30be..9e47f670344 100644 --- a/docs/interfaces/roosterjs_editor_types.editorundostate.html +++ b/docs/interfaces/roosterjs_editor_types.editorundostate.html @@ -108,7 +108,7 @@

    Optional canRedo

    canRedo: boolean
    @@ -123,7 +123,7 @@

    Optional canUndo

    canUndo: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.editpluginstate.html b/docs/interfaces/roosterjs_editor_types.editpluginstate.html index 4a12ea1d413..963f27538bc 100644 --- a/docs/interfaces/roosterjs_editor_types.editpluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.editpluginstate.html @@ -102,7 +102,7 @@

    features

    features: Record<number, GenericContentEditFeature<PluginEvent>[]>
    diff --git a/docs/interfaces/roosterjs_editor_types.elementbasedformatstate.html b/docs/interfaces/roosterjs_editor_types.elementbasedformatstate.html index 5e5d9302f44..52af648a072 100644 --- a/docs/interfaces/roosterjs_editor_types.elementbasedformatstate.html +++ b/docs/interfaces/roosterjs_editor_types.elementbasedformatstate.html @@ -120,7 +120,7 @@

    Optional canAddImage
    canAddImageAltText: boolean
    @@ -135,7 +135,7 @@

    Optional canMergeTab
    canMergeTableCell: boolean
    @@ -150,7 +150,7 @@

    Optional canUnlink

    canUnlink: boolean
    @@ -165,7 +165,7 @@

    Optional headerLevel

    headerLevel: number
    @@ -183,7 +183,7 @@

    Optional headingLevel

    headingLevel: number
    @@ -198,7 +198,7 @@

    Optional isBlockQuot
    isBlockQuote: boolean
    @@ -213,7 +213,7 @@

    Optional isBullet

    isBullet: boolean
    @@ -228,7 +228,7 @@

    Optional isCodeBlock
    isCodeBlock: boolean
    @@ -243,7 +243,7 @@

    Optional isCodeInlin
    isCodeInline: boolean
    @@ -258,7 +258,7 @@

    Optional isInTable

    isInTable: boolean
    @@ -273,7 +273,7 @@

    Optional isMultiline
    isMultilineSelection: boolean
    @@ -288,7 +288,7 @@

    Optional isNumbering

    isNumbering: boolean
    @@ -303,7 +303,7 @@

    Optional tableFormat

    tableFormat: TableFormat
    @@ -318,7 +318,7 @@

    Optional tableHasHea
    tableHasHeader: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.entershadoweditevent.html b/docs/interfaces/roosterjs_editor_types.entershadoweditevent.html index afa12beb90c..0b201589227 100644 --- a/docs/interfaces/roosterjs_editor_types.entershadoweditevent.html +++ b/docs/interfaces/roosterjs_editor_types.entershadoweditevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    fragment

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

    selectionPath

    diff --git a/docs/interfaces/roosterjs_editor_types.entershadowediteventdata.html b/docs/interfaces/roosterjs_editor_types.entershadowediteventdata.html index c6d617189fd..61c6258842e 100644 --- a/docs/interfaces/roosterjs_editor_types.entershadowediteventdata.html +++ b/docs/interfaces/roosterjs_editor_types.entershadowediteventdata.html @@ -111,7 +111,7 @@

    fragment

    fragment: DocumentFragment
    @@ -126,7 +126,7 @@

    selectionPath

    selectionPath: SelectionPath
    diff --git a/docs/interfaces/roosterjs_editor_types.entity.html b/docs/interfaces/roosterjs_editor_types.entity.html index 331923f1311..fd7683eb166 100644 --- a/docs/interfaces/roosterjs_editor_types.entity.html +++ b/docs/interfaces/roosterjs_editor_types.entity.html @@ -110,7 +110,7 @@

    id

    id: string
    @@ -125,7 +125,7 @@

    isReadonly

    isReadonly: boolean
    @@ -140,7 +140,7 @@

    type

    type: string
    @@ -155,7 +155,7 @@

    wrapper

    wrapper: HTMLElement
    diff --git a/docs/interfaces/roosterjs_editor_types.entityfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.entityfeaturesettings.html index 28a6afb74df..ddb3165dd9a 100644 --- a/docs/interfaces/roosterjs_editor_types.entityfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.entityfeaturesettings.html @@ -113,7 +113,7 @@

    backspaceAfterEntity

    backspaceAfterEntity: boolean
    @@ -129,7 +129,7 @@

    clickOnEntity

    clickOnEntity: boolean
    @@ -145,7 +145,7 @@

    deleteBeforeEntity

    deleteBeforeEntity: boolean
    @@ -161,7 +161,7 @@

    enterBeforeReadonlyEntity

    enterBeforeReadonlyEntity: boolean
    @@ -179,7 +179,7 @@

    escapeFromEntity

    escapeFromEntity: boolean
    @@ -195,7 +195,7 @@

    moveBetweenDelimitersFeature

    moveBetweenDelimitersFeature: boolean
    @@ -210,7 +210,7 @@

    removeEntityBetweenDelimiters

    removeEntityBetweenDelimiters: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.entityoperationevent.html b/docs/interfaces/roosterjs_editor_types.entityoperationevent.html index b88019ce2af..715b81bf5ff 100644 --- a/docs/interfaces/roosterjs_editor_types.entityoperationevent.html +++ b/docs/interfaces/roosterjs_editor_types.entityoperationevent.html @@ -119,7 +119,7 @@

    Optional contentForS
    @@ -136,7 +136,7 @@

    entity

    @@ -152,7 +152,7 @@

    Optional eventDataCa
    @@ -178,7 +178,7 @@

    eventType

    @@ -194,7 +194,7 @@

    operation

    @@ -210,7 +210,7 @@

    Optional rawEvent

    @@ -226,7 +226,7 @@

    Optional shouldPersist

    Inherited from EntityOperationEventData.shouldPersist

    @@ -244,7 +244,7 @@

    Optional state

    diff --git a/docs/interfaces/roosterjs_editor_types.entityoperationeventdata.html b/docs/interfaces/roosterjs_editor_types.entityoperationeventdata.html index fc26ab5c44c..41e22d3fae5 100644 --- a/docs/interfaces/roosterjs_editor_types.entityoperationeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.entityoperationeventdata.html @@ -115,7 +115,7 @@

    Optional contentForS
    contentForShadowEntity: DocumentFragment
    @@ -131,7 +131,7 @@

    entity

    entity: Entity
    @@ -146,7 +146,7 @@

    operation

    @@ -161,7 +161,7 @@

    Optional rawEvent

    rawEvent: Event
    @@ -176,7 +176,7 @@

    Optional shouldPersistshouldPersist: boolean

    @@ -193,7 +193,7 @@

    Optional state

    state: string
    diff --git a/docs/interfaces/roosterjs_editor_types.entitypluginstate.html b/docs/interfaces/roosterjs_editor_types.entitypluginstate.html index a82ea8d4363..ff87b0b64c4 100644 --- a/docs/interfaces/roosterjs_editor_types.entitypluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.entitypluginstate.html @@ -105,7 +105,7 @@

    Optional clickingPointclickingPoint: { pageX: number; pageY: number }

    @@ -133,7 +133,7 @@

    entityMap

    entityMap: Record<string, KnownEntityItem>
    @@ -148,7 +148,7 @@

    Optional knownEntity
    knownEntityElements: HTMLElement[]
    @@ -165,7 +165,7 @@

    Optional shadowEntityshadowEntityCache: Record<string, HTMLElement>

    diff --git a/docs/interfaces/roosterjs_editor_types.entitystate.html b/docs/interfaces/roosterjs_editor_types.entitystate.html index eacf25328b3..73652f9f9a7 100644 --- a/docs/interfaces/roosterjs_editor_types.entitystate.html +++ b/docs/interfaces/roosterjs_editor_types.entitystate.html @@ -104,7 +104,7 @@

    id

    id: string
    @@ -119,7 +119,7 @@

    state

    state: string
    @@ -136,7 +136,7 @@

    type

    type: string
    diff --git a/docs/interfaces/roosterjs_editor_types.extractclipboardeventoption.html b/docs/interfaces/roosterjs_editor_types.extractclipboardeventoption.html index d939c6a5b15..b4ea86eb6dd 100644 --- a/docs/interfaces/roosterjs_editor_types.extractclipboardeventoption.html +++ b/docs/interfaces/roosterjs_editor_types.extractclipboardeventoption.html @@ -116,7 +116,7 @@

    Optional allowLinkPr
    @@ -134,7 +134,7 @@

    Optional allowedCustom

    Inherited from ExtractClipboardItemsOption.allowedCustomPasteType

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

    Optional getTempDiv<
    @@ -182,7 +182,7 @@

    Optional removeTempD
    diff --git a/docs/interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html b/docs/interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html index 985b2247299..5fcfa6a5af2 100644 --- a/docs/interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html +++ b/docs/interfaces/roosterjs_editor_types.extractclipboarditemsforieoptions.html @@ -108,7 +108,7 @@

    Optional getTempDiv<
    getTempDiv: () => HTMLDivElement
    @@ -138,7 +138,7 @@

    Optional removeTempD
    removeTempDiv: (div: HTMLDivElement) => void
    diff --git a/docs/interfaces/roosterjs_editor_types.extractclipboarditemsoption.html b/docs/interfaces/roosterjs_editor_types.extractclipboarditemsoption.html index 98d52750f0a..e57548e78d4 100644 --- a/docs/interfaces/roosterjs_editor_types.extractclipboarditemsoption.html +++ b/docs/interfaces/roosterjs_editor_types.extractclipboarditemsoption.html @@ -108,7 +108,7 @@

    Optional allowLinkPr
    allowLinkPreview: boolean
    @@ -125,7 +125,7 @@

    Optional allowedCustomallowedCustomPasteType: string[]

    diff --git a/docs/interfaces/roosterjs_editor_types.extractcontentwithdomevent.html b/docs/interfaces/roosterjs_editor_types.extractcontentwithdomevent.html index 503e9c4f783..b4ed139653e 100644 --- a/docs/interfaces/roosterjs_editor_types.extractcontentwithdomevent.html +++ b/docs/interfaces/roosterjs_editor_types.extractcontentwithdomevent.html @@ -116,7 +116,7 @@

    clonedRoot

    @@ -133,7 +133,7 @@

    Optional eventDataCa
    @@ -159,7 +159,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html b/docs/interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html index 65ee8a1e8a1..6e1f7bb628c 100644 --- a/docs/interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.extractcontentwithdomeventdata.html @@ -110,7 +110,7 @@

    clonedRoot

    clonedRoot: HTMLElement
    diff --git a/docs/interfaces/roosterjs_editor_types.formatstate.html b/docs/interfaces/roosterjs_editor_types.formatstate.html index c23f7ad1368..2925f756ef5 100644 --- a/docs/interfaces/roosterjs_editor_types.formatstate.html +++ b/docs/interfaces/roosterjs_editor_types.formatstate.html @@ -156,7 +156,7 @@

    Optional backgroundColor<
    @@ -172,7 +172,7 @@

    Optional backgroundColors
    @@ -188,7 +188,7 @@

    Optional canAddImage
    @@ -204,7 +204,7 @@

    Optional canMergeTab
    @@ -220,7 +220,7 @@

    Optional canRedo

    @@ -236,7 +236,7 @@

    Optional canUndo

    @@ -252,7 +252,7 @@

    Optional canUnlink

    @@ -268,7 +268,7 @@

    Optional direction

    @@ -284,7 +284,7 @@

    Optional fontName

    @@ -300,7 +300,7 @@

    Optional fontSize

    @@ -316,7 +316,7 @@

    Optional headerLevel

    @@ -335,7 +335,7 @@

    Optional headingLevel

    Inherited from ElementBasedFormatState.headingLevel

    @@ -351,7 +351,7 @@

    Optional isBlockQuot
    @@ -367,7 +367,7 @@

    Optional isBold

    @@ -383,7 +383,7 @@

    Optional isBullet

    @@ -399,7 +399,7 @@

    Optional isCodeBlock
    @@ -415,7 +415,7 @@

    Optional isCodeInlin
    @@ -430,7 +430,7 @@

    Optional isDarkMode<
    isDarkMode: boolean
    @@ -446,7 +446,7 @@

    Optional isInTable

    @@ -462,7 +462,7 @@

    Optional isItalic

    @@ -478,7 +478,7 @@

    Optional isMultiline
    @@ -494,7 +494,7 @@

    Optional isNumbering

    @@ -510,7 +510,7 @@

    Optional isStrikeThr
    @@ -526,7 +526,7 @@

    Optional isSubscript

    @@ -542,7 +542,7 @@

    Optional isSuperscript

    Inherited from PendableFormatState.isSuperscript

    @@ -558,7 +558,7 @@

    Optional isUnderline

    @@ -574,7 +574,7 @@

    Optional lineHeight

    @@ -590,7 +590,7 @@

    Optional marginBottom

    Inherited from StyleBasedFormatState.marginBottom

    @@ -606,7 +606,7 @@

    Optional marginTop

    @@ -622,7 +622,7 @@

    Optional tableFormat

    @@ -638,7 +638,7 @@

    Optional tableHasHea
    @@ -654,7 +654,7 @@

    Optional textAlign

    @@ -670,7 +670,7 @@

    Optional textColor

    @@ -686,7 +686,7 @@

    Optional textColors

    @@ -701,7 +701,7 @@

    Optional zoomScale

    zoomScale: number
    diff --git a/docs/interfaces/roosterjs_editor_types.genericcontenteditfeature.html b/docs/interfaces/roosterjs_editor_types.genericcontenteditfeature.html index e2347bdd2a7..0104ef835d0 100644 --- a/docs/interfaces/roosterjs_editor_types.genericcontenteditfeature.html +++ b/docs/interfaces/roosterjs_editor_types.genericcontenteditfeature.html @@ -118,7 +118,7 @@

    Optional allowFunctionallowFunctionKeys: boolean

    @@ -134,7 +134,7 @@

    handleEvent

    handleEvent: (event: TEvent, editor: IEditor) => any
    @@ -183,7 +183,7 @@

    keys

    keys: number[]
    @@ -198,7 +198,7 @@

    shouldHandleEvent

    shouldHandleEvent: (event: TEvent, editor: IEditor, ctrlOrMeta: boolean) => any
    diff --git a/docs/interfaces/roosterjs_editor_types.htmlsanitizeroptions.html b/docs/interfaces/roosterjs_editor_types.htmlsanitizeroptions.html index 425b903ecf0..d1412d3a070 100644 --- a/docs/interfaces/roosterjs_editor_types.htmlsanitizeroptions.html +++ b/docs/interfaces/roosterjs_editor_types.htmlsanitizeroptions.html @@ -117,7 +117,7 @@

    Optional additionalAllowe
    additionalAllowedAttributes: string[]
    @@ -132,7 +132,7 @@

    Optional additionalAllowe
    additionalAllowedCssClasses: string[]
    @@ -147,7 +147,7 @@

    Optional additionalDefaul
    additionalDefaultStyleValues: StringMap
    @@ -162,7 +162,7 @@

    Optional additionalGlobal
    additionalGlobalStyleNodes: HTMLStyleElement[]
    @@ -177,7 +177,7 @@

    Optional additionalPredef
    additionalPredefinedCssForElement: PredefinedCssMap
    @@ -192,7 +192,7 @@

    Optional additionalTagadditionalTagReplacements: Record<string, string>

    @@ -212,7 +212,7 @@

    Optional attributeCallbac
    attributeCallbacks: AttributeCallbackMap
    @@ -227,7 +227,7 @@

    Optional cssStyleCal
    cssStyleCallbacks: CssStyleCallbackMap
    @@ -242,7 +242,7 @@

    Optional elementCallbacks
    elementCallbacks: ElementCallbackMap
    @@ -257,7 +257,7 @@

    Optional preserveHtmlpreserveHtmlComments: boolean

    @@ -272,7 +272,7 @@

    Optional unknownTagR
    unknownTagReplacement: string
    diff --git a/docs/interfaces/roosterjs_editor_types.icontenttraverser.html b/docs/interfaces/roosterjs_editor_types.icontenttraverser.html index e481f619f4f..0323b5d2ccb 100644 --- a/docs/interfaces/roosterjs_editor_types.icontenttraverser.html +++ b/docs/interfaces/roosterjs_editor_types.icontenttraverser.html @@ -118,7 +118,7 @@

    currentBlockElement

    currentBlockElement: BlockElement
    @@ -133,7 +133,7 @@

    currentInlineElement

    currentInlineElement: InlineElement
    @@ -155,7 +155,7 @@

    getNextBlockElement

  • @@ -177,7 +177,7 @@

    getNextInlineElement

  • @@ -199,7 +199,7 @@

    getPreviousBlockElement

  • @@ -221,7 +221,7 @@

    getPreviousInlineElement

  • diff --git a/docs/interfaces/roosterjs_editor_types.ieditor.html b/docs/interfaces/roosterjs_editor_types.ieditor.html index 2b94a07bdac..9bdfa7d471a 100644 --- a/docs/interfaces/roosterjs_editor_types.ieditor.html +++ b/docs/interfaces/roosterjs_editor_types.ieditor.html @@ -179,7 +179,7 @@

    addContentEditFeature

  • @@ -211,7 +211,7 @@

    addDomEventHandler

  • @@ -253,7 +253,7 @@

    Returns void
    @@ -298,7 +298,7 @@

    addUndoSnapshot

  • @@ -372,7 +372,7 @@

    collapseNodes

  • @@ -421,7 +421,7 @@

    contains

  • @@ -444,7 +444,7 @@

    Returns boolean
    @@ -476,7 +476,7 @@

    deleteNode

  • @@ -508,7 +508,7 @@

    deleteSelectedContent

  • @@ -530,7 +530,7 @@

    dispose

  • @@ -552,7 +552,7 @@

    ensureTypeInContainer

  • @@ -589,7 +589,7 @@

    focus

  • @@ -611,7 +611,7 @@

    getBlockElementAtNode

  • @@ -643,7 +643,7 @@

    getBlockTraverser

  • @@ -675,7 +675,7 @@

    getBodyTraverser

  • @@ -706,7 +706,7 @@

    getContent

  • @@ -738,7 +738,7 @@

    getContentSearcherOfCursor

  • @@ -771,7 +771,7 @@

    getCustomData

  • @@ -852,7 +852,7 @@

    getDarkColorHandler

  • @@ -874,7 +874,7 @@

    getDefaultFormat

  • @@ -897,7 +897,7 @@

    getDocument

  • @@ -920,7 +920,7 @@

    getEditorDomAttribute

  • @@ -951,7 +951,7 @@

    getElementAtCursor

  • @@ -1000,7 +1000,7 @@

    getFocusedPosition

  • @@ -1022,7 +1022,7 @@

    getPendableFormatState

  • @@ -1054,7 +1054,7 @@

    getRelativeDistanceToEditor

  • @@ -1096,7 +1096,7 @@

    getScrollContainer

  • @@ -1118,7 +1118,7 @@

    getSelectedRegions

  • @@ -1146,7 +1146,7 @@

    getSelectionPath

  • @@ -1170,7 +1170,7 @@

    getSelectionRange

  • @@ -1204,7 +1204,7 @@

    getSelectionRangeEx

  • @@ -1228,7 +1228,7 @@

    getSelectionTraverser

  • @@ -1257,7 +1257,7 @@

    getSizeTransformer

  • @@ -1281,7 +1281,7 @@

    getStyleBasedFormatState

  • @@ -1309,7 +1309,7 @@

    getTrustedHTMLHandler

  • @@ -1334,7 +1334,7 @@

    getUndoState

  • @@ -1356,7 +1356,7 @@

    getVisibleViewport

  • @@ -1378,7 +1378,7 @@

    getZoomScale

  • @@ -1403,7 +1403,7 @@

    hasFocus

  • @@ -1426,7 +1426,7 @@

    insertContent

  • @@ -1464,7 +1464,7 @@

    insertNode

  • @@ -1506,7 +1506,7 @@

    isDarkMode

  • @@ -1529,7 +1529,7 @@

    isDisposed

  • @@ -1552,7 +1552,7 @@

    isEmpty

  • @@ -1584,7 +1584,7 @@

    isFeatureEnabled

  • @@ -1615,7 +1615,7 @@

    isInIME

  • @@ -1638,7 +1638,7 @@

    isInShadowEdit

  • @@ -1660,7 +1660,7 @@

    isPositionAtBeginning

  • @@ -1693,7 +1693,7 @@

    paste

  • @@ -1739,7 +1739,7 @@

    queryElements

  • @@ -1792,7 +1792,7 @@

    Returns HTMLEleme
  • @@ -1845,7 +1845,7 @@

    Returns T<
  • @@ -1904,7 +1904,7 @@

    Returns HTMLEleme
  • @@ -1972,7 +1972,7 @@

    redo

  • @@ -1994,7 +1994,7 @@

    removeContentEditFeature

  • @@ -2025,7 +2025,7 @@

    replaceNode

  • @@ -2069,7 +2069,7 @@

    runAsync

  • @@ -2139,7 +2139,7 @@

    select

  • @@ -2162,7 +2162,7 @@

    Returns boolean
    @@ -2185,7 +2185,7 @@

    Returns boolean
    @@ -2214,7 +2214,7 @@

    Returns boolean
    @@ -2237,7 +2237,7 @@

    Returns boolean
    @@ -2266,7 +2266,7 @@

    Returns boolean
    @@ -2307,7 +2307,7 @@

    Returns boolean
    @@ -2330,7 +2330,7 @@

    Returns boolean
    @@ -2358,7 +2358,7 @@

    Returns boolean
    @@ -2389,7 +2389,7 @@

    setContent

  • @@ -2426,7 +2426,7 @@

    setDarkModeState

  • @@ -2457,7 +2457,7 @@

    setEditorDomAttribute

  • @@ -2494,7 +2494,7 @@

    setZoomScale

  • @@ -2524,7 +2524,7 @@

    startShadowEdit

  • @@ -2551,7 +2551,7 @@

    stopShadowEdit

  • @@ -2567,13 +2567,13 @@

    Returns void

    transformToDarkColor

    Returns void

  • @@ -2604,7 +2610,7 @@

    triggerContentChangedEvent

  • @@ -2641,7 +2647,7 @@

    triggerPluginEvent

  • @@ -2693,7 +2699,7 @@

    undo

  • diff --git a/docs/interfaces/roosterjs_editor_types.imagecontentmetadata.html b/docs/interfaces/roosterjs_editor_types.imagecontentmetadata.html index b2196cdaf4e..b3fceda74e3 100644 --- a/docs/interfaces/roosterjs_editor_types.imagecontentmetadata.html +++ b/docs/interfaces/roosterjs_editor_types.imagecontentmetadata.html @@ -113,7 +113,7 @@

    imageId

    imageId: string
    @@ -124,7 +124,7 @@

    isDarkMode

    @@ -135,7 +135,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.imageeditoptions.html b/docs/interfaces/roosterjs_editor_types.imageeditoptions.html index 70355fd151e..9585be49eb7 100644 --- a/docs/interfaces/roosterjs_editor_types.imageeditoptions.html +++ b/docs/interfaces/roosterjs_editor_types.imageeditoptions.html @@ -112,7 +112,7 @@

    Optional borderColor

    borderColor: string | ModeIndependentColor
    @@ -132,7 +132,7 @@

    Optional disableCrop

    disableCrop: boolean
    @@ -147,7 +147,7 @@

    Optional disableRotatedisableRotate: boolean

    @@ -162,7 +162,7 @@

    Optional disableSide
    disableSideResize: boolean
    @@ -177,7 +177,7 @@

    Optional imageSelectorimageSelector: string

    @@ -197,7 +197,7 @@

    Optional minHeight

    minHeight: number
    @@ -217,7 +217,7 @@

    Optional minRotateDe
    minRotateDeg: number
    @@ -238,7 +238,7 @@

    Optional minWidth

    minWidth: number
    @@ -258,7 +258,7 @@

    Optional onSelectSta
    @@ -278,7 +278,7 @@

    Optional preserveRatiopreserveRatio: boolean

    @@ -299,7 +299,7 @@

    Optional rotateIconHTMLrotateIconHTML: string

    diff --git a/docs/interfaces/roosterjs_editor_types.imageselectionrange.html b/docs/interfaces/roosterjs_editor_types.imageselectionrange.html index 43eb3220365..0d403379dfb 100644 --- a/docs/interfaces/roosterjs_editor_types.imageselectionrange.html +++ b/docs/interfaces/roosterjs_editor_types.imageselectionrange.html @@ -111,7 +111,7 @@

    areAllCollapsed

    @@ -126,7 +126,7 @@

    image

    image: HTMLImageElement
    @@ -142,7 +142,7 @@

    ranges

    @@ -158,7 +158,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.inlineelement.html b/docs/interfaces/roosterjs_editor_types.inlineelement.html index 39ce9af54e0..de7ace47284 100644 --- a/docs/interfaces/roosterjs_editor_types.inlineelement.html +++ b/docs/interfaces/roosterjs_editor_types.inlineelement.html @@ -131,7 +131,7 @@

    applyStyle

  • @@ -180,7 +180,7 @@

    contains

  • @@ -208,7 +208,7 @@

    getContainerNode

  • @@ -230,7 +230,7 @@

    getEndPosition

  • @@ -252,7 +252,7 @@

    getParentBlock

  • @@ -274,7 +274,7 @@

    getStartPosition

  • @@ -296,7 +296,7 @@

    getTextContent

  • @@ -318,7 +318,7 @@

    isAfter

  • @@ -346,7 +346,7 @@

    isTextualInlineElement

  • diff --git a/docs/interfaces/roosterjs_editor_types.insertoptionbase.html b/docs/interfaces/roosterjs_editor_types.insertoptionbase.html index 0fc6e9a756d..adde2c7cd40 100644 --- a/docs/interfaces/roosterjs_editor_types.insertoptionbase.html +++ b/docs/interfaces/roosterjs_editor_types.insertoptionbase.html @@ -113,7 +113,7 @@

    Optional insertOnNew
    insertOnNewLine: boolean
    @@ -129,7 +129,7 @@

    Optional insertToRegioninsertToRegionRoot: boolean

    @@ -146,7 +146,7 @@

    Optional replaceSelection
    replaceSelection: boolean
    @@ -162,7 +162,7 @@

    Optional updateCursor

    updateCursor: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.insertoptionbasic.html b/docs/interfaces/roosterjs_editor_types.insertoptionbasic.html index 1c60838df54..50dd3c6ecb5 100644 --- a/docs/interfaces/roosterjs_editor_types.insertoptionbasic.html +++ b/docs/interfaces/roosterjs_editor_types.insertoptionbasic.html @@ -112,7 +112,7 @@

    Optional insertOnNew
    @@ -129,7 +129,7 @@

    Optional insertToRegion

    Inherited from InsertOptionBase.insertToRegionRoot

    @@ -146,7 +146,7 @@

    position

    @@ -157,7 +157,7 @@

    Optional replaceSelection
    @@ -174,7 +174,7 @@

    Optional updateCursor

    Inherited from InsertOptionBase.updateCursor

    diff --git a/docs/interfaces/roosterjs_editor_types.insertoptionrange.html b/docs/interfaces/roosterjs_editor_types.insertoptionrange.html index 963df3a5879..f191dfaf7d8 100644 --- a/docs/interfaces/roosterjs_editor_types.insertoptionrange.html +++ b/docs/interfaces/roosterjs_editor_types.insertoptionrange.html @@ -113,7 +113,7 @@

    Optional insertOnNew
    @@ -130,7 +130,7 @@

    Optional insertToRegion

    Inherited from InsertOptionBase.insertToRegionRoot

    @@ -147,7 +147,7 @@

    position

    position: Range | Range
    @@ -157,7 +157,7 @@

    range

    range: Range
    @@ -173,7 +173,7 @@

    Optional replaceSelection
    @@ -190,7 +190,7 @@

    Optional updateCursor

    Inherited from InsertOptionBase.updateCursor

    diff --git a/docs/interfaces/roosterjs_editor_types.ipositioncontentsearcher.html b/docs/interfaces/roosterjs_editor_types.ipositioncontentsearcher.html index 288c7ec1eb3..0a28cdca733 100644 --- a/docs/interfaces/roosterjs_editor_types.ipositioncontentsearcher.html +++ b/docs/interfaces/roosterjs_editor_types.ipositioncontentsearcher.html @@ -118,7 +118,7 @@

    forEachTextInlineElement

  • @@ -168,7 +168,7 @@

    getInlineElementAfter

  • @@ -191,7 +191,7 @@

    getInlineElementBefore

  • @@ -214,7 +214,7 @@

    getNearestNonTextInlineElement

  • @@ -237,7 +237,7 @@

    getRangeFromText

  • @@ -275,7 +275,7 @@

    getSubStringBefore

  • @@ -310,7 +310,7 @@

    getWordBefore

  • diff --git a/docs/interfaces/roosterjs_editor_types.knownentityitem.html b/docs/interfaces/roosterjs_editor_types.knownentityitem.html index d0918f2d468..22a9fb97894 100644 --- a/docs/interfaces/roosterjs_editor_types.knownentityitem.html +++ b/docs/interfaces/roosterjs_editor_types.knownentityitem.html @@ -104,7 +104,7 @@

    Optional canPersist

    canPersist: boolean
    @@ -119,7 +119,7 @@

    element

    element: HTMLElement
    @@ -134,7 +134,7 @@

    Optional isDeleted

    isDeleted: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.leaveshadoweditevent.html b/docs/interfaces/roosterjs_editor_types.leaveshadoweditevent.html index f3f047848ac..dd334d048a7 100644 --- a/docs/interfaces/roosterjs_editor_types.leaveshadoweditevent.html +++ b/docs/interfaces/roosterjs_editor_types.leaveshadoweditevent.html @@ -109,7 +109,7 @@

    Optional eventDataCa
    @@ -135,7 +135,7 @@

    eventType

    diff --git a/docs/interfaces/roosterjs_editor_types.lifecyclepluginstate.html b/docs/interfaces/roosterjs_editor_types.lifecyclepluginstate.html index 868039455cc..6978b11614a 100644 --- a/docs/interfaces/roosterjs_editor_types.lifecyclepluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.lifecyclepluginstate.html @@ -112,7 +112,7 @@

    customData

    customData: Record<string, CustomData>
    @@ -127,7 +127,7 @@

    defaultFormat

    defaultFormat: DefaultFormat
    @@ -142,7 +142,7 @@

    experimentalFeatures

    @@ -157,7 +157,7 @@

    getDarkColor

    getDarkColor: (lightColor: string) => string
    @@ -193,7 +193,7 @@

    isDarkMode

    isDarkMode: boolean
    @@ -208,7 +208,7 @@

    onExternalContentTransform

    onExternalContentTransform: (element: HTMLElement, fromDarkMode: boolean, toDarkMode: boolean, darkColorHandler: DarkColorHandler) => void
    @@ -253,7 +253,7 @@

    shadowEditEntities

    shadowEditEntities: Record<string, HTMLElement>
    @@ -268,7 +268,7 @@

    shadowEditFragment

    shadowEditFragment: DocumentFragment
    @@ -283,7 +283,7 @@

    shadowEditImageSelectionPath

    shadowEditImageSelectionPath: SelectionPath[]
    @@ -298,7 +298,7 @@

    shadowEditSelectionPath

    shadowEditSelectionPath: SelectionPath
    @@ -313,7 +313,7 @@

    shadowEditTableSelectionPath

    shadowEditTableSelectionPath: SelectionPath[]
    diff --git a/docs/interfaces/roosterjs_editor_types.linkdata.html b/docs/interfaces/roosterjs_editor_types.linkdata.html index 2f335c6953c..b275cb15cfd 100644 --- a/docs/interfaces/roosterjs_editor_types.linkdata.html +++ b/docs/interfaces/roosterjs_editor_types.linkdata.html @@ -104,7 +104,7 @@

    normalizedUrl

    normalizedUrl: string
    @@ -119,7 +119,7 @@

    originalUrl

    originalUrl: string
    @@ -134,7 +134,7 @@

    scheme

    scheme: string
    diff --git a/docs/interfaces/roosterjs_editor_types.listfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.listfeaturesettings.html index f5307ebffbb..21e0d4e0d24 100644 --- a/docs/interfaces/roosterjs_editor_types.listfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.listfeaturesettings.html @@ -119,7 +119,7 @@

    autoBullet

    autoBullet: boolean
    @@ -139,7 +139,7 @@

    autoBulletList

    autoBulletList: boolean
    @@ -159,7 +159,7 @@

    autoNumberingList

    autoNumberingList: boolean
    @@ -179,7 +179,7 @@

    indentWhenAltShiftRight

    indentWhenAltShiftRight: boolean
    @@ -199,7 +199,7 @@

    indentWhenTab

    indentWhenTab: boolean
    @@ -219,7 +219,7 @@

    maintainListChain

    maintainListChain: boolean
    @@ -234,7 +234,7 @@

    maintainListChainWhenDelete

    maintainListChainWhenDelete: boolean
    @@ -249,7 +249,7 @@

    mergeInNewLineWhenBackspaceOnFirstChar

    mergeInNewLineWhenBackspaceOnFirstChar: boolean
    @@ -269,7 +269,7 @@

    mergeListOnBackspaceAfterList

    mergeListOnBackspaceAfterList: boolean
    @@ -289,7 +289,7 @@

    outdentWhenAltShiftLeft

    outdentWhenAltShiftLeft: boolean
    @@ -309,7 +309,7 @@

    outdentWhenBackspaceOnEmptyFirstLine

    outdentWhenBackspaceOnEmptyFirstLine: boolean
    @@ -329,7 +329,7 @@

    outdentWhenEnterOnEmptyLine

    outdentWhenEnterOnEmptyLine: boolean
    @@ -349,7 +349,7 @@

    outdentWhenShiftTab

    outdentWhenShiftTab: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.markdownfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.markdownfeaturesettings.html index edf6a1e792a..33139dd559d 100644 --- a/docs/interfaces/roosterjs_editor_types.markdownfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.markdownfeaturesettings.html @@ -110,7 +110,7 @@

    markdownBold

    markdownBold: boolean
    @@ -130,7 +130,7 @@

    markdownInlineCode

    markdownInlineCode: boolean
    @@ -150,7 +150,7 @@

    markdownItalic

    markdownItalic: boolean
    @@ -170,7 +170,7 @@

    markdownStrikethru

    markdownStrikethru: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.modeindependentcolor.html b/docs/interfaces/roosterjs_editor_types.modeindependentcolor.html index d70d0258b36..6c0c9a265dc 100644 --- a/docs/interfaces/roosterjs_editor_types.modeindependentcolor.html +++ b/docs/interfaces/roosterjs_editor_types.modeindependentcolor.html @@ -103,7 +103,7 @@

    darkModeColor

    darkModeColor: string
    @@ -118,7 +118,7 @@

    lightModeColor

    lightModeColor: string
    diff --git a/docs/interfaces/roosterjs_editor_types.nodeposition.html b/docs/interfaces/roosterjs_editor_types.nodeposition.html index 3f7655f21bb..aad3b03983a 100644 --- a/docs/interfaces/roosterjs_editor_types.nodeposition.html +++ b/docs/interfaces/roosterjs_editor_types.nodeposition.html @@ -120,7 +120,7 @@

    Readonly element

    element: HTMLElement
    @@ -130,7 +130,7 @@

    Readonly isAtEnd

    isAtEnd: boolean
    @@ -140,7 +140,7 @@

    Readonly node

    node: Node
    @@ -150,7 +150,7 @@

    Readonly offset

    offset: number
    @@ -167,7 +167,7 @@

    equalTo

  • @@ -198,7 +198,7 @@

    isAfter

  • @@ -229,7 +229,7 @@

    move

  • @@ -260,7 +260,7 @@

    normalize

  • diff --git a/docs/interfaces/roosterjs_editor_types.normalcontentmetadata.html b/docs/interfaces/roosterjs_editor_types.normalcontentmetadata.html index 39f5ec024f0..fbf267ffbff 100644 --- a/docs/interfaces/roosterjs_editor_types.normalcontentmetadata.html +++ b/docs/interfaces/roosterjs_editor_types.normalcontentmetadata.html @@ -118,7 +118,7 @@

    end

    @@ -134,7 +134,7 @@

    isDarkMode

    @@ -145,7 +145,7 @@

    start

    @@ -161,7 +161,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.normalselectionrange.html b/docs/interfaces/roosterjs_editor_types.normalselectionrange.html index a87c2b55769..3390b88d340 100644 --- a/docs/interfaces/roosterjs_editor_types.normalselectionrange.html +++ b/docs/interfaces/roosterjs_editor_types.normalselectionrange.html @@ -110,7 +110,7 @@

    areAllCollapsed

    @@ -126,7 +126,7 @@

    ranges

    @@ -142,7 +142,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.numberdefinition.html b/docs/interfaces/roosterjs_editor_types.numberdefinition.html index c17251d78f5..76c5dc64a6d 100644 --- a/docs/interfaces/roosterjs_editor_types.numberdefinition.html +++ b/docs/interfaces/roosterjs_editor_types.numberdefinition.html @@ -113,7 +113,7 @@

    Optional allowNull

    @@ -129,7 +129,7 @@

    Optional isOptional

    @@ -144,7 +144,7 @@

    Optional maxValue

    maxValue: number
    @@ -159,7 +159,7 @@

    Optional minValue

    minValue: number
    @@ -175,7 +175,7 @@

    type

    @@ -190,7 +190,7 @@

    Optional value

    value: number
    diff --git a/docs/interfaces/roosterjs_editor_types.objectdefinition.html b/docs/interfaces/roosterjs_editor_types.objectdefinition.html index 2194930b0b5..50a1ceccaf1 100644 --- a/docs/interfaces/roosterjs_editor_types.objectdefinition.html +++ b/docs/interfaces/roosterjs_editor_types.objectdefinition.html @@ -119,7 +119,7 @@

    Optional allowNull

    @@ -135,7 +135,7 @@

    Optional isOptional

    @@ -150,7 +150,7 @@

    propertyDef

    propertyDef: ObjectPropertyDefinition<T>
    @@ -166,7 +166,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.pendableformatstate.html b/docs/interfaces/roosterjs_editor_types.pendableformatstate.html index 8d1c2fd087e..5ac42331d93 100644 --- a/docs/interfaces/roosterjs_editor_types.pendableformatstate.html +++ b/docs/interfaces/roosterjs_editor_types.pendableformatstate.html @@ -115,7 +115,7 @@

    Optional isBold

    isBold: boolean
    @@ -130,7 +130,7 @@

    Optional isItalic

    isItalic: boolean
    @@ -145,7 +145,7 @@

    Optional isStrikeThr
    isStrikeThrough: boolean
    @@ -160,7 +160,7 @@

    Optional isSubscript

    isSubscript: boolean
    @@ -175,7 +175,7 @@

    Optional isSuperscriptisSuperscript: boolean

    @@ -190,7 +190,7 @@

    Optional isUnderline

    isUnderline: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html b/docs/interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html index 90fe8b40c41..9dcd7057123 100644 --- a/docs/interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.pendingformatstatechangedevent.html @@ -111,7 +111,7 @@

    Optional eventDataCa
    @@ -137,7 +137,7 @@

    eventType

    @@ -152,7 +152,7 @@

    Optional formatCallbackformatCallback: (element: HTMLElement, isInnerNode?: boolean) => any

    @@ -191,7 +191,7 @@

    formatState

    formatState: PendableFormatState
    diff --git a/docs/interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html b/docs/interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html index 60e51206bb8..52c56cb3499 100644 --- a/docs/interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.pendingformatstatepluginstate.html @@ -104,7 +104,7 @@

    pendableFormatPosition

    pendableFormatPosition: NodePosition
    @@ -119,7 +119,7 @@

    pendableFormatSpan

    pendableFormatSpan: HTMLElement
    @@ -135,7 +135,7 @@

    pendableFormatState

    pendableFormatState: PendableFormatState
    diff --git a/docs/interfaces/roosterjs_editor_types.pickerdataprovider.html b/docs/interfaces/roosterjs_editor_types.pickerdataprovider.html index 393f366ca08..50feb8ca883 100644 --- a/docs/interfaces/roosterjs_editor_types.pickerdataprovider.html +++ b/docs/interfaces/roosterjs_editor_types.pickerdataprovider.html @@ -112,7 +112,7 @@

    Optional getSelected
    getSelectedIndex: () => number
    @@ -142,7 +142,7 @@

    Optional onContentCh
    onContentChanged: (elementIds: string[]) => void
    @@ -179,7 +179,7 @@

    onDispose

    onDispose: () => void
    @@ -209,7 +209,7 @@

    onInitalize

    onInitalize: (insertNodeCallback: (nodeToInsert: HTMLElement) => void, setIsSuggestingCallback: (isSuggesting: boolean) => void, editor?: IEditor) => void
    @@ -294,7 +294,7 @@

    onIsSuggestingChanged

    onIsSuggestingChanged: (isSuggesting: boolean) => void
    @@ -331,7 +331,7 @@

    onRemove

    onRemove: (nodeRemoved: Node, isBackwards: boolean) => Node
    @@ -371,7 +371,7 @@

    Optional onScroll

    onScroll: (scrollContainer: HTMLElement) => void
    @@ -407,7 +407,7 @@

    queryStringUpdated

    queryStringUpdated: (queryString: string, isExactMatch: boolean) => void
    @@ -446,7 +446,7 @@

    Optional selectOption

    selectOption: () => void
    @@ -476,7 +476,7 @@

    Optional setCursorPo
    setCursorPoint: (targetPoint: { x: number; y: number }, buffer: number) => void
    @@ -524,7 +524,7 @@

    Optional shiftHighlightshiftHighlight: (isIncrement: boolean) => void

    diff --git a/docs/interfaces/roosterjs_editor_types.pickerpluginoptions.html b/docs/interfaces/roosterjs_editor_types.pickerpluginoptions.html index 88f8e7564ca..a27a6de376e 100644 --- a/docs/interfaces/roosterjs_editor_types.pickerpluginoptions.html +++ b/docs/interfaces/roosterjs_editor_types.pickerpluginoptions.html @@ -108,7 +108,7 @@

    changeSource

    changeSource: string
    @@ -124,7 +124,7 @@

    elementIdPrefix

    elementIdPrefix: string
    @@ -140,7 +140,7 @@

    Optional handleAutoC
    handleAutoComplete: boolean
    @@ -156,7 +156,7 @@

    Optional isHorizontal

    isHorizontal: boolean
    @@ -173,7 +173,7 @@

    Optional suggestionLabel<
    suggestionLabelPrefix: string
    @@ -189,7 +189,7 @@

    Optional suggestionsLabel
    suggestionsLabel: string
    @@ -205,7 +205,7 @@

    triggerCharacter

    triggerCharacter: string
    diff --git a/docs/interfaces/roosterjs_editor_types.plugincompositionevent.html b/docs/interfaces/roosterjs_editor_types.plugincompositionevent.html index 07d4399ca93..c50c2cfe20e 100644 --- a/docs/interfaces/roosterjs_editor_types.plugincompositionevent.html +++ b/docs/interfaces/roosterjs_editor_types.plugincompositionevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.plugincontextmenuevent.html b/docs/interfaces/roosterjs_editor_types.plugincontextmenuevent.html index d6e0e792511..bcd84bbc53e 100644 --- a/docs/interfaces/roosterjs_editor_types.plugincontextmenuevent.html +++ b/docs/interfaces/roosterjs_editor_types.plugincontextmenuevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    items

    @@ -174,7 +174,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.plugincontextmenueventdata.html b/docs/interfaces/roosterjs_editor_types.plugincontextmenueventdata.html index 0fdc524d2b2..5f0f3ba6271 100644 --- a/docs/interfaces/roosterjs_editor_types.plugincontextmenueventdata.html +++ b/docs/interfaces/roosterjs_editor_types.plugincontextmenueventdata.html @@ -110,7 +110,7 @@

    items

    items: any[]
    diff --git a/docs/interfaces/roosterjs_editor_types.plugindomeventbase.html b/docs/interfaces/roosterjs_editor_types.plugindomeventbase.html index eb4de0885d3..8d1ce055411 100644 --- a/docs/interfaces/roosterjs_editor_types.plugindomeventbase.html +++ b/docs/interfaces/roosterjs_editor_types.plugindomeventbase.html @@ -177,7 +177,7 @@

    Optional eventDataCa
    @@ -203,7 +203,7 @@

    eventType

    @@ -218,7 +218,7 @@

    rawEvent

    rawEvent: TRawEvent
    diff --git a/docs/interfaces/roosterjs_editor_types.plugininputevent.html b/docs/interfaces/roosterjs_editor_types.plugininputevent.html index a03eb234a9c..2be81a2a539 100644 --- a/docs/interfaces/roosterjs_editor_types.plugininputevent.html +++ b/docs/interfaces/roosterjs_editor_types.plugininputevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginkeydownevent.html b/docs/interfaces/roosterjs_editor_types.pluginkeydownevent.html index c4748119411..9fea797f88b 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginkeydownevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginkeydownevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    Optional handledByEdit

    Inherited from PluginKeyDownEventData.handledByEditFeature

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

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginkeydowneventdata.html b/docs/interfaces/roosterjs_editor_types.pluginkeydowneventdata.html index abc43a75df1..a5a8d099313 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginkeydowneventdata.html +++ b/docs/interfaces/roosterjs_editor_types.pluginkeydowneventdata.html @@ -110,7 +110,7 @@

    Optional handledByEdithandledByEditFeature: boolean

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginkeypressevent.html b/docs/interfaces/roosterjs_editor_types.pluginkeypressevent.html index dcbe9dbfcff..d15d017c982 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginkeypressevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginkeypressevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginkeyupevent.html b/docs/interfaces/roosterjs_editor_types.pluginkeyupevent.html index a19c3e1daa3..f3b7bd7080e 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginkeyupevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginkeyupevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginmousedownevent.html b/docs/interfaces/roosterjs_editor_types.pluginmousedownevent.html index dd1d81cc59b..88ff7da4acf 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginmousedownevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginmousedownevent.html @@ -110,7 +110,7 @@

    Optional eventDataCa
    @@ -136,7 +136,7 @@

    eventType

    @@ -152,7 +152,7 @@

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginmouseupevent.html b/docs/interfaces/roosterjs_editor_types.pluginmouseupevent.html index f15a262d37e..f27beedb567 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginmouseupevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginmouseupevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    Optional isClicking

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

    rawEvent

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginmouseupeventdata.html b/docs/interfaces/roosterjs_editor_types.pluginmouseupeventdata.html index 037e4920e0b..c917e10ea4b 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginmouseupeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.pluginmouseupeventdata.html @@ -110,7 +110,7 @@

    Optional isClicking

    isClicking: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.pluginscrollevent.html b/docs/interfaces/roosterjs_editor_types.pluginscrollevent.html index 9619ad6bfff..b63d4d1683b 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginscrollevent.html +++ b/docs/interfaces/roosterjs_editor_types.pluginscrollevent.html @@ -114,7 +114,7 @@

    Optional eventDataCa
    @@ -140,7 +140,7 @@

    eventType

    @@ -156,7 +156,7 @@

    rawEvent

    @@ -167,7 +167,7 @@

    scrollContainer

    diff --git a/docs/interfaces/roosterjs_editor_types.pluginscrolleventdata.html b/docs/interfaces/roosterjs_editor_types.pluginscrolleventdata.html index 5383729f944..cc07f97ae66 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginscrolleventdata.html +++ b/docs/interfaces/roosterjs_editor_types.pluginscrolleventdata.html @@ -110,7 +110,7 @@

    scrollContainer

    scrollContainer: HTMLElement
    diff --git a/docs/interfaces/roosterjs_editor_types.pluginwithstate.html b/docs/interfaces/roosterjs_editor_types.pluginwithstate.html index ee0adc74e23..7ee6de21d0b 100644 --- a/docs/interfaces/roosterjs_editor_types.pluginwithstate.html +++ b/docs/interfaces/roosterjs_editor_types.pluginwithstate.html @@ -133,7 +133,7 @@

    dispose

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

    getName

    @@ -197,7 +197,7 @@

    initialize

    @@ -241,7 +241,7 @@

    Optional onPluginEve
    @@ -285,7 +285,7 @@

    Optional willHandleE
    @@ -337,7 +337,7 @@

    getState

  • diff --git a/docs/interfaces/roosterjs_editor_types.quotefeaturesettings.html b/docs/interfaces/roosterjs_editor_types.quotefeaturesettings.html index f92c4e1c7e7..f7a0c89c955 100644 --- a/docs/interfaces/roosterjs_editor_types.quotefeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.quotefeaturesettings.html @@ -108,7 +108,7 @@

    unquoteWhenBackspaceOnEmptyFirstLine

    unquoteWhenBackspaceOnEmptyFirstLine: boolean
    @@ -128,7 +128,7 @@

    unquoteWhenEnterOnEmptyLine

    unquoteWhenEnterOnEmptyLine: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.rect.html b/docs/interfaces/roosterjs_editor_types.rect.html index dbfc01cf2d3..62b8e7fed6a 100644 --- a/docs/interfaces/roosterjs_editor_types.rect.html +++ b/docs/interfaces/roosterjs_editor_types.rect.html @@ -105,7 +105,7 @@

    bottom

    bottom: number
    @@ -120,7 +120,7 @@

    left

    left: number
    @@ -135,7 +135,7 @@

    right

    right: number
    @@ -150,7 +150,7 @@

    top

    top: number
    diff --git a/docs/interfaces/roosterjs_editor_types.region.html b/docs/interfaces/roosterjs_editor_types.region.html index ac324db976f..1481db1b14e 100644 --- a/docs/interfaces/roosterjs_editor_types.region.html +++ b/docs/interfaces/roosterjs_editor_types.region.html @@ -113,7 +113,7 @@

    fullSelectionEnd

    fullSelectionEnd: NodePosition
    @@ -129,7 +129,7 @@

    fullSelectionStart

    fullSelectionStart: NodePosition
    @@ -146,7 +146,7 @@

    Optional nodeAfter

    @@ -163,7 +163,7 @@

    Optional nodeBefore

    @@ -180,7 +180,7 @@

    rootNode

    @@ -196,7 +196,7 @@

    skipTags

    diff --git a/docs/interfaces/roosterjs_editor_types.regionbase.html b/docs/interfaces/roosterjs_editor_types.regionbase.html index 3d4f76acefd..20e353d9d2b 100644 --- a/docs/interfaces/roosterjs_editor_types.regionbase.html +++ b/docs/interfaces/roosterjs_editor_types.regionbase.html @@ -123,7 +123,7 @@

    Optional nodeAfter

    nodeAfter: Node
    @@ -139,7 +139,7 @@

    Optional nodeBefore

    nodeBefore: Node
    @@ -155,7 +155,7 @@

    rootNode

    rootNode: HTMLElement
    @@ -170,7 +170,7 @@

    skipTags

    skipTags: string[]
    diff --git a/docs/interfaces/roosterjs_editor_types.sanitizehtmloptions.html b/docs/interfaces/roosterjs_editor_types.sanitizehtmloptions.html index 4f6a6b499c9..e4be06790f3 100644 --- a/docs/interfaces/roosterjs_editor_types.sanitizehtmloptions.html +++ b/docs/interfaces/roosterjs_editor_types.sanitizehtmloptions.html @@ -122,7 +122,7 @@

    Optional additionalAllowe
    @@ -138,7 +138,7 @@

    Optional additionalAllowe
    @@ -154,7 +154,7 @@

    Optional additionalDefaul
    @@ -170,7 +170,7 @@

    Optional additionalGlobal
    @@ -186,7 +186,7 @@

    Optional additionalPredef
    @@ -202,7 +202,7 @@

    Optional additionalTag

    Inherited from HtmlSanitizerOptions.additionalTagReplacements

    @@ -223,7 +223,7 @@

    Optional attributeCallbac
    @@ -238,7 +238,7 @@

    Optional convertCssO
    convertCssOnly: boolean
    @@ -254,7 +254,7 @@

    Optional cssStyleCal
    @@ -269,7 +269,7 @@

    Optional currentElementcurrentElementOrStyle: HTMLElement | StringMap

    @@ -286,7 +286,7 @@

    Optional elementCallbacks
    @@ -302,7 +302,7 @@

    Optional preserveHtml

    Inherited from HtmlSanitizerOptions.preserveHtmlComments

    @@ -318,7 +318,7 @@

    Optional unknownTagR
    diff --git a/docs/interfaces/roosterjs_editor_types.selectionchangedevent.html b/docs/interfaces/roosterjs_editor_types.selectionchangedevent.html index 271e995547b..743862e0c85 100644 --- a/docs/interfaces/roosterjs_editor_types.selectionchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.selectionchangedevent.html @@ -113,7 +113,7 @@

    Optional eventDataCa
    @@ -139,7 +139,7 @@

    eventType

    @@ -155,7 +155,7 @@

    selectionRangeEx

    diff --git a/docs/interfaces/roosterjs_editor_types.selectionchangedeventdata.html b/docs/interfaces/roosterjs_editor_types.selectionchangedeventdata.html index 36482829af4..b6e4bdd0037 100644 --- a/docs/interfaces/roosterjs_editor_types.selectionchangedeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.selectionchangedeventdata.html @@ -110,7 +110,7 @@

    selectionRangeEx

    selectionRangeEx: SelectionRangeEx
    diff --git a/docs/interfaces/roosterjs_editor_types.selectionpath.html b/docs/interfaces/roosterjs_editor_types.selectionpath.html index 494eae0f067..61b09543e75 100644 --- a/docs/interfaces/roosterjs_editor_types.selectionpath.html +++ b/docs/interfaces/roosterjs_editor_types.selectionpath.html @@ -108,7 +108,7 @@

    end

    end: number[]
    @@ -123,7 +123,7 @@

    start

    start: number[]
    diff --git a/docs/interfaces/roosterjs_editor_types.selectionrangeexbase.html b/docs/interfaces/roosterjs_editor_types.selectionrangeexbase.html index 396c1ec3ce9..b4f308fcf40 100644 --- a/docs/interfaces/roosterjs_editor_types.selectionrangeexbase.html +++ b/docs/interfaces/roosterjs_editor_types.selectionrangeexbase.html @@ -123,7 +123,7 @@

    areAllCollapsed

    areAllCollapsed: boolean
    @@ -138,7 +138,7 @@

    ranges

    ranges: Range[]
    @@ -153,7 +153,7 @@

    type

    type: T
    diff --git a/docs/interfaces/roosterjs_editor_types.shortcutfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.shortcutfeaturesettings.html index fec013ccc7e..45ea32c2a6f 100644 --- a/docs/interfaces/roosterjs_editor_types.shortcutfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.shortcutfeaturesettings.html @@ -107,7 +107,7 @@

    defaultShortcut

    defaultShortcut: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.snapshot.html b/docs/interfaces/roosterjs_editor_types.snapshot.html index c22967bd4d5..d662272fd43 100644 --- a/docs/interfaces/roosterjs_editor_types.snapshot.html +++ b/docs/interfaces/roosterjs_editor_types.snapshot.html @@ -105,7 +105,7 @@

    Optional entityStates

    entityStates: EntityState[]
    @@ -121,7 +121,7 @@

    html

    html: string
    @@ -136,7 +136,7 @@

    knownColors

    knownColors: Readonly<ModeIndependentColor>[]
    @@ -151,7 +151,7 @@

    metadata

    metadata: ContentMetadata
    diff --git a/docs/interfaces/roosterjs_editor_types.snapshots.html b/docs/interfaces/roosterjs_editor_types.snapshots.html index b58238b121f..00fc327d612 100644 --- a/docs/interfaces/roosterjs_editor_types.snapshots.html +++ b/docs/interfaces/roosterjs_editor_types.snapshots.html @@ -114,7 +114,7 @@

    autoCompleteIndex

    autoCompleteIndex: number
    @@ -129,7 +129,7 @@

    currentIndex

    currentIndex: number
    @@ -144,7 +144,7 @@

    Readonly maxSize

    maxSize: number
    @@ -159,7 +159,7 @@

    snapshots

    snapshots: T[]
    @@ -174,7 +174,7 @@

    totalSize

    totalSize: number
    diff --git a/docs/interfaces/roosterjs_editor_types.stringdefinition.html b/docs/interfaces/roosterjs_editor_types.stringdefinition.html index 040c86428ce..b159f9e0439 100644 --- a/docs/interfaces/roosterjs_editor_types.stringdefinition.html +++ b/docs/interfaces/roosterjs_editor_types.stringdefinition.html @@ -111,7 +111,7 @@

    Optional allowNull

    @@ -127,7 +127,7 @@

    Optional isOptional

    @@ -143,7 +143,7 @@

    type

    @@ -158,7 +158,7 @@

    Optional value

    value: string
    diff --git a/docs/interfaces/roosterjs_editor_types.structurednodefeaturesettings.html b/docs/interfaces/roosterjs_editor_types.structurednodefeaturesettings.html index a0d54a934a9..c7f395fd287 100644 --- a/docs/interfaces/roosterjs_editor_types.structurednodefeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.structurednodefeaturesettings.html @@ -107,7 +107,7 @@

    insertLineBeforeStructuredNodeFeature

    insertLineBeforeStructuredNodeFeature: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.stylebasedformatstate.html b/docs/interfaces/roosterjs_editor_types.stylebasedformatstate.html index 2896e312ee2..04aa08c4110 100644 --- a/docs/interfaces/roosterjs_editor_types.stylebasedformatstate.html +++ b/docs/interfaces/roosterjs_editor_types.stylebasedformatstate.html @@ -117,7 +117,7 @@

    Optional backgroundColor<
    backgroundColor: string
    @@ -132,7 +132,7 @@

    Optional backgroundColors
    backgroundColors: ModeIndependentColor
    @@ -147,7 +147,7 @@

    Optional direction

    direction: string
    @@ -162,7 +162,7 @@

    Optional fontName

    fontName: string
    @@ -177,7 +177,7 @@

    Optional fontSize

    fontSize: string
    @@ -192,7 +192,7 @@

    Optional lineHeight

    lineHeight: string
    @@ -207,7 +207,7 @@

    Optional marginBottom

    marginBottom: string
    @@ -222,7 +222,7 @@

    Optional marginTop

    marginTop: string
    @@ -237,7 +237,7 @@

    Optional textAlign

    textAlign: string
    @@ -252,7 +252,7 @@

    Optional textColor

    textColor: string
    @@ -267,7 +267,7 @@

    Optional textColors

    diff --git a/docs/interfaces/roosterjs_editor_types.tablecontentmetadata.html b/docs/interfaces/roosterjs_editor_types.tablecontentmetadata.html index e17d187d835..65202f3892f 100644 --- a/docs/interfaces/roosterjs_editor_types.tablecontentmetadata.html +++ b/docs/interfaces/roosterjs_editor_types.tablecontentmetadata.html @@ -119,7 +119,7 @@

    firstCell

    @@ -135,7 +135,7 @@

    isDarkMode

    @@ -146,7 +146,7 @@

    lastCell

    @@ -161,7 +161,7 @@

    tableId

    tableId: string
    @@ -172,7 +172,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.tablefeaturesettings.html b/docs/interfaces/roosterjs_editor_types.tablefeaturesettings.html index 27bd291bcb7..7e1a901a52f 100644 --- a/docs/interfaces/roosterjs_editor_types.tablefeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.tablefeaturesettings.html @@ -110,7 +110,7 @@

    deleteTableWithBackspace

    deleteTableWithBackspace: boolean
    @@ -126,7 +126,7 @@

    indentTableOnTab

    indentTableOnTab: boolean
    @@ -141,7 +141,7 @@

    tabInTable

    tabInTable: boolean
    @@ -161,7 +161,7 @@

    upDownInTable

    upDownInTable: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.tableformat.html b/docs/interfaces/roosterjs_editor_types.tableformat.html index 9835de2dd07..c675b0782e6 100644 --- a/docs/interfaces/roosterjs_editor_types.tableformat.html +++ b/docs/interfaces/roosterjs_editor_types.tableformat.html @@ -114,7 +114,7 @@

    Optional bgColorEven
    bgColorEven: string
    @@ -129,7 +129,7 @@

    Optional bgColorOdd<
    bgColorOdd: string
    @@ -144,7 +144,7 @@

    Optional bottomBorderbottomBorderColor: string

    @@ -159,7 +159,7 @@

    Optional hasBandedCo
    hasBandedColumns: boolean
    @@ -174,7 +174,7 @@

    Optional hasBandedRo
    hasBandedRows: boolean
    @@ -189,7 +189,7 @@

    Optional hasFirstCol
    hasFirstColumn: boolean
    @@ -204,7 +204,7 @@

    Optional hasHeaderRo
    hasHeaderRow: boolean
    @@ -219,7 +219,7 @@

    Optional headerRowCo
    headerRowColor: string
    @@ -234,7 +234,7 @@

    Optional keepCellSha
    keepCellShade: boolean
    @@ -249,7 +249,7 @@

    Optional tableBorder
    @@ -264,7 +264,7 @@

    Optional topBorderCo
    topBorderColor: string
    @@ -279,7 +279,7 @@

    Optional verticalAlignverticalAlign: "top" | "middle" | "bottom"

    @@ -294,7 +294,7 @@

    Optional verticalBorderverticalBorderColor: string

    diff --git a/docs/interfaces/roosterjs_editor_types.tableselection.html b/docs/interfaces/roosterjs_editor_types.tableselection.html index ab09da18100..5f4f635d09d 100644 --- a/docs/interfaces/roosterjs_editor_types.tableselection.html +++ b/docs/interfaces/roosterjs_editor_types.tableselection.html @@ -108,7 +108,7 @@

    firstCell

    firstCell: Coordinates
    @@ -123,7 +123,7 @@

    lastCell

    lastCell: Coordinates
    diff --git a/docs/interfaces/roosterjs_editor_types.tableselectionrange.html b/docs/interfaces/roosterjs_editor_types.tableselectionrange.html index d5852c706a5..00827968070 100644 --- a/docs/interfaces/roosterjs_editor_types.tableselectionrange.html +++ b/docs/interfaces/roosterjs_editor_types.tableselectionrange.html @@ -113,7 +113,7 @@

    areAllCollapsed

    @@ -128,7 +128,7 @@

    coordinates

    coordinates: TableSelection
    @@ -143,7 +143,7 @@

    Optional isWholeTabl
    isWholeTableSelected: boolean
    @@ -159,7 +159,7 @@

    ranges

    @@ -174,7 +174,7 @@

    table

    table: HTMLTableElement
    @@ -190,7 +190,7 @@

    type

    diff --git a/docs/interfaces/roosterjs_editor_types.targetwindow.html b/docs/interfaces/roosterjs_editor_types.targetwindow.html index e6da5e4cd5b..e44a871e2a8 100644 --- a/docs/interfaces/roosterjs_editor_types.targetwindow.html +++ b/docs/interfaces/roosterjs_editor_types.targetwindow.html @@ -200,7 +200,7 @@

    Attr

    @@ -211,7 +211,7 @@

    CDATASection

    @@ -222,7 +222,7 @@

    CharacterData

    @@ -233,7 +233,7 @@

    ChildNode

    @@ -244,7 +244,7 @@

    Comment

    @@ -255,7 +255,7 @@

    Document

    @@ -266,7 +266,7 @@

    DocumentFragment

    @@ -277,7 +277,7 @@

    DocumentType

    @@ -288,7 +288,7 @@

    Element

    @@ -299,7 +299,7 @@

    HTMLAnchorElement

    @@ -309,7 +309,7 @@

    HTMLAppletElement

    HTMLAppletElement: Element
    @@ -327,7 +327,7 @@

    HTMLAreaElement

    @@ -338,7 +338,7 @@

    HTMLAudioElement

    @@ -349,7 +349,7 @@

    HTMLBRElement

    @@ -360,7 +360,7 @@

    HTMLBaseElement

    @@ -370,7 +370,7 @@

    HTMLBaseFontElement

    HTMLBaseFontElement: Element
    @@ -388,7 +388,7 @@

    HTMLBodyElement

    @@ -399,7 +399,7 @@

    HTMLButtonElement

    @@ -410,7 +410,7 @@

    HTMLCanvasElement

    @@ -421,7 +421,7 @@

    HTMLDListElement

    @@ -432,7 +432,7 @@

    HTMLDataElement

    @@ -443,7 +443,7 @@

    HTMLDataListElement

    @@ -454,7 +454,7 @@

    HTMLDetailsElement

    @@ -465,7 +465,7 @@

    HTMLDialogElement

    @@ -476,7 +476,7 @@

    HTMLDirectoryElement

    @@ -487,7 +487,7 @@

    HTMLDivElement

    @@ -498,7 +498,7 @@

    HTMLDocument

    @@ -509,7 +509,7 @@

    HTMLElement

    @@ -520,7 +520,7 @@

    HTMLEmbedElement

    @@ -531,7 +531,7 @@

    HTMLFieldSetElement

    @@ -542,7 +542,7 @@

    HTMLFontElement

    @@ -553,7 +553,7 @@

    HTMLFormElement

    @@ -564,7 +564,7 @@

    HTMLFrameElement

    @@ -575,7 +575,7 @@

    HTMLFrameSetElement

    @@ -586,7 +586,7 @@

    HTMLHRElement

    @@ -597,7 +597,7 @@

    HTMLHeadElement

    @@ -608,7 +608,7 @@

    HTMLHeadingElement

    @@ -619,7 +619,7 @@

    HTMLHtmlElement

    @@ -630,7 +630,7 @@

    HTMLIFrameElement

    @@ -641,7 +641,7 @@

    HTMLImageElement

    @@ -652,7 +652,7 @@

    HTMLInputElement

    @@ -663,7 +663,7 @@

    HTMLLIElement

    @@ -674,7 +674,7 @@

    HTMLLabelElement

    @@ -685,7 +685,7 @@

    HTMLLegendElement

    @@ -696,7 +696,7 @@

    HTMLLinkElement

    @@ -707,7 +707,7 @@

    HTMLMapElement

    @@ -718,7 +718,7 @@

    HTMLMarqueeElement

    @@ -729,7 +729,7 @@

    HTMLMediaElement

    @@ -740,7 +740,7 @@

    HTMLMenuElement

    @@ -751,7 +751,7 @@

    HTMLMetaElement

    @@ -762,7 +762,7 @@

    HTMLMeterElement

    @@ -773,7 +773,7 @@

    HTMLModElement

    @@ -784,7 +784,7 @@

    HTMLOListElement

    @@ -795,7 +795,7 @@

    HTMLObjectElement

    @@ -806,7 +806,7 @@

    HTMLOptGroupElement

    @@ -817,7 +817,7 @@

    HTMLOptionElement

    @@ -828,7 +828,7 @@

    HTMLOutputElement

    @@ -839,7 +839,7 @@

    HTMLParagraphElement

    @@ -850,7 +850,7 @@

    HTMLParamElement

    @@ -861,7 +861,7 @@

    HTMLPictureElement

    @@ -872,7 +872,7 @@

    HTMLPreElement

    @@ -883,7 +883,7 @@

    HTMLProgressElement

    @@ -894,7 +894,7 @@

    HTMLQuoteElement

    @@ -905,7 +905,7 @@

    HTMLScriptElement

    @@ -916,7 +916,7 @@

    HTMLSelectElement

    @@ -927,7 +927,7 @@

    HTMLSlotElement

    @@ -938,7 +938,7 @@

    HTMLSourceElement

    @@ -949,7 +949,7 @@

    HTMLSpanElement

    @@ -960,7 +960,7 @@

    HTMLStyleElement

    @@ -971,7 +971,7 @@

    HTMLTableCaptionElement

    @@ -982,7 +982,7 @@

    HTMLTableCellElement

    @@ -993,7 +993,7 @@

    HTMLTableColElement

    @@ -1004,7 +1004,7 @@

    HTMLTableDataCellElement

    @@ -1015,7 +1015,7 @@

    HTMLTableElement

    @@ -1026,7 +1026,7 @@

    HTMLTableHeaderCellElement

    @@ -1037,7 +1037,7 @@

    HTMLTableRowElement

    @@ -1048,7 +1048,7 @@

    HTMLTableSectionElement

    @@ -1059,7 +1059,7 @@

    HTMLTemplateElement

    @@ -1070,7 +1070,7 @@

    HTMLTextAreaElement

    @@ -1081,7 +1081,7 @@

    HTMLTimeElement

    @@ -1092,7 +1092,7 @@

    HTMLTitleElement

    @@ -1103,7 +1103,7 @@

    HTMLTrackElement

    @@ -1114,7 +1114,7 @@

    HTMLUListElement

    @@ -1125,7 +1125,7 @@

    HTMLUnknownElement

    @@ -1136,7 +1136,7 @@

    HTMLVideoElement

    @@ -1147,7 +1147,7 @@

    Node

    @@ -1158,7 +1158,7 @@

    ParentNode

    @@ -1169,7 +1169,7 @@

    ProcessingInstruction

    @@ -1180,7 +1180,7 @@

    Range

    @@ -1190,7 +1190,7 @@

    SVGCursorElement

    SVGCursorElement: Element
    @@ -1208,7 +1208,7 @@

    ShadowRoot

    @@ -1219,7 +1219,7 @@

    Text

    @@ -1230,7 +1230,7 @@

    XMLDocument

    diff --git a/docs/interfaces/roosterjs_editor_types.targetwindowbase.html b/docs/interfaces/roosterjs_editor_types.targetwindowbase.html index 7fb2e24e81d..b669b16b030 100644 --- a/docs/interfaces/roosterjs_editor_types.targetwindowbase.html +++ b/docs/interfaces/roosterjs_editor_types.targetwindowbase.html @@ -196,7 +196,7 @@

    Attr

    Attr: Attr
    @@ -206,7 +206,7 @@

    CDATASection

    CDATASection: CDATASection
    @@ -216,7 +216,7 @@

    CharacterData

    CharacterData: CharacterData
    @@ -226,7 +226,7 @@

    ChildNode

    ChildNode: ChildNode
    @@ -236,7 +236,7 @@

    Comment

    Comment: Comment
    @@ -246,7 +246,7 @@

    Document

    Document: Document
    @@ -256,7 +256,7 @@

    DocumentFragment

    DocumentFragment: DocumentFragment
    @@ -266,7 +266,7 @@

    DocumentType

    DocumentType: DocumentType
    @@ -276,7 +276,7 @@

    Element

    Element: Element
    @@ -286,7 +286,7 @@

    HTMLAnchorElement

    HTMLAnchorElement: HTMLAnchorElement
    @@ -296,7 +296,7 @@

    HTMLAreaElement

    HTMLAreaElement: HTMLAreaElement
    @@ -306,7 +306,7 @@

    HTMLAudioElement

    HTMLAudioElement: HTMLAudioElement
    @@ -316,7 +316,7 @@

    HTMLBRElement

    HTMLBRElement: HTMLBRElement
    @@ -326,7 +326,7 @@

    HTMLBaseElement

    HTMLBaseElement: HTMLBaseElement
    @@ -336,7 +336,7 @@

    HTMLBodyElement

    HTMLBodyElement: HTMLBodyElement
    @@ -346,7 +346,7 @@

    HTMLButtonElement

    HTMLButtonElement: HTMLButtonElement
    @@ -356,7 +356,7 @@

    HTMLCanvasElement

    HTMLCanvasElement: HTMLCanvasElement
    @@ -366,7 +366,7 @@

    HTMLDListElement

    HTMLDListElement: HTMLDListElement
    @@ -376,7 +376,7 @@

    HTMLDataElement

    HTMLDataElement: HTMLDataElement
    @@ -386,7 +386,7 @@

    HTMLDataListElement

    HTMLDataListElement: HTMLDataListElement
    @@ -396,7 +396,7 @@

    HTMLDetailsElement

    HTMLDetailsElement: HTMLDetailsElement
    @@ -406,7 +406,7 @@

    HTMLDialogElement

    HTMLDialogElement: HTMLDialogElement
    @@ -416,7 +416,7 @@

    HTMLDirectoryElement

    HTMLDirectoryElement: HTMLDirectoryElement
    @@ -426,7 +426,7 @@

    HTMLDivElement

    HTMLDivElement: HTMLDivElement
    @@ -436,7 +436,7 @@

    HTMLDocument

    HTMLDocument: HTMLDocument
    @@ -446,7 +446,7 @@

    HTMLElement

    HTMLElement: HTMLElement
    @@ -456,7 +456,7 @@

    HTMLEmbedElement

    HTMLEmbedElement: HTMLEmbedElement
    @@ -466,7 +466,7 @@

    HTMLFieldSetElement

    HTMLFieldSetElement: HTMLFieldSetElement
    @@ -476,7 +476,7 @@

    HTMLFontElement

    HTMLFontElement: HTMLFontElement
    @@ -486,7 +486,7 @@

    HTMLFormElement

    HTMLFormElement: HTMLFormElement
    @@ -496,7 +496,7 @@

    HTMLFrameElement

    HTMLFrameElement: HTMLFrameElement
    @@ -506,7 +506,7 @@

    HTMLFrameSetElement

    HTMLFrameSetElement: HTMLFrameSetElement
    @@ -516,7 +516,7 @@

    HTMLHRElement

    HTMLHRElement: HTMLHRElement
    @@ -526,7 +526,7 @@

    HTMLHeadElement

    HTMLHeadElement: HTMLHeadElement
    @@ -536,7 +536,7 @@

    HTMLHeadingElement

    HTMLHeadingElement: HTMLHeadingElement
    @@ -546,7 +546,7 @@

    HTMLHtmlElement

    HTMLHtmlElement: HTMLHtmlElement
    @@ -556,7 +556,7 @@

    HTMLIFrameElement

    HTMLIFrameElement: HTMLIFrameElement
    @@ -566,7 +566,7 @@

    HTMLImageElement

    HTMLImageElement: HTMLImageElement
    @@ -576,7 +576,7 @@

    HTMLInputElement

    HTMLInputElement: HTMLInputElement
    @@ -586,7 +586,7 @@

    HTMLLIElement

    HTMLLIElement: HTMLLIElement
    @@ -596,7 +596,7 @@

    HTMLLabelElement

    HTMLLabelElement: HTMLLabelElement
    @@ -606,7 +606,7 @@

    HTMLLegendElement

    HTMLLegendElement: HTMLLegendElement
    @@ -616,7 +616,7 @@

    HTMLLinkElement

    HTMLLinkElement: HTMLLinkElement
    @@ -626,7 +626,7 @@

    HTMLMapElement

    HTMLMapElement: HTMLMapElement
    @@ -636,7 +636,7 @@

    HTMLMarqueeElement

    HTMLMarqueeElement: HTMLMarqueeElement
    @@ -646,7 +646,7 @@

    HTMLMediaElement

    HTMLMediaElement: HTMLMediaElement
    @@ -656,7 +656,7 @@

    HTMLMenuElement

    HTMLMenuElement: HTMLMenuElement
    @@ -666,7 +666,7 @@

    HTMLMetaElement

    HTMLMetaElement: HTMLMetaElement
    @@ -676,7 +676,7 @@

    HTMLMeterElement

    HTMLMeterElement: HTMLMeterElement
    @@ -686,7 +686,7 @@

    HTMLModElement

    HTMLModElement: HTMLModElement
    @@ -696,7 +696,7 @@

    HTMLOListElement

    HTMLOListElement: HTMLOListElement
    @@ -706,7 +706,7 @@

    HTMLObjectElement

    HTMLObjectElement: HTMLObjectElement
    @@ -716,7 +716,7 @@

    HTMLOptGroupElement

    HTMLOptGroupElement: HTMLOptGroupElement
    @@ -726,7 +726,7 @@

    HTMLOptionElement

    HTMLOptionElement: HTMLOptionElement
    @@ -736,7 +736,7 @@

    HTMLOutputElement

    HTMLOutputElement: HTMLOutputElement
    @@ -746,7 +746,7 @@

    HTMLParagraphElement

    HTMLParagraphElement: HTMLParagraphElement
    @@ -756,7 +756,7 @@

    HTMLParamElement

    HTMLParamElement: HTMLParamElement
    @@ -766,7 +766,7 @@

    HTMLPictureElement

    HTMLPictureElement: HTMLPictureElement
    @@ -776,7 +776,7 @@

    HTMLPreElement

    HTMLPreElement: HTMLPreElement
    @@ -786,7 +786,7 @@

    HTMLProgressElement

    HTMLProgressElement: HTMLProgressElement
    @@ -796,7 +796,7 @@

    HTMLQuoteElement

    HTMLQuoteElement: HTMLQuoteElement
    @@ -806,7 +806,7 @@

    HTMLScriptElement

    HTMLScriptElement: HTMLScriptElement
    @@ -816,7 +816,7 @@

    HTMLSelectElement

    HTMLSelectElement: HTMLSelectElement
    @@ -826,7 +826,7 @@

    HTMLSlotElement

    HTMLSlotElement: HTMLSlotElement
    @@ -836,7 +836,7 @@

    HTMLSourceElement

    HTMLSourceElement: HTMLSourceElement
    @@ -846,7 +846,7 @@

    HTMLSpanElement

    HTMLSpanElement: HTMLSpanElement
    @@ -856,7 +856,7 @@

    HTMLStyleElement

    HTMLStyleElement: HTMLStyleElement
    @@ -866,7 +866,7 @@

    HTMLTableCaptionElement

    HTMLTableCaptionElement: HTMLTableCaptionElement
    @@ -876,7 +876,7 @@

    HTMLTableCellElement

    HTMLTableCellElement: HTMLTableCellElement
    @@ -886,7 +886,7 @@

    HTMLTableColElement

    HTMLTableColElement: HTMLTableColElement
    @@ -896,7 +896,7 @@

    HTMLTableDataCellElement

    HTMLTableDataCellElement: HTMLTableDataCellElement
    @@ -906,7 +906,7 @@

    HTMLTableElement

    HTMLTableElement: HTMLTableElement
    @@ -916,7 +916,7 @@

    HTMLTableHeaderCellElement

    HTMLTableHeaderCellElement: HTMLTableHeaderCellElement
    @@ -926,7 +926,7 @@

    HTMLTableRowElement

    HTMLTableRowElement: HTMLTableRowElement
    @@ -936,7 +936,7 @@

    HTMLTableSectionElement

    HTMLTableSectionElement: HTMLTableSectionElement
    @@ -946,7 +946,7 @@

    HTMLTemplateElement

    HTMLTemplateElement: HTMLTemplateElement
    @@ -956,7 +956,7 @@

    HTMLTextAreaElement

    HTMLTextAreaElement: HTMLTextAreaElement
    @@ -966,7 +966,7 @@

    HTMLTimeElement

    HTMLTimeElement: HTMLTimeElement
    @@ -976,7 +976,7 @@

    HTMLTitleElement

    HTMLTitleElement: HTMLTitleElement
    @@ -986,7 +986,7 @@

    HTMLTrackElement

    HTMLTrackElement: HTMLTrackElement
    @@ -996,7 +996,7 @@

    HTMLUListElement

    HTMLUListElement: HTMLUListElement
    @@ -1006,7 +1006,7 @@

    HTMLUnknownElement

    HTMLUnknownElement: HTMLUnknownElement
    @@ -1016,7 +1016,7 @@

    HTMLVideoElement

    HTMLVideoElement: HTMLVideoElement
    @@ -1026,7 +1026,7 @@

    Node

    Node: Node
    @@ -1036,7 +1036,7 @@

    ParentNode

    ParentNode: ParentNode
    @@ -1046,7 +1046,7 @@

    ProcessingInstruction

    ProcessingInstruction: ProcessingInstruction
    @@ -1056,7 +1056,7 @@

    Range

    Range: Range
    @@ -1066,7 +1066,7 @@

    ShadowRoot

    ShadowRoot: ShadowRoot
    @@ -1076,7 +1076,7 @@

    Text

    Text: Text
    @@ -1086,7 +1086,7 @@

    XMLDocument

    XMLDocument: XMLDocument
    diff --git a/docs/interfaces/roosterjs_editor_types.textfeaturesettings.html b/docs/interfaces/roosterjs_editor_types.textfeaturesettings.html index 4be0aa85da9..021e480402f 100644 --- a/docs/interfaces/roosterjs_editor_types.textfeaturesettings.html +++ b/docs/interfaces/roosterjs_editor_types.textfeaturesettings.html @@ -109,7 +109,7 @@

    autoHyphen

    autoHyphen: boolean
    @@ -127,7 +127,7 @@

    indentWhenTabText

    indentWhenTabText: boolean
    @@ -147,7 +147,7 @@

    outdentWhenTabText

    outdentWhenTabText: boolean
    diff --git a/docs/interfaces/roosterjs_editor_types.undopluginstate.html b/docs/interfaces/roosterjs_editor_types.undopluginstate.html index e500c6ca6f3..c47719b4cd1 100644 --- a/docs/interfaces/roosterjs_editor_types.undopluginstate.html +++ b/docs/interfaces/roosterjs_editor_types.undopluginstate.html @@ -106,7 +106,7 @@

    autoCompletePosition

    autoCompletePosition: NodePosition
    @@ -121,7 +121,7 @@

    hasNewContent

    hasNewContent: boolean
    @@ -136,7 +136,7 @@

    isNested

    isNested: boolean
    @@ -151,7 +151,7 @@

    isRestoring

    isRestoring: boolean
    @@ -166,7 +166,7 @@

    snapshotsService

    snapshotsService: UndoSnapshotsService<Snapshot>
    diff --git a/docs/interfaces/roosterjs_editor_types.undosnapshotsservice.html b/docs/interfaces/roosterjs_editor_types.undosnapshotsservice.html index 9cf0cf877b0..5fd7e09bc7a 100644 --- a/docs/interfaces/roosterjs_editor_types.undosnapshotsservice.html +++ b/docs/interfaces/roosterjs_editor_types.undosnapshotsservice.html @@ -118,7 +118,7 @@

    addSnapshot

  • @@ -152,7 +152,7 @@

    canMove

  • @@ -184,7 +184,7 @@

    canUndoAutoComplete

  • @@ -206,7 +206,7 @@

    clearRedo

  • @@ -228,7 +228,7 @@

    move

  • diff --git a/docs/interfaces/roosterjs_editor_types.vcell.html b/docs/interfaces/roosterjs_editor_types.vcell.html index 27edbfdd65a..4f8d36dc2f3 100644 --- a/docs/interfaces/roosterjs_editor_types.vcell.html +++ b/docs/interfaces/roosterjs_editor_types.vcell.html @@ -106,7 +106,7 @@

    Optional height

    height: number
    @@ -122,7 +122,7 @@

    Optional spanAbove

    spanAbove: boolean
    @@ -137,7 +137,7 @@

    Optional spanLeft

    spanLeft: boolean
    @@ -152,7 +152,7 @@

    Optional td

    td: HTMLTableCellElement
    @@ -167,7 +167,7 @@

    Optional width

    width: number
    diff --git a/docs/interfaces/roosterjs_editor_types.zoomchangedevent.html b/docs/interfaces/roosterjs_editor_types.zoomchangedevent.html index 553af6b1086..dc28af81b39 100644 --- a/docs/interfaces/roosterjs_editor_types.zoomchangedevent.html +++ b/docs/interfaces/roosterjs_editor_types.zoomchangedevent.html @@ -115,7 +115,7 @@

    Optional eventDataCa
    @@ -141,7 +141,7 @@

    eventType

    @@ -157,7 +157,7 @@

    newZoomScale

    @@ -173,7 +173,7 @@

    oldZoomScale

    diff --git a/docs/interfaces/roosterjs_editor_types.zoomchangedeventdata.html b/docs/interfaces/roosterjs_editor_types.zoomchangedeventdata.html index 65657d351c9..6c172cce280 100644 --- a/docs/interfaces/roosterjs_editor_types.zoomchangedeventdata.html +++ b/docs/interfaces/roosterjs_editor_types.zoomchangedeventdata.html @@ -111,7 +111,7 @@

    newZoomScale

    newZoomScale: number
    @@ -126,7 +126,7 @@

    oldZoomScale

    oldZoomScale: number
    diff --git a/docs/interfaces/roosterjs_react.contextmenuitem.html b/docs/interfaces/roosterjs_react.contextmenuitem.html index 7f121bee572..1483e00e515 100644 --- a/docs/interfaces/roosterjs_react.contextmenuitem.html +++ b/docs/interfaces/roosterjs_react.contextmenuitem.html @@ -120,7 +120,7 @@

    Optional commandBarS
    commandBarSubMenuProperties: Partial<IContextualMenuProps>
    @@ -135,7 +135,7 @@

    Optional itemClassNa
    itemClassName: string
    @@ -150,7 +150,7 @@

    Optional itemRender

    itemRender: (item: IContextualMenuItem, onClick: (e: MouseEvent<Element, MouseEvent> | KeyboardEvent<Element>, item: IContextualMenuItem) => void) => ReactNode
    @@ -220,7 +220,7 @@

    key

    key: TString
    @@ -235,7 +235,7 @@

    onClick

    onClick: (key: TString, editor: IEditor, targetNode: Node, strings: LocalizedStrings<TString, string>, uiUtilities: UIUtilities, context?: TContext) => void
    @@ -316,7 +316,7 @@

    Optional shouldShow

    shouldShow: (editor: IEditor, targetNode: Node, context?: TContext) => boolean
    @@ -373,7 +373,7 @@

    Optional subItems

    subItems: {[ key in string]: string }
    @@ -389,7 +389,7 @@

    unlocalizedText

    unlocalizedText: string
    diff --git a/docs/interfaces/roosterjs_react.dialogitem.html b/docs/interfaces/roosterjs_react.dialogitem.html index ee9abc6bc20..627e3e56a96 100644 --- a/docs/interfaces/roosterjs_react.dialogitem.html +++ b/docs/interfaces/roosterjs_react.dialogitem.html @@ -113,7 +113,7 @@

    Optional autoFocus

    autoFocus: boolean
    @@ -128,7 +128,7 @@

    initValue

    initValue: string
    @@ -143,7 +143,7 @@

    labelKey

    labelKey: Strings
    @@ -158,7 +158,7 @@

    unlocalizedLabel

    unlocalizedLabel: string
    diff --git a/docs/interfaces/roosterjs_react.reacteditorplugin.html b/docs/interfaces/roosterjs_react.reacteditorplugin.html index cdde01d2e5b..b3b4038ed94 100644 --- a/docs/interfaces/roosterjs_react.reacteditorplugin.html +++ b/docs/interfaces/roosterjs_react.reacteditorplugin.html @@ -123,7 +123,7 @@

    dispose

    @@ -156,7 +156,7 @@

    getName

    @@ -187,7 +187,7 @@

    initialize

    @@ -231,7 +231,7 @@

    Optional onPluginEve
    @@ -275,7 +275,7 @@

    Optional willHandleE
    @@ -327,7 +327,7 @@

    setUIUtilities

  • diff --git a/docs/interfaces/roosterjs_react.ribbonbutton.html b/docs/interfaces/roosterjs_react.ribbonbutton.html index 925401c673c..ec98ae4ca4a 100644 --- a/docs/interfaces/roosterjs_react.ribbonbutton.html +++ b/docs/interfaces/roosterjs_react.ribbonbutton.html @@ -118,7 +118,7 @@

    Optional commandBarP
    commandBarProperties: Partial<ICommandBarItemProps>
    @@ -135,7 +135,7 @@

    Optional dropDownMen
    dropDownMenu: RibbonButtonDropDown
    @@ -152,7 +152,7 @@

    Optional flipWhenRtl
    flipWhenRtl: boolean
    @@ -167,7 +167,7 @@

    iconName

    iconName: string
    @@ -182,7 +182,7 @@

    Optional isChecked

    isChecked: (formatState: FormatState) => boolean
    @@ -224,7 +224,7 @@

    Optional isDisabled

    isDisabled: (formatState: FormatState) => boolean
    @@ -266,7 +266,7 @@

    key

    key: T
    @@ -281,7 +281,7 @@

    onClick

    onClick: (editor: IEditor, key: T, strings: LocalizedStrings<T, string>, uiUtilities: UIUtilities) => void
    @@ -346,7 +346,7 @@

    unlocalizedText

    unlocalizedText: string
    diff --git a/docs/interfaces/roosterjs_react.ribbonbuttondropdown.html b/docs/interfaces/roosterjs_react.ribbonbuttondropdown.html index 95f2c88208f..790bebbea62 100644 --- a/docs/interfaces/roosterjs_react.ribbonbuttondropdown.html +++ b/docs/interfaces/roosterjs_react.ribbonbuttondropdown.html @@ -107,7 +107,7 @@

    Optional allowLivePr
    allowLivePreview: boolean
    @@ -124,7 +124,7 @@

    Optional commandBarS
    commandBarSubMenuProperties: Partial<IContextualMenuProps>
    @@ -139,7 +139,7 @@

    Optional getSelected
    getSelectedItemKey: (formatState: FormatState) => string
    @@ -181,7 +181,7 @@

    Optional itemClassNa
    itemClassName: string
    @@ -196,7 +196,7 @@

    Optional itemRender

    itemRender: (item: IContextualMenuItem, onClick: (e: MouseEvent<Element, MouseEvent> | KeyboardEvent<Element>, item: IContextualMenuItem) => void) => ReactNode
    @@ -266,7 +266,7 @@

    items

    items: Record<string, string>
    diff --git a/docs/interfaces/roosterjs_react.ribbonplugin.html b/docs/interfaces/roosterjs_react.ribbonplugin.html index 8eacf5f22d4..72fafd07b8f 100644 --- a/docs/interfaces/roosterjs_react.ribbonplugin.html +++ b/docs/interfaces/roosterjs_react.ribbonplugin.html @@ -122,7 +122,7 @@

    dispose

    @@ -155,7 +155,7 @@

    getName

    @@ -186,7 +186,7 @@

    initialize

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

    onButtonClick

    onButtonClick: <T>(button: RibbonButton<T>, key: T, strings?: LocalizedStrings<T, string>) => void
    @@ -293,7 +293,7 @@

    Optional onPluginEve
    @@ -336,7 +336,7 @@

    registerFormatChangedCallback

    registerFormatChangedCallback: (callback: (formatState: FormatState) => void) => () => void
    @@ -402,7 +402,7 @@

    startLivePreview

    startLivePreview: <T>(button: RibbonButton<T>, key: T, strings?: LocalizedStrings<T, string>) => void
    @@ -465,7 +465,7 @@

    stopLivePreview

    stopLivePreview: () => void
    @@ -496,7 +496,7 @@

    Optional willHandleE
    @@ -549,7 +549,7 @@

    setUIUtilities

    diff --git a/docs/interfaces/roosterjs_react.ribbonprops.html b/docs/interfaces/roosterjs_react.ribbonprops.html index 0627f557430..3ce07e26954 100644 --- a/docs/interfaces/roosterjs_react.ribbonprops.html +++ b/docs/interfaces/roosterjs_react.ribbonprops.html @@ -117,7 +117,7 @@

    buttons

    buttons: RibbonButton<T>[]
    @@ -132,7 +132,7 @@

    plugin

    plugin: RibbonPlugin
    @@ -147,7 +147,7 @@

    Optional strings

    strings: LocalizedStrings<T, string>
    diff --git a/docs/interfaces/roosterjs_react.roosterprops.html b/docs/interfaces/roosterjs_react.roosterprops.html index 9df0b319677..e95f0818aac 100644 --- a/docs/interfaces/roosterjs_react.roosterprops.html +++ b/docs/interfaces/roosterjs_react.roosterprops.html @@ -132,7 +132,7 @@

    Optional allowKeyboard

    Inherited from EditorOptions.allowKeyboardEventPropagation

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

    Optional allowedCustom

    Inherited from EditorOptions.allowedCustomPasteType

    @@ -168,7 +168,7 @@

    Optional coreApiOver
    @@ -185,7 +185,7 @@

    Optional corePluginO
    @@ -202,7 +202,7 @@

    Optional defaultFormat

    Inherited from EditorOptions.defaultFormat

    @@ -220,7 +220,7 @@

    Optional doNotAdjust
    @@ -235,7 +235,7 @@

    Optional editorCreatoreditorCreator: (div: HTMLDivElement, options: EditorOptions) => IEditor

    @@ -276,7 +276,7 @@

    Optional experimentalFeat
    @@ -291,7 +291,7 @@

    Optional focusOnInit

    focusOnInit: boolean
    @@ -308,7 +308,7 @@

    Optional getDarkColo
    @@ -346,7 +346,7 @@

    Optional getVisibleV
    @@ -377,7 +377,7 @@

    Optional imageSelection

    Inherited from EditorOptions.imageSelectionBorderColor

    @@ -393,7 +393,7 @@

    Optional inDarkMode<
    @@ -409,7 +409,7 @@

    Optional initialContent

    Inherited from EditorOptions.initialContent

    @@ -426,7 +426,7 @@

    Optional onExternalC
    @@ -467,7 +467,7 @@

    Optional plugins

    @@ -486,7 +486,7 @@

    Optional scrollContainer<
    @@ -503,7 +503,7 @@

    Optional sizeTransformer<
    @@ -521,7 +521,7 @@

    Optional trustedHTMLHandler

    Inherited from EditorOptions.trustedHTMLHandler

    @@ -539,7 +539,7 @@

    Optional undoMetadata

    Inherited from EditorOptions.undoMetadataSnapshotService

    @@ -556,7 +556,7 @@

    Optional undoSnapshot

    Inherited from EditorOptions.undoSnapshotService

    @@ -575,7 +575,7 @@

    Optional zoomScale

    diff --git a/docs/interfaces/roosterjs_react.uiutilities.html b/docs/interfaces/roosterjs_react.uiutilities.html index e81d53ac979..5338222e4b3 100644 --- a/docs/interfaces/roosterjs_react.uiutilities.html +++ b/docs/interfaces/roosterjs_react.uiutilities.html @@ -107,7 +107,7 @@

    isRightToLeft

  • @@ -129,7 +129,7 @@

    renderComponent

  • diff --git a/docs/interfaces/roosterjs_react.updatecontentplugin.html b/docs/interfaces/roosterjs_react.updatecontentplugin.html index be8fe4129ec..6662204c169 100644 --- a/docs/interfaces/roosterjs_react.updatecontentplugin.html +++ b/docs/interfaces/roosterjs_react.updatecontentplugin.html @@ -113,7 +113,7 @@

    dispose

    @@ -145,7 +145,7 @@

    forceUpdate

    forceUpdate: () => void
    @@ -176,7 +176,7 @@

    getName

    @@ -207,7 +207,7 @@

    initialize

    @@ -251,7 +251,7 @@

    Optional onPluginEve
    @@ -295,7 +295,7 @@

    Optional willHandleE
    diff --git a/docs/modules/roosterjs.html b/docs/modules/roosterjs.html index 9933bb7dc8a..b6efb98f79d 100644 --- a/docs/modules/roosterjs.html +++ b/docs/modules/roosterjs.html @@ -88,7 +88,7 @@

    createEditor

  • diff --git a/docs/modules/roosterjs_color_utils.html b/docs/modules/roosterjs_color_utils.html index 08bde406489..bd66e20db1f 100644 --- a/docs/modules/roosterjs_color_utils.html +++ b/docs/modules/roosterjs_color_utils.html @@ -88,7 +88,7 @@

    getDarkColor

  • diff --git a/docs/modules/roosterjs_content_model.html b/docs/modules/roosterjs_content_model.html index abb3dbc7c16..a3ed2009b42 100644 --- a/docs/modules/roosterjs_content_model.html +++ b/docs/modules/roosterjs_content_model.html @@ -88,7 +88,7 @@

    createContentModelEditor

  • diff --git a/docs/modules/roosterjs_content_model_dom.html b/docs/modules/roosterjs_content_model_dom.html index d08cab41f35..5fc14ccf1e9 100644 --- a/docs/modules/roosterjs_content_model_dom.html +++ b/docs/modules/roosterjs_content_model_dom.html @@ -139,7 +139,7 @@

    Const BorderKeys

    BorderKeys: (keyof BorderFormat & keyof CSSStyleDeclaration)[] = ...
    @@ -154,7 +154,7 @@

    Const DeprecatedColors

    DeprecatedColors: string[] = ...
    @@ -169,7 +169,7 @@

    Const defaultImplicitFo
    defaultImplicitFormatMap: DefaultImplicitFormatMap = ...
    @@ -191,7 +191,7 @@

    addBlock

  • @@ -228,7 +228,7 @@

    addCode

  • @@ -265,7 +265,7 @@

    addLink

  • @@ -297,7 +297,7 @@

    addSegment

  • @@ -340,7 +340,7 @@

    areSameFormats

  • @@ -383,7 +383,7 @@

    Const childProcessor

  • @@ -423,7 +423,7 @@

    contentModelToDom

  • @@ -486,7 +486,7 @@

    createBr

  • @@ -517,7 +517,7 @@

    createContentModelDocument

  • @@ -548,7 +548,7 @@

    createDivider

  • @@ -585,7 +585,7 @@

    createDomToModelContext

  • @@ -628,7 +628,7 @@

    createEntity

  • @@ -683,7 +683,7 @@

    createFormatContainer

  • @@ -720,7 +720,7 @@

    createGeneralBlock

  • @@ -751,7 +751,7 @@

    createGeneralSegment

  • @@ -788,7 +788,7 @@

    createImage

  • @@ -825,7 +825,7 @@

    createListItem

  • @@ -862,7 +862,7 @@

    createListLevel

  • @@ -905,7 +905,7 @@

    createParagraph

  • @@ -954,7 +954,7 @@

    createParagraphDecorator

  • @@ -991,7 +991,7 @@

    createSelectionMarker

  • @@ -1022,7 +1022,7 @@

    createTable

  • @@ -1059,7 +1059,7 @@

    createTableCell

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

    createText

  • @@ -1145,7 +1145,7 @@

    domToContentModel

  • @@ -1195,7 +1195,7 @@

    Const entityProcessor

  • @@ -1235,7 +1235,7 @@

    getRegularSelectionOffsets

  • @@ -1274,7 +1274,7 @@

    handleRegularSelection

  • @@ -1329,7 +1329,7 @@

    hasMetadata

  • @@ -1366,7 +1366,7 @@

    isGeneralSegment

  • @@ -1397,7 +1397,7 @@

    isNodeOfType

  • @@ -1440,7 +1440,7 @@

    isWhiteSpacePreserved

  • @@ -1471,7 +1471,7 @@

    normalizeContentModel

  • @@ -1509,7 +1509,7 @@

    normalizeSingleSegment

  • @@ -1546,7 +1546,7 @@

    parseFormat

  • @@ -1601,7 +1601,7 @@

    parseValueWithUnit

  • @@ -1644,7 +1644,7 @@

    processChildNode

  • @@ -1684,7 +1684,7 @@

    setParagraphNotImplicit

  • @@ -1715,7 +1715,7 @@

    Const tableProcessor

  • @@ -1766,7 +1766,7 @@

    unwrapBlock

  • @@ -1803,7 +1803,7 @@

    updateListMetadata

  • @@ -1858,7 +1858,7 @@

    updateMetadata

  • diff --git a/docs/modules/roosterjs_content_model_editor.html b/docs/modules/roosterjs_content_model_editor.html index 026483afea7..bbff30ffa22 100644 --- a/docs/modules/roosterjs_content_model_editor.html +++ b/docs/modules/roosterjs_content_model_editor.html @@ -181,7 +181,7 @@

    ContentModelFormatter

    ContentModelFormatter: (model: ContentModelDocument, context: FormatWithContentModelContext) => boolean
  • @@ -436,7 +436,7 @@

    adjustLinkSelection

  • @@ -465,7 +465,7 @@

    applyPendingFormat

  • @@ -502,7 +502,7 @@

    applySegmentFormat

  • @@ -539,7 +539,7 @@

    changeCapitalization

  • @@ -584,7 +584,7 @@

    changeFontSize

  • @@ -621,7 +621,7 @@

    changeImage

  • @@ -658,7 +658,7 @@

    clearFormat

  • @@ -689,7 +689,7 @@

    combineBorderValue

  • @@ -717,7 +717,7 @@

    Const createContentMode
  • @@ -748,7 +748,7 @@

    editTable

  • @@ -785,7 +785,7 @@

    extractBorderValues

  • @@ -817,7 +817,7 @@

    formatTable

  • @@ -860,7 +860,7 @@

    formatWithContentModel

  • @@ -912,7 +912,7 @@

    getFormatState

  • @@ -943,7 +943,7 @@

    getSelectedSegments

  • @@ -974,7 +974,7 @@

    hasSelectionInBlock

  • @@ -1005,7 +1005,7 @@

    hasSelectionInBlockGroup

  • @@ -1033,7 +1033,7 @@

    hasSelectionInSegment

  • @@ -1065,7 +1065,7 @@

    insertEntity

  • @@ -1114,7 +1114,7 @@

    Returns
    @@ -1172,7 +1172,7 @@

    insertImage

  • @@ -1206,7 +1206,7 @@

    insertLink

  • @@ -1266,7 +1266,7 @@

    insertTable

  • @@ -1317,7 +1317,7 @@

    isContentModelEditor

  • @@ -1349,7 +1349,7 @@

    paste

  • @@ -1395,7 +1395,7 @@

    promoteToContentModelEditorCore

  • @@ -1432,7 +1432,7 @@

    removeLink

  • @@ -1465,7 +1465,7 @@

    setAlignment

  • @@ -1502,7 +1502,7 @@

    setBackgroundColor

  • @@ -1539,7 +1539,7 @@

    setDirection

  • @@ -1576,7 +1576,7 @@

    setFontName

  • @@ -1613,7 +1613,7 @@

    setFontSize

  • @@ -1650,7 +1650,7 @@

    setHeadingLevel

  • @@ -1687,7 +1687,7 @@

    setImageAltText

  • @@ -1725,7 +1725,7 @@

    setImageBorder

  • @@ -1769,7 +1769,7 @@

    setImageBoxShadow

  • @@ -1812,7 +1812,7 @@

    setIndentation

  • @@ -1855,7 +1855,7 @@

    setListStartNumber

  • @@ -1892,7 +1892,7 @@

    setListStyle

  • @@ -1929,7 +1929,7 @@

    setParagraphMargin

  • @@ -1973,7 +1973,7 @@

    setSpacing

  • @@ -2010,7 +2010,7 @@

    setTableCellShade

  • @@ -2047,7 +2047,7 @@

    setTextColor

  • @@ -2084,7 +2084,7 @@

    toggleBlockQuote

  • @@ -2123,7 +2123,7 @@

    toggleBold

  • @@ -2154,7 +2154,7 @@

    toggleBullet

  • @@ -2189,7 +2189,7 @@

    toggleCode

  • @@ -2220,7 +2220,7 @@

    toggleItalic

  • @@ -2251,7 +2251,7 @@

    toggleNumbering

  • @@ -2286,7 +2286,7 @@

    toggleStrikethrough

  • @@ -2317,7 +2317,7 @@

    toggleSubscript

  • @@ -2348,7 +2348,7 @@

    toggleSuperscript

  • @@ -2379,7 +2379,7 @@

    toggleUnderline

  • @@ -2410,7 +2410,7 @@

    updateImageMetadata

  • @@ -2465,7 +2465,7 @@

    updateTableCellMetadata

  • @@ -2520,7 +2520,7 @@

    updateTableMetadata

  • diff --git a/docs/modules/roosterjs_content_model_types.html b/docs/modules/roosterjs_content_model_types.html index eb38b5bc974..4f8cdf187a7 100644 --- a/docs/modules/roosterjs_content_model_types.html +++ b/docs/modules/roosterjs_content_model_types.html @@ -207,7 +207,7 @@

    BackgroundColorFormat

    BackgroundColorFormat: { backgroundColor?: string }
    @@ -235,7 +235,7 @@

    BoldFormat

    BoldFormat: { fontWeight?: string }
    @@ -263,7 +263,7 @@

    BorderBoxFormat

    BorderBoxFormat: { useBorderBox?: boolean }
    @@ -291,7 +291,7 @@

    BorderFormat

    BorderFormat: { borderBottom?: string; borderLeft?: string; borderRadius?: string; borderRight?: string; borderTop?: string }
    @@ -351,7 +351,7 @@

    BoxShadowFormat

    BoxShadowFormat: { boxShadow?: string }
    @@ -379,7 +379,7 @@

    ContentModelBlock

    @@ -394,7 +394,7 @@

    ContentModelBlockFormat

    @@ -409,7 +409,7 @@

    ContentModelBlockGroup

    @@ -424,7 +424,7 @@

    ContentModelBlockGroupType

    ContentModelBlockGroupType: "Document" | "FormatContainer" | "ListItem" | "TableCell" | "General"
    @@ -439,7 +439,7 @@

    ContentModelBlockHandler

    ContentModelBlockHandler<T>: (doc: Document, parent: Node, model: T, context: ModelToDomContext, refNode: Node | null) => Node | null

    Type parameters

    @@ -519,7 +519,7 @@

    ContentModelBlockType

    ContentModelBlockType: "BlockGroup" | "Table" | "Paragraph" | "Entity" | "Divider"
    @@ -534,7 +534,7 @@

    ContentModelCodeFormat

    ContentModelCodeFormat: FontFamilyFormat & DisplayFormat
    @@ -549,7 +549,7 @@

    ContentModelDecorator

    @@ -564,7 +564,7 @@

    ContentModelDividerFormat

    ContentModelDividerFormat: ContentModelBlockFormat & DisplayFormat & SizeFormat
    @@ -579,7 +579,7 @@

    ContentModelFormatBase

    ContentModelFormatBase<V>: {}
    @@ -610,7 +610,7 @@

    ContentModelFormatContainerFormat

    @@ -625,7 +625,7 @@

    ContentModelHandler

    ContentModelHandler<T>: (doc: Document, parent: Node, model: T, context: ModelToDomContext) => void

    Type parameters

    @@ -696,7 +696,7 @@

    ContentModelHandlerMap

    @@ -836,7 +836,7 @@

    ContentModelHyperLinkFormat

    @@ -851,7 +851,7 @@

    ContentModelImageFormat

    @@ -866,7 +866,7 @@

    ContentModelListItemFormat

    @@ -881,7 +881,7 @@

    ContentModelListItemLevelFormat

    @@ -896,7 +896,7 @@

    ContentModelSegment

    @@ -911,7 +911,7 @@

    ContentModelSegmentFormat

    @@ -926,7 +926,7 @@

    ContentModelSegmentType

    ContentModelSegmentType: "Text" | "Br" | "Image" | "SelectionMarker" | "General" | "Entity"
    @@ -941,7 +941,7 @@

    ContentModelTableCellFormat

    @@ -956,7 +956,7 @@

    ContentModelTableFormat

    @@ -971,7 +971,7 @@

    DatasetFormat

    DatasetFormat: Record<string, string>
    @@ -986,7 +986,7 @@

    DefaultImplicitFormatMap

    DefaultImplicitFormatMap: Record<string, Readonly<ContentModelSegmentFormat & ContentModelBlockFormat>>
    @@ -1001,7 +1001,7 @@

    DefaultStyleMap

    DefaultStyleMap: {[ key in keyof HTMLElementDeprecatedTagNameMap]: Readonly<Partial<CSSStyleDeclaration>> } & {[ key in keyof HTMLElementTagNameMap]: Readonly<Partial<CSSStyleDeclaration>> } & { center?: Partial<CSSStyleDeclaration>; strike?: Partial<CSSStyleDeclaration> }
    @@ -1016,7 +1016,7 @@

    DirectionFormat

    DirectionFormat: { direction?: "ltr" | "rtl" }
    @@ -1044,7 +1044,7 @@

    DisplayFormat

    DisplayFormat: { display?: string }
    @@ -1072,7 +1072,7 @@

    ElementProcessor

    ElementProcessor<T>: (group: ContentModelBlockGroup, element: T, context: DomToModelContext) => void

    Type parameters

    @@ -1135,7 +1135,7 @@

    ElementProcessorMap

    ElementProcessorMap: {[ key in keyof HTMLElementDeprecatedTagNameMap]: ElementProcessor<HTMLElementDeprecatedTagNameMap[key]> } & {[ key in keyof HTMLElementTagNameMap]: ElementProcessor<HTMLElementTagNameMap[key]> } & { #text: ElementProcessor<Text>; *: ElementProcessor<HTMLElement>; center?: ElementProcessor<HTMLElement>; child: ElementProcessor<ParentNode>; delimiter?: ElementProcessor<Node>; element: ElementProcessor<HTMLElement>; entity: ElementProcessor<HTMLElement>; strike?: ElementProcessor<HTMLElement> }
    @@ -1150,7 +1150,7 @@

    FloatFormat

    FloatFormat: { float?: string }
    @@ -1178,7 +1178,7 @@

    FontFamilyFormat

    FontFamilyFormat: { fontFamily?: string }
    @@ -1206,7 +1206,7 @@

    FontSizeFormat

    FontSizeFormat: { fontSize?: string }
    @@ -1234,7 +1234,7 @@

    FormatApplier

    FormatApplier<TFormat>: (format: TFormat, element: HTMLElement, context: ModelToDomContext) => void

    Type parameters

    @@ -1297,7 +1297,7 @@

    FormatAppliers

    FormatAppliers: {[ Key in FormatKey]: FormatApplier<FormatHandlerTypeMap[Key]> | null }
    @@ -1312,7 +1312,7 @@

    FormatAppliersPerCategory

    FormatAppliersPerCategory: {[ Key in keyof ContentModelFormatMap]: (FormatApplier<ContentModelFormatMap[Key]> | null)[] }
    @@ -1327,7 +1327,7 @@

    FormatKey

    FormatKey: keyof FormatHandlerTypeMap
    @@ -1342,7 +1342,7 @@

    FormatParser

    FormatParser<TFormat>: (format: TFormat, element: HTMLElement, context: DomToModelContext, defaultStyle: Readonly<Partial<CSSStyleDeclaration>>) => void

    Type parameters

    @@ -1413,7 +1413,7 @@

    FormatParsers

    FormatParsers: {[ Key in FormatKey]: FormatParser<FormatHandlerTypeMap[Key]> | null }
    @@ -1428,7 +1428,7 @@

    FormatParsersPerCategory

    FormatParsersPerCategory: {[ Key in keyof ContentModelFormatMap]: (FormatParser<ContentModelFormatMap[Key]> | null)[] }
    @@ -1443,7 +1443,7 @@

    HtmlAlignFormat

    HtmlAlignFormat: { htmlAlign?: "start" | "center" | "end" | "justify" | "initial" }
    @@ -1471,7 +1471,7 @@

    IdFormat

    IdFormat: { id?: string }
    @@ -1499,7 +1499,7 @@

    ImageCropMetadataFormat

    ImageCropMetadataFormat: { bottomPercent?: number; leftPercent?: number; rightPercent?: number; topPercent?: number }
    @@ -1571,7 +1571,7 @@

    ImageMetadataFormat

    ImageMetadataFormat: ImageResizeMetadataFormat & ImageCropMetadataFormat & ImageRotateMetadataFormat & { naturalHeight?: number; naturalWidth?: number; src?: string }
    @@ -1586,7 +1586,7 @@

    ImageResizeMetadataFormat

    ImageResizeMetadataFormat: { heightPx?: number; widthPx?: number }
    @@ -1636,7 +1636,7 @@

    ImageRotateMetadataFormat

    ImageRotateMetadataFormat: { angleRad?: number }
    @@ -1669,7 +1669,7 @@

    ItalicFormat

    ItalicFormat: { italic?: boolean }
    @@ -1697,7 +1697,7 @@

    LetterSpacingFormat

    LetterSpacingFormat: { letterSpacing?: string }
    @@ -1725,7 +1725,7 @@

    LineHeightFormat

    LineHeightFormat: { lineHeight?: string }
    @@ -1753,7 +1753,7 @@

    LinkFormat

    LinkFormat: { anchorClass?: string; anchorId?: string; anchorTitle?: string; href?: string; name?: string; relationship?: string; target?: string }
    @@ -1829,7 +1829,7 @@

    ListMetadataFormat

    ListMetadataFormat: { orderedStyleType?: NumberingListType; unorderedStyleType?: BulletListType }
    @@ -1865,7 +1865,7 @@

    ListStylePositionFormat

    ListStylePositionFormat: { listStylePosition?: string }
    @@ -1893,7 +1893,7 @@

    ListThreadFormat

    ListThreadFormat: { displayForDummyItem?: string; startNumberOverride?: number }
    @@ -1933,7 +1933,7 @@

    MarginFormat

    MarginFormat: { marginBottom?: string; marginLeft?: string; marginRight?: string; marginTop?: string }
    @@ -1985,7 +1985,7 @@

    OnNodeCreated

    @@ -2034,7 +2034,7 @@

    PaddingFormat

    PaddingFormat: { paddingBottom?: string; paddingLeft?: string; paddingRight?: string; paddingTop?: string }
    @@ -2086,7 +2086,7 @@

    SizeFormat

    SizeFormat: { height?: string; maxHeight?: string; maxWidth?: string; minHeight?: string; minWidth?: string; width?: string }
    @@ -2154,7 +2154,7 @@

    SpacingFormat

    SpacingFormat: { borderCollapse?: boolean }
    @@ -2182,7 +2182,7 @@

    StrikeFormat

    StrikeFormat: { strikethrough?: boolean }
    @@ -2210,7 +2210,7 @@

    SuperOrSubScriptFormat

    SuperOrSubScriptFormat: { superOrSubScriptSequence?: string }
    @@ -2239,7 +2239,7 @@

    TableLayoutFormat

    TableLayoutFormat: { tableLayout?: string }
    @@ -2267,7 +2267,7 @@

    TableMetadataFormat

    TableMetadataFormat: { bgColorEven?: string | null; bgColorOdd?: string | null; bottomBorderColor?: string | null; hasBandedColumns?: boolean; hasBandedRows?: boolean; hasFirstColumn?: boolean; hasHeaderRow?: boolean; headerRowColor?: string | null; tableBorderFormat?: TableBorderFormat | CompatibleTableBorderFormat; topBorderColor?: string | null; verticalAlign?: "top" | "middle" | "bottom" | null; verticalBorderColor?: string | null }
    @@ -2383,7 +2383,7 @@

    TextAlignFormat

    TextAlignFormat: { textAlign?: "start" | "center" | "end" | "justify" | "initial" }
    @@ -2411,7 +2411,7 @@

    TextColorFormat

    TextColorFormat: { textColor?: string }
    @@ -2439,7 +2439,7 @@

    UnderlineFormat

    UnderlineFormat: { underline?: boolean }
    @@ -2467,7 +2467,7 @@

    VerticalAlignFormat

    VerticalAlignFormat: { verticalAlign?: "top" | "middle" | "bottom" }
    @@ -2495,7 +2495,7 @@

    WhiteSpaceFormat

    WhiteSpaceFormat: { whiteSpace?: string }
    @@ -2523,7 +2523,7 @@

    WordBreakFormat

    WordBreakFormat: { wordBreak?: string }
    diff --git a/docs/modules/roosterjs_editor_api.html b/docs/modules/roosterjs_editor_api.html index 75aa7cc4544..9750515c8ac 100644 --- a/docs/modules/roosterjs_editor_api.html +++ b/docs/modules/roosterjs_editor_api.html @@ -130,7 +130,7 @@

    Const FONT_SIZES

    FONT_SIZES: number[] = ...
    @@ -153,7 +153,7 @@

    applyCellShading

  • @@ -190,7 +190,7 @@

    blockFormat

  • @@ -266,7 +266,7 @@

    changeCapitalization

  • @@ -311,7 +311,7 @@

    changeFontSize

  • @@ -354,7 +354,7 @@

    clearBlockFormat

  • @@ -387,7 +387,7 @@

    clearFormat

  • @@ -426,7 +426,7 @@

    commitListChains

  • @@ -463,7 +463,7 @@

    createLink

  • @@ -523,7 +523,7 @@

    editTable

  • @@ -560,7 +560,7 @@

    Const experimentCommitL
  • @@ -593,7 +593,7 @@

    formatTable

  • @@ -636,7 +636,7 @@

    getElementBasedFormatState

  • @@ -676,7 +676,7 @@

    getFormatState

  • @@ -718,7 +718,7 @@

    insertEntity

  • @@ -795,7 +795,7 @@

    insertImage

  • @@ -838,7 +838,7 @@

    insertTable

  • @@ -889,7 +889,7 @@

    removeLink

  • @@ -923,7 +923,7 @@

    replaceWithNode

  • @@ -970,7 +970,7 @@

    Returns boolean
    @@ -1020,7 +1020,7 @@

    rotateElement

  • @@ -1063,7 +1063,7 @@

    setAlignment

  • @@ -1101,7 +1101,7 @@

    setBackgroundColor

  • @@ -1143,7 +1143,7 @@

    setDirection

  • @@ -1181,7 +1181,7 @@

    setFontName

  • @@ -1219,7 +1219,7 @@

    setFontSize

  • @@ -1257,7 +1257,7 @@

    setHeadingLevel

  • @@ -1296,7 +1296,7 @@

    setImageAltText

  • @@ -1337,7 +1337,7 @@

    setIndentation

  • @@ -1377,7 +1377,7 @@

    setOrderedListNumbering

  • @@ -1420,7 +1420,7 @@

    setTextColor

  • @@ -1486,7 +1486,7 @@

    toggleBlockQuote

  • @@ -1542,7 +1542,7 @@

    toggleBold

  • @@ -1577,7 +1577,7 @@

    toggleBullet

  • @@ -1624,7 +1624,7 @@

    toggleCodeBlock

  • @@ -1680,7 +1680,7 @@

    Const toggleHeader

  • @@ -1714,7 +1714,7 @@

    toggleItalic

  • @@ -1749,7 +1749,7 @@

    toggleListType

  • @@ -1826,7 +1826,7 @@

    toggleNumbering

  • @@ -1879,7 +1879,7 @@

    toggleStrikethrough

  • @@ -1914,7 +1914,7 @@

    toggleSubscript

  • @@ -1951,7 +1951,7 @@

    toggleSuperscript

  • @@ -1988,7 +1988,7 @@

    toggleUnderline

  • diff --git a/docs/modules/roosterjs_editor_core.html b/docs/modules/roosterjs_editor_core.html index 1fbb094790c..cd26ba84b03 100644 --- a/docs/modules/roosterjs_editor_core.html +++ b/docs/modules/roosterjs_editor_core.html @@ -96,7 +96,7 @@

    Const createEditorCore<
  • @@ -133,7 +133,7 @@

    isFeatureEnabled

  • diff --git a/docs/modules/roosterjs_editor_dom.html b/docs/modules/roosterjs_editor_dom.html index 5c16c51d707..4aced005d6f 100644 --- a/docs/modules/roosterjs_editor_dom.html +++ b/docs/modules/roosterjs_editor_dom.html @@ -231,7 +231,7 @@

    PendableFormatNames

    PendableFormatNames: keyof PendableFormatState
    @@ -249,7 +249,7 @@

    Const Browser

    Browser: BrowserInfo = ...
    @@ -264,7 +264,7 @@

    Const KnownCreateElemen
    KnownCreateElementData: Record<KnownCreateElementDataIndex, CreateElementData> = ...
    @@ -279,7 +279,7 @@

    Const PendableFormatCom
    PendableFormatCommandMap: {[ key in PendableFormatNames]: DocumentCommand } = ...
    @@ -301,7 +301,7 @@

    addDelimiterAfter

  • @@ -332,7 +332,7 @@

    addDelimiterBefore

  • @@ -363,7 +363,7 @@

    addDelimiters

  • @@ -394,7 +394,7 @@

    addRangeToSelection

  • @@ -434,7 +434,7 @@

    addSnapshot

  • @@ -468,7 +468,7 @@

    Returns void
    @@ -568,7 +568,7 @@

    addSnapshotV2

  • @@ -611,7 +611,7 @@

    adjustInsertPosition

  • Parameters

    @@ -656,7 +656,7 @@

    applyFormat

  • @@ -705,7 +705,7 @@

    applyTextStyle

  • @@ -769,7 +769,7 @@

    arrayPush

  • @@ -812,7 +812,7 @@

    cacheGetEventData

  • @@ -874,7 +874,7 @@

    canMoveCurrentSnapshot

  • @@ -918,7 +918,7 @@

    canUndoAutoComplete

  • @@ -952,7 +952,7 @@

    chainSanitizerCallback

  • @@ -1010,7 +1010,7 @@

    changeElementTag

  • @@ -1045,7 +1045,7 @@

    Returns HTMLEleme
  • @@ -1083,7 +1083,7 @@

    clearEventDataCache

  • @@ -1121,7 +1121,7 @@

    clearProceedingSnapshots

  • @@ -1143,7 +1143,7 @@

    Returns void
    @@ -1201,7 +1201,7 @@

    clearProceedingSnapshotsV2

  • @@ -1232,7 +1232,7 @@

    collapseNodes

  • @@ -1286,7 +1286,7 @@

    collapseNodesInRegion

  • @@ -1325,7 +1325,7 @@

    commitEntity

  • @@ -1375,7 +1375,7 @@

    contains

  • @@ -1412,7 +1412,7 @@

    Returns boolean
    @@ -1450,7 +1450,7 @@

    createArrayDefinition

  • @@ -1506,7 +1506,7 @@

    createBooleanDefinition

  • @@ -1550,7 +1550,7 @@

    createDefaultHtmlSanitizerOptions

  • @@ -1572,7 +1572,7 @@

    createElement

  • @@ -1610,7 +1610,7 @@

    createEntityPlaceholder

  • @@ -1644,7 +1644,7 @@

    createNumberDefinition

  • @@ -1700,7 +1700,7 @@

    createObjectDefinition

  • @@ -1754,7 +1754,7 @@

    createRange

  • @@ -1784,7 +1784,7 @@

    Returns Range
    @@ -1813,7 +1813,7 @@

    Returns Range
    @@ -1854,7 +1854,7 @@

    Returns Range
    @@ -1889,7 +1889,7 @@

    Returns Range
    @@ -1927,7 +1927,7 @@

    createSnapshots

  • @@ -1964,7 +1964,7 @@

    createStringDefinition

  • @@ -2008,7 +2008,7 @@

    createVListFromRegion

  • @@ -2053,7 +2053,7 @@

    deleteSelectedContent

  • @@ -2087,7 +2087,7 @@

    extractClipboardEvent

  • @@ -2164,7 +2164,7 @@

    extractClipboardItems

  • @@ -2208,7 +2208,7 @@

    extractClipboardItemsForIE

  • @@ -2273,7 +2273,7 @@

    extractContentMetadata

  • @@ -2305,7 +2305,7 @@

    findClosestElementAncestor

  • @@ -2350,7 +2350,7 @@

    fromHtml

  • @@ -2390,7 +2390,7 @@

    getBlockElementAtNode

  • @@ -2449,7 +2449,7 @@

    getBrowserInfo

  • @@ -2493,7 +2493,7 @@

    getComputedStyle

  • @@ -2531,7 +2531,7 @@

    getComputedStyles

  • @@ -2570,7 +2570,7 @@

    getDelimiterFromElement

  • @@ -2602,7 +2602,7 @@

    getEntityFromElement

  • @@ -2634,7 +2634,7 @@

    getEntitySelector

  • @@ -2671,7 +2671,7 @@

    getFirstLastBlockElement

  • @@ -2709,7 +2709,7 @@

    getFirstLeafNode

  • @@ -2740,7 +2740,7 @@

    getHtmlWithSelectionPath

  • @@ -2779,7 +2779,7 @@

    getInheritableStyles

  • @@ -2811,7 +2811,7 @@

    getInlineElementAtNode

  • @@ -2839,7 +2839,7 @@

    Returns
    @@ -2876,7 +2876,7 @@

    getInnerHTML

  • @@ -2907,7 +2907,7 @@

    getIntersectedRect

  • @@ -2965,7 +2965,7 @@

    getLastLeafNode

  • @@ -2996,7 +2996,7 @@

    getMetadata

  • @@ -3048,7 +3048,7 @@

    getNextLeafSibling

  • @@ -3091,7 +3091,7 @@

    getObjectKeys

  • @@ -3129,7 +3129,7 @@

    getPasteSource

  • @@ -3167,7 +3167,7 @@

    getPasteType

  • @@ -3210,7 +3210,7 @@

    getPendableFormatState

  • @@ -3242,7 +3242,7 @@

    getPositionRect

  • @@ -3273,7 +3273,7 @@

    getPreviousLeafSibling

  • @@ -3316,7 +3316,7 @@

    getRegionsFromRange

  • @@ -3360,7 +3360,7 @@

    getSelectedBlockElementsInRegion

  • @@ -3404,7 +3404,7 @@

    getSelectionPath

  • @@ -3441,7 +3441,7 @@

    getSelectionRangeInRegion

  • @@ -3474,7 +3474,7 @@

    getStyles

  • @@ -3505,7 +3505,7 @@

    getTableCellMetadata

  • @@ -3538,7 +3538,7 @@

    getTableFormatInfo

  • @@ -3570,7 +3570,7 @@

    getTagOfNode

  • @@ -3602,7 +3602,7 @@

    getTextContent

  • @@ -3634,7 +3634,7 @@

    handleImagePaste

  • @@ -3671,7 +3671,7 @@

    handleTextPaste

  • @@ -3714,7 +3714,7 @@

    isBlockElement

  • @@ -3746,7 +3746,7 @@

    isCharacterValue

  • @@ -3780,7 +3780,7 @@

    isCtrlOrMetaPressed

  • @@ -3812,7 +3812,7 @@

    isModifierKey

  • @@ -3843,7 +3843,7 @@

    isNodeAfter

  • @@ -3881,7 +3881,7 @@

    isNodeEmpty

  • @@ -3923,7 +3923,7 @@

    isNodeInRegion

  • @@ -3960,7 +3960,7 @@

    isPositionAtBeginningOf

  • @@ -3999,7 +3999,7 @@

    isVoidHtmlElement

  • @@ -4030,7 +4030,7 @@

    isWholeTableSelected

  • @@ -4067,7 +4067,7 @@

    matchLink

  • @@ -4100,7 +4100,7 @@

    matchesSelector

  • @@ -4137,7 +4137,7 @@

    mergeBlocksInRegion

  • @@ -4180,7 +4180,7 @@

    moveChildNodes

  • @@ -4223,7 +4223,7 @@

    moveContentWithEntityPlaceholders

  • @@ -4266,7 +4266,7 @@

    moveCurrentSnapshot

  • @@ -4310,7 +4310,7 @@

    Const moveCurrentSnapsn
  • @@ -4349,7 +4349,7 @@

    normalizeRect

  • @@ -4378,7 +4378,7 @@

    parseColor

  • @@ -4407,7 +4407,7 @@

    queryElements

  • @@ -4463,7 +4463,7 @@

    readFile

  • @@ -4519,7 +4519,7 @@

    removeGlobalCssStyle

  • @@ -4556,7 +4556,7 @@

    removeImportantStyleRule

  • @@ -4593,7 +4593,7 @@

    removeMetadata

  • @@ -4636,7 +4636,7 @@

    restoreContentWithEntityPlaceholder

  • @@ -4685,7 +4685,7 @@

    retrieveMetadataFromClipboard

  • @@ -4728,7 +4728,7 @@

    safeInstanceOf

  • @@ -4774,7 +4774,7 @@

    sanitizePasteContent

  • @@ -4811,7 +4811,7 @@

    saveTableCellMetadata

  • @@ -4848,7 +4848,7 @@

    setColor

  • @@ -4910,7 +4910,7 @@

    setGlobalCssStyles

  • @@ -4953,7 +4953,7 @@

    setHtmlWithMetadata

  • @@ -4995,7 +4995,7 @@

    setHtmlWithSelectionPath

  • @@ -5040,7 +5040,7 @@

    setListItemStyle

  • @@ -5084,7 +5084,7 @@

    setMetadata

  • @@ -5135,7 +5135,7 @@

    setStyles

  • @@ -5172,7 +5172,7 @@

    splitBalancedNodeRange

  • @@ -5205,7 +5205,7 @@

    splitParentNode

  • @@ -5246,7 +5246,7 @@

    splitTextNode

  • @@ -5294,7 +5294,7 @@

    toArray

  • @@ -5316,7 +5316,7 @@

    Returns Attr
    @@ -5338,7 +5338,7 @@

    Returns DataTrans
  • @@ -5366,7 +5366,7 @@

    Returns T<
  • @@ -5394,7 +5394,7 @@

    Returns T<
  • @@ -5433,7 +5433,7 @@

    unwrap

  • @@ -5464,7 +5464,7 @@

    validate

  • @@ -5511,7 +5511,7 @@

    wrap

  • @@ -5546,7 +5546,7 @@

    Returns HTMLEleme
  • @@ -5577,7 +5577,7 @@

    Returns HTMLEleme
  • @@ -5606,7 +5606,7 @@

    Returns HTMLEleme
  • diff --git a/docs/modules/roosterjs_editor_plugins.html b/docs/modules/roosterjs_editor_plugins.html index c8fa05c3caf..a7f45d8f124 100644 --- a/docs/modules/roosterjs_editor_plugins.html +++ b/docs/modules/roosterjs_editor_plugins.html @@ -120,7 +120,7 @@

    DNDDirectionX

    DNDDirectionX: "w" | "" | "e"
    @@ -135,7 +135,7 @@

    DnDDirectionY

    DnDDirectionY: "n" | "" | "s"
    @@ -157,7 +157,7 @@

    canRegenerateImage

  • @@ -190,7 +190,7 @@

    getAllFeatures

  • @@ -212,7 +212,7 @@

    isResizedTo

  • @@ -249,7 +249,7 @@

    resetImage

  • @@ -286,7 +286,7 @@

    resizeByPercentage

  • diff --git a/docs/modules/roosterjs_editor_types.html b/docs/modules/roosterjs_editor_types.html index 245f6a768f5..782c90ac1bd 100644 --- a/docs/modules/roosterjs_editor_types.html +++ b/docs/modules/roosterjs_editor_types.html @@ -347,7 +347,7 @@

    AddUndoSnapshot

    AddUndoSnapshot: (core: EditorCore, callback: ((start: NodePosition | null, end: NodePosition | null) => any) | null, changeSource: ChangeSource | CompatibleChangeSource | string | null, canUndoByBackspace: boolean, additionalData?: ContentChangedData) => void
    @@ -421,7 +421,7 @@

    ArrayItemType

    ArrayItemType<T>: T extends infer U[] ? U : never
    @@ -442,7 +442,7 @@

    AttachDomEvent

    AttachDomEvent: (core: EditorCore, eventMap: Record<string, DOMEventHandler>) => () => void
    @@ -503,7 +503,7 @@

    AttributeCallback

    AttributeCallback: (value: string, element: HTMLElement, context: Object) => string
    @@ -561,7 +561,7 @@

    AttributeCallbackMap

    AttributeCallbackMap: Record<string, AttributeCallback>
    @@ -576,7 +576,7 @@

    CompatiblePluginDomEvent

    @@ -591,7 +591,7 @@

    CompatiblePluginKeyboardEvent

    @@ -606,7 +606,7 @@

    CompatiblePluginMouseEvent

    @@ -621,7 +621,7 @@

    ContentEditFeature

    @@ -636,7 +636,7 @@

    ContentMetadata

    @@ -652,7 +652,7 @@

    CoreCreator

    CoreCreator<TEditorCore, TEditorOptions>: (contentDiv: HTMLDivElement, options: TEditorOptions) => TEditorCore

    Type parameters

    @@ -710,7 +710,7 @@

    CreatePasteFragment

    CreatePasteFragment: (core: EditorCore, clipboardData: ClipboardData, position: NodePosition | null, pasteAsText: boolean, applyCurrentStyle: boolean, pasteAsImage: boolean) => DocumentFragment | null
    @@ -787,7 +787,7 @@

    CssStyleCallback

    CssStyleCallback: (value: string, element: HTMLElement, thisStyle: StringMap, context: Object) => boolean
    @@ -853,7 +853,7 @@

    CssStyleCallbackMap

    CssStyleCallbackMap: Record<string, CssStyleCallback>
    @@ -868,7 +868,7 @@

    DOMEventHandler

    @@ -889,7 +889,7 @@

    DOMEventHandlerFunction

    DOMEventHandlerFunction<E>: (event: E) => void

    Type parameters

    @@ -931,7 +931,7 @@

    Definition

    Definition<T>: CustomizeDefinition | (T extends any[] ? ArrayDefinition<T> : T extends Record<string, any> ? ObjectDefinition<T> : T extends String ? StringDefinition : T extends Number ? NumberDefinition : T extends Boolean ? BooleanDefinition : never)
    @@ -952,7 +952,7 @@

    ElementCallback

    ElementCallback: (element: HTMLElement, context: Object) => boolean
    @@ -1002,7 +1002,7 @@

    ElementCallbackMap

    ElementCallbackMap: Record<string, ElementCallback>
    @@ -1017,7 +1017,7 @@

    EnsureTypeInContainer

    EnsureTypeInContainer: (core: EditorCore, position: NodePosition, keyboardEvent?: KeyboardEvent, deprecated?: boolean) => void
    @@ -1082,7 +1082,7 @@

    Focus

    Focus: (core: EditorCore) => void
    @@ -1123,7 +1123,7 @@

    GenericPluginState

    GenericPluginState<Key>: {[ P in StatePluginKeys<Key>]: TypeOfStatePlugin<P> }
    @@ -1144,7 +1144,7 @@

    GetContent

    GetContent: (core: EditorCore, mode: GetContentMode | CompatibleGetContentMode) => string
    @@ -1194,7 +1194,7 @@

    GetPendableFormatState

    GetPendableFormatState: (core: EditorCore, forceGetStateFromDOM: boolean) => PendableFormatState
    @@ -1244,7 +1244,7 @@

    GetSelectionRange

    GetSelectionRange: (core: EditorCore, tryGetFromCache: boolean) => Range | null
    @@ -1294,7 +1294,7 @@

    GetSelectionRangeEx

    GetSelectionRangeEx: (core: EditorCore) => SelectionRangeEx
    @@ -1336,7 +1336,7 @@

    GetStyleBasedFormatState

    GetStyleBasedFormatState: (core: EditorCore, node: Node | null) => StyleBasedFormatState
    @@ -1385,7 +1385,7 @@

    HasFocus

    HasFocus: (core: EditorCore) => boolean
    @@ -1427,7 +1427,7 @@

    InsertNode

    InsertNode: (core: EditorCore, node: Node, option: InsertOption | null) => boolean
    @@ -1479,7 +1479,7 @@

    InsertOption

    @@ -1497,7 +1497,7 @@

    KeyOfStatePlugin

    KeyOfStatePlugin<Key>: CorePlugins[Key] extends PluginWithState<infer U> ? Key : never
    @@ -1518,7 +1518,7 @@

    ObjectPropertyDefinition

    ObjectPropertyDefinition<T>: {[ Key in keyof T]: Definition<T[Key]> }
    @@ -1539,7 +1539,7 @@

    PluginDomEvent

    @@ -1554,7 +1554,7 @@

    PluginEvent

    @@ -1569,7 +1569,7 @@

    PluginEventData

    PluginEventData<T>: PluginEventDataGeneric<PluginEvent, T>
    @@ -1590,7 +1590,7 @@

    PluginEventDataGeneric

    PluginEventDataGeneric<E, T>: E extends BasePluginEvent<T> ? Pick<E, Exclude<keyof E, "eventType">> : never
    @@ -1615,7 +1615,7 @@

    PluginEventFromType

    PluginEventFromType<T>: PluginEventFromTypeGeneric<PluginEvent, T>
    @@ -1636,7 +1636,7 @@

    PluginEventFromTypeGeneric

    PluginEventFromTypeGeneric<E, T>: E extends BasePluginEvent<T> ? E : never
    @@ -1661,7 +1661,7 @@

    PluginKey

    PluginKey: keyof CorePlugins
    @@ -1676,7 +1676,7 @@

    PluginKeyboardEvent

    @@ -1691,7 +1691,7 @@

    PluginMouseEvent

    @@ -1706,7 +1706,7 @@

    PluginState

    @@ -1721,7 +1721,7 @@

    PredefinedCssMap

    PredefinedCssMap: Record<string, StringMap>
    @@ -1736,7 +1736,7 @@

    RestoreUndoSnapshot

    RestoreUndoSnapshot: (core: EditorCore, step: number) => void
    @@ -1785,7 +1785,7 @@

    Select

    Select: (core: EditorCore, arg1: Range | SelectionRangeEx | NodePosition | Node | SelectionPath | null, arg2?: NodePosition | number | PositionType | TableSelection | null, arg3?: Node, arg4?: number | PositionType) => boolean
    @@ -1859,7 +1859,7 @@

    SelectImage

    SelectImage: (core: EditorCore, image: HTMLImageElement | null) => ImageSelectionRange | null
    @@ -1909,7 +1909,7 @@

    SelectRange

    SelectRange: (core: EditorCore, range: Range, skipSameRange?: boolean) => boolean
    @@ -1968,7 +1968,7 @@

    SelectTable

    SelectTable: (core: EditorCore, table: HTMLTableElement | null, coordinates?: TableSelection) => TableSelectionRange | null
    @@ -2027,7 +2027,7 @@

    SelectionRangeEx

    @@ -2042,7 +2042,7 @@

    SetContent

    SetContent: (core: EditorCore, content: string, triggerContentChangedEvent: boolean, metadata?: ContentMetadata) => void
    @@ -2103,7 +2103,7 @@

    SizeTransformer

    SizeTransformer: (size: number) => number
    @@ -2147,7 +2147,7 @@

    StatePluginKeys

    StatePluginKeys<Key>: {[ P in Key]: KeyOfStatePlugin<P> }[Key]
    @@ -2168,7 +2168,7 @@

    StringMap

    StringMap: Record<string, string>
    @@ -2183,7 +2183,7 @@

    SwitchShadowEdit

    SwitchShadowEdit: (core: EditorCore, isOn: boolean) => void
    @@ -2232,7 +2232,7 @@

    TableCellMetadataFormat

    TableCellMetadataFormat: { bgColorOverride?: boolean; vAlignOverride?: boolean }
    @@ -2268,7 +2268,7 @@

    TransformColor

    TransformColor: (core: EditorCore, rootNode: Node | null, includeSelf: boolean, callback: (() => void) | null, direction: ColorTransformDirection | CompatibleColorTransformDirection, forceTransform?: boolean, fromDarkMode?: boolean) => void
    @@ -2353,7 +2353,7 @@

    TriggerEvent

    TriggerEvent: (core: EditorCore, pluginEvent: PluginEvent, broadcast: boolean) => void
    @@ -2410,7 +2410,7 @@

    TrustedHTMLHandler

    TrustedHTMLHandler: (html: string) => string
    @@ -2446,7 +2446,7 @@

    TypeOfStatePlugin

    TypeOfStatePlugin<Key>: CorePlugins[Key] extends PluginWithState<infer U> ? U : never
    diff --git a/docs/modules/roosterjs_react.html b/docs/modules/roosterjs_react.html index 9095cc1b4f9..d9e9b05fd48 100644 --- a/docs/modules/roosterjs_react.html +++ b/docs/modules/roosterjs_react.html @@ -187,7 +187,7 @@

    AlignCenterButtonStringKey

    AlignCenterButtonStringKey: "buttonNameAlignCenter"
    @@ -202,7 +202,7 @@

    AlignLeftButtonStringKey

    AlignLeftButtonStringKey: "buttonNameAlignLeft"
    @@ -217,7 +217,7 @@

    AlignRightButtonStringKey

    AlignRightButtonStringKey: "buttonNameAlignRight"
    @@ -232,7 +232,7 @@

    AllButtonStringKeys

    @@ -247,7 +247,7 @@

    BackgroundColorButtonStringKey

    BackgroundColorButtonStringKey: "buttonNameBackgroundColor" | BackgroundColorKeys
    @@ -262,7 +262,7 @@

    BackgroundColorKeys

    BackgroundColorKeys: "backgroundColorCyan" | "backgroundColorGreen" | "backgroundColorYellow" | "backgroundColorOrange" | "backgroundColorRed" | "backgroundColorMagenta" | "backgroundColorLightCyan" | "backgroundColorLightGreen" | "backgroundColorLightYellow" | "backgroundColorLightOrange" | "backgroundColorLightRed" | "backgroundColorLightMagenta" | "backgroundColorWhite" | "backgroundColorLightGray" | "backgroundColorGray" | "backgroundColorDarkGray" | "backgroundColorDarkerGray" | "backgroundColorBlack"
    @@ -277,7 +277,7 @@

    BoldButtonStringKey

    BoldButtonStringKey: "buttonNameBold"
    @@ -292,7 +292,7 @@

    BulletedListButtonStringKey

    BulletedListButtonStringKey: "buttonNameBulletedList"
    @@ -307,7 +307,7 @@

    CancelButtonStringKey

    CancelButtonStringKey: "buttonNameCancel"
    @@ -322,7 +322,7 @@

    CellShadeButtonStringKey

    CellShadeButtonStringKey: "buttonNameCellShade" | BackgroundColorKeys
    @@ -339,7 +339,7 @@

    ClearFormatButtonStringKey

    ClearFormatButtonStringKey: "buttonNameClearFormat"
    @@ -354,7 +354,7 @@

    CodeButtonStringKey

    CodeButtonStringKey: "buttonNameCode"
    @@ -369,7 +369,7 @@

    DecreaseFontSizeButtonStringKey

    DecreaseFontSizeButtonStringKey: "buttonNameDecreaseFontSize"
    @@ -384,7 +384,7 @@

    DecreaseIndentButtonStringKey

    DecreaseIndentButtonStringKey: "buttonNameDecreaseIndent"
    @@ -399,7 +399,7 @@

    EmojiStringKeys

    EmojiStringKeys: "emojiSearchPlaceholder" | "emojiSearchInputAriaLabel"
    @@ -414,7 +414,7 @@

    FontButtonStringKey

    FontButtonStringKey: "buttonNameFont"
    @@ -429,7 +429,7 @@

    FontSizeButtonStringKey

    FontSizeButtonStringKey: "buttonNameFontSize"
    @@ -444,7 +444,7 @@

    HeaderButtonStringKey

    HeaderButtonStringKey: "buttonNameHeader" | "buttonNameHeader1" | "buttonNameHeader2" | "buttonNameHeader3" | "buttonNameHeader4" | "buttonNameHeader5" | "buttonNameHeader6" | "buttonNameNoHeader" | HeadingButtonStringKey
    @@ -461,7 +461,7 @@

    HeadingButtonStringKey

    HeadingButtonStringKey: "buttonNameHeading" | "buttonNameHeading1" | "buttonNameHeading2" | "buttonNameHeading3" | "buttonNameHeading4" | "buttonNameHeading5" | "buttonNameHeading6" | "buttonNameNoHeading" | MenuItemSplitterKey0
    @@ -476,7 +476,7 @@

    ImageEditMenuItemStringKey

    ImageEditMenuItemStringKey: "menuNameImageAltText" | "menuNameImageResize" | "menuNameImageCrop" | "menuNameImageRotate" | "menuNameImageRemove" | "menuNameImageFlip" | "menuNameImageSizeBestFit" | "menuNameImageSizeSmall" | "menuNameImageSizeMedium" | "menuNameImageSizeOriginal" | "menuNameImageRotateLeft" | "menuNameImageRotateRight" | "menuNameImageRotateFlipHorizontally" | "menuNameImageRotateFlipVertically" | "menuNameImageCopy" | "menuNameImageCut" | OkButtonStringKey | CancelButtonStringKey
    @@ -500,7 +500,7 @@

    IncreaseFontSizeButtonStringKey

    IncreaseFontSizeButtonStringKey: "buttonNameIncreaseFontSize"
    @@ -515,7 +515,7 @@

    IncreaseIndentButtonStringKey

    IncreaseIndentButtonStringKey: "buttonNameIncreaseIndent"
    @@ -530,7 +530,7 @@

    InsertImageButtonStringKey

    InsertImageButtonStringKey: "buttonNameInsertImage"
    @@ -545,7 +545,7 @@

    InsertLinkButtonStringKey

    InsertLinkButtonStringKey: "buttonNameInsertLink" | "insertLinkTitle" | "insertLinkDialogUrl" | "insertLinkDialogDisplayAs" | OkButtonStringKey | CancelButtonStringKey
    @@ -560,7 +560,7 @@

    InsertTableButtonStringKey

    InsertTableButtonStringKey: "buttonNameInsertTable" | "insertTablePane"
    @@ -575,7 +575,7 @@

    ItalicButtonStringKey

    ItalicButtonStringKey: "buttonNameItalic"
    @@ -590,7 +590,7 @@

    ListNumberMenuItemStringKey

    ListNumberMenuItemStringKey: "menuNameListNumberEdit" | "menuNameListNumberReset" | "dialogTextSetListNumber" | OkButtonStringKey | CancelButtonStringKey
    @@ -613,7 +613,7 @@

    LocalizedStrings

    LocalizedStrings<T, V>: {[ key in T]: V | (() => V) }
    @@ -637,7 +637,7 @@

    LtrButtonStringKey

    LtrButtonStringKey: "buttonNameLtr"
    @@ -652,7 +652,7 @@

    MenuItemSplitterKey0

    MenuItemSplitterKey0: "-"
    @@ -668,7 +668,7 @@

    MoreCommandsButtonStringKey

    MoreCommandsButtonStringKey: "buttonNameMoreCommands"
    @@ -683,7 +683,7 @@

    NumberedListButtonStringKey

    NumberedListButtonStringKey: "buttonNameNumberedList"
    @@ -698,7 +698,7 @@

    OkButtonStringKey

    OkButtonStringKey: "buttonNameOK"
    @@ -713,7 +713,7 @@

    PasteOptionButtonKeys

    PasteOptionButtonKeys: "pasteOptionPasteAsIs" | "pasteOptionPasteText" | "pasteOptionMergeFormat" | "pasteOptionPasteAsImage"
    @@ -728,7 +728,7 @@

    PasteOptionStringKeys

    PasteOptionStringKeys: PasteOptionButtonKeys | "pasteOptionPaneText"
    @@ -743,7 +743,7 @@

    QuoteButtonStringKey

    QuoteButtonStringKey: "buttonNameQuote"
    @@ -758,7 +758,7 @@

    RedoButtonStringKey

    RedoButtonStringKey: "buttonNameRedo"
    @@ -773,7 +773,7 @@

    RemoveLinkButtonStringKey

    RemoveLinkButtonStringKey: "buttonNameRemoveLink"
    @@ -788,7 +788,7 @@

    RtlButtonStringKey

    RtlButtonStringKey: "buttonNameRtl"
    @@ -803,7 +803,7 @@

    StrikethroughButtonStringKey

    StrikethroughButtonStringKey: "buttonNameStrikethrough"
    @@ -818,7 +818,7 @@

    SubscriptButtonStringKey

    SubscriptButtonStringKey: "buttonNameSubscript"
    @@ -833,7 +833,7 @@

    SuperscriptButtonStringKey

    SuperscriptButtonStringKey: "buttonNameSuperscript"
    @@ -848,7 +848,7 @@

    TableEditAlignMenuItemStringKey

    TableEditAlignMenuItemStringKey: "menuNameTableAlign" | "menuNameTableAlignLeft" | "menuNameTableAlignCenter" | "menuNameTableAlignRight" | "menuNameTableAlignTop" | "menuNameTableAlignMiddle" | "menuNameTableAlignBottom" | MenuItemSplitterKey0
    @@ -863,7 +863,7 @@

    TableEditAlignTableMenuItemStringKey

    TableEditAlignTableMenuItemStringKey: "menuNameTableAlignTable" | "menuNameTableAlignTableLeft" | "menuNameTableAlignTableCenter" | "menuNameTableAlignTableRight"
    @@ -878,7 +878,7 @@

    TableEditDeleteMenuItemStringKey

    TableEditDeleteMenuItemStringKey: "menuNameTableDelete" | "menuNameTableDeleteTable" | "menuNameTableDeleteColumn" | "menuNameTableDeleteRow"
    @@ -893,7 +893,7 @@

    TableEditInsertMenuItemStringKey

    TableEditInsertMenuItemStringKey: "menuNameTableInsert" | "menuNameTableInsertAbove" | "menuNameTableInsertBelow" | "menuNameTableInsertLeft" | "menuNameTableInsertRight"
    @@ -908,7 +908,7 @@

    TableEditMenuItemStringKey

    @@ -931,7 +931,7 @@

    TableEditMergeMenuItemStringKey

    TableEditMergeMenuItemStringKey: "menuNameTableMerge" | "menuNameTableMergeAbove" | "menuNameTableMergeBelow" | "menuNameTableMergeLeft" | "menuNameTableMergeRight" | "menuNameTableMergeCells" | MenuItemSplitterKey0
    @@ -946,7 +946,7 @@

    TableEditShadeMenuItemStringKey

    TableEditShadeMenuItemStringKey: "menuNameTableCellShade" | BackgroundColorKeys
    @@ -961,7 +961,7 @@

    TableEditSplitMenuItemStringKey

    TableEditSplitMenuItemStringKey: "menuNameTableSplit" | "menuNameTableSplitHorizontally" | "menuNameTableSplitVertically"
    @@ -976,7 +976,7 @@

    TextColorButtonStringKey

    TextColorButtonStringKey: "buttonNameTextColor" | TextColorKeys
    @@ -991,7 +991,7 @@

    TextColorKeys

    TextColorKeys: "textColorLightBlue" | "textColorLightGreen" | "textColorLightYellow" | "textColorLightOrange" | "textColorLightRed" | "textColorLightPurple" | "textColorBlue" | "textColorGreen" | "textColorYellow" | "textColorOrange" | "textColorRed" | "textColorPurple" | "textColorDarkBlue" | "textColorDarkGreen" | "textColorDarkYellow" | "textColorDarkOrange" | "textColorDarkRed" | "textColorDarkPurple" | "textColorDarkerBlue" | "textColorDarkerGreen" | "textColorDarkerYellow" | "textColorDarkerOrange" | "textColorDarkerRed" | "textColorDarkerPurple" | "textColorWhite" | "textColorLightGray" | "textColorGray" | "textColorDarkGray" | "textColorDarkerGray" | "textColorBlack"
    @@ -1006,7 +1006,7 @@

    UnderlineButtonStringKey

    UnderlineButtonStringKey: "buttonNameUnderline"
    @@ -1021,7 +1021,7 @@

    UndoButtonStringKey

    UndoButtonStringKey: "buttonNameUndo"
    @@ -1039,7 +1039,7 @@

    Const AllButtonKeys

    AllButtonKeys: KnownRibbonButtonKey[] = ...
    @@ -1061,7 +1061,7 @@

    Ribbon

  • @@ -1099,7 +1099,7 @@

    Rooster

  • @@ -1131,7 +1131,7 @@

    createContextMenuPlugin

  • @@ -1153,7 +1153,7 @@

    createContextMenuProvider

  • @@ -1235,7 +1235,7 @@

    createEmojiPlugin

  • @@ -1263,7 +1263,7 @@

    createImageEditMenuProvider

  • @@ -1295,7 +1295,7 @@

    createListEditMenuProvider

  • @@ -1324,7 +1324,7 @@

    createPasteOptionPlugin

  • @@ -1362,7 +1362,7 @@

    createRibbonPlugin

  • @@ -1393,7 +1393,7 @@

    createTableEditMenuProvider

  • @@ -1422,7 +1422,7 @@

    createUIUtilities

  • @@ -1460,7 +1460,7 @@

    createUpdateContentPlugin

  • @@ -1518,7 +1518,7 @@

    getBackgroundColorValue

  • @@ -1550,7 +1550,7 @@

    getButtons

  • @@ -1588,7 +1588,7 @@

    getLocalizedString

  • @@ -1641,7 +1641,7 @@

    getTextColorValue

  • @@ -1673,7 +1673,7 @@

    showInputDialog

  • diff --git a/rooster-content-model-min.js b/rooster-content-model-min.js index 5f71694af18..0ce5f85641d 100644 --- a/rooster-content-model-min.js +++ b/rooster-content-model-min.js @@ -1,2 +1,2 @@ -var roosterjsContentModel;(()=>{"use strict";var e={9968:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDomToModelContext=void 0;var o=r(7582),n=r(8659),a=r(3647),l=r(976);t.createDomToModelContext=function(e,t,r){var i=(0,o.__assign)((0,o.__assign)({},e),{blockFormat:{},segmentFormat:{},isInSelection:!1,listFormat:{levels:[],threadItemCounts:[]},link:{format:{},dataset:{}},code:{format:{}},blockDecorator:{format:{},tagName:""},elementProcessors:(0,o.__assign)((0,o.__assign)({},a.defaultProcessorMap),(null==t?void 0:t.processorOverride)||{}),defaultStyles:(0,o.__assign)((0,o.__assign)({},l.defaultStyleMap),(null==t?void 0:t.defaultStyleOverride)||{}),formatParsers:(0,n.getFormatParsers)(null==t?void 0:t.formatParserOverride,null==t?void 0:t.additionalFormatParsers),defaultElementProcessors:a.defaultProcessorMap,defaultFormatParsers:n.defaultFormatParsers});return(null==e?void 0:e.isRootRtl)&&(i.blockFormat.direction="rtl"),r&&(i.rangeEx=r),i}},3647:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultProcessorMap=void 0;var o=r(2697),n=r(9384),a=r(9633),l=r(2130),i=r(7883),s=r(6905),c=r(5718),d=r(9004),u=r(1001),f=r(2625),m=r(3092),p=r(215),v=r(4748),g=r(1091),h=r(5476),b=r(2791),y=r(8191),_=r(970),C=r(9892);t.defaultProcessorMap={a:g.linkProcessor,b:v.knownElementProcessor,blockquote:v.knownElementProcessor,br:o.brProcessor,code:a.codeProcessor,div:v.knownElementProcessor,em:v.knownElementProcessor,font:c.fontProcessor,i:v.knownElementProcessor,img:p.imageProcessor,h1:f.headingProcessor,h2:f.headingProcessor,h3:f.headingProcessor,h4:f.headingProcessor,h5:f.headingProcessor,h6:f.headingProcessor,hr:m.hrProcessor,li:h.listItemProcessor,ol:b.listProcessor,p:y.pProcessor,pre:d.formatContainerProcessor,s:v.knownElementProcessor,section:v.knownElementProcessor,span:v.knownElementProcessor,strike:v.knownElementProcessor,strong:v.knownElementProcessor,sub:v.knownElementProcessor,sup:v.knownElementProcessor,table:_.tableProcessor,u:v.knownElementProcessor,ul:b.listProcessor,"*":u.generalProcessor,"#text":C.textProcessor,element:i.elementProcessor,entity:s.entityProcessor,child:n.childProcessor,delimiter:l.delimiterProcessor}},1807:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.domToContentModel=void 0;var o=r(5733),n=r(9968),a=r(8767);t.domToContentModel=function(e,t,r,l){var i=(0,o.createContentModelDocument)(null==r?void 0:r.defaultFormat),s=(0,n.createDomToModelContext)(r,t,l);return s.elementProcessors.child(i,e,s),(0,a.normalizeContentModel)(i),i}},7304:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.blockProcessor=void 0;var o=r(7582),n=r(9275),a=r(9004),l=r(5092),i=r(9366),s=["A","CODE"];t.blockProcessor=function(e,t,r,c){var d=r.blockDecorator.tagName?r.blockDecorator:void 0,u=s.indexOf(t.tagName)>=0;(0,i.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var f=(0,o.__assign)({},r.blockFormat);if((0,i.parseFormat)(t,r.formatParsers.container,f,r),a.ContextStyles.forEach((function(e){f[e]&&(r.blockFormat[e]=f[e])})),!u){var m=(0,l.createParagraph)(!1,f,c,d);(0,n.addBlock)(e,m)}r.elementProcessors.child(e,t,r)}},2697:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.brProcessor=void 0;var o=r(8513),n=r(7826);t.brProcessor=function(e,t,r){var a=(0,n.createBr)(r.segmentFormat);r.isInSelection&&(a.isSelected=!0),(0,o.addSegment)(e,a,r.blockFormat)}},9384:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleRegularSelection=t.processChildNode=t.childProcessor=void 0;var o=r(7582),n=r(9871),a=r(8063),l=r(3233);function i(e,t,r){(0,l.isNodeOfType)(t,1)&&"none"!=t.style.display?r.elementProcessors.element(e,t,r):(0,l.isNodeOfType)(t,3)&&r.elementProcessors["#text"](e,t,r)}function s(e,t,r,o,a){var l;e==o&&(t.isInSelection=!0,(0,n.addSelectionMarker)(r,t)),e==a&&0==(null===(l=t.rangeEx)||void 0===l?void 0:l.type)&&(t.rangeEx.areAllCollapsed||(0,n.addSelectionMarker)(r,t),t.isInSelection=!1)}t.childProcessor=function(e,t,r){for(var n=(0,o.__read)((0,a.getRegularSelectionOffsets)(r,t),2),l=n[0],c=n[1],d=0,u=t.firstChild;u;u=u.nextSibling)s(d,r,e,l,c),i(e,u,r),d++;s(d,r,e,l,c)},t.processChildNode=i,t.handleRegularSelection=s},9633:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.codeProcessor=void 0;var o=r(4748),n=r(9366),a=r(202);t.codeProcessor=function(e,t,r){(0,a.stackFormat)(r,{code:"codeDefault"},(function(){(0,n.parseFormat)(t,r.formatParsers.code,r.code.format,r),(0,o.knownElementProcessor)(e,t,r)}))}},2130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.delimiterProcessor=void 0;var o=r(7582),n=r(8063),a=r(9384);t.delimiterProcessor=function(e,r,l){for(var i=0,s=(0,o.__read)((0,n.getRegularSelectionOffsets)(l,r),2),c=s[0],d=s[1],u=r.firstChild;u;u=u.nextSibling)(0,a.handleRegularSelection)(i,l,e,c,d),(0,t.delimiterProcessor)(e,u,l),i++;(0,a.handleRegularSelection)(i,l,e,c,d)}},7883:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.elementProcessor=void 0;var o=r(2347);t.elementProcessor=function(e,t,r){var n=t.tagName.toLowerCase(),a=function(e,t){return e.className&&(0,o.getEntityFromElement)(e)||"false"==e.contentEditable?t.elementProcessors.entity:null}(t,r)||function(e,t){return(0,o.getDelimiterFromElement)(e)?t.elementProcessors.delimiter:null}(t,r)||r.elementProcessors[n]||n.indexOf(":")>=0&&r.elementProcessors.child||r.elementProcessors["*"];a(e,t,r)}},6905:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.entityProcessor=void 0;var o=r(9275),n=r(8513),a=r(1033),l=r(2347),i=r(2404),s=r(202);t.entityProcessor=function(e,t,r){var c=(0,l.getEntityFromElement)(t)||{isReadonly:!0},d=c.id,u=c.type,f=c.isReadonly,m=(0,i.isBlockElement)(t,r);(0,s.stackFormat)(r,{segment:m?"empty":void 0,paragraph:"empty"},(function(){var l=(0,a.createEntity)(t,f,u,r.segmentFormat,d);r.isInSelection&&(l.isSelected=!0),m?(0,o.addBlock)(e,l):(0,n.addSegment)(e,l)}))}},5718:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontProcessor=void 0;var o=r(2404),n=r(9366),a=r(202),l=["10px","13px","16px","18px","24px","32px","48px"];t.fontProcessor=function(e,t,r){(0,a.stackFormat)(r,{segment:(0,o.isBlockElement)(t,r)?"shallowCloneForBlock":"shallowClone"},(function(){var o,a,i=t.getAttribute("face"),s=(o=t.getAttribute("size"),a=parseInt(o||""),Number.isNaN(a)?void 0:a<1?l[0]:a>l.length?l[l.length-1]:l[a-1]),c=t.getAttribute("color"),d=r.segmentFormat;i&&(d.fontFamily=i),s&&(d.fontSize=s),c&&(d.textColor=c),(0,n.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r),r.elementProcessors.child(e,t,r)}))}},9004:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatContainerProcessor=t.ContextStyles=void 0;var o=r(7582),n=r(9275),a=r(2766),l=r(5092),i=r(3149),s=r(9366),c=r(3963),d=r(202);t.ContextStyles=["marginLeft","marginRight","paddingLeft","paddingRight"],t.formatContainerProcessor=function(e,r,u){(0,d.stackFormat)(u,{segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){(0,s.parseFormat)(r,u.formatParsers.block,u.blockFormat,u),(0,s.parseFormat)(r,u.formatParsers.segmentOnBlock,u.segmentFormat,u);var l=(0,o.__assign)({},u.blockFormat);(0,s.parseFormat)(r,u.formatParsers.container,l,u);var d="block"==(0,i.getDefaultStyle)(r,u).display?r.tagName.toLowerCase():"div",f=(0,a.createFormatContainer)(d,l);if(t.ContextStyles.forEach((function(e){delete u.blockFormat[e]})),u.elementProcessors.child(f,r,u),r.style.fontSize&&0==parseInt(r.style.fontSize)&&(f.zeroFontSize=!0),function(e){var t=e.blocks[0];return"div"==e.tagName&&1==e.blocks.length&&"Paragraph"==t.blockType&&t.isImplicit}(f)){var m=f.blocks[0];f.zeroFontSize&&(m.segmentFormat=Object.assign({},m.segmentFormat,{fontSize:"0"})),Object.assign(m.format,f.format),(0,c.setParagraphNotImplicit)(m),(0,n.addBlock)(e,m)}else(0,n.addBlock)(e,f)})),(0,n.addBlock)(e,(0,l.createParagraph)(!0,u.blockFormat))}},1001:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.generalProcessor=void 0;var o=r(9275),n=r(3883),a=r(8513),l=r(9237),i=r(8885),s=r(2404),c=r(202),d=function(e,t,r){var n=(0,l.createGeneralBlock)(t),a=r.isInSelection;(0,c.stackFormat)(r,{segment:"empty",paragraph:"empty",link:"empty"},(function(){(0,o.addBlock)(e,n),r.elementProcessors.child(n,t,r)})),a&&r.isInSelection&&(n.isSelected=!0)},u=function(e,t,r){var o=(0,i.createGeneralSegment)(t,r.segmentFormat),l=r.isInSelection;(0,n.addDecorators)(o,r),(0,a.addSegment)(e,o),(0,c.stackFormat)(r,{segment:"empty"},(function(){r.elementProcessors.child(o,t,r)})),l&&r.isInSelection&&(o.isSelected=!0)};t.generalProcessor=function(e,t,r){((0,s.isBlockElement)(t,r)?d:u)(e,t,r)}},2625:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.headingProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(24),i=r(2347),s=r(9366),c=r(202);t.headingProcessor=function(e,t,r){(0,c.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowClone",blockDecorator:"empty"},(function(){var o={};(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),(0,i.getObjectKeys)(o).forEach((function(e){delete r.segmentFormat[e]})),r.blockDecorator=(0,l.createParagraphDecorator)(t.tagName,o),(0,n.blockProcessor)(e,t,r)})),(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat))}},3092:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hrProcessor=void 0;var o=r(9275),n=r(7110),a=r(9366),l=r(202);t.hrProcessor=function(e,t,r){(0,l.stackFormat)(r,{paragraph:"shallowClone"},(function(){(0,a.parseFormat)(t,r.formatParsers.divider,r.blockFormat,r);var l=(0,n.createDivider)("hr",r.blockFormat);t.size&&(l.size=t.size),r.isInSelection&&(l.isSelected=!0),(0,o.addBlock)(e,l)}))}},215:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.imageProcessor=void 0;var o=r(3883),n=r(8513),a=r(5566),l=r(9366),i=r(202);t.imageProcessor=function(e,t,r){(0,i.stackFormat)(r,{segment:"shallowClone"},(function(){var i,s=r.segmentFormat;(0,l.parseFormat)(t,r.formatParsers.segment,s,r),(0,l.parseFormat)(t,r.formatParsers.image,s,r),(0,l.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var c=(0,a.createImage)(t.src,s),d=t.alt,u=t.title;(0,l.parseFormat)(t,r.formatParsers.dataset,c.dataset,r),(0,o.addDecorators)(c,r),d&&(c.alt=d),u&&(c.title=u),r.isInSelection&&(c.isSelected=!0),2==(null===(i=r.rangeEx)||void 0===i?void 0:i.type)&&r.rangeEx.image==t&&(c.isSelectedAsImageSelection=!0,c.isSelected=!0),(0,n.addSegment)(e,c)}))}},4748:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.knownElementProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(9004),i=r(3149),s=r(2404),c=r(9366),d=r(202),u=["marginBottom","marginTop","paddingBottom","paddingTop","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","width","height","maxWidth","maxHeight","minWidth","minHeight"],f=["H1","H2","H3","H4","H5","H6","P","A"],m=["A","CODE"];t.knownElementProcessor=function(e,t,r){var p=(0,s.isBlockElement)(t,r);if((p||"inline-block"==t.style.display)&&function(e,t){if(f.indexOf(e.tagName)>=0)return!1;var r=e.style,o=(0,i.getDefaultStyle)(e,t),n=r.getPropertyValue("background-color");return!(!n||"transparent"==n)||(!!u.some((function(e){return parseInt(r[e]||o[e]||"")>0}))||("auto"==r.marginLeft||"auto"==r.marginRight||!!e.getAttribute("align")))}(t,r))(0,l.formatContainerProcessor)(e,t,r);else if(p){var v=r.blockDecorator.tagName?r.blockDecorator:void 0,g=m.indexOf(t.tagName)>=0;(0,d.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){var o={};(0,c.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),Object.assign(r.segmentFormat,o),(0,n.blockProcessor)(e,t,r,o)})),p&&!g&&(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat,void 0,v))}else(0,d.stackFormat)(r,{segment:"shallowClone",paragraph:"shallowClone",link:"cloneFormat"},(function(){(0,c.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r),r.link.format.href&&"A"!=t.tagName&&(0,c.parseFormat)(t,r.formatParsers.segmentUnderLink,r.link.format,r),r.elementProcessors.child(e,t,r)}))}},1091:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.linkProcessor=void 0;var o=r(4748),n=r(9366),a=r(202);t.linkProcessor=function(e,t,r){t.hasAttribute("href")?(0,a.stackFormat)(r,{link:"linkDefault"},(function(){(0,n.parseFormat)(t,r.formatParsers.link,r.link.format,r),(0,n.parseFormat)(t,r.formatParsers.dataset,r.link.dataset,r),(0,o.knownElementProcessor)(e,t,r)})):(0,o.knownElementProcessor)(e,t,r)}},5476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listItemProcessor=void 0;var o=r(7724),n=r(9366),a=r(202);t.listItemProcessor=function(e,t,r){var l,i=r.listFormat;if(i.listParent&&i.levels.length>0)(0,a.stackFormat)(r,{segment:"shallowCloneForBlock"},(function(){(0,n.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r);var e=(0,o.createListItem)(i.levels,r.segmentFormat);(0,n.parseFormat)(t,r.formatParsers.listItemElement,e.format,r),i.listParent.blocks.push(e),(0,n.parseFormat)(t,r.formatParsers.listItem,e.levels[e.levels.length-1].format,r),r.elementProcessors.child(e,t,r);var a=e.blocks[0];1==e.blocks.length&&"Paragraph"==a.blockType&&a.isImplicit&&(Object.assign(e.format,a.format),a.format={})}));else{var s=null===(l=i.listParent)||void 0===l?void 0:l.blocks,c=null==s?void 0:s[(null==s?void 0:s.length)-1];r.elementProcessors["*"]("BlockGroup"==(null==c?void 0:c.blockType)?c:e,t,r)}}},2791:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listProcessor=void 0;var o=r(1285),n=r(2438),a=r(9366),l=r(202),i=r(2362);t.listProcessor=function(e,t,r){(0,l.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowCloneForGroup"},(function(){var l=(0,o.createListLevel)(t.tagName,r.blockFormat),s=r.listFormat;(0,a.parseFormat)(t,r.formatParsers.dataset,l.dataset,r),(0,a.parseFormat)(t,r.formatParsers.listLevel,l.format,r),(0,i.updateListMetadata)(l,(function(e){return e=e||{},(0,a.parseFormat)(t,[n.listLevelMetadataFormatHandler.parse],e,r),void 0===e.orderedStyleType&&void 0===e.unorderedStyleType&&(e=null),e})),(0,a.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r);var c=s.listParent;s.listParent=s.listParent||e,s.levels.push(l);try{r.elementProcessors.child(e,t,r)}finally{s.levels.pop(),s.listParent=c}}))}},8191:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.pProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(24),i=r(9366),s=r(202);t.pProcessor=function(e,t,r){(0,s.stackFormat)(r,{blockDecorator:"empty",segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){r.blockDecorator=(0,l.createParagraphDecorator)(t.tagName);var o={};(0,i.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),Object.assign(r.segmentFormat,o),(0,n.blockProcessor)(e,t,r,o)})),(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat))}},970:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableProcessor=void 0;var o=r(7582),n=r(9275),a=r(988),l=r(1160),i=r(3095),s=r(9366),c=r(2347),d=r(202);function u(e){for(var t=[],r=e[e.length-1],o=e.length-2;o>=0;o--)void 0===e[o]?t[o]=0:(t[o]=r-e[o],r=e[o]);return t}t.tableProcessor=function(e,t,r){(0,d.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowCloneForGroup"},(function(){var f;(0,s.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var m=(0,a.createTable)(t.rows.length,r.blockFormat),p=1==(null===(f=r.rangeEx)||void 0===f?void 0:f.type)?r.rangeEx:null,v=null==p?void 0:p.table,g=null==p?void 0:p.coordinates,h=v==t&&!!(null==g?void 0:g.firstCell)&&!!(null==g?void 0:g.lastCell);r.allowCacheElement&&(m.cachedElement=t),(0,s.parseFormat)(t,r.formatParsers.table,m.format,r),(0,s.parseFormat)(t,r.formatParsers.tableBorder,m.format,r),(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r),(0,s.parseFormat)(t,r.formatParsers.dataset,m.dataset,r),(0,n.addBlock)(e,m);for(var b=[0],y=[0],_=r.zoomScale||1,C=function(e){var n=t.rows[e],a=m.rows[e],u=n.parentNode;(0,c.safeInstanceOf)(u,"HTMLTableSectionElement")?(0,s.parseFormat)(u,r.formatParsers.tableRow,a.format,r):r.allowCacheElement&&(a.cachedElement=n),(0,s.parseFormat)(n,r.formatParsers.tableRow,a.format,r),(0,d.stackFormat)(r,{paragraph:"shallowClone",segment:"shallowClone"},(function(){var t=n.parentElement,c=null==t?void 0:t.tagName;!t||"TBODY"!=c&&"THEAD"!=c&&"TFOOT"!=c||((0,s.parseFormat)(t,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r)),(0,s.parseFormat)(n,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(n,r.formatParsers.segmentOnBlock,r.segmentFormat,r);for(var u,f=function(t,c){for(;a.cells[c];c++);var f=n.cells[t],p=r.isInSelection,v=c+f.colSpan,C=e+f.rowSpan,P=void 0===b[v],k=void 0===y[C];if(P||k){var S=(0,i.getBoundingClientRect)(f);(S.width>0||S.height>0)&&(P&&(b[v]=b[c]+S.width/_),k&&(y[C]=y[e]+S.height/_))}(0,d.stackFormat)(r,{paragraph:"shallowClone",segment:"shallowClone"},(function(){(0,s.parseFormat)(f,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(f,r.formatParsers.segmentOnTableCell,r.segmentFormat,r);var t=(0,o.__assign)({},r.blockFormat),n={};(0,s.parseFormat)(f,r.formatParsers.tableCell,t,r),(0,s.parseFormat)(f,r.formatParsers.tableBorder,t,r),(0,s.parseFormat)(f,r.formatParsers.dataset,n,r);for(var a=1;a<=f.colSpan;a++,c++)for(var i=1;i<=f.rowSpan;i++){var d=1==a&&1==i,u=(0,l.createTableCell)(a>1,i>1,"TH"==f.tagName,t);u.dataset=(0,o.__assign)({},n);var v=m.rows[e+i-1];if(v&&(v.cells[c]=u),d){r.allowCacheElement&&(u.cachedElement=f);var b=r.listFormat,y=b.listParent,_=b.levels;r.listFormat.listParent=void 0,r.listFormat.levels=[];try{r.elementProcessors.child(u,f,r)}finally{r.listFormat.listParent=y,r.listFormat.levels=_}}var C=r.isInSelection;(p&&C||h&&e>=g.firstCell.y&&e<=g.lastCell.y&&c>=g.firstCell.x&&c<=g.lastCell.x)&&(u.isSelected=!0)}})),u=c},p=0,v=0;p0&&(e.height=k[t])}))}))}},9892:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textProcessor=void 0;var o=r(7582),n=r(3883),a=r(8513),l=r(9871),i=r(8310),s=r(840),c=r(8063),d=r(7084);t.textProcessor=function(e,t,r){var n=t.nodeValue||"",a=(0,o.__read)((0,c.getRegularSelectionOffsets)(r,t),2),i=a[0],s=a[1];i>=0&&(f(e,n.substring(0,i),r),r.isInSelection=!0,(0,l.addSelectionMarker)(e,r),n=n.substring(i),s-=i),s>=0&&(f(e,n.substring(0,s),r),r.rangeEx&&!r.rangeEx.areAllCollapsed&&(0,l.addSelectionMarker)(e,r),r.isInSelection=!1,n=n.substring(s)),f(e,n,r)};var u=["pre","pre-wrap","pre-line","break-spaces"];function f(e,t,r){if(t){var o=e.blocks[e.blocks.length-1],l="Paragraph"==(null==o?void 0:o.blockType)?o:null,c=null==l?void 0:l.segments[l.segments.length-1];if("Text"==(null==c?void 0:c.segmentType)&&!!c.isSelected==!!r.isInSelection&&(0,i.areSameFormats)(c.format,r.segmentFormat)&&(0,i.areSameFormats)(c.link||{},r.link.format||{})&&(0,i.areSameFormats)(c.code||{},r.code.format||{}))c.text+=t;else if(!(0,d.hasSpacesOnly)(t)||(null==l?void 0:l.segments.length)>0||u.indexOf((null==l?void 0:l.format.whiteSpace)||"")>=0){var f=(0,s.createText)(t,r.segmentFormat);r.isInSelection&&(f.isSelected=!0),(0,n.addDecorators)(f,r),(0,a.addSegment)(e,f,r.blockFormat)}}}},9871:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addSelectionMarker=void 0;var o=r(3883),n=r(8513),a=r(5114);t.addSelectionMarker=function(e,t){var r=(0,a.createSelectionMarker)(t.segmentFormat);(0,o.addDecorators)(r,t),(0,n.addSegment)(e,r,t.blockFormat)}},8310:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areSameFormats=void 0;var o=r(2347);t.areSameFormats=function(e,t){if(e==t)return!0;var r=(0,o.getObjectKeys)(e),n=(0,o.getObjectKeys)(t);return r.length==n.length&&r.every((function(r){return e[r]==t[r]}))}},3095:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getBoundingClientRect=void 0,t.getBoundingClientRect=function(e){return e.getBoundingClientRect()}},3149:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getDefaultStyle=void 0,t.getDefaultStyle=function(e,t){var r=e.tagName.toLowerCase();return t.defaultStyles[r]||{}}},8063:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRegularSelectionOffsets=void 0,t.getRegularSelectionOffsets=function(e,t){var r,o=0==(null===(r=e.rangeEx)||void 0===r?void 0:r.type)?e.rangeEx.ranges[0]:null;return[(null==o?void 0:o.startContainer)==t?o.startOffset:-1,(null==o?void 0:o.endContainer)==t?o.endOffset:-1]}},2404:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBlockElement=void 0;var o=r(3149),n=["block","list-item","table","table-cell","flex"];t.isBlockElement=function(e,t){var r=e.style.display||(0,o.getDefaultStyle)(e,t).display||"";return n.indexOf(r)>=0}},9366:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseFormat=void 0;var o=r(3149);t.parseFormat=function(e,t,r,n){var a=(0,o.getDefaultStyle)(e,n);t.forEach((function(t){null==t||t(r,e,n,a)}))}},202:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.stackFormat=void 0;var o=r(7582),n=r(2347),a=["backgroundColor"],l=["marginLeft","marginRight","paddingLeft","paddingRight"];function i(e,t){switch(t){case"empty":return{};case void 0:return e;default:var r=(0,o.__assign)({},e);return(0,n.getObjectKeys)(e).forEach((function(e){("shallowCloneForBlock"==t&&a.indexOf(e)>=0||"shallowCloneForGroup"==t&&l.indexOf(e)>=0)&&delete r[e]})),r}}t.stackFormat=function(e,t,r){var n,a=e.segmentFormat,l=e.blockFormat,s=e.link,c=e.code,d=e.blockDecorator,u=t.segment,f=t.paragraph,m=t.link,p=t.code,v=t.blockDecorator;try{e.segmentFormat=i(a,u),e.blockFormat=i(l,f),e.link=function(e,t){switch(t){case"linkDefault":return{format:{underline:!0},dataset:{}};case"empty":return{format:{},dataset:{}};default:return{dataset:e.dataset,format:(0,o.__assign)({},e.format)}}}(s,m),e.code=function(e,t){switch(t){case"codeDefault":return{format:{fontFamily:"monospace"}};case"empty":return{format:{}};default:return e}}(c,p),e.blockDecorator=(n=d,"empty"===v?{format:{},tagName:""}:n),r()}finally{e.segmentFormat=a,e.blockFormat=l,e.link=s,e.code=c,e.blockDecorator=d}}},3233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isNodeOfType=void 0,t.isNodeOfType=function(e,t){return!!e&&e.nodeType==t}},2362:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateListMetadata=void 0;var o=r(2347),n=r(6245),a=(0,o.createObjectDefinition)({orderedStyleType:(0,o.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,o.createNumberDefinition)(!0,void 0,1,9)},!0,!0);t.updateListMetadata=function(e,t){return(0,n.updateMetadata)(e,t,a)}},6245:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hasMetadata=t.updateMetadata=void 0;var o=r(2347),n="editingInfo";t.updateMetadata=function(e,t,r){var a=e.dataset[n],l=null;try{l=JSON.parse(a)}catch(e){}return r&&!(0,o.validate)(l,r)&&(l=null),t&&((l=t(l))?r&&!(0,o.validate)(l,r)||(e.dataset[n]=JSON.stringify(l)):delete e.dataset[n]),l},t.hasMetadata=function(e){return!!e.dataset[n]}},9980:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.directionFormatHandler=void 0,t.directionFormatHandler={parse:function(e,t,r,o){var n=t.style.direction||t.dir||o.direction;n&&(e.direction="rtl"==n?"rtl":"ltr")},apply:function(e,t){e.direction&&(t.style.direction=e.direction)}}},1276:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.displayFormatHandler=void 0,t.displayFormatHandler={parse:function(e,t){var r=t.style.display;r&&(e.display=r)},apply:function(e,t){e.display&&(t.style.display=e.display)}}},7762:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.htmlAlignFormatHandler=void 0;var o=r(3612),n=r(9980);t.htmlAlignFormatHandler={parse:function(e,t,r,a){n.directionFormatHandler.parse(e,t,r,a);var l=t.getAttribute("align");l&&(e.htmlAlign=(0,o.calcAlign)(l,e.direction),delete e.textAlign,delete r.blockFormat.textAlign)},apply:function(e,t){var r="rtl"==e.direction?"rtl":"ltr";e.htmlAlign&&t.setAttribute("align",o.ResultMap[e.htmlAlign][r])}}},4652:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.lineHeightFormatHandler=void 0,t.lineHeightFormatHandler={parse:function(e,t,r,o){var n=t.style.lineHeight||o.lineHeight;n&&"inherit"!=n&&(e.lineHeight=n)},apply:function(e,t){e.lineHeight&&(t.style.lineHeight=e.lineHeight)}}},4116:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.marginFormatHandler=void 0;var o=r(8704),n=["marginTop","marginRight","marginBottom","marginLeft"];t.marginFormatHandler={parse:function(e,t,r,a){n.forEach((function(r){var n=t.style[r]||a[r];if(n)switch(r){case"marginTop":case"marginBottom":e[r]=n;break;case"marginLeft":case"marginRight":e[r]=e[r]?(0,o.parseValueWithUnit)(e[r]||"",t)+(0,o.parseValueWithUnit)(n,t)+"px":n}}))},apply:function(e,t,r){n.forEach((function(o){var n=e[o];n!=r.implicitFormat[o]&&(t.style[o]=n||"0")}))}}},632:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.paddingFormatHandler=void 0;var r=["paddingTop","paddingRight","paddingBottom","paddingLeft"];t.paddingFormatHandler={parse:function(e,t){r.forEach((function(r){var o=t.style[r];o&&(e[r]=o)}))},apply:function(e,t){r.forEach((function(r){var o=e[r];o&&(t.style[r]=o)}))}}},9568:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textAlignFormatHandler=void 0;var o=r(3612),n=r(9980);t.textAlignFormatHandler={parse:function(e,t,r,a){var l;n.directionFormatHandler.parse(e,t,r,a);var i=t.style.textAlign||a.textAlign;"LI"==t.tagName&&"flex"===(null===(l=t.parentElement)||void 0===l?void 0:l.style.display)&&"column"===t.parentElement.style.flexDirection&&t.style.alignSelf&&(i=t.style.alignSelf),i&&(e.textAlign=(0,o.calcAlign)(i,e.direction))},apply:function(e,t){var r="rtl"==e.direction?"rtl":"ltr";if(e.textAlign){var n=t.parentElement,a=null==n?void 0:n.tagName;"LI"!=t.tagName||!n||"OL"!=a&&"UL"!=a?t.style.textAlign=o.ResultMap[e.textAlign][r]:(t.style.alignSelf=e.textAlign,t.parentElement.style.flexDirection="column",t.parentElement.style.display="flex")}}}},1167:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.whiteSpaceFormatHandler=void 0,t.whiteSpaceFormatHandler={parse:function(e,t,r,o){var n=t.style.whiteSpace||o.whiteSpace;n&&(e.whiteSpace=n)},apply:function(e,t,r){var o=r.implicitFormat.whiteSpace;e.whiteSpace!=o&&(t.style.whiteSpace=e.whiteSpace||"normal")}}},8891:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backgroundColorFormatHandler=void 0;var o=r(5150);t.backgroundColorFormatHandler={parse:function(e,t,r,n){var a=(0,o.getColor)(t,!0,r.darkColorHandler,!!r.isDarkMode)||n.backgroundColor;a&&(e.backgroundColor=a)},apply:function(e,t,r){e.backgroundColor&&(0,o.setColor)(t,e.backgroundColor,!0,r.darkColorHandler,!!r.isDarkMode)}}},5930:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.borderBoxFormatHandler=void 0,t.borderBoxFormatHandler={parse:function(e,t){var r;"border-box"==(null===(r=t.style)||void 0===r?void 0:r.boxSizing)&&(e.useBorderBox=!0)},apply:function(e,t){e.useBorderBox&&(t.style.boxSizing="border-box")}}},1136:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.borderFormatHandler=t.BorderKeys=void 0,t.BorderKeys=["borderTop","borderRight","borderBottom","borderLeft","borderRadius"],t.borderFormatHandler={parse:function(e,r){t.BorderKeys.forEach((function(t){var o=r.style[t];o&&(e[t]="none"==o?"":o)}))},apply:function(e,r){t.BorderKeys.forEach((function(t){var o=e[t];o&&(r.style[t]=o)}))}}},8577:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boxShadowFormatHandler=void 0,t.boxShadowFormatHandler={parse:function(e,t){var r;(null===(r=t.style)||void 0===r?void 0:r.boxShadow)&&(e.boxShadow=t.style.boxShadow)},apply:function(e,t){e.boxShadow&&(t.style.boxShadow=e.boxShadow)}}},1453:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.datasetFormatHandler=void 0;var o=r(2347);t.datasetFormatHandler={parse:function(e,t){var r=t.dataset;(0,o.getObjectKeys)(r).forEach((function(t){e[t]=r[t]||""}))},apply:function(e,t){(0,o.getObjectKeys)(e).forEach((function(r){t.dataset[r]=e[r]}))}}},5432:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.floatFormatHandler=void 0,t.floatFormatHandler={parse:function(e,t){var r=t.style.float||t.getAttribute("align");r&&(e.float=r)},apply:function(e,t){e.float&&(t.style.float=e.float)}}},6883:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.idFormatHandler=void 0,t.idFormatHandler={parse:function(e,t){t.id&&(e.id=t.id)},apply:function(e,t){e.id&&(t.id=e.id)}}},7302:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.sizeFormatHandler=void 0;var r=/[\d\.]+%/;function o(e,t){var o=e.getAttribute(t),n=parseInt(o||"");return o&&r.test(o)?o:Number.isNaN(n)?void 0:n+"px"}t.sizeFormatHandler={parse:function(e,t,r){var n=t.style.width||o(t,"width"),a=t.style.height||o(t,"height"),l=t.style.maxWidth,i=t.style.maxHeight,s=t.style.minWidth,c=t.style.minHeight;n&&(e.width=n),a&&(e.height=a),l&&(e.maxWidth=l),i&&(e.maxHeight=i),s&&(e.minWidth=s),c&&(e.minHeight=c)},apply:function(e,t){e.width&&(t.style.width=e.width),e.height&&(t.style.height=e.height),e.maxWidth&&(t.style.maxWidth=e.maxWidth),e.maxHeight&&(t.style.maxHeight=e.maxHeight),e.minWidth&&(t.style.minWidth=e.minWidth),e.minHeight&&(t.style.minHeight=e.minHeight)}}},8854:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.verticalAlignFormatHandler=void 0,t.verticalAlignFormatHandler={parse:function(e,t){switch(t.style.verticalAlign||t.getAttribute("valign")){case"baseline":case"initial":case"super":case"sub":case"text-top":case"text-bottom":case"top":e.verticalAlign="top";break;case"bottom":e.verticalAlign="bottom";break;case"middle":e.verticalAlign="middle"}},apply:function(e,t){e.verticalAlign&&(t.style.verticalAlign=e.verticalAlign)}}},4258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wordBreakFormatHandler=void 0,t.wordBreakFormatHandler={parse:function(e,t,r,o){var n=t.style.wordBreak||o.wordBreak;n&&(e.wordBreak=n)},apply:function(e,t){e.wordBreak&&(t.style.wordBreak=e.wordBreak)}}},8659:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFormatAppliers=t.getFormatParsers=t.defaultFormatAppliers=t.defaultFormatParsers=void 0;var o=r(7582),n=r(8891),a=r(8707),l=r(5930),i=r(1136),s=r(8577),c=r(1453),d=r(9980),u=r(1276),f=r(5432),m=r(7239),p=r(9101),v=r(2347),g=r(7762),h=r(6883),b=r(2647),y=r(3260),_=r(4652),C=r(7026),P=r(2128),k=r(9865),S=r(5931),O=r(4116),M=r(632),T=r(7302),w=r(6413),F=r(5855),x=r(746),E=r(461),j=r(9568),B=r(1268),L=r(5797),A=r(7506),I=r(8854),D=r(1167),H=r(4258),N={backgroundColor:n.backgroundColorFormatHandler,bold:a.boldFormatHandler,border:i.borderFormatHandler,borderBox:l.borderBoxFormatHandler,boxShadow:s.boxShadowFormatHandler,dataset:c.datasetFormatHandler,direction:d.directionFormatHandler,display:u.displayFormatHandler,float:f.floatFormatHandler,fontFamily:m.fontFamilyFormatHandler,fontSize:p.fontSizeFormatHandler,htmlAlign:g.htmlAlignFormatHandler,id:h.idFormatHandler,italic:b.italicFormatHandler,letterSpacing:y.letterSpacingFormatHandler,lineHeight:_.lineHeightFormatHandler,link:C.linkFormatHandler,listItemThread:P.listItemThreadFormatHandler,listLevelThread:k.listLevelThreadFormatHandler,listStylePosition:S.listStylePositionFormatHandler,margin:O.marginFormatHandler,padding:M.paddingFormatHandler,size:T.sizeFormatHandler,strike:w.strikeFormatHandler,superOrSubScript:F.superOrSubScriptFormatHandler,tableLayout:x.tableLayoutFormatHandler,tableSpacing:E.tableSpacingFormatHandler,textAlign:j.textAlignFormatHandler,textColor:B.textColorFormatHandler,textColorOnTableCell:L.textColorOnTableCellFormatHandler,underline:A.underlineFormatHandler,verticalAlign:I.verticalAlignFormatHandler,whiteSpace:D.whiteSpaceFormatHandler,wordBreak:H.wordBreakFormatHandler},R=["letterSpacing","fontFamily","fontSize"],z=["strike","underline","superOrSubScript","italic","bold"],W=["direction","textAlign","lineHeight","whiteSpace"],G=["backgroundColor","margin","padding","border"],U={block:W,listItem:["listItemThread"],listItemElement:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(W),!1),["direction","textAlign","lineHeight","margin"],!1),listLevel:["listLevelThread","direction","textAlign","margin","padding","listStylePosition","backgroundColor"],styleBasedSegment:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),["textColor","backgroundColor","lineHeight"],!1),elementBasedSegment:z,segment:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColor","backgroundColor","lineHeight"],!1),segmentOnBlock:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColor"],!1),segmentOnTableCell:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColorOnTableCell"],!1),tableCell:["border","backgroundColor","padding","verticalAlign","wordBreak","textColor","htmlAlign","size"],tableRow:["backgroundColor"],table:["id","border","backgroundColor","display","htmlAlign","margin","size","tableLayout"],tableBorder:["borderBox","tableSpacing"],tableCellBorder:["borderBox"],image:["id","size","margin","padding","borderBox","border","boxShadow","display","float","verticalAlign"],link:["link","textColor","underline","display","margin","padding","backgroundColor","border","size","textAlign"],segmentUnderLink:["textColor"],code:["fontFamily","display"],dataset:["dataset"],divider:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(W),!1),(0,o.__read)(G),!1),["display","size","htmlAlign"],!1),container:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(G),!1),["htmlAlign","size","display"],!1)};t.defaultFormatParsers=(0,v.getObjectKeys)(N).reduce((function(e,t){return e[t]=N[t].parse,e}),{}),t.defaultFormatAppliers=(0,v.getObjectKeys)(N).reduce((function(e,t){return e[t]=N[t].apply,e}),{}),t.getFormatParsers=function(e,r){return void 0===e&&(e={}),void 0===r&&(r={}),(0,v.getObjectKeys)(U).reduce((function(o,n){var a=U[n].map((function(r){return void 0===e[r]?t.defaultFormatParsers[r]:e[r]})).concat(r[n]||[]);return o[n]=a,o}),{})},t.getFormatAppliers=function(e,r){return void 0===e&&(e={}),void 0===r&&(r={}),(0,v.getObjectKeys)(U).reduce((function(o,n){var a=U[n].map((function(r){return void 0===e[r]?t.defaultFormatAppliers[r]:e[r]})).concat(r[n]||[]);return o[n]=a,o}),{})}},154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getOrderedListStyleValue=t.listItemMetadataFormatHandler=void 0;var o=r(7582),n=r(2347),a=r(3233),l=r(2438),i=/\$\{(\w+)\}/,s=["decimal","lower-alpha","lower-roman"],c=["disc","circle","square"],d=65,u={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};function f(e,t){return e?e.replace(i,(function(e,r){switch(r){case"Number":return t+"";case"LowerAlpha":return m(t,!0);case"UpperAlpha":return m(t,!1);case"LowerRoman":return p(t,!0);case"UpperRoman":return p(t,!1)}return""})):void 0}function m(e,t){var r="";for(e--;e>=0;)r=String.fromCharCode(e%26+d)+r,e=Math.floor(e/26)-1;return t?r.toLowerCase():r}function p(e,t){var r,a,l="";try{for(var i=(0,o.__values)((0,n.getObjectKeys)(u)),s=i.next();!s.done;s=i.next()){var c=s.value,d=Math.floor(e/u[c]);e-=d*u[c],l+=c.repeat(d)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return t?l.toLocaleLowerCase():l}t.listItemMetadataFormatHandler={parse:function(){},apply:function(e,t,r){var o,i,d=t.parentNode,u=r.listFormat.nodeStack.length-2;if(u>=0&&(0,a.isNodeOfType)(d,1)&&!d.style.listStyleType){var m="OL"==(0,n.getTagOfNode)(d)?null!==(o=f(l.OrderedMap[e.orderedStyleType],r.listFormat.threadItemCounts[u]))&&void 0!==o?o:s[u%s.length]:null!==(i=l.UnorderedMap[e.unorderedStyleType])&&void 0!==i?i:c[u%c.length];m&&(u>0||"decimal"!=m&&"disc"!=m)&&(t.style.listStyleType=m)}}},t.getOrderedListStyleValue=f},2128:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listItemThreadFormatHandler=void 0;var o=r(2347);function n(e){return(0,o.safeInstanceOf)(e,"HTMLLIElement")&&(0,o.safeInstanceOf)(e.parentNode,"HTMLOListElement")}t.listItemThreadFormatHandler={parse:function(e,t,r,o){var a=r.listFormat,l=a.levels.length,i=t.style.display||o.display;i&&"list-item"!=i?e.displayForDummyItem=i:n(t)&&l>0&&(a.threadItemCounts[l-1]++,a.threadItemCounts.splice(l),a.levels.forEach((function(e){delete e.format.startNumberOverride})))},apply:function(e,t,r){var o;if(e.displayForDummyItem)t.style.display=e.displayForDummyItem;else if(n(t)){var a=r.listFormat,l=a.threadItemCounts,i=a.nodeStack.length-2;i>=0&&(l.splice(i+1),l[i]=(null!==(o=l[i])&&void 0!==o?o:0)+1)}}}},2438:(e,t,r)=>{var o,n;Object.defineProperty(t,"__esModule",{value:!0}),t.listLevelMetadataFormatHandler=t.UnorderedMap=t.OrderedMap=void 0;var a=r(2347);t.OrderedMap=((o={})[1]="decimal",o[2]='"${Number}- "',o[3]='"${Number}) "',o[4]='"(${Number}) "',o[5]="lower-alpha",o[8]='"${LowerAlpha}- "',o[6]='"${LowerAlpha}) "',o[7]='"(${LowerAlpha}) "',o[9]="upper-alpha",o[12]='"${UpperAlpha}- "',o[10]='"${UpperAlpha}) "',o[11]='"(${UpperAlpha}) "',o[13]="lower-roman",o[16]='"${LowerRoman}- "',o[14]='"${LowerRoman}) "',o[15]='"(${LowerRoman}) "',o[17]="upper-roman",o[20]='"${UpperRoman}- "',o[18]='"${UpperRoman}) "',o[19]='"(${UpperRoman}) "',o),t.UnorderedMap=((n={})[1]="disc",n[3]='"∎ "',n[9]="circle",n[2]='"- "',n[5]='"➔ "',n[8]='"➔ "',n[4]='"➢ "',n[6]='"➪ "',n[7]='"— "',n);var l={1:"decimal",a:"lower-alpha",A:"upper-alpha",i:"lower-roman",I:"upper-roman"};function i(e,t){return void 0===t?void 0:(0,a.getObjectKeys)(e).filter((function(r){return e[r]==t}))[0]}t.listLevelMetadataFormatHandler={parse:function(e,r){var o=r.style.listStyleType||(0,a.safeInstanceOf)(r,"HTMLOListElement")&&l[r.type],n=(0,a.getTagOfNode)(r);if(o)if("OL"==n&&void 0===e.orderedStyleType){var s=i(t.OrderedMap,o);e.orderedStyleType=void 0===s?void 0:parseInt(s)}else"UL"==n&&void 0===e.unorderedStyleType&&(s=i(t.UnorderedMap,o),e.unorderedStyleType=void 0===s?void 0:parseInt(s))},apply:function(e,r){var o="OL"==(0,a.getTagOfNode)(r)?t.OrderedMap[e.orderedStyleType]:t.UnorderedMap[e.unorderedStyleType];o&&o.indexOf('"')<0&&(r.style.listStyleType=o)}}},9865:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listLevelThreadFormatHandler=void 0;var o=r(2347);t.listLevelThreadFormatHandler={parse:function(e,t,r){if((0,o.safeInstanceOf)(t,"HTMLOListElement")){var n=r.listFormat,a=n.threadItemCounts,l=n.levels.length;"number"==typeof a[l]&&t.start!=a[l]+1&&(e.startNumberOverride=t.start),a[l]=t.start-1}},apply:function(e,t,r){var n=r.listFormat,a=n.threadItemCounts,l=n.nodeStack.length-1;if(l>=0&&(0,o.safeInstanceOf)(t,"HTMLOListElement")){var i=e.startNumberOverride;"number"==typeof i?a[l]=i-1:"number"!=typeof a[l]&&(a[l]=0),a.splice(l+1),t.start=a[l]+1}}}},5931:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listStylePositionFormatHandler=void 0,t.listStylePositionFormatHandler={parse:function(e,t){var r=t.style.listStylePosition;r&&(e.listStylePosition=r)},apply:function(e,t){e.listStylePosition&&(t.style.listStylePosition=e.listStylePosition)}}},8707:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boldFormatHandler=void 0;var o=r(2347);t.boldFormatHandler={parse:function(e,t,r,o){var n=t.style.fontWeight||o.fontWeight;n&&(e.fontWeight=n)},apply:function(e,t,r){if(void 0!==e.fontWeight){var n=r.implicitFormat.fontWeight;if(n&&n!=e.fontWeight||!n&&e.fontWeight&&"normal"!=e.fontWeight)if("bold"==e.fontWeight){var a=t.ownerDocument.createElement("b");(0,o.moveChildNodes)(a,t),t.appendChild(a)}else t.style.fontWeight=e.fontWeight||"normal"}}}},7239:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontFamilyFormatHandler=void 0,t.fontFamilyFormatHandler={parse:function(e,t,r,o){var n=t.style.fontFamily||o.fontFamily;n&&"inherit"!=n&&(e.fontFamily=n)},apply:function(e,t,r){e.fontFamily&&e.fontFamily!=r.implicitFormat.fontFamily&&(t.style.fontFamily=e.fontFamily)}}},9101:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontSizeFormatHandler=void 0;var o=r(5855),n=r(8704);t.fontSizeFormatHandler={parse:function(e,t,r,l){var i=t.style.fontSize||l.fontSize,s=t.style.verticalAlign||l.verticalAlign;i&&!(0,o.isSuperOrSubScript)(i,s)&&"inherit"!=i&&(t.style.fontSize?e.fontSize=function(e,t){var r=a[e];if(r)return r;if("smaller"!=e&&"larger"!=e&&!e.endsWith("em")&&!e.endsWith("%"))return"inherit"==e||"revert"==e||"unset"==e?void 0:e;if(t){var o=(0,n.parseValueWithUnit)(t,void 0,"px");if(o)switch(e){case"smaller":return Math.round(500*o/6)/100+"px";case"larger":return Math.round(600*o/5)/100+"px";default:return(0,n.parseValueWithUnit)(e,o,"px")+"px"}}}(i,r.segmentFormat.fontSize):l.fontSize&&(e.fontSize=i))},apply:function(e,t,r){e.fontSize&&e.fontSize!=r.implicitFormat.fontSize&&(t.style.fontSize=e.fontSize)}};var a={"xx-small":"6.75pt","x-small":"7.5pt",small:"9.75pt",medium:"12pt",large:"13.5pt","x-large":"18pt","xx-large":"24pt","xxx-large":"36pt"}},2647:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.italicFormatHandler=void 0;var o=r(2347);t.italicFormatHandler={parse:function(e,t,r,o){var n=t.style.fontStyle||o.fontStyle;"italic"==n||"oblique"==n?e.italic=!0:"initial"!=n&&"normal"!=n||(e.italic=!1)},apply:function(e,t,r){if(void 0!==e.italic&&!!r.implicitFormat.italic!=!!e.italic)if(e.italic){var n=t.ownerDocument.createElement("i");(0,o.moveChildNodes)(n,t),t.appendChild(n)}else t.style.fontStyle="normal"}}},3260:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.letterSpacingFormatHandler=void 0,t.letterSpacingFormatHandler={parse:function(e,t,r,o){var n=t.style.letterSpacing||o.letterSpacing;n&&(e.letterSpacing=n)},apply:function(e,t,r){e.letterSpacing&&(t.style.letterSpacing=e.letterSpacing)}}},7026:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.linkFormatHandler=void 0;var o=r(2347);t.linkFormatHandler={parse:function(e,t){if((0,o.safeInstanceOf)(t,"HTMLAnchorElement")){var r=t.name,n=t.getAttribute("href"),a=t.target,l=t.rel,i=t.id,s=t.className,c=t.title;r&&(e.name=r),n&&(e.href=n),a&&(e.target=a),i&&(e.anchorId=i),l&&(e.relationship=l),c&&(e.anchorTitle=c),s&&(e.anchorClass=s)}},apply:function(e,t){(0,o.safeInstanceOf)(t,"HTMLAnchorElement")&&e.href&&(t.href=e.href,e.name&&(t.name=e.name),e.target&&(t.target=e.target),e.anchorId&&(t.id=e.anchorId),e.anchorClass&&(t.className=e.anchorClass),e.anchorTitle&&(t.title=e.anchorTitle),e.relationship&&(t.rel=e.relationship))}}},6413:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.strikeFormatHandler=void 0;var o=r(2347);t.strikeFormatHandler={parse:function(e,t,r,o){var n=t.style.textDecoration||o.textDecoration;(null==n?void 0:n.indexOf("line-through"))>=0&&(e.strikethrough=!0)},apply:function(e,t){if(e.strikethrough){var r=t.ownerDocument.createElement("s");(0,o.moveChildNodes)(r,t),t.appendChild(r)}}}},5855:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isSuperOrSubScript=t.superOrSubScriptFormatHandler=void 0;var o=r(2347);function n(e,t){return"smaller"==e&&("sub"==t||"super"==t)}t.superOrSubScriptFormatHandler={parse:function(e,t,r,o){var a=t.style.verticalAlign||o.verticalAlign;n(t.style.fontSize||o.fontSize,a)&&(e.superOrSubScriptSequence=(e.superOrSubScriptSequence||"").split(" ").concat(a).join(" ").trim())},apply:function(e,t){e.superOrSubScriptSequence&&e.superOrSubScriptSequence.split(" ").reverse().forEach((function(e){var r="super"==e?"sup":"sub"==e?"sub":null;if(r){var n=t.ownerDocument.createElement(r);(0,o.moveChildNodes)(n,t),t.appendChild(n)}}))}},t.isSuperOrSubScript=n},1268:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textColorFormatHandler=void 0;var o=r(5150);t.textColorFormatHandler={parse:function(e,t,r,n){var a=(0,o.getColor)(t,!1,r.darkColorHandler,!!r.isDarkMode)||n.color;a&&"inherit"!=a&&(e.textColor=a)},apply:function(e,t,r){var n=r.implicitFormat.textColor;e.textColor&&e.textColor!=n&&(0,o.setColor)(t,e.textColor,!1,r.darkColorHandler,!!r.isDarkMode)}}},7506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.underlineFormatHandler=void 0;var o=r(2347);t.underlineFormatHandler={parse:function(e,t,r,o){var n=t.style.textDecoration||o.textDecoration;(null==n?void 0:n.indexOf("underline"))>=0?e.underline=!0:"A"==t.tagName&&"none"==n&&(e.underline=!1)},apply:function(e,t,r){if(void 0!==e.underline&&!!r.implicitFormat.underline!=!!e.underline)if(e.underline){var n=t.ownerDocument.createElement("u");(0,o.moveChildNodes)(n,t),t.appendChild(n)}else t.style.textDecoration="none"}}},746:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableLayoutFormatHandler=void 0,t.tableLayoutFormatHandler={parse:function(e,t){var r=t.style.tableLayout;r&&"inherit"!=r&&(e.tableLayout=r)},apply:function(e,t){e.tableLayout&&(t.style.tableLayout=e.tableLayout)}}},461:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableSpacingFormatHandler=void 0;var r="collapse";t.tableSpacingFormatHandler={parse:function(e,t){t.style.borderCollapse==r&&(e.borderCollapse=!0)},apply:function(e,t){e.borderCollapse&&(t.style.borderCollapse=r,t.style.borderSpacing="0",t.style.boxSizing="border-box")}}},5797:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textColorOnTableCellFormatHandler=void 0,t.textColorOnTableCellFormatHandler={parse:function(e,t){t.style.color&&delete e.textColor},apply:function(){}}},5150:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setColor=t.getColor=t.DeprecatedColors=void 0;var o=r(2347);t.DeprecatedColors=["inactiveborder","activeborder","inactivecaptiontext","inactivecaption","activecaption","appworkspace","infobackground","background","buttonhighlight","buttonshadow","captiontext","infotext","menutext","menu","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedfhadow","windowtext","windowframe","window"],t.getColor=function(e,r,n,a){var l;return l||(l=n&&function(e,t,r,n){var a;return"FONT"==(0,o.getTagOfNode)(e)&&!e.style.getPropertyValue(n?"background-color":"color")&&t&&(a=e.getAttribute(n?"bgcolor":"color"))?r.findLightColorFromDarkColor(a):null}(e,a,n,r)||(r?e.style.backgroundColor:e.style.color)||e.getAttribute(r?"bgcolor":"color")||void 0),l&&t.DeprecatedColors.indexOf(l)>-1&&(l=void 0),n&&(l=n.parseColorValue(l).lightModeColor),l},t.setColor=function(e,t,r,o,n){var a=o?o.registerColor(t,n):t;r?e.style.backgroundColor=a:e.style.color=a}},976:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.defaultImplicitFormatMap=t.PseudoTagNames=t.defaultStyleMap=void 0;var o={display:"block"};t.defaultStyleMap={address:o,article:o,aside:o,b:{fontWeight:"bold"},blockquote:{display:"block",marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px"},br:o,center:{display:"block",textAlign:"center"},dd:o,div:o,dl:o,dt:o,em:{fontStyle:"italic"},fieldset:o,figcaption:o,figure:o,footer:o,form:o,h1:{display:"block",fontWeight:"bold",fontSize:"2em"},h2:{display:"block",fontWeight:"bold",fontSize:"1.5em"},h3:{display:"block",fontWeight:"bold",fontSize:"1.17em"},h4:{display:"block",fontWeight:"bold"},h5:{display:"block",fontWeight:"bold",fontSize:"0.83em"},h6:{display:"block",fontWeight:"bold",fontSize:"0.67em"},header:o,hr:o,i:{fontStyle:"italic"},li:{display:"list-item"},main:o,nav:o,ol:o,p:{display:"block",marginTop:"1em",marginBottom:"1em"},pre:{display:"block",fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"},s:{textDecoration:"line-through"},section:o,strike:{textDecoration:"line-through"},strong:{fontWeight:"bold"},sub:{verticalAlign:"sub",fontSize:"smaller"},sup:{verticalAlign:"super",fontSize:"smaller"},table:{display:"table",boxSizing:"border-box"},td:{display:"table-cell"},th:{display:"table-cell"},u:{textDecoration:"underline"},ul:o},(t.PseudoTagNames||(t.PseudoTagNames={})).childOfPre="pre *",t.defaultImplicitFormatMap=((r={a:{underline:!0},blockquote:{marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px"},code:{fontFamily:"monospace"},h1:{fontWeight:"bold",fontSize:"2em"},h2:{fontWeight:"bold",fontSize:"1.5em"},h3:{fontWeight:"bold",fontSize:"1.17em"},h4:{fontWeight:"bold",fontSize:"1em"},h5:{fontWeight:"bold",fontSize:"0.83em"},h6:{fontWeight:"bold",fontSize:"0.67em"},p:{marginTop:"1em",marginBottom:"1em"},pre:{fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"}})["pre *"]={fontFamily:"monospace",whiteSpace:"pre"},r)},3612:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.calcAlign=t.ResultMap=void 0,t.ResultMap={start:{ltr:"left",rtl:"right"},center:{ltr:"center",rtl:"center"},end:{ltr:"right",rtl:"left"},initial:{ltr:"initial",rtl:"initial"},justify:{ltr:"justify",rtl:"justify"}},t.calcAlign=function(e,t){switch(e){case"center":return"center";case"left":return"rtl"==t?"end":"start";case"right":return"rtl"==t?"start":"end";case"start":case"end":case"justify":case"initial":return e;default:return}}},8704:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseValueWithUnit=void 0;var o=r(7582),n=r(2347),a=/(-?\d+(\.\d+)?)([a-z]+|%)/;function l(e){if(void 0===e)return 0;if("number"==typeof e)return e;var t=(0,n.getComputedStyle)(e,"font-size");return i(parseFloat(t))}function i(e){return Math.round(4e3*e/3)/1e3}t.parseValueWithUnit=function(e,t,r){void 0===e&&(e=""),void 0===r&&(r="px");var n,s=a.exec(e),c=0;if(s){var d=(0,o.__read)(s,4),u=(d[0],d[1]),f=(d[2],d[3]),m=parseFloat(u);switch(f){case"px":c=m;break;case"pt":c=i(m);break;case"em":c=l(t)*m;break;case"ex":c=l(t)*m/2;break;case"%":c=l(t)*m/100}}return c>0&&"pt"==r&&(n=c,c=Math.round(3e3*n/4)/1e3),c}},1246:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDomToModelContext=t.defaultImplicitFormatMap=t.DeprecatedColors=t.BorderKeys=t.parseValueWithUnit=t.setParagraphNotImplicit=t.normalizeSingleSegment=t.isWhiteSpacePreserved=t.addSegment=t.unwrapBlock=t.isGeneralSegment=t.normalizeContentModel=t.addLink=t.addCode=t.addBlock=t.createListLevel=t.createDivider=t.createEntity=t.createGeneralBlock=t.createGeneralSegment=t.createParagraphDecorator=t.createContentModelDocument=t.createImage=t.createText=t.createTableCell=t.createTable=t.createSelectionMarker=t.createParagraph=t.createFormatContainer=t.createListItem=t.createBr=t.isNodeOfType=t.updateListMetadata=t.hasMetadata=t.updateMetadata=t.areSameFormats=t.parseFormat=t.getRegularSelectionOffsets=t.tableProcessor=t.entityProcessor=t.processChildNode=t.handleRegularSelection=t.childProcessor=t.contentModelToDom=t.domToContentModel=void 0;var o=r(1807);Object.defineProperty(t,"domToContentModel",{enumerable:!0,get:function(){return o.domToContentModel}});var n=r(4266);Object.defineProperty(t,"contentModelToDom",{enumerable:!0,get:function(){return n.contentModelToDom}});var a=r(9384);Object.defineProperty(t,"childProcessor",{enumerable:!0,get:function(){return a.childProcessor}}),Object.defineProperty(t,"handleRegularSelection",{enumerable:!0,get:function(){return a.handleRegularSelection}}),Object.defineProperty(t,"processChildNode",{enumerable:!0,get:function(){return a.processChildNode}});var l=r(6905);Object.defineProperty(t,"entityProcessor",{enumerable:!0,get:function(){return l.entityProcessor}});var i=r(970);Object.defineProperty(t,"tableProcessor",{enumerable:!0,get:function(){return i.tableProcessor}});var s=r(8063);Object.defineProperty(t,"getRegularSelectionOffsets",{enumerable:!0,get:function(){return s.getRegularSelectionOffsets}});var c=r(9366);Object.defineProperty(t,"parseFormat",{enumerable:!0,get:function(){return c.parseFormat}});var d=r(8310);Object.defineProperty(t,"areSameFormats",{enumerable:!0,get:function(){return d.areSameFormats}});var u=r(6245);Object.defineProperty(t,"updateMetadata",{enumerable:!0,get:function(){return u.updateMetadata}}),Object.defineProperty(t,"hasMetadata",{enumerable:!0,get:function(){return u.hasMetadata}});var f=r(2362);Object.defineProperty(t,"updateListMetadata",{enumerable:!0,get:function(){return f.updateListMetadata}});var m=r(3233);Object.defineProperty(t,"isNodeOfType",{enumerable:!0,get:function(){return m.isNodeOfType}});var p=r(7826);Object.defineProperty(t,"createBr",{enumerable:!0,get:function(){return p.createBr}});var v=r(7724);Object.defineProperty(t,"createListItem",{enumerable:!0,get:function(){return v.createListItem}});var g=r(2766);Object.defineProperty(t,"createFormatContainer",{enumerable:!0,get:function(){return g.createFormatContainer}});var h=r(5092);Object.defineProperty(t,"createParagraph",{enumerable:!0,get:function(){return h.createParagraph}});var b=r(5114);Object.defineProperty(t,"createSelectionMarker",{enumerable:!0,get:function(){return b.createSelectionMarker}});var y=r(988);Object.defineProperty(t,"createTable",{enumerable:!0,get:function(){return y.createTable}});var _=r(1160);Object.defineProperty(t,"createTableCell",{enumerable:!0,get:function(){return _.createTableCell}});var C=r(840);Object.defineProperty(t,"createText",{enumerable:!0,get:function(){return C.createText}});var P=r(5566);Object.defineProperty(t,"createImage",{enumerable:!0,get:function(){return P.createImage}});var k=r(5733);Object.defineProperty(t,"createContentModelDocument",{enumerable:!0,get:function(){return k.createContentModelDocument}});var S=r(24);Object.defineProperty(t,"createParagraphDecorator",{enumerable:!0,get:function(){return S.createParagraphDecorator}});var O=r(8885);Object.defineProperty(t,"createGeneralSegment",{enumerable:!0,get:function(){return O.createGeneralSegment}});var M=r(9237);Object.defineProperty(t,"createGeneralBlock",{enumerable:!0,get:function(){return M.createGeneralBlock}});var T=r(1033);Object.defineProperty(t,"createEntity",{enumerable:!0,get:function(){return T.createEntity}});var w=r(7110);Object.defineProperty(t,"createDivider",{enumerable:!0,get:function(){return w.createDivider}});var F=r(1285);Object.defineProperty(t,"createListLevel",{enumerable:!0,get:function(){return F.createListLevel}});var x=r(9275);Object.defineProperty(t,"addBlock",{enumerable:!0,get:function(){return x.addBlock}});var E=r(3883);Object.defineProperty(t,"addCode",{enumerable:!0,get:function(){return E.addCode}});var j=r(3883);Object.defineProperty(t,"addLink",{enumerable:!0,get:function(){return j.addLink}});var B=r(8767);Object.defineProperty(t,"normalizeContentModel",{enumerable:!0,get:function(){return B.normalizeContentModel}});var L=r(183);Object.defineProperty(t,"isGeneralSegment",{enumerable:!0,get:function(){return L.isGeneralSegment}});var A=r(5960);Object.defineProperty(t,"unwrapBlock",{enumerable:!0,get:function(){return A.unwrapBlock}});var I=r(8513);Object.defineProperty(t,"addSegment",{enumerable:!0,get:function(){return I.addSegment}});var D=r(3897);Object.defineProperty(t,"isWhiteSpacePreserved",{enumerable:!0,get:function(){return D.isWhiteSpacePreserved}});var H=r(3393);Object.defineProperty(t,"normalizeSingleSegment",{enumerable:!0,get:function(){return H.normalizeSingleSegment}});var N=r(3963);Object.defineProperty(t,"setParagraphNotImplicit",{enumerable:!0,get:function(){return N.setParagraphNotImplicit}});var R=r(8704);Object.defineProperty(t,"parseValueWithUnit",{enumerable:!0,get:function(){return R.parseValueWithUnit}});var z=r(1136);Object.defineProperty(t,"BorderKeys",{enumerable:!0,get:function(){return z.BorderKeys}});var W=r(5150);Object.defineProperty(t,"DeprecatedColors",{enumerable:!0,get:function(){return W.DeprecatedColors}});var G=r(976);Object.defineProperty(t,"defaultImplicitFormatMap",{enumerable:!0,get:function(){return G.defaultImplicitFormatMap}});var U=r(9968);Object.defineProperty(t,"createDomToModelContext",{enumerable:!0,get:function(){return U.createDomToModelContext}})},3963:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setParagraphNotImplicit=void 0,t.setParagraphNotImplicit=function(e){"Paragraph"==e.blockType&&e.isImplicit&&(e.isImplicit=!1)}},9275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addBlock=void 0,t.addBlock=function(e,t){e.blocks.push(t)}},3883:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDecorators=t.addCode=t.addLink=void 0;var o=r(7582);function n(e,t){t.format.href&&(e.link={format:(0,o.__assign)({},t.format),dataset:(0,o.__assign)({},t.dataset)})}function a(e,t){t.format.fontFamily&&(e.code={format:(0,o.__assign)({},t.format)})}t.addLink=n,t.addCode=a,t.addDecorators=function(e,t){n(e,t.link),a(e,t.code)}},8513:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addSegment=void 0;var o=r(9275),n=r(5092);t.addSegment=function(e,t,r){var a,l=e.blocks[e.blocks.length-1];"Paragraph"==(null==l?void 0:l.blockType)?a=l:(a=(0,n.createParagraph)(!0,r),(0,o.addBlock)(e,a));var i=a.segments[a.segments.length-1];"SelectionMarker"==t.segmentType?i&&i.isSelected||a.segments.push(t):(t.isSelected&&"SelectionMarker"==(null==i?void 0:i.segmentType)&&a.segments.pop(),a.segments.push(t))}},7084:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hasSpacesOnly=void 0;var r=/^[\r\n\t ]*$/;t.hasSpacesOnly=function(e){return r.test(e)}},4451:(e,t)=>{function r(e){switch(e.blockType){case"Paragraph":return 0==e.segments.length;case"Table":return e.rows.every((function(e){return 0==e.cells.length}));case"BlockGroup":return o(e);default:return!1}}function o(e){switch(e.blockGroupType){case"FormatContainer":return"div"!=e.tagName&&e.blocks.every(r);case"ListItem":return e.blocks.every(r);case"Document":case"General":case"TableCell":return!1;default:return!0}}function n(e){switch(e.segmentType){case"Text":return!e.text;case"Image":return!e.src;default:return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.isEmpty=t.isSegmentEmpty=t.isBlockGroupEmpty=t.isBlockEmpty=void 0,t.isBlockEmpty=r,t.isBlockGroupEmpty=o,t.isSegmentEmpty=n,t.isEmpty=function(e){return function(e){return"string"==typeof e.blockGroupType}(e)?o(e):function(e){return"string"==typeof e.blockType}(e)?r(e):!!function(e){return"string"==typeof e.segmentType}(e)&&n(e)}},183:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isGeneralSegment=void 0,t.isGeneralSegment=function(e){return"General"==e.blockGroupType&&"General"==e.segmentType}},3897:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isWhiteSpacePreserved=void 0;var r=["pre","pre-wrap","break-spaces"];t.isWhiteSpacePreserved=function(e){return e.format.whiteSpace&&r.indexOf(e.format.whiteSpace)>=0||!1}},8767:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeContentModel=void 0;var o=r(4451),n=r(4858),a=r(5960);t.normalizeContentModel=function e(t){for(var r=t.blocks.length-1;r>=0;r--){var l=t.blocks[r];switch(l.blockType){case"BlockGroup":"ListItem"==l.blockGroupType&&0==l.levels.length?(r+=l.blocks.length,(0,a.unwrapBlock)(t,l)):e(l);break;case"Paragraph":(0,n.normalizeParagraph)(l);break;case"Table":for(var i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeParagraph=void 0;var o=r(7826),n=r(4451),a=r(3897),l=r(3393);t.normalizeParagraph=function(e){var t=e.segments;if(!e.isImplicit&&t.length>0){var r=t[t.length-1],i=t[t.length-2];if("SelectionMarker"!=r.segmentType||i&&"Br"!=i.segmentType){if(t.length>1&&"Br"==t[t.length-1].segmentType){var s=t.filter((function(e){return"SelectionMarker"!=e.segmentType}));s.length>1&&"Br"!=s[s.length-2].segmentType&&t.pop()}}else t.push((0,o.createBr)(r.format))}(0,a.isWhiteSpacePreserved)(e)||(0,l.normalizeAllSegments)(e),function(e){for(var t=e.segments.length-1;t>=0;t--)(0,n.isSegmentEmpty)(e.segments[t])&&e.segments.splice(t,1)}(e)}},3393:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeSegment=t.createNormalizeSegmentContext=t.normalizeSingleSegment=t.normalizeAllSegments=void 0;var o=r(7084),n=" ",a=" ",l=/^\u0020+/,i=/\u0020+$/;function s(e){return Object.assign(null!=e?e:{},{textSegments:[],ignoreLeadingSpaces:!0,ignoreTrailingSpaces:!0,lastInlineSegment:void 0,lastTextSegment:void 0})}function c(e,t){switch(e.segmentType){case"Br":d(t.textSegments,t.lastInlineSegment),u(t.lastTextSegment,t.lastInlineSegment),s(t);break;case"Entity":case"General":case"Image":t.lastInlineSegment=e,t.ignoreLeadingSpaces=!1;break;case"Text":t.textSegments.push(e),t.lastInlineSegment=e,t.lastTextSegment=e;var r=e.text.substring(0,1),c=e.text.substr(-1);(0,o.hasSpacesOnly)(e.text)||(r==n&&(e.text=e.text.replace(l,t.ignoreLeadingSpaces?"":a)),c==n&&(e.text=e.text.replace(i,t.ignoreTrailingSpaces?n:a))),t.ignoreLeadingSpaces=c==n}}function d(e,t){e.forEach((function(e){if(e!=t){var r=e.text;r.substr(-1)==a&&r.length>1&&r.substr(-2,1)!=n&&(e.text=r.substring(0,r.length-1)+n)}}))}function u(e,t){e&&e==t&&(null==e?void 0:e.text.substr(-1))==n&&(e.text=e.text.replace(i,""))}t.normalizeAllSegments=function(e){var t=s();e.segments.forEach((function(e){c(e,t)})),d(t.textSegments,t.lastInlineSegment),u(t.lastTextSegment,t.lastInlineSegment)},t.normalizeSingleSegment=function(e,t){void 0===t&&(t=!1);var r=s();r.ignoreTrailingSpaces=t,c(e,r)},t.createNormalizeSegmentContext=function(){return s()},t.normalizeSegment=c},5960:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unwrapBlock=void 0;var o=r(7582),n=r(3963);t.unwrapBlock=function(e,t){var r,a,l=null!==(a=null==e?void 0:e.blocks.indexOf(t))&&void 0!==a?a:-1;l>=0&&(t.blocks.forEach(n.setParagraphNotImplicit),null==e||(r=e.blocks).splice.apply(r,(0,o.__spreadArray)([l,1],(0,o.__read)(t.blocks),!1)))}},7826:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createBr=void 0;var o=r(7582);t.createBr=function(e){return{segmentType:"Br",format:e?(0,o.__assign)({},e):{}}}},5733:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelDocument=void 0,t.createContentModelDocument=function(e){var t={blockGroupType:"Document",blocks:[]};return e&&(t.format=e),t}},7110:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDivider=void 0;var o=r(7582);t.createDivider=function(e,t){return{blockType:"Divider",tagName:e,format:t?(0,o.__assign)({},t):{}}}},1033:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createEntity=void 0;var o=r(7582);t.createEntity=function(e,t,r,n,a){return{segmentType:"Entity",blockType:"Entity",format:(0,o.__assign)({},n),id:a,type:r,isReadonly:t,wrapper:e}}},2766:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createFormatContainer=void 0;var o=r(7582);t.createFormatContainer=function(e,t){return{blockType:"BlockGroup",blockGroupType:"FormatContainer",tagName:e,blocks:[],format:(0,o.__assign)({},t||{})}}},9237:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createGeneralBlock=void 0,t.createGeneralBlock=function(e){return{blockType:"BlockGroup",blockGroupType:"General",element:e,blocks:[],format:{}}}},8885:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createGeneralSegment=void 0;var o=r(7582);t.createGeneralSegment=function(e,t){return{blockType:"BlockGroup",blockGroupType:"General",segmentType:"General",format:t?(0,o.__assign)({},t):{},blocks:[],element:e}}},5566:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createImage=void 0;var o=r(7582);t.createImage=function(e,t){return{segmentType:"Image",src:e,format:t?(0,o.__assign)({},t):{},dataset:{}}}},7724:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createListItem=void 0;var o=r(1285),n=r(5114);t.createListItem=function(e,t){return{blockType:"BlockGroup",blockGroupType:"ListItem",blocks:[],levels:e?e.map((function(e){return(0,o.createListLevel)(e.listType,e.format,e.dataset)})):[],formatHolder:(0,n.createSelectionMarker)(t),format:{}}}},1285:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createListLevel=void 0;var o=r(7582);t.createListLevel=function(e,t,r){return{listType:e,format:(0,o.__assign)({},t),dataset:(0,o.__assign)({},r)}}},5092:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createParagraph=void 0;var o=r(7582);t.createParagraph=function(e,t,r,n){var a={blockType:"Paragraph",segments:[],format:t?(0,o.__assign)({},t):{}};return r&&Object.keys(r).length>0&&(a.segmentFormat=(0,o.__assign)({},r)),e&&(a.isImplicit=!0),n&&(a.decorator={tagName:n.tagName,format:(0,o.__assign)({},n.format)}),a}},24:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createParagraphDecorator=void 0;var o=r(7582);t.createParagraphDecorator=function(e,t){return{tagName:e.toLocaleLowerCase(),format:(0,o.__assign)({},t||{})}}},5114:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createSelectionMarker=void 0;var o=r(7582);t.createSelectionMarker=function(e){return{segmentType:"SelectionMarker",isSelected:!0,format:e?(0,o.__assign)({},e):{}}}},988:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTable=void 0;var o=r(7582);t.createTable=function(e,t){for(var r=[],n=0;n{Object.defineProperty(t,"__esModule",{value:!0}),t.createTableCell=void 0;var o=r(7582);t.createTableCell=function(e,t,r,n){var a="number"==typeof e?e>1:!!e,l="number"==typeof t?t>1:!!t;return{blockGroupType:"TableCell",blocks:[],format:n?(0,o.__assign)({},n):{},spanLeft:a,spanAbove:l,isHeader:!!r,dataset:{}}}},840:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createText=void 0;var o=r(7582);t.createText=function(e,t){return{segmentType:"Text",text:e,format:t?(0,o.__assign)({},t):{}}}},4266:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentModelToDom=void 0;var o=r(8530),n=r(2347),a=r(3233);function l(e){var t,r;return e.block&&(r=e.segment?(0,a.isNodeOfType)(e.segment,3)?new n.Position(e.segment,(null===(t=e.segment.nodeValue)||void 0===t?void 0:t.length)||0):new n.Position(e.segment.parentNode,(0,n.toArray)(e.segment.parentNode.childNodes).indexOf(e.segment)+1):new n.Position(e.block,0)),(0,a.isNodeOfType)(null==r?void 0:r.node,11)&&(r=null==r?void 0:r.normalize()),r}t.contentModelToDom=function(e,t,r,a,i){var s=(0,o.createModelToDomContext)(a,i);s.modelHandlers.blockGroupChildren(e,t,r,s);var c=function(e){var t,r,o=e.regularSelection,a=o.start,i=o.end,s=e.tableSelection,c=e.imageSelection;if(null==c?void 0:c.image)return{type:2,ranges:[(0,n.createRange)(c.image)],areAllCollapsed:!1,image:c.image};if((t=a&&l(a))&&(r=i&&l(i))){var d=(0,n.createRange)(t,r);return{type:0,ranges:[(0,n.createRange)(t,r)],areAllCollapsed:d.collapsed}}return(null==s?void 0:s.table)?{type:1,ranges:[],areAllCollapsed:!1,table:s.table,coordinates:{firstCell:s.firstCell,lastCell:s.lastCell}}:null}(s);return t.normalize(),c}},8530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createModelToDomContext=void 0;var o=r(7582),n=r(9550),a=r(976),l=r(8659);t.createModelToDomContext=function(e,t){return t=t||{},(0,o.__assign)((0,o.__assign)({},e),{regularSelection:{current:{block:null,segment:null}},listFormat:{threadItemCounts:[],nodeStack:[]},implicitFormat:{},formatAppliers:(0,l.getFormatAppliers)(t.formatApplierOverride,t.additionalFormatAppliers),modelHandlers:(0,o.__assign)((0,o.__assign)({},n.defaultContentModelHandlers),t.modelHandlerOverride||{}),defaultImplicitFormatMap:(0,o.__assign)((0,o.__assign)({},a.defaultImplicitFormatMap),t.defaultImplicitFormatOverride||{}),defaultModelHandlers:n.defaultContentModelHandlers,defaultFormatAppliers:l.defaultFormatAppliers,onNodeCreated:t.onNodeCreated})}},9550:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultContentModelHandlers=void 0;var o=r(3377),n=r(7352),a=r(6830),l=r(1379),i=r(736),s=r(740),c=r(3035),d=r(1920),u=r(3378),f=r(6026),m=r(1351),p=r(3913),v=r(1596),g=r(8109),h=r(8906);t.defaultContentModelHandlers={block:o.handleBlock,blockGroupChildren:n.handleBlockGroupChildren,br:a.handleBr,entity:i.handleEntity,general:c.handleGeneralModel,divider:l.handleDivider,image:d.handleImage,list:u.handleList,listItem:f.handleListItem,paragraph:m.handleParagraph,formatContainer:s.handleFormatContainer,segment:p.handleSegment,segmentDecorator:v.handleSegmentDecorator,table:g.handleTable,text:h.handleText}},3377:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBlock=void 0,t.handleBlock=function(e,t,r,o,n){var a=o.modelHandlers;switch(r.blockType){case"Table":n=a.table(e,t,r,o,n);break;case"Paragraph":n=a.paragraph(e,t,r,o,n);break;case"Entity":n=a.entity(e,t,r,o,n);break;case"Divider":n=a.divider(e,t,r,o,n);break;case"BlockGroup":switch(r.blockGroupType){case"General":n=a.general(e,t,r,o,n);break;case"FormatContainer":n=a.formatContainer(e,t,r,o,n);break;case"ListItem":n=a.listItem(e,t,r,o,n)}}return n}},7352:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBlockGroupChildren=void 0,t.handleBlockGroupChildren=function(e,t,r,o){var n,a=o.listFormat,l=a.nodeStack,i=t.firstChild;try{for(r.blocks.forEach((function(r,n){0!=n&&"BlockGroup"==r.blockType&&"ListItem"==r.blockGroupType||(a.nodeStack=[]),i=o.modelHandlers.block(e,t,r,o,i)}));i;){var s=i.nextSibling;null===(n=i.parentNode)||void 0===n||n.removeChild(i),i=s}}finally{a.nodeStack=l}}},6830:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBr=void 0;var o=r(8826);t.handleBr=function(e,t,r,n){var a=e.createElement("br"),l=e.createElement("span");l.appendChild(a),t.appendChild(l),(0,o.handleSegmentCommon)(e,a,l,r,n)}},1379:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleDivider=void 0;var o=r(7908),n=r(5381);t.handleDivider=function(e,t,r,a,l){var i,s=a.allowCacheElement?r.cachedElement:void 0;return s?l=(0,n.reuseCachedElement)(t,s,l):(s=e.createElement(r.tagName),a.allowCacheElement&&(r.cachedElement=s),t.insertBefore(s,l),(0,o.applyFormat)(s,a.formatAppliers.divider,r.format,a),r.size&&s.setAttribute("size",r.size)),null===(i=a.onNodeCreated)||void 0===i||i.call(a,r,s),l}},736:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleEntity=void 0;var o=r(7582),n=r(7908),a=r(5381),l=r(2347);t.handleEntity=function(e,t,r,i,s){var c,d=r.id,u=r.type,f=r.isReadonly,m=r.format,p=r.wrapper;i.allowCacheElement||((p=p.cloneNode(!0)).style.color=p.style.color||"inherit",p.style.backgroundColor=p.style.backgroundColor||"inherit");var v=d&&u?{wrapper:p,id:d,type:u,isReadonly:!!f}:null,g=!(0,l.isBlockElement)(p);if(v&&(0,l.commitEntity)(p,v.type,v.isReadonly,v.id),s=(0,a.reuseCachedElement)(t,p,s),g&&(0,l.getObjectKeys)(m).length>0){var h=(0,l.wrap)(p,"span");(0,n.applyFormat)(h,i.formatAppliers.segment,m,i)}if(i.addDelimiterForEntity&&g&&f){var b=(0,o.__read)((0,l.addDelimiters)(p),1)[0];i.regularSelection.current.segment=b}else g&&(i.regularSelection.current.segment=p);return null===(c=i.onNodeCreated)||void 0===c||c.call(i,r,p),s}},740:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleFormatContainer=void 0;var o=r(7908),n=r(4451),a=r(5381),l=r(3348);t.handleFormatContainer=function(e,t,r,i,s){var c,d=i.allowCacheElement?r.cachedElement:void 0;if(d)s=(0,a.reuseCachedElement)(t,d,s),i.modelHandlers.blockGroupChildren(e,d,r,i);else if(!(0,n.isBlockGroupEmpty)(r)){var u=e.createElement(r.tagName);i.allowCacheElement&&(r.cachedElement=u),t.insertBefore(u,s),(0,l.stackFormat)(i,r.tagName,(function(){(0,o.applyFormat)(u,i.formatAppliers.container,r.format,i),(0,o.applyFormat)(u,i.formatAppliers.segmentOnBlock,r.format,i),(0,o.applyFormat)(u,i.formatAppliers.container,r.format,i)})),"pre"==r.tagName?(0,l.stackFormat)(i,"pre *",(function(){i.modelHandlers.blockGroupChildren(e,u,r,i)})):i.modelHandlers.blockGroupChildren(e,u,r,i),d=u}return d&&(null===(c=i.onNodeCreated)||void 0===c||c.call(i,r,d)),s}},3035:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleGeneralModel=void 0;var o=r(8826),n=r(183),a=r(3233),l=r(5381),i=r(2347);t.handleGeneralModel=function(e,t,r,s,c){var d,u=r.element;if(c&&u.parentNode==t?c=(0,l.reuseCachedElement)(t,u,c):(u=u.cloneNode(),r.element=u,t.insertBefore(u,c)),(0,n.isGeneralSegment)(r)&&(0,a.isNodeOfType)(u,1)){var f=(0,i.wrap)(u,"span");(0,o.handleSegmentCommon)(e,u,f,r,s)}else null===(d=s.onNodeCreated)||void 0===d||d.call(s,r,u);return s.modelHandlers.blockGroupChildren(e,u,r,s),c}},1920:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleImage=void 0;var o=r(7908),n=r(8826),a=r(8704);t.handleImage=function(e,t,r,l){var i=e.createElement("img"),s=document.createElement("span");t.appendChild(s),s.appendChild(i),i.src=r.src,r.alt&&(i.alt=r.alt),r.title&&(i.title=r.title),(0,o.applyFormat)(i,l.formatAppliers.image,r.format,l),(0,o.applyFormat)(i,l.formatAppliers.dataset,r.dataset,l);var c=r.format,d=c.width,u=c.height,f=d?(0,a.parseValueWithUnit)(d):0,m=u?(0,a.parseValueWithUnit)(u):0;f>0&&(i.width=f),m>0&&(i.height=m),r.isSelectedAsImageSelection&&(l.imageSelection={image:i}),(0,n.handleSegmentCommon)(e,i,s,r,l)}},3378:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleList=void 0;var o=r(7582),n=r(7908),a=r(2438),l=r(2362);t.handleList=function(e,t,r,i,s){var c,d,u=0,f=i.listFormat.nodeStack;for(0==f.length&&f.push({node:t});u{Object.defineProperty(t,"__esModule",{value:!0}),t.handleListItem=void 0;var o=r(7908),n=r(154),a=r(3963),l=r(2347),i=r(2362);t.handleListItem=function(e,t,r,s,c){var d,u;c=s.modelHandlers.list(e,t,r,s,c);var f=s.listFormat.nodeStack,m=(null===(d=null==f?void 0:f[(null==f?void 0:f.length)-1])||void 0===d?void 0:d.node)||t,p=e.createElement("li"),v=r.levels[r.levels.length-1];return m.insertBefore(p,(null==c?void 0:c.parentNode)==m?c:null),v?((0,o.applyFormat)(p,s.formatAppliers.listItemElement,r.format,s),(0,o.applyFormat)(p,s.formatAppliers.segment,r.formatHolder.format,s),(0,o.applyFormat)(p,s.formatAppliers.listItem,v.format,s),(0,i.updateListMetadata)(v,(function(e){return(0,o.applyFormat)(p,[n.listItemMetadataFormatHandler.apply],e||{},s),e})),s.modelHandlers.blockGroupChildren(e,p,r,s)):(r.blocks.forEach(a.setParagraphNotImplicit),s.modelHandlers.blockGroupChildren(e,p,r,s),(0,l.unwrap)(p)),null===(u=s.onNodeCreated)||void 0===u||u.call(s,r,p),c}},1351:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleParagraph=void 0;var o=r(7582),n=r(7908),a=r(2347),l=r(6976),i=r(5381),s=r(3348);t.handleParagraph=function(e,t,r,c,d){var u,f,m=c.allowCacheElement?r.cachedElement:void 0;return m?d=(0,i.reuseCachedElement)(t,m,d):(0,s.stackFormat)(c,(null===(u=r.decorator)||void 0===u?void 0:u.tagName)||null,(function(){var i,u,f=!r.isImplicit||!!r.decorator||(0,a.getObjectKeys)(r.format).length>0&&r.segments.some((function(e){return"SelectionMarker"!=e.segmentType})),p=f?(0,o.__assign)((0,o.__assign)({},(null===(i=r.decorator)||void 0===i?void 0:i.format)||{}),r.segmentFormat):{};m=e.createElement((null===(u=r.decorator)||void 0===u?void 0:u.tagName)||"div"),t.insertBefore(m,d),c.regularSelection.current={block:f?m:m.parentNode,segment:null};var v=function(){var t=m;if(t){var n=r.segments[0];"SelectionMarker"==(null==n?void 0:n.segmentType)&&c.modelHandlers.text(e,t,(0,o.__assign)((0,o.__assign)({},n),{segmentType:"Text",text:""}),c),r.segments.forEach((function(r){c.modelHandlers.segment(e,t,r,c)}))}};f?((0,s.stackFormat)(c,p,v),(0,n.applyFormat)(m,c.formatAppliers.block,r.format,c),(0,n.applyFormat)(m,c.formatAppliers.container,r.format,c),(0,n.applyFormat)(m,c.formatAppliers.segmentOnBlock,p,c)):v(),(0,l.optimize)(m),d=m.nextSibling,f?c.allowCacheElement&&(r.cachedElement=m):(0,a.unwrap)(m)})),m&&(null===(f=c.onNodeCreated)||void 0===f||f.call(c,r,m)),d}},3913:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegment=void 0;var o=r(7582);t.handleSegment=function(e,t,r,n){var a=n.regularSelection;switch(r.isSelected&&!a.start&&(a.start=(0,o.__assign)({},a.current)),r.segmentType){case"Text":n.modelHandlers.text(e,t,r,n);break;case"Br":n.modelHandlers.br(e,t,r,n);break;case"Image":n.modelHandlers.image(e,t,r,n);break;case"General":n.modelHandlers.general(e,t,r,n,null);break;case"Entity":n.modelHandlers.entity(e,t,r,n,null)}r.isSelected&&a.start&&(a.end=(0,o.__assign)({},a.current))}},1596:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegmentDecorator=void 0;var o=r(7908),n=r(2347),a=r(3348);t.handleSegmentDecorator=function(e,t,r,l){var i=r.code,s=r.link;s&&(0,a.stackFormat)(l,"a",(function(){var e,r=document.createElement("a");(0,n.moveChildNodes)(r,t),t.appendChild(r),(0,o.applyFormat)(r,l.formatAppliers.link,s.format,l),(0,o.applyFormat)(r,l.formatAppliers.dataset,s.dataset,l),null===(e=l.onNodeCreated)||void 0===e||e.call(l,s,r)})),i&&(0,a.stackFormat)(l,"code",(function(){var e,r=document.createElement("code");(0,n.moveChildNodes)(r,t),t.appendChild(r),(0,o.applyFormat)(r,l.formatAppliers.code,i.format,l),null===(e=l.onNodeCreated)||void 0===e||e.call(l,i,r)}))}},8109:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleTable=void 0;var o=r(7908),n=r(6245),a=r(4451),l=r(2347),i=r(5381);t.handleTable=function(e,t,r,s,c){var d,u,f,m,p,v;if((0,a.isBlockEmpty)(r))return c;var g=s.allowCacheElement?r.cachedElement:void 0;g?(c=(0,i.reuseCachedElement)(t,g,c),(0,l.moveChildNodes)(g)):(g=e.createElement("table"),s.allowCacheElement&&(r.cachedElement=g),t.insertBefore(g,c),(0,o.applyFormat)(g,s.formatAppliers.block,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.table,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.tableBorder,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.dataset,r.dataset,s)),null===(d=s.onNodeCreated)||void 0===d||d.call(s,r,g);var h=e.createElement("tbody");g.appendChild(h);for(var b=0;b1&&(S.rowSpan=O),M>1&&(S.colSpan=M),(!P.cachedElement||P.format.useBorderBox&&(0,n.hasMetadata)(r))&&(T>0&&!S.style.width&&(S.style.width=T+"px"),w>0&&!S.style.height&&(S.style.height=w+"px")),P.cachedElement||(s.allowCacheElement&&(P.cachedElement=S),(0,o.applyFormat)(S,s.formatAppliers.block,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.tableCell,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.tableCellBorder,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.dataset,P.dataset,s)),s.modelHandlers.blockGroupChildren(e,S,P,s),null===(v=s.onNodeCreated)||void 0===v||v.call(s,P,S)}}}}return c}},8906:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleText=void 0;var o=r(8826);t.handleText=function(e,t,r,n){var a=e.createTextNode(r.text),l=e.createElement("span");t.appendChild(l),l.appendChild(a),(0,o.handleSegmentCommon)(e,a,l,r,n)}},2920:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeNode=void 0;var o=r(3233),n=["SPAN","B","EM","I","U","SUB","SUP","STRIKE","S","A","CODE"];function a(e,t){var r=e.attributes,o=t.attributes;if(r.length!=o.length)return!1;for(var n=0;n=0&&a(t,r)){for(;r.firstChild;)t.appendChild(r.firstChild);r.parentNode.removeChild(r)}else t=r}}},6976:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.optimize=void 0;var o=r(3233),n=r(2920),a=r(9486);t.optimize=function e(t){if(!(0,o.isNodeOfType)(t,1)||!t.classList.contains("_Entity")){(0,a.removeUnnecessarySpan)(t),(0,n.mergeNode)(t);for(var r=t.firstChild;r;r=r.nextSibling)e(r)}}},9486:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeUnnecessarySpan=void 0;var o=r(3233);t.removeUnnecessarySpan=function(e){for(var t=e.firstChild;t;)if((0,o.isNodeOfType)(t,1)&&"SPAN"==t.tagName&&0==t.attributes.length){var r=t,n=t.nextSibling;for(t=t.nextSibling;r.lastChild;){var a=r.lastChild;e.insertBefore(a,n),n=a}e.removeChild(r)}else t=t.nextSibling}},7908:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.applyFormat=void 0,t.applyFormat=function(e,t,r,o){t.forEach((function(t){null==t||t(r,e,o)}))}},8826:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegmentCommon=void 0;var o=r(7908);t.handleSegmentCommon=function(e,t,r,n,a){var l;t.firstChild||(a.regularSelection.current.segment=t),(0,o.applyFormat)(r,a.formatAppliers.styleBasedSegment,n.format,a),a.modelHandlers.segmentDecorator(e,r,n,a),(0,o.applyFormat)(r,a.formatAppliers.elementBasedSegment,n.format,a),null===(l=a.onNodeCreated)||void 0===l||l.call(a,n,t)}},5381:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeNode=t.reuseCachedElement=void 0;var o=r(2347),n=r(3233);t.reuseCachedElement=function(e,t,r){var a,l;if(t.parentNode==e){for(;r&&r!=t&&(l=r,!(0,n.isNodeOfType)(l,1)||!(0,o.getEntityFromElement)(l));){var i=r.nextSibling;null===(a=r.parentNode)||void 0===a||a.removeChild(r),r=i}r&&r==t?r=r.nextSibling:e.insertBefore(t,r)}else e.insertBefore(t,r);return r},t.removeNode=function(e){var t,r=e.nextSibling;return null===(t=e.parentNode)||void 0===t||t.removeChild(e),r}},3348:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.stackFormat=void 0;var o=r(7582);t.stackFormat=function(e,t,r){var n="string"==typeof t?e.defaultImplicitFormatMap[t]:t;if(n){var a=e.implicitFormat;try{e.implicitFormat=(0,o.__assign)((0,o.__assign)({},a),n),r()}finally{e.implicitFormat=a}}else r()}},1934:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tablePreProcessor=void 0;var o=r(2347),n=r(1246),a=r(2812);t.tablePreProcessor=function(e,t,r){var l=function(e,t){return(0,n.hasMetadata)(e)||t.isInSelection||(0,o.contains)(e,(0,a.getSelectionRootNode)(t.rangeEx),!0)}(t,r)?n.tableProcessor:n.entityProcessor;l(e,t,r)}},9843:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.combineBorderValue=t.extractBorderValues=void 0;var r=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"],o=/^(thin|medium|thick|[\d\.]+\w*)$/;t.extractBorderValues=function(e){var t={};return(e||"").replace(/, /g,",").split(" ").forEach((function(e){r.indexOf(e)>=0&&!t.style?t.style=e:o.test(e)&&!t.width?t.width=e:e&&!t.color&&(t.color=e)})),t},t.combineBorderValue=function(e){return[e.width||"",e.style||"",e.color||""].join(" ").trim()||"none"}},5866:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateImageMetadata=void 0;var o=r(1246),n=r(2347),a=(0,n.createNumberDefinition)(),l=(0,n.createObjectDefinition)({widthPx:a,heightPx:a,leftPercent:a,rightPercent:a,topPercent:a,bottomPercent:a,angleRad:a,src:(0,n.createStringDefinition)(),naturalHeight:a,naturalWidth:a});t.updateImageMetadata=function(e,t){return(0,o.updateMetadata)(e,t,l)}},860:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTableCellMetadata=void 0;var o=r(2347),n=r(1246),a=(0,o.createObjectDefinition)({bgColorOverride:(0,o.createBooleanDefinition)(!0),vAlignOverride:(0,o.createBooleanDefinition)(!0)},!1,!0);t.updateTableCellMetadata=function(e,t){return(0,n.updateMetadata)(e,t,a)}},5165:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTableMetadata=void 0;var o=r(1246),n=r(2347),a=(0,n.createStringDefinition)(!1,void 0,!0),l=(0,n.createBooleanDefinition)(!1),i=(0,n.createObjectDefinition)({topBorderColor:a,bottomBorderColor:a,verticalBorderColor:a,hasHeaderRow:l,headerRowColor:a,hasFirstColumn:l,hasBandedColumns:l,hasBandedRows:l,bgColorEven:a,bgColorOdd:a,tableBorderFormat:(0,n.createNumberDefinition)(!1,void 0,0,8),verticalAlign:a},!1,!0);t.updateTableMetadata=function(e,t){return(0,o.updateMetadata)(e,t,i)}},8778:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeText=t.isSpace=t.isPunctuation=void 0;var r=/[\u2000\u2009\u200a​\u200b​\u202f\u205f​\u3000\s\t\r\n]/gm;t.isPunctuation=function(e){return'.,?!:"()[]\\/'.indexOf(e)>=0},t.isSpace=function(e){var t,o=null!==(t=null==e?void 0:e.charCodeAt(0))&&void 0!==t?t:0;return 160==o||32==o||r.test(e)},t.normalizeText=function(e,t){return e.replace(t?/^\u0020+/:/\u0020+$/," ")}},6593:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(8974),a=function(e){function t(t,r){return void 0===r&&(r={}),e.call(this,t,r,n.createContentModelEditorCore)||this}return(0,o.__extends)(t,e),t.prototype.createContentModel=function(e,t){var r=this.getCore();return r.api.createContentModel(r,e,t)},t.prototype.setContentModel=function(e,t){var r=this.getCore();r.api.setContentModel(r,e,t)},t.prototype.cacheContentModel=function(e){var t=this.getCore();t.lifecycle.shadowEditFragment||(t.cachedModel=e||void 0,t.cachedRangeEx=void 0)},t.prototype.getContentModelDefaultFormat=function(){return this.getCore().defaultFormat},t}(r(2347).EditorBase);t.default=a},5427:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModel=void 0;var o=r(7582),n=r(1690),a=r(1246),l=r(1934);t.createContentModel=function(e,t,r){var i=r?null:e.cachedModel;return i&&e.lifecycle.shadowEditFragment&&(i=(0,n.cloneModel)(i,{includeCachedElement:!0})),i||function(e,t,r){var n=(0,o.__assign)((0,o.__assign)({},e.defaultDomToModelOptions),t);return n.processorOverride=(0,o.__assign)((0,o.__assign)({table:l.tablePreProcessor},n.processorOverride),null==t?void 0:t.processorOverride),(0,a.domToContentModel)(e.contentDiv,n,e.api.createEditorContext(e),r||e.api.getSelectionRangeEx(e))}(e,t,r)}},7832:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorContext=void 0,t.createEditorContext=function(e){var t=e.lifecycle,r=e.defaultFormat,o=e.darkColorHandler,n=e.addDelimiterForEntity,a=e.contentDiv,l={isDarkMode:t.isDarkMode,defaultFormat:r,darkColorHandler:o,addDelimiterForEntity:n,allowCacheElement:!0};return function(e,t){var r,o=null===(r=null==e?void 0:e.ownerDocument.defaultView)||void 0===r?void 0:r.getComputedStyle(e);"rtl"==(null==o?void 0:o.direction)&&(t.isRootRtl=!0)}(a,l),function(e,t){var r,o=(null===(r=null==e?void 0:e.getBoundingClientRect())||void 0===r?void 0:r.width)||0,n=e.offsetWidth;n>0&&o>0&&(t.zoomScale=Math.round(o/n*100)/100)}(a,l),l}},1971:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRangeEx=void 0,t.getSelectionRangeEx=function(e){var t;return null!==(t=e.cachedRangeEx)&&void 0!==t?t:e.originalApi.getSelectionRangeEx(e)}},7934:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setContentModel=void 0;var o=r(7582),n=r(1246);t.setContentModel=function(e,t,r){var a=(0,n.contentModelToDom)(e.contentDiv.ownerDocument,e.contentDiv,t,e.api.createEditorContext(e),(0,o.__assign)((0,o.__assign)({},e.defaultModelToDomOptions),r||{}));return e.lifecycle.shadowEditFragment||(e.api.select(e,a),e.cachedRangeEx=a||void 0),a}},3515:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.switchShadowEdit=void 0;var o=r(2347);t.switchShadowEdit=function(e,t){var r=e;if(t!=!!r.lifecycle.shadowEditFragment)if(t){r.cachedModel||(r.cachedModel=r.api.createContentModel(r));var n=r.api.getSelectionRange(r,!0),a=r.contentDiv.ownerDocument.createDocumentFragment(),l=n&&(0,o.getSelectionPath)(r.contentDiv,n);r.api.triggerEvent(r,{eventType:17,fragment:a,selectionPath:l},!1),r.lifecycle.shadowEditSelectionPath=l,r.lifecycle.shadowEditFragment=a}else r.lifecycle.shadowEditFragment=null,r.lifecycle.shadowEditSelectionPath=null,r.api.triggerEvent(r,{eventType:18},!1),r.cachedModel&&r.api.setContentModel(r,r.cachedModel)}},6093:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.onNodeCreated=void 0;var o=r(7582),n=r(5915),a=r(1690),l=r(1246),i=r(473),s=r(2511),c=r(5098),d=r(2347),u=function(){function e(e){var t=this;this.state=e,this.editor=null,this.disposer=null,this.onPaste=function(e){if(t.editor&&function(e){return!!e.clipboardData}(e)){var r=t.editor,o=e.clipboardData;(null==o?void 0:o.items)&&(e.preventDefault(),(0,d.extractClipboardItems)((0,d.toArray)(o.items),{allowedCustomPasteType:t.state.allowedCustomPasteType},!0).then((function(e){r.isDisposed()||(0,n.default)(r,e)})))}}}return e.prototype.getName=function(){return"ContentModelCopyPaste"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=this.editor.addDomEventHandler({paste:function(e){return t.onPaste(e)},copy:function(e){return t.onCutCopy(e,!1)},cut:function(e){return t.onCutCopy(e,!0)}})},e.prototype.dispose=function(){this.disposer&&this.disposer(),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onCutCopy=function(e,r){if(this.editor){var n=this.editor.getSelectionRangeEx();if(n&&!n.areAllCollapsed){var u=this.editor.createContentModel(),f=(0,a.cloneModel)(u);1===n.type&&(0,c.iterateSelections)([f],(function(e,t){if(null==t?void 0:t.table){var r=null==t?void 0:t.table;return r.rows=r.rows.map((function(e){return(0,o.__assign)((0,o.__assign)({},e),{cells:e.cells.filter((function(e){return e.isSelected}))})})).filter((function(e){return e.cells.length>0})),!0}return!1}));var m=this.getTempDiv(this.editor),p=function(e,t){var r;if(!e)return null;var o=null;if(1===e.type&&e.coordinates){var n=t.querySelector("#"+e.table.id),a=1==(null===(r=n.parentElement)||void 0===r?void 0:r.childElementCount)?n.parentElement:n;o=(0,d.createRange)(a)}else if(2===e.type){var l=t.querySelector("#"+e.image.id);l&&(o=(0,d.createRange)(l))}else o=e.ranges[0];return o}((0,l.contentModelToDom)(m.ownerDocument,m,f,void 0,{onNodeCreated:t.onNodeCreated}),m);p&&((p=this.editor.triggerPluginEvent(9,{clonedRoot:m,range:p,rawEvent:e,isCut:r}).range)&&(0,d.addRangeToSelection)(p),this.editor.runAsync((function(e){var t;(t=m).style.backgroundColor="",t.style.color="",t.style.display="none",(0,d.moveChildNodes)(t),e.focus(),e.select(n),r&&(0,s.formatWithContentModel)(e,"cut",(function(e,t){return 2==(0,i.deleteSelection)(e,[],t).deleteResult&&(0,l.normalizeContentModel)(e),!0}),{changeSource:"Cut"})})))}}},e.prototype.getTempDiv=function(e){var t=e.getCustomData("CopyPasteTempDiv",(function(){var t=(0,d.createElement)(3,e.getDocument());return e.getDocument().body.appendChild(t),t}),(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}));return t.style.backgroundColor="white",t.style.color="black",t.childNodes.forEach((function(e){return t.removeChild(e)})),t.style.display="",t.focus(),t},e}();t.default=u,t.onNodeCreated=function(e,t){(0,d.safeInstanceOf)(t,"HTMLTableElement")&&(0,d.wrap)(t,"div")}},2517:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.prototype.getName=function(){return"ContentModelTypeInContainer"},e.prototype.initialize=function(){},e.prototype.dispose=function(){},e}();t.default=r},8974:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.promoteToContentModelEditorCore=t.createContentModelEditorCore=void 0;var o=r(7582),n=r(6093),a=r(2909),l=r(4e3),i=r(2517),s=r(5427),c=r(7832),d=r(2347),u=r(1971),f=r(7934),m=r(3515);function p(e,t){var r=e;!function(e){e.lifecycle.defaultFormat=e.lifecycle.defaultFormat||{},e.defaultFormat=function(e){var t,r,o,n=null!==(t=e.lifecycle.defaultFormat)&&void 0!==t?t:{};return{fontWeight:n.bold?"bold":void 0,italic:n.italic||void 0,underline:n.underline||void 0,fontFamily:n.fontFamily||void 0,fontSize:n.fontSize||void 0,textColor:(null===(r=n.textColors)||void 0===r?void 0:r.lightModeColor)||n.textColor||void 0,backgroundColor:(null===(o=n.backgroundColors)||void 0===o?void 0:o.lightModeColor)||n.backgroundColor||void 0}}(e)}(r),function(e,t){var r=e.lifecycle.experimentalFeatures;e.defaultDomToModelOptions=t.defaultDomToModelOptions||{},e.defaultModelToDomOptions=t.defaultModelToDomOptions||{},e.addDelimiterForEntity=(0,d.isFeatureEnabled)(r,"InlineEntityReadOnlyDelimiters")}(r,t),function(e){e.api.createEditorContext=c.createEditorContext,e.api.createContentModel=s.createContentModel,e.api.setContentModel=f.setContentModel,e.api.switchShadowEdit=m.switchShadowEdit,e.api.getSelectionRangeEx=u.getSelectionRangeEx,e.originalApi.createEditorContext=c.createEditorContext,e.originalApi.createContentModel=s.createContentModel,e.originalApi.setContentModel=f.setContentModel}(r)}t.createContentModelEditorCore=function(e,t){var r=(0,o.__assign)((0,o.__assign)({},t),{plugins:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(t.plugins||[]),!1),[new l.default,new a.default],!1),corePluginOverride:(0,o.__assign)({typeInContainer:new i.default,copyPaste:(0,d.isFeatureEnabled)(t.experimentalFeatures,"ContentModelPaste")?new n.default({allowedCustomPasteType:t.allowedCustomPasteType||[]}):void 0},t.corePluginOverride||{})}),s=(0,d.createEditorCore)(e,r);return p(s,r),s},t.promoteToContentModelEditorCore=p},1053:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return!!e.createContentModel}},2909:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(5634),a=r(473),l=r(2511),i=r(2976),s=r(1246),c=r(2347),d=function(){function e(){this.editor=null,this.hasDefaultFormat=!1}return e.prototype.getName=function(){return"ContentModelEdit"},e.prototype.initialize=function(e){this.editor=e;var t=this.editor.getContentModelDefaultFormat();this.hasDefaultFormat=(0,c.getObjectKeys)(t).filter((function(e){return void 0!==t[e]})).length>0},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor)switch(e.eventType){case 0:this.handleKeyDownEvent(this.editor,e);break;case 7:case 6:case 22:this.editor.cacheContentModel(null)}},e.prototype.handleKeyDownEvent=function(e,t){var r=t.rawEvent,o=r.which;if(r.defaultPrevented||t.handledByEditFeature)e.cacheContentModel(null);else switch(o){case 8:case 46:var a=e.getSelectionRangeEx(),l=0==a.type?a.ranges[0]:null;this.shouldDeleteWithContentModel(l,r)?(0,n.default)(e,r):e.cacheContentModel(null);break;default:((0,c.isCharacterValue)(r)||"Process"==r.key)&&this.hasDefaultFormat&&this.tryApplyDefaultFormat(e),e.cacheContentModel(null)}},e.prototype.tryApplyDefaultFormat=function(e){for(var t,r,o=this,n=e.getSelectionRangeEx(),i=0==(null==n?void 0:n.type)?n.ranges[0]:null,d=i?c.Position.getStart(i):null,u=null!==(t=null==d?void 0:d.node)&&void 0!==t?t:null;u&&e.contains(u);){if((0,s.isNodeOfType)(u,1)&&(null===(r=u.getAttribute)||void 0===r?void 0:r.call(u,"style")))return;if((0,c.isBlockElement)(u))break;u=u.parentNode}(0,l.formatWithContentModel)(e,"input",(function(t,r){var n=(0,a.deleteSelection)(t,[],r);if(2==n.deleteResult)return(0,s.normalizeContentModel)(t),e.addUndoSnapshot(),!0;if(0==n.deleteResult&&n.insertPoint&&d){var l=n.insertPoint,i=l.paragraph,c=l.path,u=l.marker,f=c[0].blocks,m=f.length,p=f.indexOf(i);if(i.isImplicit&&1==i.segments.length&&i.segments[0]==u&&m>0&&p==m-1){var v=f[p-1];"Paragraph"!=(null==v?void 0:v.blockType)&&o.applyDefaultFormat(e,u.format,d)}else i.segments.every((function(e){return"Text"!=e.segmentType}))&&o.applyDefaultFormat(e,u.format,d);return!1}return!1}))},e.prototype.applyDefaultFormat=function(e,t,r){var n=(0,i.getPendingFormat)(e)||{},a=e.getContentModelDefaultFormat(),l=(0,o.__assign)((0,o.__assign)((0,o.__assign)({},a),n),t);(0,i.setPendingFormat)(e,l,r)},e.prototype.shouldDeleteWithContentModel=function(e,t){return!((null==e?void 0:e.collapsed)&&3==e.startContainer.nodeType&&!(0,c.isModifierKey)(t)&&(this.canDeleteBefore(t,e)||this.canDeleteAfter(t,e)))},e.prototype.canDeleteBefore=function(e,t){return 8==e.which&&(t.startOffset>1||t.startContainer.previousSibling)},e.prototype.canDeleteAfter=function(e,t){var r,o;return 46==e.which&&(t.startOffset<(null!==(o=null===(r=t.startContainer.nodeValue)||void 0===r?void 0:r.length)&&void 0!==o?o:0)-1||t.startContainer.nextSibling)},e}();t.default=d},4e3:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1576),n=r(2976),a=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"ContentModelFormat"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor)switch(e.eventType){case 3:e.rawEvent.isComposing||this.editor.isInIME()||this.checkAndApplyPendingFormat(e.rawEvent.data);break;case 4:this.checkAndApplyPendingFormat(e.rawEvent.data);break;case 0:e.rawEvent.which>=33&&e.rawEvent.which<=40&&(0,n.clearPendingFormat)(this.editor);break;case 6:case 7:(0,n.canApplyPendingFormat)(this.editor)||(0,n.clearPendingFormat)(this.editor)}},e.prototype.checkAndApplyPendingFormat=function(e){this.editor&&e&&((0,o.default)(this.editor,e),(0,n.clearPendingFormat)(this.editor))},e}();t.default=a},1021:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9079),n=r(2347),a=r(251),l=r(1152),i=r(1082),s=r(5459),c=r(22),d=r(2389),u=function(){function e(e){void 0===e&&(e="SPAN"),this.unknownTagReplacement=e,this.editor=null}return e.prototype.getName=function(){return"ContentModelPaste"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&10==e.eventType){var t=e;if(t.domToModelOption){var r;switch((0,n.getPasteSource)(t,!1)){case 0:(0,c.processPastedContentFromWordDesktop)(t);break;case 5:(0,d.processPastedContentWacComponents)(t);break;case 2:case 1:0!==t.pasteType&&2!==t.pasteType||(0,i.processPastedContentFromExcel)(t,this.editor.getTrustedHTMLHandler());break;case 4:t.sanitizingOption.additionalTagReplacements["google-sheets-html-origin"]="*";break;case 3:(0,s.processPastedContentFromPowerPoint)(t,this.editor.getTrustedHTMLHandler())}(0,o.default)(t.domToModelOption,"link",l.parseLink),(0,o.default)(t.domToModelOption,"tableCell",a.deprecatedBorderColorParser),(0,o.default)(t.domToModelOption,"table",a.deprecatedBorderColorParser),r=t.sanitizingOption,(0,n.chainSanitizerCallback)(r.cssStyleCallbacks,"display",(function(e){return"flex"!=e})),2===t.pasteType&&((0,o.default)(t.domToModelOption,"block",f),(0,o.default)(t.domToModelOption,"listLevel",f)),t.sanitizingOption.unknownTagReplacement=this.unknownTagReplacement}}},e}();t.default=u;var f=function(e,t){t.style.backgroundColor&&delete e.backgroundColor}},1082:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.excelHandler=t.processPastedContentFromExcel=void 0;var o=r(9079),n=r(2347),a=/<\/\s*td\s*>((?!<\/\s*tr\s*>)[\s\S])*$/i,l=/<\/\s*tr\s*>((?!<\/\s*table\s*>)[\s\S])*$/i,i=/]*>[^<]*/i,s=/]*>[^<]*/i,c="solid 1px #d4d4d4";function d(e,t){if(e.match(a)){var r=t.match(i);e=(r?r[0]:"
  • ")+e+""}if(e.match(l)){var o=t.match(s);e=(o?o[0]:"
    1 2 @@ -925,7 +925,7 @@

    All files / packag       -506x +632x       @@ -940,11 +940,11 @@

    All files / packag       -506x +632x   -506x +632x   -506x +632x       @@ -952,34 +952,34 @@

    All files / packag       -506x +632x         -506x -506x -494x -494x -1412x -494x -1412x -1412x +632x +632x +620x +620x +1754x +620x +1754x +1754x   -3863x -3863x +4457x +4457x   -3863x -181x -181x +4457x +244x +244x     -3863x -4333x -4823x -4823x -4823x -4823x +4457x +5107x +5777x +5777x +5777x +5777x       @@ -990,8 +990,8 @@

    All files / packag       -1412x -4823x +1754x +5777x       @@ -1002,8 +1002,8 @@

    All files / packag       -494x -494x +620x +620x       @@ -1013,16 +1013,16 @@

    All files / packag     1x -920x +1276x       -190x -97x -97x -97x +253x +123x +123x +123x   -190x +253x       @@ -1030,24 +1030,24 @@

    All files / packag       -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   @@ -1057,7 +1057,7 @@

    All files / packag     1x -1567x +2161x 56x 56x 56x @@ -1101,18 +1101,18 @@

    All files / packag       -145x -145x +208x +208x 1x     -144x -144x -144x -144x -144x -144x -144x +207x +207x +207x +207x +207x +207x +207x   14x 20x @@ -1297,46 +1297,46 @@

    All files / packag   7x   -  -  -  +7x +7x +7x   -  -  -  +7x +7x +7x   -  -  -  +7x +7x +7x   -  +7x             -  +7x   -  +7x             -  +7x   -  +7x             -  +7x   -  +7x       @@ -1344,9 +1344,9 @@

    All files / packag       -  +7x   -  +7x       @@ -1354,9 +1354,9 @@

    All files / packag       -  +7x   -  +7x       @@ -1364,7 +1364,7 @@

    All files / packag       -  +7x       @@ -1376,16 +1376,16 @@

    All files / packag       -  -  -  -  -  -  -  -  -  -  +42x +68x +68x +68x +68x +24x +24x +24x +44x +24x       @@ -1408,7 +1408,7 @@

    All files / packag     1x -1572x +2166x     1x @@ -1500,7 +1500,7 @@

    All files / packag     1x -5060x +6698x       @@ -1557,41 +1557,41 @@

    All files / packag     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 @@ -1666,9 +1666,9 @@

    All files / packag       -193x -193x -193x +256x +256x +256x       @@ -1688,14 +1688,14 @@

    All files / packag       -1066x -1066x +1408x +1408x 188x 188x 188x     -1066x +1408x    

    import applyTableFormat from './applyTableFormat';
     import getTagOfNode from '../utils/getTagOfNode';
    @@ -2116,47 +2116,47 @@ 

    All files / packag }); } 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, @@ -2164,9 +2164,9 @@

    All files / packag 'top', true /** isVertical */ ); - break; - case TableOperation.AlignCellMiddle: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellMiddle: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, @@ -2174,9 +2174,9 @@

    All files / packag 'middle', true /** isVertical */ ); - break; - case TableOperation.AlignCellBottom: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellBottom: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, @@ -2184,11 +2184,11 @@

    All files / packag 'bottom', true /** isVertical */ ); - break; + break; } }   - setAlignmentToSelectedCells( + setAlignmentToSelectedCells( firstRow: number, lastRow: number, firstColumn: number, @@ -2196,16 +2196,16 @@

    All files / packag 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); } } } @@ -2524,7 +2524,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html index 79036780076..532994f9ab6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html @@ -1198,7 +1198,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html index f1ed6ad1279..8b0e0ffc6b1 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html @@ -124,7 +124,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/index.html b/coverage/packages/roosterjs-editor-dom/lib/table/index.html index 1d0cebe2604..570d6663d75 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/index.html @@ -23,30 +23,30 @@

    All files packages/roosterjs-editor-dom
    - 70.67% + 75.96% Statements - 441/624 + 474/624
    - 59.53% + 63.49% Branches - 331/556 + 353/556
    - 88.31% + 89.61% Functions - 68/77 + 69/77
    - 70.81% + 76.17% Lines - 410/579 + 441/579
    @@ -73,18 +73,18 @@

    All files packages/roosterjs-editor-dom

    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';
    @@ -178,7 +178,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html b/coverage/packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html index 458998e61bc..820aa428efd 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html @@ -167,7 +167,7 @@

    All files / packag     1x -495x +621x       @@ -250,7 +250,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/Browser.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/Browser.ts.html index 2b757df1422..6c0e483183a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/Browser.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/Browser.ts.html @@ -204,7 +204,7 @@

    All files / packag 5x 5x   -4x +3x       @@ -349,7 +349,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/applyFormat.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/applyFormat.ts.html index 38a344e2f0a..78ce4b8349a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/applyFormat.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/applyFormat.ts.html @@ -161,8 +161,8 @@

    All files / packag       -4817x -4817x +5006x +5006x       @@ -173,17 +173,17 @@

    All files / packag       -43353x +45054x   -4817x -4757x +5006x +4942x   -4817x -4763x +5006x +4948x     -4817x -4756x +5006x +4941x       @@ -191,7 +191,7 @@

    All files / packag       -61x +65x       @@ -202,7 +202,7 @@

    All files / packag       -4817x +5006x 1x     @@ -211,7 +211,7 @@

    All files / packag       -4816x +5005x       @@ -222,13 +222,13 @@

    All files / packag       -4817x -1x +5006x +6x   -4817x +5006x 1x   -4817x +5006x 1x     @@ -328,7 +328,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html index 254109259a5..a4e9e5d0cb4 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html @@ -138,38 +138,38 @@

    All files / packag     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 / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html index a2f803e1862..aa59ebec26d 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html @@ -155,22 +155,22 @@

    All files / packag       -1655x +1978x 2x     -1653x -1653x +1976x +1976x   -1653x -1064x -589x +1976x +1186x +790x   -589x -585x -585x -585x -585x +790x +786x +786x +786x +786x   4x   @@ -193,21 +193,21 @@

    All files / packag       -3322x -1104x +3968x +1410x 65x 5x   60x     -1099x +1405x       -1099x +1405x   -3322x +3968x    

    import contains from './contains';
     import splitParentNode from './splitParentNode';
    @@ -292,7 +292,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/contains.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/contains.ts.html index 81dac63eab0..738ee2fcdf6 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/contains.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/contains.ts.html @@ -168,37 +168,37 @@

    All files / packag       -40134x -6573x +46011x +7012x     -33561x -4144x +38999x +5415x     -29417x -2719x -2719x +33584x +3272x +3272x     -29417x -8544x -8544x +33584x +10594x +10594x     -29417x -756x +33584x +992x     -28661x +32592x             -23685x -23685x +27389x +27389x       @@ -295,7 +295,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/createElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/createElement.ts.html index 5fd8f416634..f69a3a8e910 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/createElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/createElement.ts.html @@ -271,53 +271,53 @@

    All files / packag       -11519x -4877x +11909x +5077x     -11519x +11909x 1x     -80626x -11518x +83356x +11908x       -11518x -513x +11908x +523x     -11518x +11908x 432x     -11518x +11908x 139x 275x       -11518x +11908x 86x 237x       -11518x -6355x -7170x +11908x +6545x +7360x 1017x -6153x -6152x -6152x -6152x +6343x +6342x +6342x +6342x           -11518x +11908x    

    import getObjectKeys from '../jsUtils/getObjectKeys';
     import safeInstanceOf from './safeInstanceOf';
    @@ -457,7 +457,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html index 6b23fc90877..e206d4c84a0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html @@ -106,12 +106,12 @@

    All files / packag       -24001x -24001x +27086x +27086x   -24001x -6756x -6756x +27086x +7173x +7173x       @@ -119,7 +119,7 @@

    All files / packag       -24001x +27086x    

    import contains from './contains';
     import matchesSelector from './matchesSelector';
    @@ -160,7 +160,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/fromHtml.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/fromHtml.ts.html index a055df63365..77ff09058d0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/fromHtml.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/fromHtml.ts.html @@ -109,7 +109,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html index 3c2825f6f46..248fa318290 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html @@ -119,26 +119,26 @@

    All files / packag   1x   -560x +696x   -556x -556x -556x -556x -553x -553x +692x +692x +692x +692x +689x +689x   -553x -664x -664x -664x -664x -664x +689x +800x +800x +800x +800x +800x         -556x +692x       @@ -148,7 +148,7 @@

    All files / packag     1x -528x +664x       @@ -217,7 +217,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html index 1e64531ec9a..8a563ae2289 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html @@ -115,7 +115,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html index befec1da62d..cd04ea3f97d 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html @@ -202,7 +202,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html index 4e256758333..a442cf073be 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html @@ -103,17 +103,17 @@

    All files / packag       -1861x -483x -483x -452x +1963x +520x +520x +466x     -483x +520x 35x     -483x +520x       @@ -121,7 +121,7 @@

    All files / packag     1x -474x +511x       @@ -175,7 +175,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html index 829388a3ac2..2681004cb12 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html @@ -165,45 +165,45 @@

    All files / packag       -1379x -1379x -1383x -631x -1379x -1379x -1354x -1354x +1727x +1727x +1767x +670x +1727x +1727x +1605x +1605x   -1354x +1605x     -1371x -1371x -1371x -643x -643x +1628x +1628x +1628x +809x +809x       -1371x +1628x         -617x +769x       -1371x -1371x +1628x +1628x   -1354x -1354x +1605x +1605x         -1379x +1727x       @@ -217,7 +217,7 @@

    All files / packag       -203x +337x       @@ -328,7 +328,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html index 75485cb7fc7..1eb1973c92d 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html @@ -232,7 +232,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html index e17d54d5a08..b49d9ea1c56 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html @@ -75,7 +75,7 @@

    All files / packag     1x -29556x +34284x    

    import { NodeType } from 'roosterjs-editor-types';
      
    @@ -94,7 +94,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/index.html b/coverage/packages/roosterjs-editor-dom/lib/utils/index.html index 4c27a387a22..05b3fd36a89 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/index.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/index.html @@ -575,7 +575,7 @@

    All files packages/roosterjs-editor-dom diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html index 3b27041253d..7e4749715ce 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html @@ -90,8 +90,8 @@

    All files / packag     1x -7733x -7733x +9605x +9605x       @@ -124,7 +124,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html index b69d70d8a12..f3fd493b327 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html @@ -82,7 +82,7 @@

    All files / packag     1x -2074x +2645x       @@ -112,7 +112,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html index 4d45ba822ea..20296c2c861 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html @@ -120,30 +120,30 @@

    All files / packag       -91x +94x 2x -89x -20x -69x -69x -69x -69x +92x +21x +71x +71x +71x +71x     -69x +71x         -47x +49x     22x       -89x -89x +92x +92x    

    import getTagOfNode from './getTagOfNode';
     import { NodeType } from 'roosterjs-editor-types';
    @@ -196,7 +196,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html index addcbd441ea..7819d089cb9 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html @@ -93,7 +93,7 @@

    All files / packag     1x -1601x +1908x    

    import getTagOfNode from './getTagOfNode';
      
    @@ -121,7 +121,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/matchLink.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/matchLink.ts.html index 724500ff4d9..fc879b7cb78 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/matchLink.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/matchLink.ts.html @@ -346,7 +346,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html index faf8e46b176..7d91955e425 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html @@ -100,7 +100,7 @@

    All files / packag     1x -526x +413x       @@ -136,7 +136,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html index 58e5efa08f8..fdb88c25668 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html @@ -91,16 +91,16 @@

    All files / packag       -745x +848x 4x     -741x -393x +844x +517x     -741x -415x +844x +389x      

    /**
    @@ -133,7 +133,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html index c48b0242e9b..f822c90adf2 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html @@ -118,7 +118,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/parseColor.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/parseColor.ts.html index 9b40108cdef..755d4e1df45 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/parseColor.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/parseColor.ts.html @@ -151,7 +151,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/queryElements.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/queryElements.ts.html index 53198ecdee1..4a7d9112425 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/queryElements.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/queryElements.ts.html @@ -161,32 +161,32 @@

    All files / packag       -12373x +13311x     -11757x +12636x 6x     -11751x +12630x   -11751x -1548x -387x -217x +12630x +1932x +483x +266x       -217x +266x     -387x +483x         -387x -723x +483x +842x       @@ -195,10 +195,10 @@

    All files / packag       -11751x -793x +12630x +899x   -11751x +12630x       @@ -207,15 +207,15 @@

    All files / packag       -723x -723x -723x +842x +842x +842x   -723x -605x +842x +611x     -723x +842x       @@ -225,8 +225,8 @@

    All files / packag       -2384x -4726x +2794x +5370x       @@ -325,7 +325,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/readFile.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/readFile.ts.html index 90d6e25c88f..6d6f1064163 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/readFile.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/readFile.ts.html @@ -118,7 +118,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html index f9496b81bae..843f271fd48 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html @@ -117,15 +117,15 @@

    All files / packag   1x   -21504x +23687x             -21504x -21504x +23687x +23687x       @@ -137,18 +137,18 @@

    All files / packag       -51397x -29895x +57877x +34192x           -21502x -21502x -21502x -21502x -21502x +23685x +23685x +23685x +23685x +23685x       @@ -208,7 +208,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/setColor.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/setColor.ts.html index 1cc179b90ec..04d28ffb302 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/setColor.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/setColor.ts.html @@ -239,22 +239,22 @@

    All files / packag       -14513x -14513x -14513x +15115x +15115x +15115x   -14513x -14513x -14450x +15115x +15115x +15052x           -14450x +15052x     -14513x +15115x 58x     @@ -502,7 +502,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html index 0d01d1749bb..b770622a035 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html @@ -133,35 +133,35 @@

    All files / packag     1x -1527x -1131x -34x -1097x -12x +1858x +1377x +33x +1344x +20x   -1085x +1324x   -396x -396x +481x +481x 1x     -395x +480x   -395x +480x       -139x -99x -90x +185x +123x +112x     -49x +73x       -256x +295x       @@ -229,7 +229,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html index 7e14ab8b2be..3708760461b 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html @@ -137,34 +137,34 @@

    All files / packag     1x -272x +379x 2x     -270x -270x -270x -270x -127x -94x +377x +377x +377x +377x +180x +97x     -143x -123x +197x +138x         -270x -165x +377x +173x         -105x +204x     -270x +377x       @@ -174,20 +174,20 @@

    All files / packag     1x -88x -88x -88x -88x -86x +142x +142x +142x +142x +140x 1x 1x 1x   -86x -86x +140x +140x     -88x +142x    

    import isNodeAfter from './isNodeAfter';
      
    @@ -262,7 +262,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html index a4dd94afc67..108522c3e0a 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html @@ -109,7 +109,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/unwrap.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/unwrap.ts.html index 5a3b6576889..fb1382c3aa1 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/unwrap.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/unwrap.ts.html @@ -81,17 +81,17 @@

    All files / packag   1x   -255x -255x +324x +324x 12x     -243x -258x +312x +361x     -243x -243x +312x +312x    

    /**
      * Removes the node and keep all children in place, return the parentNode where the children are attached
    @@ -118,7 +118,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-dom/lib/utils/wrap.ts.html b/coverage/packages/roosterjs-editor-dom/lib/utils/wrap.ts.html index bfd56ee8c8d..da2c12088a0 100644 --- a/coverage/packages/roosterjs-editor-dom/lib/utils/wrap.ts.html +++ b/coverage/packages/roosterjs-editor-dom/lib/utils/wrap.ts.html @@ -202,38 +202,38 @@

    All files / packag       -164x -164x +256x +256x 3x     -161x -36x +253x +60x     -161x -161x +253x +253x   -161x -142x +253x +224x       -19x +29x       -161x +253x   -161x -144x +253x +236x     -183x -183x +276x +276x     -161x +253x    

    import createElement from './createElement';
     import fromHtml from './fromHtml';
    @@ -331,7 +331,7 @@ 

    All files / packag diff --git a/coverage/packages/roosterjs-editor-plugins/lib/AutoFormat.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/AutoFormat.ts.html index 59b837af8e1..d1f296662c2 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/AutoFormat.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/AutoFormat.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/ContentEdit.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/ContentEdit.ts.html index 8ebf14fb7c9..498c0dfa061 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/ContentEdit.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/ContentEdit.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/ContextMenu.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/ContextMenu.ts.html index 5281b43ca68..533ed22d280 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/ContextMenu.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/ContextMenu.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/CustomReplace.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/CustomReplace.ts.html index 01804055914..175f4730ce8 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/CustomReplace.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/CustomReplace.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html index 27327dc0376..2af3acab025 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/HyperLink.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/HyperLink.ts.html index 45f450f2c5b..b5259763ad7 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/HyperLink.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/HyperLink.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/ImageEdit.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/ImageEdit.ts.html index 0dd5c33a2a5..a1bfee79204 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/ImageEdit.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/ImageEdit.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/ImageResize.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/ImageResize.ts.html index c8862fcef16..07602087cff 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/ImageResize.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/ImageResize.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/Paste.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/Paste.ts.html index bea2eb0a335..1300bfda38a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/Paste.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/Paste.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/Picker.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/Picker.ts.html index 86eb9b7b1a3..58d999b71c1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/Picker.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/Picker.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/TableCellSelection.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/TableCellSelection.ts.html index 85ca96dc1ad..2663ccc0778 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/TableCellSelection.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/TableCellSelection.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/TableResize.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/TableResize.ts.html index c6a9d4c10ee..5b64e86b29d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/TableResize.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/TableResize.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/Watermark.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/Watermark.ts.html index 9580e43f805..0389e4cd30e 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/Watermark.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/Watermark.ts.html @@ -67,7 +67,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/index.html b/coverage/packages/roosterjs-editor-plugins/lib/index.html index 781d61840ba..5ed202296ad 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/index.html @@ -290,7 +290,7 @@

    All files packages/roosterjs-editor-plugin diff --git a/coverage/packages/roosterjs-editor-plugins/lib/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/index.ts.html index db57cbd6ee7..9c966605058 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/index.ts.html @@ -103,7 +103,7 @@

    All files / packages/ diff --git a/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html index d1a28560da5..3182fd3057c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html @@ -523,7 +523,7 @@

    All files / packag diff --git a/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/index.html index 649e7e6a307..4993f73ee83 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/pluginUtils/index.html @@ -95,7 +95,7 @@

    All files packages/roosterjs-editor-plu diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html index 3ea18dfac4c..5dcc1a4ac57 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html @@ -388,7 +388,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html index 28aa7737703..07a65acbfaf 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html @@ -110,7 +110,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html index 10491647ba1..96871b509a3 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html @@ -67,7 +67,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html index c9863fafb74..52ad20c4019 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html @@ -195,16 +195,16 @@

    All files / pac       -108x +102x     3x -108x +102x     2x 2x -72x +68x   2x   @@ -304,7 +304,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html index dba8de88581..3ca8ccd2785 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html @@ -505,7 +505,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html index cf18bb3b153..8a789f688dd 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html @@ -361,7 +361,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html index e56a2096040..023178c5670 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html @@ -23,30 +23,30 @@

    All files / -
    +
    
    -	
    -	
    +	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    -	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    +	
    @@ -223,18 +223,18 @@ 

    All files packages/roosterjs-edit

    - - + - - - - - - - - + + + + + + + + @@ -245,7 +245,7 @@

    All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html index a2d6edb35bc..4c8d456a11f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html @@ -2056,7 +2056,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html index 7eaeebfb4a0..889f5bd67b5 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html @@ -631,7 +631,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html index 6207fa3a488..832ff1a7d11 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html @@ -430,7 +430,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html index c6bd48cf682..9a4e6f633c9 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html @@ -472,7 +472,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html index cd2e61c0241..b35afab3f7a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html @@ -307,7 +307,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html index 223a26b6e3f..cc4f327f2b1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html @@ -781,7 +781,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html index 5e4a0932d37..fae55a0ea38 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html @@ -23,30 +23,30 @@

    All files / -
    +

    1 2 @@ -114,26 +114,26 @@

    All files /       -  +10x     -  +10x             -  +6x     -  -  +4x +4x   -  +4x     -  +2x       @@ -158,27 +158,27 @@

    All files / 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; }   - let rtl = getComputedStyle(position.element, 'direction') == 'rtl'; - let rawEvent = event.rawEvent; + let rtl = getComputedStyle(position.element, 'direction') == 'rtl'; + let 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 / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html index 87005fb6f72..28d187efb17 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html @@ -1642,7 +1642,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html index d055dfe527a..9c648b98505 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html @@ -23,30 +23,30 @@

    All files packages/roosterjs-edit
    - 67.37% + 73.55% Statements - 545/809 + 595/809
    - 57.38% + 61.01% Branches - 490/854 + 521/854
    - 67.48% + 71.78% Functions - 110/163 + 117/163
    - 66.92% + 73.03% Lines - 526/786 + 574/786
    @@ -103,18 +103,18 @@

    All files packages/roosterjs-edit

    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 @@ -336,26 +336,26 @@

    All files /       -  -  -  -  -  +14x +14x +14x +14x +2x   -  -  -  -  +12x +12x +12x +10x   -  -  -  -  +2x +2x +2x +2x         -  +14x       @@ -419,38 +419,38 @@

    All files /       -1x +13x   -1x -1x -1x -1x +13x +13x +13x +13x   -1x +13x       -1x +13x   -1x +2x     -  -  +11x +11x   -  -  +11x +11x   -  -  +11x +9x     -  +11x         -  +21x       @@ -463,34 +463,34 @@

    All files /       -  -  -  +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';
    @@ -553,27 +553,27 @@ 

    All files /   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(); } }, }; @@ -648,27 +648,27 @@

    All files / 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, @@ -680,35 +680,35 @@

    All files / ); }   -function insertTab(editor: IEditor, event: PluginKeyboardEvent) { - const span = editor.getDocument().createElement('span'); - let searcher = editor.getContentSearcherOfCursor(event); - if (!searcher) { +function insertTab(editor: IEditor, event: PluginKeyboardEvent) { + const span = editor.getDocument().createElement('span'); + let 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); } }  

    @@ -718,7 +718,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html index c1f20fbef69..45760c7495f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html @@ -175,7 +175,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html index d6a725fb95f..cc4996618a2 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html @@ -125,7 +125,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html index 0e859c74fdd..b102e96420e 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html @@ -70,7 +70,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html index 47ba0c6a694..680896e8b7d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html @@ -109,7 +109,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html index 04f18208725..1e86bad913d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html @@ -145,7 +145,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html index 49b2f0e3491..d494a3b2270 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html @@ -598,7 +598,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html index 5a8b463f8ca..765cf5c427b 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html @@ -125,7 +125,7 @@

    All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html index 95e2777102b..91b62cf2f7a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html @@ -418,7 +418,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html index 2387eec3d46..e6bd8dc4887 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html @@ -110,7 +110,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html index 07b0b4c1510..81409620255 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html @@ -67,7 +67,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html index d88f5c79fd6..e27b743dfa5 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html @@ -625,7 +625,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html index 7864e227fb9..f2c9f9f9764 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html @@ -110,7 +110,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html index b412646bb7f..1ffd206b6e4 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html @@ -67,7 +67,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html index eb451550db5..b525e73e448 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html @@ -328,7 +328,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html index 8dd4679bbe6..5ea49f9e49b 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html @@ -110,7 +110,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html index 337c552400e..916538e3a86 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html @@ -67,7 +67,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html index 40a1e25fb33..e195de184a7 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html @@ -796,7 +796,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html index 254de8888d7..180e579d73d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html @@ -110,7 +110,7 @@

    All files packages/roosterjs-editor- diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html index b8e1c5bb71d..7b03bb0fe0f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html @@ -67,7 +67,7 @@

    All files / pac diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html index 718d689841f..6a928440a7d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html @@ -23,9 +23,9 @@

    All files / pac
    - 89.35% + 88.66% Statements - 260/291 + 258/291
    @@ -37,16 +37,16 @@

    All files / pac
    - 90.24% + 85.37% Functions - 37/41 + 35/41
    - 88.89% + 88.17% Lines - 248/279 + 246/279
    @@ -1025,7 +1025,7 @@

    All files / pac 26x 26x 26x -21x +        @@ -1049,7 +1049,7 @@

    All files / pac     1x -209x +192x   42x   @@ -1085,8 +1085,8 @@

    All files / pac 1x     -59x -59x +46x +46x       @@ -1132,15 +1132,15 @@

    All files / pac       -73x +55x         -73x -73x +55x +55x   -73x +55x       @@ -1149,16 +1149,16 @@

    All files / pac       -27x +10x       -27x +10x         -27x +10x       @@ -1168,23 +1168,23 @@

    All files / pac       -27x +10x   -27x +10x   -27x +10x       -27x -27x -27x -27x -27x -27x +10x +10x +10x +10x +10x +10x     -73x +55x   22x 22x @@ -1268,7 +1268,7 @@

    All files / pac     26x -21x +        @@ -1345,11 +1345,11 @@

    All files / pac     26x -112x +82x 32x   -112x -112x +82x +82x       @@ -1511,7 +1511,7 @@

    All files / pac   1x 158x -53x +36x   1x   @@ -1821,7 +1821,7 @@

    All files / pac initialize(editor: IEditor) { this.editor = editor; this.disposer = editor.addDomEventHandler({ - blur: () => this.onBlur(), + blur: () => this.onBlur(), dragstart: e => { if (this.image) { e.preventDefault(); @@ -2063,8 +2063,8 @@

    All files / pac /** * 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 @@ -2452,7 +2452,7 @@

    All files / pac

    diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html index 899ac5c0b89..792cb804ed1 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html @@ -145,7 +145,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html index 19f634a8a91..59382ce1444 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html @@ -140,7 +140,7 @@

    All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html index 4cca06d9d42..6d9b8d8a76d 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html @@ -121,7 +121,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html index 18144d43f1b..d623e93ebd6 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html @@ -118,7 +118,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html index 9c06a1e68e9..98b6a5ccee5 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html @@ -226,7 +226,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html index b865027ab27..219501775f3 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html @@ -145,7 +145,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html index 6a1e09d918f..f3499ba6894 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html @@ -95,7 +95,7 @@

    All files packages/roosterjs-edit diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html index 86617431285..7324c1a437f 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html @@ -30,9 +30,9 @@

    All files /
    - 89.47% + 78.95% Branches - 17/19 + 15/19
    @@ -165,16 +165,16 @@

    All files /       -35x +14x   -35x -35x +14x +14x   -35x +14x     -15x -15x +4x +4x       @@ -182,45 +182,45 @@

    All files /       -20x -20x +10x +10x     -35x +14x   -35x +14x     -18x +14x           -18x +14x     -35x +14x     -15x +4x       -20x +10x       -35x -35x +14x +14x   -35x -34x -34x +14x +14x +14x   -34x -34x -34x +14x +14x +14x      

    import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';
    @@ -271,7 +271,7 @@ 

    All files /   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 / 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 @@ -313,7 +313,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html index f030f524474..670e801445a 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html @@ -209,18 +209,18 @@

    All files /       -695x +478x 1x -99x -219x +68x +144x         -30x -69x +19x +49x   -20x +10x       @@ -228,16 +228,16 @@

    All files /       -69x +49x         -695x +478x       -239x +154x    

    import ImageEditInfo, { CropInfo, ResizeInfo, RotateInfo } from '../types/ImageEditInfo';
      
    @@ -337,7 +337,7 @@ 

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html index a3b25ba8ffa..531425394fb 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html @@ -124,8 +124,8 @@

    All files /     1x -29x -29x +19x +19x       @@ -135,8 +135,8 @@

    All files /     1x -17x -17x +6x +6x       @@ -149,14 +149,14 @@

    All files /     1x -92x -92x +71x +71x           -28x +17x       @@ -232,7 +232,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html index 6081532e66b..61815c32703 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html @@ -139,24 +139,24 @@

    All files /       -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 /       -20x +10x    

    import getGeneratedImageSize from './getGeneratedImageSize';
     import ImageEditInfo from '../types/ImageEditInfo';
    @@ -235,7 +235,7 @@ 

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html index 192520de130..ad6a0632908 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html @@ -136,23 +136,23 @@

    All files /       -609x +392x     -87x -87x +56x +56x     -87x -87x +56x +56x       -87x +56x   -87x +56x   -87x +56x       @@ -220,7 +220,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html index cd0d3a764a2..f41f268f20c 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html @@ -124,7 +124,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html index 6b483a650d9..b24a528d2f3 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html @@ -104,10 +104,10 @@

    All files /       -102x -17x -17x -17x +78x +13x +13x +13x    

    import ImageEditInfo from '../types/ImageEditInfo';
     import ImageSize from '../types/ImageSize';
    @@ -142,7 +142,7 @@ 

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html index f89113cdd8d..0de0e24f2ee 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html @@ -30,9 +30,9 @@

    All files packages/roosterjs-edit
    - 81.08% + 78.38% Branches - 60/74 + 58/74
    @@ -79,8 +79,8 @@

    All files packages/roosterjs-edit

    93.75% 30/3289.47%17/1978.95%15/19 100% 1/1 93.33%
    ImageEdit.ts -
    +
    +
    89.35%260/29188.66%258/291 68.16% 167/24590.24%37/4188.89%248/27985.37%35/4188.17%246/279
    import { CssStyleCallbackMap, ElementCallbackMap } from 'roosterjs-editor-types';
     import {
    @@ -355,7 +355,7 @@ 

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html index 7f21d1a8388..56733212332 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html @@ -23,9 +23,9 @@

    All files /

    import commentsRemoval from './commentsRemoval';
     import { BeforePasteEvent } from 'roosterjs-editor-types';
    @@ -206,10 +206,10 @@ 

    All files / 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; });   let wordConverter = createWordConverter(); @@ -259,7 +259,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html index 9603cbbc3c8..56d80e85aae 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html @@ -672,16 +672,16 @@

    All files /     1x -12x -12x +11x +11x     -12x -17x +11x +15x     -17x -17x +15x +15x   8x 8x @@ -768,8 +768,8 @@

    All files /       -9x -9x +7x +7x       @@ -786,9 +786,9 @@

    All files /       -17x +15x   -12x +11x       @@ -996,9 +996,9 @@

    All files /       -17x -17x -17x +15x +15x +15x 8x     @@ -1020,7 +1020,7 @@

    All files /       -9x +7x       @@ -1189,7 +1189,7 @@

    All files /       -41x +39x       @@ -1822,7 +1822,7 @@

    All files / diff --git a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html index 87bb3325ce6..34efd652fff 100644 --- a/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html +++ b/coverage/packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html @@ -23,9 +23,9 @@

    All files packages/roosterjs-edit
    - 88.28% + 87.24% Statements - 256/290 + 253/290
    @@ -37,16 +37,16 @@

    All files packages/roosterjs-edit
    - 97.3% + 94.59% Functions - 36/37 + 35/37
    - 88.42% + 87.37% Lines - 252/285 + 249/285
    @@ -134,17 +134,17 @@

    All files packages/roosterjs-edit

    convertPastedContentFromWord.ts -
    +
    +
    100%30/3090%27/30 100% 11/11100%5/5100%30/3080%4/590%27/30
    ")+e+"
    "}return e}t.processPastedContentFromExcel=function(e,t){var r=e.fragment,a=e.htmlBefore,l=e.clipboardData,i=l.html?d(l.html,a):void 0;if(i&&l.html!=i){var s=(new DOMParser).parseFromString(t(i),"text/html");(0,n.moveChildNodes)(r,null==s?void 0:s.body)}var u=r.firstChild;u&&u.childNodes.length>0&&"DIV"==(0,n.getTagOfNode)(u)&&Array.from(u.childNodes).every((function(e){return"META"==(0,n.getTagOfNode)(e)||"TABLE"==(0,n.getTagOfNode)(e)&&e==u.lastChild}))&&u.lastChild&&e.fragment.replaceChildren(u.lastChild),(0,o.default)(e.domToModelOption,"tableCell",(function(e,t){"none"===t.style.borderStyle&&(e.borderBottom=c,e.borderLeft=c,e.borderRight=c,e.borderTop=c)}))},t.excelHandler=d},5459:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processPastedContentFromPowerPoint=void 0;var o=r(2347);t.processPastedContentFromPowerPoint=function(e,t){var r=e.fragment,n=e.clipboardData;if(n.html&&!n.text&&n.image){var a=(new DOMParser).parseFromString(t(n.html),"text/html");(0,o.moveChildNodes)(r,null==a?void 0:a.body)}}},2389:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processPastedContentWacComponents=void 0;var o=r(7582),n=r(9079),a=r(2347),l=r(9263),i="ListContainerWrapper",s="TableContainer",c=["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle","ListMarkerWrappingSpan"],d=(0,o.__spreadArray)((0,o.__spreadArray)(["OutlineElement","NumberListStyle","WACImageContainer","ListContainerWrapper","BulletListStyle"],(0,o.__read)(c),!1),["TableCellContent","Paragraph","WACImageContainer","WACImageBorder",s,"LineBreakBlob"],!1),u=["UL","OL","LI"],f=u.join(","),m=function(e,t){var r=t.style.verticalAlign;"super"===r&&(e.superOrSubScriptSequence="super"),"sub"===r&&(e.superOrSubScriptSequence="sub")},p=function(e,t,r){var o=(0,a.getTagOfNode)(t);if((0,a.matchesSelector)(t,'ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer,span.WACImageBorder')&&(t.style.removeProperty("display"),t.style.removeProperty("margin")),t.classList.contains(i))r.elementProcessors.child(e,t,r);else if(!c.some((function(e){return t.classList.contains(e)}))){if(function(e,t,r){return r.listFormat.levels.length>0&&u.every((function(t){return t!=e}))&&!(0,a.findClosestElementAncestor)(t,void 0,f)}(o,t,r)){var n=r.listFormat;n.levels=[],n.listParent=void 0}r.defaultElementProcessors.element(e,t,r)}},v=function(e,t,r){var o,n,a;null===(n=(o=r.defaultElementProcessors).li)||void 0===n||n.call(o,e,t,r);var l=r.listFormat.listParent;if(l){var i=l.blocks[l.blocks.length-1];if("BlockGroup"==i.blockType&&"ListItem"==i.blockGroupType&&r.listFormat.listParent!==i){var s=i.levels[i.levels.length-1],c=parseInt(null!==(a=t.getAttribute("data-aria-level"))&&void 0!==a?a:"");if(c>0)if(c>i.levels.length)for(;c!=i.levels.length;)i.levels.push(s);else i.levels.splice(c,i.levels.length-1),i.levels[c-1]=s}}},g=function(e,t){"block"===t.style.display&&(e.displayForDummyItem=void 0),e.marginLeft=void 0},h=function(e){e.marginLeft=void 0,e.paddingLeft=void 0};t.processPastedContentWacComponents=function(e){var t;(0,n.default)(e.domToModelOption,"segment",m),(0,n.default)(e.domToModelOption,"listItem",g),(0,n.default)(e.domToModelOption,"listLevel",h),(0,n.default)(e.domToModelOption,"container",y),(0,l.setProcessor)(e.domToModelOption,"element",p),(0,l.setProcessor)(e.domToModelOption,"li",v),(0,l.setProcessor)(e.domToModelOption,"ol",b),(0,l.setProcessor)(e.domToModelOption,"ul",b),(t=e.sanitizingOption.additionalAllowedCssClasses).push.apply(t,(0,o.__spreadArray)([],(0,o.__read)(d),!1))};var b=function(e,t,r){var o,n,l,s,c,d=e.blocks[e.blocks.length-1],u=(0,a.findClosestElementAncestor)(t,void 0,"."+i);(null===(o=null==u?void 0:u.previousElementSibling)||void 0===o?void 0:o.classList.contains(i))&&"BlockGroup"===(null==d?void 0:d.blockType)&&"ListItem"==d.blockGroupType&&(r.listFormat={threadItemCounts:[],levels:d.levels,listParent:e}),"OL"===t.tagName.toUpperCase()?null===(l=(n=r.defaultElementProcessors).ol)||void 0===l||l.call(n,e,t,r):null===(c=(s=r.defaultElementProcessors).ul)||void 0===c||c.call(s,e,t,r)},y=function(e,t){t.classList.contains(s)&&t.style.marginLeft.startsWith("-")&&delete e.marginLeft}},22:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wordDesktopElementProcessor=t.processPastedContentFromWordDesktop=void 0;var o=r(9079),n=r(2347),a=r(9526),l=r(9541),i=r(9263),s=/%/;function c(e,t,r,o){var n;s.test(t.style.lineHeight)&&!isNaN(n=parseInt(t.style.lineHeight))&&n<120&&(e.lineHeight=o.lineHeight)}function d(e,t,r,o){""!=t.style.marginLeft&&(e.marginLeft=o.marginLeft),e.marginBottom=void 0}t.processPastedContentFromWordDesktop=function(e){(0,i.setProcessor)(e.domToModelOption,"element",t.wordDesktopElementProcessor),(0,o.default)(e.domToModelOption,"block",c),(0,o.default)(e.domToModelOption,"listLevel",d),(0,o.default)(e.domToModelOption,"listItemElement",u),(0,n.chainSanitizerCallback)(e.sanitizingOption.cssStyleCallbacks,"border",(function(e,t){return"IMG"!=t.tagName||"none"!=e})),(0,n.chainSanitizerCallback)(e.sanitizingOption.elementCallbacks,"O:P",(function(e){return(0,n.moveChildNodes)(e),e.appendChild(e.ownerDocument.createTextNode(" ")),!0}))},t.wordDesktopElementProcessor=function(e,t,r){var o=(0,n.getStyles)(t);(0,l.processWordList)(o,e,t,r)||(0,a.processWordComments)(o,t)||r.defaultElementProcessors.element(e,t,r)};var u=function(e,t){t.style.marginLeft&&(e.marginLeft=void 0),t.style.marginRight&&(e.marginRight=void 0)}},9526:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processWordComments=void 0;var o=r(2347),n=/#_msocom_/;t.processWordComments=function(e,t){return"comment"==e["mso-special-character"]||(0,o.safeInstanceOf)(t,"HTMLAnchorElement")&&n.test(t.href)||"comment-list"==e["mso-element"]}},9541:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processWordList=void 0;var o=r(7582),n=r(2347),a=r(1246),l="mso-list",i="ignore";function s(e){return function(t,r,o){var n=o.listFormat,a=n.wordKnownLevels,l=n.wordLevel,i=n.wordList;if("number"==typeof l&&i){var s=parseInt(e);null==s||isNaN(s)||(null==a?void 0:a.has(i))||(t.startNumberOverride=s)}}}function c(e,t){var r,o,n="";t=t||5;for(var a=e.firstChild;!n&&a;)d(a)?0==(n=null!==(o=null===(r=a.textContent)||void 0===r?void 0:r.trim())&&void 0!==o?o:"").length&&(n="o"):1==a.nodeType&&t>1&&(n=c(a,t-1)),a=a.nextSibling;return n}function d(e){if(1==e.nodeType){var t=(0,n.getStyles)(e)[l];if(t&&t.length>0&&t.trim().toLowerCase()==i)return!0}return!1}t.processWordList=function(e,t,r,n){var d=n.listFormat;d.wordKnownLevels||(d.wordKnownLevels=new Map);var u=e[l]||"";if(u.toLowerCase()===i)return!0;var f=u.split(" ");if(d.wordLevel=f[1]&&parseInt(f[1].substr(5)),d.wordList=f[0]||"l0",0==d.levels.length&&(d.levels=d.wordKnownLevels.get(d.wordList)||[]),u&&t&&"number"==typeof d.wordLevel){var m=d.wordLevel,p=c(r),v=function(e){return function(e){return["o","·","§","-"].indexOf(e)>=0}(e)?"UL":"OL"}(p),g=(0,a.createListLevel)(v);if((0,a.parseFormat)(r,n.formatParsers.listLevel,g.format,n),m>d.levels.length)for(;m!=d.levels.length;)d.levels.push(g);else d.levels.splice(m,d.levels.length-1),d.levels[m-1]=g;return d.listParent=t,function(e,t,r,o,n){var l=(0,a.createListItem)(e.levels,t.segmentFormat),i=l.levels[l.levels.length-1];(0,a.parseFormat)(r,t.formatParsers.segmentOnBlock,t.segmentFormat,t),(0,a.parseFormat)(r,t.formatParsers.listItemElement,l.format,t),"OL"==(null==i?void 0:i.listType)&&(0,a.parseFormat)(r,[s(n)],l.levels[l.levels.length-1].format,t),t.elementProcessors.child(l,r,t),(0,a.addBlock)(o,l)}(d,n,r,t,p),d.levels.length>0&&d.wordKnownLevels.get(d.wordList)!=d.levels&&d.wordKnownLevels.set(d.wordList,(0,o.__spreadArray)([],(0,o.__read)(d.levels),!1)),!0}return!1}},9079:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){var o;e.additionalFormatParsers||(e.additionalFormatParsers={}),e.additionalFormatParsers[t]||(e.additionalFormatParsers[t]=[]),null===(o=e.additionalFormatParsers[t])||void 0===o||o.push(r)}},251:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deprecatedBorderColorParser=void 0;var o=r(1246);t.deprecatedBorderColorParser=function(e){o.BorderKeys.forEach((function(t){var r=e[t],n="";if(r&&o.DeprecatedColors.some((function(e){return r.indexOf(e)>-1&&(n=e)}))){var a=r.replace(n,"").trimRight();e[t]=a}}))}},1152:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseLink=void 0;var o=r(2347),n=["http:","https:","notes:","mailto:","onenote:"],a=/^file:\/\/\/[a-zA-Z\/]/i;t.parseLink=function(e,t){if((0,o.safeInstanceOf)(t,"HTMLAnchorElement")){var r;try{r=new URL(t.href)}catch(e){r=void 0}(r&&-1===n.indexOf(r.protocol)||a.test(t.href))&&(t.removeAttribute("href"),e.href="")}}},9263:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setProcessor=void 0,t.setProcessor=function(e,t,r){e.processorOverride||(e.processorOverride={}),e.processorOverride[t]=r}},4040:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldDeleteAllSegmentsBefore=t.shouldDeleteWord=t.handleKeyboardEventResult=void 0;var o=r(1246);t.handleKeyboardEventResult=function(e,t,r,n,a){switch(a.skipUndoSnapshot=!0,n){case 0:return e.cacheContentModel(null),!1;case 3:return r.preventDefault(),!1;case 2:case 1:return r.preventDefault(),(0,o.normalizeContentModel)(t),2==n&&(a.skipUndoSnapshot=!1),e.triggerPluginEvent(23,{rawEvent:r}),!0}},t.shouldDeleteWord=function(e,t){return t&&e.altKey&&!e.metaKey||!t&&e.ctrlKey&&!e.altKey},t.shouldDeleteAllSegmentsBefore=function(e){return e.metaKey&&!e.altKey}},3247:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isContentModelEditor=t.ContentModelEditor=t.formatWithContentModel=t.insertEntity=t.paste=t.toggleCode=t.setParagraphMargin=t.adjustImageSelection=t.setImageAltText=t.adjustLinkSelection=t.removeLink=t.insertLink=t.clearFormat=t.applyPendingFormat=t.getFormatState=t.changeImage=t.setImageBoxShadow=t.setImageBorder=t.setSpacing=t.toggleBlockQuote=t.setHeadingLevel=t.setDirection=t.setAlignment=t.setIndentation=t.getSelectedSegments=t.hasSelectionInBlockGroup=t.hasSelectionInSegment=t.hasSelectionInBlock=t.setListStartNumber=t.setListStyle=t.insertImage=t.changeCapitalization=t.applySegmentFormat=t.changeFontSize=t.setTextColor=t.setFontSize=t.setFontName=t.setBackgroundColor=t.toggleSuperscript=t.toggleSubscript=t.toggleStrikethrough=t.toggleUnderline=t.toggleItalic=t.toggleBold=t.toggleNumbering=t.toggleBullet=t.editTable=t.setTableCellShade=t.formatTable=t.insertTable=void 0,t.updateTableMetadata=t.updateTableCellMetadata=t.updateImageMetadata=t.extractBorderValues=t.combineBorderValue=t.promoteToContentModelEditorCore=t.createContentModelEditorCore=t.ContentModelCopyPastePlugin=t.ContentModelTypeInContainerPlugin=t.ContentModelPastePlugin=t.ContentModelEditPlugin=t.ContentModelFormatPlugin=void 0;var o=r(6901);Object.defineProperty(t,"insertTable",{enumerable:!0,get:function(){return o.default}});var n=r(2435);Object.defineProperty(t,"formatTable",{enumerable:!0,get:function(){return n.default}});var a=r(7783);Object.defineProperty(t,"setTableCellShade",{enumerable:!0,get:function(){return a.default}});var l=r(959);Object.defineProperty(t,"editTable",{enumerable:!0,get:function(){return l.default}});var i=r(58);Object.defineProperty(t,"toggleBullet",{enumerable:!0,get:function(){return i.default}});var s=r(4505);Object.defineProperty(t,"toggleNumbering",{enumerable:!0,get:function(){return s.default}});var c=r(5539);Object.defineProperty(t,"toggleBold",{enumerable:!0,get:function(){return c.default}});var d=r(3462);Object.defineProperty(t,"toggleItalic",{enumerable:!0,get:function(){return d.default}});var u=r(3679);Object.defineProperty(t,"toggleUnderline",{enumerable:!0,get:function(){return u.default}});var f=r(5602);Object.defineProperty(t,"toggleStrikethrough",{enumerable:!0,get:function(){return f.default}});var m=r(2494);Object.defineProperty(t,"toggleSubscript",{enumerable:!0,get:function(){return m.default}});var p=r(1308);Object.defineProperty(t,"toggleSuperscript",{enumerable:!0,get:function(){return p.default}});var v=r(5253);Object.defineProperty(t,"setBackgroundColor",{enumerable:!0,get:function(){return v.default}});var g=r(1250);Object.defineProperty(t,"setFontName",{enumerable:!0,get:function(){return g.default}});var h=r(5442);Object.defineProperty(t,"setFontSize",{enumerable:!0,get:function(){return h.default}});var b=r(9715);Object.defineProperty(t,"setTextColor",{enumerable:!0,get:function(){return b.default}});var y=r(7451);Object.defineProperty(t,"changeFontSize",{enumerable:!0,get:function(){return y.default}});var _=r(4847);Object.defineProperty(t,"applySegmentFormat",{enumerable:!0,get:function(){return _.default}});var C=r(5284);Object.defineProperty(t,"changeCapitalization",{enumerable:!0,get:function(){return C.default}});var P=r(2930);Object.defineProperty(t,"insertImage",{enumerable:!0,get:function(){return P.default}});var k=r(3e3);Object.defineProperty(t,"setListStyle",{enumerable:!0,get:function(){return k.default}});var S=r(1123);Object.defineProperty(t,"setListStartNumber",{enumerable:!0,get:function(){return S.default}});var O=r(6516);Object.defineProperty(t,"hasSelectionInBlock",{enumerable:!0,get:function(){return O.default}});var M=r(5676);Object.defineProperty(t,"hasSelectionInSegment",{enumerable:!0,get:function(){return M.default}});var T=r(7536);Object.defineProperty(t,"hasSelectionInBlockGroup",{enumerable:!0,get:function(){return T.default}});var w=r(6331);Object.defineProperty(t,"getSelectedSegments",{enumerable:!0,get:function(){return w.default}});var F=r(3721);Object.defineProperty(t,"setIndentation",{enumerable:!0,get:function(){return F.default}});var x=r(5149);Object.defineProperty(t,"setAlignment",{enumerable:!0,get:function(){return x.default}});var E=r(8365);Object.defineProperty(t,"setDirection",{enumerable:!0,get:function(){return E.default}});var j=r(2923);Object.defineProperty(t,"setHeadingLevel",{enumerable:!0,get:function(){return j.default}});var B=r(1977);Object.defineProperty(t,"toggleBlockQuote",{enumerable:!0,get:function(){return B.default}});var L=r(9294);Object.defineProperty(t,"setSpacing",{enumerable:!0,get:function(){return L.default}});var A=r(4653);Object.defineProperty(t,"setImageBorder",{enumerable:!0,get:function(){return A.default}});var I=r(4735);Object.defineProperty(t,"setImageBoxShadow",{enumerable:!0,get:function(){return I.default}});var D=r(8401);Object.defineProperty(t,"changeImage",{enumerable:!0,get:function(){return D.default}});var H=r(7950);Object.defineProperty(t,"getFormatState",{enumerable:!0,get:function(){return H.default}});var N=r(1576);Object.defineProperty(t,"applyPendingFormat",{enumerable:!0,get:function(){return N.default}});var R=r(2313);Object.defineProperty(t,"clearFormat",{enumerable:!0,get:function(){return R.default}});var z=r(7058);Object.defineProperty(t,"insertLink",{enumerable:!0,get:function(){return z.default}});var W=r(3932);Object.defineProperty(t,"removeLink",{enumerable:!0,get:function(){return W.default}});var G=r(1270);Object.defineProperty(t,"adjustLinkSelection",{enumerable:!0,get:function(){return G.default}});var U=r(2063);Object.defineProperty(t,"setImageAltText",{enumerable:!0,get:function(){return U.default}});var K=r(6623);Object.defineProperty(t,"adjustImageSelection",{enumerable:!0,get:function(){return K.default}});var V=r(7339);Object.defineProperty(t,"setParagraphMargin",{enumerable:!0,get:function(){return V.default}});var q=r(1340);Object.defineProperty(t,"toggleCode",{enumerable:!0,get:function(){return q.default}});var $=r(5915);Object.defineProperty(t,"paste",{enumerable:!0,get:function(){return $.default}});var Q=r(9894);Object.defineProperty(t,"insertEntity",{enumerable:!0,get:function(){return Q.default}});var X=r(2511);Object.defineProperty(t,"formatWithContentModel",{enumerable:!0,get:function(){return X.formatWithContentModel}});var Z=r(6593);Object.defineProperty(t,"ContentModelEditor",{enumerable:!0,get:function(){return Z.default}});var J=r(1053);Object.defineProperty(t,"isContentModelEditor",{enumerable:!0,get:function(){return J.default}});var Y=r(4e3);Object.defineProperty(t,"ContentModelFormatPlugin",{enumerable:!0,get:function(){return Y.default}});var ee=r(2909);Object.defineProperty(t,"ContentModelEditPlugin",{enumerable:!0,get:function(){return ee.default}});var te=r(1021);Object.defineProperty(t,"ContentModelPastePlugin",{enumerable:!0,get:function(){return te.default}});var re=r(2517);Object.defineProperty(t,"ContentModelTypeInContainerPlugin",{enumerable:!0,get:function(){return re.default}});var oe=r(6093);Object.defineProperty(t,"ContentModelCopyPastePlugin",{enumerable:!0,get:function(){return oe.default}});var ne=r(8974);Object.defineProperty(t,"createContentModelEditorCore",{enumerable:!0,get:function(){return ne.createContentModelEditorCore}}),Object.defineProperty(t,"promoteToContentModelEditorCore",{enumerable:!0,get:function(){return ne.promoteToContentModelEditorCore}});var ae=r(9843);Object.defineProperty(t,"combineBorderValue",{enumerable:!0,get:function(){return ae.combineBorderValue}}),Object.defineProperty(t,"extractBorderValues",{enumerable:!0,get:function(){return ae.extractBorderValues}});var le=r(5866);Object.defineProperty(t,"updateImageMetadata",{enumerable:!0,get:function(){return le.updateImageMetadata}});var ie=r(860);Object.defineProperty(t,"updateTableCellMetadata",{enumerable:!0,get:function(){return ie.updateTableCellMetadata}});var se=r(5165);Object.defineProperty(t,"updateTableMetadata",{enumerable:!0,get:function(){return se.updateTableMetadata}})},5567:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getLeafSiblingBlock=void 0;var o=r(7582),n=r(1246);t.getLeafSiblingBlock=function(e,t,r){for(var a,l=(0,o.__spreadArray)([],(0,o.__read)(e),!1),i=function(){var e=l[0],o=e.blocks.indexOf(t);if(o<0)return"break";var i=e.blocks[o+(r?1:-1)];if(i){for(;"BlockGroup"==i.blockType;){var s=i.blocks[r?0:i.blocks.length-1];if(!s)return{value:{block:i,path:l}};if("BlockGroup"!=s.blockType)return l.unshift(i),{value:{block:s,path:l}};l.unshift(i),i=s}return{value:{block:i,path:l}}}if((0,n.isGeneralSegment)(e)){l.shift();var c=-1,d=e,u=null===(a=l[0])||void 0===a?void 0:a.blocks.find((function(e){return"Paragraph"==e.blockType&&(c=e.segments.indexOf(d))>=0}));if(!u)return"break";var f=u.segments[c+(r?1:-1)];if(f)return{value:{block:u,path:l,siblingSegment:f}};t=u}else{if("Document"==e.blockGroupType||"TableCell"==e.blockGroupType)return"break";l.shift(),t=e}};l.length>0;){var s=i();if("object"==typeof s)return s.value;if("break"===s)break}return null}},9842:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelAlignment=void 0;var o=r(6682),n=r(5544),a={left:{ltr:"start",rtl:"end"},center:{ltr:"center",rtl:"center"},right:{ltr:"end",rtl:"start"}},l={left:{ltr:15,rtl:16},center:{ltr:14,rtl:14},right:{ltr:16,rtl:15}};t.setModelAlignment=function(e,t){var r=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]);return r.forEach((function(e){var r=e.block,n=a[t]["rtl"==r.format.direction?"rtl":"ltr"];"Table"===r.blockType?(0,o.alignTable)(r,l[t]["rtl"==r.format.direction?"rtl":"ltr"]):r&&(r.format.textAlign=n)})),r.length>0}},5078:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelDirection=void 0;var o=r(2874),n=r(5544),a=r(4979);function l(e,t){if("rtl"==e.direction!=("rtl"==t)){e.direction=t;var r=e.marginLeft,o=e.paddingLeft;i(e,"marginLeft",e.marginRight),i(e,"marginRight",r),i(e,"paddingLeft",e.paddingRight),i(e,"paddingRight",o)}}function i(e,t,r){r?e[t]=r:delete e[t]}t.setModelDirection=function(e,t){var r=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]);return r.forEach((function(r){var n=r.block;(0,a.isBlockGroupOfType)(n,"ListItem")?(0,o.findListItemsInSameThread)(e,n).forEach((function(e){e.levels.forEach((function(e){e.format.direction=t})),e.blocks.forEach((function(e){return l(e.format,t)}))})):n&&l(n.format,t)})),r.length>0}},687:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelIndentation=void 0;var o=r(1246),n=r(5544),a=r(4979);t.setModelIndentation=function(e,t,r){void 0===r&&(r=40);var l=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]),i="indent"==t;return l.forEach((function(e){var t=e.block;if((0,a.isBlockGroupOfType)(t,"ListItem"))if(i){var n=t.levels[t.levels.length-1],l=(0,o.createListLevel)((null==n?void 0:n.listType)||"UL",null==n?void 0:n.format);delete l.format.startNumberOverride,t.levels.push(l)}else t.levels.pop();else if(t){var s=t.format,c=s.marginLeft,d=s.marginRight,u="rtl"==s.direction,f=(0,o.parseValueWithUnit)(u?d:c),m=(i?Math.ceil:Math.floor)(f/r)*r;m==f&&(m=Math.max(m+r*(i?1:-1),0)),u?s.marginRight=m+"px":s.marginLeft=m+"px"}})),l.length>0}},6162:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toggleModelBlockQuote=void 0;var o=r(1246),n=r(5544),a=r(4979),l=r(1953);function i(e){return(0,a.isBlockGroupOfType)(e,"FormatContainer")&&"blockquote"==e.tagName}t.toggleModelBlockQuote=function(e,t){var r=(0,n.getOperationalBlocks)(e,["FormatContainer","ListItem"],["TableCell"],!0);if(r.every((function(e){return i(e.block)})))r.forEach((function(e){var t=e.block,r=e.parent;(0,o.unwrapBlock)(r,t)}));else{var a=[],s=function(){return(0,o.createFormatContainer)("blockquote",t)},c=function(e,r){return function(e,t){return i(e)&&(0,o.areSameFormats)(t,e.format)}(e,(null==r?void 0:r.format)||t)};r.forEach((function(e){var t=e.block,r=e.parent;i(t)||(0,l.wrapBlockStep1)(a,r,t,s,c)})),(0,l.wrapBlockStep2)(a,c)}return r.length>0}},512:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearModelFormat=void 0;var o=r(7582),n=r(5294),a=r(4158),l=r(2347),i=r(1246),s=r(4829),c=r(5098),d=r(860),u=r(5165);function f(e,t){var r=(0,s.getClosestAncestorBlockGroupIndex)(e,["FormatContainer"],["TableCell"]);if(r>=0&&r=0&&n>=0){var l=(0,i.createFormatContainer)(o.tagName,o.format);o.blocks.splice(a,1),l.blocks=o.blocks.splice(a),e[r+1].blocks.splice(n+1,0,t,l)}}}function m(e){var t=e[(0,s.getClosestAncestorBlockGroupIndex)(e,["ListItem"],["TableCell"])];t&&(t.levels=[])}function p(e,t){if("Divider"==t.blockType){var r=e[0].blocks.indexOf(t);r>=0&&e[0].blocks.splice(r,1)}else"Paragraph"==t.blockType&&(t.format={},delete t.decorator)}t.clearModelFormat=function(e,t,r,i){(0,c.iterateSelections)([e],(function(e,o,n,a){a&&(0,l.arrayPush)(r,a),n?t.push([e,n]):o&&function(e,t){if(e){var r=e.table,o=e.colIndex,n=e.rowIndex,a=e.isWholeTableSelected,l=r.rows[n].cells[o];l.isSelected&&((0,d.updateTableCellMetadata)(l,(function(){return null})),l.isHeader=!1,l.format={useBorderBox:l.format.useBorderBox}),t.find((function(e){return e[0]==r}))||t.push([r,a])}}(o,i)}),{includeListFormatHolder:e.format?"never":"anySegment"});var s=r[0];if(1==t.length&&function(e){var t="Paragraph"==e.blockType?e.segments.filter((function(e){return e.isSelected})):[];return 1==t.length&&"SelectionMarker"==t[0].segmentType}(t[0][1])&&1==t.length)r.splice.apply(r,(0,o.__spreadArray)([0,r.length],(0,o.__read)((0,n.adjustWordSelection)(e,s)),!1)),m(t[0][0]);else if(t.length>1||t.some((function(e){return function(e){return e.isSelected||"Paragraph"==e.blockType&&e.segments.every((function(e){return e.isSelected}))}(e[1])})))for(var v=t.length-1;v>=0;v--){var g=(0,o.__read)(t[v],2),h=g[0],b=g[1];p(h,b),m(h),f(h,b)}!function(e,t){e.forEach((function(e){e.format=(0,o.__assign)({},t||{}),e.link&&delete e.link.format.textColor,delete e.code}))}(r,e.format),function(e){e.forEach((function(e){var t=(0,o.__read)(e,2),r=t[0];t[1]&&(r.format={useBorderBox:r.format.useBorderBox,borderCollapse:r.format.borderCollapse},(0,u.updateTableMetadata)(r,(function(){return null}))),(0,a.applyTableFormat)(r,void 0,!0)}))}(i)}},1690:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.cloneModel=void 0;var o=r(7582);function n(e){return{format:Object.assign({},e.format)}}function a(e){return{dataset:Object.assign({},e.dataset)}}function l(e){var t=e.blockType;return Object.assign({blockType:t},n(e))}function i(e,t){return{blockGroupType:e.blockGroupType,blocks:e.blocks.map((function(e){return function(e,t){switch(e.blockType){case"BlockGroup":switch(e.blockGroupType){case"FormatContainer":return function(e,t){var r=e.tagName,o=e.cachedElement,n=Object.assign({tagName:r,cachedElement:t.includeCachedElement?o:void 0},l(e),i(e,t));return e.zeroFontSize&&(n.zeroFontSize=!0),n}(e,t);case"General":return u(e,t);case"ListItem":return function(e,t){var r=e.formatHolder,o=e.levels;return Object.assign({formatHolder:f(r),levels:o.map(d)},l(e),i(e,t))}(e,t)}break;case"Divider":return function(e,t){var r=e.tagName,o=e.isSelected,n=e.cachedElement;return Object.assign({isSelected:o,tagName:r,cachedElement:t.includeCachedElement?n:void 0},l(e))}(e,t);case"Entity":return c(e,t);case"Paragraph":return function(e,t){var r=e.cachedElement,i=e.segments,d=e.isImplicit,m=e.decorator,p=e.segmentFormat,v=Object.assign({cachedElement:t.includeCachedElement?r:void 0,isImplicit:d,segments:i.map((function(e){return function(e,t){switch(e.segmentType){case"Br":return s(e);case"Entity":return c(e,t);case"General":return function(e,t){return Object.assign(u(e,t),s(e))}(e,t);case"Image":return l=(n=e).src,i=n.alt,d=n.title,m=n.isSelectedAsImageSelection,Object.assign({src:l,alt:i,title:d,isSelectedAsImageSelection:m},s(n),a(n));case"SelectionMarker":return f(e);case"Text":return o=(r=e).text,Object.assign({text:o},s(r))}var r,o,n,l,i,d,m}(e,t)})),segmentFormat:p?(0,o.__assign)({},p):void 0},l(e),n(e));return m&&(v.decorator=Object.assign({tagName:m.tagName},n(m))),v}(e,t);case"Table":return function(e,t){var r=e.cachedElement,o=e.widths,s=e.rows;return Object.assign({cachedElement:t.includeCachedElement?r:void 0,widths:Array.from(o),rows:s.map((function(e){return function(e,t){var r=e.height,o=e.cells,l=e.cachedElement;return Object.assign({height:r,cachedElement:t.includeCachedElement?l:void 0,cells:o.map((function(e){return function(e,t){var r=e.cachedElement,o=e.isSelected,l=e.spanAbove,s=e.spanLeft,c=e.isHeader;return Object.assign({cachedElement:t.includeCachedElement?r:void 0,isSelected:o,spanAbove:l,spanLeft:s,isHeader:c},i(e,t),n(e),a(e))}(e,t)}))},n(e))}(e,t)}))},l(e),a(e))}(e,t)}}(e,t)}))}}function s(e){var t=e.segmentType,r=e.isSelected,o=e.code,l=e.link,i=Object.assign({segmentType:t,isSelected:r},n(e));return o&&(i.code=n(o)),l&&(i.link=Object.assign(n(l),a(l))),i}function c(e,t){var r=e.wrapper,o=e.isReadonly,n=e.type,a=e.id;return Object.assign({wrapper:t.includeCachedElement?r:r.cloneNode(!0),isReadonly:o,type:n,id:a},l(e),s(e))}function d(e){var t=e.listType;return Object.assign({listType:t},n(e),a(e))}function u(e,t){var r=e.element;return Object.assign({element:t.includeCachedElement?r:r.cloneNode(!0)},l(e),i(e,t))}function f(e){return Object.assign({isSelected:e.isSelected},s(e))}t.cloneModel=function(e,t){var r=i(e,t||{});return e.format&&(r.format=Object.assign({},e.format)),r}},4829:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getClosestAncestorBlockGroupIndex=void 0,t.getClosestAncestorBlockGroupIndex=function(e,t,r){void 0===r&&(r=[]);for(var o=0;o=0)return o;if(r.indexOf(n.blockGroupType)>=0)return-1}return-1}},4979:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBlockGroupOfType=void 0,t.isBlockGroupOfType=function(e,t){return(null==e?void 0:e.blockGroupType)==t}},485:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeModel=void 0;var o=r(7582),n=r(1246),a=r(4158),l=r(473),i=r(4829),s=r(2347),c=r(1303),d=r(1246),u=["h1","h2","h3","h4","h5","h6"];function f(e,t,r){var n,a=e.paragraph,l=e.marker,i=r?a:v(e,t.format),c=i.segments.indexOf(l);if(c>=0&&(n=i.segments).splice.apply(n,(0,o.__spreadArray)([c,0],(0,o.__read)(t.segments),!1)),t.decorator&&(i.decorator=(0,o.__assign)({},t.decorator),u.indexOf(i.decorator.tagName)>-1)){var d=(0,s.getObjectKeys)(i.decorator.format),f=(0,s.getObjectKeys)(i.segmentFormat||{});d.forEach((function(e){var t;f.indexOf(e)>-1&&(null===(t=i.segmentFormat)||void 0===t||delete t[e])}))}r||(i.format=t.format)}function m(e,t,r){var o,l,i=e.tableContext;if(i&&1==r.blocks.length&&r.blocks[0]==t){for(var s=i.table,u=i.colIndex,f=i.rowIndex,m=0;m=s.rows[0].cells.length)for(var h=0;h=s.rows.length)for(s.rows[f+m]||(s.rows[f+m]={cells:[],format:{},height:0}),h=0;h=0&&s.blocks.splice(c,0,t),l&&(null==l||l.levels.forEach((function(e,r){t.levels[r]=(0,o.__assign)({},e)})))}function v(e,t){var r=e.paragraph,n=e.marker,a=e.path,l=r.segments.indexOf(n),s=a[0].blocks.indexOf(r),c=(0,d.createParagraph)(!1,(0,o.__assign)((0,o.__assign)({},r.format),t),r.segmentFormat);l>=0&&(c.segments=r.segments.splice(l)),s>=0&&a[0].blocks.splice(s+1,0,c);var u=(0,i.getClosestAncestorBlockGroupIndex)(a,["ListItem"],["FormatContainer","TableCell"]),f=a[u];if(f){var m=u>=0?a[u+1]:null,p=m?m.blocks.indexOf(f):-1;if(p>=0&&m){var v=(0,d.createListItem)(f.levels,f.formatHolder.format);s>=0&&(v.blocks=f.blocks.splice(s+1)),p>=0&&m.blocks.splice(p+1,0,v),a[u]=v}}return e.paragraph=c,c}function g(e,t){var r=e.path,o=v(e,"Paragraph"!==t.blockType?{}:t.format),n=r[0].blocks.indexOf(o);n>=0&&r[0].blocks.splice(n,0,t)}function h(e,t,r){e.blocks.forEach((function(e){var n;switch(e.blockType){case"BlockGroup":"ListItem"==e.blockGroupType&&(e.formatHolder.format=b(r,t,e.formatHolder.format)),h(e,t,r);break;case"Table":e.rows.forEach((function(e){return e.cells.forEach((function(e){h(e,t,r)}))}));break;case"Paragraph":var a=(null===(n=e.decorator)||void 0===n?void 0:n.format)||{};e.segments.forEach((function(e){"General"==e.segmentType&&h(e,t,r),e.format=b(r,t,(0,o.__assign)((0,o.__assign)({},a),e.format))})),"keepSourceEmphasisFormat"===r&&delete e.decorator}}))}function b(e,t,r){return"mergeAll"==e?(0,o.__assign)((0,o.__assign)({},t),r):(0,o.__assign)((0,o.__assign)({},t),(a={},l=(n=r).fontWeight,i=n.italic,s=n.underline,l&&"normal"!=l&&(a.fontWeight=l),i&&(a.italic=i),s&&(a.underline=s),a));var n,a,l,i,s}t.mergeModel=function(e,t,r,n){var a,i=null!==(a=null==n?void 0:n.insertPosition)&&void 0!==a?a:(0,l.deleteSelection)(e,[],r).insertPoint;if(i){(null==n?void 0:n.mergeFormat)&&"none"!=n.mergeFormat&&h(t,(0,o.__assign)((0,o.__assign)({},e.format||{}),i.marker.format),null==n?void 0:n.mergeFormat);for(var s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.retrieveModelFormatState=void 0;var o=r(9843),n=r(4829),a=r(5539),l=r(5098),i=r(5165);function s(e,t,r,o){o?void 0!==r&&(e[t]=r):r!==e[t]&&delete e[t]}t.retrieveModelFormatState=function(e,t,r){var c,d,u,f=!0,m=!0,p=!0;(0,l.iterateSelections)([e],(function(l,u,v,g){if(function(e,t,r){var o,a,l=(0,n.getClosestAncestorBlockGroupIndex)(t,["ListItem"],[]),i=(0,n.getClosestAncestorBlockGroupIndex)(t,["FormatContainer"],[]);if(l>=0){var c=t[l],d=null===(o=null==c?void 0:c.levels[c.levels.length-1])||void 0===o?void 0:o.listType;s(e,"isBullet","UL"==d,r),s(e,"isNumbering","OL"==d,r)}s(e,"isBlockQuote",i>=0&&"blockquote"==(null===(a=t[i])||void 0===a?void 0:a.tagName),r)}(r,l,f),v&&(d?r.isMultilineSelection=!0:d=v),"Paragraph"==(null==v?void 0:v.blockType)&&(function(e,t,r){var o,n=parseInt(((null===(o=t.decorator)||void 0===o?void 0:o.tagName)||"").substring(1)),a=n>=1&&n<=6?n:void 0;s(e,"marginBottom",t.format.marginBottom,r),s(e,"marginTop",t.format.marginTop,r),s(e,"headingLevel",a,r),s(e,"headerLevel",a,r),s(e,"textAlign",t.format.textAlign,r),s(e,"direction",t.format.direction,r)}(r,v,f),null==g||g.forEach((function(n){var l,i,c,d,u,h,b,y,_;(p||"SelectionMarker"!=n.segmentType)&&(function(e,t,r){var o,n,l=null===(n=null===(o=r.superOrSubScriptSequence)||void 0===o?void 0:o.split(" "))||void 0===n?void 0:n.pop();s(e,"isBold",(0,a.isBold)(r.fontWeight),t),s(e,"isItalic",r.italic,t),s(e,"isUnderline",r.underline,t),s(e,"isStrikeThrough",r.strikethrough,t),s(e,"isSuperscript","super"==l,t),s(e,"isSubscript","sub"==l,t),s(e,"letterSpacing",r.letterSpacing,t),s(e,"fontName",r.fontFamily,t),s(e,"fontSize",r.fontSize,t),s(e,"backgroundColor",r.backgroundColor,t),s(e,"textColor",r.textColor,t),s(e,"lineHeight",r.lineHeight,t)}(r,f,Object.assign({},e.format,v.format,null===(l=v.decorator)||void 0===l?void 0:l.format,n.format,null===(i=n.code)||void 0===i?void 0:i.format,null===(c=n.link)||void 0===c?void 0:c.format,t)),s(r,"isCodeInline",!!(null==n?void 0:n.code),f)),p=!1,r.canUnlink=r.canUnlink||!!n.link,r.canAddImageAltText=r.canAddImageAltText||g.some((function(e){return"Image"==e.segmentType})),f=!1,"Image"===n.segmentType&&(m?(d=r,u=n.format,"borderTop",b=(h=(0,o.extractBorderValues)(u.borderTop)).color,y=h.width,_=h.style,d.imageFormat={borderColor:b,borderWidth:y,borderStyle:_,boxShadow:u.boxShadow,borderRadius:u.borderRadius},m=!1):r.imageFormat=void 0)})),f=!1),u)if(c){var h=c.table,b=c.colIndex,y=c.rowIndex;u.table!=h||u.colIndex==b&&u.rowIndex==y||(r.canMergeTableCell=!0,r.isMultilineSelection=!0)}else!function(e,t){var r=(0,i.updateTableMetadata)(e.table);t.isInTable=!0,t.tableHasHeader=e.table.rows.some((function(e){return e.cells.some((function(e){return e.isHeader}))})),r&&(t.tableFormat=r)}(u,r),c=u}),{includeListFormatHolder:"never"}),r.fontSize&&(r.fontSize=(u=r.fontSize)&&u.indexOf("px")==u.length-2?Math.round(75*parseFloat(u)+.05)/100+"pt":u)}},1953:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapBlockStep2=t.wrapBlockStep1=void 0;var o=r(1246),n=r(2347);t.wrapBlockStep1=function(e,t,r,n,a){var l,i=null!==(l=null==t?void 0:t.blocks.indexOf(r))&&void 0!==l?l:-1;if(t&&i>=0){t.blocks.splice(i,1);var s=t.blocks[i-1],c=a(s)?s:function(e,t,r){var o=r();return e.blocks.splice(t,0,o),o}(t,i,n);(0,o.setParagraphNotImplicit)(r),(0,o.addBlock)(c,r),e.unshift({parent:t,wrapper:c})}},t.wrapBlockStep2=function(e,t){e.forEach((function(e){var r=e.parent,a=e.wrapper,l=r.blocks.indexOf(a),i=r.blocks[l+1];l>=0&&t(i,a)&&(a.blocks.forEach(o.setParagraphNotImplicit),(0,n.arrayPush)(a.blocks,i.blocks),r.blocks.splice(l+1,1))}))}},473:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSelection=void 0;var o=r(7582),n=r(2650);t.deleteSelection=function(e,t,r){void 0===t&&(t=[]);var a=(0,n.deleteExpandedSelection)(e,r);return t.forEach((function(e){e&&function(e){return!!e.insertPoint}(a)&&0==a.deleteResult&&e(a)})),function(e){var t,r=e.insertPoint,n=e.deleteResult,a=e.lastParagraph,l=e.lastTableContext;r&&0!=n&&3!=n&&a&&a!=r.paragraph&&l==r.tableContext&&((t=r.paragraph.segments).push.apply(t,(0,o.__spreadArray)([],(0,o.__read)(a.segments),!1)),a.segments=[])}(a),a}},1685:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteAllSegmentBefore=void 0;var o=r(7483);t.deleteAllSegmentBefore=function(e){for(var t=e.insertPoint,r=t.paragraph,n=t.marker,a=r.segments.indexOf(n)-1;a>=0;a--){var l=r.segments[a];l.isSelected=!0,(0,o.deleteSegment)(r,l,e.formatContext)&&(e.deleteResult=2)}}},8689:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backwardDeleteCollapsedSelection=t.forwardDeleteCollapsedSelection=void 0;var o=r(5567),n=r(1647),a=r(5911),l=r(7483),i=r(1246);function s(e){return function(t){var r,s="forward"==e,c=t.insertPoint,d=c.paragraph,u=c.marker,f=c.path,m=c.tableContext,p=d.segments;!function(e){var t,r;if("Br"==(null===(t=e[e.length-1])||void 0===t?void 0:t.segmentType)){var o=e.filter((function(e){return"SelectionMarker"!=e.segmentType}));"Br"!=(null===(r=o[o.length-2])||void 0===r?void 0:r.segmentType)&&e.pop()}}(p);var v,g=p.indexOf(u)+(s?1:-1),h=p[g];if(h)(0,l.deleteSegment)(d,h,t.formatContext,e)&&(t.deleteResult=1,(0,i.setParagraphNotImplicit)(d));else if(v=(0,o.getLeafSiblingBlock)(f,d,s)){var b=v.block,y=v.path,_=v.siblingSegment;"Paragraph"==b.blockType?(_?(0,l.deleteSegment)(b,_,t.formatContext,e)&&(t.deleteResult=2):(s?t.lastParagraph=b:("Br"==(null===(r=b.segments[b.segments.length-1])||void 0===r?void 0:r.segmentType)&&b.segments.pop(),t.insertPoint=(0,n.createInsertPoint)(u,b,y,m),t.lastParagraph=d,delete b.cachedElement),t.deleteResult=2),t.lastTableContext=m):(0,a.deleteBlock)(y[0].blocks,b,void 0,t.formatContext,e)&&(t.deleteResult=2)}else t.deleteResult=3}}t.forwardDeleteCollapsedSelection=s("forward"),t.backwardDeleteCollapsedSelection=s("backward")},3731:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backwardDeleteWordSelection=t.forwardDeleteWordSelection=void 0;var o,n=r(7582),a=r(8778),l=r(1246);function i(e){return function(t){for(var r=t.insertPoint,o=r.marker,i=r.paragraph,s=i.segments.indexOf(o),c="forward"==e,d=function(e,t,r,o){var i,s,c,d,u,f,m,p,v,g;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:i=r?1:-1,s=e.segments,c=(0,l.isWhiteSpacePreserved)(e),d=t+i,n.label=1;case 1:if(!(d>=0&&d=0&&f0&&(d-=i),[3,6];u.text=g,i>0&&(f-=i)}n.label=5;case 5:return f+=i,[3,3];case 6:return[3,11];case 7:return[4,{punctuation:!0,space:!1,text:!1}];case 8:return n.sent()&&(s.splice(d,1),i>0&&(d-=i),o.deleteResult=2),[3,11];case 9:return[3,11];case 10:return[2,null];case 11:return d+=i,[3,1];case 12:return[2,null]}}))}(i,s,c,t),u=d.next(),f=0;5!=f&&!u.done;){var m=u.value,p=m.punctuation,v=m.space,g=m.text;switch(f){case 0:f=v?4:p?1:2,u=d.next(!0);break;case 1:c&&v?(f=3,u=d.next(!0)):p?u=d.next(!0):f=5;break;case 2:c&&v?(f=3,u=d.next(!0)):g?u=d.next(!0):f=5;break;case 3:p||!v?f=5:u=d.next(!0);break;case 4:v?u=d.next(!0):p?(f=c?3:1,u=d.next(!0)):f=c?5:2}}}}!function(e){e[e.Start=0]="Start",e[e.Punctuation=1]="Punctuation",e[e.Text=2]="Text",e[e.NonText=3]="NonText",e[e.Space=4]="Space",e[e.End=5]="End"}(o||(o={})),t.forwardDeleteWordSelection=i("forward"),t.backwardDeleteWordSelection=i("backward")},1647:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createInsertPoint=void 0,t.createInsertPoint=function(e,t,r,o){return{marker:e,paragraph:t,path:r,tableContext:o}}},5911:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBlock=void 0,t.deleteBlock=function(e,t,r,o,n){var a=e.indexOf(t);switch(t.blockType){case"Table":case"Divider":return r?e.splice(a,1,r):e.splice(a,1),!0;case"Entity":var l=t.isSelected?6:"forward"==n?4:"backward"==n?5:void 0;return void 0!==l&&(r?e.splice(a,1,r):e.splice(a,1),null==o||o.deletedEntities.push({entity:t,operation:l})),!0;case"BlockGroup":switch(t.blockGroupType){case"General":return!!r&&(e.splice(a,1,r),!0);case"ListItem":case"FormatContainer":return e.splice(a,1),!0}}return!1}},2650:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteExpandedSelection=void 0;var o=r(7582),n=r(1647),a=r(5911),l=r(7483),i=r(5098),s=r(1246),c={contentUnderSelectedTableCell:"ignoreForTableOrCell",contentUnderSelectedGeneralElement:"generalElementOnly",includeListFormatHolder:"never"};t.deleteExpandedSelection=function(e,t){var r={deleteResult:0,insertPoint:null,formatContext:t};return(0,i.iterateSelections)([e],(function(t,i,c,d){var u=(0,s.createParagraph)(!0,void 0,e.format),f=e.format,m=0;if(d)d[0]&&"Paragraph"==(null==c?void 0:c.blockType)&&(m=(u=c).segments.indexOf(d[0]),f=d[0].format,r.lastParagraph=u,r.lastTableContext=i,d.forEach((function(e,o){0!=o||r.insertPoint||"SelectionMarker"!=e.segmentType?(0,l.deleteSegment)(c,e,r.formatContext)&&(r.deleteResult=2):r.insertPoint=(0,n.createInsertPoint)(e,c,t,i)})),2==r.deleteResult&&(0,s.setParagraphNotImplicit)(c));else if(c){var p=t[0].blocks;(0,a.deleteBlock)(p,c,u,r.formatContext)&&(r.deleteResult=2)}else if(i){var v=i.table,g=i.colIndex,h=i.rowIndex,b=v.rows[h],y=b.cells[g];t=(0,o.__spreadArray)([y],(0,o.__read)(t),!1),u.segments.push((0,s.createBr)(e.format)),y.blocks=[u],delete y.cachedElement,delete b.cachedElement,r.deleteResult=2}if(!r.insertPoint){var _=(0,s.createSelectionMarker)(f);(0,s.setParagraphNotImplicit)(u),u.segments.splice(m,0,_),r.insertPoint=(0,n.createInsertPoint)(_,u,t,i)}}),c),r}},7483:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSegment=void 0;var o=r(4486),n=r(1246),a=r(8778);t.deleteSegment=function(e,t,r,l){var i=e.segments,s=i.indexOf(t),c=(0,n.isWhiteSpacePreserved)(e),d="forward"==l,u="backward"==l;switch(c||function(e,t){for(var r,o=t-1;"SelectionMarker"==(null===(r=e[o])||void 0===r?void 0:r.segmentType);)o--;var a=e[o];a&&(0,n.normalizeSingleSegment)(a)}(i,s),t.segmentType){case"Br":case"Image":case"SelectionMarker":return i.splice(s,1),!0;case"Entity":var f=t.isSelected?6:d?4:u?5:void 0;return void 0!==f&&(i.splice(s,1),null==r||r.deletedEntities.push({entity:t,operation:f})),!0;case"Text":var m=t.text;return 0==m.length||t.isSelected?i.splice(s,1):l&&(m=(0,o.deleteSingleChar)(m,d),c||(m=(0,a.normalizeText)(m,d)),""==m?i.splice(s,1):t.text=m),!0;case"General":return!!t.isSelected&&(i.splice(s,1),!0)}}},4486:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSingleChar=void 0;var o=r(7582);t.deleteSingleChar=function(e,t){for(var r=(0,o.__spreadArray)([],(0,o.__read)(e),!1),n=0,a=t?0:r.length-1,l="notDeleted";a>=0&&a{Object.defineProperty(t,"__esModule",{value:!0}),t.insertEntityModel=void 0;var o=r(7582),n=r(1246),a=r(473),l=r(4829),i=r(5736);t.insertEntityModel=function(e,t,r,s,c,d){var u,f,m,p,v=-1;if("begin"==r||"end"==r)m=e,v="begin"==r?0:e.blocks.length;else if((p=(0,a.deleteSelection)(e,[],d)).insertPoint){var g=p.insertPoint,h=g.marker,b=g.paragraph,y=g.path;if(2==p.deleteResult&&(0,n.normalizeContentModel)(e),s){var _="root"==r?(0,l.getClosestAncestorBlockGroupIndex)(y,["TableCell","Document"]):0;m=y[_];var C=y[_-1],P="FormatContainer"==(null==C?void 0:C.blockGroupType)||"General"==(null==C?void 0:C.blockGroupType)||"ListItem"==(null==C?void 0:C.blockGroupType)?C:b,k=m.blocks.indexOf(P);v=k>=0?k+1:-1}else{var S=b.segments.indexOf(h);S>=0&&b.segments.splice(c?S:S+1,0,t)}}if(v>=0&&m){var O=[],M=void 0;if(s){var T=m.blocks[v];O.push(t),"Paragraph"==(null==T?void 0:T.blockType)?M=T:T&&"Entity"!=T.blockType&&!c||((M=(0,n.createParagraph)(!1,{},e.format)).segments.push((0,n.createBr)(e.format)),O.push(M))}else(M=(0,n.createParagraph)(!1,void 0,e.format)).segments.push(t),O.push(M);if((u=m.blocks).splice.apply(u,(0,o.__spreadArray)([v,0],(0,o.__read)(O),!1)),c&&M){h=(0,n.createSelectionMarker)((null===(f=M.segments[0])||void 0===f?void 0:f.format)||e.format);var w=M.segments;s?w.unshift(h):w.push(h),(0,i.setSelection)(e,h,h)}}}},2976:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.canApplyPendingFormat=t.clearPendingFormat=t.setPendingFormat=t.getPendingFormat=void 0,t.getPendingFormat=function(e){return o(e).format},t.setPendingFormat=function(e,t,r){var n=o(e);n.format=t,n.position=r},t.clearPendingFormat=function(e){var t=o(e);t.format=null,t.position=null},t.canApplyPendingFormat=function(e){var t=o(e),r=!1;if(t.format&&t.position){var n=e.getFocusedPosition();(null==n?void 0:n.equalTo(t.position))&&(r=!0)}return r};var r="__ContentModelPendingFormat";function o(e){return e.getCustomData(r,(function(){return{format:null,position:null}}))}},1354:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9843),n=r(1246);t.default=function(e,t,r){if(t){var a=e.format,l=t.width,i=t.style,s=t.color,c=(0,o.extractBorderValues)(a.borderTop),d=c.color,u=c.width,f=c.style,m="";m=l?(0,n.parseValueWithUnit)(l)+"px":u||"1px",i?m=m+" "+i:f?m=m+" "+f:m+=" solid",s?m=m+" "+s:d&&(m=m+" "+d),e.format.borderLeft=m,e.format.borderTop=m,e.format.borderBottom=m,e.format.borderRight=m}else delete e.format.borderLeft,delete e.format.borderTop,delete e.format.borderBottom,delete e.format.borderRight;r&&(e.format.borderRadius=r)}},2874:(e,t)=>{function r(e,t){e.blocks.forEach((function(e){switch(e.blockType){case"BlockGroup":"ListItem"==e.blockGroupType?t.push(e):(o(t),r(e,t),o(t));break;case"Paragraph":o(t),e.segments.forEach((function(e){"General"==e.segmentType&&r(e,t)})),o(t);break;case"Table":o(t),e.rows.forEach((function(e){return e.cells.forEach((function(e){r(e,t)}))})),o(t)}}))}function o(e){var t=e[e.length-1];t&&null===t||e.push(null)}function n(e,t,r){var o=e[t].levels,n=e[r].levels;return o.length<=n.length&&o.every((function(e,t){return e.listType==n[t].listType}))}function a(e,t){return e.levels.slice(0,t).some((function(e){return void 0!==e.format.startNumberOverride}))}Object.defineProperty(t,"__esModule",{value:!0}),t.findListItemsInSameThread=void 0,t.findListItemsInSameThread=function(e,t){var o=[];return r(e,o),function(e,t){var r,o=[],l=e.indexOf(t),i=t.levels.length,s="OL"==(null===(r=t.levels[i-1])||void 0===r?void 0:r.listType);if(l>=0){for(var c=l;c>=0;c--){if(!(u=e[c])){if(s)continue;break}var d=a(u,i);if(n(e,l,c)){if(o.unshift(u),s&&d)break}else if(!s||d)break}for(c=l+1;c{Object.defineProperty(t,"__esModule",{value:!0}),t.setListType=void 0;var o=r(5544),n=r(4979),a=r(1246);function l(e){return"Paragraph"!=e.blockType||e.segments.every((function(e){return"Br"==e.segmentType||"SelectionMarker"==e.segmentType}))}t.setListType=function(e,t){var r=(0,o.getOperationalBlocks)(e,["ListItem"],[]),i=r.every((function(e){var r,o=e.block;return(0,n.isBlockGroupOfType)(o,"ListItem")?(null===(r=o.levels[o.levels.length-1])||void 0===r?void 0:r.listType)==t:l(o)})),s=[],c=!1;return r.forEach((function(e,o){var d,u,f=e.block,m=e.parent;if((0,n.isBlockGroupOfType)(f,"ListItem")){var p=f.levels.pop();!i&&p?(p.listType=t,f.levels.push(p)):1==f.blocks.length&&(0,a.setParagraphNotImplicit)(f.blocks[0])}else{var v=m.blocks.indexOf(f);if(v>=0)if(1!=r.length&&l(f))c=!0,s.forEach((function(e){return e.levels[0].format.marginBottom="0"})),s=[];else{var g=m.blocks[v-1],h="Paragraph"==f.blockType&&(null===(d=f.segments[0])||void 0===d?void 0:d.format)||{},b=(0,a.createListItem)([(0,a.createListLevel)(t,{startNumberOverride:o>0||"BlockGroup"==(null==g?void 0:g.blockType)&&"ListItem"==g.blockGroupType&&"OL"==(null===(u=g.levels[0])||void 0===u?void 0:u.listType)?void 0:1,direction:f.format.direction,textAlign:f.format.textAlign,marginTop:c?"0":void 0})],{fontFamily:h.fontFamily,fontSize:h.fontSize,textColor:h.textColor});"Paragraph"==f.blockType&&(f.isImplicit=!0),b.blocks.push(f),m.blocks.splice(v,1,b),s.push(b)}}})),(0,a.normalizeContentModel)(e),r.length>0}},5113:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.adjustSegmentSelection=void 0;var o=r(5544),n=r(5736);t.adjustSegmentSelection=function(e,t,r){var a,l,i=(0,o.getSelectedParagraphs)(e),s=!1;return i.forEach((function(e){var o=a?0:e.segments.findIndex((function(e){return t(e)})),n=e.segments;if(!a){a=n[o];for(var i=o;i>0;i--){if(!r(n[i-1],a)){s=s||!!n[i-1].isSelected;break}a=n[i-1],s=s||!n[i-1].isSelected}}if(a)for(i=o;i{Object.defineProperty(t,"__esModule",{value:!0}),t.adjustWordSelection=void 0;var o=r(7582),n=r(1246),a=r(8778),l=r(5098);function i(e,t){var r=e.text,o=-1;if(t)for(var n=0;n=0;n--)if(l=r[n],(0,a.isPunctuation)(l)||(0,a.isSpace)(l)){o=n+1;break}return o}function s(e,t,r,a){var l=t.text,i=(0,n.createText)(l.substring(0,a),e[r].format);t.code&&(i.code={format:(0,o.__assign)({},t.code.format)}),t.link&&(i.link={format:(0,o.__assign)({},t.link.format),dataset:(0,o.__assign)({},t.link.dataset)}),t.text=l.substring(a,l.length),e.splice(r,0,i)}t.adjustWordSelection=function(e,t){var r;if((0,l.iterateSelections)([e],(function(e,o,n,a){return"Paragraph"==(null==n?void 0:n.blockType)&&1==(null==a?void 0:a.length)&&a[0]==t&&(r=n),!0})),r){for(var o=[],n=r.segments.indexOf(t),a=n-1;a>=0&&"Text"==(c=r.segments[a]).segmentType;a--){if((d=i(c,!1))>-1){if(d==c.text.length)break;s(r.segments,c,a,d),o.push(r.segments[a+1]);break}o.push(r.segments[a])}if(n=r.segments.indexOf(t),o.push(t),o.length<=1)return o;for(a=n+1;a-1){if(0==d)break;s(r.segments,c,a,d),o.push(r.segments[a]);break}o.push(r.segments[a])}return o[o.length-1]==t?[t]:o}return[t]}},981:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.collapseTableSelection=void 0;var o=r(1246);t.collapseTableSelection=function(e,t){var r,n=t.firstCol,a=null===(r=e[t.firstRow])||void 0===r?void 0:r.cells[n];a&&(0,o.addSegment)(a,(0,o.createSelectionMarker)())}},5544:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFirstSelectedListItem=t.getFirstSelectedTable=t.getOperationalBlocks=t.getSelectedParagraphs=t.getSelectedSegmentsAndParagraphs=void 0;var o=r(7582),n=r(4979),a=r(5098),l=r(4829);function i(e,t,r,o){var n=[],a=o?t.map((function(e){return[e]})):[t],i=s(e,{includeListFormatHolder:"never",contentUnderSelectedTableCell:"ignoreForTable"});return c(i),i.forEach((function(e){for(var t=e.path,o=e.block,i=function(e){var i=(0,l.getClosestAncestorBlockGroupIndex)(t,a[e],r);return i>=0?(n.filter((function(e){return e.block==t[i]})).length<=0&&n.push({parent:t[i+1],block:t[i]}),"break"):e==a.length-1&&o?(n.push({parent:t[0],block:o}),"break"):void 0},s=0;s1&&d(e,!1)&&e.pop(),e.length>1&&d(e,!0)&&e.shift()}function d(e,t){var r,o=e[t?0:e.length-1];if("Paragraph"==(null===(r=o.block)||void 0===r?void 0:r.blockType)&&o.segments&&o.segments.length>0){var n=o.block.segments,a=o.segments[0];return 1==o.segments.length&&"SelectionMarker"==a.segmentType&&a==n[t?n.length-1:0]}return!1}t.getSelectedSegmentsAndParagraphs=function(e,t){var r=s(e,{includeListFormatHolder:t?"allSegments":"never"}),o=[];return r.forEach((function(e){var r=e.segments,n=e.block;r&&(t&&!n||"Paragraph"==(null==n?void 0:n.blockType))&&r.forEach((function(e){"Entity"==e.segmentType&&e.isReadonly||o.push([e,"Paragraph"==(null==n?void 0:n.blockType)?n:null])}))})),o},t.getSelectedParagraphs=function(e){var t=s(e,{includeListFormatHolder:"never"}),r=[];return c(t),t.forEach((function(e){var t=e.block;"Paragraph"==(null==t?void 0:t.blockType)&&r.push(t)})),r},t.getOperationalBlocks=i,t.getFirstSelectedTable=function(e){var t,r=s(e,{includeListFormatHolder:"never"}),n=[];return c(r),r.forEach((function(e){var r=e.block,a=e.tableContext,l=e.path;if(!t)if("Table"==(null==r?void 0:r.blockType))t=r,n=(0,o.__spreadArray)([],(0,o.__read)(l),!1);else if(null==a?void 0:a.table){t=a.table;var i=l.filter((function(e){return e.blocks.indexOf(a.table)>=0}))[0],s=l.indexOf(i);n=s>=0?l.slice(s):[]}})),[t,n]},t.getFirstSelectedListItem=function(e){var t;return i(e,["ListItem"],["TableCell"]).forEach((function(e){!t&&(0,n.isBlockGroupOfType)(e.block,"ListItem")&&(t=e.block)})),t}},2812:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRootNode=void 0,t.getSelectionRootNode=function(e){var t;return e?0==e.type?null===(t=e.ranges[0])||void 0===t?void 0:t.commonAncestorContainer:1==e.type?e.table:2==e.type?e.image:void 0:void 0}},5098:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.iterateSelections=void 0;var o=r(7582);function n(e,t,r,a,l){for(var i=e[0],s=(null==r?void 0:r.includeListFormatHolder)||"allSegments",c=(null==r?void 0:r.contentUnderSelectedTableCell)||"include",d=(null==r?void 0:r.contentUnderSelectedGeneralElement)||"contentOnly",u=!1,f=!1,m=0;m0&&t(e,a,p,O))return!0;break;case"Divider":case"Entity":if((l||p.isSelected)&&t(e,a,p))return!0}}return!("never"==s||"ListItem"!=i.blockGroupType||!u||f&&"anySegment"!=s||!t(e,a,void 0,[i.formatHolder]))}t.iterateSelections=function(e,t,r,o,a){n(e,(function(e,r,o,n){var a;return(null===(a=o)||void 0===a?void 0:a.cachedElement)&&delete o.cachedElement,t(e,r,o,n)}),r,o,a)}},5736:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setSelection=void 0;var o=r(1246);function n(e,t,r,s){return i(t,e,r,s,(function(t){return(0,o.isGeneralSegment)(e)&&l(e,t),e.blocks.forEach((function(e){t=function(e,t,r,o){switch(e.blockType){case"BlockGroup":return n(e,t,r,o);case"Table":return function(e,t,r,o){var i=a(e,r),s=o?a(e,o):i;if(!t&&i&&s)for(var c=0;c=i.y&&c<=s.y&&d>=i.x&&d<=s.x;l(e.rows[c].cells[d],u)}else e.rows.forEach((function(e){return e.cells.forEach((function(e){t=n(e,t,r,o)}))}));return t}(e,t,r,o);case"Divider":case"Entity":return i(t,e,r,o,(function(t){return t?e.isSelected=!0:delete e.isSelected,t}));case"Paragraph":var s=[];for(e.segments.forEach((function(e,a){t=i(t,e,r,o,(function(t){return function(e,t,r,o,a,i){switch(e.segmentType){case"SelectionMarker":return(!t||e!=o&&e!=a)&&r.push(i),t;case"General":return l(e,t),e!=o&&e!=a?n(e,t,o,a):t;case"Image":return l(e,t),e.isSelectedAsImageSelection=o==e&&(!a||a==e),t;default:return l(e,t),t}}(e,t,s,r,o,a)}))}));s.length>0;){var c=s.pop();c>=0&&e.segments.splice(c,1)}return t;default:return t}}(e,t,r,s)})),t}))}function a(e,t){var r=-1,o=-1;if(t)for(var n=0;o<0&&n=0&&o>=0?{x:r,y:o}:void 0}function l(e,t){return t?e.isSelected=!0:delete e.isSelected,t}function i(e,t,r,o,n){return(e=n(e=e||t==r))&&!!o&&t!=o}t.setSelection=function(e,t,r){n(e,!1,t||null,r||null)}},6682:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.alignTable=void 0,t.alignTable=function(e,t){e.format.marginLeft=15==t?"":"auto",e.format.marginRight=16==t?"":"auto",delete e.cachedElement}},7691:(e,t,r)=>{var o,n;Object.defineProperty(t,"__esModule",{value:!0}),t.alignTableCell=void 0;var a=r(5226),l=r(860),i=((o={})[17]="start",o[18]="center",o[19]="end",o),s=((n={})[20]="top",n[21]="middle",n[22]="bottom",n);t.alignTableCell=function(e,t){var r,o=(0,a.getSelectedCells)(e);if(o)for(var n=i[t],c=s[t],d=o.firstRow;d<=o.lastRow;d++)for(var u=o.firstCol;u<=o.lastCol;u++){var f=null===(r=e.rows[d])||void 0===r?void 0:r.cells[u],m=null==f?void 0:f.format;m&&(delete f.cachedElement,m.textAlign=n||m.textAlign,m.verticalAlign=c||m.verticalAlign,c&&(0,l.updateTableCellMetadata)(f,(function(e){return(e=e||{}).vAlignOverride=!0,e})))}}},4158:(e,t,r)=>{var o;Object.defineProperty(t,"__esModule",{value:!0}),t.applyTableFormat=void 0;var n=r(7582),a=r(1246),l=r(9843),i=r(3684),s=r(860),c=r(5165),d={topBorderColor:"#ABABAB",bottomBorderColor:"#ABABAB",verticalBorderColor:"#ABABAB",hasHeaderRow:!1,hasFirstColumn:!1,hasBandedRows:!1,hasBandedColumns:!1,bgColorEven:null,bgColorOdd:"#ABABAB20",headerRowColor:"#ABABAB",tableBorderFormat:0,verticalAlign:null};t.applyTableFormat=function(e,t,r){var o=e.rows;(0,c.updateTableMetadata)(e,(function(c){var p=(0,n.__assign)((0,n.__assign)((0,n.__assign)({},d),c),t||{}),v=function(e,t){var r={bgColorOverrides:[],vAlignOverrides:[]};return e.forEach((function(e){var o=[],n=[];r.bgColorOverrides.push(o),r.vAlignOverrides.push(n),e.cells.forEach((function(e){(0,s.updateTableCellMetadata)(e,(function(e){return e&&t?(o.push(!1),delete e.bgColorOverride):o.push(!!(null==e?void 0:e.bgColorOverride)),n.push(!!(null==e?void 0:e.vAlignOverride)),e}))}))})),r}(o,!r);return delete e.cachedElement,function(e){e.forEach((function(e){e.cells.forEach((function(e){delete e.cachedElement})),delete e.cachedElement}))}(o),function(e,t,r){var o=t.hasBandedRows,n=t.hasBandedColumns,s=t.bgColorOdd,c=t.bgColorEven;e.forEach((function(d,f){d.cells.forEach((function(p,v){var g=u[t.tableBorderFormat]({firstRow:0===f,lastRow:f===e.length-1,firstColumn:0===v,lastColumn:v===d.cells.length-1}),h=[t.topBorderColor,t.verticalBorderColor,t.bottomBorderColor,t.verticalBorderColor];if(g.forEach((function(e,t){var r=!e&&h[t]||"";p.format[a.BorderKeys[t]]=(0,l.combineBorderValue)({style:m(r),width:"1px",color:r})})),!r.bgColorOverrides[f][v]){var b=(o||n)&&(n&&v%2!=0||o&&f%2!=0)?s:c;(0,i.setTableCellBackgroundColor)(p,b)}t.verticalAlign&&!r.vAlignOverrides[f][v]&&(p.format.verticalAlign=t.verticalAlign)}))}))}(o,p,v),function(e,t,r){e.forEach((function(o,n){o.cells.forEach((function(o,a){t.hasFirstColumn&&0===a?(o.isHeader=!0,0===n||r.bgColorOverrides[n][a]||(f(o.format,"borderTop"),(0,i.setTableCellBackgroundColor)(o,null)),n!==e.length-1&&0!==n&&f(o.format,"borderBottom")):o.isHeader=!1}))}))}(o,p,v),function(e,t,r){var o;null===(o=e[0])||void 0===o||o.cells.forEach((function(e,o){e.isHeader=t.hasHeaderRow,t.hasHeaderRow&&t.headerRowColor&&(r.bgColorOverrides[0][o]||(0,i.setTableCellBackgroundColor)(e,t.headerRowColor),f(e.format,"borderTop",t.headerRowColor),f(e.format,"borderRight",t.headerRowColor),f(e.format,"borderLeft",t.headerRowColor))}))}(o,p,v),p}))};var u=((o={})[0]=function(e){return[!1,!1,!1,!1]},o[1]=function(e){return[!1,!e.lastColumn,!1,!e.firstColumn]},o[4]=function(e){var t=e.firstColumn,r=e.firstRow;return[!r,!e.lastColumn&&!t||t&&r,!e.lastRow&&!r,!t]},o[2]=function(e){var t=e.firstRow,r=e.firstColumn,o=e.lastColumn;return[t,t||o,!1,t||r]},o[3]=function(e){var t=e.firstColumn;return[!1,e.lastColumn,!1,t]},o[5]=function(e){var t=e.firstRow,r=e.firstColumn;return[r&&!t,t,r&&!t,t&&!r]},o[6]=function(e){var t=e.firstRow,r=e.firstColumn;return[!t,t||!r,!t,!r]},o[7]=function(e){var t=e.firstColumn,r=e.firstRow;return[!0,r||!t,!r,!0]},o[8]=function(){return[!0,!0,!0,!0]},o);function f(e,t,r){var o=(0,l.extractBorderValues)(e[t]);o.color=r||"",o.style=m(o.color),e[t]=(0,l.combineBorderValue)(o)}function m(e){return e&&"transparent"!=e?"solid":"none"}},5788:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.canMergeCells=void 0,t.canMergeCells=function(e,t,r,o,n){var a=r==n||e[t].cells.every((function(e,t){return tn||!e.spanAbove})),l=t==o||e.every((function(e,n){return no||!e.cells[r].spanLeft})),i=e[o].cells.map((function(t,a){return a>=r&&a<=n?function(e,t,r){for(var o,n,a=0,l=t+1;l=t&&a<=o?function(e,t,r){for(var o,n,a,l=0,i=r+1;i<(null===(o=e[t])||void 0===o?void 0:o.cells.length)&&(null===(a=null===(n=e[t])||void 0===n?void 0:n.cells[i])||void 0===a?void 0:a.spanLeft);i++)l++;return l}(e,a,n):-1})).every((function(e,r,o){return e<0||e==o[t]}));return a&&l&&i&&s}},2969:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTableStructure=void 0;var o=r(1246);t.createTableStructure=function(e,t,r){var n=(0,o.createTable)(r);return(0,o.addBlock)(e,n),n.rows.forEach((function(e){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTable=void 0,t.deleteTable=function(e){e.rows=[],delete e.cachedElement}},629:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTableColumn=void 0;var o=r(981),n=r(5226);t.deleteTableColumn=function(e){var t=(0,n.getSelectedCells)(e);if(t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTableRow=void 0;var o=r(981),n=r(5226);t.deleteTableRow=function(e){var t=(0,n.getSelectedCells)(e);t&&(e.rows[t.firstRow].cells.forEach((function(r,o){var n,a=null===(n=e.rows[t.lastRow+1])||void 0===n?void 0:n.cells[o];a&&(a.spanAbove=a.spanAbove&&r.spanAbove)})),e.rows.splice(t.firstRow,t.lastRow-t.firstRow+1),(0,o.collapseTableSelection)(e.rows,t))}},9073:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ensureFocusableParagraphForTable=void 0;var o=r(1246);function n(e){var t=(0,o.createParagraph)(!1,void 0,e.format),r=(0,o.createBr)(e.format);return t.segments.push(r),t}t.ensureFocusableParagraphForTable=function(e,t,r){var o,a,l,i=null===(o=r.rows.filter((function(e){return e.cells.length>0}))[0])||void 0===o?void 0:o.cells[0];if(i)(l=i.blocks.filter((function(e){return"Paragraph"==e.blockType}))[0])||(l=n(e),i.blocks.push(l));else{var s,c=r;for(l=n(e);s=t.shift();){var d=null!==(a=s.blocks.indexOf(c))&&void 0!==a?a:-1;if(s&&d>=0&&s.blocks.splice(d,1,l),"FormatContainer"!=s.blockGroupType||1!=s.blocks.length||s.blocks[0]!=l)break;c=s}}return l}},5226:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectedCells=void 0;var o=r(7536);t.getSelectedCells=function(e){var t=-1,r=-1,n=-1,a=-1,l=!1;return e.rows.forEach((function(e,i){return e.cells.forEach((function(e,s){(0,o.default)(e)&&(l=!0,t<0&&(t=i),r<0&&(r=s),n=Math.max(n,i),a=Math.max(a,s))}))})),l?{firstRow:t,firstCol:r,lastRow:n,lastCol:a}:null}},7350:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.insertTableColumn=void 0;var o=r(1246),n=r(5226);t.insertTableColumn=function(e,t){var r=(0,n.getSelectedCells)(e),a=2==t;if(r)for(var l=null==r?void 0:r.firstCol;l<=r.lastCol;l++)e.rows.forEach((function(e){var t=e.cells[a?r.firstCol:r.lastCol];e.cells.splice(a?r.firstCol:r.lastCol+1,0,(0,o.createTableCell)(t.spanLeft,t.spanAbove,t.isHeader,t.format))})),e.widths.splice(a?r.firstCol:r.lastCol+1,0,e.widths[a?r.firstCol:r.lastCol])}},9457:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.insertTableRow=void 0;var o=r(7582),n=r(1246),a=r(5226);t.insertTableRow=function(e,t){var r=(0,a.getSelectedCells)(e),l=0==t;if(r)for(var i=r.firstRow;i<=r.lastRow;i++){var s=e.rows[l?r.firstRow:r.lastRow];e.rows.splice(l?r.firstRow:r.lastRow+1,0,{format:(0,o.__assign)({},s.format),cells:s.cells.map((function(e){return(0,n.createTableCell)(e.spanLeft,e.spanAbove,e.isHeader,e.format)})),height:s.height})}}},8509:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableCells=void 0;var o=r(5788),n=r(5226);t.mergeTableCells=function(e){var t=(0,n.getSelectedCells)(e);if(t&&(0,o.canMergeCells)(e.rows,t.firstRow,t.firstCol,t.lastRow,t.lastCol))for(var r=t.firstRow;r<=t.lastRow;r++){for(var a=t.firstCol;a<=t.lastCol;a++){var l=e.rows[r].cells[a];l&&(l.spanLeft=a>t.firstCol,l.spanAbove=r>t.firstRow,delete l.cachedElement)}delete e.rows[r].cachedElement}}},4765:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableColumn=void 0;var o=r(5788),n=r(5226);t.mergeTableColumn=function(e,t){var r,a,l,i,s=(0,n.getSelectedCells)(e);if(s){var c=9==t?s.firstCol:s.lastCol+1;if(c>0&&c{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableRow=void 0;var o=r(5788),n=r(5226);t.mergeTableRow=function(e,t){var r,a,l,i=(0,n.getSelectedCells)(e);if(i){var s=7==t?i.firstRow:i.lastRow+1;if(s>0&&s{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeTable=void 0;var o=r(7582),n=r(1246),a=r(2347);function l(e){return e<=4?120:e<=6?100:70}function i(e,t){t.blocks.every((function(e){return"Paragraph"==e.blockType&&(0==(t=(t=e.segments).filter((function(e){return"SelectionMarker"!=e.segmentType}))).length||1==t.length&&"Br"==t[0].segmentType);var t}))||((0,a.arrayPush)(e.blocks,t.blocks),t.blocks=[])}t.normalizeTable=function(e,t){var r,a=e.format;a.borderCollapse&&a.useBorderBox||(a.borderCollapse=!0,a.useBorderBox=!0),e.rows.forEach((function(e,r){e.cells.forEach((function(e,o){0==e.blocks.length&&((0,n.addBlock)(e,(0,n.createParagraph)(void 0,void 0,t)),(0,n.addSegment)(e,(0,n.createBr)(t))),0==r?e.spanAbove=!1:r>0&&e.isHeader&&(e.isHeader=!1,delete e.cachedElement),0==o&&(e.spanLeft=!1),e.format.useBorderBox=!0})),e.height<22&&(e.height=22)}));for(var s=Math.max.apply(Math,(0,o.__spreadArray)([],(0,o.__read)(e.rows.map((function(e){return e.cells.length}))),!1)),c=0;c0;u--)d(u);for(var f=function(t){var r=e.rows[t];r.cells.forEach((function(r,o){var n,a=null===(n=e.rows[t-1])||void 0===n?void 0:n.cells[o];a&&r.spanAbove&&i(a,r)})),r.cells.every((function(e){return e.spanAbove}))&&(e.rows[t-1].height+=r.height,e.rows.splice(t,1))},m=e.rows.length-1;m>0;m--)f(m)}},3684:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setTableCellBackgroundColor=void 0;var o=r(2347),n=r(860);t.setTableCellBackgroundColor=function(e,t,r){if(t){e.format.backgroundColor=t,r&&(0,n.updateTableCellMetadata)(e,(function(e){return(e=e||{}).bgColorOverride=!0,e}));var a=function(e){var t=(0,o.parseColor)(e);if(t){var r=t[0]/255,n=t[1]/255,a=t[2]/255;return 50*(Math.max(r,n,a)+Math.min(r,n,a))}return 255}(t);a<20?e.format.textColor="#ffffff":a>80?e.format.textColor="#000000":delete e.format.textColor}else delete e.format.backgroundColor,delete e.format.textColor;delete e.cachedElement}},3618:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.splitTableCellHorizontally=void 0;var o=r(7582),n=r(1246),a=r(5226);t.splitTableCellHorizontally=function(e){var t=(0,a.getSelectedCells)(e);if(t)for(var r=function(r){if(e.rows.every((function(e,o){var n;return ot.lastRow||(null===(n=e.cells[r+1])||void 0===n?void 0:n.spanLeft)})))e.rows.forEach((function(e,o){delete e.cells[r].cachedElement,o>=t.firstRow&&o<=t.lastRow&&(e.cells[r+1].spanLeft=!1,delete e.cells[r+1].cachedElement)}));else{e.rows.forEach((function(e,a){var l=e.cells[r];if(l){var i=(0,n.createTableCell)(l.spanLeft,l.spanAbove,l.isHeader,l.format);i.dataset=(0,o.__assign)({},l.dataset),at.lastRow?i.spanLeft=!0:i.isSelected=l.isSelected,e.cells.splice(r+1,0,i),delete e.cells[r].cachedElement}}));var a=Math.max(e.widths[r]/2,30);e.widths.splice(r,1,a,a)}},l=t.lastCol;l>=t.firstCol;l--)r(l)}},2242:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.splitTableCellVertically=void 0;var o=r(7582),n=r(1246),a=r(5226);t.splitTableCellVertically=function(e){var t=(0,a.getSelectedCells)(e);if(t)for(var r=t.lastRow;r>=t.firstRow;r--){var l=e.rows[r],i=e.rows[r+1];if(l.cells.forEach((function(e){delete e.cachedElement})),delete l.cachedElement,null==i?void 0:i.cells.every((function(e,r){return rt.lastCol||e.spanAbove})))i.cells.forEach((function(e,r){r>=t.firstCol&&r<=t.lastCol&&(e.spanAbove=!1,delete e.cachedElement)})),delete i.cachedElement;else{var s=Math.max(l.height/=2,22),c={format:(0,o.__assign)({},l.format),height:s,cells:l.cells.map((function(e,r){var a=(0,n.createTableCell)(e.spanLeft,e.spanAbove,e.isHeader,e.format);return a.dataset=(0,o.__assign)({},e.dataset),rt.lastCol?a.spanAbove=!0:a.isSelected=e.isSelected,a}))};l.height=s,e.rows.splice(r+1,0,c)}}}},5149:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(9842);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setAlignment",(function(e){return(0,n.setModelAlignment)(e,t)}))}},8365:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(5078);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setDirection",(function(e){return(0,n.setModelDirection)(e,t)}))}},2923:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(1246),a=r(9139);t.default=function(e,t){(0,a.formatParagraphWithContentModel)(e,"setHeadingLevel",(function(e){var r,a,l,i=t>0?"h"+t:(a=(null==(r=e.decorator)?void 0:r.tagName)||"",(l=parseInt(a.substring(1)))>=1&&l<=6?a:null),s=i&&n.defaultImplicitFormatMap[i]||{};t>0?(e.decorator={tagName:i,format:(0,o.__assign)({},s)},e.segments.forEach((function(e){delete e.format.fontSize,delete e.format.fontWeight}))):i&&delete e.decorator}))}},3721:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1246),a=r(687);t.default=function(e,t,r){(0,o.formatWithContentModel)(e,"setIndentation",(function(e){var o=(0,a.setModelIndentation)(e,t,r);return o&&(0,n.normalizeContentModel)(e),o}),{preservePendingFormat:!0})}},7339:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(9139);t.default=function(e,t,r){(0,n.formatParagraphWithContentModel)(e,"setParagraphMargin",(function(e){e.decorator||(e.decorator=(0,o.createParagraphDecorator)("p")),t?e.format.marginTop=t:null===t&&delete e.format.marginTop,r?e.format.marginBottom=r:null===r&&delete e.format.marginBottom}))}},9294:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9139);t.default=function(e,t){(0,o.formatParagraphWithContentModel)(e,"setSpacing",(function(e){e.format.lineHeight=t.toString(),e.segments.forEach((function(e){e.format.lineHeight&&delete e.format.lineHeight}))}))}},1977:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(2511),a=r(6162),l={borderLeft:"3px solid rgb(200, 200, 200)",textColor:"rgb(102, 102, 102)"},i={marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px",paddingLeft:"10px"};t.default=function(e,t){void 0===t&&(t=l);var r=(0,o.__assign)((0,o.__assign)({},i),t);(0,n.formatWithContentModel)(e,"toggleBlockQuote",(function(e){return(0,a.toggleModelBlockQuote)(e,r)}),{preservePendingFormat:!0})}},5634:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2347),n=r(1685),a=r(473),l=r(2511),i=r(4040),s=r(3731),c=r(8689);t.default=function(e,t){var r=t.which;(0,l.formatWithContentModel)(e,46==r?"handleDeleteKey":"handleBackspaceKey",(function(r,l){var d=(0,a.deleteSelection)(r,function(e){var t=46==e.which;return[(0,i.shouldDeleteAllSegmentsBefore)(e)&&!t?n.deleteAllSegmentBefore:null,(0,i.shouldDeleteWord)(e,!!o.Browser.isMac)?t?s.forwardDeleteWordSelection:s.backwardDeleteWordSelection:null,t?c.forwardDeleteCollapsedSelection:c.backwardDeleteCollapsedSelection]}(t),l).deleteResult;return(0,i.handleKeyboardEventResult)(e,r,t,d,l)}),{rawEvent:t,changeSource:"Keyboard",getChangeData:function(){return r}})}},9894:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2347),n=r(1246),a=r(2511),l=r(9119);t.default=function(e,t,r,i,s){var c=s||{},d=c.contentNode,u=c.focusAfterEntity,f=c.wrapperDisplay,m=c.skipUndoSnapshot,p=e.getDocument().createElement(r?"div":"span"),v=null!=f?f:r?void 0:"inline-block";p.style.setProperty("display",v||null),d&&p.appendChild(d),(0,o.commitEntity)(p,t,!0);var g=(0,n.createEntity)(p,!0,t);(0,a.formatWithContentModel)(e,"insertEntity",(function(e,t){return(0,l.insertEntityModel)(e,g,"string"==typeof i?i:"focus",r,u,t),t.skipUndoSnapshot=m,!0}),{selectionOverride:"object"==typeof i?i:void 0}),e.isDarkMode()&&e.transformToDarkColor(p);var h=(0,o.getEntityFromElement)(p);return e.triggerContentChangedEvent("InsertEntity",h),h}},1576:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(2511),a=r(2976),l=r(5098),i=r(1246);t.default=function(e,t){var r=(0,a.getPendingFormat)(e);if(r){var s=!1;(0,n.formatWithContentModel)(e,"applyPendingFormat",(function(e,n){return(0,l.iterateSelections)([e],(function(e,n,a,l){if("Paragraph"==(null==a?void 0:a.blockType)&&1==(null==l?void 0:l.length)&&"SelectionMarker"==l[0].segmentType){var c=l[0],d=a.segments.indexOf(c),u=a.segments[d-1];if("Text"==(null==u?void 0:u.segmentType)){var f=u.text,m=f.substr(-t.length,t.length);if(m==t||" "==t&&" "==m){c.format=(0,o.__assign)({},r),u.text=f.substring(0,f.length-t.length);var p=(0,i.createText)(" "==t?" ":t,(0,o.__assign)((0,o.__assign)({},u.format),r));a.segments.splice(d,0,p),(0,i.setParagraphNotImplicit)(a),s=!0}}}return!0})),s&&((0,i.normalizeContentModel)(e),n.skipUndoSnapshot=!0),s}))}}},2313:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(512),n=r(2511),a=r(1246);t.default=function(e){(0,n.formatWithContentModel)(e,"clearFormat",(function(e){var t=[],r=[],n=[];return(0,o.clearModelFormat)(e,t,r,n),(0,a.normalizeContentModel)(e),t.length>0||r.length>0||n.length>0}))}},7950:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reducedModelChildProcessor=void 0;var o=r(7582),n=r(2347),a=r(2976),l=r(2812),i=r(2229),s=r(1246);function c(e,t,r){var a=(0,l.getSelectionRootNode)(r.rangeEx);if(a){r.nodeStack||(r.nodeStack=function(e,t){for(var r=[],o=t;o&&(0,n.contains)(e,o);)"TABLE"==(0,n.getTagOfNode)(o)?r.splice(0,r.length,o):r.push(o),o=o.parentNode;return r}(t,a));var i=r.nodeStack.pop();if(i){var c=(0,o.__read)((0,s.getRegularSelectionOffsets)(r,t),2),d=c[0],u=c[1],f=d>=0||u>=0?function(e,t){for(var r=0,o=e.firstChild;o&&o!=t;)r++,o=o.nextSibling;return r}(t,i):-1;f>=0&&(0,s.handleRegularSelection)(f,r,e,d,u),(0,s.processChildNode)(e,i,r),f>=0&&(0,s.handleRegularSelection)(f+1,r,e,d,u)}else r.defaultElementProcessors.child(e,t,r)}}t.default=function(e){var t=(0,a.getPendingFormat)(e),r=e.createContentModel({processorOverride:{child:c}}),n=(0,o.__assign)((0,o.__assign)({},e.getUndoState()),{isDarkMode:e.isDarkMode(),zoomScale:e.getZoomScale()});return(0,i.retrieveModelFormatState)(r,t,n),n},t.reducedModelChildProcessor=c},6623:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(5113),n=r(2511);t.default=function(e){var t=null;return(0,n.formatWithContentModel)(e,"adjustImageSelection",(function(e){return(0,o.adjustSegmentSelection)(e,(function(e){return!(!e.isSelected||"Image"!=e.segmentType||(t=e,0))}),(function(e,t){return e==t}))})),t}},8401:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154),n=r(2347);t.default=function(e,t){var r=e.getSelectionRangeEx();(0,n.readFile)(t,(function(t){t&&!e.isDisposed()&&2===r.type&&(0,o.default)(e,"changeImage",(function(e){e.src=t,e.dataset={},e.format.width="",e.format.height="",e.alt=""}),{image:r.image,previousSrc:r.image.src,newSrc:t,originalSrc:a(r.image)})}))};var a=function(e){var t=(0,n.getMetadata)(e);return t&&t.src||""}},2930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(2511),a=r(485),l=r(2347);function i(e,t){(0,n.formatWithContentModel)(e,"insertImage",(function(e,r){var n=(0,o.createImage)(t,{backgroundColor:""}),l=(0,o.createContentModelDocument)();return(0,o.addSegment)(l,n),(0,a.mergeModel)(e,l,r,{mergeFormat:"mergeAll"}),!0}))}t.default=function(e,t){"string"==typeof t?i(e,t):(0,l.readFile)(t,(function(t){t&&!e.isDisposed()&&i(e,t)}))}},2063:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154);t.default=function(e,t){(0,o.default)(e,"setImageAltText",(function(e){e.alt=t}))}},4653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1354),n=r(6154);t.default=function(e,t,r){(0,n.default)(e,"setImageBorder",(function(e){(0,o.default)(e,t,r)}))}},4735:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154);t.default=function(e,t,r){(0,o.default)(e,"setImageBoxShadow",(function(e){e.format.boxShadow=t,r?(e.format.marginBottom=r,e.format.marginLeft=r,e.format.marginRight=r,e.format.marginTop=r):null===r&&(delete e.format.marginBottom,delete e.format.marginLeft,delete e.format.marginRight,delete e.format.marginTop)}))}},1270:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6331),n=r(5113),a=r(5294),l=r(2511),i=r(5736);t.default=function(e){var t="",r=null;return(0,l.formatWithContentModel)(e,"adjustLinkSelection",(function(e){var l,s,c=(0,n.adjustSegmentSelection)(e,(function(e){return!!e.isSelected&&!!e.link}),(function(e,t){return!!e.link&&e.link.format.href==t.link.format.href})),d=(0,o.default)(e,!1),u=d[0];return 1==d.length&&"SelectionMarker"==u.segmentType&&(d=(0,a.adjustWordSelection)(e,u)).length>1&&(c=!0,(0,i.setSelection)(e,d[0],d[d.length-1])),t=d.map((function(e){return"Text"==e.segmentType?e.text:""})).join(""),r=(null===(s=null===(l=d[0])||void 0===l?void 0:l.link)||void 0===s?void 0:s.format.href)||null,c})),[t,r]}},7058:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(6331),a=r(2511),l=r(2976),i=r(2347),s=r(485),c=r(1246),d=/^[a-zA-Z]+:/i,u=/^[\w.%+-]+@/i,f=/^ftp\./i;function m(e){if(!e)return e;var t="";return e.search(d)<0&&(t=0==e.search(u)?"mailto:":0==e.search(f)?"ftp://":"http://"),t+e}t.default=function(e,t,r,d,u){var f=(function(e){var t=new i.HtmlSanitizer,r=document.createElement("a");return r.href=e||"",t.sanitize(r),r.getAttribute("href")||""}(t)||"").trim();if(f){var p,v=(0,i.matchLink)(f),g={dataset:{},format:{href:v?v.normalizedUrl:m(f),anchorTitle:r,target:u,underline:!0}},h=[];(0,a.formatWithContentModel)(e,"insertLink",(function(t,r){var a,i=(0,n.default)(t,!1),u=i.map((function(e){return"Text"==e.segmentType?e.text:""})).join(""),m=d||u||"";if(i.some((function(e){return"SelectionMarker"!=e.segmentType}))&&u==m)i.forEach((function(e){(0,c.addLink)(e,g),e.link&&h.push(e.link)}));else if(i.every((function(e){return"SelectionMarker"==e.segmentType}))||m&&m!=u){var p=(0,c.createText)(m||(v?v.originalUrl:f),(0,o.__assign)((0,o.__assign)({},(null===(a=i[0])||void 0===a?void 0:a.format)||{}),(0,l.getPendingFormat)(e)||{})),b=(0,c.createContentModelDocument)();(0,c.addLink)(p,g),(0,c.addSegment)(b,p),p.link&&h.push(p.link),(0,s.mergeModel)(t,b,r,{mergeFormat:"mergeAll"})}return i.length>0}),{changeSource:"CreateLink",onNodeCreated:function(e,t){!p&&h.indexOf(e)>=0&&(p=t)},getChangeData:function(){return p}})}}},3932:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6331),n=r(5113),a=r(2511);t.default=function(e){(0,a.formatWithContentModel)(e,"removeLink",(function(e){(0,n.adjustSegmentSelection)(e,(function(e){return!!e.isSelected&&!!e.link}),(function(e,t){return e.isSelected||!!e.link&&e.link.format.href==t.link.format.href}));var t=(0,o.default)(e,!1),r=!1;return t.forEach((function(e){e.link&&(r=!0,delete e.link)})),r}))}},1123:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(5544);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setListStartNumber",(function(e){var r=(0,n.getFirstSelectedListItem)(e),o=null==r?void 0:r.levels[(null==r?void 0:r.levels.length)-1];return!!o&&(o.format.startNumberOverride=t,!0)}))}},3e3:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2874),n=r(2511),a=r(5544),l=r(1246);t.default=function(e,t){(0,n.formatWithContentModel)(e,"setListStyle",(function(e){var r=(0,a.getFirstSelectedListItem)(e);if(r){var n=(0,o.findListItemsInSameThread)(e,r),i=r.levels.length-1;return n.forEach((function(e){var r=e.levels[i];r&&(0,l.updateListMetadata)(r,(function(e){return Object.assign({},e,t)}))})),!0}return!1}))}},58:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1567);t.default=function(e){(0,o.formatWithContentModel)(e,"toggleBullet",(function(e){return(0,n.setListType)(e,"UL")}),{preservePendingFormat:!0})}},4505:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1567);t.default=function(e){(0,o.formatWithContentModel)(e,"toggleNumbering",(function(e){return(0,n.setListType)(e,"OL")}),{preservePendingFormat:!0})}},4847:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"applySegmentFormat",(function(e){e.backgroundColor=t.backgroundColor,e.fontFamily=t.fontFamily,e.fontSize=t.fontSize,e.fontWeight=t.fontWeight,e.italic=t.italic,e.strikethrough=t.strikethrough,e.superOrSubScriptSequence=t.superOrSubScriptSequence,e.textColor=t.textColor,e.underline=t.underline}),void 0,!0)}},5284:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t,r){(0,o.formatSegmentWithContentModel)(e,"changeCapitalization",(function(e,o,n){if("Text"==(null==n?void 0:n.segmentType))switch(t){case"lowerCase":n.text=n.text.toLocaleLowerCase(r);break;case"upperCase":n.text=n.text.toLocaleUpperCase(r);break;case"capitalize":for(var a=n.text.toLocaleLowerCase(r).split(" "),l=0;l{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741),n=r(1246),a=[8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72];t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"changeFontSize",(function(e){return function(e,t){if(e.fontSize){var r=(0,n.parseValueWithUnit)(e.fontSize,void 0,"pt");if(r>0){var o=function(e,t,r){e=1==t?Math.floor(e):Math.ceil(e);var o=r[r.length-1];if(e<=r[0])e=Math.max(e+t,1);else if(e>o||e==o&&1==t)e/=10,e=1==t?Math.floor(e):Math.ceil(e),e=Math.min(Math.max(10*(e+t),o),1e3);else if(1==t){for(var n=0;n=0;n--)if(e>r[n]){e=r[n];break}return e}(r,"increase"==t?1:-1,a);e.fontSize=o+"pt"}}}(e,t)}),void 0,!0)}},5253:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(1741),a=r(5736);t.default=function(e,t){var r=null,l=-1;(0,n.formatSegmentWithContentModel)(e,"setBackgroundColor",(function(e,o,n,a){null===t?delete e.backgroundColor:e.backgroundColor=t,n&&a&&"SelectionMarker"!=n.segmentType&&(l=(r=a).segments.indexOf(n))}),void 0,void 0,(function(e){var t;if(r&&l>=0){var n=(0,o.createSelectionMarker)(null===(t=r.segments[l])||void 0===t?void 0:t.format);r.segments.splice(l+1,0,n),(0,a.setSelection)(e,n,n)}}))}},1250:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setFontName",(function(e,r,o){e.fontFamily=t,(null==o?void 0:o.code)&&(o.code.format.fontFamily=t)}),void 0,!0)}},5442:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setFontSize",(function(e){e.fontSize=t}),void 0,!0)}},9715:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setTextColor",null===t?function(e,t,r){delete e.textColor,(null==r?void 0:r.link)&&delete r.link.format.textColor}:function(e,r,o){e.textColor=t,(null==o?void 0:o.link)&&(o.link.format.textColor=t)},void 0,!0)}},5539:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBold=void 0;var o=r(1741);function n(e){return!!e&&("bold"==e||"bolder"==e||parseInt(e)>=600)}t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleBold",(function(e,t){e.fontWeight=t?"bold":"normal"}),(function(e,t,r){var o;return n(void 0===e.fontWeight?null===(o=null==r?void 0:r.decorator)||void 0===o?void 0:o.format.fontWeight:e.fontWeight)}))},t.isBold=n},1340:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(1741),a={format:{fontFamily:"monospace"}};t.default=function(e){(0,n.formatSegmentWithContentModel)(e,"toggleCode",(function(e,t,r){r&&(t?(0,o.addCode)(r,a):delete r.code)}),(function(e,t){return!!(null==t?void 0:t.code)}))}},3462:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleItalic",(function(e,t){e.italic=!!t}),(function(e){return!!e.italic}))}},5602:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleStrikethrough",(function(e,t){e.strikethrough=!!t}),(function(e){return!!e.strikethrough}))}},2494:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleSubscript",(function(e,t){e.superOrSubScriptSequence=t?"sub":""}),(function(e){var t;return"sub"==(null===(t=e.superOrSubScriptSequence)||void 0===t?void 0:t.split(" ").pop())}))}},1308:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleSuperscript",(function(e,t){e.superOrSubScriptSequence=t?"super":""}),(function(e){var t;return"super"==(null===(t=e.superOrSubScriptSequence)||void 0===t?void 0:t.split(" ").pop())}))}},3679:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleUnderline",(function(e,t,r){e.underline=!!t,(null==r?void 0:r.link)&&(r.link.format.underline=!!t)}),(function(e,t){var r,o;return!!e.underline||!!(null===(o=null===(r=null==t?void 0:t.link)||void 0===r?void 0:r.format)||void 0===o?void 0:o.underline)}))}},6331:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(5544);t.default=function(e,t){return(0,o.getSelectedSegmentsAndParagraphs)(e,t).map((function(e){return e[0]}))}},6516:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7536),n=r(5676);t.default=function(e){switch(e.blockType){case"Paragraph":return e.segments.some(n.default);case"Table":return e.rows.some((function(e){return e.cells.some(o.default)}));case"BlockGroup":return(0,o.default)(e);case"Divider":case"Entity":return!!e.isSelected;default:return!1}}},7536:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6516);t.default=function(e){return!("TableCell"!=e.blockGroupType||!e.isSelected)||!!e.blocks.some(o.default)}},5676:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6516);t.default=function(e){return e.isSelected||"General"==e.segmentType&&e.blocks.some(o.default)}},959:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(6516),a=r(6682),l=r(7691),i=r(4158),s=r(6893),c=r(629),d=r(4054),u=r(9073),f=r(2511),m=r(5544),p=r(7350),v=r(9457),g=r(8509),h=r(4765),b=r(2806),y=r(1303),_=r(5736),C=r(3618),P=r(2242),k=r(1246);t.default=function(e,t){(0,f.formatWithContentModel)(e,"editTable",(function(e){var r=(0,o.__read)((0,m.getFirstSelectedTable)(e),2),f=r[0],S=r[1];if(f){switch(t){case 17:case 18:case 19:case 20:case 21:case 22:(0,l.alignTableCell)(f,t);break;case 14:case 15:case 16:(0,a.alignTable)(f,t);break;case 5:(0,c.deleteTableColumn)(f);break;case 6:(0,d.deleteTableRow)(f);break;case 4:(0,s.deleteTable)(f);break;case 0:case 1:(0,v.insertTableRow)(f,t);break;case 2:case 3:(0,p.insertTableColumn)(f,t);break;case 7:case 8:(0,b.mergeTableRow)(f,t);break;case 11:(0,g.mergeTableCells)(f);break;case 9:case 10:(0,h.mergeTableColumn)(f,t);break;case 12:(0,C.splitTableCellHorizontally)(f);break;case 13:(0,P.splitTableCellVertically)(f)}if(!(0,n.default)(f)){var O=(0,u.ensureFocusableParagraphForTable)(e,S,f);if(O){var M=(0,k.createSelectionMarker)(e.format);O.segments.unshift(M),(0,k.setParagraphNotImplicit)(O),(0,_.setSelection)(e,M)}}return(0,y.normalizeTable)(f),(0,k.hasMetadata)(f)&&(0,i.applyTableFormat)(f,void 0,!0),!0}return!1}))}},2435:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(4158),a=r(2511),l=r(5544);t.default=function(e,t,r){(0,a.formatWithContentModel)(e,"formatTable",(function(e){var a=(0,o.__read)((0,l.getFirstSelectedTable)(e),1)[0];return!!a&&((0,n.applyTableFormat)(a,t,r),!0)}))}},6901:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(4158),n=r(1246),a=r(2969),l=r(473),i=r(2511),s=r(2976),c=r(485),d=r(1303),u=r(5736);t.default=function(e,t,r,f){(0,i.formatWithContentModel)(e,"insertTable",(function(i,m){var p,v,g,h=(0,l.deleteSelection)(i,[],m).insertPoint;if(h){var b=(0,n.createContentModelDocument)(),y=(0,a.createTableStructure)(b,t,r);(0,d.normalizeTable)(y,(0,s.getPendingFormat)(e)||h.marker.format),f=f||{verticalAlign:"top"},(0,o.applyTableFormat)(y,f),(0,c.mergeModel)(i,b,m,{insertPosition:h,mergeFormat:"mergeAll"});var _=null===(v=null===(p=y.rows[0])||void 0===p?void 0:p.cells[0])||void 0===v?void 0:v.blocks[0];if("Paragraph"==(null==_?void 0:_.blockType)){var C=(0,n.createSelectionMarker)(null===(g=_.segments[0])||void 0===g?void 0:g.format);_.segments.unshift(C),(0,u.setSelection)(i,C)}return!0}return!1}))}},7783:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(7536),a=r(2511),l=r(5544),i=r(1303),s=r(3684);t.default=function(e,t){(0,a.formatWithContentModel)(e,"setTableCellShade",(function(e){var r=(0,o.__read)((0,l.getFirstSelectedTable)(e),1)[0];return!!r&&((0,i.normalizeTable)(r),r.rows.forEach((function(e){return e.cells.forEach((function(e){(0,n.default)(e)&&(0,s.setTableCellBackgroundColor)(e,t,!0)}))})),!0)}))}},6154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t,r,n){(0,o.formatSegmentWithContentModel)(e,t,(function(t,o,a){"Image"==(null==a?void 0:a.segmentType)&&(r(a),n&&e.triggerPluginEvent(19,n))}),void 0,void 0)}},9139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatParagraphWithContentModel=void 0;var o=r(2511),n=r(5544);t.formatParagraphWithContentModel=function(e,t,r){(0,o.formatWithContentModel)(e,t,(function(e){var t=(0,n.getSelectedParagraphs)(e);return t.forEach(r),t.length>0}),{preservePendingFormat:!0})}},1741:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatSegmentWithContentModel=void 0;var o=r(7582),n=r(5294),a=r(2511),l=r(2976),i=r(5544);t.formatSegmentWithContentModel=function(e,t,r,s,c,d){(0,a.formatWithContentModel)(e,t,(function(t){var a=(0,i.getSelectedSegmentsAndParagraphs)(t,!!c),u=(0,l.getPendingFormat)(e),f=1==a.length&&"SelectionMarker"==a[0][0].segmentType;if(f){var m=a[0][1];(a=(0,n.adjustWordSelection)(t,a[0][0]).map((function(e){return[e,m]}))).length>1&&(f=!1)}var p=u?[[u,null,null]]:a.map((function(e){return[e[0].format,e[0],e[1]]})),v=!!s&&p.every((function(e){var t=(0,o.__read)(e,3),r=t[0],n=t[1],a=t[2];return s(r,n,a)}));if(p.forEach((function(e){var t=(0,o.__read)(e,3),n=t[0],a=t[1],l=t[2];return r(n,!v,a,l)})),null==d||d(t),!u&&f){var g=e.getFocusedPosition();g&&(0,l.setPendingFormat)(e,a[0][0].format,g)}return f?(e.focus(),!1):p.length>0}))}},2511:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatWithContentModel=void 0;var o=r(2976);t.formatWithContentModel=function(e,t,r,n){var a,l=n||{},i=l.onNodeCreated,s=l.preservePendingFormat,c=l.getChangeData,d=l.changeSource,u=l.rawEvent,f=l.selectionOverride;e.focus();var m=e.createContentModel(void 0,f),p={deletedEntities:[],rawEvent:u};if(r(m,p)){var v=function(){if(function(e,t){t.deletedEntities.forEach((function(r){var o=r.entity,n=r.operation;o.id&&o.type&&e.triggerPluginEvent(15,{entity:{id:o.id,isReadonly:o.isReadonly,type:o.type,wrapper:o.wrapper},operation:n,rawEvent:t.rawEvent})}))}(e,p),m&&e.setContentModel(m,{onNodeCreated:i}),s){var t=(0,o.getPendingFormat)(e),r=e.getFocusedPosition();t&&r&&(0,o.setPendingFormat)(e,t,r)}return null==c?void 0:c()};if(p.skipUndoSnapshot){var g=v();d&&e.triggerContentChangedEvent(d,g)}else e.addUndoSnapshot(v,d||"Format",!1,{formatApiName:t});null===(a=e.cacheContentModel)||void 0===a||a.call(e,m)}}},5915:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergePasteContent=void 0;var o=r(7582),n=r(1246),a=r(2511),l=r(485),i=r(2347);function s(e,t,r,o,n){return n?n(e,r):(0,l.mergeModel)(e,r,t,{mergeFormat:o?"keepSourceEmphasisFormat":"none",mergeTable:c(r)}),!0}function c(e){return 2==e.blocks.length&&"Table"===e.blocks[0].blockType&&"Paragraph"===e.blocks[1].blockType&&1===e.blocks[1].segments.length&&"Br"===e.blocks[1].segments[0].segmentType&&e.blocks.splice(1),1===e.blocks.length&&"Table"===e.blocks[0].blockType}t.default=function(e,t,r,l,c){void 0===r&&(r=!1),void 0===l&&(l=!1),void 0===c&&(c=!1),t.snapshotBeforePaste?e.setContent(t.snapshotBeforePaste):t.snapshotBeforePaste=e.getContent(2);var d=function(e,t,r){var o=(0,i.createDefaultHtmlSanitizerOptions)();return o.cssStyleCallbacks["caret-color"]=function(){return!1},{clipboardData:t,fragment:e.getDocument().createDocumentFragment(),sanitizingOption:o,htmlBefore:"",htmlAfter:"",htmlAttributes:{},domToModelOption:{},pasteType:r}}(e,t,(0,i.getPasteType)(r,l,c)),u=function(e,t,r,n,a,l){var s=(0,o.__assign)({eventType:10},l),c=s.fragment,d=t.rawHtml,u=t.text,f=t.imageDataUri,m=e.getTrustedHTMLHandler(),p=d?(new DOMParser).parseFromString(m(d),"text/html"):void 0;(0,i.retrieveMetadataFromClipboard)(p,s,m),a&&f||!n&&!u&&f?(0,i.handleImagePaste)(f,c):!n&&d&&p&&p.body?(0,i.moveChildNodes)(c,null==p?void 0:p.body):u&&(0,i.handleTextPaste)(u,null,c);var v=s;return 1!==s.pasteType&&(v=e.triggerPluginEvent(10,s,!0)),(0,i.sanitizePasteContent)(s,null),v}(e,t,0,r,c,d),f=u.domToModelOption,m=u.fragment,p=u.customizedMerge,v=(0,n.domToContentModel)(m,f);v&&(0,a.formatWithContentModel)(e,"Paste",(function(e,t){return s(e,t,v,l,p)}),{changeSource:"Paste",getChangeData:function(){return t}})},t.mergePasteContent=s},398:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},1533:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelEditor=void 0;var o=r(2347),n=r(3247);t.createContentModelEditor=function(e,t,r){var a=[new n.ContentModelPastePlugin];t&&(a=a.concat(t));var l={plugins:a,initialContent:r,getDarkColor:o.getDarkColor,defaultFormat:{fontFamily:"Calibri,Arial,Helvetica,sans-serif",fontSize:"11pt",textColor:"#000000"}};return new n.ContentModelEditor(e,l)}},2594:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelEditor=void 0;var o=r(7582),n=r(1533);Object.defineProperty(t,"createContentModelEditor",{enumerable:!0,get:function(){return n.createContentModelEditor}}),(0,o.__exportStar)(r(398),t),(0,o.__exportStar)(r(1246),t),(0,o.__exportStar)(r(3247),t)},2347:e=>{e.exports=roosterjs},7582:(e,t,r)=>{r.r(t),r.d(t,{__assign:()=>a,__asyncDelegator:()=>O,__asyncGenerator:()=>S,__asyncValues:()=>M,__await:()=>k,__awaiter:()=>p,__classPrivateFieldGet:()=>E,__classPrivateFieldIn:()=>B,__classPrivateFieldSet:()=>j,__createBinding:()=>g,__decorate:()=>i,__esDecorate:()=>c,__exportStar:()=>h,__extends:()=>n,__generator:()=>v,__importDefault:()=>x,__importStar:()=>F,__makeTemplateObject:()=>T,__metadata:()=>m,__param:()=>s,__propKey:()=>u,__read:()=>y,__rest:()=>l,__runInitializers:()=>d,__setFunctionName:()=>f,__spread:()=>_,__spreadArray:()=>P,__spreadArrays:()=>C,__values:()=>b,default:()=>L});var o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},o(e,t)};function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var a=function(){return a=Object.assign||function(e){for(var t,r=1,o=arguments.length;r=0;i--)(n=e[i])&&(l=(a<3?n(l):a>3?n(t,r,l):n(t,r))||l);return a>3&&l&&Object.defineProperty(t,r,l),l}function s(e,t){return function(r,o){t(r,o,e)}}function c(e,t,r,o,n,a){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,s=o.kind,c="getter"===s?"get":"setter"===s?"set":"value",d=!t&&e?o.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,o.name):{}),f=!1,m=r.length-1;m>=0;m--){var p={};for(var v in o)p[v]="access"===v?{}:o[v];for(var v in o.access)p.access[v]=o.access[v];p.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");a.push(l(e||null))};var g=(0,r[m])("accessor"===s?{get:u.get,set:u.set}:u[c],p);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(i=l(g.get))&&(u.get=i),(i=l(g.set))&&(u.set=i),(i=l(g.init))&&n.unshift(i)}else(i=l(g))&&("field"===s?n.unshift(i):u[c]=i)}d&&Object.defineProperty(d,o.name,u),f=!0}function d(e,t,r){for(var o=arguments.length>2,n=0;n0&&n[n.length-1])||6!==i[0]&&2!==i[0])){l=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)l.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return l}function _(){for(var e=[],t=0;t1||i(e,t)}))})}function i(e,t){try{(r=n[e](t)).value instanceof k?Promise.resolve(r.value.v).then(s,c):d(a[0][2],r)}catch(e){d(a[0][3],e)}var r}function s(e){i("next",e)}function c(e){i("throw",e)}function d(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}}function O(e){var t,r;return t={},o("next"),o("throw",(function(e){throw e})),o("return"),t[Symbol.iterator]=function(){return this},t;function o(o,n){t[o]=e[o]?function(t){return(r=!r)?{value:k(e[o](t)),done:!1}:n?n(t):t}:n}}function M(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(r){t[r]=e[r]&&function(t){return new Promise((function(o,n){!function(e,t,r,o){Promise.resolve(o).then((function(t){e({value:t,done:r})}),t)}(o,n,(t=e[r](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var w=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function F(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&g(t,e,r);return w(t,e),t}function x(e){return e&&e.__esModule?e:{default:e}}function E(e,t,r,o){if("a"===r&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?o:"a"===r?o.call(e):o?o.value:t.get(e)}function j(e,t,r,o,n){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?n.call(e,r):n?n.value=r:t.set(e,r),r}function B(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}const L={__extends:n,__assign:a,__rest:l,__decorate:i,__param:s,__metadata:m,__awaiter:p,__generator:v,__createBinding:g,__exportStar:h,__values:b,__read:y,__spread:_,__spreadArrays:C,__spreadArray:P,__await:k,__asyncGenerator:S,__asyncDelegator:O,__asyncValues:M,__makeTemplateObject:T,__importStar:F,__importDefault:x,__classPrivateFieldGet:E,__classPrivateFieldSet:j,__classPrivateFieldIn:B}}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o=r(2594);roosterjsContentModel=o})(); +var roosterjsContentModel;(()=>{"use strict";var e={9968:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDomToModelContext=void 0;var o=r(7582),n=r(8659),a=r(3647),l=r(976);t.createDomToModelContext=function(e,t,r){var i=(0,o.__assign)((0,o.__assign)({},e),{blockFormat:{},segmentFormat:{},isInSelection:!1,listFormat:{levels:[],threadItemCounts:[]},link:{format:{},dataset:{}},code:{format:{}},blockDecorator:{format:{},tagName:""},elementProcessors:(0,o.__assign)((0,o.__assign)({},a.defaultProcessorMap),(null==t?void 0:t.processorOverride)||{}),defaultStyles:(0,o.__assign)((0,o.__assign)({},l.defaultStyleMap),(null==t?void 0:t.defaultStyleOverride)||{}),formatParsers:(0,n.getFormatParsers)(null==t?void 0:t.formatParserOverride,null==t?void 0:t.additionalFormatParsers),defaultElementProcessors:a.defaultProcessorMap,defaultFormatParsers:n.defaultFormatParsers});return(null==e?void 0:e.isRootRtl)&&(i.blockFormat.direction="rtl"),r&&(i.rangeEx=r),i}},3647:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultProcessorMap=void 0;var o=r(2697),n=r(9384),a=r(9633),l=r(2130),i=r(7883),s=r(6905),c=r(5718),d=r(9004),u=r(1001),f=r(2625),m=r(3092),p=r(215),v=r(4748),g=r(1091),h=r(5476),b=r(2791),y=r(8191),_=r(970),C=r(9892);t.defaultProcessorMap={a:g.linkProcessor,b:v.knownElementProcessor,blockquote:v.knownElementProcessor,br:o.brProcessor,code:a.codeProcessor,div:v.knownElementProcessor,em:v.knownElementProcessor,font:c.fontProcessor,i:v.knownElementProcessor,img:p.imageProcessor,h1:f.headingProcessor,h2:f.headingProcessor,h3:f.headingProcessor,h4:f.headingProcessor,h5:f.headingProcessor,h6:f.headingProcessor,hr:m.hrProcessor,li:h.listItemProcessor,ol:b.listProcessor,p:y.pProcessor,pre:d.formatContainerProcessor,s:v.knownElementProcessor,section:v.knownElementProcessor,span:v.knownElementProcessor,strike:v.knownElementProcessor,strong:v.knownElementProcessor,sub:v.knownElementProcessor,sup:v.knownElementProcessor,table:_.tableProcessor,u:v.knownElementProcessor,ul:b.listProcessor,"*":u.generalProcessor,"#text":C.textProcessor,element:i.elementProcessor,entity:s.entityProcessor,child:n.childProcessor,delimiter:l.delimiterProcessor}},1807:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.domToContentModel=void 0;var o=r(5733),n=r(9968),a=r(8767);t.domToContentModel=function(e,t,r,l){var i=(0,o.createContentModelDocument)(null==r?void 0:r.defaultFormat),s=(0,n.createDomToModelContext)(r,t,l);return s.elementProcessors.child(i,e,s),(0,a.normalizeContentModel)(i),i}},7304:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.blockProcessor=void 0;var o=r(7582),n=r(9275),a=r(9004),l=r(5092),i=r(9366),s=["A","CODE"];t.blockProcessor=function(e,t,r,c){var d=r.blockDecorator.tagName?r.blockDecorator:void 0,u=s.indexOf(t.tagName)>=0;(0,i.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var f=(0,o.__assign)({},r.blockFormat);if((0,i.parseFormat)(t,r.formatParsers.container,f,r),a.ContextStyles.forEach((function(e){f[e]&&(r.blockFormat[e]=f[e])})),!u){var m=(0,l.createParagraph)(!1,f,c,d);(0,n.addBlock)(e,m)}r.elementProcessors.child(e,t,r)}},2697:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.brProcessor=void 0;var o=r(8513),n=r(7826);t.brProcessor=function(e,t,r){var a=(0,n.createBr)(r.segmentFormat);r.isInSelection&&(a.isSelected=!0),(0,o.addSegment)(e,a,r.blockFormat)}},9384:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleRegularSelection=t.processChildNode=t.childProcessor=void 0;var o=r(7582),n=r(9871),a=r(8063),l=r(3233);function i(e,t,r){(0,l.isNodeOfType)(t,1)&&"none"!=t.style.display?r.elementProcessors.element(e,t,r):(0,l.isNodeOfType)(t,3)&&r.elementProcessors["#text"](e,t,r)}function s(e,t,r,o,a){var l;e==o&&(t.isInSelection=!0,(0,n.addSelectionMarker)(r,t)),e==a&&0==(null===(l=t.rangeEx)||void 0===l?void 0:l.type)&&(t.rangeEx.areAllCollapsed||(0,n.addSelectionMarker)(r,t),t.isInSelection=!1)}t.childProcessor=function(e,t,r){for(var n=(0,o.__read)((0,a.getRegularSelectionOffsets)(r,t),2),l=n[0],c=n[1],d=0,u=t.firstChild;u;u=u.nextSibling)s(d,r,e,l,c),i(e,u,r),d++;s(d,r,e,l,c)},t.processChildNode=i,t.handleRegularSelection=s},9633:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.codeProcessor=void 0;var o=r(4748),n=r(9366),a=r(202);t.codeProcessor=function(e,t,r){(0,a.stackFormat)(r,{code:"codeDefault"},(function(){(0,n.parseFormat)(t,r.formatParsers.code,r.code.format,r),(0,o.knownElementProcessor)(e,t,r)}))}},2130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.delimiterProcessor=void 0;var o=r(7582),n=r(8063),a=r(9384);t.delimiterProcessor=function(e,r,l){for(var i=0,s=(0,o.__read)((0,n.getRegularSelectionOffsets)(l,r),2),c=s[0],d=s[1],u=r.firstChild;u;u=u.nextSibling)(0,a.handleRegularSelection)(i,l,e,c,d),(0,t.delimiterProcessor)(e,u,l),i++;(0,a.handleRegularSelection)(i,l,e,c,d)}},7883:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.elementProcessor=void 0;var o=r(2347);t.elementProcessor=function(e,t,r){var n=t.tagName.toLowerCase(),a=function(e,t){return e.className&&(0,o.getEntityFromElement)(e)||"false"==e.contentEditable?t.elementProcessors.entity:null}(t,r)||function(e,t){return(0,o.getDelimiterFromElement)(e)?t.elementProcessors.delimiter:null}(t,r)||r.elementProcessors[n]||n.indexOf(":")>=0&&r.elementProcessors.child||r.elementProcessors["*"];a(e,t,r)}},6905:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.entityProcessor=void 0;var o=r(9275),n=r(8513),a=r(1033),l=r(2347),i=r(2404),s=r(202);t.entityProcessor=function(e,t,r){var c=(0,l.getEntityFromElement)(t)||{isReadonly:!0},d=c.id,u=c.type,f=c.isReadonly,m=(0,i.isBlockElement)(t,r);(0,s.stackFormat)(r,{segment:m?"empty":void 0,paragraph:"empty"},(function(){var l=(0,a.createEntity)(t,f,u,r.segmentFormat,d);r.isInSelection&&(l.isSelected=!0),m?(0,o.addBlock)(e,l):(0,n.addSegment)(e,l)}))}},5718:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontProcessor=void 0;var o=r(2404),n=r(9366),a=r(202),l=["10px","13px","16px","18px","24px","32px","48px"];t.fontProcessor=function(e,t,r){(0,a.stackFormat)(r,{segment:(0,o.isBlockElement)(t,r)?"shallowCloneForBlock":"shallowClone"},(function(){var o,a,i=t.getAttribute("face"),s=(o=t.getAttribute("size"),a=parseInt(o||""),Number.isNaN(a)?void 0:a<1?l[0]:a>l.length?l[l.length-1]:l[a-1]),c=t.getAttribute("color"),d=r.segmentFormat;i&&(d.fontFamily=i),s&&(d.fontSize=s),c&&(d.textColor=c),(0,n.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r),r.elementProcessors.child(e,t,r)}))}},9004:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatContainerProcessor=t.ContextStyles=void 0;var o=r(7582),n=r(9275),a=r(2766),l=r(5092),i=r(3149),s=r(9366),c=r(3963),d=r(202);t.ContextStyles=["marginLeft","marginRight","paddingLeft","paddingRight"],t.formatContainerProcessor=function(e,r,u){(0,d.stackFormat)(u,{segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){(0,s.parseFormat)(r,u.formatParsers.block,u.blockFormat,u),(0,s.parseFormat)(r,u.formatParsers.segmentOnBlock,u.segmentFormat,u);var l=(0,o.__assign)({},u.blockFormat);(0,s.parseFormat)(r,u.formatParsers.container,l,u);var d="block"==(0,i.getDefaultStyle)(r,u).display?r.tagName.toLowerCase():"div",f=(0,a.createFormatContainer)(d,l);if(t.ContextStyles.forEach((function(e){delete u.blockFormat[e]})),u.elementProcessors.child(f,r,u),r.style.fontSize&&0==parseInt(r.style.fontSize)&&(f.zeroFontSize=!0),function(e){var t=e.blocks[0];return"div"==e.tagName&&1==e.blocks.length&&"Paragraph"==t.blockType&&t.isImplicit}(f)){var m=f.blocks[0];f.zeroFontSize&&(m.segmentFormat=Object.assign({},m.segmentFormat,{fontSize:"0"})),Object.assign(m.format,f.format),(0,c.setParagraphNotImplicit)(m),(0,n.addBlock)(e,m)}else(0,n.addBlock)(e,f)})),(0,n.addBlock)(e,(0,l.createParagraph)(!0,u.blockFormat))}},1001:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.generalProcessor=void 0;var o=r(9275),n=r(3883),a=r(8513),l=r(9237),i=r(8885),s=r(2404),c=r(202),d=function(e,t,r){var n=(0,l.createGeneralBlock)(t),a=r.isInSelection;(0,c.stackFormat)(r,{segment:"empty",paragraph:"empty",link:"empty"},(function(){(0,o.addBlock)(e,n),r.elementProcessors.child(n,t,r)})),a&&r.isInSelection&&(n.isSelected=!0)},u=function(e,t,r){var o=(0,i.createGeneralSegment)(t,r.segmentFormat),l=r.isInSelection;(0,n.addDecorators)(o,r),(0,a.addSegment)(e,o),(0,c.stackFormat)(r,{segment:"empty"},(function(){r.elementProcessors.child(o,t,r)})),l&&r.isInSelection&&(o.isSelected=!0)};t.generalProcessor=function(e,t,r){((0,s.isBlockElement)(t,r)?d:u)(e,t,r)}},2625:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.headingProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(24),i=r(2347),s=r(9366),c=r(202);t.headingProcessor=function(e,t,r){(0,c.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowClone",blockDecorator:"empty"},(function(){var o={};(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),(0,i.getObjectKeys)(o).forEach((function(e){delete r.segmentFormat[e]})),r.blockDecorator=(0,l.createParagraphDecorator)(t.tagName,o),(0,n.blockProcessor)(e,t,r)})),(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat))}},3092:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hrProcessor=void 0;var o=r(9275),n=r(7110),a=r(9366),l=r(202);t.hrProcessor=function(e,t,r){(0,l.stackFormat)(r,{paragraph:"shallowClone"},(function(){(0,a.parseFormat)(t,r.formatParsers.divider,r.blockFormat,r);var l=(0,n.createDivider)("hr",r.blockFormat);t.size&&(l.size=t.size),r.isInSelection&&(l.isSelected=!0),(0,o.addBlock)(e,l)}))}},215:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.imageProcessor=void 0;var o=r(3883),n=r(8513),a=r(5566),l=r(9366),i=r(202);t.imageProcessor=function(e,t,r){(0,i.stackFormat)(r,{segment:"shallowClone"},(function(){var i,s=r.segmentFormat;(0,l.parseFormat)(t,r.formatParsers.segment,s,r),(0,l.parseFormat)(t,r.formatParsers.image,s,r),(0,l.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var c=(0,a.createImage)(t.src,s),d=t.alt,u=t.title;(0,l.parseFormat)(t,r.formatParsers.dataset,c.dataset,r),(0,o.addDecorators)(c,r),d&&(c.alt=d),u&&(c.title=u),r.isInSelection&&(c.isSelected=!0),2==(null===(i=r.rangeEx)||void 0===i?void 0:i.type)&&r.rangeEx.image==t&&(c.isSelectedAsImageSelection=!0,c.isSelected=!0),(0,n.addSegment)(e,c)}))}},4748:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.knownElementProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(9004),i=r(3149),s=r(2404),c=r(9366),d=r(202),u=["marginBottom","marginTop","paddingBottom","paddingTop","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","width","height","maxWidth","maxHeight","minWidth","minHeight"],f=["H1","H2","H3","H4","H5","H6","P","A"],m=["A","CODE"];t.knownElementProcessor=function(e,t,r){var p=(0,s.isBlockElement)(t,r);if((p||"inline-block"==t.style.display)&&function(e,t){if(f.indexOf(e.tagName)>=0)return!1;var r=e.style,o=(0,i.getDefaultStyle)(e,t),n=r.getPropertyValue("background-color");return!(!n||"transparent"==n)||(!!u.some((function(e){return parseInt(r[e]||o[e]||"")>0}))||("auto"==r.marginLeft||"auto"==r.marginRight||!!e.getAttribute("align")))}(t,r))(0,l.formatContainerProcessor)(e,t,r);else if(p){var v=r.blockDecorator.tagName?r.blockDecorator:void 0,g=m.indexOf(t.tagName)>=0;(0,d.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){var o={};(0,c.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),Object.assign(r.segmentFormat,o),(0,n.blockProcessor)(e,t,r,o)})),p&&!g&&(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat,void 0,v))}else(0,d.stackFormat)(r,{segment:"shallowClone",paragraph:"shallowClone",link:"cloneFormat"},(function(){(0,c.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r),r.link.format.href&&"A"!=t.tagName&&(0,c.parseFormat)(t,r.formatParsers.segmentUnderLink,r.link.format,r),r.elementProcessors.child(e,t,r)}))}},1091:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.linkProcessor=void 0;var o=r(4748),n=r(9366),a=r(202);t.linkProcessor=function(e,t,r){t.hasAttribute("href")?(0,a.stackFormat)(r,{link:"linkDefault"},(function(){(0,n.parseFormat)(t,r.formatParsers.link,r.link.format,r),(0,n.parseFormat)(t,r.formatParsers.dataset,r.link.dataset,r),(0,o.knownElementProcessor)(e,t,r)})):(0,o.knownElementProcessor)(e,t,r)}},5476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listItemProcessor=void 0;var o=r(7724),n=r(9366),a=r(202);t.listItemProcessor=function(e,t,r){var l,i=r.listFormat;if(i.listParent&&i.levels.length>0)(0,a.stackFormat)(r,{segment:"shallowCloneForBlock"},(function(){(0,n.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r);var e=(0,o.createListItem)(i.levels,r.segmentFormat);(0,n.parseFormat)(t,r.formatParsers.listItemElement,e.format,r),i.listParent.blocks.push(e),(0,n.parseFormat)(t,r.formatParsers.listItem,e.levels[e.levels.length-1].format,r),r.elementProcessors.child(e,t,r);var a=e.blocks[0];1==e.blocks.length&&"Paragraph"==a.blockType&&a.isImplicit&&(Object.assign(e.format,a.format),a.format={})}));else{var s=null===(l=i.listParent)||void 0===l?void 0:l.blocks,c=null==s?void 0:s[(null==s?void 0:s.length)-1];r.elementProcessors["*"]("BlockGroup"==(null==c?void 0:c.blockType)?c:e,t,r)}}},2791:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listProcessor=void 0;var o=r(1285),n=r(2438),a=r(9366),l=r(202),i=r(2362);t.listProcessor=function(e,t,r){(0,l.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowCloneForGroup"},(function(){var l=(0,o.createListLevel)(t.tagName,r.blockFormat),s=r.listFormat;(0,a.parseFormat)(t,r.formatParsers.dataset,l.dataset,r),(0,a.parseFormat)(t,r.formatParsers.listLevel,l.format,r),(0,i.updateListMetadata)(l,(function(e){return e=e||{},(0,a.parseFormat)(t,[n.listLevelMetadataFormatHandler.parse],e,r),void 0===e.orderedStyleType&&void 0===e.unorderedStyleType&&(e=null),e})),(0,a.parseFormat)(t,r.formatParsers.segment,r.segmentFormat,r);var c=s.listParent;s.listParent=s.listParent||e,s.levels.push(l);try{r.elementProcessors.child(e,t,r)}finally{s.levels.pop(),s.listParent=c}}))}},8191:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.pProcessor=void 0;var o=r(9275),n=r(7304),a=r(5092),l=r(24),i=r(9366),s=r(202);t.pProcessor=function(e,t,r){(0,s.stackFormat)(r,{blockDecorator:"empty",segment:"shallowCloneForBlock",paragraph:"shallowClone"},(function(){r.blockDecorator=(0,l.createParagraphDecorator)(t.tagName);var o={};(0,i.parseFormat)(t,r.formatParsers.segmentOnBlock,o,r),Object.assign(r.segmentFormat,o),(0,n.blockProcessor)(e,t,r,o)})),(0,o.addBlock)(e,(0,a.createParagraph)(!0,r.blockFormat))}},970:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableProcessor=void 0;var o=r(7582),n=r(9275),a=r(988),l=r(1160),i=r(3095),s=r(9366),c=r(2347),d=r(202);function u(e){for(var t=[],r=e[e.length-1],o=e.length-2;o>=0;o--)void 0===e[o]?t[o]=0:(t[o]=r-e[o],r=e[o]);return t}t.tableProcessor=function(e,t,r){(0,d.stackFormat)(r,{segment:"shallowCloneForBlock",paragraph:"shallowCloneForGroup"},(function(){var f;(0,s.parseFormat)(t,r.formatParsers.block,r.blockFormat,r);var m=(0,a.createTable)(t.rows.length,r.blockFormat),p=1==(null===(f=r.rangeEx)||void 0===f?void 0:f.type)?r.rangeEx:null,v=null==p?void 0:p.table,g=null==p?void 0:p.coordinates,h=v==t&&!!(null==g?void 0:g.firstCell)&&!!(null==g?void 0:g.lastCell);r.allowCacheElement&&(m.cachedElement=t),(0,s.parseFormat)(t,r.formatParsers.table,m.format,r),(0,s.parseFormat)(t,r.formatParsers.tableBorder,m.format,r),(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r),(0,s.parseFormat)(t,r.formatParsers.dataset,m.dataset,r),(0,n.addBlock)(e,m);for(var b=[0],y=[0],_=r.zoomScale||1,C=function(e){var n=t.rows[e],a=m.rows[e],u=n.parentNode;(0,c.safeInstanceOf)(u,"HTMLTableSectionElement")?(0,s.parseFormat)(u,r.formatParsers.tableRow,a.format,r):r.allowCacheElement&&(a.cachedElement=n),(0,s.parseFormat)(n,r.formatParsers.tableRow,a.format,r),(0,d.stackFormat)(r,{paragraph:"shallowClone",segment:"shallowClone"},(function(){var t=n.parentElement,c=null==t?void 0:t.tagName;!t||"TBODY"!=c&&"THEAD"!=c&&"TFOOT"!=c||((0,s.parseFormat)(t,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(t,r.formatParsers.segmentOnBlock,r.segmentFormat,r)),(0,s.parseFormat)(n,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(n,r.formatParsers.segmentOnBlock,r.segmentFormat,r);for(var u,f=function(t,c){for(;a.cells[c];c++);var f=n.cells[t],p=r.isInSelection,v=c+f.colSpan,C=e+f.rowSpan,P=void 0===b[v],k=void 0===y[C];if(P||k){var S=(0,i.getBoundingClientRect)(f);(S.width>0||S.height>0)&&(P&&(b[v]=b[c]+S.width/_),k&&(y[C]=y[e]+S.height/_))}(0,d.stackFormat)(r,{paragraph:"shallowClone",segment:"shallowClone"},(function(){(0,s.parseFormat)(f,r.formatParsers.block,r.blockFormat,r),(0,s.parseFormat)(f,r.formatParsers.segmentOnTableCell,r.segmentFormat,r);var t=(0,o.__assign)({},r.blockFormat),n={};(0,s.parseFormat)(f,r.formatParsers.tableCell,t,r),(0,s.parseFormat)(f,r.formatParsers.tableBorder,t,r),(0,s.parseFormat)(f,r.formatParsers.dataset,n,r);for(var a=1;a<=f.colSpan;a++,c++)for(var i=1;i<=f.rowSpan;i++){var d=1==a&&1==i,u=(0,l.createTableCell)(a>1,i>1,"TH"==f.tagName,t);u.dataset=(0,o.__assign)({},n);var v=m.rows[e+i-1];if(v&&(v.cells[c]=u),d){r.allowCacheElement&&(u.cachedElement=f);var b=r.listFormat,y=b.listParent,_=b.levels;r.listFormat.listParent=void 0,r.listFormat.levels=[];try{r.elementProcessors.child(u,f,r)}finally{r.listFormat.listParent=y,r.listFormat.levels=_}}var C=r.isInSelection;(p&&C||h&&e>=g.firstCell.y&&e<=g.lastCell.y&&c>=g.firstCell.x&&c<=g.lastCell.x)&&(u.isSelected=!0)}})),u=c},p=0,v=0;p0&&(e.height=k[t])}))}))}},9892:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textProcessor=void 0;var o=r(7582),n=r(3883),a=r(8513),l=r(9871),i=r(8310),s=r(840),c=r(8063),d=r(7084);t.textProcessor=function(e,t,r){var n=t.nodeValue||"",a=(0,o.__read)((0,c.getRegularSelectionOffsets)(r,t),2),i=a[0],s=a[1];i>=0&&(f(e,n.substring(0,i),r),r.isInSelection=!0,(0,l.addSelectionMarker)(e,r),n=n.substring(i),s-=i),s>=0&&(f(e,n.substring(0,s),r),r.rangeEx&&!r.rangeEx.areAllCollapsed&&(0,l.addSelectionMarker)(e,r),r.isInSelection=!1,n=n.substring(s)),f(e,n,r)};var u=["pre","pre-wrap","pre-line","break-spaces"];function f(e,t,r){if(t){var o=e.blocks[e.blocks.length-1],l="Paragraph"==(null==o?void 0:o.blockType)?o:null,c=null==l?void 0:l.segments[l.segments.length-1];if("Text"==(null==c?void 0:c.segmentType)&&!!c.isSelected==!!r.isInSelection&&(0,i.areSameFormats)(c.format,r.segmentFormat)&&(0,i.areSameFormats)(c.link||{},r.link.format||{})&&(0,i.areSameFormats)(c.code||{},r.code.format||{}))c.text+=t;else if(!(0,d.hasSpacesOnly)(t)||(null==l?void 0:l.segments.length)>0||u.indexOf((null==l?void 0:l.format.whiteSpace)||"")>=0){var f=(0,s.createText)(t,r.segmentFormat);r.isInSelection&&(f.isSelected=!0),(0,n.addDecorators)(f,r),(0,a.addSegment)(e,f,r.blockFormat)}}}},9871:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addSelectionMarker=void 0;var o=r(3883),n=r(8513),a=r(5114);t.addSelectionMarker=function(e,t){var r=(0,a.createSelectionMarker)(t.segmentFormat);(0,o.addDecorators)(r,t),(0,n.addSegment)(e,r,t.blockFormat)}},8310:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areSameFormats=void 0;var o=r(2347);t.areSameFormats=function(e,t){if(e==t)return!0;var r=(0,o.getObjectKeys)(e),n=(0,o.getObjectKeys)(t);return r.length==n.length&&r.every((function(r){return e[r]==t[r]}))}},3095:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getBoundingClientRect=void 0,t.getBoundingClientRect=function(e){return e.getBoundingClientRect()}},3149:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getDefaultStyle=void 0,t.getDefaultStyle=function(e,t){var r=e.tagName.toLowerCase();return t.defaultStyles[r]||{}}},8063:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRegularSelectionOffsets=void 0,t.getRegularSelectionOffsets=function(e,t){var r,o=0==(null===(r=e.rangeEx)||void 0===r?void 0:r.type)?e.rangeEx.ranges[0]:null;return[(null==o?void 0:o.startContainer)==t?o.startOffset:-1,(null==o?void 0:o.endContainer)==t?o.endOffset:-1]}},2404:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBlockElement=void 0;var o=r(3149),n=["block","list-item","table","table-cell","flex"];t.isBlockElement=function(e,t){var r=e.style.display||(0,o.getDefaultStyle)(e,t).display||"";return n.indexOf(r)>=0}},9366:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseFormat=void 0;var o=r(3149);t.parseFormat=function(e,t,r,n){var a=(0,o.getDefaultStyle)(e,n);t.forEach((function(t){null==t||t(r,e,n,a)}))}},202:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.stackFormat=void 0;var o=r(7582),n=r(2347),a=["backgroundColor"],l=["marginLeft","marginRight","paddingLeft","paddingRight"];function i(e,t){switch(t){case"empty":return{};case void 0:return e;default:var r=(0,o.__assign)({},e);return(0,n.getObjectKeys)(e).forEach((function(e){("shallowCloneForBlock"==t&&a.indexOf(e)>=0||"shallowCloneForGroup"==t&&l.indexOf(e)>=0)&&delete r[e]})),r}}t.stackFormat=function(e,t,r){var n,a=e.segmentFormat,l=e.blockFormat,s=e.link,c=e.code,d=e.blockDecorator,u=t.segment,f=t.paragraph,m=t.link,p=t.code,v=t.blockDecorator;try{e.segmentFormat=i(a,u),e.blockFormat=i(l,f),e.link=function(e,t){switch(t){case"linkDefault":return{format:{underline:!0},dataset:{}};case"empty":return{format:{},dataset:{}};default:return{dataset:e.dataset,format:(0,o.__assign)({},e.format)}}}(s,m),e.code=function(e,t){switch(t){case"codeDefault":return{format:{fontFamily:"monospace"}};case"empty":return{format:{}};default:return e}}(c,p),e.blockDecorator=(n=d,"empty"===v?{format:{},tagName:""}:n),r()}finally{e.segmentFormat=a,e.blockFormat=l,e.link=s,e.code=c,e.blockDecorator=d}}},3233:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isNodeOfType=void 0,t.isNodeOfType=function(e,t){return!!e&&e.nodeType==t}},2362:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateListMetadata=void 0;var o=r(2347),n=r(6245),a=(0,o.createObjectDefinition)({orderedStyleType:(0,o.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,o.createNumberDefinition)(!0,void 0,1,9)},!0,!0);t.updateListMetadata=function(e,t){return(0,n.updateMetadata)(e,t,a)}},6245:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hasMetadata=t.updateMetadata=void 0;var o=r(2347),n="editingInfo";t.updateMetadata=function(e,t,r){var a=e.dataset[n],l=null;try{l=JSON.parse(a)}catch(e){}return r&&!(0,o.validate)(l,r)&&(l=null),t&&((l=t(l))?r&&!(0,o.validate)(l,r)||(e.dataset[n]=JSON.stringify(l)):delete e.dataset[n]),l},t.hasMetadata=function(e){return!!e.dataset[n]}},9980:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.directionFormatHandler=void 0,t.directionFormatHandler={parse:function(e,t,r,o){var n=t.style.direction||t.dir||o.direction;n&&(e.direction="rtl"==n?"rtl":"ltr")},apply:function(e,t){e.direction&&(t.style.direction=e.direction)}}},1276:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.displayFormatHandler=void 0,t.displayFormatHandler={parse:function(e,t){var r=t.style.display;r&&(e.display=r)},apply:function(e,t){e.display&&(t.style.display=e.display)}}},7762:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.htmlAlignFormatHandler=void 0;var o=r(3612),n=r(9980);t.htmlAlignFormatHandler={parse:function(e,t,r,a){n.directionFormatHandler.parse(e,t,r,a);var l=t.getAttribute("align");l&&(e.htmlAlign=(0,o.calcAlign)(l,e.direction),delete e.textAlign,delete r.blockFormat.textAlign)},apply:function(e,t){var r="rtl"==e.direction?"rtl":"ltr";e.htmlAlign&&t.setAttribute("align",o.ResultMap[e.htmlAlign][r])}}},4652:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.lineHeightFormatHandler=void 0,t.lineHeightFormatHandler={parse:function(e,t,r,o){var n=t.style.lineHeight||o.lineHeight;n&&"inherit"!=n&&(e.lineHeight=n)},apply:function(e,t){e.lineHeight&&(t.style.lineHeight=e.lineHeight)}}},4116:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.marginFormatHandler=void 0;var o=r(8704),n=["marginTop","marginRight","marginBottom","marginLeft"];t.marginFormatHandler={parse:function(e,t,r,a){n.forEach((function(r){var n=t.style[r]||a[r];if(n)switch(r){case"marginTop":case"marginBottom":e[r]=n;break;case"marginLeft":case"marginRight":e[r]=e[r]?(0,o.parseValueWithUnit)(e[r]||"",t)+(0,o.parseValueWithUnit)(n,t)+"px":n}}))},apply:function(e,t,r){n.forEach((function(o){var n=e[o];n!=r.implicitFormat[o]&&(t.style[o]=n||"0")}))}}},632:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.paddingFormatHandler=void 0;var r=["paddingTop","paddingRight","paddingBottom","paddingLeft"];t.paddingFormatHandler={parse:function(e,t){r.forEach((function(r){var o=t.style[r];o&&(e[r]=o)}))},apply:function(e,t){r.forEach((function(r){var o=e[r];o&&(t.style[r]=o)}))}}},9568:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textAlignFormatHandler=void 0;var o=r(3612),n=r(9980);t.textAlignFormatHandler={parse:function(e,t,r,a){var l;n.directionFormatHandler.parse(e,t,r,a);var i=t.style.textAlign||a.textAlign;"LI"==t.tagName&&"flex"===(null===(l=t.parentElement)||void 0===l?void 0:l.style.display)&&"column"===t.parentElement.style.flexDirection&&t.style.alignSelf&&(i=t.style.alignSelf),i&&(e.textAlign=(0,o.calcAlign)(i,e.direction))},apply:function(e,t){var r="rtl"==e.direction?"rtl":"ltr";if(e.textAlign){var n=t.parentElement,a=null==n?void 0:n.tagName;"LI"!=t.tagName||!n||"OL"!=a&&"UL"!=a?t.style.textAlign=o.ResultMap[e.textAlign][r]:(t.style.alignSelf=e.textAlign,t.parentElement.style.flexDirection="column",t.parentElement.style.display="flex")}}}},1167:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.whiteSpaceFormatHandler=void 0,t.whiteSpaceFormatHandler={parse:function(e,t,r,o){var n=t.style.whiteSpace||o.whiteSpace;n&&(e.whiteSpace=n)},apply:function(e,t,r){var o=r.implicitFormat.whiteSpace;e.whiteSpace!=o&&(t.style.whiteSpace=e.whiteSpace||"normal")}}},8891:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backgroundColorFormatHandler=void 0;var o=r(5150);t.backgroundColorFormatHandler={parse:function(e,t,r,n){var a=(0,o.getColor)(t,!0,r.darkColorHandler,!!r.isDarkMode)||n.backgroundColor;a&&(e.backgroundColor=a)},apply:function(e,t,r){e.backgroundColor&&(0,o.setColor)(t,e.backgroundColor,!0,r.darkColorHandler,!!r.isDarkMode)}}},5930:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.borderBoxFormatHandler=void 0,t.borderBoxFormatHandler={parse:function(e,t){var r;"border-box"==(null===(r=t.style)||void 0===r?void 0:r.boxSizing)&&(e.useBorderBox=!0)},apply:function(e,t){e.useBorderBox&&(t.style.boxSizing="border-box")}}},1136:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.borderFormatHandler=t.BorderKeys=void 0,t.BorderKeys=["borderTop","borderRight","borderBottom","borderLeft","borderRadius"],t.borderFormatHandler={parse:function(e,r){t.BorderKeys.forEach((function(t){var o=r.style[t];o&&(e[t]="none"==o?"":o)}))},apply:function(e,r){t.BorderKeys.forEach((function(t){var o=e[t];o&&(r.style[t]=o)}))}}},8577:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boxShadowFormatHandler=void 0,t.boxShadowFormatHandler={parse:function(e,t){var r;(null===(r=t.style)||void 0===r?void 0:r.boxShadow)&&(e.boxShadow=t.style.boxShadow)},apply:function(e,t){e.boxShadow&&(t.style.boxShadow=e.boxShadow)}}},1453:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.datasetFormatHandler=void 0;var o=r(2347);t.datasetFormatHandler={parse:function(e,t){var r=t.dataset;(0,o.getObjectKeys)(r).forEach((function(t){e[t]=r[t]||""}))},apply:function(e,t){(0,o.getObjectKeys)(e).forEach((function(r){t.dataset[r]=e[r]}))}}},5432:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.floatFormatHandler=void 0,t.floatFormatHandler={parse:function(e,t){var r=t.style.float||t.getAttribute("align");r&&(e.float=r)},apply:function(e,t){e.float&&(t.style.float=e.float)}}},6883:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.idFormatHandler=void 0,t.idFormatHandler={parse:function(e,t){t.id&&(e.id=t.id)},apply:function(e,t){e.id&&(t.id=e.id)}}},7302:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.sizeFormatHandler=void 0;var r=/[\d\.]+%/;function o(e,t){var o=e.getAttribute(t),n=parseInt(o||"");return o&&r.test(o)?o:Number.isNaN(n)?void 0:n+"px"}t.sizeFormatHandler={parse:function(e,t,r){var n=t.style.width||o(t,"width"),a=t.style.height||o(t,"height"),l=t.style.maxWidth,i=t.style.maxHeight,s=t.style.minWidth,c=t.style.minHeight;n&&(e.width=n),a&&(e.height=a),l&&(e.maxWidth=l),i&&(e.maxHeight=i),s&&(e.minWidth=s),c&&(e.minHeight=c)},apply:function(e,t){e.width&&(t.style.width=e.width),e.height&&(t.style.height=e.height),e.maxWidth&&(t.style.maxWidth=e.maxWidth),e.maxHeight&&(t.style.maxHeight=e.maxHeight),e.minWidth&&(t.style.minWidth=e.minWidth),e.minHeight&&(t.style.minHeight=e.minHeight)}}},8854:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.verticalAlignFormatHandler=void 0,t.verticalAlignFormatHandler={parse:function(e,t){switch(t.style.verticalAlign||t.getAttribute("valign")){case"baseline":case"initial":case"super":case"sub":case"text-top":case"text-bottom":case"top":e.verticalAlign="top";break;case"bottom":e.verticalAlign="bottom";break;case"middle":e.verticalAlign="middle"}},apply:function(e,t){e.verticalAlign&&(t.style.verticalAlign=e.verticalAlign)}}},4258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wordBreakFormatHandler=void 0,t.wordBreakFormatHandler={parse:function(e,t,r,o){var n=t.style.wordBreak||o.wordBreak;n&&(e.wordBreak=n)},apply:function(e,t){e.wordBreak&&(t.style.wordBreak=e.wordBreak)}}},8659:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFormatAppliers=t.getFormatParsers=t.defaultFormatAppliers=t.defaultFormatParsers=void 0;var o=r(7582),n=r(8891),a=r(8707),l=r(5930),i=r(1136),s=r(8577),c=r(1453),d=r(9980),u=r(1276),f=r(5432),m=r(7239),p=r(9101),v=r(2347),g=r(7762),h=r(6883),b=r(2647),y=r(3260),_=r(4652),C=r(7026),P=r(2128),k=r(9865),S=r(5931),O=r(4116),M=r(632),T=r(7302),w=r(6413),F=r(5855),x=r(746),E=r(461),j=r(9568),B=r(1268),L=r(5797),A=r(7506),I=r(8854),D=r(1167),H=r(4258),N={backgroundColor:n.backgroundColorFormatHandler,bold:a.boldFormatHandler,border:i.borderFormatHandler,borderBox:l.borderBoxFormatHandler,boxShadow:s.boxShadowFormatHandler,dataset:c.datasetFormatHandler,direction:d.directionFormatHandler,display:u.displayFormatHandler,float:f.floatFormatHandler,fontFamily:m.fontFamilyFormatHandler,fontSize:p.fontSizeFormatHandler,htmlAlign:g.htmlAlignFormatHandler,id:h.idFormatHandler,italic:b.italicFormatHandler,letterSpacing:y.letterSpacingFormatHandler,lineHeight:_.lineHeightFormatHandler,link:C.linkFormatHandler,listItemThread:P.listItemThreadFormatHandler,listLevelThread:k.listLevelThreadFormatHandler,listStylePosition:S.listStylePositionFormatHandler,margin:O.marginFormatHandler,padding:M.paddingFormatHandler,size:T.sizeFormatHandler,strike:w.strikeFormatHandler,superOrSubScript:F.superOrSubScriptFormatHandler,tableLayout:x.tableLayoutFormatHandler,tableSpacing:E.tableSpacingFormatHandler,textAlign:j.textAlignFormatHandler,textColor:B.textColorFormatHandler,textColorOnTableCell:L.textColorOnTableCellFormatHandler,underline:A.underlineFormatHandler,verticalAlign:I.verticalAlignFormatHandler,whiteSpace:D.whiteSpaceFormatHandler,wordBreak:H.wordBreakFormatHandler},R=["letterSpacing","fontFamily","fontSize"],z=["strike","underline","superOrSubScript","italic","bold"],W=["direction","textAlign","lineHeight","whiteSpace"],G=["backgroundColor","margin","padding","border"],U={block:W,listItem:["listItemThread"],listItemElement:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(W),!1),["direction","textAlign","lineHeight","margin"],!1),listLevel:["listLevelThread","direction","textAlign","margin","padding","listStylePosition","backgroundColor"],styleBasedSegment:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),["textColor","backgroundColor","lineHeight"],!1),elementBasedSegment:z,segment:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColor","backgroundColor","lineHeight"],!1),segmentOnBlock:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColor"],!1),segmentOnTableCell:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(R),!1),(0,o.__read)(z),!1),["textColorOnTableCell"],!1),tableCell:["border","backgroundColor","padding","verticalAlign","wordBreak","textColor","htmlAlign","size"],tableRow:["backgroundColor"],table:["id","border","backgroundColor","display","htmlAlign","margin","size","tableLayout"],tableBorder:["borderBox","tableSpacing"],tableCellBorder:["borderBox"],image:["id","size","margin","padding","borderBox","border","boxShadow","display","float","verticalAlign"],link:["link","textColor","underline","display","margin","padding","backgroundColor","border","size","textAlign"],segmentUnderLink:["textColor"],code:["fontFamily","display"],dataset:["dataset"],divider:(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(W),!1),(0,o.__read)(G),!1),["display","size","htmlAlign"],!1),container:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(G),!1),["htmlAlign","size","display"],!1)};t.defaultFormatParsers=(0,v.getObjectKeys)(N).reduce((function(e,t){return e[t]=N[t].parse,e}),{}),t.defaultFormatAppliers=(0,v.getObjectKeys)(N).reduce((function(e,t){return e[t]=N[t].apply,e}),{}),t.getFormatParsers=function(e,r){return void 0===e&&(e={}),void 0===r&&(r={}),(0,v.getObjectKeys)(U).reduce((function(o,n){var a=U[n].map((function(r){return void 0===e[r]?t.defaultFormatParsers[r]:e[r]})).concat(r[n]||[]);return o[n]=a,o}),{})},t.getFormatAppliers=function(e,r){return void 0===e&&(e={}),void 0===r&&(r={}),(0,v.getObjectKeys)(U).reduce((function(o,n){var a=U[n].map((function(r){return void 0===e[r]?t.defaultFormatAppliers[r]:e[r]})).concat(r[n]||[]);return o[n]=a,o}),{})}},154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getOrderedListStyleValue=t.listItemMetadataFormatHandler=void 0;var o=r(7582),n=r(2347),a=r(3233),l=r(2438),i=/\$\{(\w+)\}/,s=["decimal","lower-alpha","lower-roman"],c=["disc","circle","square"],d=65,u={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};function f(e,t){return e?e.replace(i,(function(e,r){switch(r){case"Number":return t+"";case"LowerAlpha":return m(t,!0);case"UpperAlpha":return m(t,!1);case"LowerRoman":return p(t,!0);case"UpperRoman":return p(t,!1)}return""})):void 0}function m(e,t){var r="";for(e--;e>=0;)r=String.fromCharCode(e%26+d)+r,e=Math.floor(e/26)-1;return t?r.toLowerCase():r}function p(e,t){var r,a,l="";try{for(var i=(0,o.__values)((0,n.getObjectKeys)(u)),s=i.next();!s.done;s=i.next()){var c=s.value,d=Math.floor(e/u[c]);e-=d*u[c],l+=c.repeat(d)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return t?l.toLocaleLowerCase():l}t.listItemMetadataFormatHandler={parse:function(){},apply:function(e,t,r){var o,i,d=t.parentNode,u=r.listFormat.nodeStack.length-2;if(u>=0&&(0,a.isNodeOfType)(d,1)&&!d.style.listStyleType){var m="OL"==(0,n.getTagOfNode)(d)?null!==(o=f(l.OrderedMap[e.orderedStyleType],r.listFormat.threadItemCounts[u]))&&void 0!==o?o:s[u%s.length]:null!==(i=l.UnorderedMap[e.unorderedStyleType])&&void 0!==i?i:c[u%c.length];m&&(u>0||"decimal"!=m&&"disc"!=m)&&(t.style.listStyleType=m)}}},t.getOrderedListStyleValue=f},2128:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listItemThreadFormatHandler=void 0;var o=r(2347);function n(e){return(0,o.safeInstanceOf)(e,"HTMLLIElement")&&(0,o.safeInstanceOf)(e.parentNode,"HTMLOListElement")}t.listItemThreadFormatHandler={parse:function(e,t,r,o){var a=r.listFormat,l=a.levels.length,i=t.style.display||o.display;i&&"list-item"!=i?e.displayForDummyItem=i:n(t)&&l>0&&(a.threadItemCounts[l-1]++,a.threadItemCounts.splice(l),a.levels.forEach((function(e){delete e.format.startNumberOverride})))},apply:function(e,t,r){var o;if(e.displayForDummyItem)t.style.display=e.displayForDummyItem;else if(n(t)){var a=r.listFormat,l=a.threadItemCounts,i=a.nodeStack.length-2;i>=0&&(l.splice(i+1),l[i]=(null!==(o=l[i])&&void 0!==o?o:0)+1)}}}},2438:(e,t,r)=>{var o,n;Object.defineProperty(t,"__esModule",{value:!0}),t.listLevelMetadataFormatHandler=t.UnorderedMap=t.OrderedMap=void 0;var a=r(2347);t.OrderedMap=((o={})[1]="decimal",o[2]='"${Number}- "',o[3]='"${Number}) "',o[4]='"(${Number}) "',o[5]="lower-alpha",o[8]='"${LowerAlpha}- "',o[6]='"${LowerAlpha}) "',o[7]='"(${LowerAlpha}) "',o[9]="upper-alpha",o[12]='"${UpperAlpha}- "',o[10]='"${UpperAlpha}) "',o[11]='"(${UpperAlpha}) "',o[13]="lower-roman",o[16]='"${LowerRoman}- "',o[14]='"${LowerRoman}) "',o[15]='"(${LowerRoman}) "',o[17]="upper-roman",o[20]='"${UpperRoman}- "',o[18]='"${UpperRoman}) "',o[19]='"(${UpperRoman}) "',o),t.UnorderedMap=((n={})[1]="disc",n[3]='"∎ "',n[9]="circle",n[2]='"- "',n[5]='"➔ "',n[8]='"➔ "',n[4]='"➢ "',n[6]='"➪ "',n[7]='"— "',n);var l={1:"decimal",a:"lower-alpha",A:"upper-alpha",i:"lower-roman",I:"upper-roman"};function i(e,t){return void 0===t?void 0:(0,a.getObjectKeys)(e).filter((function(r){return e[r]==t}))[0]}t.listLevelMetadataFormatHandler={parse:function(e,r){var o=r.style.listStyleType||(0,a.safeInstanceOf)(r,"HTMLOListElement")&&l[r.type],n=(0,a.getTagOfNode)(r);if(o)if("OL"==n&&void 0===e.orderedStyleType){var s=i(t.OrderedMap,o);e.orderedStyleType=void 0===s?void 0:parseInt(s)}else"UL"==n&&void 0===e.unorderedStyleType&&(s=i(t.UnorderedMap,o),e.unorderedStyleType=void 0===s?void 0:parseInt(s))},apply:function(e,r){var o="OL"==(0,a.getTagOfNode)(r)?t.OrderedMap[e.orderedStyleType]:t.UnorderedMap[e.unorderedStyleType];o&&o.indexOf('"')<0&&(r.style.listStyleType=o)}}},9865:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listLevelThreadFormatHandler=void 0;var o=r(2347);t.listLevelThreadFormatHandler={parse:function(e,t,r){if((0,o.safeInstanceOf)(t,"HTMLOListElement")){var n=r.listFormat,a=n.threadItemCounts,l=n.levels.length;"number"==typeof a[l]&&t.start!=a[l]+1&&(e.startNumberOverride=t.start),a[l]=t.start-1}},apply:function(e,t,r){var n=r.listFormat,a=n.threadItemCounts,l=n.nodeStack.length-1;if(l>=0&&(0,o.safeInstanceOf)(t,"HTMLOListElement")){var i=e.startNumberOverride;"number"==typeof i?a[l]=i-1:"number"!=typeof a[l]&&(a[l]=0),a.splice(l+1),t.start=a[l]+1}}}},5931:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listStylePositionFormatHandler=void 0,t.listStylePositionFormatHandler={parse:function(e,t){var r=t.style.listStylePosition;r&&(e.listStylePosition=r)},apply:function(e,t){e.listStylePosition&&(t.style.listStylePosition=e.listStylePosition)}}},8707:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.boldFormatHandler=void 0;var o=r(2347);t.boldFormatHandler={parse:function(e,t,r,o){var n=t.style.fontWeight||o.fontWeight;n&&(e.fontWeight=n)},apply:function(e,t,r){if(void 0!==e.fontWeight){var n=r.implicitFormat.fontWeight;if(n&&n!=e.fontWeight||!n&&e.fontWeight&&"normal"!=e.fontWeight)if("bold"==e.fontWeight){var a=t.ownerDocument.createElement("b");(0,o.moveChildNodes)(a,t),t.appendChild(a)}else t.style.fontWeight=e.fontWeight||"normal"}}}},7239:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontFamilyFormatHandler=void 0,t.fontFamilyFormatHandler={parse:function(e,t,r,o){var n=t.style.fontFamily||o.fontFamily;n&&"inherit"!=n&&(e.fontFamily=n)},apply:function(e,t,r){e.fontFamily&&e.fontFamily!=r.implicitFormat.fontFamily&&(t.style.fontFamily=e.fontFamily)}}},9101:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fontSizeFormatHandler=void 0;var o=r(5855),n=r(8704);t.fontSizeFormatHandler={parse:function(e,t,r,l){var i=t.style.fontSize||l.fontSize,s=t.style.verticalAlign||l.verticalAlign;i&&!(0,o.isSuperOrSubScript)(i,s)&&"inherit"!=i&&(t.style.fontSize?e.fontSize=function(e,t){var r=a[e];if(r)return r;if("smaller"!=e&&"larger"!=e&&!e.endsWith("em")&&!e.endsWith("%"))return"inherit"==e||"revert"==e||"unset"==e?void 0:e;if(t){var o=(0,n.parseValueWithUnit)(t,void 0,"px");if(o)switch(e){case"smaller":return Math.round(500*o/6)/100+"px";case"larger":return Math.round(600*o/5)/100+"px";default:return(0,n.parseValueWithUnit)(e,o,"px")+"px"}}}(i,r.segmentFormat.fontSize):l.fontSize&&(e.fontSize=i))},apply:function(e,t,r){e.fontSize&&e.fontSize!=r.implicitFormat.fontSize&&(t.style.fontSize=e.fontSize)}};var a={"xx-small":"6.75pt","x-small":"7.5pt",small:"9.75pt",medium:"12pt",large:"13.5pt","x-large":"18pt","xx-large":"24pt","xxx-large":"36pt"}},2647:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.italicFormatHandler=void 0;var o=r(2347);t.italicFormatHandler={parse:function(e,t,r,o){var n=t.style.fontStyle||o.fontStyle;"italic"==n||"oblique"==n?e.italic=!0:"initial"!=n&&"normal"!=n||(e.italic=!1)},apply:function(e,t,r){if(void 0!==e.italic&&!!r.implicitFormat.italic!=!!e.italic)if(e.italic){var n=t.ownerDocument.createElement("i");(0,o.moveChildNodes)(n,t),t.appendChild(n)}else t.style.fontStyle="normal"}}},3260:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.letterSpacingFormatHandler=void 0,t.letterSpacingFormatHandler={parse:function(e,t,r,o){var n=t.style.letterSpacing||o.letterSpacing;n&&(e.letterSpacing=n)},apply:function(e,t,r){e.letterSpacing&&(t.style.letterSpacing=e.letterSpacing)}}},7026:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.linkFormatHandler=void 0;var o=r(2347);t.linkFormatHandler={parse:function(e,t){if((0,o.safeInstanceOf)(t,"HTMLAnchorElement")){var r=t.name,n=t.getAttribute("href"),a=t.target,l=t.rel,i=t.id,s=t.className,c=t.title;r&&(e.name=r),n&&(e.href=n),a&&(e.target=a),i&&(e.anchorId=i),l&&(e.relationship=l),c&&(e.anchorTitle=c),s&&(e.anchorClass=s)}},apply:function(e,t){(0,o.safeInstanceOf)(t,"HTMLAnchorElement")&&e.href&&(t.href=e.href,e.name&&(t.name=e.name),e.target&&(t.target=e.target),e.anchorId&&(t.id=e.anchorId),e.anchorClass&&(t.className=e.anchorClass),e.anchorTitle&&(t.title=e.anchorTitle),e.relationship&&(t.rel=e.relationship))}}},6413:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.strikeFormatHandler=void 0;var o=r(2347);t.strikeFormatHandler={parse:function(e,t,r,o){var n=t.style.textDecoration||o.textDecoration;(null==n?void 0:n.indexOf("line-through"))>=0&&(e.strikethrough=!0)},apply:function(e,t){if(e.strikethrough){var r=t.ownerDocument.createElement("s");(0,o.moveChildNodes)(r,t),t.appendChild(r)}}}},5855:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isSuperOrSubScript=t.superOrSubScriptFormatHandler=void 0;var o=r(2347);function n(e,t){return"smaller"==e&&("sub"==t||"super"==t)}t.superOrSubScriptFormatHandler={parse:function(e,t,r,o){var a=t.style.verticalAlign||o.verticalAlign;n(t.style.fontSize||o.fontSize,a)&&(e.superOrSubScriptSequence=(e.superOrSubScriptSequence||"").split(" ").concat(a).join(" ").trim())},apply:function(e,t){e.superOrSubScriptSequence&&e.superOrSubScriptSequence.split(" ").reverse().forEach((function(e){var r="super"==e?"sup":"sub"==e?"sub":null;if(r){var n=t.ownerDocument.createElement(r);(0,o.moveChildNodes)(n,t),t.appendChild(n)}}))}},t.isSuperOrSubScript=n},1268:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textColorFormatHandler=void 0;var o=r(5150);t.textColorFormatHandler={parse:function(e,t,r,n){var a=(0,o.getColor)(t,!1,r.darkColorHandler,!!r.isDarkMode)||n.color;a&&"inherit"!=a&&(e.textColor=a)},apply:function(e,t,r){var n=r.implicitFormat.textColor;e.textColor&&e.textColor!=n&&(0,o.setColor)(t,e.textColor,!1,r.darkColorHandler,!!r.isDarkMode)}}},7506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.underlineFormatHandler=void 0;var o=r(2347);t.underlineFormatHandler={parse:function(e,t,r,o){var n=t.style.textDecoration||o.textDecoration;(null==n?void 0:n.indexOf("underline"))>=0?e.underline=!0:"A"==t.tagName&&"none"==n&&(e.underline=!1)},apply:function(e,t,r){if(void 0!==e.underline&&!!r.implicitFormat.underline!=!!e.underline)if(e.underline){var n=t.ownerDocument.createElement("u");(0,o.moveChildNodes)(n,t),t.appendChild(n)}else t.style.textDecoration="none"}}},746:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableLayoutFormatHandler=void 0,t.tableLayoutFormatHandler={parse:function(e,t){var r=t.style.tableLayout;r&&"inherit"!=r&&(e.tableLayout=r)},apply:function(e,t){e.tableLayout&&(t.style.tableLayout=e.tableLayout)}}},461:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tableSpacingFormatHandler=void 0;var r="collapse";t.tableSpacingFormatHandler={parse:function(e,t){t.style.borderCollapse==r&&(e.borderCollapse=!0)},apply:function(e,t){e.borderCollapse&&(t.style.borderCollapse=r,t.style.borderSpacing="0",t.style.boxSizing="border-box")}}},5797:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.textColorOnTableCellFormatHandler=void 0,t.textColorOnTableCellFormatHandler={parse:function(e,t){t.style.color&&delete e.textColor},apply:function(){}}},5150:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setColor=t.getColor=t.DeprecatedColors=void 0;var o=r(2347);t.DeprecatedColors=["inactiveborder","activeborder","inactivecaptiontext","inactivecaption","activecaption","appworkspace","infobackground","background","buttonhighlight","buttonshadow","captiontext","infotext","menutext","menu","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedfhadow","windowtext","windowframe","window"],t.getColor=function(e,r,n,a){var l;return l||(l=n&&function(e,t,r,n){var a;return"FONT"==(0,o.getTagOfNode)(e)&&!e.style.getPropertyValue(n?"background-color":"color")&&t&&(a=e.getAttribute(n?"bgcolor":"color"))?r.findLightColorFromDarkColor(a):null}(e,a,n,r)||(r?e.style.backgroundColor:e.style.color)||e.getAttribute(r?"bgcolor":"color")||void 0),l&&t.DeprecatedColors.indexOf(l)>-1&&(l=void 0),n&&(l=n.parseColorValue(l).lightModeColor),l},t.setColor=function(e,t,r,o,n){var a=o?o.registerColor(t,n):t;r?e.style.backgroundColor=a:e.style.color=a}},976:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.defaultImplicitFormatMap=t.PseudoTagNames=t.defaultStyleMap=void 0;var o={display:"block"};t.defaultStyleMap={address:o,article:o,aside:o,b:{fontWeight:"bold"},blockquote:{display:"block",marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px"},br:o,center:{display:"block",textAlign:"center"},dd:o,div:o,dl:o,dt:o,em:{fontStyle:"italic"},fieldset:o,figcaption:o,figure:o,footer:o,form:o,h1:{display:"block",fontWeight:"bold",fontSize:"2em"},h2:{display:"block",fontWeight:"bold",fontSize:"1.5em"},h3:{display:"block",fontWeight:"bold",fontSize:"1.17em"},h4:{display:"block",fontWeight:"bold"},h5:{display:"block",fontWeight:"bold",fontSize:"0.83em"},h6:{display:"block",fontWeight:"bold",fontSize:"0.67em"},header:o,hr:o,i:{fontStyle:"italic"},li:{display:"list-item"},main:o,nav:o,ol:o,p:{display:"block",marginTop:"1em",marginBottom:"1em"},pre:{display:"block",fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"},s:{textDecoration:"line-through"},section:o,strike:{textDecoration:"line-through"},strong:{fontWeight:"bold"},sub:{verticalAlign:"sub",fontSize:"smaller"},sup:{verticalAlign:"super",fontSize:"smaller"},table:{display:"table",boxSizing:"border-box"},td:{display:"table-cell"},th:{display:"table-cell"},u:{textDecoration:"underline"},ul:o},(t.PseudoTagNames||(t.PseudoTagNames={})).childOfPre="pre *",t.defaultImplicitFormatMap=((r={a:{underline:!0},blockquote:{marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px"},code:{fontFamily:"monospace"},h1:{fontWeight:"bold",fontSize:"2em"},h2:{fontWeight:"bold",fontSize:"1.5em"},h3:{fontWeight:"bold",fontSize:"1.17em"},h4:{fontWeight:"bold",fontSize:"1em"},h5:{fontWeight:"bold",fontSize:"0.83em"},h6:{fontWeight:"bold",fontSize:"0.67em"},p:{marginTop:"1em",marginBottom:"1em"},pre:{fontFamily:"monospace",whiteSpace:"pre",marginTop:"1em",marginBottom:"1em"}})["pre *"]={fontFamily:"monospace",whiteSpace:"pre"},r)},3612:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.calcAlign=t.ResultMap=void 0,t.ResultMap={start:{ltr:"left",rtl:"right"},center:{ltr:"center",rtl:"center"},end:{ltr:"right",rtl:"left"},initial:{ltr:"initial",rtl:"initial"},justify:{ltr:"justify",rtl:"justify"}},t.calcAlign=function(e,t){switch(e){case"center":return"center";case"left":return"rtl"==t?"end":"start";case"right":return"rtl"==t?"start":"end";case"start":case"end":case"justify":case"initial":return e;default:return}}},8704:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseValueWithUnit=void 0;var o=r(7582),n=r(2347),a=/(-?\d+(\.\d+)?)([a-z]+|%)/;function l(e){if(void 0===e)return 0;if("number"==typeof e)return e;var t=(0,n.getComputedStyle)(e,"font-size");return i(parseFloat(t))}function i(e){return Math.round(4e3*e/3)/1e3}t.parseValueWithUnit=function(e,t,r){void 0===e&&(e=""),void 0===r&&(r="px");var n,s=a.exec(e),c=0;if(s){var d=(0,o.__read)(s,4),u=(d[0],d[1]),f=(d[2],d[3]),m=parseFloat(u);switch(f){case"px":c=m;break;case"pt":c=i(m);break;case"em":c=l(t)*m;break;case"ex":c=l(t)*m/2;break;case"%":c=l(t)*m/100}}return c>0&&"pt"==r&&(n=c,c=Math.round(3e3*n/4)/1e3),c}},1246:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDomToModelContext=t.defaultImplicitFormatMap=t.DeprecatedColors=t.BorderKeys=t.parseValueWithUnit=t.setParagraphNotImplicit=t.normalizeSingleSegment=t.isWhiteSpacePreserved=t.addSegment=t.unwrapBlock=t.isGeneralSegment=t.normalizeContentModel=t.addLink=t.addCode=t.addBlock=t.createListLevel=t.createDivider=t.createEntity=t.createGeneralBlock=t.createGeneralSegment=t.createParagraphDecorator=t.createContentModelDocument=t.createImage=t.createText=t.createTableCell=t.createTable=t.createSelectionMarker=t.createParagraph=t.createFormatContainer=t.createListItem=t.createBr=t.isNodeOfType=t.updateListMetadata=t.hasMetadata=t.updateMetadata=t.areSameFormats=t.parseFormat=t.getRegularSelectionOffsets=t.tableProcessor=t.entityProcessor=t.processChildNode=t.handleRegularSelection=t.childProcessor=t.contentModelToDom=t.domToContentModel=void 0;var o=r(1807);Object.defineProperty(t,"domToContentModel",{enumerable:!0,get:function(){return o.domToContentModel}});var n=r(4266);Object.defineProperty(t,"contentModelToDom",{enumerable:!0,get:function(){return n.contentModelToDom}});var a=r(9384);Object.defineProperty(t,"childProcessor",{enumerable:!0,get:function(){return a.childProcessor}}),Object.defineProperty(t,"handleRegularSelection",{enumerable:!0,get:function(){return a.handleRegularSelection}}),Object.defineProperty(t,"processChildNode",{enumerable:!0,get:function(){return a.processChildNode}});var l=r(6905);Object.defineProperty(t,"entityProcessor",{enumerable:!0,get:function(){return l.entityProcessor}});var i=r(970);Object.defineProperty(t,"tableProcessor",{enumerable:!0,get:function(){return i.tableProcessor}});var s=r(8063);Object.defineProperty(t,"getRegularSelectionOffsets",{enumerable:!0,get:function(){return s.getRegularSelectionOffsets}});var c=r(9366);Object.defineProperty(t,"parseFormat",{enumerable:!0,get:function(){return c.parseFormat}});var d=r(8310);Object.defineProperty(t,"areSameFormats",{enumerable:!0,get:function(){return d.areSameFormats}});var u=r(6245);Object.defineProperty(t,"updateMetadata",{enumerable:!0,get:function(){return u.updateMetadata}}),Object.defineProperty(t,"hasMetadata",{enumerable:!0,get:function(){return u.hasMetadata}});var f=r(2362);Object.defineProperty(t,"updateListMetadata",{enumerable:!0,get:function(){return f.updateListMetadata}});var m=r(3233);Object.defineProperty(t,"isNodeOfType",{enumerable:!0,get:function(){return m.isNodeOfType}});var p=r(7826);Object.defineProperty(t,"createBr",{enumerable:!0,get:function(){return p.createBr}});var v=r(7724);Object.defineProperty(t,"createListItem",{enumerable:!0,get:function(){return v.createListItem}});var g=r(2766);Object.defineProperty(t,"createFormatContainer",{enumerable:!0,get:function(){return g.createFormatContainer}});var h=r(5092);Object.defineProperty(t,"createParagraph",{enumerable:!0,get:function(){return h.createParagraph}});var b=r(5114);Object.defineProperty(t,"createSelectionMarker",{enumerable:!0,get:function(){return b.createSelectionMarker}});var y=r(988);Object.defineProperty(t,"createTable",{enumerable:!0,get:function(){return y.createTable}});var _=r(1160);Object.defineProperty(t,"createTableCell",{enumerable:!0,get:function(){return _.createTableCell}});var C=r(840);Object.defineProperty(t,"createText",{enumerable:!0,get:function(){return C.createText}});var P=r(5566);Object.defineProperty(t,"createImage",{enumerable:!0,get:function(){return P.createImage}});var k=r(5733);Object.defineProperty(t,"createContentModelDocument",{enumerable:!0,get:function(){return k.createContentModelDocument}});var S=r(24);Object.defineProperty(t,"createParagraphDecorator",{enumerable:!0,get:function(){return S.createParagraphDecorator}});var O=r(8885);Object.defineProperty(t,"createGeneralSegment",{enumerable:!0,get:function(){return O.createGeneralSegment}});var M=r(9237);Object.defineProperty(t,"createGeneralBlock",{enumerable:!0,get:function(){return M.createGeneralBlock}});var T=r(1033);Object.defineProperty(t,"createEntity",{enumerable:!0,get:function(){return T.createEntity}});var w=r(7110);Object.defineProperty(t,"createDivider",{enumerable:!0,get:function(){return w.createDivider}});var F=r(1285);Object.defineProperty(t,"createListLevel",{enumerable:!0,get:function(){return F.createListLevel}});var x=r(9275);Object.defineProperty(t,"addBlock",{enumerable:!0,get:function(){return x.addBlock}});var E=r(3883);Object.defineProperty(t,"addCode",{enumerable:!0,get:function(){return E.addCode}});var j=r(3883);Object.defineProperty(t,"addLink",{enumerable:!0,get:function(){return j.addLink}});var B=r(8767);Object.defineProperty(t,"normalizeContentModel",{enumerable:!0,get:function(){return B.normalizeContentModel}});var L=r(183);Object.defineProperty(t,"isGeneralSegment",{enumerable:!0,get:function(){return L.isGeneralSegment}});var A=r(5960);Object.defineProperty(t,"unwrapBlock",{enumerable:!0,get:function(){return A.unwrapBlock}});var I=r(8513);Object.defineProperty(t,"addSegment",{enumerable:!0,get:function(){return I.addSegment}});var D=r(3897);Object.defineProperty(t,"isWhiteSpacePreserved",{enumerable:!0,get:function(){return D.isWhiteSpacePreserved}});var H=r(3393);Object.defineProperty(t,"normalizeSingleSegment",{enumerable:!0,get:function(){return H.normalizeSingleSegment}});var N=r(3963);Object.defineProperty(t,"setParagraphNotImplicit",{enumerable:!0,get:function(){return N.setParagraphNotImplicit}});var R=r(8704);Object.defineProperty(t,"parseValueWithUnit",{enumerable:!0,get:function(){return R.parseValueWithUnit}});var z=r(1136);Object.defineProperty(t,"BorderKeys",{enumerable:!0,get:function(){return z.BorderKeys}});var W=r(5150);Object.defineProperty(t,"DeprecatedColors",{enumerable:!0,get:function(){return W.DeprecatedColors}});var G=r(976);Object.defineProperty(t,"defaultImplicitFormatMap",{enumerable:!0,get:function(){return G.defaultImplicitFormatMap}});var U=r(9968);Object.defineProperty(t,"createDomToModelContext",{enumerable:!0,get:function(){return U.createDomToModelContext}})},3963:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setParagraphNotImplicit=void 0,t.setParagraphNotImplicit=function(e){"Paragraph"==e.blockType&&e.isImplicit&&(e.isImplicit=!1)}},9275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addBlock=void 0,t.addBlock=function(e,t){e.blocks.push(t)}},3883:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDecorators=t.addCode=t.addLink=void 0;var o=r(7582);function n(e,t){t.format.href&&(e.link={format:(0,o.__assign)({},t.format),dataset:(0,o.__assign)({},t.dataset)})}function a(e,t){t.format.fontFamily&&(e.code={format:(0,o.__assign)({},t.format)})}t.addLink=n,t.addCode=a,t.addDecorators=function(e,t){n(e,t.link),a(e,t.code)}},8513:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addSegment=void 0;var o=r(9275),n=r(5092);t.addSegment=function(e,t,r){var a,l=e.blocks[e.blocks.length-1];"Paragraph"==(null==l?void 0:l.blockType)?a=l:(a=(0,n.createParagraph)(!0,r),(0,o.addBlock)(e,a));var i=a.segments[a.segments.length-1];"SelectionMarker"==t.segmentType?i&&i.isSelected||a.segments.push(t):(t.isSelected&&"SelectionMarker"==(null==i?void 0:i.segmentType)&&a.segments.pop(),a.segments.push(t))}},7084:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hasSpacesOnly=void 0;var r=/^[\r\n\t ]*$/;t.hasSpacesOnly=function(e){return r.test(e)}},4451:(e,t)=>{function r(e){switch(e.blockType){case"Paragraph":return 0==e.segments.length;case"Table":return e.rows.every((function(e){return 0==e.cells.length}));case"BlockGroup":return o(e);default:return!1}}function o(e){switch(e.blockGroupType){case"FormatContainer":return"div"!=e.tagName&&e.blocks.every(r);case"ListItem":return e.blocks.every(r);case"Document":case"General":case"TableCell":return!1;default:return!0}}function n(e){switch(e.segmentType){case"Text":return!e.text;case"Image":return!e.src;default:return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.isEmpty=t.isSegmentEmpty=t.isBlockGroupEmpty=t.isBlockEmpty=void 0,t.isBlockEmpty=r,t.isBlockGroupEmpty=o,t.isSegmentEmpty=n,t.isEmpty=function(e){return function(e){return"string"==typeof e.blockGroupType}(e)?o(e):function(e){return"string"==typeof e.blockType}(e)?r(e):!!function(e){return"string"==typeof e.segmentType}(e)&&n(e)}},183:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isGeneralSegment=void 0,t.isGeneralSegment=function(e){return"General"==e.blockGroupType&&"General"==e.segmentType}},3897:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isWhiteSpacePreserved=void 0;var r=["pre","pre-wrap","break-spaces"];t.isWhiteSpacePreserved=function(e){return e.format.whiteSpace&&r.indexOf(e.format.whiteSpace)>=0||!1}},8767:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeContentModel=void 0;var o=r(4451),n=r(4858),a=r(5960);t.normalizeContentModel=function e(t){for(var r=t.blocks.length-1;r>=0;r--){var l=t.blocks[r];switch(l.blockType){case"BlockGroup":"ListItem"==l.blockGroupType&&0==l.levels.length?(r+=l.blocks.length,(0,a.unwrapBlock)(t,l)):e(l);break;case"Paragraph":(0,n.normalizeParagraph)(l);break;case"Table":for(var i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeParagraph=void 0;var o=r(7826),n=r(4451),a=r(3897),l=r(3393);t.normalizeParagraph=function(e){var t=e.segments;if(!e.isImplicit&&t.length>0){var r=t[t.length-1],i=t[t.length-2];if("SelectionMarker"!=r.segmentType||i&&"Br"!=i.segmentType){if(t.length>1&&"Br"==t[t.length-1].segmentType){var s=t.filter((function(e){return"SelectionMarker"!=e.segmentType}));s.length>1&&"Br"!=s[s.length-2].segmentType&&t.pop()}}else t.push((0,o.createBr)(r.format))}(0,a.isWhiteSpacePreserved)(e)||(0,l.normalizeAllSegments)(e),function(e){for(var t=e.segments.length-1;t>=0;t--)(0,n.isSegmentEmpty)(e.segments[t])&&e.segments.splice(t,1)}(e)}},3393:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeSegment=t.createNormalizeSegmentContext=t.normalizeSingleSegment=t.normalizeAllSegments=void 0;var o=r(7084),n=" ",a=" ",l=/^\u0020+/,i=/\u0020+$/;function s(e){return Object.assign(null!=e?e:{},{textSegments:[],ignoreLeadingSpaces:!0,ignoreTrailingSpaces:!0,lastInlineSegment:void 0,lastTextSegment:void 0})}function c(e,t){switch(e.segmentType){case"Br":d(t.textSegments,t.lastInlineSegment),u(t.lastTextSegment,t.lastInlineSegment),s(t);break;case"Entity":case"General":case"Image":t.lastInlineSegment=e,t.ignoreLeadingSpaces=!1;break;case"Text":t.textSegments.push(e),t.lastInlineSegment=e,t.lastTextSegment=e;var r=e.text.substring(0,1),c=e.text.substr(-1);(0,o.hasSpacesOnly)(e.text)||(r==n&&(e.text=e.text.replace(l,t.ignoreLeadingSpaces?"":a)),c==n&&(e.text=e.text.replace(i,t.ignoreTrailingSpaces?n:a))),t.ignoreLeadingSpaces=c==n}}function d(e,t){e.forEach((function(e){if(e!=t){var r=e.text;r.substr(-1)==a&&r.length>1&&r.substr(-2,1)!=n&&(e.text=r.substring(0,r.length-1)+n)}}))}function u(e,t){e&&e==t&&(null==e?void 0:e.text.substr(-1))==n&&(e.text=e.text.replace(i,""))}t.normalizeAllSegments=function(e){var t=s();e.segments.forEach((function(e){c(e,t)})),d(t.textSegments,t.lastInlineSegment),u(t.lastTextSegment,t.lastInlineSegment)},t.normalizeSingleSegment=function(e,t){void 0===t&&(t=!1);var r=s();r.ignoreTrailingSpaces=t,c(e,r)},t.createNormalizeSegmentContext=function(){return s()},t.normalizeSegment=c},5960:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unwrapBlock=void 0;var o=r(7582),n=r(3963);t.unwrapBlock=function(e,t){var r,a,l=null!==(a=null==e?void 0:e.blocks.indexOf(t))&&void 0!==a?a:-1;l>=0&&(t.blocks.forEach(n.setParagraphNotImplicit),null==e||(r=e.blocks).splice.apply(r,(0,o.__spreadArray)([l,1],(0,o.__read)(t.blocks),!1)))}},7826:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createBr=void 0;var o=r(7582);t.createBr=function(e){return{segmentType:"Br",format:e?(0,o.__assign)({},e):{}}}},5733:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelDocument=void 0,t.createContentModelDocument=function(e){var t={blockGroupType:"Document",blocks:[]};return e&&(t.format=e),t}},7110:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDivider=void 0;var o=r(7582);t.createDivider=function(e,t){return{blockType:"Divider",tagName:e,format:t?(0,o.__assign)({},t):{}}}},1033:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createEntity=void 0;var o=r(7582);t.createEntity=function(e,t,r,n,a){return{segmentType:"Entity",blockType:"Entity",format:(0,o.__assign)({},n),id:a,type:r,isReadonly:t,wrapper:e}}},2766:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createFormatContainer=void 0;var o=r(7582);t.createFormatContainer=function(e,t){return{blockType:"BlockGroup",blockGroupType:"FormatContainer",tagName:e,blocks:[],format:(0,o.__assign)({},t||{})}}},9237:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createGeneralBlock=void 0,t.createGeneralBlock=function(e){return{blockType:"BlockGroup",blockGroupType:"General",element:e,blocks:[],format:{}}}},8885:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createGeneralSegment=void 0;var o=r(7582);t.createGeneralSegment=function(e,t){return{blockType:"BlockGroup",blockGroupType:"General",segmentType:"General",format:t?(0,o.__assign)({},t):{},blocks:[],element:e}}},5566:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createImage=void 0;var o=r(7582);t.createImage=function(e,t){return{segmentType:"Image",src:e,format:t?(0,o.__assign)({},t):{},dataset:{}}}},7724:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createListItem=void 0;var o=r(1285),n=r(5114);t.createListItem=function(e,t){return{blockType:"BlockGroup",blockGroupType:"ListItem",blocks:[],levels:e?e.map((function(e){return(0,o.createListLevel)(e.listType,e.format,e.dataset)})):[],formatHolder:(0,n.createSelectionMarker)(t),format:{}}}},1285:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createListLevel=void 0;var o=r(7582);t.createListLevel=function(e,t,r){return{listType:e,format:(0,o.__assign)({},t),dataset:(0,o.__assign)({},r)}}},5092:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createParagraph=void 0;var o=r(7582);t.createParagraph=function(e,t,r,n){var a={blockType:"Paragraph",segments:[],format:t?(0,o.__assign)({},t):{}};return r&&Object.keys(r).length>0&&(a.segmentFormat=(0,o.__assign)({},r)),e&&(a.isImplicit=!0),n&&(a.decorator={tagName:n.tagName,format:(0,o.__assign)({},n.format)}),a}},24:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createParagraphDecorator=void 0;var o=r(7582);t.createParagraphDecorator=function(e,t){return{tagName:e.toLocaleLowerCase(),format:(0,o.__assign)({},t||{})}}},5114:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createSelectionMarker=void 0;var o=r(7582);t.createSelectionMarker=function(e){return{segmentType:"SelectionMarker",isSelected:!0,format:e?(0,o.__assign)({},e):{}}}},988:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTable=void 0;var o=r(7582);t.createTable=function(e,t){for(var r=[],n=0;n{Object.defineProperty(t,"__esModule",{value:!0}),t.createTableCell=void 0;var o=r(7582);t.createTableCell=function(e,t,r,n){var a="number"==typeof e?e>1:!!e,l="number"==typeof t?t>1:!!t;return{blockGroupType:"TableCell",blocks:[],format:n?(0,o.__assign)({},n):{},spanLeft:a,spanAbove:l,isHeader:!!r,dataset:{}}}},840:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createText=void 0;var o=r(7582);t.createText=function(e,t){return{segmentType:"Text",text:e,format:t?(0,o.__assign)({},t):{}}}},4266:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.contentModelToDom=void 0;var o=r(8530),n=r(2347),a=r(3233);function l(e){var t,r;return e.block&&(r=e.segment?(0,a.isNodeOfType)(e.segment,3)?new n.Position(e.segment,(null===(t=e.segment.nodeValue)||void 0===t?void 0:t.length)||0):new n.Position(e.segment.parentNode,(0,n.toArray)(e.segment.parentNode.childNodes).indexOf(e.segment)+1):new n.Position(e.block,0)),(0,a.isNodeOfType)(null==r?void 0:r.node,11)&&(r=null==r?void 0:r.normalize()),r}t.contentModelToDom=function(e,t,r,a,i){var s=(0,o.createModelToDomContext)(a,i);s.modelHandlers.blockGroupChildren(e,t,r,s);var c=function(e){var t,r,o=e.regularSelection,a=o.start,i=o.end,s=e.tableSelection,c=e.imageSelection;if(null==c?void 0:c.image)return{type:2,ranges:[(0,n.createRange)(c.image)],areAllCollapsed:!1,image:c.image};if((t=a&&l(a))&&(r=i&&l(i))){var d=(0,n.createRange)(t,r);return{type:0,ranges:[(0,n.createRange)(t,r)],areAllCollapsed:d.collapsed}}return(null==s?void 0:s.table)?{type:1,ranges:[],areAllCollapsed:!1,table:s.table,coordinates:{firstCell:s.firstCell,lastCell:s.lastCell}}:null}(s);return t.normalize(),c}},8530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createModelToDomContext=void 0;var o=r(7582),n=r(9550),a=r(976),l=r(8659);t.createModelToDomContext=function(e,t){return t=t||{},(0,o.__assign)((0,o.__assign)({},e),{regularSelection:{current:{block:null,segment:null}},listFormat:{threadItemCounts:[],nodeStack:[]},implicitFormat:{},formatAppliers:(0,l.getFormatAppliers)(t.formatApplierOverride,t.additionalFormatAppliers),modelHandlers:(0,o.__assign)((0,o.__assign)({},n.defaultContentModelHandlers),t.modelHandlerOverride||{}),defaultImplicitFormatMap:(0,o.__assign)((0,o.__assign)({},a.defaultImplicitFormatMap),t.defaultImplicitFormatOverride||{}),defaultModelHandlers:n.defaultContentModelHandlers,defaultFormatAppliers:l.defaultFormatAppliers,onNodeCreated:t.onNodeCreated})}},9550:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultContentModelHandlers=void 0;var o=r(3377),n=r(7352),a=r(6830),l=r(1379),i=r(736),s=r(740),c=r(3035),d=r(1920),u=r(3378),f=r(6026),m=r(1351),p=r(3913),v=r(1596),g=r(8109),h=r(8906);t.defaultContentModelHandlers={block:o.handleBlock,blockGroupChildren:n.handleBlockGroupChildren,br:a.handleBr,entity:i.handleEntity,general:c.handleGeneralModel,divider:l.handleDivider,image:d.handleImage,list:u.handleList,listItem:f.handleListItem,paragraph:m.handleParagraph,formatContainer:s.handleFormatContainer,segment:p.handleSegment,segmentDecorator:v.handleSegmentDecorator,table:g.handleTable,text:h.handleText}},3377:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBlock=void 0,t.handleBlock=function(e,t,r,o,n){var a=o.modelHandlers;switch(r.blockType){case"Table":n=a.table(e,t,r,o,n);break;case"Paragraph":n=a.paragraph(e,t,r,o,n);break;case"Entity":n=a.entity(e,t,r,o,n);break;case"Divider":n=a.divider(e,t,r,o,n);break;case"BlockGroup":switch(r.blockGroupType){case"General":n=a.general(e,t,r,o,n);break;case"FormatContainer":n=a.formatContainer(e,t,r,o,n);break;case"ListItem":n=a.listItem(e,t,r,o,n)}}return n}},7352:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBlockGroupChildren=void 0,t.handleBlockGroupChildren=function(e,t,r,o){var n,a=o.listFormat,l=a.nodeStack,i=t.firstChild;try{for(r.blocks.forEach((function(r,n){0!=n&&"BlockGroup"==r.blockType&&"ListItem"==r.blockGroupType||(a.nodeStack=[]),i=o.modelHandlers.block(e,t,r,o,i)}));i;){var s=i.nextSibling;null===(n=i.parentNode)||void 0===n||n.removeChild(i),i=s}}finally{a.nodeStack=l}}},6830:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleBr=void 0;var o=r(8826);t.handleBr=function(e,t,r,n){var a=e.createElement("br"),l=e.createElement("span");l.appendChild(a),t.appendChild(l),(0,o.handleSegmentCommon)(e,a,l,r,n)}},1379:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleDivider=void 0;var o=r(7908),n=r(5381);t.handleDivider=function(e,t,r,a,l){var i,s=a.allowCacheElement?r.cachedElement:void 0;return s?l=(0,n.reuseCachedElement)(t,s,l):(s=e.createElement(r.tagName),a.allowCacheElement&&(r.cachedElement=s),t.insertBefore(s,l),(0,o.applyFormat)(s,a.formatAppliers.divider,r.format,a),r.size&&s.setAttribute("size",r.size)),null===(i=a.onNodeCreated)||void 0===i||i.call(a,r,s),l}},736:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleEntity=void 0;var o=r(7582),n=r(7908),a=r(5381),l=r(2347);t.handleEntity=function(e,t,r,i,s){var c,d=r.id,u=r.type,f=r.isReadonly,m=r.format,p=r.wrapper;i.allowCacheElement||((p=p.cloneNode(!0)).style.color=p.style.color||"inherit",p.style.backgroundColor=p.style.backgroundColor||"inherit");var v=d&&u?{wrapper:p,id:d,type:u,isReadonly:!!f}:null,g=!(0,l.isBlockElement)(p);if(v&&(0,l.commitEntity)(p,v.type,v.isReadonly,v.id),s=(0,a.reuseCachedElement)(t,p,s),g&&(0,l.getObjectKeys)(m).length>0){var h=(0,l.wrap)(p,"span");(0,n.applyFormat)(h,i.formatAppliers.segment,m,i)}if(i.addDelimiterForEntity&&g&&f){var b=(0,o.__read)((0,l.addDelimiters)(p),1)[0];i.regularSelection.current.segment=b}else g&&(i.regularSelection.current.segment=p);return null===(c=i.onNodeCreated)||void 0===c||c.call(i,r,p),s}},740:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleFormatContainer=void 0;var o=r(7908),n=r(4451),a=r(5381),l=r(3348);t.handleFormatContainer=function(e,t,r,i,s){var c,d=i.allowCacheElement?r.cachedElement:void 0;if(d)s=(0,a.reuseCachedElement)(t,d,s),i.modelHandlers.blockGroupChildren(e,d,r,i);else if(!(0,n.isBlockGroupEmpty)(r)){var u=e.createElement(r.tagName);i.allowCacheElement&&(r.cachedElement=u),t.insertBefore(u,s),(0,l.stackFormat)(i,r.tagName,(function(){(0,o.applyFormat)(u,i.formatAppliers.container,r.format,i),(0,o.applyFormat)(u,i.formatAppliers.segmentOnBlock,r.format,i),(0,o.applyFormat)(u,i.formatAppliers.container,r.format,i)})),"pre"==r.tagName?(0,l.stackFormat)(i,"pre *",(function(){i.modelHandlers.blockGroupChildren(e,u,r,i)})):i.modelHandlers.blockGroupChildren(e,u,r,i),d=u}return d&&(null===(c=i.onNodeCreated)||void 0===c||c.call(i,r,d)),s}},3035:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleGeneralModel=void 0;var o=r(8826),n=r(183),a=r(3233),l=r(5381),i=r(2347);t.handleGeneralModel=function(e,t,r,s,c){var d,u=r.element;if(c&&u.parentNode==t?c=(0,l.reuseCachedElement)(t,u,c):(u=u.cloneNode(),r.element=u,t.insertBefore(u,c)),(0,n.isGeneralSegment)(r)&&(0,a.isNodeOfType)(u,1)){var f=(0,i.wrap)(u,"span");(0,o.handleSegmentCommon)(e,u,f,r,s)}else null===(d=s.onNodeCreated)||void 0===d||d.call(s,r,u);return s.modelHandlers.blockGroupChildren(e,u,r,s),c}},1920:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleImage=void 0;var o=r(7908),n=r(8826),a=r(8704);t.handleImage=function(e,t,r,l){var i=e.createElement("img"),s=document.createElement("span");t.appendChild(s),s.appendChild(i),i.src=r.src,r.alt&&(i.alt=r.alt),r.title&&(i.title=r.title),(0,o.applyFormat)(i,l.formatAppliers.image,r.format,l),(0,o.applyFormat)(i,l.formatAppliers.dataset,r.dataset,l);var c=r.format,d=c.width,u=c.height,f=d?(0,a.parseValueWithUnit)(d):0,m=u?(0,a.parseValueWithUnit)(u):0;f>0&&(i.width=f),m>0&&(i.height=m),r.isSelectedAsImageSelection&&(l.imageSelection={image:i}),(0,n.handleSegmentCommon)(e,i,s,r,l)}},3378:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleList=void 0;var o=r(7582),n=r(7908),a=r(2438),l=r(2362);t.handleList=function(e,t,r,i,s){var c,d,u=0,f=i.listFormat.nodeStack;for(0==f.length&&f.push({node:t});u{Object.defineProperty(t,"__esModule",{value:!0}),t.handleListItem=void 0;var o=r(7908),n=r(154),a=r(3963),l=r(2347),i=r(2362);t.handleListItem=function(e,t,r,s,c){var d,u;c=s.modelHandlers.list(e,t,r,s,c);var f=s.listFormat.nodeStack,m=(null===(d=null==f?void 0:f[(null==f?void 0:f.length)-1])||void 0===d?void 0:d.node)||t,p=e.createElement("li"),v=r.levels[r.levels.length-1];return m.insertBefore(p,(null==c?void 0:c.parentNode)==m?c:null),v?((0,o.applyFormat)(p,s.formatAppliers.listItemElement,r.format,s),(0,o.applyFormat)(p,s.formatAppliers.segment,r.formatHolder.format,s),(0,o.applyFormat)(p,s.formatAppliers.listItem,v.format,s),(0,i.updateListMetadata)(v,(function(e){return(0,o.applyFormat)(p,[n.listItemMetadataFormatHandler.apply],e||{},s),e})),s.modelHandlers.blockGroupChildren(e,p,r,s)):(r.blocks.forEach(a.setParagraphNotImplicit),s.modelHandlers.blockGroupChildren(e,p,r,s),(0,l.unwrap)(p)),null===(u=s.onNodeCreated)||void 0===u||u.call(s,r,p),c}},1351:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleParagraph=void 0;var o=r(7582),n=r(7908),a=r(2347),l=r(6976),i=r(5381),s=r(3348);t.handleParagraph=function(e,t,r,c,d){var u,f,m=c.allowCacheElement?r.cachedElement:void 0;return m?d=(0,i.reuseCachedElement)(t,m,d):(0,s.stackFormat)(c,(null===(u=r.decorator)||void 0===u?void 0:u.tagName)||null,(function(){var i,u,f=!r.isImplicit||!!r.decorator||(0,a.getObjectKeys)(r.format).length>0&&r.segments.some((function(e){return"SelectionMarker"!=e.segmentType})),p=f?(0,o.__assign)((0,o.__assign)({},(null===(i=r.decorator)||void 0===i?void 0:i.format)||{}),r.segmentFormat):{};m=e.createElement((null===(u=r.decorator)||void 0===u?void 0:u.tagName)||"div"),t.insertBefore(m,d),c.regularSelection.current={block:f?m:m.parentNode,segment:null};var v=function(){var t=m;if(t){var n=r.segments[0];"SelectionMarker"==(null==n?void 0:n.segmentType)&&c.modelHandlers.text(e,t,(0,o.__assign)((0,o.__assign)({},n),{segmentType:"Text",text:""}),c),r.segments.forEach((function(r){c.modelHandlers.segment(e,t,r,c)}))}};f?((0,s.stackFormat)(c,p,v),(0,n.applyFormat)(m,c.formatAppliers.block,r.format,c),(0,n.applyFormat)(m,c.formatAppliers.container,r.format,c),(0,n.applyFormat)(m,c.formatAppliers.segmentOnBlock,p,c)):v(),(0,l.optimize)(m),d=m.nextSibling,f?c.allowCacheElement&&(r.cachedElement=m):(0,a.unwrap)(m)})),m&&(null===(f=c.onNodeCreated)||void 0===f||f.call(c,r,m)),d}},3913:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegment=void 0;var o=r(7582);t.handleSegment=function(e,t,r,n){var a=n.regularSelection;switch(r.isSelected&&!a.start&&(a.start=(0,o.__assign)({},a.current)),r.segmentType){case"Text":n.modelHandlers.text(e,t,r,n);break;case"Br":n.modelHandlers.br(e,t,r,n);break;case"Image":n.modelHandlers.image(e,t,r,n);break;case"General":n.modelHandlers.general(e,t,r,n,null);break;case"Entity":n.modelHandlers.entity(e,t,r,n,null)}r.isSelected&&a.start&&(a.end=(0,o.__assign)({},a.current))}},1596:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegmentDecorator=void 0;var o=r(7908),n=r(2347),a=r(3348);t.handleSegmentDecorator=function(e,t,r,l){var i=r.code,s=r.link;s&&(0,a.stackFormat)(l,"a",(function(){var e,r=document.createElement("a");(0,n.moveChildNodes)(r,t),t.appendChild(r),(0,o.applyFormat)(r,l.formatAppliers.link,s.format,l),(0,o.applyFormat)(r,l.formatAppliers.dataset,s.dataset,l),null===(e=l.onNodeCreated)||void 0===e||e.call(l,s,r)})),i&&(0,a.stackFormat)(l,"code",(function(){var e,r=document.createElement("code");(0,n.moveChildNodes)(r,t),t.appendChild(r),(0,o.applyFormat)(r,l.formatAppliers.code,i.format,l),null===(e=l.onNodeCreated)||void 0===e||e.call(l,i,r)}))}},8109:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleTable=void 0;var o=r(7908),n=r(6245),a=r(4451),l=r(2347),i=r(5381);t.handleTable=function(e,t,r,s,c){var d,u,f,m,p,v;if((0,a.isBlockEmpty)(r))return c;var g=s.allowCacheElement?r.cachedElement:void 0;g?(c=(0,i.reuseCachedElement)(t,g,c),(0,l.moveChildNodes)(g)):(g=e.createElement("table"),s.allowCacheElement&&(r.cachedElement=g),t.insertBefore(g,c),(0,o.applyFormat)(g,s.formatAppliers.block,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.table,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.tableBorder,r.format,s),(0,o.applyFormat)(g,s.formatAppliers.dataset,r.dataset,s)),null===(d=s.onNodeCreated)||void 0===d||d.call(s,r,g);var h=e.createElement("tbody");g.appendChild(h);for(var b=0;b1&&(S.rowSpan=O),M>1&&(S.colSpan=M),(!P.cachedElement||P.format.useBorderBox&&(0,n.hasMetadata)(r))&&(T>0&&!S.style.width&&(S.style.width=T+"px"),w>0&&!S.style.height&&(S.style.height=w+"px")),P.cachedElement||(s.allowCacheElement&&(P.cachedElement=S),(0,o.applyFormat)(S,s.formatAppliers.block,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.tableCell,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.tableCellBorder,P.format,s),(0,o.applyFormat)(S,s.formatAppliers.dataset,P.dataset,s)),s.modelHandlers.blockGroupChildren(e,S,P,s),null===(v=s.onNodeCreated)||void 0===v||v.call(s,P,S)}}}}return c}},8906:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleText=void 0;var o=r(8826);t.handleText=function(e,t,r,n){var a=e.createTextNode(r.text),l=e.createElement("span");t.appendChild(l),l.appendChild(a),(0,o.handleSegmentCommon)(e,a,l,r,n)}},2920:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeNode=void 0;var o=r(3233),n=["SPAN","B","EM","I","U","SUB","SUP","STRIKE","S","A","CODE"];function a(e,t){var r=e.attributes,o=t.attributes;if(r.length!=o.length)return!1;for(var n=0;n=0&&a(t,r)){for(;r.firstChild;)t.appendChild(r.firstChild);r.parentNode.removeChild(r)}else t=r}}},6976:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.optimize=void 0;var o=r(3233),n=r(2920),a=r(9486);t.optimize=function e(t){if(!(0,o.isNodeOfType)(t,1)||!t.classList.contains("_Entity")){(0,a.removeUnnecessarySpan)(t),(0,n.mergeNode)(t);for(var r=t.firstChild;r;r=r.nextSibling)e(r)}}},9486:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeUnnecessarySpan=void 0;var o=r(3233);t.removeUnnecessarySpan=function(e){for(var t=e.firstChild;t;)if((0,o.isNodeOfType)(t,1)&&"SPAN"==t.tagName&&0==t.attributes.length){var r=t,n=t.nextSibling;for(t=t.nextSibling;r.lastChild;){var a=r.lastChild;e.insertBefore(a,n),n=a}e.removeChild(r)}else t=t.nextSibling}},7908:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.applyFormat=void 0,t.applyFormat=function(e,t,r,o){t.forEach((function(t){null==t||t(r,e,o)}))}},8826:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleSegmentCommon=void 0;var o=r(7908);t.handleSegmentCommon=function(e,t,r,n,a){var l;t.firstChild||(a.regularSelection.current.segment=t),(0,o.applyFormat)(r,a.formatAppliers.styleBasedSegment,n.format,a),a.modelHandlers.segmentDecorator(e,r,n,a),(0,o.applyFormat)(r,a.formatAppliers.elementBasedSegment,n.format,a),null===(l=a.onNodeCreated)||void 0===l||l.call(a,n,t)}},5381:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeNode=t.reuseCachedElement=void 0;var o=r(2347),n=r(3233);t.reuseCachedElement=function(e,t,r){var a,l;if(t.parentNode==e){for(;r&&r!=t&&(l=r,!(0,n.isNodeOfType)(l,1)||!(0,o.getEntityFromElement)(l));){var i=r.nextSibling;null===(a=r.parentNode)||void 0===a||a.removeChild(r),r=i}r&&r==t?r=r.nextSibling:e.insertBefore(t,r)}else e.insertBefore(t,r);return r},t.removeNode=function(e){var t,r=e.nextSibling;return null===(t=e.parentNode)||void 0===t||t.removeChild(e),r}},3348:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.stackFormat=void 0;var o=r(7582);t.stackFormat=function(e,t,r){var n="string"==typeof t?e.defaultImplicitFormatMap[t]:t;if(n){var a=e.implicitFormat;try{e.implicitFormat=(0,o.__assign)((0,o.__assign)({},a),n),r()}finally{e.implicitFormat=a}}else r()}},1934:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tablePreProcessor=void 0;var o=r(2347),n=r(1246),a=r(2812);t.tablePreProcessor=function(e,t,r){var l=function(e,t){return(0,n.hasMetadata)(e)||t.isInSelection||(0,o.contains)(e,(0,a.getSelectionRootNode)(t.rangeEx),!0)}(t,r)?n.tableProcessor:n.entityProcessor;l(e,t,r)}},9843:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.combineBorderValue=t.extractBorderValues=void 0;var r=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"],o=/^(thin|medium|thick|[\d\.]+\w*)$/;t.extractBorderValues=function(e){var t={};return(e||"").replace(/, /g,",").split(" ").forEach((function(e){r.indexOf(e)>=0&&!t.style?t.style=e:o.test(e)&&!t.width?t.width=e:e&&!t.color&&(t.color=e)})),t},t.combineBorderValue=function(e){return[e.width||"",e.style||"",e.color||""].join(" ").trim()||"none"}},5866:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateImageMetadata=void 0;var o=r(1246),n=r(2347),a=(0,n.createNumberDefinition)(),l=(0,n.createObjectDefinition)({widthPx:a,heightPx:a,leftPercent:a,rightPercent:a,topPercent:a,bottomPercent:a,angleRad:a,src:(0,n.createStringDefinition)(),naturalHeight:a,naturalWidth:a});t.updateImageMetadata=function(e,t){return(0,o.updateMetadata)(e,t,l)}},860:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTableCellMetadata=void 0;var o=r(2347),n=r(1246),a=(0,o.createObjectDefinition)({bgColorOverride:(0,o.createBooleanDefinition)(!0),vAlignOverride:(0,o.createBooleanDefinition)(!0)},!1,!0);t.updateTableCellMetadata=function(e,t){return(0,n.updateMetadata)(e,t,a)}},5165:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTableMetadata=void 0;var o=r(1246),n=r(2347),a=(0,n.createStringDefinition)(!1,void 0,!0),l=(0,n.createBooleanDefinition)(!1),i=(0,n.createObjectDefinition)({topBorderColor:a,bottomBorderColor:a,verticalBorderColor:a,hasHeaderRow:l,headerRowColor:a,hasFirstColumn:l,hasBandedColumns:l,hasBandedRows:l,bgColorEven:a,bgColorOdd:a,tableBorderFormat:(0,n.createNumberDefinition)(!1,void 0,0,8),verticalAlign:a},!1,!0);t.updateTableMetadata=function(e,t){return(0,o.updateMetadata)(e,t,i)}},8778:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeText=t.isSpace=t.isPunctuation=void 0;var r=/[\u2000\u2009\u200a​\u200b​\u202f\u205f​\u3000\s\t\r\n]/gm;t.isPunctuation=function(e){return'.,?!:"()[]\\/'.indexOf(e)>=0},t.isSpace=function(e){var t,o=null!==(t=null==e?void 0:e.charCodeAt(0))&&void 0!==t?t:0;return 160==o||32==o||r.test(e)},t.normalizeText=function(e,t){return e.replace(t?/^\u0020+/:/\u0020+$/," ")}},6593:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(8974),a=function(e){function t(t,r){return void 0===r&&(r={}),e.call(this,t,r,n.createContentModelEditorCore)||this}return(0,o.__extends)(t,e),t.prototype.createContentModel=function(e,t){var r=this.getCore();return r.api.createContentModel(r,e,t)},t.prototype.setContentModel=function(e,t){var r=this.getCore();r.api.setContentModel(r,e,t)},t.prototype.cacheContentModel=function(e){var t=this.getCore();t.lifecycle.shadowEditFragment||(t.cachedModel=e||void 0,t.cachedRangeEx=void 0)},t.prototype.getContentModelDefaultFormat=function(){return this.getCore().defaultFormat},t}(r(2347).EditorBase);t.default=a},5427:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModel=void 0;var o=r(7582),n=r(1690),a=r(1246),l=r(1934);t.createContentModel=function(e,t,r){var i=r?null:e.cachedModel;return i&&e.lifecycle.shadowEditFragment&&(i=(0,n.cloneModel)(i,{includeCachedElement:!0})),i||function(e,t,r){var n=(0,o.__assign)((0,o.__assign)({},e.defaultDomToModelOptions),t);return n.processorOverride=(0,o.__assign)((0,o.__assign)({table:l.tablePreProcessor},n.processorOverride),null==t?void 0:t.processorOverride),(0,a.domToContentModel)(e.contentDiv,n,e.api.createEditorContext(e),r||e.api.getSelectionRangeEx(e))}(e,t,r)}},7832:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorContext=void 0,t.createEditorContext=function(e){var t=e.lifecycle,r=e.defaultFormat,o=e.darkColorHandler,n=e.addDelimiterForEntity,a=e.contentDiv,l={isDarkMode:t.isDarkMode,defaultFormat:r,darkColorHandler:o,addDelimiterForEntity:n,allowCacheElement:!0};return function(e,t){var r,o=null===(r=null==e?void 0:e.ownerDocument.defaultView)||void 0===r?void 0:r.getComputedStyle(e);"rtl"==(null==o?void 0:o.direction)&&(t.isRootRtl=!0)}(a,l),function(e,t){var r,o=(null===(r=null==e?void 0:e.getBoundingClientRect())||void 0===r?void 0:r.width)||0,n=e.offsetWidth;n>0&&o>0&&(t.zoomScale=Math.round(o/n*100)/100)}(a,l),l}},1971:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRangeEx=void 0,t.getSelectionRangeEx=function(e){var t;return null!==(t=e.cachedRangeEx)&&void 0!==t?t:e.originalApi.getSelectionRangeEx(e)}},7934:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setContentModel=void 0;var o=r(7582),n=r(1246);t.setContentModel=function(e,t,r){var a=(0,n.contentModelToDom)(e.contentDiv.ownerDocument,e.contentDiv,t,e.api.createEditorContext(e),(0,o.__assign)((0,o.__assign)({},e.defaultModelToDomOptions),r||{}));return e.lifecycle.shadowEditFragment||(e.api.select(e,a),e.cachedRangeEx=a||void 0),a}},3515:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.switchShadowEdit=void 0;var o=r(2347);t.switchShadowEdit=function(e,t){var r=e;if(t!=!!r.lifecycle.shadowEditFragment)if(t){r.cachedModel||(r.cachedModel=r.api.createContentModel(r));var n=r.api.getSelectionRange(r,!0),a=r.contentDiv.ownerDocument.createDocumentFragment(),l=n&&(0,o.getSelectionPath)(r.contentDiv,n);r.api.triggerEvent(r,{eventType:17,fragment:a,selectionPath:l},!1),r.lifecycle.shadowEditSelectionPath=l,r.lifecycle.shadowEditFragment=a}else r.lifecycle.shadowEditFragment=null,r.lifecycle.shadowEditSelectionPath=null,r.api.triggerEvent(r,{eventType:18},!1),r.cachedModel&&r.api.setContentModel(r,r.cachedModel)}},6093:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.onNodeCreated=void 0;var o=r(7582),n=r(5915),a=r(1690),l=r(1246),i=r(473),s=r(2511),c=r(5098),d=r(2347),u=function(){function e(e){var t=this;this.state=e,this.editor=null,this.disposer=null,this.onPaste=function(e){if(t.editor&&function(e){return!!e.clipboardData}(e)){var r=t.editor,o=e.clipboardData;(null==o?void 0:o.items)&&(e.preventDefault(),(0,d.extractClipboardItems)((0,d.toArray)(o.items),{allowedCustomPasteType:t.state.allowedCustomPasteType},!0).then((function(e){r.isDisposed()||(0,n.default)(r,e)})))}}}return e.prototype.getName=function(){return"ContentModelCopyPaste"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=this.editor.addDomEventHandler({paste:function(e){return t.onPaste(e)},copy:function(e){return t.onCutCopy(e,!1)},cut:function(e){return t.onCutCopy(e,!0)}})},e.prototype.dispose=function(){this.disposer&&this.disposer(),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onCutCopy=function(e,r){var n=this;if(this.editor){var u=this.editor.getSelectionRangeEx();if(u&&!u.areAllCollapsed){var f=this.editor.createContentModel(),m=(0,a.cloneModel)(f,{includeCachedElement:!!this.editor.isDarkMode()&&function(e,t){var r;if("cache"!=t){var o=e.cloneNode(!0);return null===(r=n.editor)||void 0===r||r.transformToDarkColor(o,1),o}}});1===u.type&&(0,c.iterateSelections)([m],(function(e,t){if(null==t?void 0:t.table){var r=null==t?void 0:t.table;return r.rows=r.rows.map((function(e){return(0,o.__assign)((0,o.__assign)({},e),{cells:e.cells.filter((function(e){return e.isSelected}))})})).filter((function(e){return e.cells.length>0})),!0}return!1}));var p=this.getTempDiv(this.editor),v=function(e,t){var r;if(!e)return null;var o=null;if(1===e.type&&e.coordinates){var n=t.querySelector("#"+e.table.id),a=1==(null===(r=n.parentElement)||void 0===r?void 0:r.childElementCount)?n.parentElement:n;o=(0,d.createRange)(a)}else if(2===e.type){var l=t.querySelector("#"+e.image.id);l&&(o=(0,d.createRange)(l))}else o=e.ranges[0];return o}((0,l.contentModelToDom)(p.ownerDocument,p,m,void 0,{onNodeCreated:t.onNodeCreated}),p);v&&((v=this.editor.triggerPluginEvent(9,{clonedRoot:p,range:v,rawEvent:e,isCut:r}).range)&&(0,d.addRangeToSelection)(v),this.editor.runAsync((function(e){var t;(t=p).style.backgroundColor="",t.style.color="",t.style.display="none",(0,d.moveChildNodes)(t),e.focus(),e.select(u),r&&(0,s.formatWithContentModel)(e,"cut",(function(e,t){return 2==(0,i.deleteSelection)(e,[],t).deleteResult&&(0,l.normalizeContentModel)(e),!0}),{changeSource:"Cut"})})))}}},e.prototype.getTempDiv=function(e){var t=e.getCustomData("CopyPasteTempDiv",(function(){var t=(0,d.createElement)(3,e.getDocument());return e.getDocument().body.appendChild(t),t}),(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}));return t.style.backgroundColor="white",t.style.color="black",t.childNodes.forEach((function(e){return t.removeChild(e)})),t.style.display="",t.focus(),t},e}();t.default=u,t.onNodeCreated=function(e,t){(0,d.safeInstanceOf)(t,"HTMLTableElement")&&(0,d.wrap)(t,"div")}},2517:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.prototype.getName=function(){return"ContentModelTypeInContainer"},e.prototype.initialize=function(){},e.prototype.dispose=function(){},e}();t.default=r},8974:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.promoteToContentModelEditorCore=t.createContentModelEditorCore=void 0;var o=r(7582),n=r(6093),a=r(2909),l=r(4e3),i=r(2517),s=r(5427),c=r(7832),d=r(2347),u=r(1971),f=r(7934),m=r(3515);function p(e,t){var r=e;!function(e){e.lifecycle.defaultFormat=e.lifecycle.defaultFormat||{},e.defaultFormat=function(e){var t,r,o,n=null!==(t=e.lifecycle.defaultFormat)&&void 0!==t?t:{};return{fontWeight:n.bold?"bold":void 0,italic:n.italic||void 0,underline:n.underline||void 0,fontFamily:n.fontFamily||void 0,fontSize:n.fontSize||void 0,textColor:(null===(r=n.textColors)||void 0===r?void 0:r.lightModeColor)||n.textColor||void 0,backgroundColor:(null===(o=n.backgroundColors)||void 0===o?void 0:o.lightModeColor)||n.backgroundColor||void 0}}(e)}(r),function(e,t){var r=e.lifecycle.experimentalFeatures;e.defaultDomToModelOptions=t.defaultDomToModelOptions||{},e.defaultModelToDomOptions=t.defaultModelToDomOptions||{},e.addDelimiterForEntity=(0,d.isFeatureEnabled)(r,"InlineEntityReadOnlyDelimiters")}(r,t),function(e){e.api.createEditorContext=c.createEditorContext,e.api.createContentModel=s.createContentModel,e.api.setContentModel=f.setContentModel,e.api.switchShadowEdit=m.switchShadowEdit,e.api.getSelectionRangeEx=u.getSelectionRangeEx,e.originalApi.createEditorContext=c.createEditorContext,e.originalApi.createContentModel=s.createContentModel,e.originalApi.setContentModel=f.setContentModel}(r)}t.createContentModelEditorCore=function(e,t){var r=(0,o.__assign)((0,o.__assign)({},t),{plugins:(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(t.plugins||[]),!1),[new l.default,new a.default],!1),corePluginOverride:(0,o.__assign)({typeInContainer:new i.default,copyPaste:(0,d.isFeatureEnabled)(t.experimentalFeatures,"ContentModelPaste")?new n.default({allowedCustomPasteType:t.allowedCustomPasteType||[]}):void 0},t.corePluginOverride||{})}),s=(0,d.createEditorCore)(e,r);return p(s,r),s},t.promoteToContentModelEditorCore=p},1053:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return!!e.createContentModel}},2909:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(5634),a=r(473),l=r(2511),i=r(2976),s=r(1246),c=r(2347),d=function(){function e(){this.editor=null,this.hasDefaultFormat=!1}return e.prototype.getName=function(){return"ContentModelEdit"},e.prototype.initialize=function(e){this.editor=e;var t=this.editor.getContentModelDefaultFormat();this.hasDefaultFormat=(0,c.getObjectKeys)(t).filter((function(e){return void 0!==t[e]})).length>0},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor)switch(e.eventType){case 0:this.handleKeyDownEvent(this.editor,e);break;case 7:case 6:case 22:this.editor.cacheContentModel(null)}},e.prototype.handleKeyDownEvent=function(e,t){var r=t.rawEvent,o=r.which;if(r.defaultPrevented||t.handledByEditFeature)e.cacheContentModel(null);else switch(o){case 8:case 46:var a=e.getSelectionRangeEx(),l=0==a.type?a.ranges[0]:null;this.shouldDeleteWithContentModel(l,r)?(0,n.default)(e,r):e.cacheContentModel(null);break;default:((0,c.isCharacterValue)(r)||"Process"==r.key)&&this.hasDefaultFormat&&this.tryApplyDefaultFormat(e),e.cacheContentModel(null)}},e.prototype.tryApplyDefaultFormat=function(e){for(var t,r,o=this,n=e.getSelectionRangeEx(),i=0==(null==n?void 0:n.type)?n.ranges[0]:null,d=i?c.Position.getStart(i):null,u=null!==(t=null==d?void 0:d.node)&&void 0!==t?t:null;u&&e.contains(u);){if((0,s.isNodeOfType)(u,1)&&(null===(r=u.getAttribute)||void 0===r?void 0:r.call(u,"style")))return;if((0,c.isBlockElement)(u))break;u=u.parentNode}(0,l.formatWithContentModel)(e,"input",(function(t,r){var n=(0,a.deleteSelection)(t,[],r);if(2==n.deleteResult)return(0,s.normalizeContentModel)(t),e.addUndoSnapshot(),!0;if(0==n.deleteResult&&n.insertPoint&&d){var l=n.insertPoint,i=l.paragraph,c=l.path,u=l.marker,f=c[0].blocks,m=f.length,p=f.indexOf(i);if(i.isImplicit&&1==i.segments.length&&i.segments[0]==u&&m>0&&p==m-1){var v=f[p-1];"Paragraph"!=(null==v?void 0:v.blockType)&&o.applyDefaultFormat(e,u.format,d)}else i.segments.every((function(e){return"Text"!=e.segmentType}))&&o.applyDefaultFormat(e,u.format,d);return!1}return!1}))},e.prototype.applyDefaultFormat=function(e,t,r){var n=(0,i.getPendingFormat)(e)||{},a=e.getContentModelDefaultFormat(),l=(0,o.__assign)((0,o.__assign)((0,o.__assign)({},a),n),t);(0,i.setPendingFormat)(e,l,r)},e.prototype.shouldDeleteWithContentModel=function(e,t){return!((null==e?void 0:e.collapsed)&&3==e.startContainer.nodeType&&!(0,c.isModifierKey)(t)&&(this.canDeleteBefore(t,e)||this.canDeleteAfter(t,e)))},e.prototype.canDeleteBefore=function(e,t){return 8==e.which&&(t.startOffset>1||t.startContainer.previousSibling)},e.prototype.canDeleteAfter=function(e,t){var r,o;return 46==e.which&&(t.startOffset<(null!==(o=null===(r=t.startContainer.nodeValue)||void 0===r?void 0:r.length)&&void 0!==o?o:0)-1||t.startContainer.nextSibling)},e}();t.default=d},4e3:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1576),n=r(2976),a=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"ContentModelFormat"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor)switch(e.eventType){case 3:e.rawEvent.isComposing||this.editor.isInIME()||this.checkAndApplyPendingFormat(e.rawEvent.data);break;case 4:this.checkAndApplyPendingFormat(e.rawEvent.data);break;case 0:e.rawEvent.which>=33&&e.rawEvent.which<=40&&(0,n.clearPendingFormat)(this.editor);break;case 6:case 7:(0,n.canApplyPendingFormat)(this.editor)||(0,n.clearPendingFormat)(this.editor)}},e.prototype.checkAndApplyPendingFormat=function(e){this.editor&&e&&((0,o.default)(this.editor,e),(0,n.clearPendingFormat)(this.editor))},e}();t.default=a},1021:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9079),n=r(2347),a=r(251),l=r(1152),i=r(1082),s=r(5459),c=r(22),d=r(2389),u=function(){function e(e){void 0===e&&(e="SPAN"),this.unknownTagReplacement=e,this.editor=null}return e.prototype.getName=function(){return"ContentModelPaste"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&10==e.eventType){var t=e;if(t.domToModelOption){var r;switch((0,n.getPasteSource)(t,!1)){case 0:(0,c.processPastedContentFromWordDesktop)(t);break;case 5:(0,d.processPastedContentWacComponents)(t);break;case 2:case 1:0!==t.pasteType&&2!==t.pasteType||(0,i.processPastedContentFromExcel)(t,this.editor.getTrustedHTMLHandler());break;case 4:t.sanitizingOption.additionalTagReplacements["google-sheets-html-origin"]="*";break;case 3:(0,s.processPastedContentFromPowerPoint)(t,this.editor.getTrustedHTMLHandler())}(0,o.default)(t.domToModelOption,"link",l.parseLink),(0,o.default)(t.domToModelOption,"tableCell",a.deprecatedBorderColorParser),(0,o.default)(t.domToModelOption,"table",a.deprecatedBorderColorParser),r=t.sanitizingOption,(0,n.chainSanitizerCallback)(r.cssStyleCallbacks,"display",(function(e){return"flex"!=e})),2===t.pasteType&&((0,o.default)(t.domToModelOption,"block",f),(0,o.default)(t.domToModelOption,"listLevel",f)),t.sanitizingOption.unknownTagReplacement=this.unknownTagReplacement}}},e}();t.default=u;var f=function(e,t){t.style.backgroundColor&&delete e.backgroundColor}},1082:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.excelHandler=t.processPastedContentFromExcel=void 0;var o=r(9079),n=r(2347),a=/<\/\s*td\s*>((?!<\/\s*tr\s*>)[\s\S])*$/i,l=/<\/\s*tr\s*>((?!<\/\s*table\s*>)[\s\S])*$/i,i=/]*>[^<]*/i,s=/]*>[^<]*/i,c="solid 1px #d4d4d4";function d(e,t){if(e.match(a)){var r=t.match(i);e=(r?r[0]:"

    ")+e+"
    "}return e}t.processPastedContentFromExcel=function(e,t){var r=e.fragment,a=e.htmlBefore,l=e.clipboardData,i=l.html?d(l.html,a):void 0;if(i&&l.html!=i){var s=(new DOMParser).parseFromString(t(i),"text/html");(0,n.moveChildNodes)(r,null==s?void 0:s.body)}var u=r.firstChild;u&&u.childNodes.length>0&&"DIV"==(0,n.getTagOfNode)(u)&&Array.from(u.childNodes).every((function(e){return"META"==(0,n.getTagOfNode)(e)||"TABLE"==(0,n.getTagOfNode)(e)&&e==u.lastChild}))&&u.lastChild&&e.fragment.replaceChildren(u.lastChild),(0,o.default)(e.domToModelOption,"tableCell",(function(e,t){"none"===t.style.borderStyle&&(e.borderBottom=c,e.borderLeft=c,e.borderRight=c,e.borderTop=c)}))},t.excelHandler=d},5459:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processPastedContentFromPowerPoint=void 0;var o=r(2347);t.processPastedContentFromPowerPoint=function(e,t){var r=e.fragment,n=e.clipboardData;if(n.html&&!n.text&&n.image){var a=(new DOMParser).parseFromString(t(n.html),"text/html");(0,o.moveChildNodes)(r,null==a?void 0:a.body)}}},2389:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processPastedContentWacComponents=void 0;var o=r(7582),n=r(9079),a=r(2347),l=r(9263),i="ListContainerWrapper",s="TableContainer",c=["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle","ListMarkerWrappingSpan"],d=(0,o.__spreadArray)((0,o.__spreadArray)(["OutlineElement","NumberListStyle","WACImageContainer","ListContainerWrapper","BulletListStyle"],(0,o.__read)(c),!1),["TableCellContent","Paragraph","WACImageContainer","WACImageBorder",s,"LineBreakBlob"],!1),u=["UL","OL","LI"],f=u.join(","),m=function(e,t){var r=t.style.verticalAlign;"super"===r&&(e.superOrSubScriptSequence="super"),"sub"===r&&(e.superOrSubScriptSequence="sub")},p=function(e,t,r){var o=(0,a.getTagOfNode)(t);if((0,a.matchesSelector)(t,'ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer,span.WACImageBorder')&&(t.style.removeProperty("display"),t.style.removeProperty("margin")),t.classList.contains(i))r.elementProcessors.child(e,t,r);else if(!c.some((function(e){return t.classList.contains(e)}))){if(function(e,t,r){return r.listFormat.levels.length>0&&u.every((function(t){return t!=e}))&&!(0,a.findClosestElementAncestor)(t,void 0,f)}(o,t,r)){var n=r.listFormat;n.levels=[],n.listParent=void 0}r.defaultElementProcessors.element(e,t,r)}},v=function(e,t,r){var o,n,a;null===(n=(o=r.defaultElementProcessors).li)||void 0===n||n.call(o,e,t,r);var l=r.listFormat.listParent;if(l){var i=l.blocks[l.blocks.length-1];if("BlockGroup"==i.blockType&&"ListItem"==i.blockGroupType&&r.listFormat.listParent!==i){var s=i.levels[i.levels.length-1],c=parseInt(null!==(a=t.getAttribute("data-aria-level"))&&void 0!==a?a:"");if(c>0)if(c>i.levels.length)for(;c!=i.levels.length;)i.levels.push(s);else i.levels.splice(c,i.levels.length-1),i.levels[c-1]=s}}},g=function(e,t){"block"===t.style.display&&(e.displayForDummyItem=void 0),e.marginLeft=void 0},h=function(e){e.marginLeft=void 0,e.paddingLeft=void 0};t.processPastedContentWacComponents=function(e){var t;(0,n.default)(e.domToModelOption,"segment",m),(0,n.default)(e.domToModelOption,"listItem",g),(0,n.default)(e.domToModelOption,"listLevel",h),(0,n.default)(e.domToModelOption,"container",y),(0,l.setProcessor)(e.domToModelOption,"element",p),(0,l.setProcessor)(e.domToModelOption,"li",v),(0,l.setProcessor)(e.domToModelOption,"ol",b),(0,l.setProcessor)(e.domToModelOption,"ul",b),(t=e.sanitizingOption.additionalAllowedCssClasses).push.apply(t,(0,o.__spreadArray)([],(0,o.__read)(d),!1))};var b=function(e,t,r){var o,n,l,s,c,d=e.blocks[e.blocks.length-1],u=(0,a.findClosestElementAncestor)(t,void 0,"."+i);(null===(o=null==u?void 0:u.previousElementSibling)||void 0===o?void 0:o.classList.contains(i))&&"BlockGroup"===(null==d?void 0:d.blockType)&&"ListItem"==d.blockGroupType&&(r.listFormat={threadItemCounts:[],levels:d.levels,listParent:e}),"OL"===t.tagName.toUpperCase()?null===(l=(n=r.defaultElementProcessors).ol)||void 0===l||l.call(n,e,t,r):null===(c=(s=r.defaultElementProcessors).ul)||void 0===c||c.call(s,e,t,r)},y=function(e,t){t.classList.contains(s)&&t.style.marginLeft.startsWith("-")&&delete e.marginLeft}},22:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wordDesktopElementProcessor=t.processPastedContentFromWordDesktop=void 0;var o=r(9079),n=r(2347),a=r(9526),l=r(9541),i=r(9263),s=/%/;function c(e,t,r,o){var n;s.test(t.style.lineHeight)&&!isNaN(n=parseInt(t.style.lineHeight))&&n<120&&(e.lineHeight=o.lineHeight)}function d(e,t,r,o){""!=t.style.marginLeft&&(e.marginLeft=o.marginLeft),e.marginBottom=void 0}t.processPastedContentFromWordDesktop=function(e){(0,i.setProcessor)(e.domToModelOption,"element",t.wordDesktopElementProcessor),(0,o.default)(e.domToModelOption,"block",c),(0,o.default)(e.domToModelOption,"listLevel",d),(0,o.default)(e.domToModelOption,"listItemElement",u),(0,n.chainSanitizerCallback)(e.sanitizingOption.cssStyleCallbacks,"border",(function(e,t){return"IMG"!=t.tagName||"none"!=e})),(0,n.chainSanitizerCallback)(e.sanitizingOption.elementCallbacks,"O:P",(function(e){return(0,n.moveChildNodes)(e),e.appendChild(e.ownerDocument.createTextNode(" ")),!0}))},t.wordDesktopElementProcessor=function(e,t,r){var o=(0,n.getStyles)(t);(0,l.processWordList)(o,e,t,r)||(0,a.processWordComments)(o,t)||r.defaultElementProcessors.element(e,t,r)};var u=function(e,t){t.style.marginLeft&&(e.marginLeft=void 0),t.style.marginRight&&(e.marginRight=void 0)}},9526:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processWordComments=void 0;var o=r(2347),n=/#_msocom_/;t.processWordComments=function(e,t){return"comment"==e["mso-special-character"]||(0,o.safeInstanceOf)(t,"HTMLAnchorElement")&&n.test(t.href)||"comment-list"==e["mso-element"]}},9541:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.processWordList=void 0;var o=r(7582),n=r(2347),a=r(1246),l="mso-list",i="ignore";function s(e){return function(t,r,o){var n=o.listFormat,a=n.wordKnownLevels,l=n.wordLevel,i=n.wordList;if("number"==typeof l&&i){var s=parseInt(e);null==s||isNaN(s)||(null==a?void 0:a.has(i))||(t.startNumberOverride=s)}}}function c(e,t){var r,o,n="";t=t||5;for(var a=e.firstChild;!n&&a;)d(a)?0==(n=null!==(o=null===(r=a.textContent)||void 0===r?void 0:r.trim())&&void 0!==o?o:"").length&&(n="o"):1==a.nodeType&&t>1&&(n=c(a,t-1)),a=a.nextSibling;return n}function d(e){if(1==e.nodeType){var t=(0,n.getStyles)(e)[l];if(t&&t.length>0&&t.trim().toLowerCase()==i)return!0}return!1}t.processWordList=function(e,t,r,n){var d=n.listFormat;d.wordKnownLevels||(d.wordKnownLevels=new Map);var u=e[l]||"";if(u.toLowerCase()===i)return!0;var f=u.split(" ");if(d.wordLevel=f[1]&&parseInt(f[1].substr(5)),d.wordList=f[0]||"l0",0==d.levels.length&&(d.levels=d.wordKnownLevels.get(d.wordList)||[]),u&&t&&"number"==typeof d.wordLevel){var m=d.wordLevel,p=c(r),v=function(e){return function(e){return["o","·","§","-"].indexOf(e)>=0}(e)?"UL":"OL"}(p),g=(0,a.createListLevel)(v);if((0,a.parseFormat)(r,n.formatParsers.listLevel,g.format,n),m>d.levels.length)for(;m!=d.levels.length;)d.levels.push(g);else d.levels.splice(m,d.levels.length-1),d.levels[m-1]=g;return d.listParent=t,function(e,t,r,o,n){var l=(0,a.createListItem)(e.levels,t.segmentFormat),i=l.levels[l.levels.length-1];(0,a.parseFormat)(r,t.formatParsers.segmentOnBlock,t.segmentFormat,t),(0,a.parseFormat)(r,t.formatParsers.listItemElement,l.format,t),"OL"==(null==i?void 0:i.listType)&&(0,a.parseFormat)(r,[s(n)],l.levels[l.levels.length-1].format,t),t.elementProcessors.child(l,r,t),(0,a.addBlock)(o,l)}(d,n,r,t,p),d.levels.length>0&&d.wordKnownLevels.get(d.wordList)!=d.levels&&d.wordKnownLevels.set(d.wordList,(0,o.__spreadArray)([],(0,o.__read)(d.levels),!1)),!0}return!1}},9079:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){var o;e.additionalFormatParsers||(e.additionalFormatParsers={}),e.additionalFormatParsers[t]||(e.additionalFormatParsers[t]=[]),null===(o=e.additionalFormatParsers[t])||void 0===o||o.push(r)}},251:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deprecatedBorderColorParser=void 0;var o=r(1246);t.deprecatedBorderColorParser=function(e){o.BorderKeys.forEach((function(t){var r=e[t],n="";if(r&&o.DeprecatedColors.some((function(e){return r.indexOf(e)>-1&&(n=e)}))){var a=r.replace(n,"").trimRight();e[t]=a}}))}},1152:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseLink=void 0;var o=r(2347),n=["http:","https:","notes:","mailto:","onenote:"],a=/^file:\/\/\/[a-zA-Z\/]/i;t.parseLink=function(e,t){if((0,o.safeInstanceOf)(t,"HTMLAnchorElement")){var r;try{r=new URL(t.href)}catch(e){r=void 0}(r&&-1===n.indexOf(r.protocol)||a.test(t.href))&&(t.removeAttribute("href"),e.href="")}}},9263:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setProcessor=void 0,t.setProcessor=function(e,t,r){e.processorOverride||(e.processorOverride={}),e.processorOverride[t]=r}},4040:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.shouldDeleteAllSegmentsBefore=t.shouldDeleteWord=t.handleKeyboardEventResult=void 0;var o=r(1246);t.handleKeyboardEventResult=function(e,t,r,n,a){switch(a.skipUndoSnapshot=!0,n){case 0:return e.cacheContentModel(null),!1;case 3:return r.preventDefault(),!1;case 2:case 1:return r.preventDefault(),(0,o.normalizeContentModel)(t),2==n&&(a.skipUndoSnapshot=!1),e.triggerPluginEvent(23,{rawEvent:r}),!0}},t.shouldDeleteWord=function(e,t){return t&&e.altKey&&!e.metaKey||!t&&e.ctrlKey&&!e.altKey},t.shouldDeleteAllSegmentsBefore=function(e){return e.metaKey&&!e.altKey}},3247:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isContentModelEditor=t.ContentModelEditor=t.formatWithContentModel=t.insertEntity=t.paste=t.toggleCode=t.setParagraphMargin=t.adjustImageSelection=t.setImageAltText=t.adjustLinkSelection=t.removeLink=t.insertLink=t.clearFormat=t.applyPendingFormat=t.getFormatState=t.changeImage=t.setImageBoxShadow=t.setImageBorder=t.setSpacing=t.toggleBlockQuote=t.setHeadingLevel=t.setDirection=t.setAlignment=t.setIndentation=t.getSelectedSegments=t.hasSelectionInBlockGroup=t.hasSelectionInSegment=t.hasSelectionInBlock=t.setListStartNumber=t.setListStyle=t.insertImage=t.changeCapitalization=t.applySegmentFormat=t.changeFontSize=t.setTextColor=t.setFontSize=t.setFontName=t.setBackgroundColor=t.toggleSuperscript=t.toggleSubscript=t.toggleStrikethrough=t.toggleUnderline=t.toggleItalic=t.toggleBold=t.toggleNumbering=t.toggleBullet=t.editTable=t.setTableCellShade=t.formatTable=t.insertTable=void 0,t.updateTableMetadata=t.updateTableCellMetadata=t.updateImageMetadata=t.extractBorderValues=t.combineBorderValue=t.promoteToContentModelEditorCore=t.createContentModelEditorCore=t.ContentModelCopyPastePlugin=t.ContentModelTypeInContainerPlugin=t.ContentModelPastePlugin=t.ContentModelEditPlugin=t.ContentModelFormatPlugin=void 0;var o=r(6901);Object.defineProperty(t,"insertTable",{enumerable:!0,get:function(){return o.default}});var n=r(2435);Object.defineProperty(t,"formatTable",{enumerable:!0,get:function(){return n.default}});var a=r(7783);Object.defineProperty(t,"setTableCellShade",{enumerable:!0,get:function(){return a.default}});var l=r(959);Object.defineProperty(t,"editTable",{enumerable:!0,get:function(){return l.default}});var i=r(58);Object.defineProperty(t,"toggleBullet",{enumerable:!0,get:function(){return i.default}});var s=r(4505);Object.defineProperty(t,"toggleNumbering",{enumerable:!0,get:function(){return s.default}});var c=r(5539);Object.defineProperty(t,"toggleBold",{enumerable:!0,get:function(){return c.default}});var d=r(3462);Object.defineProperty(t,"toggleItalic",{enumerable:!0,get:function(){return d.default}});var u=r(3679);Object.defineProperty(t,"toggleUnderline",{enumerable:!0,get:function(){return u.default}});var f=r(5602);Object.defineProperty(t,"toggleStrikethrough",{enumerable:!0,get:function(){return f.default}});var m=r(2494);Object.defineProperty(t,"toggleSubscript",{enumerable:!0,get:function(){return m.default}});var p=r(1308);Object.defineProperty(t,"toggleSuperscript",{enumerable:!0,get:function(){return p.default}});var v=r(5253);Object.defineProperty(t,"setBackgroundColor",{enumerable:!0,get:function(){return v.default}});var g=r(1250);Object.defineProperty(t,"setFontName",{enumerable:!0,get:function(){return g.default}});var h=r(5442);Object.defineProperty(t,"setFontSize",{enumerable:!0,get:function(){return h.default}});var b=r(9715);Object.defineProperty(t,"setTextColor",{enumerable:!0,get:function(){return b.default}});var y=r(7451);Object.defineProperty(t,"changeFontSize",{enumerable:!0,get:function(){return y.default}});var _=r(4847);Object.defineProperty(t,"applySegmentFormat",{enumerable:!0,get:function(){return _.default}});var C=r(5284);Object.defineProperty(t,"changeCapitalization",{enumerable:!0,get:function(){return C.default}});var P=r(2930);Object.defineProperty(t,"insertImage",{enumerable:!0,get:function(){return P.default}});var k=r(3e3);Object.defineProperty(t,"setListStyle",{enumerable:!0,get:function(){return k.default}});var S=r(1123);Object.defineProperty(t,"setListStartNumber",{enumerable:!0,get:function(){return S.default}});var O=r(6516);Object.defineProperty(t,"hasSelectionInBlock",{enumerable:!0,get:function(){return O.default}});var M=r(5676);Object.defineProperty(t,"hasSelectionInSegment",{enumerable:!0,get:function(){return M.default}});var T=r(7536);Object.defineProperty(t,"hasSelectionInBlockGroup",{enumerable:!0,get:function(){return T.default}});var w=r(6331);Object.defineProperty(t,"getSelectedSegments",{enumerable:!0,get:function(){return w.default}});var F=r(3721);Object.defineProperty(t,"setIndentation",{enumerable:!0,get:function(){return F.default}});var x=r(5149);Object.defineProperty(t,"setAlignment",{enumerable:!0,get:function(){return x.default}});var E=r(8365);Object.defineProperty(t,"setDirection",{enumerable:!0,get:function(){return E.default}});var j=r(2923);Object.defineProperty(t,"setHeadingLevel",{enumerable:!0,get:function(){return j.default}});var B=r(1977);Object.defineProperty(t,"toggleBlockQuote",{enumerable:!0,get:function(){return B.default}});var L=r(9294);Object.defineProperty(t,"setSpacing",{enumerable:!0,get:function(){return L.default}});var A=r(4653);Object.defineProperty(t,"setImageBorder",{enumerable:!0,get:function(){return A.default}});var I=r(4735);Object.defineProperty(t,"setImageBoxShadow",{enumerable:!0,get:function(){return I.default}});var D=r(8401);Object.defineProperty(t,"changeImage",{enumerable:!0,get:function(){return D.default}});var H=r(7950);Object.defineProperty(t,"getFormatState",{enumerable:!0,get:function(){return H.default}});var N=r(1576);Object.defineProperty(t,"applyPendingFormat",{enumerable:!0,get:function(){return N.default}});var R=r(2313);Object.defineProperty(t,"clearFormat",{enumerable:!0,get:function(){return R.default}});var z=r(7058);Object.defineProperty(t,"insertLink",{enumerable:!0,get:function(){return z.default}});var W=r(3932);Object.defineProperty(t,"removeLink",{enumerable:!0,get:function(){return W.default}});var G=r(1270);Object.defineProperty(t,"adjustLinkSelection",{enumerable:!0,get:function(){return G.default}});var U=r(2063);Object.defineProperty(t,"setImageAltText",{enumerable:!0,get:function(){return U.default}});var K=r(6623);Object.defineProperty(t,"adjustImageSelection",{enumerable:!0,get:function(){return K.default}});var V=r(7339);Object.defineProperty(t,"setParagraphMargin",{enumerable:!0,get:function(){return V.default}});var q=r(1340);Object.defineProperty(t,"toggleCode",{enumerable:!0,get:function(){return q.default}});var $=r(5915);Object.defineProperty(t,"paste",{enumerable:!0,get:function(){return $.default}});var Q=r(9894);Object.defineProperty(t,"insertEntity",{enumerable:!0,get:function(){return Q.default}});var X=r(2511);Object.defineProperty(t,"formatWithContentModel",{enumerable:!0,get:function(){return X.formatWithContentModel}});var Z=r(6593);Object.defineProperty(t,"ContentModelEditor",{enumerable:!0,get:function(){return Z.default}});var J=r(1053);Object.defineProperty(t,"isContentModelEditor",{enumerable:!0,get:function(){return J.default}});var Y=r(4e3);Object.defineProperty(t,"ContentModelFormatPlugin",{enumerable:!0,get:function(){return Y.default}});var ee=r(2909);Object.defineProperty(t,"ContentModelEditPlugin",{enumerable:!0,get:function(){return ee.default}});var te=r(1021);Object.defineProperty(t,"ContentModelPastePlugin",{enumerable:!0,get:function(){return te.default}});var re=r(2517);Object.defineProperty(t,"ContentModelTypeInContainerPlugin",{enumerable:!0,get:function(){return re.default}});var oe=r(6093);Object.defineProperty(t,"ContentModelCopyPastePlugin",{enumerable:!0,get:function(){return oe.default}});var ne=r(8974);Object.defineProperty(t,"createContentModelEditorCore",{enumerable:!0,get:function(){return ne.createContentModelEditorCore}}),Object.defineProperty(t,"promoteToContentModelEditorCore",{enumerable:!0,get:function(){return ne.promoteToContentModelEditorCore}});var ae=r(9843);Object.defineProperty(t,"combineBorderValue",{enumerable:!0,get:function(){return ae.combineBorderValue}}),Object.defineProperty(t,"extractBorderValues",{enumerable:!0,get:function(){return ae.extractBorderValues}});var le=r(5866);Object.defineProperty(t,"updateImageMetadata",{enumerable:!0,get:function(){return le.updateImageMetadata}});var ie=r(860);Object.defineProperty(t,"updateTableCellMetadata",{enumerable:!0,get:function(){return ie.updateTableCellMetadata}});var se=r(5165);Object.defineProperty(t,"updateTableMetadata",{enumerable:!0,get:function(){return se.updateTableMetadata}})},5567:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getLeafSiblingBlock=void 0;var o=r(7582),n=r(1246);t.getLeafSiblingBlock=function(e,t,r){for(var a,l=(0,o.__spreadArray)([],(0,o.__read)(e),!1),i=function(){var e=l[0],o=e.blocks.indexOf(t);if(o<0)return"break";var i=e.blocks[o+(r?1:-1)];if(i){for(;"BlockGroup"==i.blockType;){var s=i.blocks[r?0:i.blocks.length-1];if(!s)return{value:{block:i,path:l}};if("BlockGroup"!=s.blockType)return l.unshift(i),{value:{block:s,path:l}};l.unshift(i),i=s}return{value:{block:i,path:l}}}if((0,n.isGeneralSegment)(e)){l.shift();var c=-1,d=e,u=null===(a=l[0])||void 0===a?void 0:a.blocks.find((function(e){return"Paragraph"==e.blockType&&(c=e.segments.indexOf(d))>=0}));if(!u)return"break";var f=u.segments[c+(r?1:-1)];if(f)return{value:{block:u,path:l,siblingSegment:f}};t=u}else{if("Document"==e.blockGroupType||"TableCell"==e.blockGroupType)return"break";l.shift(),t=e}};l.length>0;){var s=i();if("object"==typeof s)return s.value;if("break"===s)break}return null}},9842:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelAlignment=void 0;var o=r(6682),n=r(5544),a={left:{ltr:"start",rtl:"end"},center:{ltr:"center",rtl:"center"},right:{ltr:"end",rtl:"start"}},l={left:{ltr:15,rtl:16},center:{ltr:14,rtl:14},right:{ltr:16,rtl:15}};t.setModelAlignment=function(e,t){var r=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]);return r.forEach((function(e){var r=e.block,n=a[t]["rtl"==r.format.direction?"rtl":"ltr"];"Table"===r.blockType?(0,o.alignTable)(r,l[t]["rtl"==r.format.direction?"rtl":"ltr"]):r&&(r.format.textAlign=n)})),r.length>0}},5078:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelDirection=void 0;var o=r(2874),n=r(5544),a=r(4979);function l(e,t){if("rtl"==e.direction!=("rtl"==t)){e.direction=t;var r=e.marginLeft,o=e.paddingLeft;i(e,"marginLeft",e.marginRight),i(e,"marginRight",r),i(e,"paddingLeft",e.paddingRight),i(e,"paddingRight",o)}}function i(e,t,r){r?e[t]=r:delete e[t]}t.setModelDirection=function(e,t){var r=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]);return r.forEach((function(r){var n=r.block;(0,a.isBlockGroupOfType)(n,"ListItem")?(0,o.findListItemsInSameThread)(e,n).forEach((function(e){e.levels.forEach((function(e){e.format.direction=t})),e.blocks.forEach((function(e){return l(e.format,t)}))})):n&&l(n.format,t)})),r.length>0}},687:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setModelIndentation=void 0;var o=r(1246),n=r(5544),a=r(4979);t.setModelIndentation=function(e,t,r){void 0===r&&(r=40);var l=(0,n.getOperationalBlocks)(e,["ListItem"],["TableCell"]),i="indent"==t;return l.forEach((function(e){var t=e.block;if((0,a.isBlockGroupOfType)(t,"ListItem"))if(i){var n=t.levels[t.levels.length-1],l=(0,o.createListLevel)((null==n?void 0:n.listType)||"UL",null==n?void 0:n.format);delete l.format.startNumberOverride,t.levels.push(l)}else t.levels.pop();else if(t){var s=t.format,c=s.marginLeft,d=s.marginRight,u="rtl"==s.direction,f=(0,o.parseValueWithUnit)(u?d:c),m=(i?Math.ceil:Math.floor)(f/r)*r;m==f&&(m=Math.max(m+r*(i?1:-1),0)),u?s.marginRight=m+"px":s.marginLeft=m+"px"}})),l.length>0}},6162:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toggleModelBlockQuote=void 0;var o=r(1246),n=r(5544),a=r(4979),l=r(1953);function i(e){return(0,a.isBlockGroupOfType)(e,"FormatContainer")&&"blockquote"==e.tagName}t.toggleModelBlockQuote=function(e,t){var r=(0,n.getOperationalBlocks)(e,["FormatContainer","ListItem"],["TableCell"],!0);if(r.every((function(e){return i(e.block)})))r.forEach((function(e){var t=e.block,r=e.parent;(0,o.unwrapBlock)(r,t)}));else{var a=[],s=function(){return(0,o.createFormatContainer)("blockquote",t)},c=function(e,r){return function(e,t){return i(e)&&(0,o.areSameFormats)(t,e.format)}(e,(null==r?void 0:r.format)||t)};r.forEach((function(e){var t=e.block,r=e.parent;i(t)||(0,l.wrapBlockStep1)(a,r,t,s,c)})),(0,l.wrapBlockStep2)(a,c)}return r.length>0}},512:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearModelFormat=void 0;var o=r(7582),n=r(5294),a=r(4158),l=r(2347),i=r(1246),s=r(4829),c=r(5098),d=r(860),u=r(5165);function f(e,t){var r=(0,s.getClosestAncestorBlockGroupIndex)(e,["FormatContainer"],["TableCell"]);if(r>=0&&r=0&&n>=0){var l=(0,i.createFormatContainer)(o.tagName,o.format);o.blocks.splice(a,1),l.blocks=o.blocks.splice(a),e[r+1].blocks.splice(n+1,0,t,l)}}}function m(e){var t=e[(0,s.getClosestAncestorBlockGroupIndex)(e,["ListItem"],["TableCell"])];t&&(t.levels=[])}function p(e,t){if("Divider"==t.blockType){var r=e[0].blocks.indexOf(t);r>=0&&e[0].blocks.splice(r,1)}else"Paragraph"==t.blockType&&(t.format={},delete t.decorator)}t.clearModelFormat=function(e,t,r,i){(0,c.iterateSelections)([e],(function(e,o,n,a){a&&(0,l.arrayPush)(r,a),n?t.push([e,n]):o&&function(e,t){if(e){var r=e.table,o=e.colIndex,n=e.rowIndex,a=e.isWholeTableSelected,l=r.rows[n].cells[o];l.isSelected&&((0,d.updateTableCellMetadata)(l,(function(){return null})),l.isHeader=!1,l.format={useBorderBox:l.format.useBorderBox}),t.find((function(e){return e[0]==r}))||t.push([r,a])}}(o,i)}),{includeListFormatHolder:e.format?"never":"anySegment"});var s=r[0];if(1==t.length&&function(e){var t="Paragraph"==e.blockType?e.segments.filter((function(e){return e.isSelected})):[];return 1==t.length&&"SelectionMarker"==t[0].segmentType}(t[0][1])&&1==t.length)r.splice.apply(r,(0,o.__spreadArray)([0,r.length],(0,o.__read)((0,n.adjustWordSelection)(e,s)),!1)),m(t[0][0]);else if(t.length>1||t.some((function(e){return function(e){return e.isSelected||"Paragraph"==e.blockType&&e.segments.every((function(e){return e.isSelected}))}(e[1])})))for(var v=t.length-1;v>=0;v--){var g=(0,o.__read)(t[v],2),h=g[0],b=g[1];p(h,b),m(h),f(h,b)}!function(e,t){e.forEach((function(e){e.format=(0,o.__assign)({},t||{}),e.link&&delete e.link.format.textColor,delete e.code}))}(r,e.format),function(e){e.forEach((function(e){var t=(0,o.__read)(e,2),r=t[0];t[1]&&(r.format={useBorderBox:r.format.useBorderBox,borderCollapse:r.format.borderCollapse},(0,u.updateTableMetadata)(r,(function(){return null}))),(0,a.applyTableFormat)(r,void 0,!0)}))}(i)}},1690:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.cloneModel=void 0;var o=r(7582);function n(e){return{format:Object.assign({},e.format)}}function a(e){return{dataset:Object.assign({},e.dataset)}}function l(e){var t=e.blockType;return Object.assign({blockType:t},n(e))}function i(e,t){return{blockGroupType:e.blockGroupType,blocks:e.blocks.map((function(e){return function(e,t){switch(e.blockType){case"BlockGroup":switch(e.blockGroupType){case"FormatContainer":return function(e,t){var r=e.tagName,o=e.cachedElement,n=Object.assign({tagName:r,cachedElement:m(o,"cache",t)},l(e),i(e,t));return e.zeroFontSize&&(n.zeroFontSize=!0),n}(e,t);case"General":return u(e,t);case"ListItem":return function(e,t){var r=e.formatHolder,o=e.levels;return Object.assign({formatHolder:f(r),levels:o.map(d)},l(e),i(e,t))}(e,t)}break;case"Divider":return function(e,t){var r=e.tagName,o=e.isSelected,n=e.cachedElement;return Object.assign({isSelected:o,tagName:r,cachedElement:m(n,"cache",t)},l(e))}(e,t);case"Entity":return c(e,t);case"Paragraph":return function(e,t){var r=e.cachedElement,i=e.segments,d=e.isImplicit,p=e.decorator,v=e.segmentFormat,g=Object.assign({cachedElement:m(r,"cache",t),isImplicit:d,segments:i.map((function(e){return function(e,t){switch(e.segmentType){case"Br":return s(e);case"Entity":return c(e,t);case"General":return function(e,t){return Object.assign(u(e,t),s(e))}(e,t);case"Image":return l=(n=e).src,i=n.alt,d=n.title,m=n.isSelectedAsImageSelection,Object.assign({src:l,alt:i,title:d,isSelectedAsImageSelection:m},s(n),a(n));case"SelectionMarker":return f(e);case"Text":return o=(r=e).text,Object.assign({text:o},s(r))}var r,o,n,l,i,d,m}(e,t)})),segmentFormat:v?(0,o.__assign)({},v):void 0},l(e),n(e));return p&&(g.decorator=Object.assign({tagName:p.tagName},n(p))),g}(e,t);case"Table":return function(e,t){var r=e.cachedElement,o=e.widths,s=e.rows;return Object.assign({cachedElement:m(r,"cache",t),widths:Array.from(o),rows:s.map((function(e){return function(e,t){var r=e.height,o=e.cells,l=e.cachedElement;return Object.assign({height:r,cachedElement:m(l,"cache",t),cells:o.map((function(e){return function(e,t){var r=e.cachedElement,o=e.isSelected,l=e.spanAbove,s=e.spanLeft,c=e.isHeader;return Object.assign({cachedElement:m(r,"cache",t),isSelected:o,spanAbove:l,spanLeft:s,isHeader:c},i(e,t),n(e),a(e))}(e,t)}))},n(e))}(e,t)}))},l(e),a(e))}(e,t)}}(e,t)}))}}function s(e){var t=e.segmentType,r=e.isSelected,o=e.code,l=e.link,i=Object.assign({segmentType:t,isSelected:r},n(e));return o&&(i.code=n(o)),l&&(i.link=Object.assign(n(l),a(l))),i}function c(e,t){var r=e.wrapper,o=e.isReadonly,n=e.type,a=e.id;return Object.assign({wrapper:m(r,"entity",t),isReadonly:o,type:n,id:a},l(e),s(e))}function d(e){var t=e.listType;return Object.assign({listType:t},n(e),a(e))}function u(e,t){var r=e.element;return Object.assign({element:m(r,"general",t)},l(e),i(e,t))}function f(e){return Object.assign({isSelected:e.isSelected},s(e))}function m(e,t,r){var o=r.includeCachedElement;if(e){if(o){if(!0===o)return e;var n=o(e,t);if(("general"==t||"entity"==t)&&!n)throw new Error("Entity and General Model must has wrapper element");return n}return"cache"==t?void 0:e.cloneNode(!0)}}t.cloneModel=function(e,t){var r=i(e,t||{});return e.format&&(r.format=Object.assign({},e.format)),r}},4829:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getClosestAncestorBlockGroupIndex=void 0,t.getClosestAncestorBlockGroupIndex=function(e,t,r){void 0===r&&(r=[]);for(var o=0;o=0)return o;if(r.indexOf(n.blockGroupType)>=0)return-1}return-1}},4979:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBlockGroupOfType=void 0,t.isBlockGroupOfType=function(e,t){return(null==e?void 0:e.blockGroupType)==t}},485:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeModel=void 0;var o=r(7582),n=r(1246),a=r(4158),l=r(473),i=r(4829),s=r(2347),c=r(1303),d=r(1246),u=["h1","h2","h3","h4","h5","h6"];function f(e,t,r,n){var a=e.paragraph,l=e.marker,i=r?a:v(e,t.format),c=i.segments.indexOf(l);if(c>=0)for(var d=0;d-1)){var m=(0,s.getObjectKeys)(i.decorator.format),p=(0,s.getObjectKeys)(i.segmentFormat||{});m.forEach((function(e){var t;p.indexOf(e)>-1&&(null===(t=i.segmentFormat)||void 0===t||delete t[e])}))}r||(i.format=t.format)}function m(e,t,r){var o,l,i=e.tableContext;if(i&&1==r.blocks.length&&r.blocks[0]==t){for(var s=i.table,u=i.colIndex,f=i.rowIndex,m=0;m=s.rows[0].cells.length)for(var h=0;h=s.rows.length)for(s.rows[f+m]||(s.rows[f+m]={cells:[],format:{},height:0}),h=0;h=0&&s.blocks.splice(c,0,t),l&&(null==l||l.levels.forEach((function(e,r){t.levels[r]=(0,o.__assign)({},e)})))}function v(e,t){var r=e.paragraph,n=e.marker,a=e.path,l=r.segments.indexOf(n),s=a[0].blocks.indexOf(r),c=(0,d.createParagraph)(!1,(0,o.__assign)((0,o.__assign)({},r.format),t),r.segmentFormat);l>=0&&(c.segments=r.segments.splice(l)),s>=0&&a[0].blocks.splice(s+1,0,c);var u=(0,i.getClosestAncestorBlockGroupIndex)(a,["ListItem"],["FormatContainer","TableCell"]),f=a[u];if(f){var m=u>=0?a[u+1]:null,p=m?m.blocks.indexOf(f):-1;if(p>=0&&m){var v=(0,d.createListItem)(f.levels,f.formatHolder.format);s>=0&&(v.blocks=f.blocks.splice(s+1)),p>=0&&m.blocks.splice(p+1,0,v),a[u]=v}}return e.paragraph=c,c}function g(e,t){var r=e.path,o=v(e,"Paragraph"!==t.blockType?{}:t.format),n=r[0].blocks.indexOf(o);n>=0&&r[0].blocks.splice(n,0,t)}function h(e,t,r){e.blocks.forEach((function(e){var n;switch(e.blockType){case"BlockGroup":"ListItem"==e.blockGroupType&&(e.formatHolder.format=b(r,t,e.formatHolder.format)),h(e,t,r);break;case"Table":e.rows.forEach((function(e){return e.cells.forEach((function(e){h(e,t,r)}))}));break;case"Paragraph":var a=(null===(n=e.decorator)||void 0===n?void 0:n.format)||{};e.segments.forEach((function(e){"General"==e.segmentType&&h(e,t,r),e.format=b(r,t,(0,o.__assign)((0,o.__assign)({},a),e.format))})),"keepSourceEmphasisFormat"===r&&delete e.decorator}}))}function b(e,t,r){return"mergeAll"==e?(0,o.__assign)((0,o.__assign)({},t),r):(0,o.__assign)((0,o.__assign)({},t),(a={},l=(n=r).fontWeight,i=n.italic,s=n.underline,l&&"normal"!=l&&(a.fontWeight=l),i&&(a.italic=i),s&&(a.underline=s),a));var n,a,l,i,s}t.mergeModel=function(e,t,r,n){var a,i=null!==(a=null==n?void 0:n.insertPosition)&&void 0!==a?a:(0,l.deleteSelection)(e,[],r).insertPoint;if(i){(null==n?void 0:n.mergeFormat)&&"none"!=n.mergeFormat&&h(t,(0,o.__assign)((0,o.__assign)({},e.format||{}),i.marker.format),null==n?void 0:n.mergeFormat);for(var s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.retrieveModelFormatState=void 0;var o=r(9843),n=r(4829),a=r(5539),l=r(5098),i=r(5165);function s(e,t,r,o){o?void 0!==r&&(e[t]=r):r!==e[t]&&delete e[t]}t.retrieveModelFormatState=function(e,t,r){var c,d,u,f=!0,m=!0,p=!0;(0,l.iterateSelections)([e],(function(l,u,v,g){if(function(e,t,r){var o,a,l=(0,n.getClosestAncestorBlockGroupIndex)(t,["ListItem"],[]),i=(0,n.getClosestAncestorBlockGroupIndex)(t,["FormatContainer"],[]);if(l>=0){var c=t[l],d=null===(o=null==c?void 0:c.levels[c.levels.length-1])||void 0===o?void 0:o.listType;s(e,"isBullet","UL"==d,r),s(e,"isNumbering","OL"==d,r)}s(e,"isBlockQuote",i>=0&&"blockquote"==(null===(a=t[i])||void 0===a?void 0:a.tagName),r)}(r,l,f),v&&(d?r.isMultilineSelection=!0:d=v),"Paragraph"==(null==v?void 0:v.blockType)&&(function(e,t,r){var o,n=parseInt(((null===(o=t.decorator)||void 0===o?void 0:o.tagName)||"").substring(1)),a=n>=1&&n<=6?n:void 0;s(e,"marginBottom",t.format.marginBottom,r),s(e,"marginTop",t.format.marginTop,r),s(e,"headingLevel",a,r),s(e,"headerLevel",a,r),s(e,"textAlign",t.format.textAlign,r),s(e,"direction",t.format.direction,r)}(r,v,f),null==g||g.forEach((function(n){var l,i,c,d,u,h,b,y,_;(p||"SelectionMarker"!=n.segmentType)&&(function(e,t,r){var o,n,l=null===(n=null===(o=r.superOrSubScriptSequence)||void 0===o?void 0:o.split(" "))||void 0===n?void 0:n.pop();s(e,"isBold",(0,a.isBold)(r.fontWeight),t),s(e,"isItalic",r.italic,t),s(e,"isUnderline",r.underline,t),s(e,"isStrikeThrough",r.strikethrough,t),s(e,"isSuperscript","super"==l,t),s(e,"isSubscript","sub"==l,t),s(e,"letterSpacing",r.letterSpacing,t),s(e,"fontName",r.fontFamily,t),s(e,"fontSize",r.fontSize,t),s(e,"backgroundColor",r.backgroundColor,t),s(e,"textColor",r.textColor,t),s(e,"lineHeight",r.lineHeight,t)}(r,f,Object.assign({},e.format,v.format,null===(l=v.decorator)||void 0===l?void 0:l.format,n.format,null===(i=n.code)||void 0===i?void 0:i.format,null===(c=n.link)||void 0===c?void 0:c.format,t)),s(r,"isCodeInline",!!(null==n?void 0:n.code),f)),p=!1,r.canUnlink=r.canUnlink||!!n.link,r.canAddImageAltText=r.canAddImageAltText||g.some((function(e){return"Image"==e.segmentType})),f=!1,"Image"===n.segmentType&&(m?(d=r,u=n.format,"borderTop",b=(h=(0,o.extractBorderValues)(u.borderTop)).color,y=h.width,_=h.style,d.imageFormat={borderColor:b,borderWidth:y,borderStyle:_,boxShadow:u.boxShadow,borderRadius:u.borderRadius},m=!1):r.imageFormat=void 0)})),f=!1),u)if(c){var h=c.table,b=c.colIndex,y=c.rowIndex;u.table!=h||u.colIndex==b&&u.rowIndex==y||(r.canMergeTableCell=!0,r.isMultilineSelection=!0)}else!function(e,t){var r=(0,i.updateTableMetadata)(e.table);t.isInTable=!0,t.tableHasHeader=e.table.rows.some((function(e){return e.cells.some((function(e){return e.isHeader}))})),r&&(t.tableFormat=r)}(u,r),c=u}),{includeListFormatHolder:"never"}),r.fontSize&&(r.fontSize=(u=r.fontSize)&&u.indexOf("px")==u.length-2?Math.round(75*parseFloat(u)+.05)/100+"pt":u)}},1953:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapBlockStep2=t.wrapBlockStep1=void 0;var o=r(1246),n=r(2347);t.wrapBlockStep1=function(e,t,r,n,a){var l,i=null!==(l=null==t?void 0:t.blocks.indexOf(r))&&void 0!==l?l:-1;if(t&&i>=0){t.blocks.splice(i,1);var s=t.blocks[i-1],c=a(s)?s:function(e,t,r){var o=r();return e.blocks.splice(t,0,o),o}(t,i,n);(0,o.setParagraphNotImplicit)(r),(0,o.addBlock)(c,r),e.unshift({parent:t,wrapper:c})}},t.wrapBlockStep2=function(e,t){e.forEach((function(e){var r=e.parent,a=e.wrapper,l=r.blocks.indexOf(a),i=r.blocks[l+1];l>=0&&t(i,a)&&(a.blocks.forEach(o.setParagraphNotImplicit),(0,n.arrayPush)(a.blocks,i.blocks),r.blocks.splice(l+1,1))}))}},473:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSelection=void 0;var o=r(7582),n=r(2650);t.deleteSelection=function(e,t,r){void 0===t&&(t=[]);var a=(0,n.deleteExpandedSelection)(e,r);return t.forEach((function(e){e&&function(e){return!!e.insertPoint}(a)&&0==a.deleteResult&&e(a)})),function(e){var t,r=e.insertPoint,n=e.deleteResult,a=e.lastParagraph,l=e.lastTableContext;r&&0!=n&&3!=n&&a&&a!=r.paragraph&&l==r.tableContext&&((t=r.paragraph.segments).push.apply(t,(0,o.__spreadArray)([],(0,o.__read)(a.segments),!1)),a.segments=[])}(a),a}},1685:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteAllSegmentBefore=void 0;var o=r(7483);t.deleteAllSegmentBefore=function(e){for(var t=e.insertPoint,r=t.paragraph,n=t.marker,a=r.segments.indexOf(n)-1;a>=0;a--){var l=r.segments[a];l.isSelected=!0,(0,o.deleteSegment)(r,l,e.formatContext)&&(e.deleteResult=2)}}},8689:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backwardDeleteCollapsedSelection=t.forwardDeleteCollapsedSelection=void 0;var o=r(5567),n=r(1647),a=r(5911),l=r(7483),i=r(1246);function s(e){return function(t){var r,s="forward"==e,c=t.insertPoint,d=c.paragraph,u=c.marker,f=c.path,m=c.tableContext,p=d.segments;!function(e){var t,r;if("Br"==(null===(t=e[e.length-1])||void 0===t?void 0:t.segmentType)){var o=e.filter((function(e){return"SelectionMarker"!=e.segmentType}));"Br"!=(null===(r=o[o.length-2])||void 0===r?void 0:r.segmentType)&&e.pop()}}(p);var v,g=p.indexOf(u)+(s?1:-1),h=p[g];if(h)(0,l.deleteSegment)(d,h,t.formatContext,e)&&(t.deleteResult=1,(0,i.setParagraphNotImplicit)(d));else if(v=(0,o.getLeafSiblingBlock)(f,d,s)){var b=v.block,y=v.path,_=v.siblingSegment;"Paragraph"==b.blockType?(_?(0,l.deleteSegment)(b,_,t.formatContext,e)&&(t.deleteResult=2):(s?t.lastParagraph=b:("Br"==(null===(r=b.segments[b.segments.length-1])||void 0===r?void 0:r.segmentType)&&b.segments.pop(),t.insertPoint=(0,n.createInsertPoint)(u,b,y,m),t.lastParagraph=d,delete b.cachedElement),t.deleteResult=2),t.lastTableContext=m):(0,a.deleteBlock)(y[0].blocks,b,void 0,t.formatContext,e)&&(t.deleteResult=2)}else t.deleteResult=3}}t.forwardDeleteCollapsedSelection=s("forward"),t.backwardDeleteCollapsedSelection=s("backward")},3731:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.backwardDeleteWordSelection=t.forwardDeleteWordSelection=void 0;var o,n=r(7582),a=r(8778),l=r(1246);function i(e){return function(t){for(var r=t.insertPoint,o=r.marker,i=r.paragraph,s=i.segments.indexOf(o),c="forward"==e,d=function(e,t,r,o){var i,s,c,d,u,f,m,p,v,g;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:i=r?1:-1,s=e.segments,c=(0,l.isWhiteSpacePreserved)(e),d=t+i,n.label=1;case 1:if(!(d>=0&&d=0&&f0&&(d-=i),[3,6];u.text=g,i>0&&(f-=i)}n.label=5;case 5:return f+=i,[3,3];case 6:return[3,11];case 7:return[4,{punctuation:!0,space:!1,text:!1}];case 8:return n.sent()&&(s.splice(d,1),i>0&&(d-=i),o.deleteResult=2),[3,11];case 9:return[3,11];case 10:return[2,null];case 11:return d+=i,[3,1];case 12:return[2,null]}}))}(i,s,c,t),u=d.next(),f=0;5!=f&&!u.done;){var m=u.value,p=m.punctuation,v=m.space,g=m.text;switch(f){case 0:f=v?4:p?1:2,u=d.next(!0);break;case 1:c&&v?(f=3,u=d.next(!0)):p?u=d.next(!0):f=5;break;case 2:c&&v?(f=3,u=d.next(!0)):g?u=d.next(!0):f=5;break;case 3:p||!v?f=5:u=d.next(!0);break;case 4:v?u=d.next(!0):p?(f=c?3:1,u=d.next(!0)):f=c?5:2}}}}!function(e){e[e.Start=0]="Start",e[e.Punctuation=1]="Punctuation",e[e.Text=2]="Text",e[e.NonText=3]="NonText",e[e.Space=4]="Space",e[e.End=5]="End"}(o||(o={})),t.forwardDeleteWordSelection=i("forward"),t.backwardDeleteWordSelection=i("backward")},1647:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createInsertPoint=void 0,t.createInsertPoint=function(e,t,r,o){return{marker:e,paragraph:t,path:r,tableContext:o}}},5911:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBlock=void 0,t.deleteBlock=function(e,t,r,o,n){var a=e.indexOf(t);switch(t.blockType){case"Table":case"Divider":return r?e.splice(a,1,r):e.splice(a,1),!0;case"Entity":var l=t.isSelected?6:"forward"==n?4:"backward"==n?5:void 0;return void 0!==l&&(r?e.splice(a,1,r):e.splice(a,1),null==o||o.deletedEntities.push({entity:t,operation:l})),!0;case"BlockGroup":switch(t.blockGroupType){case"General":return!!r&&(e.splice(a,1,r),!0);case"ListItem":case"FormatContainer":return e.splice(a,1),!0}}return!1}},2650:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteExpandedSelection=void 0;var o=r(7582),n=r(1647),a=r(5911),l=r(7483),i=r(5098),s=r(1246),c={contentUnderSelectedTableCell:"ignoreForTableOrCell",contentUnderSelectedGeneralElement:"generalElementOnly",includeListFormatHolder:"never"};t.deleteExpandedSelection=function(e,t){var r={deleteResult:0,insertPoint:null,formatContext:t};return(0,i.iterateSelections)([e],(function(t,i,c,d){var u=(0,s.createParagraph)(!0,void 0,e.format),f=e.format,m=0;if(d)d[0]&&"Paragraph"==(null==c?void 0:c.blockType)&&(m=(u=c).segments.indexOf(d[0]),f=d[0].format,r.lastParagraph=u,r.lastTableContext=i,d.forEach((function(e,o){0!=o||r.insertPoint||"SelectionMarker"!=e.segmentType?(0,l.deleteSegment)(c,e,r.formatContext)&&(r.deleteResult=2):r.insertPoint=(0,n.createInsertPoint)(e,c,t,i)})),2==r.deleteResult&&(0,s.setParagraphNotImplicit)(c));else if(c){var p=t[0].blocks;(0,a.deleteBlock)(p,c,u,r.formatContext)&&(r.deleteResult=2)}else if(i){var v=i.table,g=i.colIndex,h=i.rowIndex,b=v.rows[h],y=b.cells[g];t=(0,o.__spreadArray)([y],(0,o.__read)(t),!1),u.segments.push((0,s.createBr)(e.format)),y.blocks=[u],delete y.cachedElement,delete b.cachedElement,r.deleteResult=2}if(!r.insertPoint){var _=(0,s.createSelectionMarker)(f);(0,s.setParagraphNotImplicit)(u),u.segments.splice(m,0,_),r.insertPoint=(0,n.createInsertPoint)(_,u,t,i)}}),c),r}},7483:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSegment=void 0;var o=r(4486),n=r(1246),a=r(8778);t.deleteSegment=function(e,t,r,l){var i=e.segments,s=i.indexOf(t),c=(0,n.isWhiteSpacePreserved)(e),d="forward"==l,u="backward"==l;switch(c||function(e,t){for(var r,o=t-1;"SelectionMarker"==(null===(r=e[o])||void 0===r?void 0:r.segmentType);)o--;var a=e[o];a&&(0,n.normalizeSingleSegment)(a)}(i,s),t.segmentType){case"Br":case"Image":case"SelectionMarker":return i.splice(s,1),!0;case"Entity":var f=t.isSelected?6:d?4:u?5:void 0;return void 0!==f&&(i.splice(s,1),null==r||r.deletedEntities.push({entity:t,operation:f})),!0;case"Text":var m=t.text;return 0==m.length||t.isSelected?i.splice(s,1):l&&(m=(0,o.deleteSingleChar)(m,d),c||(m=(0,a.normalizeText)(m,d)),""==m?i.splice(s,1):t.text=m),!0;case"General":return!!t.isSelected&&(i.splice(s,1),!0)}}},4486:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteSingleChar=void 0;var o=r(7582);t.deleteSingleChar=function(e,t){for(var r=(0,o.__spreadArray)([],(0,o.__read)(e),!1),n=0,a=t?0:r.length-1,l="notDeleted";a>=0&&a{Object.defineProperty(t,"__esModule",{value:!0}),t.insertEntityModel=void 0;var o=r(7582),n=r(1246),a=r(473),l=r(4829),i=r(5736);t.insertEntityModel=function(e,t,r,s,c,d){var u,f,m,p,v=-1;if("begin"==r||"end"==r)m=e,v="begin"==r?0:e.blocks.length;else if((p=(0,a.deleteSelection)(e,[],d)).insertPoint){var g=p.insertPoint,h=g.marker,b=g.paragraph,y=g.path;if(2==p.deleteResult&&(0,n.normalizeContentModel)(e),s){var _="root"==r?(0,l.getClosestAncestorBlockGroupIndex)(y,["TableCell","Document"]):0;m=y[_];var C=y[_-1],P="FormatContainer"==(null==C?void 0:C.blockGroupType)||"General"==(null==C?void 0:C.blockGroupType)||"ListItem"==(null==C?void 0:C.blockGroupType)?C:b,k=m.blocks.indexOf(P);v=k>=0?k+1:-1}else{var S=b.segments.indexOf(h);S>=0&&b.segments.splice(c?S:S+1,0,t)}}if(v>=0&&m){var O=[],M=void 0;if(s){var T=m.blocks[v];O.push(t),"Paragraph"==(null==T?void 0:T.blockType)?M=T:T&&"Entity"!=T.blockType&&!c||((M=(0,n.createParagraph)(!1,{},e.format)).segments.push((0,n.createBr)(e.format)),O.push(M))}else(M=(0,n.createParagraph)(!1,void 0,e.format)).segments.push(t),O.push(M);if((u=m.blocks).splice.apply(u,(0,o.__spreadArray)([v,0],(0,o.__read)(O),!1)),c&&M){h=(0,n.createSelectionMarker)((null===(f=M.segments[0])||void 0===f?void 0:f.format)||e.format);var w=M.segments;s?w.unshift(h):w.push(h),(0,i.setSelection)(e,h,h)}}}},2976:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.canApplyPendingFormat=t.clearPendingFormat=t.setPendingFormat=t.getPendingFormat=void 0,t.getPendingFormat=function(e){return o(e).format},t.setPendingFormat=function(e,t,r){var n=o(e);n.format=t,n.position=r},t.clearPendingFormat=function(e){var t=o(e);t.format=null,t.position=null},t.canApplyPendingFormat=function(e){var t=o(e),r=!1;if(t.format&&t.position){var n=e.getFocusedPosition();(null==n?void 0:n.equalTo(t.position))&&(r=!0)}return r};var r="__ContentModelPendingFormat";function o(e){return e.getCustomData(r,(function(){return{format:null,position:null}}))}},1354:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9843),n=r(1246);t.default=function(e,t,r){if(t){var a=e.format,l=t.width,i=t.style,s=t.color,c=(0,o.extractBorderValues)(a.borderTop),d=c.color,u=c.width,f=c.style,m="";m=l?(0,n.parseValueWithUnit)(l)+"px":u||"1px",i?m=m+" "+i:f?m=m+" "+f:m+=" solid",s?m=m+" "+s:d&&(m=m+" "+d),e.format.borderLeft=m,e.format.borderTop=m,e.format.borderBottom=m,e.format.borderRight=m}else delete e.format.borderLeft,delete e.format.borderTop,delete e.format.borderBottom,delete e.format.borderRight;r&&(e.format.borderRadius=r)}},2874:(e,t)=>{function r(e,t){e.blocks.forEach((function(e){switch(e.blockType){case"BlockGroup":"ListItem"==e.blockGroupType?t.push(e):(o(t),r(e,t),o(t));break;case"Paragraph":o(t),e.segments.forEach((function(e){"General"==e.segmentType&&r(e,t)})),o(t);break;case"Table":o(t),e.rows.forEach((function(e){return e.cells.forEach((function(e){r(e,t)}))})),o(t)}}))}function o(e){var t=e[e.length-1];t&&null===t||e.push(null)}function n(e,t,r){var o=e[t].levels,n=e[r].levels;return o.length<=n.length&&o.every((function(e,t){return e.listType==n[t].listType}))}function a(e,t){return e.levels.slice(0,t).some((function(e){return void 0!==e.format.startNumberOverride}))}Object.defineProperty(t,"__esModule",{value:!0}),t.findListItemsInSameThread=void 0,t.findListItemsInSameThread=function(e,t){var o=[];return r(e,o),function(e,t){var r,o=[],l=e.indexOf(t),i=t.levels.length,s="OL"==(null===(r=t.levels[i-1])||void 0===r?void 0:r.listType);if(l>=0){for(var c=l;c>=0;c--){if(!(u=e[c])){if(s)continue;break}var d=a(u,i);if(n(e,l,c)){if(o.unshift(u),s&&d)break}else if(!s||d)break}for(c=l+1;c{Object.defineProperty(t,"__esModule",{value:!0}),t.setListType=void 0;var o=r(5544),n=r(4979),a=r(1246);function l(e){return"Paragraph"!=e.blockType||e.segments.every((function(e){return"Br"==e.segmentType||"SelectionMarker"==e.segmentType}))}t.setListType=function(e,t){var r=(0,o.getOperationalBlocks)(e,["ListItem"],[]),i=r.every((function(e){var r,o=e.block;return(0,n.isBlockGroupOfType)(o,"ListItem")?(null===(r=o.levels[o.levels.length-1])||void 0===r?void 0:r.listType)==t:l(o)})),s=[],c=!1;return r.forEach((function(e,o){var d,u,f=e.block,m=e.parent;if((0,n.isBlockGroupOfType)(f,"ListItem")){var p=f.levels.pop();!i&&p?(p.listType=t,f.levels.push(p)):1==f.blocks.length&&(0,a.setParagraphNotImplicit)(f.blocks[0])}else{var v=m.blocks.indexOf(f);if(v>=0)if(1!=r.length&&l(f))c=!0,s.forEach((function(e){return e.levels[0].format.marginBottom="0"})),s=[];else{var g=m.blocks[v-1],h="Paragraph"==f.blockType&&(null===(d=f.segments[0])||void 0===d?void 0:d.format)||{},b=(0,a.createListItem)([(0,a.createListLevel)(t,{startNumberOverride:o>0||"BlockGroup"==(null==g?void 0:g.blockType)&&"ListItem"==g.blockGroupType&&"OL"==(null===(u=g.levels[0])||void 0===u?void 0:u.listType)?void 0:1,direction:f.format.direction,textAlign:f.format.textAlign,marginTop:c?"0":void 0})],{fontFamily:h.fontFamily,fontSize:h.fontSize,textColor:h.textColor});"Paragraph"==f.blockType&&(f.isImplicit=!0),b.blocks.push(f),m.blocks.splice(v,1,b),s.push(b)}}})),(0,a.normalizeContentModel)(e),r.length>0}},5113:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.adjustSegmentSelection=void 0;var o=r(5544),n=r(5736);t.adjustSegmentSelection=function(e,t,r){var a,l,i=(0,o.getSelectedParagraphs)(e),s=!1;return i.forEach((function(e){var o=a?0:e.segments.findIndex((function(e){return t(e)})),n=e.segments;if(!a){a=n[o];for(var i=o;i>0;i--){if(!r(n[i-1],a)){s=s||!!n[i-1].isSelected;break}a=n[i-1],s=s||!n[i-1].isSelected}}if(a)for(i=o;i{Object.defineProperty(t,"__esModule",{value:!0}),t.adjustWordSelection=void 0;var o=r(7582),n=r(1246),a=r(8778),l=r(5098);function i(e,t){var r=e.text,o=-1;if(t)for(var n=0;n=0;n--)if(l=r[n],(0,a.isPunctuation)(l)||(0,a.isSpace)(l)){o=n+1;break}return o}function s(e,t,r,a){var l=t.text,i=(0,n.createText)(l.substring(0,a),e[r].format);t.code&&(i.code={format:(0,o.__assign)({},t.code.format)}),t.link&&(i.link={format:(0,o.__assign)({},t.link.format),dataset:(0,o.__assign)({},t.link.dataset)}),t.text=l.substring(a,l.length),e.splice(r,0,i)}t.adjustWordSelection=function(e,t){var r;if((0,l.iterateSelections)([e],(function(e,o,n,a){return"Paragraph"==(null==n?void 0:n.blockType)&&1==(null==a?void 0:a.length)&&a[0]==t&&(r=n),!0})),r){for(var o=[],n=r.segments.indexOf(t),a=n-1;a>=0&&"Text"==(c=r.segments[a]).segmentType;a--){if((d=i(c,!1))>-1){if(d==c.text.length)break;s(r.segments,c,a,d),o.push(r.segments[a+1]);break}o.push(r.segments[a])}if(n=r.segments.indexOf(t),o.push(t),o.length<=1)return o;for(a=n+1;a-1){if(0==d)break;s(r.segments,c,a,d),o.push(r.segments[a]);break}o.push(r.segments[a])}return o[o.length-1]==t?[t]:o}return[t]}},981:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.collapseTableSelection=void 0;var o=r(1246);t.collapseTableSelection=function(e,t){var r,n=t.firstCol,a=null===(r=e[t.firstRow])||void 0===r?void 0:r.cells[n];a&&(0,o.addSegment)(a,(0,o.createSelectionMarker)())}},5544:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFirstSelectedListItem=t.getFirstSelectedTable=t.getOperationalBlocks=t.getSelectedParagraphs=t.getSelectedSegmentsAndParagraphs=void 0;var o=r(7582),n=r(4979),a=r(5098),l=r(4829);function i(e,t,r,o){var n=[],a=o?t.map((function(e){return[e]})):[t],i=s(e,{includeListFormatHolder:"never",contentUnderSelectedTableCell:"ignoreForTable"});return c(i),i.forEach((function(e){for(var t=e.path,o=e.block,i=function(e){var i=(0,l.getClosestAncestorBlockGroupIndex)(t,a[e],r);return i>=0?(n.filter((function(e){return e.block==t[i]})).length<=0&&n.push({parent:t[i+1],block:t[i]}),"break"):e==a.length-1&&o?(n.push({parent:t[0],block:o}),"break"):void 0},s=0;s1&&d(e,!1)&&e.pop(),e.length>1&&d(e,!0)&&e.shift()}function d(e,t){var r,o=e[t?0:e.length-1];if("Paragraph"==(null===(r=o.block)||void 0===r?void 0:r.blockType)&&o.segments&&o.segments.length>0){var n=o.block.segments,a=o.segments[0];return 1==o.segments.length&&"SelectionMarker"==a.segmentType&&a==n[t?n.length-1:0]}return!1}t.getSelectedSegmentsAndParagraphs=function(e,t){var r=s(e,{includeListFormatHolder:t?"allSegments":"never"}),o=[];return r.forEach((function(e){var r=e.segments,n=e.block;r&&(t&&!n||"Paragraph"==(null==n?void 0:n.blockType))&&r.forEach((function(e){"Entity"==e.segmentType&&e.isReadonly||o.push([e,"Paragraph"==(null==n?void 0:n.blockType)?n:null])}))})),o},t.getSelectedParagraphs=function(e){var t=s(e,{includeListFormatHolder:"never"}),r=[];return c(t),t.forEach((function(e){var t=e.block;"Paragraph"==(null==t?void 0:t.blockType)&&r.push(t)})),r},t.getOperationalBlocks=i,t.getFirstSelectedTable=function(e){var t,r=s(e,{includeListFormatHolder:"never"}),n=[];return c(r),r.forEach((function(e){var r=e.block,a=e.tableContext,l=e.path;if(!t)if("Table"==(null==r?void 0:r.blockType))t=r,n=(0,o.__spreadArray)([],(0,o.__read)(l),!1);else if(null==a?void 0:a.table){t=a.table;var i=l.filter((function(e){return e.blocks.indexOf(a.table)>=0}))[0],s=l.indexOf(i);n=s>=0?l.slice(s):[]}})),[t,n]},t.getFirstSelectedListItem=function(e){var t;return i(e,["ListItem"],["TableCell"]).forEach((function(e){!t&&(0,n.isBlockGroupOfType)(e.block,"ListItem")&&(t=e.block)})),t}},2812:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRootNode=void 0,t.getSelectionRootNode=function(e){var t;return e?0==e.type?null===(t=e.ranges[0])||void 0===t?void 0:t.commonAncestorContainer:1==e.type?e.table:2==e.type?e.image:void 0:void 0}},5098:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.iterateSelections=void 0;var o=r(7582);function n(e,t,r,a,l){for(var i=e[0],s=(null==r?void 0:r.includeListFormatHolder)||"allSegments",c=(null==r?void 0:r.contentUnderSelectedTableCell)||"include",d=(null==r?void 0:r.contentUnderSelectedGeneralElement)||"contentOnly",u=!1,f=!1,m=0;m0&&t(e,a,p,O))return!0;break;case"Divider":case"Entity":if((l||p.isSelected)&&t(e,a,p))return!0}}return!("never"==s||"ListItem"!=i.blockGroupType||!u||f&&"anySegment"!=s||!t(e,a,void 0,[i.formatHolder]))}t.iterateSelections=function(e,t,r,o,a){n(e,(function(e,r,o,n){var a;return(null===(a=o)||void 0===a?void 0:a.cachedElement)&&delete o.cachedElement,t(e,r,o,n)}),r,o,a)}},5736:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setSelection=void 0;var o=r(1246);function n(e,t,r,s){return i(t,e,r,s,(function(t){return(0,o.isGeneralSegment)(e)&&l(e,t),e.blocks.forEach((function(e){t=function(e,t,r,o){switch(e.blockType){case"BlockGroup":return n(e,t,r,o);case"Table":return function(e,t,r,o){var i=a(e,r),s=o?a(e,o):i;if(!t&&i&&s)for(var c=0;c=i.y&&c<=s.y&&d>=i.x&&d<=s.x;l(e.rows[c].cells[d],u)}else e.rows.forEach((function(e){return e.cells.forEach((function(e){t=n(e,t,r,o)}))}));return t}(e,t,r,o);case"Divider":case"Entity":return i(t,e,r,o,(function(t){return t?e.isSelected=!0:delete e.isSelected,t}));case"Paragraph":var s=[];for(e.segments.forEach((function(e,a){t=i(t,e,r,o,(function(t){return function(e,t,r,o,a,i){switch(e.segmentType){case"SelectionMarker":return(!t||e!=o&&e!=a)&&r.push(i),t;case"General":return l(e,t),e!=o&&e!=a?n(e,t,o,a):t;case"Image":return l(e,t),e.isSelectedAsImageSelection=o==e&&(!a||a==e),t;default:return l(e,t),t}}(e,t,s,r,o,a)}))}));s.length>0;){var c=s.pop();c>=0&&e.segments.splice(c,1)}return t;default:return t}}(e,t,r,s)})),t}))}function a(e,t){var r=-1,o=-1;if(t)for(var n=0;o<0&&n=0&&o>=0?{x:r,y:o}:void 0}function l(e,t){return t?e.isSelected=!0:delete e.isSelected,t}function i(e,t,r,o,n){return(e=n(e=e||t==r))&&!!o&&t!=o}t.setSelection=function(e,t,r){n(e,!1,t||null,r||null)}},6682:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.alignTable=void 0,t.alignTable=function(e,t){e.format.marginLeft=15==t?"":"auto",e.format.marginRight=16==t?"":"auto",delete e.cachedElement}},7691:(e,t,r)=>{var o,n;Object.defineProperty(t,"__esModule",{value:!0}),t.alignTableCell=void 0;var a=r(5226),l=r(860),i=((o={})[17]="start",o[18]="center",o[19]="end",o),s=((n={})[20]="top",n[21]="middle",n[22]="bottom",n);t.alignTableCell=function(e,t){var r,o=(0,a.getSelectedCells)(e);if(o)for(var n=i[t],c=s[t],d=o.firstRow;d<=o.lastRow;d++)for(var u=o.firstCol;u<=o.lastCol;u++){var f=null===(r=e.rows[d])||void 0===r?void 0:r.cells[u],m=null==f?void 0:f.format;m&&(delete f.cachedElement,m.textAlign=n||m.textAlign,m.verticalAlign=c||m.verticalAlign,c&&(0,l.updateTableCellMetadata)(f,(function(e){return(e=e||{}).vAlignOverride=!0,e})))}}},4158:(e,t,r)=>{var o;Object.defineProperty(t,"__esModule",{value:!0}),t.applyTableFormat=void 0;var n=r(7582),a=r(1246),l=r(9843),i=r(3684),s=r(860),c=r(5165),d={topBorderColor:"#ABABAB",bottomBorderColor:"#ABABAB",verticalBorderColor:"#ABABAB",hasHeaderRow:!1,hasFirstColumn:!1,hasBandedRows:!1,hasBandedColumns:!1,bgColorEven:null,bgColorOdd:"#ABABAB20",headerRowColor:"#ABABAB",tableBorderFormat:0,verticalAlign:null};t.applyTableFormat=function(e,t,r){var o=e.rows;(0,c.updateTableMetadata)(e,(function(c){var p=(0,n.__assign)((0,n.__assign)((0,n.__assign)({},d),c),t||{}),v=function(e,t){var r={bgColorOverrides:[],vAlignOverrides:[]};return e.forEach((function(e){var o=[],n=[];r.bgColorOverrides.push(o),r.vAlignOverrides.push(n),e.cells.forEach((function(e){(0,s.updateTableCellMetadata)(e,(function(e){return e&&t?(o.push(!1),delete e.bgColorOverride):o.push(!!(null==e?void 0:e.bgColorOverride)),n.push(!!(null==e?void 0:e.vAlignOverride)),e}))}))})),r}(o,!r);return delete e.cachedElement,function(e){e.forEach((function(e){e.cells.forEach((function(e){delete e.cachedElement})),delete e.cachedElement}))}(o),function(e,t,r){var o=t.hasBandedRows,n=t.hasBandedColumns,s=t.bgColorOdd,c=t.bgColorEven;e.forEach((function(d,f){d.cells.forEach((function(p,v){var g=u[t.tableBorderFormat]({firstRow:0===f,lastRow:f===e.length-1,firstColumn:0===v,lastColumn:v===d.cells.length-1}),h=[t.topBorderColor,t.verticalBorderColor,t.bottomBorderColor,t.verticalBorderColor];if(g.forEach((function(e,t){var r=!e&&h[t]||"";p.format[a.BorderKeys[t]]=(0,l.combineBorderValue)({style:m(r),width:"1px",color:r})})),!r.bgColorOverrides[f][v]){var b=(o||n)&&(n&&v%2!=0||o&&f%2!=0)?s:c;(0,i.setTableCellBackgroundColor)(p,b)}t.verticalAlign&&!r.vAlignOverrides[f][v]&&(p.format.verticalAlign=t.verticalAlign)}))}))}(o,p,v),function(e,t,r){e.forEach((function(o,n){o.cells.forEach((function(o,a){t.hasFirstColumn&&0===a?(o.isHeader=!0,0===n||r.bgColorOverrides[n][a]||(f(o.format,"borderTop"),(0,i.setTableCellBackgroundColor)(o,null)),n!==e.length-1&&0!==n&&f(o.format,"borderBottom")):o.isHeader=!1}))}))}(o,p,v),function(e,t,r){var o;null===(o=e[0])||void 0===o||o.cells.forEach((function(e,o){e.isHeader=t.hasHeaderRow,t.hasHeaderRow&&t.headerRowColor&&(r.bgColorOverrides[0][o]||(0,i.setTableCellBackgroundColor)(e,t.headerRowColor),f(e.format,"borderTop",t.headerRowColor),f(e.format,"borderRight",t.headerRowColor),f(e.format,"borderLeft",t.headerRowColor))}))}(o,p,v),p}))};var u=((o={})[0]=function(e){return[!1,!1,!1,!1]},o[1]=function(e){return[!1,!e.lastColumn,!1,!e.firstColumn]},o[4]=function(e){var t=e.firstColumn,r=e.firstRow;return[!r,!e.lastColumn&&!t||t&&r,!e.lastRow&&!r,!t]},o[2]=function(e){var t=e.firstRow,r=e.firstColumn,o=e.lastColumn;return[t,t||o,!1,t||r]},o[3]=function(e){var t=e.firstColumn;return[!1,e.lastColumn,!1,t]},o[5]=function(e){var t=e.firstRow,r=e.firstColumn;return[r&&!t,t,r&&!t,t&&!r]},o[6]=function(e){var t=e.firstRow,r=e.firstColumn;return[!t,t||!r,!t,!r]},o[7]=function(e){var t=e.firstColumn,r=e.firstRow;return[!0,r||!t,!r,!0]},o[8]=function(){return[!0,!0,!0,!0]},o);function f(e,t,r){var o=(0,l.extractBorderValues)(e[t]);o.color=r||"",o.style=m(o.color),e[t]=(0,l.combineBorderValue)(o)}function m(e){return e&&"transparent"!=e?"solid":"none"}},5788:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.canMergeCells=void 0,t.canMergeCells=function(e,t,r,o,n){var a=r==n||e[t].cells.every((function(e,t){return tn||!e.spanAbove})),l=t==o||e.every((function(e,n){return no||!e.cells[r].spanLeft})),i=e[o].cells.map((function(t,a){return a>=r&&a<=n?function(e,t,r){for(var o,n,a=0,l=t+1;l=t&&a<=o?function(e,t,r){for(var o,n,a,l=0,i=r+1;i<(null===(o=e[t])||void 0===o?void 0:o.cells.length)&&(null===(a=null===(n=e[t])||void 0===n?void 0:n.cells[i])||void 0===a?void 0:a.spanLeft);i++)l++;return l}(e,a,n):-1})).every((function(e,r,o){return e<0||e==o[t]}));return a&&l&&i&&s}},2969:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTableStructure=void 0;var o=r(1246);t.createTableStructure=function(e,t,r){var n=(0,o.createTable)(r);return(0,o.addBlock)(e,n),n.rows.forEach((function(e){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTable=void 0,t.deleteTable=function(e){e.rows=[],delete e.cachedElement}},629:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTableColumn=void 0;var o=r(981),n=r(5226);t.deleteTableColumn=function(e){var t=(0,n.getSelectedCells)(e);if(t){for(var r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteTableRow=void 0;var o=r(981),n=r(5226);t.deleteTableRow=function(e){var t=(0,n.getSelectedCells)(e);t&&(e.rows[t.firstRow].cells.forEach((function(r,o){var n,a=null===(n=e.rows[t.lastRow+1])||void 0===n?void 0:n.cells[o];a&&(a.spanAbove=a.spanAbove&&r.spanAbove)})),e.rows.splice(t.firstRow,t.lastRow-t.firstRow+1),(0,o.collapseTableSelection)(e.rows,t))}},9073:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ensureFocusableParagraphForTable=void 0;var o=r(1246);function n(e){var t=(0,o.createParagraph)(!1,void 0,e.format),r=(0,o.createBr)(e.format);return t.segments.push(r),t}t.ensureFocusableParagraphForTable=function(e,t,r){var o,a,l,i=null===(o=r.rows.filter((function(e){return e.cells.length>0}))[0])||void 0===o?void 0:o.cells[0];if(i)(l=i.blocks.filter((function(e){return"Paragraph"==e.blockType}))[0])||(l=n(e),i.blocks.push(l));else{var s,c=r;for(l=n(e);s=t.shift();){var d=null!==(a=s.blocks.indexOf(c))&&void 0!==a?a:-1;if(s&&d>=0&&s.blocks.splice(d,1,l),"FormatContainer"!=s.blockGroupType||1!=s.blocks.length||s.blocks[0]!=l)break;c=s}}return l}},5226:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectedCells=void 0;var o=r(7536);t.getSelectedCells=function(e){var t=-1,r=-1,n=-1,a=-1,l=!1;return e.rows.forEach((function(e,i){return e.cells.forEach((function(e,s){(0,o.default)(e)&&(l=!0,t<0&&(t=i),r<0&&(r=s),n=Math.max(n,i),a=Math.max(a,s))}))})),l?{firstRow:t,firstCol:r,lastRow:n,lastCol:a}:null}},7350:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.insertTableColumn=void 0;var o=r(1246),n=r(5226);t.insertTableColumn=function(e,t){var r=(0,n.getSelectedCells)(e),a=2==t;if(r)for(var l=null==r?void 0:r.firstCol;l<=r.lastCol;l++)e.rows.forEach((function(e){var t=e.cells[a?r.firstCol:r.lastCol];e.cells.splice(a?r.firstCol:r.lastCol+1,0,(0,o.createTableCell)(t.spanLeft,t.spanAbove,t.isHeader,t.format))})),e.widths.splice(a?r.firstCol:r.lastCol+1,0,e.widths[a?r.firstCol:r.lastCol])}},9457:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.insertTableRow=void 0;var o=r(7582),n=r(1246),a=r(5226);t.insertTableRow=function(e,t){var r=(0,a.getSelectedCells)(e),l=0==t;if(r)for(var i=r.firstRow;i<=r.lastRow;i++){var s=e.rows[l?r.firstRow:r.lastRow];e.rows.splice(l?r.firstRow:r.lastRow+1,0,{format:(0,o.__assign)({},s.format),cells:s.cells.map((function(e){return(0,n.createTableCell)(e.spanLeft,e.spanAbove,e.isHeader,e.format)})),height:s.height})}}},8509:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableCells=void 0;var o=r(5788),n=r(5226);t.mergeTableCells=function(e){var t=(0,n.getSelectedCells)(e);if(t&&(0,o.canMergeCells)(e.rows,t.firstRow,t.firstCol,t.lastRow,t.lastCol))for(var r=t.firstRow;r<=t.lastRow;r++){for(var a=t.firstCol;a<=t.lastCol;a++){var l=e.rows[r].cells[a];l&&(l.spanLeft=a>t.firstCol,l.spanAbove=r>t.firstRow,delete l.cachedElement)}delete e.rows[r].cachedElement}}},4765:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableColumn=void 0;var o=r(5788),n=r(5226);t.mergeTableColumn=function(e,t){var r,a,l,i,s=(0,n.getSelectedCells)(e);if(s){var c=9==t?s.firstCol:s.lastCol+1;if(c>0&&c{Object.defineProperty(t,"__esModule",{value:!0}),t.mergeTableRow=void 0;var o=r(5788),n=r(5226);t.mergeTableRow=function(e,t){var r,a,l,i=(0,n.getSelectedCells)(e);if(i){var s=7==t?i.firstRow:i.lastRow+1;if(s>0&&s{Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeTable=void 0;var o=r(7582),n=r(1246),a=r(2347);function l(e){return e<=4?120:e<=6?100:70}function i(e,t){t.blocks.every((function(e){return"Paragraph"==e.blockType&&(0==(t=(t=e.segments).filter((function(e){return"SelectionMarker"!=e.segmentType}))).length||1==t.length&&"Br"==t[0].segmentType);var t}))||((0,a.arrayPush)(e.blocks,t.blocks),t.blocks=[])}t.normalizeTable=function(e,t){var r,a=e.format;a.borderCollapse&&a.useBorderBox||(a.borderCollapse=!0,a.useBorderBox=!0),e.rows.forEach((function(e,r){e.cells.forEach((function(e,o){0==e.blocks.length&&((0,n.addBlock)(e,(0,n.createParagraph)(void 0,void 0,t)),(0,n.addSegment)(e,(0,n.createBr)(t))),0==r?e.spanAbove=!1:r>0&&e.isHeader&&(e.isHeader=!1,delete e.cachedElement),0==o&&(e.spanLeft=!1),e.format.useBorderBox=!0})),e.height<22&&(e.height=22)}));for(var s=Math.max.apply(Math,(0,o.__spreadArray)([],(0,o.__read)(e.rows.map((function(e){return e.cells.length}))),!1)),c=0;c0;u--)d(u);for(var f=function(t){var r=e.rows[t];r.cells.forEach((function(r,o){var n,a=null===(n=e.rows[t-1])||void 0===n?void 0:n.cells[o];a&&r.spanAbove&&i(a,r)})),r.cells.every((function(e){return e.spanAbove}))&&(e.rows[t-1].height+=r.height,e.rows.splice(t,1))},m=e.rows.length-1;m>0;m--)f(m)}},3684:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.setTableCellBackgroundColor=void 0;var o=r(2347),n=r(860);t.setTableCellBackgroundColor=function(e,t,r){if(t){e.format.backgroundColor=t,r&&(0,n.updateTableCellMetadata)(e,(function(e){return(e=e||{}).bgColorOverride=!0,e}));var a=function(e){var t=(0,o.parseColor)(e);if(t){var r=t[0]/255,n=t[1]/255,a=t[2]/255;return 50*(Math.max(r,n,a)+Math.min(r,n,a))}return 255}(t);a<20?e.format.textColor="#ffffff":a>80?e.format.textColor="#000000":delete e.format.textColor}else delete e.format.backgroundColor,delete e.format.textColor;delete e.cachedElement}},3618:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.splitTableCellHorizontally=void 0;var o=r(7582),n=r(1246),a=r(5226);t.splitTableCellHorizontally=function(e){var t=(0,a.getSelectedCells)(e);if(t)for(var r=function(r){if(e.rows.every((function(e,o){var n;return ot.lastRow||(null===(n=e.cells[r+1])||void 0===n?void 0:n.spanLeft)})))e.rows.forEach((function(e,o){delete e.cells[r].cachedElement,o>=t.firstRow&&o<=t.lastRow&&(e.cells[r+1].spanLeft=!1,delete e.cells[r+1].cachedElement)}));else{e.rows.forEach((function(e,a){var l=e.cells[r];if(l){var i=(0,n.createTableCell)(l.spanLeft,l.spanAbove,l.isHeader,l.format);i.dataset=(0,o.__assign)({},l.dataset),at.lastRow?i.spanLeft=!0:i.isSelected=l.isSelected,e.cells.splice(r+1,0,i),delete e.cells[r].cachedElement}}));var a=Math.max(e.widths[r]/2,30);e.widths.splice(r,1,a,a)}},l=t.lastCol;l>=t.firstCol;l--)r(l)}},2242:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.splitTableCellVertically=void 0;var o=r(7582),n=r(1246),a=r(5226);t.splitTableCellVertically=function(e){var t=(0,a.getSelectedCells)(e);if(t)for(var r=t.lastRow;r>=t.firstRow;r--){var l=e.rows[r],i=e.rows[r+1];if(l.cells.forEach((function(e){delete e.cachedElement})),delete l.cachedElement,null==i?void 0:i.cells.every((function(e,r){return rt.lastCol||e.spanAbove})))i.cells.forEach((function(e,r){r>=t.firstCol&&r<=t.lastCol&&(e.spanAbove=!1,delete e.cachedElement)})),delete i.cachedElement;else{var s=Math.max(l.height/=2,22),c={format:(0,o.__assign)({},l.format),height:s,cells:l.cells.map((function(e,r){var a=(0,n.createTableCell)(e.spanLeft,e.spanAbove,e.isHeader,e.format);return a.dataset=(0,o.__assign)({},e.dataset),rt.lastCol?a.spanAbove=!0:a.isSelected=e.isSelected,a}))};l.height=s,e.rows.splice(r+1,0,c)}}}},5149:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(9842);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setAlignment",(function(e){return(0,n.setModelAlignment)(e,t)}))}},8365:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(5078);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setDirection",(function(e){return(0,n.setModelDirection)(e,t)}))}},2923:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(1246),a=r(9139);t.default=function(e,t){(0,a.formatParagraphWithContentModel)(e,"setHeadingLevel",(function(e){var r,a,l,i=t>0?"h"+t:(a=(null==(r=e.decorator)?void 0:r.tagName)||"",(l=parseInt(a.substring(1)))>=1&&l<=6?a:null),s=i&&n.defaultImplicitFormatMap[i]||{};t>0?(e.decorator={tagName:i,format:(0,o.__assign)({},s)},e.segments.forEach((function(e){delete e.format.fontSize,delete e.format.fontWeight}))):i&&delete e.decorator}))}},3721:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1246),a=r(687);t.default=function(e,t,r){(0,o.formatWithContentModel)(e,"setIndentation",(function(e){var o=(0,a.setModelIndentation)(e,t,r);return o&&(0,n.normalizeContentModel)(e),o}),{preservePendingFormat:!0})}},7339:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(9139);t.default=function(e,t,r){(0,n.formatParagraphWithContentModel)(e,"setParagraphMargin",(function(e){e.decorator||(e.decorator=(0,o.createParagraphDecorator)("p")),t?e.format.marginTop=t:null===t&&delete e.format.marginTop,r?e.format.marginBottom=r:null===r&&delete e.format.marginBottom}))}},9294:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(9139);t.default=function(e,t){(0,o.formatParagraphWithContentModel)(e,"setSpacing",(function(e){e.format.lineHeight=t.toString(),e.segments.forEach((function(e){e.format.lineHeight&&delete e.format.lineHeight}))}))}},1977:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(2511),a=r(6162),l={borderLeft:"3px solid rgb(200, 200, 200)",textColor:"rgb(102, 102, 102)"},i={marginTop:"1em",marginBottom:"1em",marginLeft:"40px",marginRight:"40px",paddingLeft:"10px"};t.default=function(e,t){void 0===t&&(t=l);var r=(0,o.__assign)((0,o.__assign)({},i),t);(0,n.formatWithContentModel)(e,"toggleBlockQuote",(function(e){return(0,a.toggleModelBlockQuote)(e,r)}),{preservePendingFormat:!0})}},5634:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2347),n=r(1685),a=r(473),l=r(2511),i=r(4040),s=r(3731),c=r(8689);t.default=function(e,t){var r=t.which;(0,l.formatWithContentModel)(e,46==r?"handleDeleteKey":"handleBackspaceKey",(function(r,l){var d=(0,a.deleteSelection)(r,function(e){var t=46==e.which;return[(0,i.shouldDeleteAllSegmentsBefore)(e)&&!t?n.deleteAllSegmentBefore:null,(0,i.shouldDeleteWord)(e,!!o.Browser.isMac)?t?s.forwardDeleteWordSelection:s.backwardDeleteWordSelection:null,t?c.forwardDeleteCollapsedSelection:c.backwardDeleteCollapsedSelection]}(t),l).deleteResult;return(0,i.handleKeyboardEventResult)(e,r,t,d,l)}),{rawEvent:t,changeSource:"Keyboard",getChangeData:function(){return r}})}},9894:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2347),n=r(1246),a=r(2511),l=r(9119);t.default=function(e,t,r,i,s){var c=s||{},d=c.contentNode,u=c.focusAfterEntity,f=c.wrapperDisplay,m=c.skipUndoSnapshot,p=e.getDocument().createElement(r?"div":"span"),v=null!=f?f:r?void 0:"inline-block";p.style.setProperty("display",v||null),d&&p.appendChild(d),(0,o.commitEntity)(p,t,!0);var g=(0,n.createEntity)(p,!0,t);(0,a.formatWithContentModel)(e,"insertEntity",(function(e,t){return(0,l.insertEntityModel)(e,g,"string"==typeof i?i:"focus",r,u,t),(0,n.normalizeContentModel)(e),t.skipUndoSnapshot=m,t.newEntities.push(g),!0}),{selectionOverride:"object"==typeof i?i:void 0});var h=(0,o.getEntityFromElement)(p);return e.triggerContentChangedEvent("InsertEntity",h),h}},1576:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(2511),a=r(2976),l=r(5098),i=r(1246);t.default=function(e,t){var r=(0,a.getPendingFormat)(e);if(r){var s=!1;(0,n.formatWithContentModel)(e,"applyPendingFormat",(function(e,n){return(0,l.iterateSelections)([e],(function(e,n,a,l){if("Paragraph"==(null==a?void 0:a.blockType)&&1==(null==l?void 0:l.length)&&"SelectionMarker"==l[0].segmentType){var c=l[0],d=a.segments.indexOf(c),u=a.segments[d-1];if("Text"==(null==u?void 0:u.segmentType)){var f=u.text,m=f.substr(-t.length,t.length);if(m==t||" "==t&&" "==m){c.format=(0,o.__assign)({},r),u.text=f.substring(0,f.length-t.length);var p=(0,i.createText)(" "==t?" ":t,(0,o.__assign)((0,o.__assign)({},u.format),r));a.segments.splice(d,0,p),(0,i.setParagraphNotImplicit)(a),s=!0}}}return!0})),s&&((0,i.normalizeContentModel)(e),n.skipUndoSnapshot=!0),s}))}}},2313:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(512),n=r(2511),a=r(1246);t.default=function(e){(0,n.formatWithContentModel)(e,"clearFormat",(function(e){var t=[],r=[],n=[];return(0,o.clearModelFormat)(e,t,r,n),(0,a.normalizeContentModel)(e),t.length>0||r.length>0||n.length>0}))}},7950:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.reducedModelChildProcessor=void 0;var o=r(7582),n=r(2347),a=r(2976),l=r(2812),i=r(2229),s=r(1246);function c(e,t,r){var a=(0,l.getSelectionRootNode)(r.rangeEx);if(a){r.nodeStack||(r.nodeStack=function(e,t){for(var r=[],o=t;o&&(0,n.contains)(e,o);)"TABLE"==(0,n.getTagOfNode)(o)?r.splice(0,r.length,o):r.push(o),o=o.parentNode;return r}(t,a));var i=r.nodeStack.pop();if(i){var c=(0,o.__read)((0,s.getRegularSelectionOffsets)(r,t),2),d=c[0],u=c[1],f=d>=0||u>=0?function(e,t){for(var r=0,o=e.firstChild;o&&o!=t;)r++,o=o.nextSibling;return r}(t,i):-1;f>=0&&(0,s.handleRegularSelection)(f,r,e,d,u),(0,s.processChildNode)(e,i,r),f>=0&&(0,s.handleRegularSelection)(f+1,r,e,d,u)}else r.defaultElementProcessors.child(e,t,r)}}t.default=function(e){var t=(0,a.getPendingFormat)(e),r=e.createContentModel({processorOverride:{child:c}}),n=(0,o.__assign)((0,o.__assign)({},e.getUndoState()),{isDarkMode:e.isDarkMode(),zoomScale:e.getZoomScale()});return(0,i.retrieveModelFormatState)(r,t,n),n},t.reducedModelChildProcessor=c},6623:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(5113),n=r(2511);t.default=function(e){var t=null;return(0,n.formatWithContentModel)(e,"adjustImageSelection",(function(e){return(0,o.adjustSegmentSelection)(e,(function(e){return!(!e.isSelected||"Image"!=e.segmentType||(t=e,0))}),(function(e,t){return e==t}))})),t}},8401:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154),n=r(2347);t.default=function(e,t){var r=e.getSelectionRangeEx();(0,n.readFile)(t,(function(t){t&&!e.isDisposed()&&2===r.type&&(0,o.default)(e,"changeImage",(function(e){e.src=t,e.dataset={},e.format.width="",e.format.height="",e.alt=""}),{image:r.image,previousSrc:r.image.src,newSrc:t,originalSrc:a(r.image)})}))};var a=function(e){var t=(0,n.getMetadata)(e);return t&&t.src||""}},2930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(2511),a=r(485),l=r(2347);function i(e,t){(0,n.formatWithContentModel)(e,"insertImage",(function(e,r){var n=(0,o.createImage)(t,{backgroundColor:""}),l=(0,o.createContentModelDocument)();return(0,o.addSegment)(l,n),(0,a.mergeModel)(e,l,r,{mergeFormat:"mergeAll"}),!0}))}t.default=function(e,t){"string"==typeof t?i(e,t):(0,l.readFile)(t,(function(t){t&&!e.isDisposed()&&i(e,t)}))}},2063:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154);t.default=function(e,t){(0,o.default)(e,"setImageAltText",(function(e){e.alt=t}))}},4653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1354),n=r(6154);t.default=function(e,t,r){(0,n.default)(e,"setImageBorder",(function(e){(0,o.default)(e,t,r)}))}},4735:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6154);t.default=function(e,t,r){(0,o.default)(e,"setImageBoxShadow",(function(e){e.format.boxShadow=t,r?(e.format.marginBottom=r,e.format.marginLeft=r,e.format.marginRight=r,e.format.marginTop=r):null===r&&(delete e.format.marginBottom,delete e.format.marginLeft,delete e.format.marginRight,delete e.format.marginTop)}))}},1270:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6331),n=r(5113),a=r(5294),l=r(2511),i=r(5736);t.default=function(e){var t="",r=null;return(0,l.formatWithContentModel)(e,"adjustLinkSelection",(function(e){var l,s,c=(0,n.adjustSegmentSelection)(e,(function(e){return!!e.isSelected&&!!e.link}),(function(e,t){return!!e.link&&e.link.format.href==t.link.format.href})),d=(0,o.default)(e,!1),u=d[0];return 1==d.length&&"SelectionMarker"==u.segmentType&&(d=(0,a.adjustWordSelection)(e,u)).length>1&&(c=!0,(0,i.setSelection)(e,d[0],d[d.length-1])),t=d.map((function(e){return"Text"==e.segmentType?e.text:""})).join(""),r=(null===(s=null===(l=d[0])||void 0===l?void 0:l.link)||void 0===s?void 0:s.format.href)||null,c})),[t,r]}},7058:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(6331),a=r(2511),l=r(2976),i=r(2347),s=r(485),c=r(1246),d=/^[a-zA-Z]+:/i,u=/^[\w.%+-]+@/i,f=/^ftp\./i;function m(e){if(!e)return e;var t="";return e.search(d)<0&&(t=0==e.search(u)?"mailto:":0==e.search(f)?"ftp://":"http://"),t+e}t.default=function(e,t,r,d,u){var f=(function(e){var t=new i.HtmlSanitizer,r=document.createElement("a");return r.href=e||"",t.sanitize(r),r.getAttribute("href")||""}(t)||"").trim();if(f){var p,v=(0,i.matchLink)(f),g={dataset:{},format:{href:v?v.normalizedUrl:m(f),anchorTitle:r,target:u,underline:!0}},h=[];(0,a.formatWithContentModel)(e,"insertLink",(function(t,r){var a,i=(0,n.default)(t,!1),u=i.map((function(e){return"Text"==e.segmentType?e.text:""})).join(""),m=d||u||"";if(i.some((function(e){return"SelectionMarker"!=e.segmentType}))&&u==m)i.forEach((function(e){(0,c.addLink)(e,g),e.link&&h.push(e.link)}));else if(i.every((function(e){return"SelectionMarker"==e.segmentType}))||m&&m!=u){var p=(0,c.createText)(m||(v?v.originalUrl:f),(0,o.__assign)((0,o.__assign)({},(null===(a=i[0])||void 0===a?void 0:a.format)||{}),(0,l.getPendingFormat)(e)||{})),b=(0,c.createContentModelDocument)();(0,c.addLink)(p,g),(0,c.addSegment)(b,p),p.link&&h.push(p.link),(0,s.mergeModel)(t,b,r,{mergeFormat:"mergeAll"})}return i.length>0}),{changeSource:"CreateLink",onNodeCreated:function(e,t){!p&&h.indexOf(e)>=0&&(p=t)},getChangeData:function(){return p}})}}},3932:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6331),n=r(5113),a=r(2511);t.default=function(e){(0,a.formatWithContentModel)(e,"removeLink",(function(e){(0,n.adjustSegmentSelection)(e,(function(e){return!!e.isSelected&&!!e.link}),(function(e,t){return e.isSelected||!!e.link&&e.link.format.href==t.link.format.href}));var t=(0,o.default)(e,!1),r=!1;return t.forEach((function(e){e.link&&(r=!0,delete e.link)})),r}))}},1123:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(5544);t.default=function(e,t){(0,o.formatWithContentModel)(e,"setListStartNumber",(function(e){var r=(0,n.getFirstSelectedListItem)(e),o=null==r?void 0:r.levels[(null==r?void 0:r.levels.length)-1];return!!o&&(o.format.startNumberOverride=t,!0)}))}},3e3:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2874),n=r(2511),a=r(5544),l=r(1246);t.default=function(e,t){(0,n.formatWithContentModel)(e,"setListStyle",(function(e){var r=(0,a.getFirstSelectedListItem)(e);if(r){var n=(0,o.findListItemsInSameThread)(e,r),i=r.levels.length-1;return n.forEach((function(e){var r=e.levels[i];r&&(0,l.updateListMetadata)(r,(function(e){return Object.assign({},e,t)}))})),!0}return!1}))}},58:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1567);t.default=function(e){(0,o.formatWithContentModel)(e,"toggleBullet",(function(e){return(0,n.setListType)(e,"UL")}),{preservePendingFormat:!0})}},4505:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(2511),n=r(1567);t.default=function(e){(0,o.formatWithContentModel)(e,"toggleNumbering",(function(e){return(0,n.setListType)(e,"OL")}),{preservePendingFormat:!0})}},4847:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"applySegmentFormat",(function(e){e.backgroundColor=t.backgroundColor,e.fontFamily=t.fontFamily,e.fontSize=t.fontSize,e.fontWeight=t.fontWeight,e.italic=t.italic,e.strikethrough=t.strikethrough,e.superOrSubScriptSequence=t.superOrSubScriptSequence,e.textColor=t.textColor,e.underline=t.underline}),void 0,!0)}},5284:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t,r){(0,o.formatSegmentWithContentModel)(e,"changeCapitalization",(function(e,o,n){if("Text"==(null==n?void 0:n.segmentType))switch(t){case"lowerCase":n.text=n.text.toLocaleLowerCase(r);break;case"upperCase":n.text=n.text.toLocaleUpperCase(r);break;case"capitalize":for(var a=n.text.toLocaleLowerCase(r).split(" "),l=0;l{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741),n=r(1246),a=[8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72];t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"changeFontSize",(function(e){return function(e,t){if(e.fontSize){var r=(0,n.parseValueWithUnit)(e.fontSize,void 0,"pt");if(r>0){var o=function(e,t,r){e=1==t?Math.floor(e):Math.ceil(e);var o=r[r.length-1];if(e<=r[0])e=Math.max(e+t,1);else if(e>o||e==o&&1==t)e/=10,e=1==t?Math.floor(e):Math.ceil(e),e=Math.min(Math.max(10*(e+t),o),1e3);else if(1==t){for(var n=0;n=0;n--)if(e>r[n]){e=r[n];break}return e}(r,"increase"==t?1:-1,a);e.fontSize=o+"pt"}}}(e,t)}),void 0,!0)}},5253:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(1741),a=r(5736);t.default=function(e,t){var r=null,l=-1;(0,n.formatSegmentWithContentModel)(e,"setBackgroundColor",(function(e,o,n,a){null===t?delete e.backgroundColor:e.backgroundColor=t,n&&a&&"SelectionMarker"!=n.segmentType&&(l=(r=a).segments.indexOf(n))}),void 0,void 0,(function(e){var t;if(r&&l>=0){var n=(0,o.createSelectionMarker)(null===(t=r.segments[l])||void 0===t?void 0:t.format);r.segments.splice(l+1,0,n),(0,a.setSelection)(e,n,n)}}))}},1250:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setFontName",(function(e,r,o){e.fontFamily=t,(null==o?void 0:o.code)&&(o.code.format.fontFamily=t)}),void 0,!0)}},5442:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setFontSize",(function(e){e.fontSize=t}),void 0,!0)}},9715:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t){(0,o.formatSegmentWithContentModel)(e,"setTextColor",null===t?function(e,t,r){delete e.textColor,(null==r?void 0:r.link)&&delete r.link.format.textColor}:function(e,r,o){e.textColor=t,(null==o?void 0:o.link)&&(o.link.format.textColor=t)},void 0,!0)}},5539:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBold=void 0;var o=r(1741);function n(e){return!!e&&("bold"==e||"bolder"==e||parseInt(e)>=600)}t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleBold",(function(e,t){e.fontWeight=t?"bold":"normal"}),(function(e,t,r){var o;return n(void 0===e.fontWeight?null===(o=null==r?void 0:r.decorator)||void 0===o?void 0:o.format.fontWeight:e.fontWeight)}))},t.isBold=n},1340:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1246),n=r(1741),a={format:{fontFamily:"monospace"}};t.default=function(e){(0,n.formatSegmentWithContentModel)(e,"toggleCode",(function(e,t,r){r&&(t?(0,o.addCode)(r,a):delete r.code)}),(function(e,t){return!!(null==t?void 0:t.code)}))}},3462:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleItalic",(function(e,t){e.italic=!!t}),(function(e){return!!e.italic}))}},5602:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleStrikethrough",(function(e,t){e.strikethrough=!!t}),(function(e){return!!e.strikethrough}))}},2494:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleSubscript",(function(e,t){e.superOrSubScriptSequence=t?"sub":""}),(function(e){var t;return"sub"==(null===(t=e.superOrSubScriptSequence)||void 0===t?void 0:t.split(" ").pop())}))}},1308:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleSuperscript",(function(e,t){e.superOrSubScriptSequence=t?"super":""}),(function(e){var t;return"super"==(null===(t=e.superOrSubScriptSequence)||void 0===t?void 0:t.split(" ").pop())}))}},3679:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e){(0,o.formatSegmentWithContentModel)(e,"toggleUnderline",(function(e,t,r){e.underline=!!t,(null==r?void 0:r.link)&&(r.link.format.underline=!!t)}),(function(e,t){var r,o;return!!e.underline||!!(null===(o=null===(r=null==t?void 0:t.link)||void 0===r?void 0:r.format)||void 0===o?void 0:o.underline)}))}},6331:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(5544);t.default=function(e,t){return(0,o.getSelectedSegmentsAndParagraphs)(e,t).map((function(e){return e[0]}))}},6516:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7536),n=r(5676);t.default=function(e){switch(e.blockType){case"Paragraph":return e.segments.some(n.default);case"Table":return e.rows.some((function(e){return e.cells.some(o.default)}));case"BlockGroup":return(0,o.default)(e);case"Divider":case"Entity":return!!e.isSelected;default:return!1}}},7536:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6516);t.default=function(e){return!("TableCell"!=e.blockGroupType||!e.isSelected)||!!e.blocks.some(o.default)}},5676:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(6516);t.default=function(e){return e.isSelected||"General"==e.segmentType&&e.blocks.some(o.default)}},959:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(6516),a=r(6682),l=r(7691),i=r(4158),s=r(6893),c=r(629),d=r(4054),u=r(9073),f=r(2511),m=r(5544),p=r(7350),v=r(9457),g=r(8509),h=r(4765),b=r(2806),y=r(1303),_=r(5736),C=r(3618),P=r(2242),k=r(1246);t.default=function(e,t){(0,f.formatWithContentModel)(e,"editTable",(function(e){var r=(0,o.__read)((0,m.getFirstSelectedTable)(e),2),f=r[0],S=r[1];if(f){switch(t){case 17:case 18:case 19:case 20:case 21:case 22:(0,l.alignTableCell)(f,t);break;case 14:case 15:case 16:(0,a.alignTable)(f,t);break;case 5:(0,c.deleteTableColumn)(f);break;case 6:(0,d.deleteTableRow)(f);break;case 4:(0,s.deleteTable)(f);break;case 0:case 1:(0,v.insertTableRow)(f,t);break;case 2:case 3:(0,p.insertTableColumn)(f,t);break;case 7:case 8:(0,b.mergeTableRow)(f,t);break;case 11:(0,g.mergeTableCells)(f);break;case 9:case 10:(0,h.mergeTableColumn)(f,t);break;case 12:(0,C.splitTableCellHorizontally)(f);break;case 13:(0,P.splitTableCellVertically)(f)}if(!(0,n.default)(f)){var O=(0,u.ensureFocusableParagraphForTable)(e,S,f);if(O){var M=(0,k.createSelectionMarker)(e.format);O.segments.unshift(M),(0,k.setParagraphNotImplicit)(O),(0,_.setSelection)(e,M)}}return(0,y.normalizeTable)(f),(0,k.hasMetadata)(f)&&(0,i.applyTableFormat)(f,void 0,!0),!0}return!1}))}},2435:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(4158),a=r(2511),l=r(5544);t.default=function(e,t,r){(0,a.formatWithContentModel)(e,"formatTable",(function(e){var a=(0,o.__read)((0,l.getFirstSelectedTable)(e),1)[0];return!!a&&((0,n.applyTableFormat)(a,t,r),!0)}))}},6901:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(4158),n=r(1246),a=r(2969),l=r(473),i=r(2511),s=r(2976),c=r(485),d=r(1303),u=r(5736);t.default=function(e,t,r,f){(0,i.formatWithContentModel)(e,"insertTable",(function(i,m){var p,v,g,h=(0,l.deleteSelection)(i,[],m).insertPoint;if(h){var b=(0,n.createContentModelDocument)(),y=(0,a.createTableStructure)(b,t,r);(0,d.normalizeTable)(y,(0,s.getPendingFormat)(e)||h.marker.format),f=f||{verticalAlign:"top"},(0,o.applyTableFormat)(y,f),(0,c.mergeModel)(i,b,m,{insertPosition:h,mergeFormat:"mergeAll"});var _=null===(v=null===(p=y.rows[0])||void 0===p?void 0:p.cells[0])||void 0===v?void 0:v.blocks[0];if("Paragraph"==(null==_?void 0:_.blockType)){var C=(0,n.createSelectionMarker)(null===(g=_.segments[0])||void 0===g?void 0:g.format);_.segments.unshift(C),(0,u.setSelection)(i,C)}return!0}return!1}))}},7783:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),n=r(7536),a=r(2511),l=r(5544),i=r(1303),s=r(3684);t.default=function(e,t){(0,a.formatWithContentModel)(e,"setTableCellShade",(function(e){var r=(0,o.__read)((0,l.getFirstSelectedTable)(e),1)[0];return!!r&&((0,i.normalizeTable)(r),r.rows.forEach((function(e){return e.cells.forEach((function(e){(0,n.default)(e)&&(0,s.setTableCellBackgroundColor)(e,t,!0)}))})),!0)}))}},6154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(1741);t.default=function(e,t,r,n){(0,o.formatSegmentWithContentModel)(e,t,(function(t,o,a){"Image"==(null==a?void 0:a.segmentType)&&(r(a),n&&e.triggerPluginEvent(19,n))}),void 0,void 0)}},9139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatParagraphWithContentModel=void 0;var o=r(2511),n=r(5544);t.formatParagraphWithContentModel=function(e,t,r){(0,o.formatWithContentModel)(e,t,(function(e){var t=(0,n.getSelectedParagraphs)(e);return t.forEach(r),t.length>0}),{preservePendingFormat:!0})}},1741:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatSegmentWithContentModel=void 0;var o=r(7582),n=r(5294),a=r(2511),l=r(2976),i=r(5544);t.formatSegmentWithContentModel=function(e,t,r,s,c,d){(0,a.formatWithContentModel)(e,t,(function(t){var a=(0,i.getSelectedSegmentsAndParagraphs)(t,!!c),u=(0,l.getPendingFormat)(e),f=1==a.length&&"SelectionMarker"==a[0][0].segmentType;if(f){var m=a[0][1];(a=(0,n.adjustWordSelection)(t,a[0][0]).map((function(e){return[e,m]}))).length>1&&(f=!1)}var p=u?[[u,null,null]]:a.map((function(e){return[e[0].format,e[0],e[1]]})),v=!!s&&p.every((function(e){var t=(0,o.__read)(e,3),r=t[0],n=t[1],a=t[2];return s(r,n,a)}));if(p.forEach((function(e){var t=(0,o.__read)(e,3),n=t[0],a=t[1],l=t[2];return r(n,!v,a,l)})),null==d||d(t),!u&&f){var g=e.getFocusedPosition();g&&(0,l.setPendingFormat)(e,a[0][0].format,g)}return f?(e.focus(),!1):p.length>0}))}},2511:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.formatWithContentModel=void 0;var o=r(2976);t.formatWithContentModel=function(e,t,r,n){var a,l=n||{},i=l.onNodeCreated,s=l.preservePendingFormat,c=l.getChangeData,d=l.changeSource,u=l.rawEvent,f=l.selectionOverride;e.focus();var m=e.createContentModel(void 0,f),p={newEntities:[],deletedEntities:[],rawEvent:u};if(r(m,p)){var v=function(){if(function(e,t){e.isDarkMode()&&t.newEntities.forEach((function(t){e.transformToDarkColor(t.wrapper)}))}(e,p),function(e,t){t.deletedEntities.forEach((function(r){var o=r.entity,n=r.operation;o.id&&o.type&&e.triggerPluginEvent(15,{entity:{id:o.id,isReadonly:o.isReadonly,type:o.type,wrapper:o.wrapper},operation:n,rawEvent:t.rawEvent})}))}(e,p),m&&e.setContentModel(m,{onNodeCreated:i}),s){var t=(0,o.getPendingFormat)(e),r=e.getFocusedPosition();t&&r&&(0,o.setPendingFormat)(e,t,r)}return null==c?void 0:c()};if(p.skipUndoSnapshot){var g=v();d&&e.triggerContentChangedEvent(d,g)}else e.addUndoSnapshot(v,d||"Format",!1,{formatApiName:t});null===(a=e.cacheContentModel)||void 0===a||a.call(e,m)}}},5915:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mergePasteContent=void 0;var o=r(7582),n=r(1246),a=r(2511),l=r(485),i=r(2347);function s(e,t,r,o,n){return n?n(e,r):(0,l.mergeModel)(e,r,t,{mergeFormat:o?"keepSourceEmphasisFormat":"none",mergeTable:c(r)}),!0}function c(e){return 2==e.blocks.length&&"Table"===e.blocks[0].blockType&&"Paragraph"===e.blocks[1].blockType&&1===e.blocks[1].segments.length&&"Br"===e.blocks[1].segments[0].segmentType&&e.blocks.splice(1),1===e.blocks.length&&"Table"===e.blocks[0].blockType}t.default=function(e,t,r,l,c){void 0===r&&(r=!1),void 0===l&&(l=!1),void 0===c&&(c=!1),t.snapshotBeforePaste?e.setContent(t.snapshotBeforePaste):t.snapshotBeforePaste=e.getContent(2);var d=function(e,t,r){var o=(0,i.createDefaultHtmlSanitizerOptions)();return o.cssStyleCallbacks["caret-color"]=function(){return!1},{clipboardData:t,fragment:e.getDocument().createDocumentFragment(),sanitizingOption:o,htmlBefore:"",htmlAfter:"",htmlAttributes:{},domToModelOption:{},pasteType:r}}(e,t,(0,i.getPasteType)(r,l,c)),u=function(e,t,r,n,a,l){var s=(0,o.__assign)({eventType:10},l),c=s.fragment,d=t.rawHtml,u=t.text,f=t.imageDataUri,m=e.getTrustedHTMLHandler(),p=d?(new DOMParser).parseFromString(m(d),"text/html"):void 0;(0,i.retrieveMetadataFromClipboard)(p,s,m),a&&f||!n&&!u&&f?(0,i.handleImagePaste)(f,c):!n&&d&&p&&p.body?(0,i.moveChildNodes)(c,null==p?void 0:p.body):u&&(0,i.handleTextPaste)(u,null,c);var v=s;return 1!==s.pasteType&&(v=e.triggerPluginEvent(10,s,!0)),(0,i.sanitizePasteContent)(s,null),v}(e,t,0,r,c,d),f=u.domToModelOption,m=u.fragment,p=u.customizedMerge,v=(0,n.domToContentModel)(m,f);v&&(0,a.formatWithContentModel)(e,"Paste",(function(e,t){return s(e,t,v,l,p)}),{changeSource:"Paste",getChangeData:function(){return t}})},t.mergePasteContent=s},398:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},1533:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelEditor=void 0;var o=r(2347),n=r(3247);t.createContentModelEditor=function(e,t,r){var a=[new n.ContentModelPastePlugin];t&&(a=a.concat(t));var l={plugins:a,initialContent:r,getDarkColor:o.getDarkColor,defaultFormat:{fontFamily:"Calibri,Arial,Helvetica,sans-serif",fontSize:"11pt",textColor:"#000000"}};return new n.ContentModelEditor(e,l)}},2594:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createContentModelEditor=void 0;var o=r(7582),n=r(1533);Object.defineProperty(t,"createContentModelEditor",{enumerable:!0,get:function(){return n.createContentModelEditor}}),(0,o.__exportStar)(r(398),t),(0,o.__exportStar)(r(1246),t),(0,o.__exportStar)(r(3247),t)},2347:e=>{e.exports=roosterjs},7582:(e,t,r)=>{r.r(t),r.d(t,{__assign:()=>a,__asyncDelegator:()=>O,__asyncGenerator:()=>S,__asyncValues:()=>M,__await:()=>k,__awaiter:()=>p,__classPrivateFieldGet:()=>E,__classPrivateFieldIn:()=>B,__classPrivateFieldSet:()=>j,__createBinding:()=>g,__decorate:()=>i,__esDecorate:()=>c,__exportStar:()=>h,__extends:()=>n,__generator:()=>v,__importDefault:()=>x,__importStar:()=>F,__makeTemplateObject:()=>T,__metadata:()=>m,__param:()=>s,__propKey:()=>u,__read:()=>y,__rest:()=>l,__runInitializers:()=>d,__setFunctionName:()=>f,__spread:()=>_,__spreadArray:()=>P,__spreadArrays:()=>C,__values:()=>b,default:()=>L});var o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},o(e,t)};function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var a=function(){return a=Object.assign||function(e){for(var t,r=1,o=arguments.length;r=0;i--)(n=e[i])&&(l=(a<3?n(l):a>3?n(t,r,l):n(t,r))||l);return a>3&&l&&Object.defineProperty(t,r,l),l}function s(e,t){return function(r,o){t(r,o,e)}}function c(e,t,r,o,n,a){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,s=o.kind,c="getter"===s?"get":"setter"===s?"set":"value",d=!t&&e?o.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,o.name):{}),f=!1,m=r.length-1;m>=0;m--){var p={};for(var v in o)p[v]="access"===v?{}:o[v];for(var v in o.access)p.access[v]=o.access[v];p.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");a.push(l(e||null))};var g=(0,r[m])("accessor"===s?{get:u.get,set:u.set}:u[c],p);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(i=l(g.get))&&(u.get=i),(i=l(g.set))&&(u.set=i),(i=l(g.init))&&n.unshift(i)}else(i=l(g))&&("field"===s?n.unshift(i):u[c]=i)}d&&Object.defineProperty(d,o.name,u),f=!0}function d(e,t,r){for(var o=arguments.length>2,n=0;n0&&n[n.length-1])||6!==i[0]&&2!==i[0])){l=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,a=r.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(o=a.next()).done;)l.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return l}function _(){for(var e=[],t=0;t1||i(e,t)}))})}function i(e,t){try{(r=n[e](t)).value instanceof k?Promise.resolve(r.value.v).then(s,c):d(a[0][2],r)}catch(e){d(a[0][3],e)}var r}function s(e){i("next",e)}function c(e){i("throw",e)}function d(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}}function O(e){var t,r;return t={},o("next"),o("throw",(function(e){throw e})),o("return"),t[Symbol.iterator]=function(){return this},t;function o(o,n){t[o]=e[o]?function(t){return(r=!r)?{value:k(e[o](t)),done:!1}:n?n(t):t}:n}}function M(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(r){t[r]=e[r]&&function(t){return new Promise((function(o,n){!function(e,t,r,o){Promise.resolve(o).then((function(t){e({value:t,done:r})}),t)}(o,n,(t=e[r](t)).done,t.value)}))}}}function T(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var w=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function F(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&g(t,e,r);return w(t,e),t}function x(e){return e&&e.__esModule?e:{default:e}}function E(e,t,r,o){if("a"===r&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?o:"a"===r?o.call(e):o?o.value:t.get(e)}function j(e,t,r,o,n){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?n.call(e,r):n?n.value=r:t.set(e,r),r}function B(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}const L={__extends:n,__assign:a,__rest:l,__decorate:i,__param:s,__metadata:m,__awaiter:p,__generator:v,__createBinding:g,__exportStar:h,__values:b,__read:y,__spread:_,__spreadArrays:C,__spreadArray:P,__await:k,__asyncGenerator:S,__asyncDelegator:O,__asyncValues:M,__makeTemplateObject:T,__importStar:F,__importDefault:x,__classPrivateFieldGet:E,__classPrivateFieldSet:j,__classPrivateFieldIn:B}}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o=r(2594);roosterjsContentModel=o})(); //# sourceMappingURL=rooster-content-model-min.js.map \ No newline at end of file diff --git a/rooster-content-model-min.js.map b/rooster-content-model-min.js.map index 4ca47ce896b..0c8b814ae79 100644 --- a/rooster-content-model-min.js.map +++ b/rooster-content-model-min.js.map @@ -1 +1 @@ -{"version":3,"file":"rooster-content-model-min.js","mappings":"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","sources":["webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/index.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/index.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/editTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/formatTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/insertTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model/lib/createContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model/lib/index.ts","webpack://roosterjsContentModel/external var \"roosterjs\"","webpack://roosterjsContentModel/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjsContentModel/webpack/bootstrap","webpack://roosterjsContentModel/webpack/runtime/define property getters","webpack://roosterjsContentModel/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjsContentModel/webpack/runtime/make namespace object","webpack://roosterjsContentModel/webpack/startup"],"sourcesContent":["import { defaultFormatParsers, getFormatParsers } from '../../formatHandlers/defaultFormatHandlers';\nimport { defaultProcessorMap } from './defaultProcessors';\nimport { defaultStyleMap } from '../../formatHandlers/utils/defaultStyles';\nimport { DomToModelContext, DomToModelOption, EditorContext } from 'roosterjs-content-model-types';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\n\n/**\n * Create context object form DOM to Content Model conversion\n * @param editorContext Context of editor\n * @param options Options for this context\n * @param selection Selection that already exists in content\n */\nexport function createDomToModelContext(\n editorContext?: EditorContext,\n options?: DomToModelOption,\n selection?: SelectionRangeEx\n): DomToModelContext {\n const context: DomToModelContext = {\n ...editorContext,\n\n blockFormat: {},\n segmentFormat: {},\n isInSelection: false,\n\n listFormat: {\n levels: [],\n threadItemCounts: [],\n },\n link: {\n format: {},\n dataset: {},\n },\n code: {\n format: {},\n },\n blockDecorator: {\n format: {},\n tagName: '',\n },\n\n elementProcessors: {\n ...defaultProcessorMap,\n ...(options?.processorOverride || {}),\n },\n\n defaultStyles: {\n ...defaultStyleMap,\n ...(options?.defaultStyleOverride || {}),\n },\n\n formatParsers: getFormatParsers(\n options?.formatParserOverride,\n options?.additionalFormatParsers\n ),\n\n defaultElementProcessors: defaultProcessorMap,\n defaultFormatParsers: defaultFormatParsers,\n };\n\n if (editorContext?.isRootRtl) {\n context.blockFormat.direction = 'rtl';\n }\n\n if (selection) {\n context.rangeEx = selection;\n }\n\n return context;\n}\n","import { brProcessor } from '../processors/brProcessor';\nimport { childProcessor } from '../processors/childProcessor';\nimport { codeProcessor } from '../processors/codeProcessor';\nimport { delimiterProcessor } from '../processors/delimiterProcessor';\nimport { elementProcessor } from '../processors/elementProcessor';\nimport { ElementProcessorMap } from 'roosterjs-content-model-types';\nimport { entityProcessor } from '../processors/entityProcessor';\nimport { fontProcessor } from '../processors/fontProcessor';\nimport { formatContainerProcessor } from '../processors/formatContainerProcessor';\nimport { generalProcessor } from '../processors/generalProcessor';\nimport { headingProcessor } from '../processors/headingProcessor';\nimport { hrProcessor } from '../processors/hrProcessor';\nimport { imageProcessor } from '../processors/imageProcessor';\nimport { knownElementProcessor } from '../processors/knownElementProcessor';\nimport { linkProcessor } from '../processors/linkProcessor';\nimport { listItemProcessor } from '../processors/listItemProcessor';\nimport { listProcessor } from '../processors/listProcessor';\nimport { pProcessor } from '../processors/pProcessor';\nimport { tableProcessor } from '../processors/tableProcessor';\nimport { textProcessor } from '../processors/textProcessor';\n\n/**\n * @internal\n */\nexport const defaultProcessorMap: ElementProcessorMap = {\n a: linkProcessor,\n b: knownElementProcessor,\n blockquote: knownElementProcessor,\n br: brProcessor,\n code: codeProcessor,\n div: knownElementProcessor,\n em: knownElementProcessor,\n font: fontProcessor,\n i: knownElementProcessor,\n img: imageProcessor,\n h1: headingProcessor,\n h2: headingProcessor,\n h3: headingProcessor,\n h4: headingProcessor,\n h5: headingProcessor,\n h6: headingProcessor,\n hr: hrProcessor,\n li: listItemProcessor,\n ol: listProcessor,\n p: pProcessor,\n pre: formatContainerProcessor,\n s: knownElementProcessor,\n section: knownElementProcessor,\n span: knownElementProcessor,\n strike: knownElementProcessor,\n strong: knownElementProcessor,\n sub: knownElementProcessor,\n sup: knownElementProcessor,\n table: tableProcessor,\n u: knownElementProcessor,\n ul: listProcessor,\n\n '*': generalProcessor,\n '#text': textProcessor,\n element: elementProcessor,\n entity: entityProcessor,\n child: childProcessor,\n delimiter: delimiterProcessor,\n};\n","import { createContentModelDocument } from '../modelApi/creators/createContentModelDocument';\nimport { createDomToModelContext } from './context/createDomToModelContext';\nimport { normalizeContentModel } from '../modelApi/common/normalizeContentModel';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport {\n ContentModelDocument,\n DomToModelOption,\n EditorContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create Content Model from DOM tree in this editor\n * @param root Root element of DOM tree to create Content Model from\n * @param option The option to customize the behavior of DOM to Content Model conversion\n * @param editorContext Context of content model editor\n * @param selection Existing selection range in editor\n * @returns A ContentModelDocument object that contains all the models created from the give root element\n */\nexport function domToContentModel(\n root: HTMLElement | DocumentFragment,\n option?: DomToModelOption,\n editorContext?: EditorContext,\n selection?: SelectionRangeEx\n): ContentModelDocument {\n const model = createContentModelDocument(editorContext?.defaultFormat);\n const context = createDomToModelContext(editorContext, option, selection);\n\n context.elementProcessors.child(model, root, context);\n\n normalizeContentModel(model);\n\n return model;\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { ContextStyles } from './formatContainerProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { parseFormat } from '../utils/parseFormat';\nimport {\n ContentModelBlockGroup,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport function blockProcessor(\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext,\n segmentFormat?: ContentModelSegmentFormat\n) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const blockFormat = { ...context.blockFormat };\n\n parseFormat(element, context.formatParsers.container, blockFormat, context);\n\n ContextStyles.forEach(style => {\n if (blockFormat[style]) {\n context.blockFormat[style] = blockFormat[style];\n }\n });\n\n if (!isSegmentDecorator) {\n const paragraph = createParagraph(\n false /*isImplicit*/,\n blockFormat,\n segmentFormat,\n decorator\n );\n\n addBlock(group, paragraph);\n }\n\n context.elementProcessors.child(group, element, context);\n}\n","import { addSegment } from '../../modelApi/common/addSegment';\nimport { createBr } from '../../modelApi/creators/createBr';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const brProcessor: ElementProcessor = (group, element, context) => {\n const br = createBr(context.segmentFormat);\n\n if (context.isInSelection) {\n br.isSelected = true;\n }\n\n addSegment(group, br, context.blockFormat);\n};\n","import { addSelectionMarker } from '../utils/addSelectionMarker';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType, SelectionRangeTypes } from 'roosterjs-editor-types';\nimport {\n ContentModelBlockGroup,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * Content Model Element Processor for child elements\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const childProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n parent: ParentNode,\n context: DomToModelContext\n) => {\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, parent);\n let index = 0;\n\n for (let child = parent.firstChild; child; child = child.nextSibling) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n\n processChildNode(group, child, context);\n\n index++;\n }\n\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n};\n\n/**\n * Helper function for processing child node\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n *\n */\nexport function processChildNode(\n group: ContentModelBlockGroup,\n child: Node,\n context: DomToModelContext\n) {\n if (isNodeOfType(child, NodeType.Element) && child.style.display != 'none') {\n context.elementProcessors.element(group, child, context);\n } else if (isNodeOfType(child, NodeType.Text)) {\n context.elementProcessors['#text'](group, child, context);\n }\n}\n\n/**\n * Helper function to handle regular (range based) selection when process child node\n * @param index Index of current child node in its parent\n * @param context DOM to Content Model context\n * @param group The parent block group\n * @param nodeStartOffset Start offset of current regular selection\n * @param nodeEndOffset End offset of current regular selection\n */\nexport function handleRegularSelection(\n index: number,\n context: DomToModelContext,\n group: ContentModelBlockGroup,\n nodeStartOffset: number,\n nodeEndOffset: number\n) {\n if (index == nodeStartOffset) {\n context.isInSelection = true;\n\n addSelectionMarker(group, context);\n }\n\n if (index == nodeEndOffset && context.rangeEx?.type == SelectionRangeTypes.Normal) {\n if (!context.rangeEx.areAllCollapsed) {\n addSelectionMarker(group, context);\n }\n context.isInSelection = false;\n }\n}\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const codeProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(context, { code: 'codeDefault' }, () => {\n parseFormat(element, context.formatParsers.code, context.code.format, context);\n\n knownElementProcessor(group, element, context);\n });\n};\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { handleRegularSelection } from './childProcessor';\n\n/**\n * @internal\n * @param group\n * @param element\n * @param context\n */\nexport const delimiterProcessor: ElementProcessor = (group, element, context) => {\n let index = 0;\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, element);\n\n for (let child = element.firstChild; child; child = child.nextSibling) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n\n delimiterProcessor(group, child, context);\n index++;\n }\n\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n};\n","import { getDelimiterFromElement, getEntityFromElement } from 'roosterjs-editor-dom';\nimport {\n DomToModelContext,\n ElementProcessor,\n ElementProcessorMap,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * @param group\n * @param element\n * @param context\n */\nexport const elementProcessor: ElementProcessor = (group, element, context) => {\n const tagName = element.tagName.toLowerCase() as keyof ElementProcessorMap;\n const processor = (tryGetProcessorForEntity(element, context) ||\n tryGetProcessorForDelimiter(element, context) ||\n context.elementProcessors[tagName] ||\n (tagName.indexOf(':') >= 0 && context.elementProcessors.child) ||\n context.elementProcessors['*']) as ElementProcessor;\n processor(group, element, context);\n};\n\nfunction tryGetProcessorForEntity(element: HTMLElement, context: DomToModelContext) {\n return (element.className && getEntityFromElement(element)) ||\n element.contentEditable == 'false' // For readonly element, treat as an entity\n ? context.elementProcessors.entity\n : null;\n}\n\nfunction tryGetProcessorForDelimiter(element: Node, context: DomToModelContext) {\n return getDelimiterFromElement(element) ? context.elementProcessors.delimiter : null;\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createEntity } from '../../modelApi/creators/createEntity';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { getEntityFromElement } from 'roosterjs-editor-dom';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * Content Model Element Processor for entity\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const entityProcessor: ElementProcessor = (group, element, context) => {\n const entity = getEntityFromElement(element);\n\n // In Content Model we also treat read only element as an entity since we cannot edit it\n const { id, type, isReadonly } = entity || { isReadonly: true };\n const isBlockEntity = isBlockElement(element, context);\n\n stackFormat(\n context,\n { segment: isBlockEntity ? 'empty' : undefined, paragraph: 'empty' },\n () => {\n const entityModel = createEntity(element, isReadonly, type, context.segmentFormat, id);\n\n // TODO: Need to handle selection for editable entity\n if (context.isInSelection) {\n entityModel.isSelected = true;\n }\n\n if (isBlockEntity) {\n addBlock(group, entityModel);\n } else {\n addSegment(group, entityModel);\n }\n }\n );\n};\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\nconst FontSizes = ['10px', '13px', '16px', '18px', '24px', '32px', '48px'];\n\nfunction getFontSize(size: string | null) {\n const intSize = parseInt(size || '');\n\n if (Number.isNaN(intSize)) {\n return undefined;\n } else if (intSize < 1) {\n return FontSizes[0];\n } else if (intSize > FontSizes.length) {\n return FontSizes[FontSizes.length - 1];\n } else {\n return FontSizes[intSize - 1];\n }\n}\n\n/**\n * @internal\n */\nexport const fontProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n {\n segment: isBlockElement(element, context) ? 'shallowCloneForBlock' : 'shallowClone',\n },\n () => {\n const fontFamily = element.getAttribute('face');\n const fontSize = getFontSize(element.getAttribute('size'));\n const textColor = element.getAttribute('color');\n const format = context.segmentFormat;\n\n if (fontFamily) {\n format.fontFamily = fontFamily;\n }\n\n if (fontSize) {\n format.fontSize = fontSize;\n }\n\n if (textColor) {\n format.textColor = textColor;\n }\n\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n context.elementProcessors.child(group, element, context);\n }\n );\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createFormatContainer } from '../../modelApi/creators/createFormatContainer';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { getDefaultStyle } from '../utils/getDefaultStyle';\nimport { parseFormat } from '../utils/parseFormat';\nimport { setParagraphNotImplicit } from '../../modelApi/block/setParagraphNotImplicit';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n ContentModelParagraph,\n ElementProcessor,\n MarginFormat,\n PaddingFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const ContextStyles: (keyof (MarginFormat & PaddingFormat))[] = [\n 'marginLeft',\n 'marginRight',\n 'paddingLeft',\n 'paddingRight',\n];\n\n/**\n * @internal\n */\nexport const formatContainerProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n stackFormat(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, () => {\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n\n const format: ContentModelFormatContainerFormat = {\n ...context.blockFormat,\n };\n\n parseFormat(element, context.formatParsers.container, format, context);\n\n const tagName =\n getDefaultStyle(element, context).display == 'block'\n ? element.tagName.toLowerCase()\n : 'div';\n const formatContainer = createFormatContainer(tagName, format);\n\n // It is possible to inherit margin left/right styles from parent DIV or other containers,\n // since we are going into a deeper level of format container now,\n // the container will render these styles so no need to keep them in context format\n ContextStyles.forEach(style => {\n delete context.blockFormat[style];\n });\n\n context.elementProcessors.child(formatContainer, element, context);\n\n if (element.style.fontSize && parseInt(element.style.fontSize) == 0) {\n formatContainer.zeroFontSize = true;\n }\n\n if (shouldFallbackToParagraph(formatContainer)) {\n // For DIV container that only has one paragraph child, container style can be merged into paragraph\n // and no need to have this container\n const paragraph = formatContainer.blocks[0] as ContentModelParagraph;\n\n if (formatContainer.zeroFontSize) {\n paragraph.segmentFormat = Object.assign({}, paragraph.segmentFormat, {\n fontSize: '0',\n });\n }\n\n Object.assign(paragraph.format, formatContainer.format);\n setParagraphNotImplicit(paragraph);\n addBlock(group, paragraph);\n } else {\n addBlock(group, formatContainer);\n }\n });\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n\nfunction shouldFallbackToParagraph(formatContainer: ContentModelFormatContainer) {\n const firstChild = formatContainer.blocks[0];\n\n return (\n formatContainer.tagName == 'div' &&\n formatContainer.blocks.length == 1 &&\n firstChild.blockType == 'Paragraph' &&\n firstChild.isImplicit\n );\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createGeneralBlock } from '../../modelApi/creators/createGeneralBlock';\nimport { createGeneralSegment } from '../../modelApi/creators/createGeneralSegment';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { stackFormat } from '../utils/stackFormat';\n\nconst generalBlockProcessor: ElementProcessor = (group, element, context) => {\n const block = createGeneralBlock(element);\n const isSelectedBefore = context.isInSelection;\n\n stackFormat(\n context,\n {\n segment: 'empty',\n paragraph: 'empty',\n link: 'empty',\n },\n () => {\n addBlock(group, block);\n\n context.elementProcessors.child(block, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n block.isSelected = true;\n }\n};\n\nconst generalSegmentProcessor: ElementProcessor = (group, element, context) => {\n const segment = createGeneralSegment(element, context.segmentFormat);\n const isSelectedBefore = context.isInSelection;\n\n addDecorators(segment, context);\n addSegment(group, segment);\n\n stackFormat(\n context,\n {\n segment:\n 'empty' /*clearFormat, General segment will include all properties and styles when generate back to HTML, so no need to carry over existing segment format*/,\n },\n () => {\n context.elementProcessors.child(segment, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n segment.isSelected = true;\n }\n};\n\n/**\n * @internal\n */\nexport const generalProcessor: ElementProcessor = (group, element, context) => {\n const processor = isBlockElement(element, context)\n ? generalBlockProcessor\n : generalSegmentProcessor;\n\n processor(group, element, context);\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { ContentModelSegmentFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { createParagraphDecorator } from '../../modelApi/creators/createParagraphDecorator';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const headingProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n { segment: 'shallowCloneForBlock', paragraph: 'shallowClone', blockDecorator: 'empty' },\n () => {\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n\n // These formats are already declared on heading element, no need to keep them in context.\n // And we should not duplicate them in context, either. Because when we want to turn off heading,\n // inner text should not keep those text format from heading.\n getObjectKeys(segmentFormat).forEach(key => {\n delete context.segmentFormat[key];\n });\n\n context.blockDecorator = createParagraphDecorator(element.tagName, segmentFormat);\n\n blockProcessor(group, element, context);\n }\n );\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createDivider } from '../../modelApi/creators/createDivider';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const hrProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n {\n paragraph: 'shallowClone',\n },\n () => {\n parseFormat(element, context.formatParsers.divider, context.blockFormat, context);\n\n const hr = createDivider('hr', context.blockFormat);\n\n if (element.size) {\n hr.size = element.size;\n }\n\n if (context.isInSelection) {\n hr.isSelected = true;\n }\n\n addBlock(group, hr);\n }\n );\n};\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { ContentModelImageFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createImage } from '../../modelApi/creators/createImage';\nimport { parseFormat } from '../utils/parseFormat';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const imageProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(context, { segment: 'shallowClone' }, () => {\n const imageFormat: ContentModelImageFormat = context.segmentFormat;\n\n parseFormat(element, context.formatParsers.segment, imageFormat, context);\n parseFormat(element, context.formatParsers.image, imageFormat, context);\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const image = createImage(element.src, imageFormat);\n const alt = element.alt;\n const title = element.title;\n\n parseFormat(element, context.formatParsers.dataset, image.dataset, context);\n addDecorators(image, context);\n\n if (alt) {\n image.alt = alt;\n }\n if (title) {\n image.title = title;\n }\n if (context.isInSelection) {\n image.isSelected = true;\n }\n if (\n context.rangeEx?.type == SelectionRangeTypes.ImageSelection &&\n context.rangeEx.image == element\n ) {\n image.isSelectedAsImageSelection = true;\n image.isSelected = true;\n }\n\n addSegment(group, image);\n });\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { formatContainerProcessor } from './formatContainerProcessor';\nimport { getDefaultStyle } from '../utils/getDefaultStyle';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelSegmentFormat,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\nconst FormatContainerTriggerStyles: (keyof CSSStyleDeclaration)[] = [\n 'marginBottom',\n 'marginTop',\n 'paddingBottom',\n 'paddingTop',\n 'paddingLeft',\n 'paddingRight',\n 'borderTopWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n];\nconst ByPassFormatContainerTags = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'A'];\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport const knownElementProcessor: ElementProcessor = (group, element, context) => {\n const isBlock = isBlockElement(element, context);\n\n if (\n (isBlock || element.style.display == 'inline-block') && // For inline-block here, we will also check if it should be represented as Format Container\n shouldUseFormatContainer(element, context)\n ) {\n formatContainerProcessor(group, element, context);\n } else if (isBlock) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n stackFormat(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, () => {\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n Object.assign(context.segmentFormat, segmentFormat);\n\n blockProcessor(group, element, context, segmentFormat);\n });\n\n if (isBlock && !isSegmentDecorator) {\n addBlock(\n group,\n createParagraph(\n true /*isImplicit*/,\n context.blockFormat,\n undefined /*segmentFormat*/,\n decorator\n )\n );\n }\n } else {\n stackFormat(\n context,\n {\n segment: 'shallowClone',\n paragraph: 'shallowClone',\n link: 'cloneFormat',\n },\n () => {\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n if (context.link.format.href && element.tagName != 'A') {\n parseFormat(\n element,\n context.formatParsers.segmentUnderLink,\n context.link.format,\n context\n );\n }\n\n context.elementProcessors.child(group, element, context);\n }\n );\n }\n};\n\nfunction shouldUseFormatContainer(element: HTMLElement, context: DomToModelContext) {\n // For those tags that we know we should not use format container, just return false\n if (ByPassFormatContainerTags.indexOf(element.tagName) >= 0) {\n return false;\n }\n\n const style = element.style;\n const defaultStyle = getDefaultStyle(element, context);\n\n const bgcolor = style.getPropertyValue('background-color');\n\n // For block element with background, we need to use format container\n if (bgcolor && bgcolor != 'transparent') {\n return true;\n }\n\n // For block element with positive value of border width or top/bottom margin/padding,\n // we need to use format container\n if (\n FormatContainerTriggerStyles.some(\n key => parseInt((style[key] as string) || (defaultStyle[key] as string) || '') > 0\n )\n ) {\n return true;\n }\n\n // For margin left/right with value \"auto\", we need to use format container\n if (style.marginLeft == 'auto' || style.marginRight == 'auto') {\n return true;\n }\n\n // For element with \"align\" attribute, we need to use format container\n if (element.getAttribute('align')) {\n return true;\n }\n\n return false;\n}\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const linkProcessor: ElementProcessor = (group, element, context) => {\n if (element.hasAttribute('href')) {\n stackFormat(context, { link: 'linkDefault' }, () => {\n parseFormat(element, context.formatParsers.link, context.link.format, context);\n parseFormat(element, context.formatParsers.dataset, context.link.dataset, context);\n\n knownElementProcessor(group, element, context);\n });\n } else {\n // A tag without href, can be treated as normal SPAN tag\n knownElementProcessor(group, element, context);\n }\n};\n","import { createListItem } from '../../modelApi/creators/createListItem';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const listItemProcessor: ElementProcessor = (group, element, context) => {\n const { listFormat } = context;\n\n if (listFormat.listParent && listFormat.levels.length > 0) {\n stackFormat(\n context,\n {\n segment: 'shallowCloneForBlock',\n },\n () => {\n parseFormat(\n element,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\n parseFormat(\n element,\n context.formatParsers.listItemElement,\n listItem.format,\n context\n );\n\n listFormat.listParent!.blocks.push(listItem);\n\n parseFormat(\n element,\n context.formatParsers.listItem,\n listItem.levels[listItem.levels.length - 1].format,\n context\n );\n\n context.elementProcessors.child(listItem, element, context);\n\n const firstChild = listItem.blocks[0];\n\n if (\n listItem.blocks.length == 1 &&\n firstChild.blockType == 'Paragraph' &&\n firstChild.isImplicit\n ) {\n Object.assign(listItem.format, firstChild.format);\n firstChild.format = {};\n }\n }\n );\n } else {\n const currentBlocks = listFormat.listParent?.blocks;\n const lastItem = currentBlocks?.[currentBlocks?.length - 1];\n\n context.elementProcessors['*'](\n lastItem?.blockType == 'BlockGroup' ? lastItem : group,\n element,\n context\n );\n }\n};\n","import { ContentModelListLevel, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createListLevel } from '../../modelApi/creators/createListLevel';\nimport { listLevelMetadataFormatHandler } from '../../formatHandlers/list/listLevelMetadataFormatHandler';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\n\n/**\n * @internal\n */\nexport const listProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n stackFormat(\n context,\n {\n segment: 'shallowCloneForBlock',\n paragraph: 'shallowCloneForGroup',\n },\n () => {\n const level: ContentModelListLevel = createListLevel(\n element.tagName as 'OL' | 'UL',\n context.blockFormat\n );\n const { listFormat } = context;\n\n parseFormat(element, context.formatParsers.dataset, level.dataset, context);\n parseFormat(element, context.formatParsers.listLevel, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n metadata = metadata || {};\n parseFormat(element, [listLevelMetadataFormatHandler.parse], metadata, context);\n\n if (\n typeof metadata.orderedStyleType == 'undefined' &&\n typeof metadata.unorderedStyleType == 'undefined'\n ) {\n metadata = null;\n }\n\n return metadata;\n });\n\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n const originalListParent = listFormat.listParent;\n\n listFormat.listParent = listFormat.listParent || group;\n listFormat.levels.push(level);\n\n try {\n context.elementProcessors.child(group, element, context);\n } finally {\n listFormat.levels.pop();\n listFormat.listParent = originalListParent;\n }\n }\n );\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { ContentModelSegmentFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { createParagraphDecorator } from '../../modelApi/creators/createParagraphDecorator';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const pProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n { blockDecorator: 'empty', segment: 'shallowCloneForBlock', paragraph: 'shallowClone' },\n () => {\n context.blockDecorator = createParagraphDecorator(element.tagName);\n\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n Object.assign(context.segmentFormat, segmentFormat);\n\n blockProcessor(group, element, context, segmentFormat);\n }\n );\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createTable } from '../../modelApi/creators/createTable';\nimport { createTableCell } from '../../modelApi/creators/createTableCell';\nimport { getBoundingClientRect } from '../utils/getBoundingClientRect';\nimport { parseFormat } from '../utils/parseFormat';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelTableCellFormat,\n DatasetFormat,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * Content Model Element Processor for table\n *\n * For Table with merged/splitted cells, HTML uses colSpan and rowSpan attributes to specify how it should be rendered.\n * To make it easier to edit a table, we will use a different way to describe table.\n *\n * 1. For a m * n table (m rows, n columns), we always create a m * n array for the cells.\n * 2. For a regular table cell, it is mapped to one item of this array\n * 3. For a merged/splitted table cell, it will has colSpan/rowSpan value. We also created TableCell model for those spanned\n * cells, and use \"spanLeft\" and \"spanAbove\" to mark its state\n * 4. When edit table, we always edit on this mapped m * n array because it always has an item for each cell\n * 5. When write back to DOM, we create TD/TH elements for those non-spanned cells, and mark its colSpan/rowSpan value according\n * its neighbour cell's spanLeft/spanAbove attribute\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const tableProcessor: ElementProcessor = (\n group,\n tableElement,\n context\n) => {\n stackFormat(\n context,\n { segment: 'shallowCloneForBlock', paragraph: 'shallowCloneForGroup' },\n () => {\n parseFormat(tableElement, context.formatParsers.block, context.blockFormat, context);\n\n const table = createTable(tableElement.rows.length, context.blockFormat);\n const tableSelection =\n context.rangeEx?.type == SelectionRangeTypes.TableSelection\n ? context.rangeEx\n : null;\n const selectedTable = tableSelection?.table;\n const coordinates = tableSelection?.coordinates;\n const hasTableSelection =\n selectedTable == tableElement &&\n !!coordinates?.firstCell &&\n !!coordinates?.lastCell;\n\n if (context.allowCacheElement) {\n table.cachedElement = tableElement;\n }\n\n parseFormat(tableElement, context.formatParsers.table, table.format, context);\n parseFormat(tableElement, context.formatParsers.tableBorder, table.format, context);\n parseFormat(\n tableElement,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n parseFormat(tableElement, context.formatParsers.dataset, table.dataset, context);\n addBlock(group, table);\n\n const columnPositions: number[] = [0];\n const rowPositions: number[] = [0];\n const zoomScale = context.zoomScale || 1;\n\n for (let row = 0; row < tableElement.rows.length; row++) {\n const tr = tableElement.rows[row];\n const tableRow = table.rows[row];\n\n const tbody = tr.parentNode;\n\n if (safeInstanceOf(tbody, 'HTMLTableSectionElement')) {\n parseFormat(tbody, context.formatParsers.tableRow, tableRow.format, context);\n } else if (context.allowCacheElement) {\n tableRow.cachedElement = tr;\n }\n\n parseFormat(tr, context.formatParsers.tableRow, tableRow.format, context);\n\n stackFormat(context, { paragraph: 'shallowClone', segment: 'shallowClone' }, () => {\n const parent = tr.parentElement;\n const parentTag = parent?.tagName;\n\n if (\n parent &&\n (parentTag == 'TBODY' || parentTag == 'THEAD' || parentTag == 'TFOOT')\n ) {\n // If there is TBODY around TR, retrieve format from TBODY first, in case some format are declared there\n parseFormat(\n parent,\n context.formatParsers.block,\n context.blockFormat,\n context\n );\n parseFormat(\n parent,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n }\n\n parseFormat(tr, context.formatParsers.block, context.blockFormat, context);\n parseFormat(\n tr,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n\n for (\n let sourceCol = 0, targetCol = 0;\n sourceCol < tr.cells.length;\n sourceCol++\n ) {\n for (; tableRow.cells[targetCol]; targetCol++) {}\n\n const td = tr.cells[sourceCol];\n const hasSelectionBeforeCell = context.isInSelection;\n const colEnd = targetCol + td.colSpan;\n const rowEnd = row + td.rowSpan;\n const needCalcWidth = columnPositions[colEnd] === undefined;\n const needCalcHeight = rowPositions[rowEnd] === undefined;\n\n if (needCalcWidth || needCalcHeight) {\n const rect = getBoundingClientRect(td);\n\n if (rect.width > 0 || rect.height > 0) {\n if (needCalcWidth) {\n columnPositions[colEnd] =\n columnPositions[targetCol] + rect.width / zoomScale;\n }\n\n if (needCalcHeight) {\n rowPositions[rowEnd] =\n rowPositions[row] + rect.height / zoomScale;\n }\n }\n }\n\n stackFormat(\n context,\n { paragraph: 'shallowClone', segment: 'shallowClone' },\n () => {\n parseFormat(\n td,\n context.formatParsers.block,\n context.blockFormat,\n context\n );\n parseFormat(\n td,\n context.formatParsers.segmentOnTableCell,\n context.segmentFormat,\n context\n );\n\n const cellFormat: ContentModelTableCellFormat = {\n ...context.blockFormat,\n };\n const dataset: DatasetFormat = {};\n\n parseFormat(\n td,\n context.formatParsers.tableCell,\n cellFormat,\n context\n );\n parseFormat(\n td,\n context.formatParsers.tableBorder,\n cellFormat,\n context\n );\n parseFormat(td, context.formatParsers.dataset, dataset, context);\n\n for (\n let colSpan = 1;\n colSpan <= td.colSpan;\n colSpan++, targetCol++\n ) {\n for (let rowSpan = 1; rowSpan <= td.rowSpan; rowSpan++) {\n const hasTd = colSpan == 1 && rowSpan == 1;\n const cell = createTableCell(\n colSpan > 1,\n rowSpan > 1,\n td.tagName == 'TH',\n cellFormat\n );\n\n cell.dataset = { ...dataset };\n\n const spannedRow = table.rows[row + rowSpan - 1];\n\n if (spannedRow) {\n spannedRow.cells[targetCol] = cell;\n }\n\n if (hasTd) {\n if (context.allowCacheElement) {\n cell.cachedElement = td;\n }\n\n const { listParent, levels } = context.listFormat;\n\n context.listFormat.listParent = undefined;\n context.listFormat.levels = [];\n\n try {\n context.elementProcessors.child(cell, td, context);\n } finally {\n context.listFormat.listParent = listParent;\n context.listFormat.levels = levels;\n }\n }\n\n const hasSelectionAfterCell = context.isInSelection;\n\n if (\n (hasSelectionBeforeCell && hasSelectionAfterCell) ||\n (hasTableSelection &&\n row >= coordinates.firstCell.y &&\n row <= coordinates.lastCell.y &&\n targetCol >= coordinates.firstCell.x &&\n targetCol <= coordinates.lastCell.x)\n ) {\n cell.isSelected = true;\n }\n }\n }\n }\n );\n }\n });\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n if (!tableRow.cells[col]) {\n tableRow.cells[col] = createTableCell(\n false,\n false,\n false,\n context.blockFormat\n );\n }\n }\n }\n\n table.widths = calcSizes(columnPositions);\n\n const heights = calcSizes(rowPositions);\n\n table.rows.forEach((row, i) => {\n if (heights[i] > 0) {\n row.height = heights[i];\n }\n });\n }\n );\n};\n\nfunction calcSizes(positions: number[]): number[] {\n let result: number[] = [];\n let lastPos = positions[positions.length - 1];\n\n for (let i = positions.length - 2; i >= 0; i--) {\n if (positions[i] === undefined) {\n result[i] = 0;\n } else {\n result[i] = lastPos - positions[i];\n lastPos = positions[i];\n }\n }\n\n return result;\n}\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { addSelectionMarker } from '../utils/addSelectionMarker';\nimport { areSameFormats } from '../utils/areSameFormats';\nimport { createText } from '../../modelApi/creators/createText';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { hasSpacesOnly } from '../../modelApi/common/hasSpacesOnly';\nimport {\n ContentModelBlockGroup,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n textNode: Text,\n context: DomToModelContext\n) => {\n let txt = textNode.nodeValue || '';\n let [txtStartOffset, txtEndOffset] = getRegularSelectionOffsets(context, textNode);\n\n if (txtStartOffset >= 0) {\n addTextSegment(group, txt.substring(0, txtStartOffset), context);\n context.isInSelection = true;\n\n addSelectionMarker(group, context);\n\n txt = txt.substring(txtStartOffset);\n txtEndOffset -= txtStartOffset;\n }\n\n if (txtEndOffset >= 0) {\n addTextSegment(group, txt.substring(0, txtEndOffset), context);\n\n if (context.rangeEx && !context.rangeEx.areAllCollapsed) {\n addSelectionMarker(group, context);\n }\n\n context.isInSelection = false;\n txt = txt.substring(txtEndOffset);\n }\n\n addTextSegment(group, txt, context);\n};\n\n// When we see these values of white-space style, need to preserve spaces and line-breaks and let browser handle it for us.\nconst WhiteSpaceValuesNeedToHandle = ['pre', 'pre-wrap', 'pre-line', 'break-spaces'];\n\nfunction addTextSegment(group: ContentModelBlockGroup, text: string, context: DomToModelContext) {\n if (text) {\n const lastBlock = group.blocks[group.blocks.length - 1];\n const paragraph = lastBlock?.blockType == 'Paragraph' ? lastBlock : null;\n const lastSegment = paragraph?.segments[paragraph.segments.length - 1];\n\n if (\n lastSegment?.segmentType == 'Text' &&\n !!lastSegment.isSelected == !!context.isInSelection &&\n areSameFormats(lastSegment.format, context.segmentFormat) &&\n areSameFormats(lastSegment.link || {}, context.link.format || {}) &&\n areSameFormats(lastSegment.code || {}, context.code.format || {})\n ) {\n lastSegment.text += text;\n } else if (\n !hasSpacesOnly(text) ||\n paragraph?.segments.length! > 0 ||\n WhiteSpaceValuesNeedToHandle.indexOf(paragraph?.format.whiteSpace || '') >= 0\n ) {\n const textModel = createText(text, context.segmentFormat);\n\n if (context.isInSelection) {\n textModel.isSelected = true;\n }\n\n addDecorators(textModel, context);\n\n addSegment(group, textModel, context.blockFormat);\n }\n }\n}\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';\nimport { createSelectionMarker } from '../../modelApi/creators/createSelectionMarker';\n\n/**\n * @internal\n */\nexport function addSelectionMarker(group: ContentModelBlockGroup, context: DomToModelContext) {\n const marker = createSelectionMarker(context.segmentFormat);\n\n addDecorators(marker, context);\n\n addSegment(group, marker, context.blockFormat);\n}\n","import { ContentModelFormatBase } from 'roosterjs-content-model-types';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\n/**\n * Check if the two given formats object are equal. This is a check to value but not to reference\n * @param f1 The first format object to check\n * @param f2 The second format object to check\n */\nexport function areSameFormats(f1: T, f2: T) {\n if (f1 == f2) {\n return true;\n } else {\n const keys1 = getObjectKeys(f1);\n const keys2 = getObjectKeys(f2);\n\n return keys1.length == keys2.length && keys1.every(key => f1[key] == f2[key]);\n }\n}\n","/**\n * @internal\n */\nexport function getBoundingClientRect(element: Element): DOMRect {\n return element.getBoundingClientRect();\n}\n","import { DefaultStyleMap, DomToModelContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Get default CSS style of given element\n * @param element The element to get default style from\n * @param context The context of DOM to Content Model conversion\n * @returns A valid CSS style object\n */\nexport function getDefaultStyle(\n element: HTMLElement,\n context: DomToModelContext\n): Partial {\n let tag = element.tagName.toLowerCase() as keyof DefaultStyleMap;\n\n return context.defaultStyles[tag] || {};\n}\n","import { DomToModelContext } from 'roosterjs-content-model-types';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * Get offset numbers of a regular (range based) selection.\n * If the selection start/end position is not in the given node, it will return -1 for the related value\n * @param context DOM to Content Model context used for retrieve the selection\n * @param currentContainer The container node to check\n * @returns a tuple of start and end offsets. -1 means selection is not directly under the given node\n */\nexport function getRegularSelectionOffsets(\n context: DomToModelContext,\n currentContainer: Node\n): [number, number] {\n const range =\n context.rangeEx?.type == SelectionRangeTypes.Normal ? context.rangeEx.ranges[0] : null;\n\n let startOffset = range?.startContainer == currentContainer ? range.startOffset : -1;\n let endOffset = range?.endContainer == currentContainer ? range.endOffset! : -1;\n\n return [startOffset, endOffset];\n}\n","import { DomToModelContext } from 'roosterjs-content-model-types';\nimport { getDefaultStyle } from './getDefaultStyle';\n\nconst BLOCK_DISPLAY_STYLES = ['block', 'list-item', 'table', 'table-cell', 'flex'];\n\n/**\n * @internal\n * Check if the given element will be layout as a block\n * @param element The element to check\n * @param context The context of DOM to Content Model conversion\n */\nexport function isBlockElement(element: HTMLElement, context: DomToModelContext): boolean {\n const display = element.style.display || getDefaultStyle(element, context).display || '';\n\n return BLOCK_DISPLAY_STYLES.indexOf(display) >= 0;\n}\n","import { getDefaultStyle } from './getDefaultStyle';\nimport {\n ContentModelFormatBase,\n DomToModelContext,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\n/**\n * Parse formats of the given HTML element using specified format parsers\n * @param element The element to parse format from\n * @param parsers The parses we are using to parse format\n * @param format The format object to hold result format\n * @param context DOM to Content Model context\n */\nexport function parseFormat(\n element: HTMLElement,\n parsers: (FormatParser | null)[],\n format: T,\n context: DomToModelContext\n) {\n const defaultStyle = getDefaultStyle(element, context);\n\n parsers.forEach(parser => {\n parser?.(format, element, context, defaultStyle);\n });\n}\n","import { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n ContentModelBlockFormat,\n ContentModelCode,\n ContentModelFormatBase,\n ContentModelLink,\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface StackFormatOptions {\n segment?: 'shallowClone' | 'shallowCloneForBlock' | 'empty';\n paragraph?: 'shallowClone' | 'shallowCloneForGroup' | 'empty';\n blockDecorator?: 'empty';\n link?: 'linkDefault' | 'cloneFormat' | 'empty';\n code?: 'codeDefault' | 'empty';\n}\n\n// Some styles, such as background color, won't be inherited by block element if it was originally\n// declared from an inline element. So we need to skip them.\n// e.g.\n// \n// line 1 <---------------------------- in red here\n//
    line 2
    <---------------------- not in red here\n//
    \nconst SkippedStylesForBlock: (keyof ContentModelSegmentFormat)[] = ['backgroundColor'];\nconst SkippedStylesForTable: (keyof ContentModelBlockFormat)[] = [\n 'marginLeft',\n 'marginRight',\n 'paddingLeft',\n 'paddingRight',\n];\n\n/**\n * @internal\n */\nexport function stackFormat(\n context: DomToModelContext,\n options: StackFormatOptions,\n callback: () => void\n) {\n const {\n segmentFormat,\n blockFormat,\n link: linkFormat,\n code: codeFormat,\n blockDecorator: decoratorFormat,\n } = context;\n const { segment, paragraph, link, code, blockDecorator } = options;\n\n try {\n context.segmentFormat = stackFormatInternal(segmentFormat, segment);\n context.blockFormat = stackFormatInternal(blockFormat, paragraph);\n context.link = stackLinkInternal(linkFormat, link);\n context.code = stackCodeInternal(codeFormat, code);\n context.blockDecorator = stackDecoratorInternal(decoratorFormat, blockDecorator);\n\n callback();\n } finally {\n context.segmentFormat = segmentFormat;\n context.blockFormat = blockFormat;\n context.link = linkFormat;\n context.code = codeFormat;\n context.blockDecorator = decoratorFormat;\n }\n}\n\nfunction stackLinkInternal(\n linkFormat: ContentModelLink,\n link?: 'linkDefault' | 'cloneFormat' | 'empty'\n) {\n switch (link) {\n case 'linkDefault':\n return {\n format: {\n underline: true,\n },\n dataset: {},\n };\n\n case 'empty':\n return {\n format: {},\n dataset: {},\n };\n\n case 'cloneFormat':\n default:\n return {\n dataset: linkFormat.dataset,\n format: { ...linkFormat.format },\n };\n }\n}\n\nfunction stackCodeInternal(codeFormat: ContentModelCode, code?: 'codeDefault' | 'empty') {\n switch (code) {\n case 'codeDefault':\n return {\n format: {\n fontFamily: 'monospace',\n },\n };\n case 'empty':\n return {\n format: {},\n };\n default:\n return codeFormat;\n }\n}\n\nfunction stackDecoratorInternal(\n format: ContentModelParagraphDecorator,\n decorator?: 'decoratorDefault' | 'empty'\n) {\n switch (decorator) {\n case 'empty':\n return {\n format: {},\n tagName: '',\n };\n default:\n return format;\n }\n}\n\nfunction stackFormatInternal(\n format: T,\n processType?: 'shallowClone' | 'shallowCloneForBlock' | 'shallowCloneForGroup' | 'empty'\n): T | {} {\n switch (processType) {\n case 'empty':\n return {};\n\n case undefined:\n return format;\n\n default:\n const result = { ...format };\n\n getObjectKeys(format).forEach(key => {\n if (\n (processType == 'shallowCloneForBlock' &&\n SkippedStylesForBlock.indexOf(key as keyof ContentModelSegmentFormat) >=\n 0) ||\n (processType == 'shallowCloneForGroup' &&\n SkippedStylesForTable.indexOf(key as keyof ContentModelBlockFormat) >= 0)\n ) {\n delete result[key];\n }\n });\n\n return result;\n }\n}\n","import { NodeType } from 'roosterjs-editor-types';\n\n/**\n * A type map from node type number to its type declaration. This is used by utility function isNodeOfType()\n */\nexport interface NodeTypeMap {\n /**\n * Attribute node\n */\n [NodeType.Attribute]: Attr;\n\n /**\n * Comment node\n */\n [NodeType.Comment]: Comment;\n\n /**\n * DocumentFragment node\n */\n [NodeType.DocumentFragment]: DocumentFragment;\n\n /**\n * Document node\n */\n [NodeType.Document]: Document;\n\n /**\n * DocumentType node\n */\n [NodeType.DocumentType]: DocumentType;\n\n /**\n * HTMLElement node\n */\n [NodeType.Element]: HTMLElement;\n /**\n * ProcessingInstruction node\n */\n [NodeType.ProcessingInstruction]: ProcessingInstruction;\n\n /**\n * Text node\n */\n [NodeType.Text]: Text;\n}\n\n/**\n * Type checker for Node. Return true if it of the specified node type\n * @param node The node to check\n * @param expectedType The type to check\n */\nexport function isNodeOfType(\n node: Node | null | undefined,\n expectedType: T\n): node is NodeTypeMap[T] {\n return !!node && node.nodeType == expectedType;\n}\n","import { BulletListType, NumberingListType } from 'roosterjs-editor-types';\nimport { ContentModelWithDataset, ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { createNumberDefinition, createObjectDefinition } from 'roosterjs-editor-dom';\nimport { updateMetadata } from './updateMetadata';\n\nconst ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update list metadata with a callback\n * @param list The list Content Model (metadata holder)\n * @param callback The callback function used for updating metadata\n */\nexport function updateListMetadata(\n list: ContentModelWithDataset,\n callback?: (format: ListMetadataFormat | null) => ListMetadataFormat | null\n): ListMetadataFormat | null {\n return updateMetadata(list, callback, ListStyleDefinitionMetadata);\n}\n","import { ContentModelWithDataset } from 'roosterjs-content-model-types';\nimport { Definition } from 'roosterjs-editor-types';\nimport { validate } from 'roosterjs-editor-dom';\n\nconst EditingInfoDatasetName = 'editingInfo';\n\n/**\n * Update metadata of the given model\n * @param model The model to update metadata to\n * @param callback A callback function to update metadata\n * @param definition @optional Metadata definition used for verify the metadata object\n * @returns The metadata object if any, or null\n */\nexport function updateMetadata(\n model: ContentModelWithDataset,\n callback?: (metadata: T | null) => T | null,\n definition?: Definition\n): T | null {\n const metadataString = model.dataset[EditingInfoDatasetName];\n let obj: T | null = null;\n\n try {\n obj = JSON.parse(metadataString) as T;\n } catch {}\n\n if (definition && !validate(obj, definition)) {\n obj = null;\n }\n\n if (callback) {\n obj = callback(obj);\n\n if (!obj) {\n delete model.dataset[EditingInfoDatasetName];\n } else if (!definition || validate(obj, definition)) {\n model.dataset[EditingInfoDatasetName] = JSON.stringify(obj);\n }\n }\n\n return obj;\n}\n\n/**\n * Check if the given model has metadata\n * @param model The content model to check\n */\nexport function hasMetadata(model: ContentModelWithDataset | HTMLElement): boolean {\n return !!model.dataset[EditingInfoDatasetName];\n}\n","import { DirectionFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const directionFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const dir = element.style.direction || element.dir || defaultStyle.direction;\n\n if (dir) {\n format.direction = dir == 'rtl' ? 'rtl' : 'ltr';\n }\n },\n apply: (format, element) => {\n if (format.direction) {\n element.style.direction = format.direction;\n }\n },\n};\n","import { DisplayFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const displayFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const display = element.style.display;\n\n if (display) {\n format.display = display;\n }\n },\n apply: (format, element) => {\n if (format.display) {\n element.style.display = format.display;\n }\n },\n};\n","import { calcAlign, ResultMap } from '../utils/dir';\nimport { DirectionFormat, HtmlAlignFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport { directionFormatHandler } from './directionFormatHandler';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const htmlAlignFormatHandler: FormatHandler<\n DirectionFormat & HtmlAlignFormat & TextAlignFormat\n> = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n const htmlAlign = element.getAttribute('align');\n\n if (htmlAlign) {\n format.htmlAlign = calcAlign(htmlAlign, format.direction);\n delete format.textAlign;\n delete context.blockFormat.textAlign;\n }\n },\n apply: (format, element) => {\n const dir: 'ltr' | 'rtl' = format.direction == 'rtl' ? 'rtl' : 'ltr';\n\n if (format.htmlAlign) {\n element.setAttribute('align', ResultMap[format.htmlAlign][dir]);\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LineHeightFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const lineHeightFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const lineHeight = element.style.lineHeight || defaultStyle.lineHeight;\n\n if (lineHeight && lineHeight != 'inherit') {\n format.lineHeight = lineHeight;\n }\n },\n apply: (format, element) => {\n if (format.lineHeight) {\n element.style.lineHeight = format.lineHeight;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { MarginFormat } from 'roosterjs-content-model-types';\nimport { parseValueWithUnit } from '../utils/parseValueWithUnit';\n\nconst MarginKeys: (keyof MarginFormat & keyof CSSStyleDeclaration)[] = [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n];\n\n/**\n * @internal\n */\nexport const marginFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n MarginKeys.forEach(key => {\n const value = element.style[key] || defaultStyle[key];\n\n if (value) {\n switch (key) {\n case 'marginTop':\n case 'marginBottom':\n format[key] = value;\n break;\n\n case 'marginLeft':\n case 'marginRight':\n format[key] = format[key]\n ? parseValueWithUnit(format[key] || '', element) +\n parseValueWithUnit(value, element) +\n 'px'\n : value;\n break;\n }\n }\n });\n },\n apply: (format, element, context) => {\n MarginKeys.forEach(key => {\n const value = format[key];\n\n if (value != context.implicitFormat[key]) {\n element.style[key] = value || '0';\n }\n });\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { PaddingFormat } from 'roosterjs-content-model-types';\n\nconst PaddingKeys: (keyof PaddingFormat & keyof CSSStyleDeclaration)[] = [\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n];\n\n/**\n * @internal\n */\nexport const paddingFormatHandler: FormatHandler = {\n parse: (format, element) => {\n PaddingKeys.forEach(key => {\n const value = element.style[key];\n\n if (value) {\n format[key] = value;\n }\n });\n },\n apply: (format, element) => {\n PaddingKeys.forEach(key => {\n const value = format[key];\n if (value) {\n element.style[key] = value;\n }\n });\n },\n};\n","import { calcAlign, ResultMap } from '../utils/dir';\nimport { DirectionFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport { directionFormatHandler } from './directionFormatHandler';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const textAlignFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n let textAlign = element.style.textAlign || defaultStyle.textAlign;\n\n if (\n element.tagName == 'LI' &&\n element.parentElement?.style.display === 'flex' &&\n element.parentElement.style.flexDirection === 'column' &&\n element.style.alignSelf\n ) {\n // For LI element with flex style applied, we use its \"align-self\" style value instead since LI has a different implementation for align\n textAlign = element.style.alignSelf;\n }\n\n if (textAlign) {\n format.textAlign = calcAlign(textAlign, format.direction);\n }\n },\n apply: (format, element) => {\n const dir: 'ltr' | 'rtl' = format.direction == 'rtl' ? 'rtl' : 'ltr';\n\n if (format.textAlign) {\n const parent = element.parentElement;\n const parentTag = parent?.tagName;\n\n if (element.tagName == 'LI' && parent && (parentTag == 'OL' || parentTag == 'UL')) {\n element.style.alignSelf = format.textAlign;\n element.parentElement.style.flexDirection = 'column';\n element.parentElement.style.display = 'flex';\n } else {\n element.style.textAlign = ResultMap[format.textAlign][dir];\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { WhiteSpaceFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const whiteSpaceFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const whiteSpace = element.style.whiteSpace || defaultStyle.whiteSpace;\n\n if (whiteSpace) {\n format.whiteSpace = whiteSpace;\n }\n },\n apply: (format, element, context) => {\n const whiteSpace = context.implicitFormat.whiteSpace;\n if (format.whiteSpace != whiteSpace) {\n element.style.whiteSpace = format.whiteSpace || 'normal';\n }\n },\n};\n","import { BackgroundColorFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getColor, setColor } from '../utils/color';\n\n/**\n * @internal\n */\nexport const backgroundColorFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const backgroundColor =\n getColor(\n element,\n true /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n ) || defaultStyle.backgroundColor;\n\n if (backgroundColor) {\n format.backgroundColor = backgroundColor;\n }\n },\n apply: (format, element, context) => {\n if (format.backgroundColor) {\n setColor(\n element,\n format.backgroundColor,\n true /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n );\n }\n },\n};\n","import { BorderBoxFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const borderBoxFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style?.boxSizing == 'border-box') {\n format.useBorderBox = true;\n }\n },\n apply: (format, element) => {\n if (format.useBorderBox) {\n element.style.boxSizing = 'border-box';\n }\n },\n};\n","import { BorderFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * Keys of border items\n */\nexport const BorderKeys: (keyof BorderFormat & keyof CSSStyleDeclaration)[] = [\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'borderRadius',\n];\n\n/**\n * @internal\n */\nexport const borderFormatHandler: FormatHandler = {\n parse: (format, element) => {\n BorderKeys.forEach(key => {\n const value = element.style[key];\n\n if (value) {\n format[key] = value == 'none' ? '' : value;\n }\n });\n },\n apply: (format, element) => {\n BorderKeys.forEach(key => {\n const value = format[key];\n\n if (value) {\n element.style[key] = value;\n }\n });\n },\n};\n","import { BoxShadowFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const boxShadowFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style?.boxShadow) {\n format.boxShadow = element.style.boxShadow;\n }\n },\n apply: (format, element) => {\n if (format.boxShadow) {\n element.style.boxShadow = format.boxShadow;\n }\n },\n};\n","import { DatasetFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const datasetFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const dataset = element.dataset;\n\n getObjectKeys(dataset).forEach(key => {\n format[key] = dataset[key] || '';\n });\n },\n\n apply: (format, element) => {\n getObjectKeys(format).forEach(key => {\n element.dataset[key] = format[key];\n });\n },\n};\n","import { FloatFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const floatFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const float = element.style.float || element.getAttribute('align');\n\n if (float) {\n format.float = float;\n }\n },\n apply: (format, element) => {\n if (format.float) {\n element.style.float = format.float;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { IdFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const idFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.id) {\n format.id = element.id;\n }\n },\n apply: (format, element) => {\n if (format.id) {\n element.id = format.id;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { SizeFormat } from 'roosterjs-content-model-types';\n\nconst PercentageRegex = /[\\d\\.]+%/;\n\n/**\n * @internal\n */\nexport const sizeFormatHandler: FormatHandler = {\n parse: (format, element, context) => {\n const width = element.style.width || tryParseSize(element, 'width');\n const height = element.style.height || tryParseSize(element, 'height');\n const maxWidth = element.style.maxWidth;\n const maxHeight = element.style.maxHeight;\n const minWidth = element.style.minWidth;\n const minHeight = element.style.minHeight;\n\n if (width) {\n format.width = width;\n }\n if (height) {\n format.height = height;\n }\n if (maxWidth) {\n format.maxWidth = maxWidth;\n }\n if (maxHeight) {\n format.maxHeight = maxHeight;\n }\n if (minWidth) {\n format.minWidth = minWidth;\n }\n if (minHeight) {\n format.minHeight = minHeight;\n }\n },\n apply: (format, element) => {\n if (format.width) {\n element.style.width = format.width;\n }\n if (format.height) {\n element.style.height = format.height;\n }\n if (format.maxWidth) {\n element.style.maxWidth = format.maxWidth;\n }\n if (format.maxHeight) {\n element.style.maxHeight = format.maxHeight;\n }\n if (format.minWidth) {\n element.style.minWidth = format.minWidth;\n }\n if (format.minHeight) {\n element.style.minHeight = format.minHeight;\n }\n },\n};\n\nfunction tryParseSize(element: HTMLElement, attrName: 'width' | 'height'): string | undefined {\n const attrValue = element.getAttribute(attrName);\n const value = parseInt(attrValue || '');\n\n return attrValue && PercentageRegex.test(attrValue)\n ? attrValue\n : Number.isNaN(value)\n ? undefined\n : value + 'px';\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { VerticalAlignFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const verticalAlignFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const align = element.style.verticalAlign || element.getAttribute('valign');\n\n switch (align) {\n case 'baseline':\n case 'initial':\n case 'super':\n case 'sub':\n case 'text-top':\n case 'text-bottom':\n case 'top':\n format.verticalAlign = 'top';\n break;\n\n case 'bottom':\n format.verticalAlign = 'bottom';\n break;\n\n case 'middle':\n format.verticalAlign = 'middle';\n break;\n }\n },\n apply: (format, element) => {\n if (format.verticalAlign) {\n element.style.verticalAlign = format.verticalAlign;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { WordBreakFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const wordBreakFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const wordBreak = element.style.wordBreak || defaultStyle.wordBreak;\n\n if (wordBreak) {\n format.wordBreak = wordBreak;\n }\n },\n apply: (format, element) => {\n if (format.wordBreak) {\n element.style.wordBreak = format.wordBreak;\n }\n },\n};\n","import { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { FormatHandler } from './FormatHandler';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStylePositionFormatHandler } from './list/listStylePositionFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport {\n ContentModelFormatMap,\n FormatHandlerTypeMap,\n FormatKey,\n FormatApplier,\n FormatAppliers,\n FormatAppliersPerCategory,\n FormatParser,\n FormatParsers,\n FormatParsersPerCategory,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStylePosition: listStylePositionFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\nconst defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItem: ['listItemThread'],\n listItemElement: [...sharedBlockFormats, 'direction', 'textAlign', 'lineHeight', 'margin'],\n listLevel: [\n 'listLevelThread',\n 'direction',\n 'textAlign',\n 'margin',\n 'padding',\n 'listStylePosition',\n 'backgroundColor',\n ],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n table: [\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser;\n return result;\n },\n {}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier;\n return result;\n },\n {}\n);\n\n/**\n * @internal\n */\nexport function getFormatParsers(\n override: Partial = {},\n additionalParsers: Partial = {}\n): FormatParsersPerCategory {\n return getObjectKeys(defaultFormatKeysPerCategory).reduce((result, key) => {\n const value = defaultFormatKeysPerCategory[key]\n .map(\n formatKey =>\n (override[formatKey] === undefined\n ? defaultFormatParsers[formatKey]\n : override[formatKey]) as FormatParser\n )\n .concat((additionalParsers[key] as FormatParser[]) || []);\n\n result[key] = value;\n\n return result;\n }, {} as FormatParsersPerCategory);\n}\n\n/**\n * @internal\n */\nexport function getFormatAppliers(\n override: Partial = {},\n additionalAppliers: Partial = {}\n): FormatAppliersPerCategory {\n return getObjectKeys(defaultFormatKeysPerCategory).reduce((result, key) => {\n const value = defaultFormatKeysPerCategory[key]\n .map(\n formatKey =>\n (override[formatKey] === undefined\n ? defaultFormatAppliers[formatKey]\n : override[formatKey]) as FormatApplier\n )\n .concat((additionalAppliers[key] as FormatApplier[]) || []);\n\n result[key] = value;\n\n return result;\n }, {} as FormatAppliersPerCategory);\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys, getTagOfNode } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { NodeType } from 'roosterjs-editor-types';\nimport { OrderedMap, UnorderedMap } from './listLevelMetadataFormatHandler';\n\nconst OrderedMapPlaceholderRegex = /\\$\\{(\\w+)\\}/;\nconst DefaultOrderedListStyles = ['decimal', 'lower-alpha', 'lower-roman'];\nconst DefaultUnorderedListStyles = ['disc', 'circle', 'square'];\nconst CharCodeOfA = 65;\nconst RomanValues: Record = {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1,\n};\n\n/**\n * @internal\n */\nexport const listItemMetadataFormatHandler: FormatHandler = {\n parse: () => {\n // TODO: Handle list style override\n },\n apply: (format, element, context) => {\n const parent = element.parentNode;\n const depth = context.listFormat.nodeStack.length - 2; // Minus two for the parent element and convert length to index\n\n if (depth >= 0 && isNodeOfType(parent, NodeType.Element) && !parent.style.listStyleType) {\n const parentTag = getTagOfNode(parent);\n const style =\n parentTag == 'OL'\n ? getOrderedListStyleValue(\n OrderedMap[format.orderedStyleType!],\n context.listFormat.threadItemCounts[depth]\n ) ?? DefaultOrderedListStyles[depth % DefaultOrderedListStyles.length]\n : UnorderedMap[format.unorderedStyleType!] ??\n DefaultUnorderedListStyles[depth % DefaultUnorderedListStyles.length];\n\n if (style && (depth > 0 || (style != 'decimal' && style != 'disc'))) {\n element.style.listStyleType = style;\n }\n }\n },\n};\n\n/**\n * @internal\n * Export for test only\n */\nexport function getOrderedListStyleValue(\n template: string | undefined,\n listNumber: number\n): string | undefined {\n return template\n ? template.replace(OrderedMapPlaceholderRegex, (match, subStr) => {\n switch (subStr) {\n case 'Number':\n return listNumber + '';\n case 'LowerAlpha':\n return convertDecimalsToAlpha(listNumber, true /*isLowerCase*/);\n case 'UpperAlpha':\n return convertDecimalsToAlpha(listNumber, false /*isLowerCase*/);\n case 'LowerRoman':\n return convertDecimalsToRoman(listNumber, true /*isLowerCase*/);\n case 'UpperRoman':\n return convertDecimalsToRoman(listNumber, false /*isLowerCase*/);\n }\n\n return '';\n })\n : undefined;\n}\n\nfunction convertDecimalsToAlpha(decimal: number, isLowerCase?: boolean): string {\n let alpha = '';\n decimal--;\n\n while (decimal >= 0) {\n alpha = String.fromCharCode((decimal % 26) + CharCodeOfA) + alpha;\n decimal = Math.floor(decimal / 26) - 1;\n }\n return isLowerCase ? alpha.toLowerCase() : alpha;\n}\n\nfunction convertDecimalsToRoman(decimal: number, isLowerCase?: boolean) {\n let romanValue = '';\n for (let i of getObjectKeys(RomanValues)) {\n let timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);\n decimal = decimal - timesRomanCharAppear * RomanValues[i];\n romanValue = romanValue + i.repeat(timesRomanCharAppear);\n }\n return isLowerCase ? romanValue.toLocaleLowerCase() : romanValue;\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const listItemThreadFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyles) => {\n const { listFormat } = context;\n const depth = listFormat.levels.length;\n const display = element.style.display || defaultStyles.display;\n\n if (display && display != 'list-item') {\n format.displayForDummyItem = display;\n } else if (isLiUnderOl(element) && depth > 0) {\n listFormat.threadItemCounts[depth - 1]++;\n listFormat.threadItemCounts.splice(depth);\n listFormat.levels.forEach(level => {\n // Delete restart number so next list item doesn't need to have this value.\n // Then it will be treated as a continuous list item to the previous one\n delete level.format.startNumberOverride;\n });\n }\n },\n apply: (format, element, context) => {\n if (format.displayForDummyItem) {\n element.style.display = format.displayForDummyItem;\n } else if (isLiUnderOl(element)) {\n const { listFormat } = context;\n const { threadItemCounts } = listFormat;\n const index = listFormat.nodeStack.length - 2; // The first one is always the parent of list, then minus another 1 to convert length to index\n\n if (index >= 0) {\n threadItemCounts.splice(index + 1);\n threadItemCounts[index] = (threadItemCounts[index] ?? 0) + 1;\n }\n }\n },\n};\n\nfunction isLiUnderOl(element: HTMLElement) {\n return (\n safeInstanceOf(element, 'HTMLLIElement') &&\n safeInstanceOf(element.parentNode, 'HTMLOListElement')\n );\n}\n","import { BulletListType, NumberingListType } from 'roosterjs-editor-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys, getTagOfNode, safeInstanceOf } from 'roosterjs-editor-dom';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const OrderedMap: Record = {\n [NumberingListType.Decimal]: 'decimal',\n [NumberingListType.DecimalDash]: '\"${Number}- \"',\n [NumberingListType.DecimalParenthesis]: '\"${Number}) \"',\n [NumberingListType.DecimalDoubleParenthesis]: '\"(${Number}) \"',\n [NumberingListType.LowerAlpha]: 'lower-alpha',\n [NumberingListType.LowerAlphaDash]: '\"${LowerAlpha}- \"',\n [NumberingListType.LowerAlphaParenthesis]: '\"${LowerAlpha}) \"',\n [NumberingListType.LowerAlphaDoubleParenthesis]: '\"(${LowerAlpha}) \"',\n [NumberingListType.UpperAlpha]: 'upper-alpha',\n [NumberingListType.UpperAlphaDash]: '\"${UpperAlpha}- \"',\n [NumberingListType.UpperAlphaParenthesis]: '\"${UpperAlpha}) \"',\n [NumberingListType.UpperAlphaDoubleParenthesis]: '\"(${UpperAlpha}) \"',\n [NumberingListType.LowerRoman]: 'lower-roman',\n [NumberingListType.LowerRomanDash]: '\"${LowerRoman}- \"',\n [NumberingListType.LowerRomanParenthesis]: '\"${LowerRoman}) \"',\n [NumberingListType.LowerRomanDoubleParenthesis]: '\"(${LowerRoman}) \"',\n [NumberingListType.UpperRoman]: 'upper-roman',\n [NumberingListType.UpperRomanDash]: '\"${UpperRoman}- \"',\n [NumberingListType.UpperRomanParenthesis]: '\"${UpperRoman}) \"',\n [NumberingListType.UpperRomanDoubleParenthesis]: '\"(${UpperRoman}) \"',\n};\n\n/**\n * @internal\n */\nexport const UnorderedMap: Record = {\n [BulletListType.Disc]: 'disc',\n [BulletListType.Square]: '\"∎ \"',\n [BulletListType.Circle]: 'circle',\n [BulletListType.Dash]: '\"- \"',\n [BulletListType.LongArrow]: '\"➔ \"',\n [BulletListType.DoubleLongArrow]: '\"➔ \"',\n [BulletListType.ShortArrow]: '\"➢ \"',\n [BulletListType.UnfilledArrow]: '\"➪ \"',\n [BulletListType.Hyphen]: '\"— \"',\n};\n\nconst OLTypeToStyleMap: Record = {\n '1': 'decimal',\n a: 'lower-alpha',\n A: 'upper-alpha',\n i: 'lower-roman',\n I: 'upper-roman',\n};\n\n/**\n * @internal\n */\nexport const listLevelMetadataFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const listStyle =\n element.style.listStyleType ||\n (safeInstanceOf(element, 'HTMLOListElement') && OLTypeToStyleMap[element.type]);\n const tag = getTagOfNode(element);\n\n if (listStyle) {\n if (tag == 'OL' && format.orderedStyleType === undefined) {\n const value = getKeyFromValue(OrderedMap, listStyle);\n format.orderedStyleType =\n typeof value === 'undefined' ? undefined : parseInt(value);\n } else if (tag == 'UL' && format.unorderedStyleType === undefined) {\n const value = getKeyFromValue(UnorderedMap, listStyle);\n format.unorderedStyleType =\n typeof value === 'undefined' ? undefined : parseInt(value);\n }\n }\n },\n apply: (format, element) => {\n const tag = getTagOfNode(element);\n const listType =\n tag == 'OL'\n ? OrderedMap[format.orderedStyleType!]\n : UnorderedMap[format.unorderedStyleType!];\n\n if (listType && listType.indexOf('\"') < 0) {\n element.style.listStyleType = listType;\n }\n },\n};\n\nfunction getKeyFromValue(\n map: Record,\n value: V | undefined\n): string | undefined {\n const result =\n value === undefined ? undefined : getObjectKeys(map).filter(key => map[key] == value)[0];\n\n // During run time the key is always string\n return (result as any) as string | undefined;\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const listLevelThreadFormatHandler: FormatHandler = {\n parse: (format, element, context) => {\n if (safeInstanceOf(element, 'HTMLOListElement')) {\n const { listFormat } = context;\n const { threadItemCounts, levels } = listFormat;\n const depth = levels.length;\n\n if (\n typeof threadItemCounts[depth] === 'number' &&\n element.start != threadItemCounts[depth] + 1\n ) {\n format.startNumberOverride = element.start;\n }\n\n threadItemCounts[depth] = element.start - 1;\n }\n },\n apply: (format, element, context) => {\n const {\n listFormat: { threadItemCounts, nodeStack },\n } = context;\n const depth = nodeStack.length - 1; // The first one is always the parent of list\n\n if (depth >= 0 && safeInstanceOf(element, 'HTMLOListElement')) {\n const startNumber = format.startNumberOverride;\n\n if (typeof startNumber === 'number') {\n threadItemCounts[depth] = startNumber - 1;\n } else if (typeof threadItemCounts[depth] != 'number') {\n threadItemCounts[depth] = 0;\n }\n\n threadItemCounts.splice(depth + 1);\n element.start = threadItemCounts[depth] + 1;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { ListStylePositionFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const listStylePositionFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const listStylePosition = element.style.listStylePosition;\n\n if (listStylePosition) {\n format.listStylePosition = listStylePosition;\n }\n },\n apply: (format, element) => {\n if (format.listStylePosition) {\n element.style.listStylePosition = format.listStylePosition;\n }\n },\n};\n","import { BoldFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const boldFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontWeight = element.style.fontWeight || defaultStyle.fontWeight;\n\n if (fontWeight) {\n format.fontWeight = fontWeight;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.fontWeight === 'undefined') {\n return;\n }\n\n const blockFontWeight = context.implicitFormat.fontWeight;\n\n if (\n (blockFontWeight && blockFontWeight != format.fontWeight) ||\n (!blockFontWeight && format.fontWeight && format.fontWeight != 'normal')\n ) {\n if (format.fontWeight == 'bold') {\n const b = element.ownerDocument.createElement('b');\n moveChildNodes(b, element);\n element.appendChild(b);\n } else {\n element.style.fontWeight = format.fontWeight || 'normal';\n }\n }\n },\n};\n","import { FontFamilyFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const fontFamilyFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontFamily = element.style.fontFamily || defaultStyle.fontFamily;\n\n if (fontFamily && fontFamily != 'inherit') {\n format.fontFamily = fontFamily;\n }\n },\n apply: (format, element, context) => {\n if (format.fontFamily && format.fontFamily != context.implicitFormat.fontFamily) {\n element.style.fontFamily = format.fontFamily;\n }\n },\n};\n","import { FontSizeFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { isSuperOrSubScript } from './superOrSubScriptFormatHandler';\nimport { parseValueWithUnit } from '../utils/parseValueWithUnit';\n\n/**\n * @internal\n */\nexport const fontSizeFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontSize = element.style.fontSize || defaultStyle.fontSize;\n const verticalAlign = element.style.verticalAlign || defaultStyle.verticalAlign;\n\n // when font size is 'smaller' and the style is for superscript/subscript,\n // the font size will be handled by superOrSubScript handler\n if (fontSize && !isSuperOrSubScript(fontSize, verticalAlign) && fontSize != 'inherit') {\n if (element.style.fontSize) {\n format.fontSize = normalizeFontSize(fontSize, context.segmentFormat.fontSize);\n } else if (defaultStyle.fontSize) {\n format.fontSize = fontSize;\n }\n }\n },\n apply: (format, element, context) => {\n if (format.fontSize && format.fontSize != context.implicitFormat.fontSize) {\n element.style.fontSize = format.fontSize;\n }\n },\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\nconst KnownFontSizes: Record = {\n 'xx-small': '6.75pt',\n 'x-small': '7.5pt',\n small: '9.75pt',\n medium: '12pt',\n large: '13.5pt',\n 'x-large': '18pt',\n 'xx-large': '24pt',\n 'xxx-large': '36pt',\n};\n\nfunction normalizeFontSize(fontSize: string, contextFont: string | undefined): string | undefined {\n const knownFontSize = KnownFontSizes[fontSize];\n\n if (knownFontSize) {\n return knownFontSize;\n } else if (\n fontSize == 'smaller' ||\n fontSize == 'larger' ||\n fontSize.endsWith('em') ||\n fontSize.endsWith('%')\n ) {\n if (!contextFont) {\n return undefined;\n } else {\n const existingFontSize = parseValueWithUnit(contextFont, undefined /*element*/, 'px');\n\n if (existingFontSize) {\n switch (fontSize) {\n case 'smaller':\n return Math.round((existingFontSize * 500) / 6) / 100 + 'px';\n case 'larger':\n return Math.round((existingFontSize * 600) / 5) / 100 + 'px';\n default:\n return parseValueWithUnit(fontSize, existingFontSize, 'px') + 'px';\n }\n }\n }\n } else if (fontSize == 'inherit' || fontSize == 'revert' || fontSize == 'unset') {\n return undefined;\n } else {\n return fontSize;\n }\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ItalicFormat } from 'roosterjs-content-model-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const italicFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontStyle = element.style.fontStyle || defaultStyle.fontStyle;\n\n if (fontStyle == 'italic' || fontStyle == 'oblique') {\n format.italic = true;\n } else if (fontStyle == 'initial' || fontStyle == 'normal') {\n format.italic = false;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.italic === 'undefined') {\n return;\n }\n\n const implicitItalic = context.implicitFormat.italic;\n\n if (!!implicitItalic != !!format.italic) {\n if (format.italic) {\n const i = element.ownerDocument.createElement('i');\n moveChildNodes(i, element);\n element.appendChild(i);\n } else {\n element.style.fontStyle = 'normal';\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LetterSpacingFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const letterSpacingFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const letterSpacing = element.style.letterSpacing || defaultStyle.letterSpacing;\n\n if (letterSpacing) {\n format.letterSpacing = letterSpacing;\n }\n },\n apply: (format, element, context) => {\n if (format.letterSpacing) {\n element.style.letterSpacing = format.letterSpacing;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LinkFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const linkFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (safeInstanceOf(element, 'HTMLAnchorElement')) {\n const name = element.name;\n const href = element.getAttribute('href'); // Use getAttribute to get original HREF but not the resolved absolute url\n const target = element.target;\n const rel = element.rel;\n const id = element.id;\n const className = element.className;\n const title = element.title;\n\n if (name) {\n format.name = name;\n }\n\n if (href) {\n format.href = href;\n }\n\n if (target) {\n format.target = target;\n }\n\n if (id) {\n format.anchorId = id;\n }\n\n if (rel) {\n format.relationship = rel;\n }\n\n if (title) {\n format.anchorTitle = title;\n }\n\n if (className) {\n format.anchorClass = className;\n }\n }\n },\n apply: (format, element) => {\n if (safeInstanceOf(element, 'HTMLAnchorElement') && format.href) {\n element.href = format.href;\n\n if (format.name) {\n element.name = format.name;\n }\n\n if (format.target) {\n element.target = format.target;\n }\n\n if (format.anchorId) {\n element.id = format.anchorId;\n }\n\n if (format.anchorClass) {\n element.className = format.anchorClass;\n }\n\n if (format.anchorTitle) {\n element.title = format.anchorTitle;\n }\n\n if (format.relationship) {\n element.rel = format.relationship;\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { StrikeFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const strikeFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textDecoration = element.style.textDecoration || defaultStyle.textDecoration;\n\n if (textDecoration?.indexOf('line-through')! >= 0) {\n format.strikethrough = true;\n }\n },\n apply: (format, element) => {\n if (format.strikethrough) {\n const strike = element.ownerDocument.createElement('s');\n moveChildNodes(strike, element);\n element.appendChild(strike);\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { SuperOrSubScriptFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const superOrSubScriptFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const verticalAlign = element.style.verticalAlign || defaultStyle.verticalAlign;\n const fontSize = element.style.fontSize || defaultStyle.fontSize;\n\n if (isSuperOrSubScript(fontSize, verticalAlign)) {\n format.superOrSubScriptSequence = (format.superOrSubScriptSequence || '')\n .split(' ')\n .concat(verticalAlign)\n .join(' ')\n .trim();\n }\n },\n apply: (format, element) => {\n if (format.superOrSubScriptSequence) {\n format.superOrSubScriptSequence\n .split(' ')\n .reverse()\n .forEach(value => {\n const tagName = value == 'super' ? 'sup' : value == 'sub' ? 'sub' : null;\n\n if (tagName) {\n const wrapper = element.ownerDocument.createElement(tagName);\n moveChildNodes(wrapper, element);\n element.appendChild(wrapper);\n }\n });\n }\n },\n};\n\n/**\n * @internal\n */\nexport function isSuperOrSubScript(\n fontSize: string | undefined,\n verticalAlign: string | undefined\n): verticalAlign is 'sub' | 'super' {\n return fontSize == 'smaller' && (verticalAlign == 'sub' || verticalAlign == 'super');\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { getColor, setColor } from '../utils/color';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textColorFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textColor =\n getColor(\n element,\n false /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n ) || defaultStyle.color;\n\n if (textColor && textColor != 'inherit') {\n format.textColor = textColor;\n }\n },\n apply: (format, element, context) => {\n const implicitColor = context.implicitFormat.textColor;\n\n if (format.textColor && format.textColor != implicitColor) {\n setColor(\n element,\n format.textColor,\n false /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n );\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { UnderlineFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const underlineFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textDecoration = element.style.textDecoration || defaultStyle.textDecoration;\n\n if (textDecoration?.indexOf('underline')! >= 0) {\n format.underline = true;\n } else if (element.tagName == 'A' && textDecoration == 'none') {\n format.underline = false;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.underline === 'undefined') {\n return;\n }\n\n const blockUnderline = context.implicitFormat.underline;\n\n if (!!blockUnderline != !!format.underline) {\n if (format.underline) {\n const u = element.ownerDocument.createElement('u');\n moveChildNodes(u, element);\n element.appendChild(u);\n } else {\n element.style.textDecoration = 'none';\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { TableLayoutFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const tableLayoutFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const tableLayout = element.style.tableLayout;\n if (tableLayout && tableLayout != 'inherit') {\n format.tableLayout = tableLayout;\n }\n },\n apply: (format, element) => {\n if (format.tableLayout) {\n element.style.tableLayout = format.tableLayout;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { SpacingFormat } from 'roosterjs-content-model-types';\n\nconst BorderCollapsed = 'collapse';\n\n/**\n * @internal\n */\nexport const tableSpacingFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style.borderCollapse == BorderCollapsed) {\n format.borderCollapse = true;\n }\n },\n apply: (format, element) => {\n if (format.borderCollapse) {\n element.style.borderCollapse = BorderCollapsed;\n element.style.borderSpacing = '0';\n element.style.boxSizing = 'border-box';\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textColorOnTableCellFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style.color) {\n // Delete color from format since text color on TD/TH will be handled by separate code\n // and text color on segment format context need to be reset so that it will not inherit\n // value outer container\n delete format.textColor;\n }\n },\n apply: () => {},\n};\n","import { DarkColorHandler } from 'roosterjs-editor-types';\nimport { getTagOfNode } from 'roosterjs-editor-dom';\n\n/**\n * List of deprecated colors\n */\nexport const DeprecatedColors: string[] = [\n 'inactiveborder',\n 'activeborder',\n 'inactivecaptiontext',\n 'inactivecaption',\n 'activecaption',\n 'appworkspace',\n 'infobackground',\n 'background',\n 'buttonhighlight',\n 'buttonshadow',\n 'captiontext',\n 'infotext',\n 'menutext',\n 'menu',\n 'scrollbar',\n 'threeddarkshadow',\n 'threedface',\n 'threedhighlight',\n 'threedlightshadow',\n 'threedfhadow',\n 'windowtext',\n 'windowframe',\n 'window',\n];\n\n/**\n * @internal\n */\nexport function getColor(\n element: HTMLElement,\n isBackground: boolean,\n darkColorHandler: DarkColorHandler | undefined | null,\n isDarkMode: boolean\n): string | undefined {\n let color: string | undefined;\n\n if (!color) {\n color =\n (darkColorHandler &&\n tryGetFontColor(element, isDarkMode, darkColorHandler, isBackground)) ||\n (isBackground ? element.style.backgroundColor : element.style.color) ||\n element.getAttribute(isBackground ? 'bgcolor' : 'color') ||\n undefined;\n }\n\n if (color && DeprecatedColors.indexOf(color) > -1) {\n color = undefined;\n }\n\n if (darkColorHandler) {\n color = darkColorHandler.parseColorValue(color).lightModeColor;\n }\n\n return color;\n}\n\n/**\n * @internal\n */\nexport function setColor(\n element: HTMLElement,\n lightModeColor: string,\n isBackground: boolean,\n darkColorHandler: DarkColorHandler | undefined | null,\n isDarkMode: boolean\n) {\n const effectiveColor = darkColorHandler\n ? darkColorHandler.registerColor(lightModeColor, isDarkMode)\n : lightModeColor;\n\n if (isBackground) {\n element.style.backgroundColor = effectiveColor;\n } else {\n element.style.color = effectiveColor;\n }\n}\n\n/**\n * There is a known issue that when input with IME in Chrome, it is possible Chrome insert a new FONT tag with colors.\n * If editor is in dark mode, this color will cause the FONT tag doesn't have light mode color info so that after convert\n * to light mode the color will be wrong.\n * To workaround it, we check if this is a known color (for light mode with VariableBasedDarkColor enabled, all used colors\n * are stored in darkColorHandler), then use the related light mode color instead.\n */\nfunction tryGetFontColor(\n element: HTMLElement,\n isDarkMode: boolean,\n darkColorHandler: DarkColorHandler,\n isBackground: boolean\n) {\n let darkColor: string | null;\n\n return getTagOfNode(element) == 'FONT' &&\n !element.style.getPropertyValue(isBackground ? 'background-color' : 'color') &&\n isDarkMode &&\n (darkColor = element.getAttribute(isBackground ? 'bgcolor' : 'color'))\n ? darkColorHandler.findLightColorFromDarkColor(darkColor)\n : null;\n}\n","import { DefaultImplicitFormatMap, DefaultStyleMap } from 'roosterjs-content-model-types';\n\nconst blockElement: Partial = {\n display: 'block',\n};\n\n/**\n * @internal\n */\nexport const defaultStyleMap: DefaultStyleMap = {\n address: blockElement,\n article: blockElement,\n aside: blockElement,\n b: {\n fontWeight: 'bold',\n },\n blockquote: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n },\n br: blockElement,\n center: {\n display: 'block',\n textAlign: 'center',\n },\n dd: blockElement,\n div: blockElement,\n dl: blockElement,\n dt: blockElement,\n em: {\n fontStyle: 'italic',\n },\n fieldset: blockElement,\n figcaption: blockElement,\n figure: blockElement,\n footer: blockElement,\n form: blockElement,\n h1: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '2em',\n },\n h2: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.5em',\n },\n h3: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.17em',\n },\n h4: {\n display: 'block',\n fontWeight: 'bold',\n },\n h5: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.83em',\n },\n h6: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.67em',\n },\n header: blockElement,\n hr: blockElement,\n i: {\n fontStyle: 'italic',\n },\n li: {\n display: 'list-item',\n },\n main: blockElement,\n nav: blockElement,\n ol: blockElement,\n p: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n },\n pre: {\n display: 'block',\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n s: {\n textDecoration: 'line-through',\n },\n section: blockElement,\n strike: {\n textDecoration: 'line-through',\n },\n strong: {\n fontWeight: 'bold',\n },\n sub: {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n sup: {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n table: {\n display: 'table',\n boxSizing: 'border-box',\n },\n td: {\n display: 'table-cell',\n },\n th: {\n display: 'table-cell',\n },\n u: {\n textDecoration: 'underline',\n },\n ul: blockElement,\n};\n\n/**\n * @internal\n */\nexport const enum PseudoTagNames {\n childOfPre = 'pre *', // This value is not a CSS selector, it just to tell this will impact elements under PRE tag. Any unique value here can work actually\n}\n\n/**\n * A map from tag name to its default implicit formats\n */\nexport const defaultImplicitFormatMap: DefaultImplicitFormatMap = {\n a: {\n underline: true,\n },\n blockquote: {\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n },\n code: {\n fontFamily: 'monospace',\n },\n h1: {\n fontWeight: 'bold',\n fontSize: '2em',\n },\n h2: {\n fontWeight: 'bold',\n fontSize: '1.5em',\n },\n h3: {\n fontWeight: 'bold',\n fontSize: '1.17em',\n },\n h4: {\n fontWeight: 'bold',\n fontSize: '1em', // Set this default value here to overwrite existing font size when change heading level\n },\n h5: {\n fontWeight: 'bold',\n fontSize: '0.83em',\n },\n h6: {\n fontWeight: 'bold',\n fontSize: '0.67em',\n },\n p: {\n marginTop: '1em',\n marginBottom: '1em',\n },\n pre: {\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n\n // For PRE tag, the following styles will be included from the PRE tag.\n // Adding this implicit style here so no need to generate these style for child elements\n [PseudoTagNames.childOfPre]: {\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n },\n};\n","/**\n * @internal\n */\nexport const ResultMap = {\n start: {\n ltr: 'left',\n rtl: 'right',\n },\n center: {\n ltr: 'center',\n rtl: 'center',\n },\n end: {\n ltr: 'right',\n rtl: 'left',\n },\n initial: {\n ltr: 'initial',\n rtl: 'initial',\n },\n justify: {\n ltr: 'justify',\n rtl: 'justify',\n },\n};\n\n/**\n * @internal\n */\nexport function calcAlign(align: string, dir?: 'ltr' | 'rtl') {\n switch (align) {\n case 'center':\n return 'center';\n\n case 'left':\n return dir == 'rtl' ? 'end' : 'start';\n\n case 'right':\n return dir == 'rtl' ? 'start' : 'end';\n\n case 'start':\n case 'end':\n return align;\n\n case 'justify':\n case 'initial':\n return align;\n\n default:\n return undefined;\n }\n}\n","import { getComputedStyle } from 'roosterjs-editor-dom';\n\nconst MarginValueRegex = /(-?\\d+(\\.\\d+)?)([a-z]+|%)/;\n\n/**\n * Parse unit value with its unit\n * @param value The source value to parse\n * @param currentSizePxOrElement The source element which has this unit value, or current font size (in px) from context.\n * @param resultUnit Unit for result, can be px or pt. @default px\n */\nexport function parseValueWithUnit(\n value: string = '',\n currentSizePxOrElement?: number | HTMLElement,\n resultUnit: 'px' | 'pt' = 'px'\n): number {\n const match = MarginValueRegex.exec(value);\n let result = 0;\n\n if (match) {\n const [_, numStr, __, unit] = match;\n const num = parseFloat(numStr);\n\n switch (unit) {\n case 'px':\n result = num;\n break;\n case 'pt':\n result = ptToPx(num);\n break;\n case 'em':\n result = getFontSize(currentSizePxOrElement) * num;\n break;\n case 'ex':\n result = (getFontSize(currentSizePxOrElement) * num) / 2;\n break;\n case '%':\n result = (getFontSize(currentSizePxOrElement) * num) / 100;\n break;\n default:\n // TODO: Support more unit if need\n break;\n }\n }\n\n if (result > 0 && resultUnit == 'pt') {\n result = pxToPt(result);\n }\n\n return result;\n}\n\nfunction getFontSize(currentSizeOrElement?: number | HTMLElement): number {\n if (typeof currentSizeOrElement === 'undefined') {\n return 0;\n } else if (typeof currentSizeOrElement === 'number') {\n return currentSizeOrElement;\n } else {\n const styleInPt = getComputedStyle(currentSizeOrElement, 'font-size');\n const floatInPt = parseFloat(styleInPt);\n const floatInPx = ptToPx(floatInPt);\n\n return floatInPx;\n }\n}\n\nfunction ptToPx(pt: number): number {\n return Math.round((pt * 4000) / 3) / 1000;\n}\n\nfunction pxToPt(px: number) {\n return Math.round((px * 3000) / 4) / 1000;\n}\n","export { domToContentModel } from './domToModel/domToContentModel';\nexport { contentModelToDom } from './modelToDom/contentModelToDom';\n\nexport {\n childProcessor,\n handleRegularSelection,\n processChildNode,\n} from './domToModel/processors/childProcessor';\nexport { entityProcessor } from './domToModel/processors/entityProcessor';\nexport { tableProcessor } from './domToModel/processors/tableProcessor';\nexport { getRegularSelectionOffsets } from './domToModel/utils/getRegularSelectionOffsets';\nexport { parseFormat } from './domToModel/utils/parseFormat';\nexport { areSameFormats } from './domToModel/utils/areSameFormats';\n\nexport { updateMetadata, hasMetadata } from './domUtils/metadata/updateMetadata';\nexport { updateListMetadata } from './domUtils/metadata/updateListMetadata';\nexport { isNodeOfType, NodeTypeMap } from './domUtils/isNodeOfType';\n\nexport { createBr } from './modelApi/creators/createBr';\nexport { createListItem } from './modelApi/creators/createListItem';\nexport { createFormatContainer } from './modelApi/creators/createFormatContainer';\nexport { createParagraph } from './modelApi/creators/createParagraph';\nexport { createSelectionMarker } from './modelApi/creators/createSelectionMarker';\nexport { createTable } from './modelApi/creators/createTable';\nexport { createTableCell } from './modelApi/creators/createTableCell';\nexport { createText } from './modelApi/creators/createText';\nexport { createImage } from './modelApi/creators/createImage';\nexport { createContentModelDocument } from './modelApi/creators/createContentModelDocument';\nexport { createParagraphDecorator } from './modelApi/creators/createParagraphDecorator';\nexport { createGeneralSegment } from './modelApi/creators/createGeneralSegment';\nexport { createGeneralBlock } from './modelApi/creators/createGeneralBlock';\nexport { createEntity } from './modelApi/creators/createEntity';\nexport { createDivider } from './modelApi/creators/createDivider';\nexport { createListLevel } from './modelApi/creators/createListLevel';\n\nexport { addBlock } from './modelApi/common/addBlock';\nexport { addCode } from './modelApi/common/addDecorators';\nexport { addLink } from './modelApi/common/addDecorators';\nexport { normalizeContentModel } from './modelApi/common/normalizeContentModel';\nexport { isGeneralSegment } from './modelApi/common/isGeneralSegment';\nexport { unwrapBlock } from './modelApi/common/unwrapBlock';\nexport { addSegment } from './modelApi/common/addSegment';\nexport { isWhiteSpacePreserved } from './modelApi/common/isWhiteSpacePreserved';\nexport { normalizeSingleSegment } from './modelApi/common/normalizeSegment';\n\nexport { setParagraphNotImplicit } from './modelApi/block/setParagraphNotImplicit';\n\nexport { parseValueWithUnit } from './formatHandlers/utils/parseValueWithUnit';\nexport { BorderKeys } from './formatHandlers/common/borderFormatHandler';\nexport { DeprecatedColors } from './formatHandlers/utils/color';\nexport { defaultImplicitFormatMap } from './formatHandlers/utils/defaultStyles';\n\nexport { createDomToModelContext } from './domToModel/context/createDomToModelContext';\n","import { ContentModelBlock } from 'roosterjs-content-model-types';\n\n/**\n * For a given block, if it is a paragraph, set it to be not-implicit\n * @param block The block to check\n */\nexport function setParagraphNotImplicit(block: ContentModelBlock) {\n if (block.blockType == 'Paragraph' && block.isImplicit) {\n block.isImplicit = false;\n }\n}\n","import type { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * Add a given block to block group\n * @param group The block group to add block into\n * @param block The block to add\n */\nexport function addBlock(group: ContentModelBlockGroup, block: ContentModelBlock) {\n group.blocks.push(block);\n}\n","import {\n ContentModelCode,\n ContentModelLink,\n ContentModelSegment,\n DomToModelDecoratorContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function addLink(segment: ContentModelSegment, link: ContentModelLink) {\n if (link.format.href) {\n segment.link = {\n format: { ...link.format },\n dataset: { ...link.dataset },\n };\n }\n}\n\n/**\n * Add a code decorator into segment if any\n * @param segment The segment to add decorator to\n * @param code The code decorator to add\n */\nexport function addCode(segment: ContentModelSegment, code: ContentModelCode) {\n if (code.format.fontFamily) {\n segment.code = {\n format: { ...code.format },\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addDecorators(segment: ContentModelSegment, context: DomToModelDecoratorContext) {\n addLink(segment, context.link);\n addCode(segment, context.code);\n}\n","import { addBlock } from './addBlock';\nimport { createParagraph } from '../creators/createParagraph';\nimport type {\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * Add a given segment into a paragraph from its parent group. If the last block of the given group is not paragraph, create a new paragraph.\n * @param group The parent block group of the paragraph to add segment into\n * @param newSegment The segment to add\n * @param blockFormat The block format used for creating a new paragraph when need\n */\nexport function addSegment(\n group: ContentModelBlockGroup,\n newSegment: ContentModelSegment,\n blockFormat?: ContentModelBlockFormat\n) {\n const lastBlock = group.blocks[group.blocks.length - 1];\n let paragraph: ContentModelParagraph;\n\n if (lastBlock?.blockType == 'Paragraph') {\n paragraph = lastBlock;\n } else {\n paragraph = createParagraph(true, blockFormat);\n addBlock(group, paragraph);\n }\n\n const lastSegment = paragraph.segments[paragraph.segments.length - 1];\n\n if (newSegment.segmentType == 'SelectionMarker') {\n if (!lastSegment || !lastSegment.isSelected) {\n paragraph.segments.push(newSegment);\n }\n } else {\n if (newSegment.isSelected && lastSegment?.segmentType == 'SelectionMarker') {\n paragraph.segments.pop();\n }\n\n paragraph.segments.push(newSegment);\n }\n}\n","// A regex to match text that only has space and CR\n// We use real space char \" \" (\\u0020) here but not \"\\s\" since \"\\s\" will also match \" \" (\\u00A0) which is something we need to keep\nconst SPACE_TEXT_REGEX = /^[\\r\\n\\t ]*$/;\n\n/**\n * @internal\n * Check if the given string only has space, including line breaks.\n * @param txt The string to check\n */\nexport function hasSpacesOnly(txt: string): boolean {\n return SPACE_TEXT_REGEX.test(txt);\n}\n","import {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function isBlockEmpty(block: ContentModelBlock): boolean {\n switch (block.blockType) {\n case 'Paragraph':\n return block.segments.length == 0;\n\n case 'Table':\n return block.rows.every(row => row.cells.length == 0);\n\n case 'BlockGroup':\n return isBlockGroupEmpty(block);\n\n case 'Entity':\n return false;\n\n default:\n return false;\n }\n}\n\n/**\n * @internal\n */\nexport function isBlockGroupEmpty(group: ContentModelBlockGroup): boolean {\n switch (group.blockGroupType) {\n case 'FormatContainer':\n // Format Container of DIV is a container for style, so we always treat it as not empty\n return group.tagName == 'div' ? false : group.blocks.every(isBlockEmpty);\n\n case 'ListItem':\n return group.blocks.every(isBlockEmpty);\n\n case 'Document':\n case 'General':\n case 'TableCell':\n return false;\n\n default:\n return true;\n }\n}\n\n/**\n * @internal\n */\nexport function isSegmentEmpty(segment: ContentModelSegment): boolean {\n switch (segment.segmentType) {\n case 'Text':\n return !segment.text;\n\n case 'Image':\n return !segment.src;\n\n default:\n return false;\n }\n}\n\n/**\n * @internal\n */\nexport function isEmpty(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): boolean {\n if (isBlockGroup(model)) {\n return isBlockGroupEmpty(model);\n } else if (isBlock(model)) {\n return isBlockEmpty(model);\n } else if (isSegment(model)) {\n return isSegmentEmpty(model);\n }\n\n return false;\n}\n\nfunction isSegment(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelSegment {\n return typeof (model).segmentType === 'string';\n}\n\nfunction isBlock(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelBlock {\n return typeof (model).blockType === 'string';\n}\n\nfunction isBlockGroup(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelBlockGroup {\n return typeof (model).blockGroupType === 'string';\n}\n","import { ContentModelBlockGroup, ContentModelGeneralSegment } from 'roosterjs-content-model-types';\n\n/**\n * Check if the given block group is a general segment\n * @param group The group to check\n */\nexport function isGeneralSegment(\n group: ContentModelBlockGroup | ContentModelGeneralSegment\n): group is ContentModelGeneralSegment {\n return (\n group.blockGroupType == 'General' &&\n (group).segmentType == 'General'\n );\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\n\n// According to https://developer.mozilla.org/en-US/docs/Web/CSS/white-space, these style values will need to preserve white spaces\nconst WHITESPACE_PRE_VALUES = ['pre', 'pre-wrap', 'break-spaces'];\n\n/**\n * Check if we have white-space to be preserved for a given paragraph\n * @param paragraph The paragraph to check\n */\nexport function isWhiteSpacePreserved(paragraph: ContentModelParagraph): boolean {\n return (\n (paragraph.format.whiteSpace &&\n WHITESPACE_PRE_VALUES.indexOf(paragraph.format.whiteSpace) >= 0) ||\n false\n );\n}\n","import { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { isBlockEmpty } from './isEmpty';\nimport { normalizeParagraph } from './normalizeParagraph';\nimport { unwrapBlock } from './unwrapBlock';\n\n/**\n * For a given content model, normalize it to make the model be consistent.\n * This process includes:\n * - For a list item without any list level, unwrap the list item\n * - For a paragraph, make sure it has BR at the end if it is an empty paragraph\n * - For text segments under paragraph, make sure its space values are correct (use nbsp to replace space when necessary)\n * - For an empty block, remove it\n * @param group The root level block group of content model to normalize\n */\nexport function normalizeContentModel(group: ContentModelBlockGroup) {\n for (let i = group.blocks.length - 1; i >= 0; i--) {\n const block = group.blocks[i];\n\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem' && block.levels.length == 0) {\n i += block.blocks.length;\n unwrapBlock(group, block);\n } else {\n normalizeContentModel(block);\n }\n break;\n case 'Paragraph':\n normalizeParagraph(block);\n break;\n case 'Table':\n for (let r = 0; r < block.rows.length; r++) {\n for (let c = 0; c < block.rows[r].cells.length; c++) {\n if (block.rows[r].cells[c]) {\n normalizeContentModel(block.rows[r].cells[c]);\n }\n }\n }\n break;\n }\n\n if (isBlockEmpty(block)) {\n group.blocks.splice(i, 1);\n }\n }\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { createBr } from '../creators/createBr';\nimport { isSegmentEmpty } from './isEmpty';\nimport { isWhiteSpacePreserved } from './isWhiteSpacePreserved';\nimport { normalizeAllSegments } from './normalizeSegment';\n\n/**\n * @internal\n */\nexport function normalizeParagraph(paragraph: ContentModelParagraph) {\n const segments = paragraph.segments;\n\n if (!paragraph.isImplicit && segments.length > 0) {\n const last = segments[segments.length - 1];\n const secondLast = segments[segments.length - 2];\n\n if (\n last.segmentType == 'SelectionMarker' &&\n (!secondLast || secondLast.segmentType == 'Br')\n ) {\n segments.push(createBr(last.format));\n } else if (segments.length > 1 && segments[segments.length - 1].segmentType == 'Br') {\n const noMarkerSegments = segments.filter(x => x.segmentType != 'SelectionMarker');\n\n // When there is content with a
    tag at the end, we can remove the BR.\n // But if there are more than one
    at the end, do not remove them.\n if (\n noMarkerSegments.length > 1 &&\n noMarkerSegments[noMarkerSegments.length - 2].segmentType != 'Br'\n ) {\n segments.pop();\n }\n }\n }\n\n if (!isWhiteSpacePreserved(paragraph)) {\n normalizeAllSegments(paragraph);\n }\n\n removeEmptySegments(paragraph);\n}\n\nfunction removeEmptySegments(block: ContentModelParagraph) {\n for (let j = block.segments.length - 1; j >= 0; j--) {\n if (isSegmentEmpty(block.segments[j])) {\n block.segments.splice(j, 1);\n }\n }\n}\n","import { hasSpacesOnly } from './hasSpacesOnly';\nimport {\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelText,\n} from 'roosterjs-content-model-types';\n\nconst SPACE = '\\u0020';\nconst NONE_BREAK_SPACE = '\\u00A0';\nconst LEADING_SPACE_REGEX = /^\\u0020+/;\nconst TRAILING_SPACE_REGEX = /\\u0020+$/;\n\n/**\n * @internal\n */\nexport function normalizeAllSegments(paragraph: ContentModelParagraph) {\n const context = resetNormalizeSegmentContext();\n\n paragraph.segments.forEach(segment => {\n normalizeSegment(segment, context);\n });\n\n normalizeTextSegments(context.textSegments, context.lastInlineSegment);\n normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);\n}\n\n/**\n * Normalize a given segment, make sure its spaces are correctly represented by space and non-break space\n * @param segment The segment to normalize\n * @param ignoreTrailingSpaces Whether we should ignore the trailing space of the text segment @default false\n */\nexport function normalizeSingleSegment(\n segment: ContentModelSegment,\n ignoreTrailingSpaces: boolean = false\n) {\n const context = resetNormalizeSegmentContext();\n\n context.ignoreTrailingSpaces = ignoreTrailingSpaces;\n normalizeSegment(segment, context);\n}\n\n/**\n * @internal Export for test only\n */\nexport interface NormalizeSegmentContext {\n textSegments: ContentModelText[];\n ignoreLeadingSpaces: boolean;\n ignoreTrailingSpaces: boolean;\n lastTextSegment: ContentModelText | undefined;\n lastInlineSegment: ContentModelSegment | undefined;\n}\n\n/**\n * @internal Export for test only\n */\nexport function createNormalizeSegmentContext(): NormalizeSegmentContext {\n return resetNormalizeSegmentContext();\n}\n\nfunction resetNormalizeSegmentContext(\n context?: Partial\n): NormalizeSegmentContext {\n return Object.assign(context ?? {}, {\n textSegments: [],\n ignoreLeadingSpaces: true,\n ignoreTrailingSpaces: true,\n lastInlineSegment: undefined,\n lastTextSegment: undefined,\n });\n}\n\n/**\n * @internal Export for test only\n */\nexport function normalizeSegment(segment: ContentModelSegment, context: NormalizeSegmentContext) {\n switch (segment.segmentType) {\n case 'Br':\n normalizeTextSegments(context.textSegments, context.lastInlineSegment);\n normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);\n\n // Line ends, reset all states\n resetNormalizeSegmentContext(context);\n break;\n\n case 'Entity':\n case 'General':\n case 'Image':\n // Here \"inline segment\" means a segment showing some content inline such as text, image, or other inline HTML elements\n // BR will end current line, so it is not treated as \"inline\" here.\n // We will do some normalization to the trailing spaces for non-inline-segments\n context.lastInlineSegment = segment;\n context.ignoreLeadingSpaces = false;\n break;\n\n case 'Text':\n context.textSegments.push(segment);\n context.lastInlineSegment = segment;\n context.lastTextSegment = segment;\n\n const first = segment.text.substring(0, 1);\n const last = segment.text.substr(-1);\n\n if (!hasSpacesOnly(segment.text)) {\n if (first == SPACE) {\n // 1. Multiple leading space => single   or empty (depends on if previous segment ends with space)\n segment.text = segment.text.replace(\n LEADING_SPACE_REGEX,\n context.ignoreLeadingSpaces ? '' : NONE_BREAK_SPACE\n );\n }\n\n if (last == SPACE) {\n // 2. Multiple trailing space => single space\n segment.text = segment.text.replace(\n TRAILING_SPACE_REGEX,\n context.ignoreTrailingSpaces ? SPACE : NONE_BREAK_SPACE\n );\n }\n }\n\n context.ignoreLeadingSpaces = last == SPACE;\n\n break;\n }\n}\n\nfunction normalizeTextSegments(\n segments: ContentModelText[],\n lastInlineSegment: ContentModelSegment | undefined\n) {\n segments.forEach(segment => {\n // 3. Segment ends with   replace it with space if the previous char is not space so that next segment can wrap\n // Only do this for segments that is not the last one since the last space will be removed in step 4\n if (segment != lastInlineSegment) {\n const text = segment.text;\n\n if (\n text.substr(-1) == NONE_BREAK_SPACE &&\n text.length > 1 &&\n text.substr(-2, 1) != SPACE\n ) {\n segment.text = text.substring(0, text.length - 1) + SPACE;\n }\n }\n });\n}\n\nfunction normalizeLastTextSegment(\n segment: ContentModelText | undefined,\n lastInlineSegment: ContentModelSegment | undefined\n) {\n if (segment && segment == lastInlineSegment && segment?.text.substr(-1) == SPACE) {\n // 4. last text segment of the paragraph, remove trailing space\n segment.text = segment.text.replace(TRAILING_SPACE_REGEX, '');\n }\n}\n","import { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { setParagraphNotImplicit } from '../block/setParagraphNotImplicit';\n\n/**\n * Unwrap a given block group, move its child blocks to be under its parent group\n * @param parent Parent block group of the unwrapping group\n * @param groupToUnwrap The block group to unwrap\n */\nexport function unwrapBlock(\n parent: ContentModelBlockGroup | null,\n groupToUnwrap: ContentModelBlockGroup & ContentModelBlock\n) {\n const index = parent?.blocks.indexOf(groupToUnwrap) ?? -1;\n\n if (index >= 0) {\n groupToUnwrap.blocks.forEach(setParagraphNotImplicit);\n\n parent?.blocks.splice(index, 1, ...groupToUnwrap.blocks);\n }\n}\n","import { ContentModelBr, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelBr model\n * @param format @optional The format of this model\n */\nexport function createBr(format?: ContentModelSegmentFormat): ContentModelBr {\n return {\n segmentType: 'Br',\n format: format ? { ...format } : {},\n };\n}\n","import { ContentModelDocument, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelDocument model\n * @param defaultFormat @optional Default format of this model\n */\nexport function createContentModelDocument(\n defaultFormat?: ContentModelSegmentFormat\n): ContentModelDocument {\n const result: ContentModelDocument = {\n blockGroupType: 'Document',\n blocks: [],\n };\n\n if (defaultFormat) {\n result.format = defaultFormat;\n }\n\n return result;\n}\n","import { ContentModelBlockFormat, ContentModelDivider } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelDivider model\n * @param tagName Tag name of this divider. Currently only hr and div are supported\n * @param format @optional The format of this model\n */\nexport function createDivider(\n tagName: 'hr' | 'div',\n format?: ContentModelBlockFormat\n): ContentModelDivider {\n return {\n blockType: 'Divider',\n tagName,\n format: format ? { ...format } : {},\n };\n}\n","import { ContentModelEntity, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelEntity model\n * @param wrapper Wrapper element of this entity\n * @param isReadonly Whether this is a readonly entity\n * @param type @optional Type of this entity\n * @param segmentFormat @optional Segment format of this entity\n * @param id @optional Id of this entity\n */\nexport function createEntity(\n wrapper: HTMLElement,\n isReadonly: boolean,\n type?: string,\n segmentFormat?: ContentModelSegmentFormat,\n id?: string\n): ContentModelEntity {\n return {\n segmentType: 'Entity',\n blockType: 'Entity',\n format: { ...segmentFormat },\n id,\n type,\n isReadonly,\n wrapper,\n };\n}\n","import {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelFormatContainer model\n * @param tag Tag name of this format container, in lower case\n * @param format @optional The format of this model\n */\nexport function createFormatContainer(\n tag: Lowercase,\n format?: ContentModelFormatContainerFormat\n): ContentModelFormatContainer {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'FormatContainer',\n tagName: tag,\n blocks: [],\n format: { ...(format || {}) },\n };\n}\n","import { ContentModelGeneralBlock } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelGeneralBlock model\n * @param element Original element of this model\n */\nexport function createGeneralBlock(element: HTMLElement): ContentModelGeneralBlock {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'General',\n element: element,\n blocks: [],\n format: {},\n };\n}\n","import {\n ContentModelGeneralSegment,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelGeneralSegment model\n * @param element The original DOM element\n * @param format @optional The format of this model\n */\nexport function createGeneralSegment(\n element: HTMLElement,\n format?: ContentModelSegmentFormat\n): ContentModelGeneralSegment {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'General',\n segmentType: 'General',\n format: format ? { ...format } : {},\n blocks: [],\n element: element,\n };\n}\n","import { ContentModelImage, ContentModelImageFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelImage model\n * @param src Image source\n * @param format @optional The format of this model\n */\nexport function createImage(src: string, format?: ContentModelImageFormat): ContentModelImage {\n return {\n segmentType: 'Image',\n src: src,\n format: format ? { ...format } : {},\n dataset: {},\n };\n}\n","import { createListLevel } from './createListLevel';\nimport { createSelectionMarker } from './createSelectionMarker';\nimport {\n ContentModelListItem,\n ContentModelListLevel,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelListItem model\n * @param levels Existing list levels\n * @param format @optional The format of this model\n */\nexport function createListItem(\n levels: ContentModelListLevel[],\n format?: ContentModelSegmentFormat\n): ContentModelListItem {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'ListItem',\n blocks: [],\n levels: levels\n ? levels.map(level => createListLevel(level.listType, level.format, level.dataset))\n : [],\n formatHolder: createSelectionMarker(format),\n format: {},\n };\n}\n","import {\n ContentModelListItemLevelFormat,\n ContentModelListLevel,\n DatasetFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelListLevel model\n * @param listType Tag name of the list, either OL or UL\n * @param format @optional The format of this model\n * @param dataset @optional The dataset of this model\n */\nexport function createListLevel(\n listType: 'OL' | 'UL',\n format?: ContentModelListItemLevelFormat,\n dataset?: DatasetFormat\n): ContentModelListLevel {\n return {\n listType,\n format: { ...format },\n dataset: { ...dataset },\n };\n}\n","import type {\n ContentModelBlockFormat,\n ContentModelParagraph,\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelParagraph model\n * @param isImplicit @optional Whether this is an implicit paragraph. An implicit paragraph is a paragraph that will not render with DOM element container\n * @param blockFormat @optional Format of this paragraph\n * @param segmentFormat @optional Segment format applied to this block\n * @param decorator @optional Decorator of this paragraph\n */\nexport function createParagraph(\n isImplicit?: boolean,\n blockFormat?: ContentModelBlockFormat,\n segmentFormat?: ContentModelSegmentFormat,\n decorator?: ContentModelParagraphDecorator\n): ContentModelParagraph {\n const result: ContentModelParagraph = {\n blockType: 'Paragraph',\n segments: [],\n format: blockFormat ? { ...blockFormat } : {},\n };\n\n if (segmentFormat && Object.keys(segmentFormat).length > 0) {\n result.segmentFormat = { ...segmentFormat };\n }\n\n if (isImplicit) {\n result.isImplicit = true;\n }\n\n if (decorator) {\n result.decorator = {\n tagName: decorator.tagName,\n format: { ...decorator.format },\n };\n }\n\n return result;\n}\n","import {\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelParagraphDecorator model\n * @param tagName Tag name of this decorator\n * @param format @optional The format of this model\n */\nexport function createParagraphDecorator(\n tagName: string,\n format?: ContentModelSegmentFormat\n): ContentModelParagraphDecorator {\n return {\n tagName: tagName.toLocaleLowerCase(),\n format: { ...(format || {}) },\n };\n}\n","import {\n ContentModelSegmentFormat,\n ContentModelSelectionMarker,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelSelectionMarker model\n * @param format @optional The format of this model\n */\nexport function createSelectionMarker(\n format?: ContentModelSegmentFormat\n): ContentModelSelectionMarker {\n return {\n segmentType: 'SelectionMarker',\n isSelected: true,\n format: format ? { ...format } : {},\n };\n}\n","import {\n ContentModelTable,\n ContentModelTableFormat,\n ContentModelTableRow,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelTable model\n * @param rowCount Count of rows of this table\n * @param format @optional The format of this model\n */\nexport function createTable(rowCount: number, format?: ContentModelTableFormat): ContentModelTable {\n const rows: ContentModelTableRow[] = [];\n\n for (let i = 0; i < rowCount; i++) {\n rows.push({\n height: 0,\n format: {},\n cells: [],\n });\n }\n\n return {\n blockType: 'Table',\n rows,\n format: { ...(format || {}) },\n widths: [],\n dataset: {},\n };\n}\n","import { ContentModelTableCell, ContentModelTableCellFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelTableCell model\n * @param spanLeftOrColSpan @optional Whether this is a table cell merged with its left cell, or colspan number @default false\n * @param spanAboveOrRowSpan Whether this is a table cell merged with its upper cell, or rowSpan number @default false\n * @param isHeader @optional Whether this is a header cell @default false\n * @param format @optional The format of this model\n */\nexport function createTableCell(\n spanLeftOrColSpan?: boolean | number,\n spanAboveOrRowSpan?: boolean | number,\n isHeader?: boolean,\n format?: ContentModelTableCellFormat\n): ContentModelTableCell {\n const spanLeft =\n typeof spanLeftOrColSpan === 'number' ? spanLeftOrColSpan > 1 : !!spanLeftOrColSpan;\n const spanAbove =\n typeof spanAboveOrRowSpan === 'number' ? spanAboveOrRowSpan > 1 : !!spanAboveOrRowSpan;\n return {\n blockGroupType: 'TableCell',\n blocks: [],\n format: format ? { ...format } : {},\n spanLeft,\n spanAbove,\n isHeader: !!isHeader,\n dataset: {},\n };\n}\n","import { ContentModelSegmentFormat, ContentModelText } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelText model\n * @param text Text of this model\n * @param format @optional The format of this model\n */\nexport function createText(text: string, format?: ContentModelSegmentFormat): ContentModelText {\n return {\n segmentType: 'Text',\n text: text,\n format: format ? { ...format } : {},\n };\n}\n","import { createModelToDomContext } from './context/createModelToDomContext';\nimport { createRange, Position, toArray } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../domUtils/isNodeOfType';\nimport {\n ContentModelDocument,\n EditorContext,\n ModelToDomBlockAndSegmentNode,\n ModelToDomContext,\n ModelToDomOption,\n} from 'roosterjs-content-model-types';\nimport {\n NodePosition,\n NodeType,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * Create DOM tree fragment from Content Model document\n * @param doc Document object of the target DOM tree\n * @param root Target node that will become the container of new DOM tree.\n * When a DOM node with existing node is passed, it will be merged with content model so that unchanged blocks\n * won't be touched.\n * @param model The content model document to generate DOM tree from\n * @param editorContext Content for Content Model editor\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n * @returns A tuple of the following 3 objects:\n * 1. Document Fragment that contains the DOM tree generated from the given model\n * 2. A SelectionRangeEx object that contains selection info from the model if any, or null\n * 3. An array entity DOM wrapper and its placeholder node pair for reusable root level entities.\n */\nexport function contentModelToDom(\n doc: Document,\n root: Node,\n model: ContentModelDocument,\n editorContext?: EditorContext,\n option?: ModelToDomOption\n): SelectionRangeEx | null {\n const modelToDomContext = createModelToDomContext(editorContext, option);\n\n modelToDomContext.modelHandlers.blockGroupChildren(doc, root, model, modelToDomContext);\n\n const range = extractSelectionRange(modelToDomContext);\n\n root.normalize();\n\n return range;\n}\n\nfunction extractSelectionRange(context: ModelToDomContext): SelectionRangeEx | null {\n const {\n regularSelection: { start, end },\n tableSelection,\n imageSelection,\n } = context;\n\n let startPosition: NodePosition | undefined;\n let endPosition: NodePosition | undefined;\n\n if (imageSelection?.image) {\n return {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [createRange(imageSelection.image)],\n areAllCollapsed: false,\n image: imageSelection.image,\n };\n } else if (\n (startPosition = start && calcPosition(start)) &&\n (endPosition = end && calcPosition(end))\n ) {\n const range = createRange(startPosition, endPosition);\n\n return {\n type: SelectionRangeTypes.Normal,\n ranges: [createRange(startPosition, endPosition)],\n areAllCollapsed: range.collapsed,\n };\n } else if (tableSelection?.table) {\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges: [],\n areAllCollapsed: false,\n table: tableSelection.table,\n coordinates: {\n firstCell: tableSelection.firstCell,\n lastCell: tableSelection.lastCell,\n },\n };\n } else {\n return null;\n }\n}\n\nfunction calcPosition(pos: ModelToDomBlockAndSegmentNode): NodePosition | undefined {\n let result: NodePosition | undefined;\n\n if (pos.block) {\n if (!pos.segment) {\n result = new Position(pos.block, 0);\n } else if (isNodeOfType(pos.segment, NodeType.Text)) {\n result = new Position(pos.segment, pos.segment.nodeValue?.length || 0);\n } else {\n result = new Position(\n pos.segment.parentNode!,\n toArray(pos.segment.parentNode!.childNodes as NodeListOf).indexOf(\n pos.segment!\n ) + 1\n );\n }\n }\n\n if (isNodeOfType(result?.node, NodeType.DocumentFragment)) {\n result = result?.normalize();\n }\n\n return result;\n}\n","import { defaultContentModelHandlers } from './defaultContentModelHandlers';\nimport { defaultImplicitFormatMap } from '../../formatHandlers/utils/defaultStyles';\nimport { EditorContext, ModelToDomContext, ModelToDomOption } from 'roosterjs-content-model-types';\nimport {\n defaultFormatAppliers,\n getFormatAppliers,\n} from '../../formatHandlers/defaultFormatHandlers';\n\n/**\n * @internal\n * @param editorContext\n * @returns\n */\nexport function createModelToDomContext(\n editorContext?: EditorContext,\n options?: ModelToDomOption\n): ModelToDomContext {\n options = options || {};\n\n return {\n ...editorContext,\n\n regularSelection: {\n current: {\n block: null,\n segment: null,\n },\n },\n listFormat: {\n threadItemCounts: [],\n nodeStack: [],\n },\n implicitFormat: {},\n formatAppliers: getFormatAppliers(\n options.formatApplierOverride,\n options.additionalFormatAppliers\n ),\n modelHandlers: {\n ...defaultContentModelHandlers,\n ...(options.modelHandlerOverride || {}),\n },\n defaultImplicitFormatMap: {\n ...defaultImplicitFormatMap,\n ...(options.defaultImplicitFormatOverride || {}),\n },\n\n defaultModelHandlers: defaultContentModelHandlers,\n defaultFormatAppliers: defaultFormatAppliers,\n onNodeCreated: options.onNodeCreated,\n };\n}\n","import { ContentModelHandlerMap } from 'roosterjs-content-model-types';\nimport { handleBlock } from '../handlers/handleBlock';\nimport { handleBlockGroupChildren } from '../handlers/handleBlockGroupChildren';\nimport { handleBr } from '../handlers/handleBr';\nimport { handleDivider } from '../handlers/handleDivider';\nimport { handleEntity } from '../handlers/handleEntity';\nimport { handleFormatContainer } from '../handlers/handleFormatContainer';\nimport { handleGeneralModel } from '../handlers/handleGeneralModel';\nimport { handleImage } from '../handlers/handleImage';\nimport { handleList } from '../handlers/handleList';\nimport { handleListItem } from '../handlers/handleListItem';\nimport { handleParagraph } from '../handlers/handleParagraph';\nimport { handleSegment } from '../handlers/handleSegment';\nimport { handleSegmentDecorator } from '../handlers/handleSegmentDecorator';\nimport { handleTable } from '../handlers/handleTable';\nimport { handleText } from '../handlers/handleText';\n\n/**\n * @internal\n */\nexport const defaultContentModelHandlers: ContentModelHandlerMap = {\n block: handleBlock,\n blockGroupChildren: handleBlockGroupChildren,\n br: handleBr,\n entity: handleEntity,\n general: handleGeneralModel,\n divider: handleDivider,\n image: handleImage,\n list: handleList,\n listItem: handleListItem,\n paragraph: handleParagraph,\n formatContainer: handleFormatContainer,\n segment: handleSegment,\n segmentDecorator: handleSegmentDecorator,\n table: handleTable,\n text: handleText,\n};\n","import {\n ContentModelBlock,\n ContentModelBlockHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBlock: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n block: ContentModelBlock,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n const handlers = context.modelHandlers;\n\n switch (block.blockType) {\n case 'Table':\n refNode = handlers.table(doc, parent, block, context, refNode);\n break;\n case 'Paragraph':\n refNode = handlers.paragraph(doc, parent, block, context, refNode);\n break;\n case 'Entity':\n refNode = handlers.entity(doc, parent, block, context, refNode);\n break;\n case 'Divider':\n refNode = handlers.divider(doc, parent, block, context, refNode);\n break;\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'General':\n refNode = handlers.general(doc, parent, block, context, refNode);\n break;\n\n case 'FormatContainer':\n refNode = handlers.formatContainer(doc, parent, block, context, refNode);\n break;\n\n case 'ListItem':\n refNode = handlers.listItem(doc, parent, block, context, refNode);\n break;\n }\n\n break;\n }\n\n return refNode;\n};\n","import {\n ContentModelBlockGroup,\n ContentModelHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBlockGroupChildren: ContentModelHandler = (\n doc: Document,\n parent: Node,\n group: ContentModelBlockGroup,\n context: ModelToDomContext\n) => {\n const { listFormat } = context;\n const nodeStack = listFormat.nodeStack;\n let refNode: Node | null = parent.firstChild;\n\n try {\n group.blocks.forEach((childBlock, index) => {\n // When process list, we need a node stack.\n // When there are two continuous lists, they should share the same stack\n // so that list items with same type/threadId can be merged into the same list element\n // In other cases, clear the stack so that two separate lists won't share the same list element\n if (\n index == 0 ||\n childBlock.blockType != 'BlockGroup' ||\n childBlock.blockGroupType != 'ListItem'\n ) {\n listFormat.nodeStack = [];\n }\n\n refNode = context.modelHandlers.block(doc, parent, childBlock, context, refNode);\n });\n\n // Remove all rest node if any since they don't appear in content model\n while (refNode) {\n const next = refNode.nextSibling;\n\n refNode.parentNode?.removeChild(refNode);\n refNode = next;\n }\n } finally {\n listFormat.nodeStack = nodeStack;\n }\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport {\n ContentModelBr,\n ContentModelHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBr: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelBr,\n context: ModelToDomContext\n) => {\n const br = doc.createElement('br');\n const element = doc.createElement('span');\n element.appendChild(br);\n parent.appendChild(element);\n\n handleSegmentCommon(doc, br, element, segment, context);\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelDivider,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleDivider: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n divider: ContentModelDivider,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let element = context.allowCacheElement ? divider.cachedElement : undefined;\n\n if (element) {\n refNode = reuseCachedElement(parent, element, refNode);\n } else {\n element = doc.createElement(divider.tagName);\n\n if (context.allowCacheElement) {\n divider.cachedElement = element;\n }\n\n parent.insertBefore(element, refNode);\n\n applyFormat(element, context.formatAppliers.divider, divider.format, context);\n\n if (divider.size) {\n element.setAttribute('size', divider.size);\n }\n }\n\n context.onNodeCreated?.(divider, element);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { Entity } from 'roosterjs-editor-types';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelEntity,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\nimport {\n addDelimiters,\n commitEntity,\n getObjectKeys,\n isBlockElement,\n wrap,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const handleEntity: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n entityModel: ContentModelEntity,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n const { id, type, isReadonly, format } = entityModel;\n let wrapper = entityModel.wrapper;\n\n if (!context.allowCacheElement) {\n wrapper = wrapper.cloneNode(true /*deep*/) as HTMLElement;\n wrapper.style.color = wrapper.style.color || 'inherit';\n wrapper.style.backgroundColor = wrapper.style.backgroundColor || 'inherit';\n }\n\n const entity: Entity | null =\n id && type\n ? {\n wrapper,\n id,\n type,\n isReadonly: !!isReadonly,\n }\n : null;\n const isInlineEntity = !isBlockElement(wrapper);\n\n if (entity) {\n // Commit the entity attributes in case there is any change\n commitEntity(wrapper, entity.type, entity.isReadonly, entity.id);\n }\n\n refNode = reuseCachedElement(parent, wrapper, refNode);\n\n if (isInlineEntity && getObjectKeys(format).length > 0) {\n const span = wrap(wrapper, 'span');\n\n applyFormat(span, context.formatAppliers.segment, format, context);\n }\n\n if (context.addDelimiterForEntity && isInlineEntity && isReadonly) {\n const [after] = addDelimiters(wrapper);\n\n context.regularSelection.current.segment = after;\n } else if (isInlineEntity) {\n context.regularSelection.current.segment = wrapper;\n }\n\n context.onNodeCreated?.(entityModel, wrapper);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { isBlockGroupEmpty } from '../../modelApi/common/isEmpty';\nimport { PseudoTagNames } from '../../formatHandlers/utils/defaultStyles';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelBlockHandler,\n ContentModelFormatContainer,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleFormatContainer: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n container: ContentModelFormatContainer,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let element = context.allowCacheElement ? container.cachedElement : undefined;\n\n if (element) {\n refNode = reuseCachedElement(parent, element, refNode);\n\n context.modelHandlers.blockGroupChildren(doc, element, container, context);\n } else if (!isBlockGroupEmpty(container)) {\n const containerNode = doc.createElement(container.tagName);\n\n if (context.allowCacheElement) {\n container.cachedElement = containerNode;\n }\n\n parent.insertBefore(containerNode, refNode);\n\n stackFormat(context, container.tagName, () => {\n applyFormat(containerNode, context.formatAppliers.container, container.format, context);\n applyFormat(\n containerNode,\n context.formatAppliers.segmentOnBlock,\n container.format,\n context\n );\n\n applyFormat(containerNode, context.formatAppliers.container, container.format, context);\n });\n\n if (container.tagName == 'pre') {\n stackFormat(context, PseudoTagNames.childOfPre, () => {\n context.modelHandlers.blockGroupChildren(doc, containerNode, container, context);\n });\n } else {\n context.modelHandlers.blockGroupChildren(doc, containerNode, container, context);\n }\n\n element = containerNode;\n }\n\n if (element) {\n context.onNodeCreated?.(container, element);\n }\n\n return refNode;\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport { isGeneralSegment } from '../../modelApi/common/isGeneralSegment';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { wrap } from 'roosterjs-editor-dom';\nimport {\n ContentModelBlockHandler,\n ContentModelGeneralBlock,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleGeneralModel: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n group: ContentModelGeneralBlock,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let node: Node = group.element;\n\n if (refNode && node.parentNode == parent) {\n refNode = reuseCachedElement(parent, node, refNode);\n } else {\n node = node.cloneNode();\n group.element = node as HTMLElement;\n\n parent.insertBefore(node, refNode);\n }\n\n if (isGeneralSegment(group) && isNodeOfType(node, NodeType.Element)) {\n const element = wrap(node, 'span');\n\n handleSegmentCommon(doc, node, element, group, context);\n } else {\n context.onNodeCreated?.(group, node);\n }\n\n context.modelHandlers.blockGroupChildren(doc, node, group, context);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport { parseValueWithUnit } from '../../formatHandlers/utils/parseValueWithUnit';\nimport {\n ContentModelHandler,\n ContentModelImage,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleImage: ContentModelHandler = (\n doc: Document,\n parent: Node,\n imageModel: ContentModelImage,\n context: ModelToDomContext\n) => {\n const img = doc.createElement('img');\n const element = document.createElement('span');\n\n parent.appendChild(element);\n element.appendChild(img);\n\n img.src = imageModel.src;\n\n if (imageModel.alt) {\n img.alt = imageModel.alt;\n }\n\n if (imageModel.title) {\n img.title = imageModel.title;\n }\n\n applyFormat(img, context.formatAppliers.image, imageModel.format, context);\n applyFormat(img, context.formatAppliers.dataset, imageModel.dataset, context);\n\n const { width, height } = imageModel.format;\n const widthNum = width ? parseValueWithUnit(width) : 0;\n const heightNum = height ? parseValueWithUnit(height) : 0;\n\n if (widthNum > 0) {\n img.width = widthNum;\n }\n\n if (heightNum > 0) {\n img.height = heightNum;\n }\n\n if (imageModel.isSelectedAsImageSelection) {\n context.imageSelection = {\n image: img,\n };\n }\n\n handleSegmentCommon(doc, img, element, imageModel, context);\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { listLevelMetadataFormatHandler } from '../../formatHandlers/list/listLevelMetadataFormatHandler';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\nimport {\n ContentModelBlockHandler,\n ContentModelListItem,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleList: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n listItem: ContentModelListItem,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let layer = 0;\n const { nodeStack } = context.listFormat;\n\n if (nodeStack.length == 0) {\n nodeStack.push({\n node: parent,\n });\n }\n\n // Skip existing list levels that has same properties so we can reuse them\n for (; layer < listItem.levels.length && layer + 1 < nodeStack.length; layer++) {\n const stackLevel = nodeStack[layer + 1];\n const itemLevel = listItem.levels[layer];\n\n if (\n stackLevel.listType != itemLevel.listType ||\n stackLevel.dataset?.editingInfo != itemLevel.dataset.editingInfo ||\n (itemLevel.listType == 'OL' && typeof itemLevel.format.startNumberOverride === 'number')\n ) {\n break;\n }\n }\n\n // Cut off remained list levels that we can't reuse\n nodeStack.splice(layer + 1);\n\n // Create new list levels that are after reused ones\n for (; layer < listItem.levels.length; layer++) {\n const level = listItem.levels[layer];\n const newList = doc.createElement(level.listType || 'UL');\n const lastParent = nodeStack[nodeStack.length - 1].node;\n\n lastParent.insertBefore(newList, layer == 0 ? refNode : null);\n\n applyFormat(newList, context.formatAppliers.listLevel, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n applyFormat(newList, [listLevelMetadataFormatHandler.apply], metadata || {}, context);\n\n if (\n metadata &&\n typeof metadata.orderedStyleType == 'undefined' &&\n typeof metadata.unorderedStyleType == 'undefined'\n ) {\n metadata = null;\n }\n\n return metadata;\n });\n applyFormat(newList, context.formatAppliers.dataset, level.dataset, context);\n\n nodeStack.push({ node: newList, ...level });\n\n context.onNodeCreated?.(level, newList);\n }\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { listItemMetadataFormatHandler } from '../../formatHandlers/list/listItemMetadataFormatHandler';\nimport { setParagraphNotImplicit } from '../../modelApi/block/setParagraphNotImplicit';\nimport { unwrap } from 'roosterjs-editor-dom';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\nimport {\n ContentModelBlockHandler,\n ContentModelListItem,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleListItem: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n listItem: ContentModelListItem,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n refNode = context.modelHandlers.list(doc, parent, listItem, context, refNode);\n\n const { nodeStack } = context.listFormat;\n\n let listParent = nodeStack?.[nodeStack?.length - 1]?.node || parent;\n const li = doc.createElement('li');\n const level = listItem.levels[listItem.levels.length - 1];\n\n // It is possible listParent is the same with parent param.\n // This happens when outdent a list item to cause it has no list level\n listParent.insertBefore(li, refNode?.parentNode == listParent ? refNode : null);\n\n if (level) {\n applyFormat(li, context.formatAppliers.listItemElement, listItem.format, context);\n applyFormat(li, context.formatAppliers.segment, listItem.formatHolder.format, context);\n applyFormat(li, context.formatAppliers.listItem, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n applyFormat(li, [listItemMetadataFormatHandler.apply], metadata || {}, context);\n\n return metadata;\n });\n\n context.modelHandlers.blockGroupChildren(doc, li, listItem, context);\n } else {\n // There is no level for this list item, that means it should be moved out of the list\n // For each paragraph, make it not implicit so it will have a DIV around it, to avoid more paragraphs connected together\n listItem.blocks.forEach(setParagraphNotImplicit);\n\n context.modelHandlers.blockGroupChildren(doc, li, listItem, context);\n\n unwrap(li);\n }\n\n context.onNodeCreated?.(listItem, li);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { getObjectKeys, unwrap } from 'roosterjs-editor-dom';\nimport { optimize } from '../optimizers/optimize';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelBlockHandler,\n ContentModelParagraph,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\nconst DefaultParagraphTag = 'div';\n\n/**\n * @internal\n */\nexport const handleParagraph: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n paragraph: ContentModelParagraph,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let container = context.allowCacheElement ? paragraph.cachedElement : undefined;\n\n if (container) {\n refNode = reuseCachedElement(parent, container, refNode);\n } else {\n stackFormat(context, paragraph.decorator?.tagName || null, () => {\n const needParagraphWrapper =\n !paragraph.isImplicit ||\n !!paragraph.decorator ||\n (getObjectKeys(paragraph.format).length > 0 &&\n paragraph.segments.some(segment => segment.segmentType != 'SelectionMarker'));\n const formatOnWrapper = needParagraphWrapper\n ? {\n ...(paragraph.decorator?.format || {}),\n ...paragraph.segmentFormat,\n }\n : {};\n\n container = doc.createElement(paragraph.decorator?.tagName || DefaultParagraphTag);\n\n parent.insertBefore(container, refNode);\n\n context.regularSelection.current = {\n block: needParagraphWrapper ? container : container.parentNode,\n segment: null,\n };\n\n const handleSegments = () => {\n const parent = container;\n\n if (parent) {\n const firstSegment = paragraph.segments[0];\n\n if (firstSegment?.segmentType == 'SelectionMarker') {\n // Make sure there is a segment created before selection marker.\n // If selection marker is the first selected segment in a paragraph, create a dummy text node,\n // so after rewrite, the regularSelection object can have a valid segment object set to the text node.\n context.modelHandlers.text(\n doc,\n parent,\n {\n ...firstSegment,\n segmentType: 'Text',\n text: '',\n },\n context\n );\n }\n\n paragraph.segments.forEach(segment => {\n context.modelHandlers.segment(doc, parent, segment, context);\n });\n }\n };\n\n if (needParagraphWrapper) {\n stackFormat(context, formatOnWrapper, handleSegments);\n\n applyFormat(container, context.formatAppliers.block, paragraph.format, context);\n applyFormat(container, context.formatAppliers.container, paragraph.format, context);\n applyFormat(\n container,\n context.formatAppliers.segmentOnBlock,\n formatOnWrapper,\n context\n );\n } else {\n handleSegments();\n }\n\n optimize(container);\n\n // It is possible the next sibling node is changed during processing child segments\n // e.g. When this paragraph is an implicit paragraph and it contains an inline entity segment\n // The segment will be appended to container as child then the container will be removed\n // since this paragraph it is implicit. In that case container.nextSibling will become original\n // inline entity's next sibling. So reset refNode to its real next sibling (after change) here\n // to make sure the value is correct.\n refNode = container.nextSibling;\n\n if (needParagraphWrapper) {\n if (context.allowCacheElement) {\n paragraph.cachedElement = container;\n }\n } else {\n unwrap(container);\n }\n });\n }\n\n if (container) {\n context.onNodeCreated?.(paragraph, container);\n }\n\n return refNode;\n};\n","import {\n ContentModelHandler,\n ContentModelSegment,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleSegment: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelSegment,\n context: ModelToDomContext\n) => {\n const regularSelection = context.regularSelection;\n\n // If start position is not set yet, and current segment is in selection, set start position\n if (segment.isSelected && !regularSelection.start) {\n regularSelection.start = {\n ...regularSelection.current,\n };\n }\n\n switch (segment.segmentType) {\n case 'Text':\n context.modelHandlers.text(doc, parent, segment, context);\n break;\n\n case 'Br':\n context.modelHandlers.br(doc, parent, segment, context);\n break;\n\n case 'Image':\n context.modelHandlers.image(doc, parent, segment, context);\n break;\n\n case 'General':\n context.modelHandlers.general(doc, parent, segment, context, null /*refNode*/);\n break;\n\n case 'Entity':\n context.modelHandlers.entity(doc, parent, segment, context, null /*refNode*/);\n break;\n }\n\n // If end position is not set, or it is not finalized, and current segment is still in selection, set end position\n // If there is other selection, we will overwrite regularSelection.end when we process that segment\n if (segment.isSelected && regularSelection.start) {\n regularSelection.end = {\n ...regularSelection.current,\n };\n }\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { ContentModelHandler, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const handleSegmentDecorator: ContentModelHandler = (\n doc,\n parent,\n segment,\n context\n) => {\n const { code, link } = segment;\n\n if (link) {\n stackFormat(context, 'a', () => {\n const a = document.createElement('a');\n\n moveChildNodes(a, parent);\n parent.appendChild(a);\n\n applyFormat(a, context.formatAppliers.link, link.format, context);\n applyFormat(a, context.formatAppliers.dataset, link.dataset, context);\n\n context.onNodeCreated?.(link, a);\n });\n }\n\n if (code) {\n stackFormat(context, 'code', () => {\n const codeNode = document.createElement('code');\n\n moveChildNodes(codeNode, parent);\n parent.appendChild(codeNode);\n\n applyFormat(codeNode, context.formatAppliers.code, code.format, context);\n\n context.onNodeCreated?.(code, codeNode);\n });\n }\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { hasMetadata } from '../../domUtils/metadata/updateMetadata';\nimport { isBlockEmpty } from '../../modelApi/common/isEmpty';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelTable,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleTable: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n table: ContentModelTable,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n if (isBlockEmpty(table)) {\n // Empty table, do not create TABLE element and just return\n return refNode;\n }\n\n let tableNode = context.allowCacheElement ? table.cachedElement : undefined;\n\n if (tableNode) {\n refNode = reuseCachedElement(parent, tableNode, refNode);\n\n moveChildNodes(tableNode);\n } else {\n tableNode = doc.createElement('table');\n\n if (context.allowCacheElement) {\n table.cachedElement = tableNode;\n }\n\n parent.insertBefore(tableNode, refNode);\n\n applyFormat(tableNode, context.formatAppliers.block, table.format, context);\n applyFormat(tableNode, context.formatAppliers.table, table.format, context);\n applyFormat(tableNode, context.formatAppliers.tableBorder, table.format, context);\n applyFormat(tableNode, context.formatAppliers.dataset, table.dataset, context);\n }\n\n context.onNodeCreated?.(table, tableNode);\n\n const tbody = doc.createElement('tbody');\n tableNode.appendChild(tbody);\n\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n\n if (tableRow.cells.length == 0) {\n // Skip empty row\n continue;\n }\n\n const tr = (context.allowCacheElement && tableRow.cachedElement) || doc.createElement('tr');\n tbody.appendChild(tr);\n moveChildNodes(tr);\n\n if (!tableRow.cachedElement) {\n if (context.allowCacheElement) {\n tableRow.cachedElement = tr;\n }\n\n applyFormat(tr, context.formatAppliers.tableRow, tableRow.format, context);\n }\n\n context.onNodeCreated?.(tableRow, tr);\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n const cell = tableRow.cells[col];\n\n if (cell.isSelected) {\n context.tableSelection = context.tableSelection || {\n table: tableNode,\n firstCell: { x: col, y: row },\n lastCell: { x: col, y: row },\n };\n\n if (context.tableSelection.table == tableNode) {\n const lastCell = context.tableSelection.lastCell;\n\n lastCell.x = Math.max(lastCell.x, col);\n lastCell.y = Math.max(lastCell.y, row);\n }\n }\n\n if (!cell.spanAbove && !cell.spanLeft) {\n let td =\n (context.allowCacheElement && cell.cachedElement) ||\n doc.createElement(cell.isHeader ? 'th' : 'td');\n\n tr.appendChild(td);\n\n let rowSpan = 1;\n let colSpan = 1;\n let width = table.widths[col];\n let height = tableRow.height;\n\n for (; table.rows[row + rowSpan]?.cells[col]?.spanAbove; rowSpan++) {\n height += table.rows[row + rowSpan].height;\n }\n for (; tableRow.cells[col + colSpan]?.spanLeft; colSpan++) {\n width += table.widths[col + colSpan];\n }\n\n if (rowSpan > 1) {\n td.rowSpan = rowSpan;\n }\n\n if (colSpan > 1) {\n td.colSpan = colSpan;\n }\n\n if (!cell.cachedElement || (cell.format.useBorderBox && hasMetadata(table))) {\n if (width > 0 && !td.style.width) {\n td.style.width = width + 'px';\n }\n\n if (height > 0 && !td.style.height) {\n td.style.height = height + 'px';\n }\n }\n\n if (!cell.cachedElement) {\n if (context.allowCacheElement) {\n cell.cachedElement = td;\n }\n\n applyFormat(td, context.formatAppliers.block, cell.format, context);\n applyFormat(td, context.formatAppliers.tableCell, cell.format, context);\n applyFormat(td, context.formatAppliers.tableCellBorder, cell.format, context);\n applyFormat(td, context.formatAppliers.dataset, cell.dataset, context);\n }\n\n context.modelHandlers.blockGroupChildren(doc, td, cell, context);\n\n context.onNodeCreated?.(cell, td);\n }\n }\n }\n\n return refNode;\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport {\n ContentModelHandler,\n ContentModelText,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleText: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelText,\n context: ModelToDomContext\n) => {\n const txt = doc.createTextNode(segment.text);\n const element = doc.createElement('span');\n\n parent.appendChild(element);\n element.appendChild(txt);\n\n handleSegmentCommon(doc, txt, element, segment, context);\n};\n","import { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\nconst OptimizeTags = ['SPAN', 'B', 'EM', 'I', 'U', 'SUB', 'SUP', 'STRIKE', 'S', 'A', 'CODE'];\n\n/**\n * @internal\n */\nexport function mergeNode(root: Node) {\n for (let child = root.firstChild; child; ) {\n const next = child.nextSibling;\n\n if (\n next &&\n isNodeOfType(child, NodeType.Element) &&\n isNodeOfType(next, NodeType.Element) &&\n child.tagName == next.tagName &&\n OptimizeTags.indexOf(child.tagName) >= 0 &&\n hasSameAttributes(child, next)\n ) {\n while (next.firstChild) {\n child.appendChild(next.firstChild);\n }\n\n next.parentNode!.removeChild(next);\n } else {\n child = next;\n }\n }\n}\n\nfunction hasSameAttributes(element1: HTMLElement, element2: HTMLElement) {\n const attr1 = element1.attributes;\n const attr2 = element2.attributes;\n\n if (attr1.length != attr2.length) {\n return false;\n }\n\n for (let i = 0; i < attr1.length; i++) {\n if (attr1[i].name != attr2[i].name || attr1[i].value != attr2[i].value) {\n return false;\n }\n }\n\n return true;\n}\n","import { EntityClasses, NodeType } from 'roosterjs-editor-types';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { mergeNode } from './mergeNode';\nimport { removeUnnecessarySpan } from './removeUnnecessarySpan';\n\n/**\n * @internal\n */\nexport function optimize(root: Node) {\n /**\n * Do no do any optimization to entity\n */\n if (\n isNodeOfType(root, NodeType.Element) &&\n root.classList.contains(EntityClasses.ENTITY_INFO_NAME)\n ) {\n return;\n }\n\n removeUnnecessarySpan(root);\n mergeNode(root);\n\n for (let child = root.firstChild; child; child = child.nextSibling) {\n optimize(child);\n }\n}\n","import { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function removeUnnecessarySpan(root: Node) {\n for (let child = root.firstChild; child; ) {\n if (\n isNodeOfType(child, NodeType.Element) &&\n child.tagName == 'SPAN' &&\n child.attributes.length == 0\n ) {\n const node = child;\n let refNode = child.nextSibling;\n child = child.nextSibling;\n\n while (node.lastChild) {\n const newNode = node.lastChild;\n root.insertBefore(newNode, refNode);\n refNode = newNode;\n }\n\n root.removeChild(node);\n } else {\n child = child.nextSibling;\n }\n }\n}\n","import {\n ContentModelFormatBase,\n FormatApplier,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Apply formats to the given HTML element using specified appliers\n * @param element The element to apply formats to\n * @param appliers The appliers we are using to apply formats\n * @param format The format object we get format info from\n * @param context Content Model to DOM context\n */\nexport function applyFormat(\n element: HTMLElement,\n appliers: (FormatApplier | null)[],\n format: T,\n context: ModelToDomContext\n) {\n appliers.forEach(applier => {\n applier?.(format, element, context);\n });\n}\n","import { applyFormat } from './applyFormat';\nimport { ContentModelSegment, ModelToDomContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function handleSegmentCommon(\n doc: Document,\n segmentNode: Node,\n containerNode: HTMLElement,\n segment: ContentModelSegment,\n context: ModelToDomContext\n) {\n if (!segmentNode.firstChild) {\n context.regularSelection.current.segment = segmentNode;\n }\n\n applyFormat(containerNode, context.formatAppliers.styleBasedSegment, segment.format, context);\n\n context.modelHandlers.segmentDecorator(doc, containerNode, segment, context);\n\n applyFormat(containerNode, context.formatAppliers.elementBasedSegment, segment.format, context);\n\n context.onNodeCreated?.(segment, segmentNode);\n}\n","import { getEntityFromElement } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function reuseCachedElement(parent: Node, element: Node, refNode: Node | null): Node | null {\n if (element.parentNode == parent) {\n // Remove nodes before the one we are hitting since they don't appear in Content Model at this position.\n // But we don't want to touch entity since it would better to keep entity at its place unless it is removed\n // In that case we will remove it after we have handled all other nodes\n while (refNode && refNode != element && !isEntity(refNode)) {\n const next = refNode.nextSibling;\n\n refNode.parentNode?.removeChild(refNode);\n refNode = next;\n }\n\n if (refNode && refNode == element) {\n refNode = refNode.nextSibling;\n } else {\n parent.insertBefore(element, refNode);\n }\n } else {\n parent.insertBefore(element, refNode);\n }\n\n return refNode;\n}\n\n/**\n * @internal\n */\nexport function removeNode(node: Node): Node | null {\n const next = node.nextSibling;\n node.parentNode?.removeChild(node);\n\n return next;\n}\n\nfunction isEntity(node: Node) {\n return isNodeOfType(node, NodeType.Element) && !!getEntityFromElement(node);\n}\n","import {\n ContentModelBlockFormat,\n ContentModelSegmentFormat,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function stackFormat(\n context: ModelToDomContext,\n tagNameOrFormat: string | (ContentModelSegmentFormat & ContentModelBlockFormat) | null,\n callback: () => void\n) {\n const newFormat =\n typeof tagNameOrFormat === 'string'\n ? context.defaultImplicitFormatMap[tagNameOrFormat]\n : tagNameOrFormat;\n\n if (newFormat) {\n const implicitFormat = context.implicitFormat;\n\n try {\n context.implicitFormat = {\n ...implicitFormat,\n ...newFormat,\n };\n\n callback();\n } finally {\n context.implicitFormat = implicitFormat;\n }\n } else {\n callback();\n }\n}\n","import { contains } from 'roosterjs-editor-dom';\nimport { DomToModelContext, ElementProcessor } from 'roosterjs-content-model-types';\nimport { entityProcessor, hasMetadata, tableProcessor } from 'roosterjs-content-model-dom';\nimport { getSelectionRootNode } from '../../modelApi/selection/getSelectionRootNode';\n\n/**\n * @internal\n */\nexport const tablePreProcessor: ElementProcessor = (group, element, context) => {\n const processor = shouldUseTableProcessor(element, context) ? tableProcessor : entityProcessor;\n\n processor(group, element, context);\n};\n\nfunction shouldUseTableProcessor(element: HTMLTableElement, context: DomToModelContext) {\n // Treat table as a real table when:\n // 1. It is a roosterjs table (has metadata)\n // 2. Table is in selection\n // 3. There is selection inside table (or whole table is selected)\n // Otherwise, we treat the table as entity so we will not change it when write back\n return (\n hasMetadata(element) ||\n context.isInSelection ||\n contains(element, getSelectionRootNode(context.rangeEx), true /*treatSameNodeAsContain*/)\n );\n}\n","import { Border } from '../publicTypes/interface/Border';\n\nconst BorderStyles = [\n 'none',\n 'hidden',\n 'dotted',\n 'dashed',\n 'solid',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n];\nconst BorderSizeRegex = /^(thin|medium|thick|[\\d\\.]+\\w*)$/;\n\n/**\n * Extract an integrated border string with border width, style, color to value tuple\n * @param combinedBorder The integrated border style string\n * @returns An array with the splitted values\n */\nexport function extractBorderValues(combinedBorder?: string): Border {\n const result: Border = {};\n const values = (combinedBorder || '').replace(/, /g, ',').split(' ');\n\n values.forEach(v => {\n if (BorderStyles.indexOf(v) >= 0 && !result.style) {\n result.style = v;\n } else if (BorderSizeRegex.test(v) && !result.width) {\n result.width = v;\n } else if (v && !result.color) {\n result.color = v; // TODO: Do we need to use a regex to match all possible colors?\n }\n });\n\n return result;\n}\n\n/**\n * Combine border value array back to string\n * @param values Input string values\n * @param initialValue Initial value for those items without valid value\n */\nexport function combineBorderValue(value: Border): string {\n return [value.width || '', value.style || '', value.color || ''].join(' ').trim() || 'none';\n}\n","import { ContentModelImage, ImageMetadataFormat } from 'roosterjs-content-model-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\nimport {\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from 'roosterjs-editor-dom';\n\nconst NumberDefinition = createNumberDefinition();\n\nconst ImageMetadataFormatDefinition = createObjectDefinition>({\n widthPx: NumberDefinition,\n heightPx: NumberDefinition,\n leftPercent: NumberDefinition,\n rightPercent: NumberDefinition,\n topPercent: NumberDefinition,\n bottomPercent: NumberDefinition,\n angleRad: NumberDefinition,\n src: createStringDefinition(),\n naturalHeight: NumberDefinition,\n naturalWidth: NumberDefinition,\n});\n\n/**\n * Update image metadata with a callback\n * @param image The image Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateImageMetadata(\n image: ContentModelImage,\n callback?: (format: ImageMetadataFormat | null) => ImageMetadataFormat | null\n): ImageMetadataFormat | null {\n return updateMetadata(image, callback, ImageMetadataFormatDefinition);\n}\n","import { ContentModelTableCell } from 'roosterjs-content-model-types';\nimport { createBooleanDefinition, createObjectDefinition } from 'roosterjs-editor-dom';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\n\nconst TableCellMetadataFormatDefinition = createObjectDefinition>(\n {\n bgColorOverride: createBooleanDefinition(true /** isOptional */),\n vAlignOverride: createBooleanDefinition(true /** isOptional */),\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update table cell metadata with a callback\n * @param cell The table cell Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateTableCellMetadata(\n cell: ContentModelTableCell,\n callback?: (format: TableCellMetadataFormat | null) => TableCellMetadataFormat | null\n): TableCellMetadataFormat | null {\n return updateMetadata(cell, callback, TableCellMetadataFormatDefinition);\n}\n","import { ContentModelTable, TableMetadataFormat } from 'roosterjs-content-model-types';\nimport { TableBorderFormat } from 'roosterjs-editor-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\nimport {\n createBooleanDefinition,\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from 'roosterjs-editor-dom';\n\nconst NullStringDefinition = createStringDefinition(\n false /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst BooleanDefinition = createBooleanDefinition(false /** isOptional */);\n\nconst TableFormatDefinition = createObjectDefinition>(\n {\n topBorderColor: NullStringDefinition,\n bottomBorderColor: NullStringDefinition,\n verticalBorderColor: NullStringDefinition,\n hasHeaderRow: BooleanDefinition,\n headerRowColor: NullStringDefinition,\n hasFirstColumn: BooleanDefinition,\n hasBandedColumns: BooleanDefinition,\n hasBandedRows: BooleanDefinition,\n bgColorEven: NullStringDefinition,\n bgColorOdd: NullStringDefinition,\n tableBorderFormat: createNumberDefinition(\n false /** isOptional */,\n undefined /* value */,\n TableBorderFormat.DEFAULT /* first table border format, TODO: Use Min/Max to specify valid values */,\n TableBorderFormat.CLEAR /* last table border format, , TODO: Use Min/Max to specify valid values */\n ),\n verticalAlign: NullStringDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update table metadata with a callback\n * @param table The table Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateTableMetadata(\n table: ContentModelTable,\n callback?: (format: TableMetadataFormat | null) => TableMetadataFormat | null\n): TableMetadataFormat | null {\n return updateMetadata(table, callback, TableFormatDefinition);\n}\n","const SPACES_REGEX = /[\\u2000\\u2009\\u200a​\\u200b​\\u202f\\u205f​\\u3000\\s\\t\\r\\n]/gm;\nconst PUNCTUATIONS = '.,?!:\"()[]\\\\/';\n\n/**\n * @internal\n * Check if the given character is punctuation\n * @param char The character to check\n */\nexport function isPunctuation(char: string) {\n return PUNCTUATIONS.indexOf(char) >= 0;\n}\n\n/**\n * @internal\n * Check if the give character is a space. A space can be normal ASCII pace (32) or non-break space (160) or other kinds of spaces\n * such as ZeroWidthSpace, ...\n * @param char The character to check\n */\nexport function isSpace(char: string) {\n const code = char?.charCodeAt(0) ?? 0;\n return code == 160 || code == 32 || SPACES_REGEX.test(char);\n}\n\n/**\n * @internal\n * Normalize spaces of the given string. After normalization, all leading (for forward) or trailing (for backward) spaces\n * will be replaces with non-break space (160)\n * @param txt The string to normalize\n * @param isForward Whether normalize forward or backward\n */\nexport function normalizeText(txt: string, isForward: boolean): string {\n return txt.replace(isForward ? /^\\u0020+/ : /\\u0020+$/, '\\u00A0');\n}\n","import { ContentModelEditorCore } from '../publicTypes/ContentModelEditorCore';\nimport { ContentModelEditorOptions, IContentModelEditor } from '../publicTypes/IContentModelEditor';\nimport { createContentModelEditorCore } from './createContentModelEditorCore';\nimport { EditorBase } from 'roosterjs-editor-core';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport {\n ContentModelDocument,\n ContentModelSegmentFormat,\n DomToModelOption,\n ModelToDomOption,\n} from 'roosterjs-content-model-types';\n\n/**\n * Editor for Content Model.\n * (This class is still under development, and may still be changed in the future with some breaking changes)\n */\nexport default class ContentModelEditor\n extends EditorBase\n implements IContentModelEditor {\n /**\n * Creates an instance of Editor\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\n constructor(contentDiv: HTMLDivElement, options: ContentModelEditorOptions = {}) {\n super(contentDiv, options, createContentModelEditorCore);\n }\n\n /**\n * Create Content Model from DOM tree in this editor\n * @param option The option to customize the behavior of DOM to Content Model conversion\n */\n createContentModel(\n option?: DomToModelOption,\n selectionOverride?: SelectionRangeEx\n ): ContentModelDocument {\n const core = this.getCore();\n\n return core.api.createContentModel(core, option, selectionOverride);\n }\n\n /**\n * Set content with content model\n * @param model The content model to set\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n */\n setContentModel(model: ContentModelDocument, option?: ModelToDomOption) {\n const core = this.getCore();\n\n core.api.setContentModel(core, model, option);\n }\n\n /**\n * Cache a content model object. Next time when format with content model, we can reuse it.\n * @param model\n */\n cacheContentModel(model: ContentModelDocument | null) {\n const core = this.getCore();\n\n if (!core.lifecycle.shadowEditFragment) {\n core.cachedModel = model || undefined;\n core.cachedRangeEx = undefined;\n }\n }\n\n /**\n * Get default format as ContentModelSegmentFormat.\n * This is a replacement of IEditor.getDefaultFormat for Content Model.\n * @returns The default format\n */\n getContentModelDefaultFormat(): ContentModelSegmentFormat {\n const core = this.getCore();\n\n return core.defaultFormat;\n }\n}\n","import { cloneModel } from '../../modelApi/common/cloneModel';\nimport { domToContentModel } from 'roosterjs-content-model-dom';\nimport { DomToModelOption } from 'roosterjs-content-model-types';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport { tablePreProcessor } from '../../domToModel/processors/tablePreProcessor';\nimport {\n ContentModelEditorCore,\n CreateContentModel,\n} from '../../publicTypes/ContentModelEditorCore';\n\n/**\n * @internal\n * Create Content Model from DOM tree in this editor\n * @param option The option to customize the behavior of DOM to Content Model conversion\n */\nexport const createContentModel: CreateContentModel = (core, option, selectionOverride) => {\n let cachedModel = selectionOverride ? null : core.cachedModel;\n\n if (cachedModel && core.lifecycle.shadowEditFragment) {\n // When in shadow edit, use a cloned model so we won't pollute the cached one\n cachedModel = cloneModel(cachedModel, { includeCachedElement: true });\n }\n\n return cachedModel || internalCreateContentModel(core, option, selectionOverride);\n};\n\nfunction internalCreateContentModel(\n core: ContentModelEditorCore,\n option: DomToModelOption | undefined,\n selectionOverride?: SelectionRangeEx\n) {\n const context: DomToModelOption = {\n ...core.defaultDomToModelOptions,\n ...option,\n };\n\n context.processorOverride = {\n table: tablePreProcessor,\n ...context.processorOverride,\n ...option?.processorOverride,\n };\n\n return domToContentModel(\n core.contentDiv,\n context,\n core.api.createEditorContext(core),\n selectionOverride || core.api.getSelectionRangeEx(core)\n );\n}\n","import { CreateEditorContext } from '../../publicTypes/ContentModelEditorCore';\nimport { EditorContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Create a EditorContext object used by ContentModel API\n */\nexport const createEditorContext: CreateEditorContext = core => {\n const { lifecycle, defaultFormat, darkColorHandler, addDelimiterForEntity, contentDiv } = core;\n\n const context: EditorContext = {\n isDarkMode: lifecycle.isDarkMode,\n defaultFormat: defaultFormat,\n darkColorHandler: darkColorHandler,\n addDelimiterForEntity: addDelimiterForEntity,\n allowCacheElement: true,\n };\n\n checkRootRtl(contentDiv, context);\n checkZoomScale(contentDiv, context);\n\n return context;\n};\n\nfunction checkZoomScale(element: HTMLElement, context: EditorContext) {\n const originalWidth = element?.getBoundingClientRect()?.width || 0;\n const visualWidth = element.offsetWidth;\n\n if (visualWidth > 0 && originalWidth > 0) {\n context.zoomScale = Math.round((originalWidth / visualWidth) * 100) / 100;\n }\n}\n\nfunction checkRootRtl(element: HTMLElement, context: EditorContext) {\n const style = element?.ownerDocument.defaultView?.getComputedStyle(element);\n\n if (style?.direction == 'rtl') {\n context.isRootRtl = true;\n }\n}\n","import { ContentModelEditorCore } from '../../publicTypes/ContentModelEditorCore';\nimport { GetSelectionRangeEx } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport const getSelectionRangeEx: GetSelectionRangeEx = core => {\n const contentModelCore = core as ContentModelEditorCore;\n\n return contentModelCore.cachedRangeEx ?? core.originalApi.getSelectionRangeEx(core);\n};\n","import { contentModelToDom } from 'roosterjs-content-model-dom';\nimport { SetContentModel } from '../../publicTypes/ContentModelEditorCore';\n\n/**\n * @internal\n * Set content with content model\n * @param model The content model to set\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n */\nexport const setContentModel: SetContentModel = (core, model, option) => {\n const range = contentModelToDom(\n core.contentDiv.ownerDocument,\n core.contentDiv,\n model,\n core.api.createEditorContext(core),\n {\n ...core.defaultModelToDomOptions,\n ...(option || {}),\n }\n );\n\n if (!core.lifecycle.shadowEditFragment) {\n core.api.select(core, range);\n core.cachedRangeEx = range || undefined;\n }\n\n return range;\n};\n","import { ContentModelEditorCore } from '../../publicTypes/ContentModelEditorCore';\nimport { getSelectionPath } from 'roosterjs-editor-dom';\nimport { PluginEventType, SwitchShadowEdit } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Switch the Shadow Edit mode of editor On/Off\n * @param editorCore The EditorCore object\n * @param isOn True to switch On, False to switch Off\n */\nexport const switchShadowEdit: SwitchShadowEdit = (editorCore, isOn): void => {\n // TODO: Use strong-typed editor core object\n const core = editorCore as ContentModelEditorCore;\n\n if (isOn != !!core.lifecycle.shadowEditFragment) {\n if (isOn) {\n if (!core.cachedModel) {\n core.cachedModel = core.api.createContentModel(core);\n }\n\n const range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n\n // Fake object, not used in Content Model Editor, just to satisfy original editor code\n // TODO: we can remove them once we have standalone Content Model Editor\n const fragment = core.contentDiv.ownerDocument.createDocumentFragment();\n const selectionPath = range && getSelectionPath(core.contentDiv, range);\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EnteredShadowEdit,\n fragment,\n selectionPath,\n },\n false /*broadcast*/\n );\n\n core.lifecycle.shadowEditSelectionPath = selectionPath;\n core.lifecycle.shadowEditFragment = fragment;\n } else {\n core.lifecycle.shadowEditFragment = null;\n core.lifecycle.shadowEditSelectionPath = null;\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.LeavingShadowEdit,\n },\n false /*broadcast*/\n );\n\n if (core.cachedModel) {\n core.api.setContentModel(core, core.cachedModel);\n }\n }\n }\n};\n","import paste from '../../publicApi/utils/paste';\nimport { cloneModel } from '../../modelApi/common/cloneModel';\nimport { contentModelToDom, normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../../publicApi/utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport type {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDecorator,\n ContentModelSegment,\n ContentModelTableRow,\n} from 'roosterjs-content-model-types';\nimport {\n addRangeToSelection,\n createElement,\n moveChildNodes,\n createRange,\n extractClipboardItems,\n toArray,\n wrap,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n CopyPastePluginState,\n IEditor,\n PluginEventType,\n PluginWithState,\n KnownCreateElementDataIndex,\n ClipboardData,\n SelectionRangeTypes,\n SelectionRangeEx,\n} from 'roosterjs-editor-types';\n\n/**\n * Copy and paste plugin for handling onCopy and onPaste event\n */\nexport default class ContentModelCopyPastePlugin implements PluginWithState {\n private editor: IContentModelEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Construct a new instance of CopyPastePlugin\n * @param options The editor options\n */\n constructor(private state: CopyPastePluginState) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContentModelCopyPaste';\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 as IContentModelEditor;\n this.disposer = this.editor.addDomEventHandler({\n paste: e => this.onPaste(e),\n copy: e => this.onCutCopy(e, false /*isCut*/),\n cut: e => this.onCutCopy(e, true /*isCut*/),\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.disposer) {\n this.disposer();\n }\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onCutCopy(event: Event, isCut: boolean) {\n if (!this.editor) {\n return;\n }\n const selection = this.editor.getSelectionRangeEx();\n if (selection && !selection.areAllCollapsed) {\n const model = this.editor.createContentModel();\n\n const pasteModel = cloneModel(model);\n if (selection.type === SelectionRangeTypes.TableSelection) {\n iterateSelections([pasteModel], (path, tableContext) => {\n if (tableContext?.table) {\n const table = tableContext?.table;\n table.rows = table.rows\n .map(row => {\n return {\n ...row,\n cells: row.cells.filter(cell => cell.isSelected),\n };\n })\n .filter(row => row.cells.length > 0);\n return true;\n }\n return false;\n });\n }\n const tempDiv = this.getTempDiv(this.editor);\n const selectionForCopy = contentModelToDom(\n tempDiv.ownerDocument,\n tempDiv,\n pasteModel,\n undefined /*editorContext, leave it undefined to use default context since we don't need editor-related dark mode info for pasted content*/,\n {\n onNodeCreated,\n }\n );\n\n let newRange: Range | null = selectionExToRange(selectionForCopy, tempDiv);\n if (newRange) {\n newRange = this.editor.triggerPluginEvent(PluginEventType.BeforeCutCopy, {\n clonedRoot: tempDiv,\n range: newRange,\n rawEvent: event as ClipboardEvent,\n isCut,\n }).range;\n\n if (newRange) {\n addRangeToSelection(newRange);\n }\n\n this.editor.runAsync(editor => {\n cleanUpAndRestoreSelection(tempDiv);\n editor.focus();\n editor.select(selection);\n\n if (isCut) {\n formatWithContentModel(\n editor as IContentModelEditor,\n 'cut',\n (model, context) => {\n if (\n deleteSelection(model, [], context).deleteResult ==\n DeleteResult.Range\n ) {\n normalizeContentModel(model);\n }\n\n return true;\n },\n {\n changeSource: ChangeSource.Cut,\n }\n );\n }\n });\n }\n }\n }\n\n private onPaste = (event: Event) => {\n if (this.editor && isClipboardEvent(event)) {\n const editor = this.editor;\n\n const dataTransfer = event.clipboardData;\n\n if (dataTransfer?.items) {\n event.preventDefault();\n extractClipboardItems(\n toArray(dataTransfer.items),\n {\n allowedCustomPasteType: this.state.allowedCustomPasteType,\n },\n true /*pasteNativeEvent*/\n ).then((clipboardData: ClipboardData) => {\n if (!editor.isDisposed()) {\n paste(editor, clipboardData);\n }\n });\n }\n }\n };\n\n private getTempDiv(editor: IEditor) {\n const div = editor.getCustomData(\n 'CopyPasteTempDiv',\n () => {\n const tempDiv = createElement(\n KnownCreateElementDataIndex.CopyPasteTempDiv,\n editor.getDocument()\n ) as HTMLDivElement;\n\n editor.getDocument().body.appendChild(tempDiv);\n\n return tempDiv;\n },\n tempDiv => tempDiv.parentNode?.removeChild(tempDiv)\n );\n\n div.style.backgroundColor = 'white';\n div.style.color = 'black';\n div.childNodes.forEach(node => div.removeChild(node));\n\n div.style.display = '';\n div.focus();\n\n return div;\n }\n}\n\nfunction cleanUpAndRestoreSelection(tempDiv: HTMLDivElement) {\n tempDiv.style.backgroundColor = '';\n tempDiv.style.color = '';\n tempDiv.style.display = 'none';\n moveChildNodes(tempDiv);\n}\n\nfunction isClipboardEvent(event: Event): event is ClipboardEvent {\n return !!(event as ClipboardEvent).clipboardData;\n}\n\nfunction selectionExToRange(\n selection: SelectionRangeEx | null,\n tempDiv: HTMLDivElement\n): Range | null {\n if (!selection) {\n return null;\n }\n let newRange: Range | null = null;\n if (selection.type === SelectionRangeTypes.TableSelection && selection.coordinates) {\n const table = tempDiv.querySelector(`#${selection.table.id}`) as HTMLTableElement;\n const elementToSelect =\n table.parentElement?.childElementCount == 1 ? table.parentElement : table;\n newRange = createRange(elementToSelect);\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\n const image = tempDiv.querySelector('#' + selection.image.id);\n\n if (image) {\n newRange = createRange(image);\n }\n } else {\n newRange = selection.ranges[0];\n }\n\n return newRange;\n}\n\n/**\n * @internal\n * Exported only for unit testing\n */\nexport const onNodeCreated = (\n _:\n | ContentModelBlock\n | ContentModelBlockGroup\n | ContentModelSegment\n | ContentModelDecorator\n | ContentModelTableRow,\n node: Node\n): void => {\n if (safeInstanceOf(node, 'HTMLTableElement')) {\n wrap(node, 'div');\n }\n};\n","import { EditorPlugin } from 'roosterjs-editor-types';\n\n/**\n * Dummy plugin, just to skip original TypeInContainerPlugin's behavior\n */\nexport default class ContentModelTypeInContainerPlugin implements EditorPlugin {\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelTypeInContainer';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize() {}\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {}\n}\n","import ContentModelCopyPastePlugin from './corePlugins/ContentModelCopyPastePlugin';\nimport ContentModelEditPlugin from './plugins/ContentModelEditPlugin';\nimport ContentModelFormatPlugin from './plugins/ContentModelFormatPlugin';\nimport ContentModelTypeInContainerPlugin from './corePlugins/ContentModelTypeInContainerPlugin';\nimport { ContentModelEditorCore } from '../publicTypes/ContentModelEditorCore';\nimport { ContentModelEditorOptions } from '../publicTypes/IContentModelEditor';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { CoreCreator, EditorCore, ExperimentalFeatures } from 'roosterjs-editor-types';\nimport { createContentModel } from './coreApi/createContentModel';\nimport { createEditorContext } from './coreApi/createEditorContext';\nimport { createEditorCore, isFeatureEnabled } from 'roosterjs-editor-core';\nimport { getSelectionRangeEx } from './coreApi/getSelectionRangeEx';\nimport { setContentModel } from './coreApi/setContentModel';\nimport { switchShadowEdit } from './coreApi/switchShadowEdit';\n\n/**\n * Editor Core creator for Content Model editor\n */\nexport const createContentModelEditorCore: CoreCreator<\n ContentModelEditorCore,\n ContentModelEditorOptions\n> = (contentDiv, options) => {\n const modifiedOptions: ContentModelEditorOptions = {\n ...options,\n plugins: [\n ...(options.plugins || []),\n new ContentModelFormatPlugin(),\n new ContentModelEditPlugin(),\n ],\n corePluginOverride: {\n typeInContainer: new ContentModelTypeInContainerPlugin(),\n copyPaste: isFeatureEnabled(\n options.experimentalFeatures,\n ExperimentalFeatures.ContentModelPaste\n )\n ? new ContentModelCopyPastePlugin({\n allowedCustomPasteType: options.allowedCustomPasteType || [],\n })\n : undefined,\n ...(options.corePluginOverride || {}),\n },\n };\n\n const core = createEditorCore(contentDiv, modifiedOptions) as ContentModelEditorCore;\n\n promoteToContentModelEditorCore(core, modifiedOptions);\n\n return core;\n};\n\n/**\n * Creator Content Model Editor Core from Editor Core\n * @param core The original EditorCore object\n * @param options Options of this editor\n */\nexport function promoteToContentModelEditorCore(\n core: EditorCore,\n options: ContentModelEditorOptions\n) {\n const cmCore = core as ContentModelEditorCore;\n\n promoteDefaultFormat(cmCore);\n promoteContentModelInfo(cmCore, options);\n promoteCoreApi(cmCore);\n}\n\nfunction promoteDefaultFormat(cmCore: ContentModelEditorCore) {\n cmCore.lifecycle.defaultFormat = cmCore.lifecycle.defaultFormat || {};\n cmCore.defaultFormat = getDefaultSegmentFormat(cmCore);\n}\n\nfunction promoteContentModelInfo(\n cmCore: ContentModelEditorCore,\n options: ContentModelEditorOptions\n) {\n const experimentalFeatures = cmCore.lifecycle.experimentalFeatures;\n\n cmCore.defaultDomToModelOptions = options.defaultDomToModelOptions || {};\n cmCore.defaultModelToDomOptions = options.defaultModelToDomOptions || {};\n cmCore.addDelimiterForEntity = isFeatureEnabled(\n experimentalFeatures,\n ExperimentalFeatures.InlineEntityReadOnlyDelimiters\n );\n}\n\nfunction promoteCoreApi(cmCore: ContentModelEditorCore) {\n cmCore.api.createEditorContext = createEditorContext;\n cmCore.api.createContentModel = createContentModel;\n cmCore.api.setContentModel = setContentModel;\n cmCore.api.switchShadowEdit = switchShadowEdit;\n cmCore.api.getSelectionRangeEx = getSelectionRangeEx;\n cmCore.originalApi.createEditorContext = createEditorContext;\n cmCore.originalApi.createContentModel = createContentModel;\n cmCore.originalApi.setContentModel = setContentModel;\n}\n\nfunction getDefaultSegmentFormat(core: EditorCore): ContentModelSegmentFormat {\n const format = core.lifecycle.defaultFormat ?? {};\n\n return {\n fontWeight: format.bold ? 'bold' : undefined,\n italic: format.italic || undefined,\n underline: format.underline || undefined,\n fontFamily: format.fontFamily || undefined,\n fontSize: format.fontSize || undefined,\n textColor: format.textColors?.lightModeColor || format.textColor || undefined,\n backgroundColor:\n format.backgroundColors?.lightModeColor || format.backgroundColor || undefined,\n };\n}\n","import { IContentModelEditor } from '../publicTypes/IContentModelEditor';\nimport { IEditor } from 'roosterjs-editor-types';\n\n/**\n * Check if the given editor object is Content Model editor\n * @param editor The editor to check\n * @returns True if the given editor is Content Model editor, otherwise false\n */\nexport default function isContentModelEditor(editor: IEditor): editor is IContentModelEditor {\n const contentModelEditor = editor as IContentModelEditor;\n\n return !!contentModelEditor.createContentModel;\n}\n","import handleKeyDownEvent from '../../publicApi/editing/handleKeyDownEvent';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../../publicApi/utils/formatWithContentModel';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { isNodeOfType, normalizeContentModel } from 'roosterjs-content-model-dom';\nimport {\n EditorPlugin,\n IEditor,\n Keys,\n NodePosition,\n NodeType,\n PluginEvent,\n PluginEventType,\n PluginKeyDownEvent,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport {\n getObjectKeys,\n isBlockElement,\n isCharacterValue,\n isModifierKey,\n Position,\n} from 'roosterjs-editor-dom';\n\n// During IME input, KeyDown event will have \"Process\" as key\nconst ProcessKey = 'Process';\n\n/**\n * ContentModel plugins helps editor to do editing operation on top of content model.\n * This includes:\n * 1. Delete Key\n * 2. Backspace Key\n */\nexport default class ContentModelEditPlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n private hasDefaultFormat = false;\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelEdit';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n\n const defaultFormat = this.editor.getContentModelDefaultFormat();\n this.hasDefaultFormat =\n getObjectKeys(defaultFormat).filter(x => typeof defaultFormat[x] !== 'undefined')\n .length > 0;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case PluginEventType.KeyDown:\n this.handleKeyDownEvent(this.editor, event);\n break;\n\n case PluginEventType.ContentChanged:\n case PluginEventType.MouseUp:\n case PluginEventType.SelectionChanged:\n this.editor.cacheContentModel(null);\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IContentModelEditor, event: PluginKeyDownEvent) {\n const rawEvent = event.rawEvent;\n const which = rawEvent.which;\n\n if (rawEvent.defaultPrevented || event.handledByEditFeature) {\n // Other plugins already handled this event, so it is most likely content is already changed, we need to clear cached content model\n editor.cacheContentModel(null /*model*/);\n } else {\n // TODO: Consider use ContentEditFeature and need to hide other conflict features that are not based on Content Model\n switch (which) {\n case Keys.BACKSPACE:\n case Keys.DELETE:\n const rangeEx = editor.getSelectionRangeEx();\n const range =\n rangeEx.type == SelectionRangeTypes.Normal ? rangeEx.ranges[0] : null;\n\n if (this.shouldDeleteWithContentModel(range, rawEvent)) {\n handleKeyDownEvent(editor, rawEvent);\n } else {\n editor.cacheContentModel(null);\n }\n\n break;\n\n default:\n if (\n (isCharacterValue(rawEvent) || rawEvent.key == ProcessKey) &&\n this.hasDefaultFormat\n ) {\n this.tryApplyDefaultFormat(editor);\n }\n\n editor.cacheContentModel(null);\n break;\n }\n }\n }\n\n private tryApplyDefaultFormat(editor: IContentModelEditor) {\n const rangeEx = editor.getSelectionRangeEx();\n const range = rangeEx?.type == SelectionRangeTypes.Normal ? rangeEx.ranges[0] : null;\n const startPos = range ? Position.getStart(range) : null;\n let node: Node | null = startPos?.node ?? null;\n\n while (node && editor.contains(node)) {\n if (isNodeOfType(node, NodeType.Element) && node.getAttribute?.('style')) {\n return;\n } else if (isBlockElement(node)) {\n break;\n } else {\n node = node.parentNode;\n }\n }\n\n formatWithContentModel(editor, 'input', (model, context) => {\n const result = deleteSelection(model, [], context);\n\n if (result.deleteResult == DeleteResult.Range) {\n normalizeContentModel(model);\n editor.addUndoSnapshot();\n\n return true;\n } else if (\n result.deleteResult == DeleteResult.NotDeleted &&\n result.insertPoint &&\n startPos\n ) {\n const { paragraph, path, marker } = result.insertPoint;\n const blocks = path[0].blocks;\n const blockCount = blocks.length;\n const blockIndex = blocks.indexOf(paragraph);\n\n if (\n paragraph.isImplicit &&\n paragraph.segments.length == 1 &&\n paragraph.segments[0] == marker &&\n blockCount > 0 &&\n blockIndex == blockCount - 1\n ) {\n // Focus is in the last paragraph which is implicit and there is not other segments.\n // This can happen when focus is moved after all other content under current block group.\n // We need to check if browser will merge focus into previous paragraph by checking if\n // previous block is block. If previous block is paragraph, browser will most likely merge\n // the input into previous paragraph, then nothing need to do here. Otherwise we need to\n // apply pending format since this input event will start a new real paragraph.\n const previousBlock = blocks[blockIndex - 1];\n\n if (previousBlock?.blockType != 'Paragraph') {\n this.applyDefaultFormat(editor, marker.format, startPos);\n }\n } else if (paragraph.segments.every(x => x.segmentType != 'Text')) {\n this.applyDefaultFormat(editor, marker.format, startPos);\n }\n\n // We didn't do any change but just apply default format to pending format, so no need to write back\n return false;\n } else {\n return false;\n }\n });\n }\n\n private applyDefaultFormat(\n editor: IContentModelEditor,\n currentFormat: ContentModelSegmentFormat,\n startPos: NodePosition\n ) {\n const pendingFormat = getPendingFormat(editor) || {};\n const defaultFormat = editor.getContentModelDefaultFormat();\n const newFormat: ContentModelSegmentFormat = {\n ...defaultFormat,\n ...pendingFormat,\n ...currentFormat,\n };\n\n setPendingFormat(editor, newFormat, startPos);\n }\n\n private shouldDeleteWithContentModel(range: Range | null, rawEvent: KeyboardEvent) {\n return !(\n range?.collapsed &&\n range.startContainer.nodeType == NodeType.Text &&\n !isModifierKey(rawEvent) &&\n (this.canDeleteBefore(rawEvent, range) || this.canDeleteAfter(rawEvent, range))\n );\n }\n\n private canDeleteBefore(rawEvent: KeyboardEvent, range: Range) {\n return (\n rawEvent.which == Keys.BACKSPACE &&\n (range.startOffset > 1 || range.startContainer.previousSibling)\n );\n }\n\n private canDeleteAfter(rawEvent: KeyboardEvent, range: Range) {\n return (\n rawEvent.which == Keys.DELETE &&\n (range.startOffset < (range.startContainer.nodeValue?.length ?? 0) - 1 ||\n range.startContainer.nextSibling)\n );\n }\n}\n","import applyPendingFormat from '../../publicApi/format/applyPendingFormat';\nimport { canApplyPendingFormat, clearPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { EditorPlugin, IEditor, Keys, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * ContentModelFormat plugins helps editor to do formatting on top of content model.\n * This includes:\n * 1. Handle pending format changes when selection is collapsed\n */\nexport default class ContentModelFormatPlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelFormat';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n\n switch (event.eventType) {\n case PluginEventType.Input:\n // In Safari, isComposing will be undefined but isInIME() works\n if (!event.rawEvent.isComposing && !this.editor.isInIME()) {\n this.checkAndApplyPendingFormat(event.rawEvent.data);\n }\n\n break;\n\n case PluginEventType.CompositionEnd:\n this.checkAndApplyPendingFormat(event.rawEvent.data);\n break;\n\n case PluginEventType.KeyDown:\n if (event.rawEvent.which >= Keys.PAGEUP && event.rawEvent.which <= Keys.DOWN) {\n clearPendingFormat(this.editor);\n }\n\n break;\n\n case PluginEventType.MouseUp:\n case PluginEventType.ContentChanged:\n if (!canApplyPendingFormat(this.editor)) {\n clearPendingFormat(this.editor);\n }\n break;\n }\n }\n\n private checkAndApplyPendingFormat(data: string | null) {\n if (this.editor && data) {\n applyPendingFormat(this.editor, data);\n clearPendingFormat(this.editor);\n }\n }\n}\n","import addParser from './utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { chainSanitizerCallback, getPasteSource } from 'roosterjs-editor-dom';\nimport { ContentModelBlockFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { deprecatedBorderColorParser } from './utils/deprecatedColorParser';\nimport { IContentModelEditor } from '../../../publicTypes/IContentModelEditor';\nimport { parseLink } from './utils/linkParser';\nimport { processPastedContentFromExcel } from './Excel/processPastedContentFromExcel';\nimport { processPastedContentFromPowerPoint } from './PowerPoint/processPastedContentFromPowerPoint';\nimport { processPastedContentFromWordDesktop } from './WordDesktop/processPastedContentFromWordDesktop';\nimport { processPastedContentWacComponents } from './WacComponents/processPastedContentWacComponents';\nimport {\n EditorPlugin,\n HtmlSanitizerOptions,\n IEditor,\n KnownPasteSourceType,\n PasteType,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\nconst GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n\n/**\n * Paste plugin, handles BeforePaste event and reformat some special content, including:\n * 1. Content copied from Word\n * 2. Content copied from Excel\n * 3. Content copied from Word Online or OneNote Online\n * 4. Content copied from Power Point\n * (This class is still under development, and may still be changed in the future with some breaking changes)\n */\nexport default class ContentModelPastePlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n\n /**\n * Construct a new instance of Paste class\n * @param unknownTagReplacement Replace solution of unknown tags, default behavior is to replace with SPAN\n */\n constructor(private unknownTagReplacement: string = 'SPAN') {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelPaste';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor || event.eventType != PluginEventType.BeforePaste) {\n return;\n }\n\n const ev = event as ContentModelBeforePasteEvent;\n if (!ev.domToModelOption) {\n return;\n }\n const pasteSource = getPasteSource(ev, false);\n switch (pasteSource) {\n case KnownPasteSourceType.WordDesktop:\n processPastedContentFromWordDesktop(ev);\n break;\n case KnownPasteSourceType.WacComponents:\n processPastedContentWacComponents(ev);\n break;\n case KnownPasteSourceType.ExcelOnline:\n case KnownPasteSourceType.ExcelDesktop:\n if (ev.pasteType === PasteType.Normal || ev.pasteType === PasteType.MergeFormat) {\n // Handle HTML copied from Excel\n processPastedContentFromExcel(ev, this.editor.getTrustedHTMLHandler());\n }\n break;\n case KnownPasteSourceType.GoogleSheets:\n ev.sanitizingOption.additionalTagReplacements[GOOGLE_SHEET_NODE_NAME] = '*';\n break;\n case KnownPasteSourceType.PowerPointDesktop:\n processPastedContentFromPowerPoint(ev, this.editor.getTrustedHTMLHandler());\n break;\n }\n\n addParser(ev.domToModelOption, 'link', parseLink);\n addParser(ev.domToModelOption, 'tableCell', deprecatedBorderColorParser);\n addParser(ev.domToModelOption, 'table', deprecatedBorderColorParser);\n sanitizeBlockStyles(ev.sanitizingOption);\n\n if (ev.pasteType === PasteType.MergeFormat) {\n addParser(ev.domToModelOption, 'block', blockElementParser);\n addParser(ev.domToModelOption, 'listLevel', blockElementParser);\n }\n\n ev.sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;\n }\n}\n\n/**\n * For block elements that have background color style, remove the background color when user selects the merge current format\n * paste option\n */\nconst blockElementParser: FormatParser = (\n format: ContentModelBlockFormat,\n element: HTMLElement\n) => {\n if (element.style.backgroundColor) {\n delete format.backgroundColor;\n }\n};\n\nfunction sanitizeBlockStyles(sanitizingOption: Required) {\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'display', (value: string) => {\n return value != 'flex'; // return whether we keep the style\n });\n}\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\nimport { TrustedHTMLHandler } from 'roosterjs-editor-types';\n\nconst LAST_TD_END_REGEX = /<\\/\\s*td\\s*>((?!<\\/\\s*tr\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_END_REGEX = /<\\/\\s*tr\\s*>((?!<\\/\\s*table\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_REGEX = /]*>[^<]*/i;\nconst LAST_TABLE_REGEX = /]*>[^<]*/i;\nconst DEFAULT_BORDER_STYLE = 'solid 1px #d4d4d4';\n\n/**\n * @internal\n * Convert pasted content from Excel, add borders when source doc doesn't have a border\n * @param event The BeforePaste event\n */\n\nexport function processPastedContentFromExcel(\n event: ContentModelBeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, htmlBefore, clipboardData } = event;\n const html = clipboardData.html ? excelHandler(clipboardData.html, htmlBefore) : undefined;\n\n if (html && clipboardData.html != html) {\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n\n // For Excel Online\n const firstChild = fragment.firstChild;\n if (firstChild && firstChild.childNodes.length > 0 && getTagOfNode(firstChild) == 'DIV') {\n const tableFound = Array.from(firstChild.childNodes).every((child: Node) => {\n // Tables pasted from Excel Online should be of the format: 0 to N META tags and 1 TABLE tag\n return getTagOfNode(child) == 'META'\n ? true\n : getTagOfNode(child) == 'TABLE' && child == firstChild.lastChild;\n });\n\n // Extract Table from Div\n if (tableFound && firstChild.lastChild) {\n event.fragment.replaceChildren(firstChild.lastChild);\n }\n }\n\n addParser(event.domToModelOption, 'tableCell', (format, element) => {\n if (element.style.borderStyle === 'none') {\n format.borderBottom = DEFAULT_BORDER_STYLE;\n format.borderLeft = DEFAULT_BORDER_STYLE;\n format.borderRight = DEFAULT_BORDER_STYLE;\n format.borderTop = DEFAULT_BORDER_STYLE;\n }\n });\n}\n\n/**\n * @internal Export for test only\n * @param html Source html\n */\n\nexport function excelHandler(html: string, htmlBefore: string): string {\n if (html.match(LAST_TD_END_REGEX)) {\n const trMatch = htmlBefore.match(LAST_TR_REGEX);\n const tr = trMatch ? trMatch[0] : '

    ';\n html = table + html + '
    ';\n }\n\n return html;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content from PowerPoint\n * @param event The BeforePaste event\n */\n\nexport function processPastedContentFromPowerPoint(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n\n if (clipboardData.html && !clipboardData.text && clipboardData.image) {\n // It is possible that PowerPoint copied both image and HTML but not plain text.\n // We always prefer HTML if any.\n const doc = new DOMParser().parseFromString(\n trustedHTMLHandler(clipboardData.html),\n 'text/html'\n );\n\n moveChildNodes(fragment, doc?.body);\n }\n}\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { findClosestElementAncestor, getTagOfNode, matchesSelector } from 'roosterjs-editor-dom';\nimport { setProcessor } from '../utils/setProcessor';\nimport {\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelListItemLevelFormat,\n ContentModelSegmentFormat,\n DomToModelContext,\n ElementProcessor,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer,span.WACImageBorder';\nconst LIST_CONTAINER_ELEMENT_CLASS_NAME = 'ListContainerWrapper';\n\nconst PARAGRAPH = 'Paragraph';\nconst TABLE_CONTAINER = 'TableContainer';\n\nconst TEMP_ELEMENTS_CLASSES = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n 'ListMarkerWrappingSpan',\n];\n\nconst CLASSES_TO_KEEP = [\n 'OutlineElement',\n 'NumberListStyle',\n 'WACImageContainer',\n 'ListContainerWrapper',\n 'BulletListStyle',\n ...TEMP_ELEMENTS_CLASSES,\n 'TableCellContent',\n PARAGRAPH,\n 'WACImageContainer',\n 'WACImageBorder',\n TABLE_CONTAINER,\n 'LineBreakBlob',\n];\n\nconst LIST_ELEMENT_TAGS = ['UL', 'OL', 'LI'];\nconst LIST_ELEMENT_SELECTOR = LIST_ELEMENT_TAGS.join(',');\n\n/**\n * Wac components do not use sub and super tags, instead only add vertical align to a span.\n * This parser normalize the content for content model\n */\nconst wacSubSuperParser: FormatParser = (\n format: ContentModelSegmentFormat,\n element: HTMLElement\n): void => {\n const verticalAlign = element.style.verticalAlign;\n if (verticalAlign === 'super') {\n format.superOrSubScriptSequence = 'super';\n }\n if (verticalAlign === 'sub') {\n format.superOrSubScriptSequence = 'sub';\n }\n};\n\n/**\n * This processor does:\n * 1) Remove the display and margin of the element.\n * 2) When an element should be ignored but should handle the child elements call the default child processor.\n * 3) Removes the End of Paragraph element to avoid empty lines, we should only remove this if the previous element of the EOP is an EmptyTextRun\n * 4) Finally call the default processor.\n * @returns\n */\nconst wacElementProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext\n): void => {\n const elementTag = getTagOfNode(element);\n if (matchesSelector(element, WAC_IDENTIFY_SELECTOR)) {\n element.style.removeProperty('display');\n element.style.removeProperty('margin');\n }\n\n if (element.classList.contains(LIST_CONTAINER_ELEMENT_CLASS_NAME)) {\n context.elementProcessors.child(group, element, context);\n return;\n }\n\n if (TEMP_ELEMENTS_CLASSES.some(className => element.classList.contains(className))) {\n return;\n } else if (shouldClearListContext(elementTag, element, context)) {\n const { listFormat } = context;\n listFormat.levels = [];\n listFormat.listParent = undefined;\n }\n\n context.defaultElementProcessors.element(group, element, context);\n};\n\n/**\n * This processor calls the default list processor and then sets the correct list level and list bullet.\n */\nconst wacLiElementProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLLIElement,\n context: DomToModelContext\n): void => {\n context.defaultElementProcessors.li?.(group, element, context);\n const { listFormat } = context;\n const listParent = listFormat.listParent;\n if (listParent) {\n const lastblock = listParent.blocks[listParent.blocks.length - 1];\n if (\n lastblock.blockType == 'BlockGroup' &&\n lastblock.blockGroupType == 'ListItem' &&\n context.listFormat.listParent !== lastblock\n ) {\n const currentLevel = lastblock.levels[lastblock.levels.length - 1];\n\n // Get item level from 'data-aria-level' attribute\n let level = parseInt(element.getAttribute('data-aria-level') ?? '');\n if (level > 0) {\n if (level > lastblock.levels.length) {\n while (level != lastblock.levels.length) {\n lastblock.levels.push(currentLevel);\n }\n } else {\n lastblock.levels.splice(level, lastblock.levels.length - 1);\n lastblock.levels[level - 1] = currentLevel;\n }\n }\n }\n }\n};\n\n/**\n * This parsers does:\n * 1) Sets the display for dummy item to undefined when the current style is block.\n * 2) Removes the Margin Left\n */\nconst wacListItemParser: FormatParser = (\n format: ContentModelListItemLevelFormat,\n element: HTMLElement\n): void => {\n if (element.style.display === 'block') {\n format.displayForDummyItem = undefined;\n }\n\n format.marginLeft = undefined;\n};\n\n/**\n * Wac usually adds padding to lists which is unwanted so remove it.\n */\nconst wacListLevelParser: FormatParser = (\n format: ContentModelListItemLevelFormat\n): void => {\n format.marginLeft = undefined;\n format.paddingLeft = undefined;\n};\n\n/**\n * This function returns whether we need to clear the list format.\n * Word Online wraps lists inside divs to have this structure:\n *\n *
    \n *
      ...
    \n *
    \n *
    \n *

    ...

    \n *
    \n *
    \n *
      ...
    \n *
    \n *\n * So if a elements is not contained inside of a list we should clear the list context to prevent normal text to be\n * transformed into list\n * For the above scenario, if we do not clear the format, the content inside of the second div would be transformed to a list too.\n */\nfunction shouldClearListContext(\n elementTag: string,\n element: HTMLElement,\n context: DomToModelContext\n) {\n return (\n context.listFormat.levels.length > 0 &&\n LIST_ELEMENT_TAGS.every(tag => tag != elementTag) &&\n !findClosestElementAncestor(element, undefined, LIST_ELEMENT_SELECTOR)\n );\n}\n\n/**\n * @internal\n * Convert pasted content from Office Online\n * Once it is known that the document is from WAC\n * We need to remove the display property and margin from all the list item\n * @param ev ContentModelBeforePasteEvent\n */\nexport function processPastedContentWacComponents(ev: ContentModelBeforePasteEvent) {\n addParser(ev.domToModelOption, 'segment', wacSubSuperParser);\n addParser(ev.domToModelOption, 'listItem', wacListItemParser);\n addParser(ev.domToModelOption, 'listLevel', wacListLevelParser);\n addParser(ev.domToModelOption, 'container', wacBlockParser);\n\n setProcessor(ev.domToModelOption, 'element', wacElementProcessor);\n setProcessor(ev.domToModelOption, 'li', wacLiElementProcessor);\n setProcessor(ev.domToModelOption, 'ol', wacListProcessor);\n setProcessor(ev.domToModelOption, 'ul', wacListProcessor);\n ev.sanitizingOption.additionalAllowedCssClasses.push(...CLASSES_TO_KEEP);\n}\n\n/**\n * List items from word have this format when using List items:\n * @example\n
    \n
      \n
      \n
      \n
        \n
        \n
        \n
          \n
          \n * Due to this the div between each of the lists we need to restore the list context to use the previous list,\n * otherwise it could create a new list instead under the same list element\n */\nconst wacListProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLOListElement | HTMLUListElement,\n context: DomToModelContext\n): void => {\n const lastBlock = group.blocks[group.blocks.length - 1];\n const isWrappedInContainer = findClosestElementAncestor(\n element,\n undefined,\n `.${LIST_CONTAINER_ELEMENT_CLASS_NAME}`\n );\n if (\n isWrappedInContainer?.previousElementSibling?.classList.contains(\n LIST_CONTAINER_ELEMENT_CLASS_NAME\n )\n ) {\n if (lastBlock?.blockType === 'BlockGroup' && lastBlock.blockGroupType == 'ListItem') {\n context.listFormat = {\n threadItemCounts: [],\n levels: lastBlock.levels,\n listParent: group,\n };\n }\n }\n if (element.tagName.toUpperCase() === 'OL') {\n context.defaultElementProcessors.ol?.(group, element as HTMLOListElement, context);\n } else {\n context.defaultElementProcessors.ul?.(group, element as HTMLUListElement, context);\n }\n};\n\nconst wacBlockParser: FormatParser = (\n format: ContentModelBlockFormat,\n element: HTMLElement\n) => {\n if (element.classList.contains(TABLE_CONTAINER) && element.style.marginLeft.startsWith('-')) {\n delete format.marginLeft;\n }\n};\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { chainSanitizerCallback, getStyles, moveChildNodes } from 'roosterjs-editor-dom';\nimport { processWordComments } from './processWordComments';\nimport { processWordList } from './processWordLists';\nimport { setProcessor } from '../utils/setProcessor';\nimport {\n ContentModelBlockFormat,\n ContentModelListItemFormat,\n ContentModelListItemLevelFormat,\n DomToModelContext,\n ElementProcessor,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\nconst PERCENTAGE_REGEX = /%/;\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\n\n/**\n * @internal\n * Handles Pasted content when source is Word Desktop\n * @param ev ContentModelBeforePasteEvent\n */\nexport function processPastedContentFromWordDesktop(ev: ContentModelBeforePasteEvent) {\n setProcessor(ev.domToModelOption, 'element', wordDesktopElementProcessor);\n addParser(ev.domToModelOption, 'block', removeNonValidLineHeight);\n addParser(ev.domToModelOption, 'listLevel', listLevelParser);\n addParser(ev.domToModelOption, 'listItemElement', listItemElementParser);\n\n // Remove \"border:none\" for image to fix image resize behavior\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\n // displayed incorrectly when resize it. So we need to drop this style\n chainSanitizerCallback(\n ev.sanitizingOption.cssStyleCallbacks,\n 'border',\n (value, element) => element.tagName != 'IMG' || value != 'none'\n );\n\n // Preserve when its innerHTML is \" \" to avoid dropping an empty line\n chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => {\n moveChildNodes(element);\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); //  \n return true;\n });\n}\n\n/**\n * @internal\n * Exported only for unit test\n */\nexport const wordDesktopElementProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n const styles = getStyles(element);\n // Process Word Lists or Word Commands, otherwise use the default processor on this element.\n if (\n !(processWordList(styles, group, element, context) || processWordComments(styles, element))\n ) {\n context.defaultElementProcessors.element(group, element, context);\n }\n};\n\nfunction removeNonValidLineHeight(\n format: ContentModelBlockFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly>\n): void {\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\n let parsedLineHeight: number;\n if (\n PERCENTAGE_REGEX.test(element.style.lineHeight) &&\n !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\n ) {\n format.lineHeight = defaultStyle.lineHeight;\n }\n}\n\nfunction listLevelParser(\n format: ContentModelListItemLevelFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly>\n): void {\n if (element.style.marginLeft != '') {\n format.marginLeft = defaultStyle.marginLeft;\n }\n\n format.marginBottom = undefined;\n}\n\nconst listItemElementParser: FormatParser = (\n format: ContentModelListItemFormat,\n element: HTMLElement\n): void => {\n if (element.style.marginLeft) {\n format.marginLeft = undefined;\n }\n if (element.style.marginRight) {\n format.marginRight = undefined;\n }\n};\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\n\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\nconst MSO_ELEMENT = 'mso-element';\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\n\n/**\n * @internal\n * Check whether the element contain Word attributes related to comments and if it does we should no process\n * this element.\n * @returns\n */\nexport function processWordComments(styles: Record, element: HTMLElement) {\n return (\n styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||\n (safeInstanceOf(element, 'HTMLAnchorElement') &&\n MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||\n styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST\n );\n}\n","import { getStyles } from 'roosterjs-editor-dom';\nimport { NodeType } from 'roosterjs-editor-types';\nimport {\n addBlock,\n createListItem,\n createListLevel,\n parseFormat,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlockGroup,\n ContentModelListItemLevelFormat,\n ContentModelListLevel,\n DomToModelContext,\n DomToModelListFormat,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\n/** Word list metadata style name */\nconst MSO_LIST = 'mso-list';\nconst MSO_LIST_IGNORE = 'ignore';\nconst LOOKUP_DEPTH = 5;\nconst WORD_FIRST_LIST = 'l0';\n\ninterface WordDesktopListFormat extends DomToModelListFormat {\n wordLevel?: number | '';\n wordList?: string;\n wordKnownLevels?: Map;\n}\n\n/**\n * @internal\n * @param styles\n * @param group\n * @param element\n * @param context\n * @returns\n */\nexport function processWordList(\n styles: Record,\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext\n) {\n const listFormat = context.listFormat as WordDesktopListFormat;\n if (!listFormat.wordKnownLevels) {\n listFormat.wordKnownLevels = new Map();\n }\n const wordListStyle = styles[MSO_LIST] || '';\n\n // If the element contains Ignore style, do not process it,\n // Usually this element contains the fake bullet used in Word Desktop.\n if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {\n return true;\n }\n\n const listProps = wordListStyle.split(' ');\n // Try get the list metadata from word, which follows this format: l1 level1 lfo2\n // If we are able to get the level property means we can process this element to be a list\n listFormat.wordLevel = listProps[1] && parseInt(listProps[1].substr('level'.length));\n\n listFormat.wordList = listProps[0] || WORD_FIRST_LIST;\n if (listFormat.levels.length == 0) {\n listFormat.levels = listFormat.wordKnownLevels.get(listFormat.wordList) || [];\n }\n\n if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {\n const { wordLevel } = listFormat;\n // Retrieve the Fake bullet on the element and also the list type\n const fakeBullet = getFakeBulletText(element);\n const listType = getFakeBulletTagName(fakeBullet);\n\n // Create the new level of the list item and parse the format\n const newLevel: ContentModelListLevel = createListLevel(listType);\n parseFormat(element, context.formatParsers.listLevel, newLevel.format, context);\n\n // If the list format is in a different level, update the array so we get the new item\n // To be in the same level as the provided level metadata.\n if (wordLevel > listFormat.levels.length) {\n while (wordLevel != listFormat.levels.length) {\n listFormat.levels.push(newLevel);\n }\n } else {\n listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);\n listFormat.levels[wordLevel - 1] = newLevel;\n }\n\n listFormat.listParent = group;\n\n processAsListItem(listFormat, context, element, group, fakeBullet);\n\n if (\n listFormat.levels.length > 0 &&\n listFormat.wordKnownLevels.get(listFormat.wordList) != listFormat.levels\n ) {\n listFormat.wordKnownLevels.set(listFormat.wordList, [...listFormat.levels]);\n }\n return true;\n }\n\n return false;\n}\n\nfunction processAsListItem(\n listFormat: WordDesktopListFormat,\n context: DomToModelContext,\n element: HTMLElement,\n group: ContentModelBlockGroup,\n fakeBullet: string\n) {\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\n const lastLevel = listItem.levels[listItem.levels.length - 1];\n\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);\n\n if (lastLevel?.listType == 'OL') {\n parseFormat(\n element,\n [startNumberOverrideParser(fakeBullet)],\n listItem.levels[listItem.levels.length - 1].format,\n context\n );\n }\n\n context.elementProcessors.child(listItem, element, context);\n addBlock(group, listItem);\n}\n\nfunction startNumberOverrideParser(\n fakeBullet: string\n): FormatParser | null {\n return (format, _, context) => {\n const {\n wordKnownLevels,\n wordLevel,\n wordList,\n } = context.listFormat as WordDesktopListFormat;\n if (typeof wordLevel === 'number' && wordList) {\n const start = parseInt(fakeBullet);\n if (start != undefined && !isNaN(start) && !wordKnownLevels?.has(wordList)) {\n format.startNumberOverride = start;\n }\n }\n };\n}\n\n/**\n * Check whether the string is a fake bullet from word Desktop\n */\nfunction isFakeBullet(fakeBullet: string): boolean {\n return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;\n}\n\n/** Given a fake bullet text, returns the type of list that should be used for it */\nfunction getFakeBulletTagName(fakeBullet: string): 'UL' | 'OL' {\n return isFakeBullet(fakeBullet) ? 'UL' : 'OL';\n}\n\n/**\n * Finds the fake bullet text out of the specified node and returns it. For images, it will return\n * a bullet string. If not found, it returns null...\n */\nfunction getFakeBulletText(node: Node, levels?: number): string {\n // Word uses the following format for their bullets:\n // <p style=\"mso-list:l1 level1 lfo2\">\n // <span style=\"...\">\n // <span style=\"mso-list:Ignore\">1.<span style=\"...\">      </span></span>\n // </span>\n // Content here...\n // </p>\n //\n // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That\n // text or image node will be the fake bullet we are looking for\n let result: string = '';\n levels = levels || LOOKUP_DEPTH;\n let child: Node | null = node.firstChild;\n while (!result && child) {\n // Check if this is the node that holds the fake bullets (mso-list: Ignore)\n if (isIgnoreNode(child)) {\n // Yes... this is the node that holds either the text or image data\n result = child.textContent?.trim() ?? '';\n\n // This is the case for image case\n if (result.length == 0) {\n result = 'o';\n }\n } else if (child.nodeType == NodeType.Element && levels > 1) {\n // If this is an element and we are not in the last level, try to get the fake bullet\n // out of the child\n result = getFakeBulletText(child, levels - 1);\n }\n\n child = child.nextSibling;\n }\n\n return result;\n}\n/**\n * Checks if the specified node is marked as a mso-list: Ignore. These\n * nodes need to be ignored when a list item is converted into standard\n * HTML lists\n */\nfunction isIgnoreNode(node: Node): boolean {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyles(node as HTMLElement)[MSO_LIST];\n if (\n listAttribute &&\n listAttribute.length > 0 &&\n listAttribute.trim().toLowerCase() == MSO_LIST_IGNORE\n ) {\n return true;\n }\n }\n\n return false;\n}\n","import {\n ContentModelFormatMap,\n DomToModelOption,\n FormatParser,\n FormatParsersPerCategory,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport default function addParser(\n domToModelOption: DomToModelOption,\n entry: TKey,\n additionalFormatParsers: FormatParser\n) {\n if (!domToModelOption.additionalFormatParsers) {\n domToModelOption.additionalFormatParsers = {};\n }\n if (!domToModelOption.additionalFormatParsers[entry]) {\n domToModelOption.additionalFormatParsers[entry] = [];\n }\n\n domToModelOption.additionalFormatParsers[entry]?.push(additionalFormatParsers);\n}\n","import { BorderFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { BorderKeys, DeprecatedColors } from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\nexport const deprecatedBorderColorParser: FormatParser = (\n format: BorderFormat\n): void => {\n BorderKeys.forEach(key => {\n const value = format[key];\n let color: string = '';\n if (\n value &&\n DeprecatedColors.some(dColor => value.indexOf(dColor) > -1 && (color = dColor))\n ) {\n const newValue = value.replace(color, '').trimRight();\n format[key] = newValue;\n }\n });\n};\n","import { ContentModelHyperLinkFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];\nconst INVALID_LINKS_REGEX = /^file:\\/\\/\\/[a-zA-Z\\/]/i;\n\n/**\n * @internal\n */\nexport const parseLink: FormatParser = (format, element) => {\n if (!safeInstanceOf(element, 'HTMLAnchorElement')) {\n return;\n }\n\n let url: URL | undefined;\n try {\n url = new URL(element.href);\n } catch {\n url = undefined;\n }\n\n if (\n (url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||\n INVALID_LINKS_REGEX.test(element.href)\n ) {\n element.removeAttribute('href');\n format.href = '';\n }\n};\n","import { DomToModelOption, ElementProcessorMap } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setProcessor(\n domToModelOption: DomToModelOption,\n entry: TKey,\n processorOverride: Partial[TKey]\n) {\n if (!domToModelOption.processorOverride) {\n domToModelOption.processorOverride = {};\n }\n\n domToModelOption.processorOverride[entry] = processorOverride;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * @return True means content is changed, so need to rewrite content model to editor. Otherwise false\n */\nexport function handleKeyboardEventResult(\n editor: IContentModelEditor,\n model: ContentModelDocument,\n rawEvent: KeyboardEvent,\n result: DeleteResult,\n context: FormatWithContentModelContext\n): boolean {\n context.skipUndoSnapshot = true;\n\n switch (result) {\n case DeleteResult.NotDeleted:\n // We have not delete anything, we will let browser handle this event, so clear cached model if any since the content will be changed by browser\n editor.cacheContentModel(null);\n return false;\n\n case DeleteResult.NothingToDelete:\n // We known there is nothing to delete, no need to let browser keep handling the event\n rawEvent.preventDefault();\n return false;\n\n case DeleteResult.Range:\n case DeleteResult.SingleChar:\n // We have deleted what we need from content model, no need to let browser keep handling the event\n rawEvent.preventDefault();\n normalizeContentModel(model);\n\n if (result == DeleteResult.Range) {\n // A range is about to be deleted, so add an undo snapshot immediately\n context.skipUndoSnapshot = false;\n }\n\n // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.\n // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.\n editor.triggerPluginEvent(PluginEventType.BeforeKeyboardEditing, {\n rawEvent,\n });\n\n return true;\n }\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean) {\n return (\n (isMac && rawEvent.altKey && !rawEvent.metaKey) ||\n (!isMac && rawEvent.ctrlKey && !rawEvent.altKey)\n );\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent) {\n return rawEvent.metaKey && !rawEvent.altKey;\n}\n","export { ContentModelFormatState } from './publicTypes/format/formatState/ContentModelFormatState';\nexport { ImageFormatState } from './publicTypes/format/formatState/ImageFormatState';\nexport { Border } from './publicTypes/interface/Border';\nexport {\n CreateEditorContext,\n ContentModelCoreApiMap,\n ContentModelEditorCore,\n CreateContentModel,\n SetContentModel,\n} from './publicTypes/ContentModelEditorCore';\nexport {\n default as ContentModelBeforePasteEvent,\n ContentModelBeforePasteEventData,\n CompatibleContentModelBeforePasteEvent,\n} from './publicTypes/event/ContentModelBeforePasteEvent';\nexport { IContentModelEditor, ContentModelEditorOptions } from './publicTypes/IContentModelEditor';\nexport { InsertPoint } from './publicTypes/selection/InsertPoint';\nexport { TableSelectionContext } from './publicTypes/selection/TableSelectionContext';\nexport {\n DeletedEntity,\n FormatWithContentModelContext,\n FormatWithContentModelOptions,\n ContentModelFormatter,\n} from './publicTypes/parameter/FormatWithContentModelContext';\nexport {\n InsertEntityOptions,\n InsertEntityPosition,\n} from './publicTypes/parameter/InsertEntityOptions';\n\nexport { default as insertTable } from './publicApi/table/insertTable';\nexport { default as formatTable } from './publicApi/table/formatTable';\nexport { default as setTableCellShade } from './publicApi/table/setTableCellShade';\nexport { default as editTable } from './publicApi/table/editTable';\nexport { default as toggleBullet } from './publicApi/list/toggleBullet';\nexport { default as toggleNumbering } from './publicApi/list/toggleNumbering';\nexport { default as toggleBold } from './publicApi/segment/toggleBold';\nexport { default as toggleItalic } from './publicApi/segment/toggleItalic';\nexport { default as toggleUnderline } from './publicApi/segment/toggleUnderline';\nexport { default as toggleStrikethrough } from './publicApi/segment/toggleStrikethrough';\nexport { default as toggleSubscript } from './publicApi/segment/toggleSubscript';\nexport { default as toggleSuperscript } from './publicApi/segment/toggleSuperscript';\nexport { default as setBackgroundColor } from './publicApi/segment/setBackgroundColor';\nexport { default as setFontName } from './publicApi/segment/setFontName';\nexport { default as setFontSize } from './publicApi/segment/setFontSize';\nexport { default as setTextColor } from './publicApi/segment/setTextColor';\nexport { default as changeFontSize } from './publicApi/segment/changeFontSize';\nexport { default as applySegmentFormat } from './publicApi/segment/applySegmentFormat';\nexport { default as changeCapitalization } from './publicApi/segment/changeCapitalization';\nexport { default as insertImage } from './publicApi/image/insertImage';\nexport { default as setListStyle } from './publicApi/list/setListStyle';\nexport { default as setListStartNumber } from './publicApi/list/setListStartNumber';\nexport { default as hasSelectionInBlock } from './publicApi/selection/hasSelectionInBlock';\nexport { default as hasSelectionInSegment } from './publicApi/selection/hasSelectionInSegment';\nexport { default as hasSelectionInBlockGroup } from './publicApi/selection/hasSelectionInBlockGroup';\nexport { default as getSelectedSegments } from './publicApi/selection/getSelectedSegments';\nexport { default as setIndentation } from './publicApi/block/setIndentation';\nexport { default as setAlignment } from './publicApi/block/setAlignment';\nexport { default as setDirection } from './publicApi/block/setDirection';\nexport { default as setHeadingLevel } from './publicApi/block/setHeadingLevel';\nexport { default as toggleBlockQuote } from './publicApi/block/toggleBlockQuote';\nexport { default as setSpacing } from './publicApi/block/setSpacing';\nexport { default as setImageBorder } from './publicApi/image/setImageBorder';\nexport { default as setImageBoxShadow } from './publicApi/image/setImageBoxShadow';\nexport { default as changeImage } from './publicApi/image/changeImage';\nexport { default as getFormatState } from './publicApi/format/getFormatState';\nexport { default as applyPendingFormat } from './publicApi/format/applyPendingFormat';\nexport { default as clearFormat } from './publicApi/format/clearFormat';\nexport { default as insertLink } from './publicApi/link/insertLink';\nexport { default as removeLink } from './publicApi/link/removeLink';\nexport { default as adjustLinkSelection } from './publicApi/link/adjustLinkSelection';\nexport { default as setImageAltText } from './publicApi/image/setImageAltText';\nexport { default as adjustImageSelection } from './publicApi/image/adjustImageSelection';\nexport { default as setParagraphMargin } from './publicApi/block/setParagraphMargin';\nexport { default as toggleCode } from './publicApi/segment/toggleCode';\nexport { default as paste } from './publicApi/utils/paste';\nexport { default as insertEntity } from './publicApi/entity/insertEntity';\nexport { formatWithContentModel } from './publicApi/utils/formatWithContentModel';\n\nexport { default as ContentModelEditor } from './editor/ContentModelEditor';\nexport { default as isContentModelEditor } from './editor/isContentModelEditor';\nexport { default as ContentModelFormatPlugin } from './editor/plugins/ContentModelFormatPlugin';\nexport { default as ContentModelEditPlugin } from './editor/plugins/ContentModelEditPlugin';\nexport { default as ContentModelPastePlugin } from './editor/plugins/PastePlugin/ContentModelPastePlugin';\nexport { default as ContentModelTypeInContainerPlugin } from './editor/corePlugins/ContentModelTypeInContainerPlugin';\nexport { default as ContentModelCopyPastePlugin } from './editor/corePlugins/ContentModelCopyPastePlugin';\nexport {\n createContentModelEditorCore,\n promoteToContentModelEditorCore,\n} from './editor/createContentModelEditorCore';\nexport { combineBorderValue, extractBorderValues } from './domUtils/borderValues';\nexport { updateImageMetadata } from './domUtils/metadata/updateImageMetadata';\nexport { updateTableCellMetadata } from './domUtils/metadata/updateTableCellMetadata';\nexport { updateTableMetadata } from './domUtils/metadata/updateTableMetadata';\n","import { isGeneralSegment } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport type BlockAndPath = {\n /**\n * The sibling block\n */\n block: ContentModelBlock;\n\n /**\n * Path of this sibling block\n */\n path: ContentModelBlockGroup[];\n\n /**\n * If the input block is under a general segment, it is possible there are sibling segments under the same paragraph.\n * Use this property to return the sibling sibling under the same paragraph\n */\n siblingSegment?: ContentModelSegment;\n};\n\n/**\n * @internal\n */\nexport function getLeafSiblingBlock(\n path: ContentModelBlockGroup[],\n block: ContentModelBlock,\n isNext: boolean\n): BlockAndPath | null {\n const newPath = [...path];\n\n while (newPath.length > 0) {\n let group = newPath[0];\n const index = group.blocks.indexOf(block);\n\n if (index < 0) {\n break;\n }\n\n let nextBlock = group.blocks[index + (isNext ? 1 : -1)];\n\n if (nextBlock) {\n while (nextBlock.blockType == 'BlockGroup') {\n const child = nextBlock.blocks[isNext ? 0 : nextBlock.blocks.length - 1];\n\n if (!child) {\n return { block: nextBlock, path: newPath };\n } else if (child.blockType != 'BlockGroup') {\n newPath.unshift(nextBlock);\n return { block: child, path: newPath };\n } else {\n newPath.unshift(nextBlock);\n nextBlock = child;\n }\n }\n\n return { block: nextBlock, path: newPath };\n } else if (isGeneralSegment(group)) {\n // For general segment, we need to check if there is sibling segment under the same paragraph\n // First let's find the parent paragraph of this segment\n newPath.shift();\n\n let segmentIndex = -1;\n const segment = group;\n const para = newPath[0]?.blocks.find(\n x => x.blockType == 'Paragraph' && (segmentIndex = x.segments.indexOf(segment)) >= 0\n ) as ContentModelParagraph;\n\n if (para) {\n // Now we have found the parent paragraph, so let's check if it has a sibling segment\n const siblingSegment = para.segments[segmentIndex + (isNext ? 1 : -1)];\n\n if (siblingSegment) {\n // Return this block, path and segment since we have found it\n return { block: para, path: newPath, siblingSegment };\n } else {\n // No sibling segment, let's keep go upper level\n block = para;\n }\n } else {\n // Parent sibling is not found (in theory this should never happen), just return null\n break;\n }\n } else if (group.blockGroupType != 'Document' && group.blockGroupType != 'TableCell') {\n newPath.shift();\n block = group;\n } else {\n break;\n }\n }\n\n return null;\n}\n","import { alignTable } from '../table/alignTable';\nimport { ContentModelDocument, ContentModelListItem } from 'roosterjs-content-model-types';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { TableOperation } from 'roosterjs-editor-types';\n\nconst ResultMap: Record<\n 'left' | 'center' | 'right',\n Record<'ltr' | 'rtl', 'start' | 'center' | 'end'>\n> = {\n left: {\n ltr: 'start',\n rtl: 'end',\n },\n center: {\n ltr: 'center',\n rtl: 'center',\n },\n right: {\n ltr: 'end',\n rtl: 'start',\n },\n};\n\nconst TableAlignMap: Record<\n 'left' | 'center' | 'right',\n Record<\n 'ltr' | 'rtl',\n TableOperation.AlignLeft | TableOperation.AlignCenter | TableOperation.AlignRight\n >\n> = {\n left: {\n ltr: TableOperation.AlignLeft,\n rtl: TableOperation.AlignRight,\n },\n center: {\n ltr: TableOperation.AlignCenter,\n rtl: TableOperation.AlignCenter,\n },\n right: {\n ltr: TableOperation.AlignRight,\n rtl: TableOperation.AlignLeft,\n },\n};\n\n/**\n * @internal\n */\nexport function setModelAlignment(\n model: ContentModelDocument,\n alignment: 'left' | 'center' | 'right'\n) {\n const paragraphOrListItemOrTable = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n\n paragraphOrListItemOrTable.forEach(({ block }) => {\n const newAligment = ResultMap[alignment][block.format.direction == 'rtl' ? 'rtl' : 'ltr'];\n if (block.blockType === 'Table') {\n alignTable(\n block,\n TableAlignMap[alignment][block.format.direction == 'rtl' ? 'rtl' : 'ltr']\n );\n } else if (block) {\n const { format } = block;\n format.textAlign = newAligment;\n }\n });\n\n return paragraphOrListItemOrTable.length > 0;\n}\n","import { findListItemsInSameThread } from '../list/findListItemsInSameThread';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n ContentModelBlockFormat,\n ContentModelDocument,\n ContentModelListItem,\n MarginFormat,\n PaddingFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setModelDirection(model: ContentModelDocument, direction: 'ltr' | 'rtl') {\n const paragraphOrListItemOrTable = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n\n paragraphOrListItemOrTable.forEach(({ block }) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n const items = findListItemsInSameThread(model, block);\n\n items.forEach(item => {\n item.levels.forEach(level => {\n level.format.direction = direction;\n });\n\n item.blocks.forEach(block => internalSetDirection(block.format, direction));\n });\n } else if (block) {\n internalSetDirection(block.format, direction);\n }\n });\n\n return paragraphOrListItemOrTable.length > 0;\n}\n\nfunction internalSetDirection(format: ContentModelBlockFormat, direction: 'ltr' | 'rtl') {\n const wasRtl = format.direction == 'rtl';\n const isRtl = direction == 'rtl';\n\n if (wasRtl != isRtl) {\n format.direction = direction;\n\n // Adjust margin when change direction\n // TODO: make margin and padding direction-aware, like what we did for textAlign. So no need to adjust them here\n // TODO: Do we also need to handle border here?\n const marginLeft = format.marginLeft;\n const paddingLeft = format.paddingLeft;\n\n setProperty(format, 'marginLeft', format.marginRight);\n setProperty(format, 'marginRight', marginLeft);\n setProperty(format, 'paddingLeft', format.paddingRight);\n setProperty(format, 'paddingRight', paddingLeft);\n }\n}\n\nfunction setProperty(\n format: MarginFormat & PaddingFormat,\n key: keyof (MarginFormat & PaddingFormat),\n value: string | undefined\n) {\n if (value) {\n format[key] = value;\n } else {\n delete format[key];\n }\n}\n","import { createListLevel, parseValueWithUnit } from 'roosterjs-content-model-dom';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n ContentModelDocument,\n ContentModelListItem,\n ContentModelListLevel,\n} from 'roosterjs-content-model-types';\n\nconst IndentStepInPixel = 40;\n\n/**\n * @internal\n */\nexport function setModelIndentation(\n model: ContentModelDocument,\n indentation: 'indent' | 'outdent',\n length: number = IndentStepInPixel\n) {\n const paragraphOrListItem = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n const isIndent = indentation == 'indent';\n\n paragraphOrListItem.forEach(({ block }) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n if (isIndent) {\n const lastLevel = block.levels[block.levels.length - 1];\n const newLevel: ContentModelListLevel = createListLevel(\n lastLevel?.listType || 'UL',\n lastLevel?.format\n );\n\n // New level is totally new, no need to have these attributes for now\n delete newLevel.format.startNumberOverride;\n\n block.levels.push(newLevel);\n } else {\n block.levels.pop();\n }\n } else if (block) {\n const { format } = block;\n const { marginLeft, marginRight, direction } = format;\n const isRtl = direction == 'rtl';\n const originalValue = parseValueWithUnit(isRtl ? marginRight : marginLeft);\n let newValue = (isIndent ? Math.ceil : Math.floor)(originalValue / length) * length;\n\n if (newValue == originalValue) {\n newValue = Math.max(newValue + length * (isIndent ? 1 : -1), 0);\n }\n\n if (isRtl) {\n format.marginRight = newValue + 'px';\n } else {\n format.marginLeft = newValue + 'px';\n }\n }\n });\n\n return paragraphOrListItem.length > 0;\n}\n","import { areSameFormats, createFormatContainer, unwrapBlock } from 'roosterjs-content-model-dom';\nimport { getOperationalBlocks, OperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport { wrapBlockStep1, WrapBlockStep1Result, wrapBlockStep2 } from '../common/wrapBlock';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function toggleModelBlockQuote(\n model: ContentModelDocument,\n format: ContentModelFormatContainerFormat\n): boolean {\n const paragraphOfQuote = getOperationalBlocks<\n ContentModelFormatContainer | ContentModelListItem\n >(model, ['FormatContainer', 'ListItem'], ['TableCell'], true /*deepFirst*/);\n\n if (areAllBlockQuotes(paragraphOfQuote)) {\n // All selections are already in quote, we need to unquote them\n paragraphOfQuote.forEach(({ block, parent }) => {\n unwrapBlock(parent, block);\n });\n } else {\n const step1Results: WrapBlockStep1Result[] = [];\n const creator = () => createFormatContainer('blockquote', format);\n const canMerge = (\n target: ContentModelBlock,\n current?: ContentModelFormatContainer\n ): target is ContentModelFormatContainer =>\n canMergeQuote(target, current?.format || format);\n\n paragraphOfQuote.forEach(({ block, parent }) => {\n if (isQuote(block)) {\n // Already in quote, no op\n } else {\n wrapBlockStep1(step1Results, parent, block, creator, canMerge);\n }\n });\n\n wrapBlockStep2(step1Results, canMerge);\n }\n\n return paragraphOfQuote.length > 0;\n}\n\nfunction canMergeQuote(\n target: ContentModelBlock,\n format: ContentModelFormatContainerFormat\n): target is ContentModelFormatContainer {\n return isQuote(target) && areSameFormats(format, target.format);\n}\n\nfunction isQuote(block: ContentModelBlock): block is ContentModelFormatContainer {\n return (\n isBlockGroupOfType(block, 'FormatContainer') &&\n block.tagName == 'blockquote'\n );\n}\n\nfunction areAllBlockQuotes(\n blockAndParents: OperationalBlocks[]\n): blockAndParents is { block: ContentModelFormatContainer; parent: ContentModelBlockGroup }[] {\n return blockAndParents.every(blockAndParent => isQuote(blockAndParent.block));\n}\n","import { adjustWordSelection } from '../selection/adjustWordSelection';\nimport { applyTableFormat } from '../table/applyTableFormat';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport { createFormatContainer } from 'roosterjs-content-model-dom';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { iterateSelections } from '../selection/iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelListItem,\n ContentModelSegment,\n ContentModelSegmentFormat,\n ContentModelTable,\n Selectable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function clearModelFormat(\n model: ContentModelDocument,\n blocksToClear: [ContentModelBlockGroup[], ContentModelBlock][],\n segmentsToClear: ContentModelSegment[],\n tablesToClear: [ContentModelTable, boolean][]\n) {\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n if (segments) {\n arrayPush(segmentsToClear, segments);\n }\n\n if (block) {\n blocksToClear.push([path, block]);\n } else if (tableContext) {\n clearTableCellFormat(tableContext, tablesToClear);\n }\n },\n {\n // When there is a default format to apply, we know how to handle segment format under list.\n // So no need to clear format of list number.\n // Otherwise, we will clear all format of selected text. And since they are under LI tag, we\n // also need to clear the format of LI (format holder) so that the format is really cleared\n includeListFormatHolder: model.format ? 'never' : 'anySegment',\n }\n );\n\n const marker = segmentsToClear[0];\n\n // 2. If selection is collapsed, add selection to whole word to clear if any\n if (\n blocksToClear.length == 1 &&\n isOnlySelectionMarkerSelected(blocksToClear[0][1]) &&\n blocksToClear.length == 1\n ) {\n segmentsToClear.splice(0, segmentsToClear.length, ...adjustWordSelection(model, marker));\n clearListFormat(blocksToClear[0][0]);\n } else if (blocksToClear.length > 1 || blocksToClear.some(x => isWholeBlockSelected(x[1]))) {\n // 2. If a full block or multiple blocks are selected, clear block format\n for (let i = blocksToClear.length - 1; i >= 0; i--) {\n const [path, block] = blocksToClear[i];\n\n clearBlockFormat(path, block);\n clearListFormat(path);\n clearContainerFormat(path, block);\n }\n }\n\n // 3. Finally clear format for segments\n clearSegmentsFormat(segmentsToClear, model.format);\n\n // 4. Clear format for table if any\n createTablesFormat(tablesToClear);\n}\n\nfunction createTablesFormat(tablesToClear: [ContentModelTable, boolean][]) {\n tablesToClear.forEach(x => {\n const [table, isWholeTableSelected] = x;\n if (isWholeTableSelected) {\n table.format = {\n useBorderBox: table.format.useBorderBox,\n borderCollapse: table.format.borderCollapse,\n };\n updateTableMetadata(table, () => null);\n }\n\n applyTableFormat(table, undefined /*newFormat*/, true);\n });\n}\n\nfunction clearSegmentsFormat(\n segmentsToClear: ContentModelSegment[],\n defaultSegmentFormat: ContentModelSegmentFormat | undefined\n) {\n segmentsToClear.forEach(x => {\n x.format = { ...(defaultSegmentFormat || {}) };\n\n if (x.link) {\n delete x.link.format.textColor;\n }\n\n delete x.code;\n });\n}\n\nfunction clearTableCellFormat(\n tableContext: TableSelectionContext | undefined,\n tablesToClear: [ContentModelTable, boolean][]\n) {\n if (tableContext) {\n const { table, colIndex, rowIndex, isWholeTableSelected } = tableContext;\n const cell = table.rows[rowIndex].cells[colIndex];\n\n if (cell.isSelected) {\n updateTableCellMetadata(cell, () => null);\n cell.isHeader = false;\n cell.format = {\n useBorderBox: cell.format.useBorderBox,\n };\n }\n\n if (!tablesToClear.find(x => x[0] == table)) {\n tablesToClear.push([table, isWholeTableSelected]);\n }\n }\n}\n\nfunction clearContainerFormat(path: ContentModelBlockGroup[], block: ContentModelBlock) {\n const containerPathIndex = getClosestAncestorBlockGroupIndex(\n path,\n ['FormatContainer'],\n ['TableCell']\n );\n\n if (containerPathIndex >= 0 && containerPathIndex < path.length - 1) {\n const container = path[containerPathIndex] as ContentModelFormatContainer;\n const containerIndex = path[containerPathIndex + 1].blocks.indexOf(container);\n const blockIndex = container.blocks.indexOf(block);\n\n if (blockIndex >= 0 && containerIndex >= 0) {\n const newContainer = createFormatContainer(container.tagName, container.format);\n\n container.blocks.splice(blockIndex, 1);\n newContainer.blocks = container.blocks.splice(blockIndex);\n\n path[containerPathIndex + 1].blocks.splice(containerIndex + 1, 0, block, newContainer);\n }\n }\n}\n\nfunction clearListFormat(path: ContentModelBlockGroup[]) {\n const listItem = path[getClosestAncestorBlockGroupIndex(path, ['ListItem'], ['TableCell'])] as\n | ContentModelListItem\n | undefined;\n\n if (listItem) {\n listItem.levels = [];\n }\n}\n\nfunction clearBlockFormat(path: ContentModelBlockGroup[], block: ContentModelBlock) {\n if (block.blockType == 'Divider') {\n const index = path[0].blocks.indexOf(block);\n\n if (index >= 0) {\n path[0].blocks.splice(index, 1);\n }\n } else if (block.blockType == 'Paragraph') {\n block.format = {};\n delete block.decorator;\n }\n}\n\nfunction isOnlySelectionMarkerSelected(block: ContentModelBlock) {\n const segments = block.blockType == 'Paragraph' ? block.segments.filter(x => x.isSelected) : [];\n\n return segments.length == 1 && segments[0].segmentType == 'SelectionMarker';\n}\n\nfunction isWholeBlockSelected(block: ContentModelBlock) {\n return (\n (block as Selectable).isSelected ||\n (block.blockType == 'Paragraph' && block.segments.every(x => x.isSelected))\n );\n}\n","import type {\n ContentModelBlock,\n ContentModelBlockBase,\n ContentModelBlockGroupBase,\n ContentModelBlockGroupType,\n ContentModelBlockType,\n ContentModelDivider,\n ContentModelDocument,\n ContentModelEntity,\n ContentModelFormatBase,\n ContentModelFormatContainer,\n ContentModelGeneralBlock,\n ContentModelImage,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelSegmentBase,\n ContentModelSegmentType,\n ContentModelSelectionMarker,\n ContentModelTable,\n ContentModelTableCell,\n ContentModelWithDataset,\n ContentModelWithFormat,\n ContentModelGeneralSegment,\n ContentModelText,\n ContentModelTableRow,\n ContentModelListLevel,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Options for cloneModel API\n */\nexport interface CloneModelOptions {\n /**\n * When pass false or not passed, the cloned model will not have cached element even they exist in original model.\n * For entity and general model, a cloned wrapper element will be added into cloned model. So that the cloned model will be fully disconnected from the original one\n * When pass true, cloned model will have the same cached element and element wrapper with the original model\n * @default true\n */\n includeCachedElement?: boolean;\n}\n\n/**\n * @internal\n */\nexport function cloneModel(\n model: ContentModelDocument,\n options?: CloneModelOptions\n): ContentModelDocument {\n const newModel: ContentModelDocument = cloneBlockGroupBase(model, options || {});\n\n if (model.format) {\n newModel.format = Object.assign({}, model.format);\n }\n\n return newModel;\n}\n\nfunction cloneBlock(block: ContentModelBlock, options: CloneModelOptions): ContentModelBlock {\n switch (block.blockType) {\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'FormatContainer':\n return cloneFormatContainer(block, options);\n case 'General':\n return cloneGeneralBlock(block, options);\n case 'ListItem':\n return cloneListItem(block, options);\n }\n break;\n case 'Divider':\n return cloneDivider(block, options);\n case 'Entity':\n return cloneEntity(block, options);\n case 'Paragraph':\n return cloneParagraph(block, options);\n case 'Table':\n return cloneTable(block, options);\n }\n}\n\nfunction cloneSegment(\n segment: ContentModelSegment,\n options: CloneModelOptions\n): ContentModelSegment {\n switch (segment.segmentType) {\n case 'Br':\n return cloneSegmentBase(segment);\n case 'Entity':\n return cloneEntity(segment, options);\n case 'General':\n return cloneGeneralSegment(segment, options);\n case 'Image':\n return cloneImage(segment);\n case 'SelectionMarker':\n return cloneSelectionMarker(segment);\n case 'Text':\n return cloneText(segment);\n }\n}\n\nfunction cloneModelWithFormat(\n model: ContentModelWithFormat\n): ContentModelWithFormat {\n return {\n format: Object.assign({}, model.format),\n };\n}\n\nfunction cloneModelWithDataset(model: ContentModelWithDataset): ContentModelWithDataset {\n return {\n dataset: Object.assign({}, model.dataset),\n };\n}\n\nfunction cloneBlockBase(\n block: ContentModelBlockBase\n): ContentModelBlockBase {\n const { blockType } = block;\n\n return Object.assign(\n {\n blockType,\n },\n cloneModelWithFormat(block)\n );\n}\n\nfunction cloneBlockGroupBase(\n group: ContentModelBlockGroupBase,\n options: CloneModelOptions\n): ContentModelBlockGroupBase {\n const { blockGroupType, blocks } = group;\n\n return {\n blockGroupType: blockGroupType,\n blocks: blocks.map(block => cloneBlock(block, options)),\n };\n}\n\nfunction cloneSegmentBase(\n segment: ContentModelSegmentBase\n): ContentModelSegmentBase {\n const { segmentType, isSelected, code, link } = segment;\n\n const newSegment: ContentModelSegmentBase = Object.assign(\n {\n segmentType,\n isSelected,\n },\n cloneModelWithFormat(segment)\n );\n\n if (code) {\n newSegment.code = cloneModelWithFormat(code);\n }\n if (link) {\n newSegment.link = Object.assign(cloneModelWithFormat(link), cloneModelWithDataset(link));\n }\n\n return newSegment;\n}\n\nfunction cloneEntity(entity: ContentModelEntity, options: CloneModelOptions): ContentModelEntity {\n const { wrapper, isReadonly, type, id } = entity;\n\n return Object.assign(\n {\n wrapper: options.includeCachedElement\n ? wrapper\n : (wrapper.cloneNode(true /*deep*/) as HTMLElement),\n isReadonly,\n type,\n id,\n },\n cloneBlockBase(entity),\n cloneSegmentBase(entity)\n );\n}\n\nfunction cloneParagraph(\n paragraph: ContentModelParagraph,\n options: CloneModelOptions\n): ContentModelParagraph {\n const { cachedElement, segments, isImplicit, decorator, segmentFormat } = paragraph;\n\n const newParagraph: ContentModelParagraph = Object.assign(\n {\n cachedElement: options.includeCachedElement ? cachedElement : undefined,\n isImplicit,\n segments: segments.map(segment => cloneSegment(segment, options)),\n segmentFormat: segmentFormat ? { ...segmentFormat } : undefined,\n },\n cloneBlockBase(paragraph),\n cloneModelWithFormat(paragraph)\n );\n\n if (decorator) {\n newParagraph.decorator = Object.assign(\n {\n tagName: decorator.tagName,\n },\n cloneModelWithFormat(decorator)\n );\n }\n\n return newParagraph;\n}\n\nfunction cloneTable(table: ContentModelTable, options: CloneModelOptions): ContentModelTable {\n const { cachedElement, widths, rows } = table;\n\n return Object.assign(\n {\n cachedElement: options.includeCachedElement ? cachedElement : undefined,\n widths: Array.from(widths),\n rows: rows.map(row => cloneTableRow(row, options)),\n },\n cloneBlockBase(table),\n cloneModelWithDataset(table)\n );\n}\n\nfunction cloneTableRow(\n row: ContentModelTableRow,\n options: CloneModelOptions\n): ContentModelTableRow {\n const { height, cells, cachedElement } = row;\n\n return Object.assign(\n {\n height,\n cachedElement: options.includeCachedElement ? cachedElement : undefined,\n cells: cells.map(cell => cloneTableCell(cell, options)),\n },\n cloneModelWithFormat(row)\n );\n}\n\nfunction cloneTableCell(\n cell: ContentModelTableCell,\n options: CloneModelOptions\n): ContentModelTableCell {\n const { cachedElement, isSelected, spanAbove, spanLeft, isHeader } = cell;\n\n return Object.assign(\n {\n cachedElement: options.includeCachedElement ? cachedElement : undefined,\n isSelected,\n spanAbove,\n spanLeft,\n isHeader,\n },\n cloneBlockGroupBase(cell, options),\n cloneModelWithFormat(cell),\n cloneModelWithDataset(cell)\n );\n}\n\nfunction cloneFormatContainer(\n container: ContentModelFormatContainer,\n options: CloneModelOptions\n): ContentModelFormatContainer {\n const { tagName, cachedElement } = container;\n const newContainer: ContentModelFormatContainer = Object.assign(\n { tagName, cachedElement: options.includeCachedElement ? cachedElement : undefined },\n cloneBlockBase(container),\n cloneBlockGroupBase(container, options)\n );\n\n if (container.zeroFontSize) {\n newContainer.zeroFontSize = true;\n }\n\n return newContainer;\n}\n\nfunction cloneListItem(\n item: ContentModelListItem,\n options: CloneModelOptions\n): ContentModelListItem {\n const { formatHolder, levels } = item;\n\n return Object.assign(\n {\n formatHolder: cloneSelectionMarker(formatHolder),\n levels: levels.map(cloneListLevel),\n },\n cloneBlockBase(item),\n cloneBlockGroupBase(item, options)\n );\n}\n\nfunction cloneListLevel(level: ContentModelListLevel): ContentModelListLevel {\n const { listType } = level;\n\n return Object.assign({ listType }, cloneModelWithFormat(level), cloneModelWithDataset(level));\n}\nfunction cloneDivider(\n divider: ContentModelDivider,\n options: CloneModelOptions\n): ContentModelDivider {\n const { tagName, isSelected, cachedElement } = divider;\n\n return Object.assign(\n {\n isSelected,\n tagName,\n cachedElement: options.includeCachedElement ? cachedElement : undefined,\n },\n cloneBlockBase(divider)\n );\n}\n\nfunction cloneGeneralBlock(\n general: ContentModelGeneralBlock,\n options: CloneModelOptions\n): ContentModelGeneralBlock {\n const { element } = general;\n\n return Object.assign(\n {\n element: options.includeCachedElement\n ? element\n : (element.cloneNode(true /*deep*/) as HTMLElement),\n },\n cloneBlockBase(general),\n cloneBlockGroupBase(general, options)\n );\n}\n\nfunction cloneSelectionMarker(marker: ContentModelSelectionMarker): ContentModelSelectionMarker {\n return Object.assign({ isSelected: marker.isSelected }, cloneSegmentBase(marker));\n}\n\nfunction cloneImage(image: ContentModelImage): ContentModelImage {\n const { src, alt, title, isSelectedAsImageSelection } = image;\n\n return Object.assign(\n { src, alt, title, isSelectedAsImageSelection },\n cloneSegmentBase(image),\n cloneModelWithDataset(image)\n );\n}\n\nfunction cloneGeneralSegment(\n general: ContentModelGeneralSegment,\n options: CloneModelOptions\n): ContentModelGeneralSegment {\n return Object.assign(cloneGeneralBlock(general, options), cloneSegmentBase(general));\n}\n\nfunction cloneText(textSegment: ContentModelText): ContentModelText {\n const { text } = textSegment;\n return Object.assign({ text }, cloneSegmentBase(textSegment));\n}\n","import {\n ContentModelBlockGroup,\n ContentModelBlockGroupBase,\n ContentModelBlockGroupType,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport type TypeOfBlockGroup<\n T extends ContentModelBlockGroup\n> = T extends ContentModelBlockGroupBase ? U : never;\n\n/**\n * @internal\n */\nexport function getClosestAncestorBlockGroupIndex(\n path: ContentModelBlockGroup[],\n blockGroupTypes: TypeOfBlockGroup[],\n stopTypes: ContentModelBlockGroupType[] = []\n): number {\n for (let i = 0; i < path.length; i++) {\n const group = path[i];\n\n if ((blockGroupTypes as string[]).indexOf(group.blockGroupType) >= 0) {\n return i;\n } else if (stopTypes.indexOf(group.blockGroupType) >= 0) {\n // Do not go across boundary specified by stopTypes.\n // For example, in most case we will set table as the boundary,\n // in order to allow modify list item under a table when the table itself is in another list item\n // Although this is not very likely to happen in most case, but we still need to handle it\n return -1;\n }\n }\n\n return -1;\n}\n","import { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { TypeOfBlockGroup } from './getClosestAncestorBlockGroupIndex';\n\n/**\n * @internal\n */\nexport function isBlockGroupOfType(\n input: ContentModelBlock | ContentModelBlockGroup | null | undefined,\n type: TypeOfBlockGroup\n): input is T {\n const item = input;\n\n return item?.blockGroupType == type;\n}\n","import { addSegment } from 'roosterjs-content-model-dom';\nimport { applyTableFormat } from '../table/applyTableFormat';\nimport { deleteSelection } from '../edit/deleteSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { InsertPoint } from '../../publicTypes/selection/InsertPoint';\nimport { normalizeTable } from '../table/normalizeTable';\nimport {\n createListItem,\n createParagraph,\n createSelectionMarker,\n createTableCell,\n normalizeContentModel,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegmentFormat,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\nconst HeadingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n/**\n * @internal\n * Options to specify how to merge models\n */\nexport interface MergeModelOption {\n /**\n * When there is only a table to merge, whether merge this table into current table (if any), or just directly insert (nested table).\n * This is usually used when paste table inside a table\n * @default false\n */\n mergeTable?: boolean;\n\n /**\n * Use this insert position to merge instead of querying selection from target model\n * @default undefined\n */\n insertPosition?: InsertPoint;\n\n /**\n * Use this to decide whether to change the source model format when doing the merge.\n * 'mergeAll': segment format of the insert position will be merged into the content that is merged into current model.\n * If the source model already has some format, it will not be overwritten.\n * 'keepSourceEmphasisFormat': format of the insert position will be set into the content that is merged into current model.\n * If the source model already has emphasis format, such as, fontWeight, Italic or underline different than the default style, it will not be overwritten.\n * 'none' the source segment format will not be modified.\n * @default undefined\n */\n mergeFormat?: 'mergeAll' | 'keepSourceEmphasisFormat' | 'none';\n}\n\n/**\n * @internal\n */\nexport function mergeModel(\n target: ContentModelDocument,\n source: ContentModelDocument,\n context?: FormatWithContentModelContext,\n options?: MergeModelOption\n) {\n const insertPosition =\n options?.insertPosition ?? deleteSelection(target, [], context).insertPoint;\n\n if (insertPosition) {\n if (options?.mergeFormat && options.mergeFormat != 'none') {\n const newFormat: ContentModelSegmentFormat = {\n ...(target.format || {}),\n ...insertPosition.marker.format,\n };\n\n applyDefaultFormat(source, newFormat, options?.mergeFormat);\n }\n\n for (let i = 0; i < source.blocks.length; i++) {\n const block = source.blocks[i];\n\n switch (block.blockType) {\n case 'Paragraph':\n mergeParagraph(insertPosition, block, i == 0);\n break;\n\n case 'Divider':\n case 'Entity':\n insertBlock(insertPosition, block);\n break;\n\n case 'Table':\n if (source.blocks.length == 1 && options?.mergeTable) {\n mergeTable(insertPosition, block, source);\n } else {\n insertBlock(insertPosition, block);\n }\n break;\n\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'General':\n case 'FormatContainer':\n insertBlock(insertPosition, block);\n break;\n case 'ListItem':\n mergeList(insertPosition, block);\n break;\n }\n break;\n }\n }\n }\n\n normalizeContentModel(target);\n}\n\nfunction mergeParagraph(\n markerPosition: InsertPoint,\n newPara: ContentModelParagraph,\n mergeToCurrentParagraph: boolean\n) {\n const { paragraph, marker } = markerPosition;\n const newParagraph = mergeToCurrentParagraph\n ? paragraph\n : splitParagraph(markerPosition, newPara.format);\n const segmentIndex = newParagraph.segments.indexOf(marker);\n\n if (segmentIndex >= 0) {\n newParagraph.segments.splice(segmentIndex, 0, ...newPara.segments);\n }\n\n if (newPara.decorator) {\n newParagraph.decorator = { ...newPara.decorator };\n if (HeadingTags.indexOf(newParagraph.decorator.tagName) > -1) {\n const sourceKeys: (keyof ContentModelSegmentFormat)[] = getObjectKeys(\n newParagraph.decorator.format\n );\n const segmentDecoratorKeys: (keyof ContentModelSegmentFormat)[] = getObjectKeys(\n newParagraph.segmentFormat || {}\n );\n\n sourceKeys.forEach(key => {\n if (segmentDecoratorKeys.indexOf(key) > -1) {\n delete newParagraph.segmentFormat?.[key];\n }\n });\n }\n }\n\n if (!mergeToCurrentParagraph) {\n newParagraph.format = newPara.format;\n }\n}\n\nfunction mergeTable(\n markerPosition: InsertPoint,\n newTable: ContentModelTable,\n source: ContentModelDocument\n) {\n const { tableContext } = markerPosition;\n\n if (tableContext && source.blocks.length == 1 && source.blocks[0] == newTable) {\n const { table, colIndex, rowIndex } = tableContext;\n for (let i = 0; i < newTable.rows.length; i++) {\n for (let j = 0; j < newTable.rows[i].cells.length; j++) {\n const newCell = newTable.rows[i].cells[j];\n\n if (i == 0 && colIndex + j >= table.rows[0].cells.length) {\n for (let k = 0; k < table.rows.length; k++) {\n const leftCell = table.rows[k]?.cells[colIndex + j - 1];\n table.rows[k].cells[colIndex + j] = createTableCell(\n false /*spanLeft*/,\n false /*spanAbove*/,\n leftCell?.isHeader,\n leftCell?.format\n );\n }\n }\n\n if (j == 0 && rowIndex + i >= table.rows.length) {\n if (!table.rows[rowIndex + i]) {\n table.rows[rowIndex + i] = {\n cells: [],\n format: {},\n height: 0,\n };\n }\n\n for (let k = 0; k < table.rows[rowIndex].cells.length; k++) {\n const aboveCell = table.rows[rowIndex + i - 1]?.cells[k];\n table.rows[rowIndex + i].cells[k] = createTableCell(\n false /*spanLeft*/,\n false /*spanAbove*/,\n false /*isHeader*/,\n aboveCell?.format\n );\n }\n }\n\n table.rows[rowIndex + i].cells[colIndex + j] = newCell;\n\n if (i == 0 && j == 0) {\n addSegment(newCell, createSelectionMarker());\n }\n }\n }\n\n normalizeTable(table, markerPosition.marker.format);\n applyTableFormat(table, undefined /*newFormat*/, true /*keepCellShade*/);\n } else {\n insertBlock(markerPosition, newTable);\n }\n}\n\nfunction mergeList(markerPosition: InsertPoint, newList: ContentModelListItem) {\n splitParagraph(markerPosition, newList.format);\n\n const { path, paragraph } = markerPosition;\n\n const listItemIndex = getClosestAncestorBlockGroupIndex(path, ['ListItem']);\n const listItem = path[listItemIndex] as ContentModelListItem;\n const listParent = path[listItemIndex + 1]; // It is ok here when index is -1, that means there is no list and we just insert a new paragraph and use path[0] as its parent\n const blockIndex = listParent.blocks.indexOf(listItem || paragraph);\n\n if (blockIndex >= 0) {\n listParent.blocks.splice(blockIndex, 0, newList);\n }\n\n if (listItem) {\n listItem?.levels.forEach((level, i) => {\n newList.levels[i] = { ...level };\n });\n }\n}\n\nfunction splitParagraph(markerPosition: InsertPoint, newParaFormat: ContentModelBlockFormat) {\n const { paragraph, marker, path } = markerPosition;\n const segmentIndex = paragraph.segments.indexOf(marker);\n const paraIndex = path[0].blocks.indexOf(paragraph);\n const newParagraph = createParagraph(\n false /*isImplicit*/,\n { ...paragraph.format, ...newParaFormat },\n paragraph.segmentFormat\n );\n\n if (segmentIndex >= 0) {\n newParagraph.segments = paragraph.segments.splice(segmentIndex);\n }\n\n if (paraIndex >= 0) {\n path[0].blocks.splice(paraIndex + 1, 0, newParagraph);\n }\n\n const listItemIndex = getClosestAncestorBlockGroupIndex(\n path,\n ['ListItem'],\n ['FormatContainer', 'TableCell']\n );\n const listItem = path[listItemIndex] as ContentModelListItem;\n\n if (listItem) {\n const listParent = listItemIndex >= 0 ? path[listItemIndex + 1] : null;\n const blockIndex = listParent ? listParent.blocks.indexOf(listItem) : -1;\n\n if (blockIndex >= 0 && listParent) {\n const newListItem = createListItem(listItem.levels, listItem.formatHolder.format);\n\n if (paraIndex >= 0) {\n newListItem.blocks = listItem.blocks.splice(paraIndex + 1);\n }\n\n if (blockIndex >= 0) {\n listParent.blocks.splice(blockIndex + 1, 0, newListItem);\n }\n\n path[listItemIndex] = newListItem;\n }\n }\n\n markerPosition.paragraph = newParagraph;\n\n return newParagraph;\n}\n\nfunction insertBlock(markerPosition: InsertPoint, block: ContentModelBlock) {\n const { path } = markerPosition;\n const newParaFormat = block.blockType !== 'Paragraph' ? {} : block.format;\n const newPara = splitParagraph(markerPosition, newParaFormat);\n const blockIndex = path[0].blocks.indexOf(newPara);\n\n if (blockIndex >= 0) {\n path[0].blocks.splice(blockIndex, 0, block);\n }\n}\n\nfunction applyDefaultFormat(\n group: ContentModelBlockGroup,\n format: ContentModelSegmentFormat,\n applyDefaultFormatOption: 'mergeAll' | 'keepSourceEmphasisFormat'\n) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem') {\n block.formatHolder.format = mergeSegmentFormat(\n applyDefaultFormatOption,\n format,\n block.formatHolder.format\n );\n }\n applyDefaultFormat(block, format, applyDefaultFormatOption);\n break;\n\n case 'Table':\n block.rows.forEach(row =>\n row.cells.forEach(cell => {\n applyDefaultFormat(cell, format, applyDefaultFormatOption);\n })\n );\n break;\n\n case 'Paragraph':\n const paragraphFormat = block.decorator?.format || {};\n block.segments.forEach(segment => {\n if (segment.segmentType == 'General') {\n applyDefaultFormat(segment, format, applyDefaultFormatOption);\n }\n\n segment.format = mergeSegmentFormat(applyDefaultFormatOption, format, {\n ...paragraphFormat,\n ...segment.format,\n });\n });\n\n if (applyDefaultFormatOption === 'keepSourceEmphasisFormat') {\n delete block.decorator;\n }\n break;\n }\n });\n}\n\nfunction mergeSegmentFormat(\n applyDefaultFormatOption: 'mergeAll' | 'keepSourceEmphasisFormat',\n targetformat: ContentModelSegmentFormat,\n sourceFormat: ContentModelSegmentFormat\n): ContentModelSegmentFormat {\n return applyDefaultFormatOption == 'mergeAll'\n ? { ...targetformat, ...sourceFormat }\n : {\n ...targetformat,\n ...getSemanticFormat(sourceFormat),\n };\n}\n\nfunction getSemanticFormat(segmentFormat: ContentModelSegmentFormat): ContentModelSegmentFormat {\n const result: ContentModelSegmentFormat = {};\n\n const { fontWeight, italic, underline } = segmentFormat;\n\n if (fontWeight && fontWeight != 'normal') {\n result.fontWeight = fontWeight;\n }\n if (italic) {\n result.italic = italic;\n }\n if (underline) {\n result.underline = underline;\n }\n\n return result;\n}\n","import { ContentModelFormatState } from '../../publicTypes/format/formatState/ContentModelFormatState';\nimport { extractBorderValues } from '../../domUtils/borderValues';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { isBold } from '../../publicApi/segment/toggleBold';\nimport { iterateSelections } from '../selection/iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelImage,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function retrieveModelFormatState(\n model: ContentModelDocument,\n pendingFormat: ContentModelSegmentFormat | null,\n formatState: ContentModelFormatState\n) {\n let firstTableContext: TableSelectionContext | undefined;\n let firstBlock: ContentModelBlock | undefined;\n let isFirst = true;\n let isFirstImage = true;\n let isFirstSegment = true;\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n // Structure formats\n retrieveStructureFormat(formatState, path, isFirst);\n\n // Multiple line format\n if (block) {\n if (firstBlock) {\n formatState.isMultilineSelection = true;\n } else {\n firstBlock = block;\n }\n }\n\n if (block?.blockType == 'Paragraph') {\n // Paragraph formats\n retrieveParagraphFormat(formatState, block, isFirst);\n\n // Segment formats\n segments?.forEach(segment => {\n if (isFirstSegment || segment.segmentType != 'SelectionMarker') {\n retrieveSegmentFormat(\n formatState,\n isFirst,\n Object.assign(\n {},\n model.format,\n block.format,\n block.decorator?.format,\n segment.format,\n segment.code?.format,\n segment.link?.format,\n pendingFormat\n )\n );\n\n mergeValue(formatState, 'isCodeInline', !!segment?.code, isFirst);\n }\n\n // We only care the format of selection marker when it is the first selected segment. This is because when selection marker\n // is after some other selected segments, it mostly like appears at the beginning of a seconde line when the whole first line\n // is selected (e.g. triple-click on a line) then the second selection marker doesn't contain a correct format, so we need to\n // ignore it\n isFirstSegment = false;\n\n formatState.canUnlink = formatState.canUnlink || !!segment.link;\n formatState.canAddImageAltText =\n formatState.canAddImageAltText ||\n segments.some(segment => segment.segmentType == 'Image');\n\n isFirst = false;\n\n if (segment.segmentType === 'Image') {\n if (isFirstImage) {\n retrieveImageFormat(segment, formatState);\n isFirstImage = false;\n } else {\n formatState.imageFormat = undefined;\n }\n }\n });\n\n isFirst = false;\n }\n\n if (tableContext) {\n if (firstTableContext) {\n const { table, colIndex, rowIndex } = firstTableContext;\n\n // Merge table format\n if (\n tableContext.table == table &&\n (tableContext.colIndex != colIndex || tableContext.rowIndex != rowIndex)\n ) {\n formatState.canMergeTableCell = true;\n formatState.isMultilineSelection = true;\n }\n } else {\n // Table formats\n retrieveTableFormat(tableContext, formatState);\n firstTableContext = tableContext;\n }\n }\n\n // TODO: Support Code block in format state for Content Model\n },\n {\n includeListFormatHolder: 'never',\n }\n );\n\n if (formatState.fontSize) {\n formatState.fontSize = px2Pt(formatState.fontSize);\n }\n}\n\nfunction retrieveSegmentFormat(\n result: ContentModelFormatState,\n isFirst: boolean,\n mergedFormat: ContentModelSegmentFormat\n) {\n const superOrSubscript = mergedFormat.superOrSubScriptSequence?.split(' ')?.pop();\n\n mergeValue(result, 'isBold', isBold(mergedFormat.fontWeight), isFirst);\n mergeValue(result, 'isItalic', mergedFormat.italic, isFirst);\n mergeValue(result, 'isUnderline', mergedFormat.underline, isFirst);\n mergeValue(result, 'isStrikeThrough', mergedFormat.strikethrough, isFirst);\n mergeValue(result, 'isSuperscript', superOrSubscript == 'super', isFirst);\n mergeValue(result, 'isSubscript', superOrSubscript == 'sub', isFirst);\n mergeValue(result, 'letterSpacing', mergedFormat.letterSpacing, isFirst);\n\n mergeValue(result, 'fontName', mergedFormat.fontFamily, isFirst);\n mergeValue(result, 'fontSize', mergedFormat.fontSize, isFirst);\n mergeValue(result, 'backgroundColor', mergedFormat.backgroundColor, isFirst);\n mergeValue(result, 'textColor', mergedFormat.textColor, isFirst);\n\n //TODO: handle block owning segments with different line-heights\n mergeValue(result, 'lineHeight', mergedFormat.lineHeight, isFirst);\n}\n\nfunction retrieveParagraphFormat(\n result: ContentModelFormatState,\n paragraph: ContentModelParagraph,\n isFirst: boolean\n) {\n const headingLevel = parseInt((paragraph.decorator?.tagName || '').substring(1));\n const validHeadingLevel = headingLevel >= 1 && headingLevel <= 6 ? headingLevel : undefined;\n\n mergeValue(result, 'marginBottom', paragraph.format.marginBottom, isFirst);\n mergeValue(result, 'marginTop', paragraph.format.marginTop, isFirst);\n mergeValue(result, 'headingLevel', validHeadingLevel, isFirst);\n mergeValue(result, 'headerLevel', validHeadingLevel, isFirst);\n mergeValue(result, 'textAlign', paragraph.format.textAlign, isFirst);\n mergeValue(result, 'direction', paragraph.format.direction, isFirst);\n}\n\nfunction retrieveStructureFormat(\n result: ContentModelFormatState,\n path: ContentModelBlockGroup[],\n isFirst: boolean\n) {\n const listItemIndex = getClosestAncestorBlockGroupIndex(path, ['ListItem'], []);\n const containerIndex = getClosestAncestorBlockGroupIndex(path, ['FormatContainer'], []);\n\n if (listItemIndex >= 0) {\n const listItem = path[listItemIndex] as ContentModelListItem;\n const listType = listItem?.levels[listItem.levels.length - 1]?.listType;\n\n mergeValue(result, 'isBullet', listType == 'UL', isFirst);\n mergeValue(result, 'isNumbering', listType == 'OL', isFirst);\n }\n\n mergeValue(\n result,\n 'isBlockQuote',\n containerIndex >= 0 &&\n (path[containerIndex] as ContentModelFormatContainer)?.tagName == 'blockquote',\n isFirst\n );\n}\n\nfunction retrieveTableFormat(tableContext: TableSelectionContext, result: ContentModelFormatState) {\n const tableFormat = updateTableMetadata(tableContext.table);\n\n result.isInTable = true;\n result.tableHasHeader = tableContext.table.rows.some(row =>\n row.cells.some(cell => cell.isHeader)\n );\n\n if (tableFormat) {\n result.tableFormat = tableFormat;\n }\n}\n\nfunction retrieveImageFormat(image: ContentModelImage, result: ContentModelFormatState) {\n const { format } = image;\n const borderKey = 'borderTop';\n const extractedBorder = extractBorderValues(format[borderKey]);\n const borderColor = extractedBorder.color;\n const borderWidth = extractedBorder.width;\n const borderStyle = extractedBorder.style;\n result.imageFormat = {\n borderColor,\n borderWidth,\n borderStyle,\n boxShadow: format.boxShadow,\n borderRadius: format.borderRadius,\n };\n}\n\nfunction mergeValue(\n format: ContentModelFormatState,\n key: K,\n newValue: ContentModelFormatState[K] | undefined,\n isFirst: boolean\n) {\n if (isFirst) {\n if (newValue !== undefined) {\n format[key] = newValue;\n }\n } else if (newValue !== format[key]) {\n delete format[key];\n }\n}\n\nfunction px2Pt(px: string) {\n if (px && px.indexOf('px') == px.length - 2) {\n // Edge may not handle the floating computing well which causes the calculated value is a little less than actual value\n // So add 0.05 to fix it\n return Math.round(parseFloat(px) * 75 + 0.05) / 100 + 'pt';\n }\n return px;\n}\n","import { addBlock, setParagraphNotImplicit } from 'roosterjs-content-model-dom';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface WrapBlockStep1Result {\n parent: ContentModelBlockGroup;\n wrapper: T;\n}\n\n/**\n * @internal\n */\nexport function wrapBlockStep1(\n step1Result: WrapBlockStep1Result[],\n parent: ContentModelBlockGroup | null,\n blockToWrap: ContentModelBlock,\n creator: () => T,\n canMerge: (target: ContentModelBlock) => target is T\n) {\n const index = parent?.blocks.indexOf(blockToWrap) ?? -1;\n\n if (parent && index >= 0) {\n parent.blocks.splice(index, 1);\n\n const prevBlock = parent.blocks[index - 1];\n const wrapper = canMerge(prevBlock) ? prevBlock : createAndAdd(parent, index, creator);\n\n setParagraphNotImplicit(blockToWrap);\n addBlock(wrapper, blockToWrap);\n\n // Use reverse order, so that we can merge from last to first to avoid modifying unmerged quotes\n step1Result.unshift({ parent, wrapper });\n }\n}\n\n/**\n * @internal\n */\nexport function wrapBlockStep2(\n step1Result: WrapBlockStep1Result[],\n canMerge: (target: ContentModelBlock, current: T) => target is T\n) {\n step1Result.forEach(({ parent, wrapper }) => {\n const index = parent.blocks.indexOf(wrapper);\n const nextBlock = parent.blocks[index + 1];\n\n if (index >= 0 && canMerge(nextBlock, wrapper)) {\n wrapper.blocks.forEach(setParagraphNotImplicit);\n arrayPush(wrapper.blocks, nextBlock.blocks);\n parent.blocks.splice(index + 1, 1);\n }\n });\n}\n\nfunction createAndAdd(\n parent: ContentModelBlockGroup,\n index: number,\n creator: () => T\n): T {\n const block = creator();\n\n parent.blocks.splice(index, 0, block);\n return block;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { deleteExpandedSelection } from './utils/deleteExpandedSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport {\n DeleteResult,\n DeleteSelectionContext,\n DeleteSelectionResult,\n DeleteSelectionStep,\n ValidDeleteSelectionContext,\n} from './utils/DeleteSelectionStep';\n\n/**\n * @internal\n */\nexport function deleteSelection(\n model: ContentModelDocument,\n additionalSteps: (DeleteSelectionStep | null)[] = [],\n formatContext?: FormatWithContentModelContext\n): DeleteSelectionResult {\n const context = deleteExpandedSelection(model, formatContext);\n\n additionalSteps.forEach(step => {\n if (\n step &&\n isValidDeleteSelectionContext(context) &&\n context.deleteResult == DeleteResult.NotDeleted\n ) {\n step(context);\n }\n });\n\n mergeParagraphAfterDelete(context);\n\n return context;\n}\n\nfunction isValidDeleteSelectionContext(\n context: DeleteSelectionContext\n): context is ValidDeleteSelectionContext {\n return !!context.insertPoint;\n}\n\n// If we end up with multiple paragraphs impacted, we need to merge them\nfunction mergeParagraphAfterDelete(context: DeleteSelectionContext) {\n const { insertPoint, deleteResult, lastParagraph, lastTableContext } = context;\n\n if (\n insertPoint &&\n deleteResult != DeleteResult.NotDeleted &&\n deleteResult != DeleteResult.NothingToDelete &&\n lastParagraph &&\n lastParagraph != insertPoint.paragraph &&\n lastTableContext == insertPoint.tableContext\n ) {\n insertPoint.paragraph.segments.push(...lastParagraph.segments);\n lastParagraph.segments = [];\n }\n}\n","import { DeleteResult, DeleteSelectionStep } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\n\n/**\n * @internal\n */\nexport const deleteAllSegmentBefore: DeleteSelectionStep = context => {\n const { paragraph, marker } = context.insertPoint;\n const index = paragraph.segments.indexOf(marker);\n\n for (let i = index - 1; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n segment.isSelected = true;\n\n if (deleteSegment(paragraph, segment, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n }\n};\n","import { BlockAndPath, getLeafSiblingBlock } from '../../block/getLeafSiblingBlock';\nimport { ContentModelSegment } from 'roosterjs-content-model-types';\nimport { createInsertPoint } from '../utils/createInsertPoint';\nimport { deleteBlock } from '../utils/deleteBlock';\nimport { DeleteResult, DeleteSelectionStep } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\nimport { setParagraphNotImplicit } from 'roosterjs-content-model-dom';\n\nfunction getDeleteCollapsedSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\n return context => {\n const isForward = direction == 'forward';\n const { paragraph, marker, path, tableContext } = context.insertPoint;\n const segments = paragraph.segments;\n\n fixupBr(segments);\n\n const index = segments.indexOf(marker) + (isForward ? 1 : -1);\n const segmentToDelete = segments[index];\n let blockToDelete: BlockAndPath | null;\n\n if (segmentToDelete) {\n if (deleteSegment(paragraph, segmentToDelete, context.formatContext, direction)) {\n context.deleteResult = DeleteResult.SingleChar;\n\n // It is possible that we have deleted everything from this paragraph, so we need to mark it as not implicit\n // to avoid losing its format. See https://github.com/microsoft/roosterjs/issues/1953\n setParagraphNotImplicit(paragraph);\n }\n } else if ((blockToDelete = getLeafSiblingBlock(path, paragraph, isForward))) {\n const { block, path, siblingSegment } = blockToDelete;\n\n if (block.blockType == 'Paragraph') {\n if (siblingSegment) {\n // When selection is under general segment, need to check if it has a sibling sibling, and delete from it\n if (deleteSegment(block, siblingSegment, context.formatContext, direction)) {\n context.deleteResult = DeleteResult.Range;\n }\n } else {\n if (isForward) {\n context.lastParagraph = block;\n } else {\n if (block.segments[block.segments.length - 1]?.segmentType == 'Br') {\n block.segments.pop();\n }\n\n context.insertPoint = createInsertPoint(marker, block, path, tableContext);\n context.lastParagraph = paragraph;\n delete block.cachedElement;\n }\n\n context.deleteResult = DeleteResult.Range;\n }\n\n // When go across table, getLeafSiblingBlock will return null, when we are here, we must be in the same table context\n context.lastTableContext = tableContext;\n } else {\n if (\n deleteBlock(\n path[0].blocks,\n block,\n undefined /*replacement*/,\n context.formatContext,\n direction\n )\n ) {\n context.deleteResult = DeleteResult.Range;\n }\n }\n } else {\n // We have nothing to delete, in this case we don't want browser handle it as well.\n // Because when Backspace on an empty document, it will also delete the only DIV and SPAN element, causes\n // editor is really empty. We don't want that happen. So the handling should stop here.\n context.deleteResult = DeleteResult.NothingToDelete;\n }\n };\n}\n\n/**\n * If the last segment is BR, remove it for now. We may add it back later when normalize model.\n * So that if this is an empty paragraph, it will start to delete next block\n */\nfunction fixupBr(segments: ContentModelSegment[]) {\n if (segments[segments.length - 1]?.segmentType == 'Br') {\n const segmentsWithoutBr = segments.filter(x => x.segmentType != 'SelectionMarker');\n\n if (segmentsWithoutBr[segmentsWithoutBr.length - 2]?.segmentType != 'Br') {\n segments.pop();\n }\n }\n}\n\n/**\n * @internal if we didn't delete anything, and we want to delete forward, now perform it\n */\nexport const forwardDeleteCollapsedSelection = getDeleteCollapsedSelection('forward');\n\n/**\n * @internal if we didn't delete anything, and we want to delete backward, now perform it\n */\nexport const backwardDeleteCollapsedSelection = getDeleteCollapsedSelection('backward');\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { isPunctuation, isSpace, normalizeText } from '../../../domUtils/stringUtil';\nimport { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';\nimport {\n DeleteResult,\n DeleteSelectionContext,\n DeleteSelectionStep,\n} from '../utils/DeleteSelectionStep';\n\nconst enum DeleteWordState {\n Start,\n Punctuation,\n Text,\n NonText,\n Space,\n End,\n}\n\ninterface CharInfo {\n text: boolean;\n space: boolean;\n punctuation: boolean;\n}\n\nfunction getDeleteWordSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\n return context => {\n const { marker, paragraph } = context.insertPoint;\n const startIndex = paragraph.segments.indexOf(marker);\n const deleteNext = direction == 'forward';\n\n let iterator = iterateSegments(paragraph, startIndex, deleteNext, context);\n let curr = iterator.next();\n\n for (let state = DeleteWordState.Start; state != DeleteWordState.End && !curr.done; ) {\n const { punctuation, space, text } = curr.value;\n\n // This is a state machine of how to delete a whole word together with space and punctuations.\n // For a full state machine chart, see\n // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png\n // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png\n switch (state) {\n case DeleteWordState.Start:\n state = space\n ? DeleteWordState.Space\n : punctuation\n ? DeleteWordState.Punctuation\n : DeleteWordState.Text;\n curr = iterator.next(true /*delete*/);\n break;\n\n case DeleteWordState.Punctuation:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.Text:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (text) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.NonText:\n if (punctuation || !space) {\n state = DeleteWordState.End;\n } else {\n curr = iterator.next(true /*delete*/);\n }\n break;\n\n case DeleteWordState.Space:\n if (space) {\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n state = deleteNext ? DeleteWordState.NonText : DeleteWordState.Punctuation;\n curr = iterator.next(true /*delete*/);\n } else {\n state = deleteNext ? DeleteWordState.End : DeleteWordState.Text;\n }\n break;\n }\n }\n };\n}\n\nfunction* iterateSegments(\n paragraph: ContentModelParagraph,\n markerIndex: number,\n forward: boolean,\n context: DeleteSelectionContext\n): Generator {\n const step = forward ? 1 : -1;\n const segments = paragraph.segments;\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph);\n\n for (let i = markerIndex + step; i >= 0 && i < segments.length; i += step) {\n const segment = segments[i];\n\n switch (segment.segmentType) {\n case 'Text':\n for (\n let j = forward ? 0 : segment.text.length - 1;\n j >= 0 && j < segment.text.length;\n j += step\n ) {\n const c = segment.text[j];\n const punctuation = isPunctuation(c);\n const space = isSpace(c);\n const text = !punctuation && !space;\n\n if (yield { punctuation, space, text }) {\n let newText = segment.text;\n\n newText = newText.substring(0, j) + newText.substring(j + 1);\n\n if (!preserveWhiteSpace) {\n newText = normalizeText(newText, forward);\n }\n\n context.deleteResult = DeleteResult.Range;\n\n if (newText) {\n segment.text = newText;\n\n if (step > 0) {\n j -= step;\n }\n } else {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n break;\n }\n }\n }\n break;\n\n case 'Image':\n if (\n yield { punctuation: true, space: false, text: false } // Treat image as punctuation since they have the same behavior.\n ) {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n context.deleteResult = DeleteResult.Range;\n }\n break;\n\n case 'SelectionMarker':\n break;\n\n default:\n return null;\n }\n }\n\n return null;\n}\n\n/**\n * @internal\n */\nexport const forwardDeleteWordSelection = getDeleteWordSelection('forward');\n\n/**\n * @internal\n */\nexport const backwardDeleteWordSelection = getDeleteWordSelection('backward');\n","import { InsertPoint } from '../../../publicTypes/selection/InsertPoint';\nimport { TableSelectionContext } from '../../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSelectionMarker,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createInsertPoint(\n marker: ContentModelSelectionMarker,\n paragraph: ContentModelParagraph,\n path: ContentModelBlockGroup[],\n tableContext: TableSelectionContext | undefined\n): InsertPoint {\n return {\n marker,\n paragraph,\n path,\n tableContext,\n };\n}\n","import { ContentModelBlock } from 'roosterjs-content-model-types';\nimport { EntityOperation } from 'roosterjs-editor-types';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\n\n/**\n * @internal\n */\nexport function deleteBlock(\n blocks: ContentModelBlock[],\n blockToDelete: ContentModelBlock,\n replacement?: ContentModelBlock,\n context?: FormatWithContentModelContext,\n direction?: 'forward' | 'backward'\n): boolean {\n const index = blocks.indexOf(blockToDelete);\n\n switch (blockToDelete.blockType) {\n case 'Table':\n case 'Divider':\n replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);\n return true;\n\n case 'Entity':\n const operation = blockToDelete.isSelected\n ? EntityOperation.Overwrite\n : direction == 'forward'\n ? EntityOperation.RemoveFromStart\n : direction == 'backward'\n ? EntityOperation.RemoveFromEnd\n : undefined;\n\n if (operation !== undefined) {\n replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);\n context?.deletedEntities.push({\n entity: blockToDelete,\n operation,\n });\n }\n\n return true;\n\n case 'BlockGroup':\n switch (blockToDelete.blockGroupType) {\n case 'General':\n if (replacement) {\n blocks.splice(index, 1, replacement);\n return true;\n } else {\n // no op, let browser handle it\n return false;\n }\n\n case 'ListItem':\n case 'FormatContainer':\n blocks.splice(index, 1);\n return true;\n }\n }\n\n return false;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { createInsertPoint } from '../utils/createInsertPoint';\nimport { deleteBlock } from '../utils/deleteBlock';\nimport { DeleteResult, DeleteSelectionContext } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\nimport { iterateSelections, IterateSelectionsOption } from '../../selection/iterateSelections';\nimport {\n createBr,\n createParagraph,\n createSelectionMarker,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\nconst DeleteSelectionIteratingOptions: IterateSelectionsOption = {\n contentUnderSelectedTableCell: 'ignoreForTableOrCell', // When a table cell is selected, we replace all content for this cell, so no need to go into its content\n contentUnderSelectedGeneralElement: 'generalElementOnly', // When a general element is selected, we replace the whole element so no need to go into its content\n includeListFormatHolder: 'never',\n};\n\n/**\n * @internal\n * Iterate the model and find all selected content if any, delete them, and keep/create an insert point\n * at the first deleted position so that we know where to put cursor to after delete\n */\nexport function deleteExpandedSelection(\n model: ContentModelDocument,\n formatContext?: FormatWithContentModelContext\n): DeleteSelectionContext {\n const context: DeleteSelectionContext = {\n deleteResult: DeleteResult.NotDeleted,\n insertPoint: null,\n formatContext,\n };\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n // Set paragraph, format and index for default position where we will put cursor to.\n // Later we can overwrite these info when process the selections\n let paragraph = createParagraph(\n true /*implicit*/,\n undefined /*blockFormat*/,\n model.format\n );\n let markerFormat = model.format;\n let insertMarkerIndex = 0;\n\n if (segments) {\n // Delete segments inside a paragraph\n if (segments[0] && block?.blockType == 'Paragraph') {\n // Now that we have found a paragraph with selections, we can overwrite the default paragraph with this one\n // so we can put cursor here after delete\n paragraph = block;\n insertMarkerIndex = paragraph.segments.indexOf(segments[0]);\n markerFormat = segments[0].format;\n\n context.lastParagraph = paragraph;\n context.lastTableContext = tableContext;\n\n segments.forEach((segment, i) => {\n if (\n i == 0 &&\n !context.insertPoint &&\n segment.segmentType == 'SelectionMarker'\n ) {\n // First time we hit a selection and it is a selection marker, just mark it and not need to delete\n // because this is possible a collapsed selection, then it will be handled later\n context.insertPoint = createInsertPoint(\n segment,\n block,\n path,\n tableContext\n );\n } else if (deleteSegment(block, segment, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n });\n\n // Since we are operating on this paragraph and it possible we delete everything from this paragraph,\n // Need to make it \"not implicit\" so that it will always have a container element, so that when we do normalization\n // of this paragraph, a BR can be added if need\n if (context.deleteResult == DeleteResult.Range) {\n setParagraphNotImplicit(block);\n }\n }\n } else if (block) {\n // Delete a whole block (divider, table, ...)\n const blocks = path[0].blocks;\n\n if (deleteBlock(blocks, block, paragraph, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n } else if (tableContext) {\n // Delete a whole table cell\n const { table, colIndex, rowIndex } = tableContext;\n const row = table.rows[rowIndex];\n const cell = row.cells[colIndex];\n\n path = [cell, ...path];\n paragraph.segments.push(createBr(model.format));\n cell.blocks = [paragraph];\n\n delete cell.cachedElement;\n delete row.cachedElement;\n context.deleteResult = DeleteResult.Range;\n }\n\n if (!context.insertPoint) {\n // If we have not got a insert point after delete and we have a paragraph to put an insert point in, create insert point now\n const marker = createSelectionMarker(markerFormat);\n\n setParagraphNotImplicit(paragraph);\n paragraph.segments.splice(insertMarkerIndex, 0, marker);\n context.insertPoint = createInsertPoint(marker, paragraph, path, tableContext);\n }\n },\n DeleteSelectionIteratingOptions\n );\n\n return context;\n}\n","import { ContentModelParagraph, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { deleteSingleChar } from './deleteSingleChar';\nimport { EntityOperation } from 'roosterjs-editor-types';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\nimport { isWhiteSpacePreserved, normalizeSingleSegment } from 'roosterjs-content-model-dom';\nimport { normalizeText } from '../../../domUtils/stringUtil';\n\n/**\n * @internal\n */\nexport function deleteSegment(\n paragraph: ContentModelParagraph,\n segmentToDelete: ContentModelSegment,\n context?: FormatWithContentModelContext,\n direction?: 'forward' | 'backward'\n): boolean {\n const segments = paragraph.segments;\n const index = segments.indexOf(segmentToDelete);\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph);\n const isForward = direction == 'forward';\n const isBackward = direction == 'backward';\n\n if (!preserveWhiteSpace) {\n normalizePreviousSegment(segments, index);\n }\n\n switch (segmentToDelete.segmentType) {\n case 'Br':\n case 'Image':\n case 'SelectionMarker':\n segments.splice(index, 1);\n return true;\n\n case 'Entity':\n const operation = segmentToDelete.isSelected\n ? EntityOperation.Overwrite\n : isForward\n ? EntityOperation.RemoveFromStart\n : isBackward\n ? EntityOperation.RemoveFromEnd\n : undefined;\n if (operation !== undefined) {\n segments.splice(index, 1);\n context?.deletedEntities.push({\n entity: segmentToDelete,\n operation,\n });\n }\n\n return true;\n\n case 'Text':\n let text = segmentToDelete.text;\n\n if (text.length == 0 || segmentToDelete.isSelected) {\n segments.splice(index, 1);\n } else if (direction) {\n text = deleteSingleChar(text, isForward); // isForward ? text.substring(1) : text.substring(0, text.length - 1);\n\n if (!preserveWhiteSpace) {\n text = normalizeText(text, isForward);\n }\n\n if (text == '') {\n segments.splice(index, 1);\n } else {\n segmentToDelete.text = text;\n }\n }\n\n return true;\n\n case 'General':\n if (segmentToDelete.isSelected) {\n segments.splice(index, 1);\n return true;\n } else {\n // No op if a general segment is not selected, let browser handle general segment\n // TODO: Need to revisit this\n return false;\n }\n }\n}\n\nfunction normalizePreviousSegment(segments: ContentModelSegment[], currentIndex: number) {\n let index = currentIndex - 1;\n\n while (segments[index]?.segmentType == 'SelectionMarker') {\n index--;\n }\n\n const segment = segments[index];\n\n if (segment) {\n normalizeSingleSegment(segment);\n }\n}\n","/**\n * @internal\n */\nexport function deleteSingleChar(text: string, isForward: boolean) {\n // In case of emoji that occupies multiple characters, we need to delete the whole emoji\n const array = [...text];\n let deleteLength = 0;\n\n for (\n let i = isForward ? 0 : array.length - 1,\n deleteState: 'notDeleted' | 'waiting' | 'done' = 'notDeleted';\n i >= 0 && i < array.length && deleteState != 'done';\n i += isForward ? 1 : -1\n ) {\n switch (array[i]) {\n case '\\u200D': // ZERO WIDTH JOINER\n case '\\u20E3': // COMBINING ENCLOSING KEYCAP\n case '\\uFE0E': // VARIATION SELECTOR-15\n case '\\uFE0F': // VARIATION SELECTOR-16\n deleteState = 'notDeleted';\n deleteLength++;\n break;\n\n default:\n if (deleteState == 'notDeleted') {\n deleteState = 'waiting';\n deleteLength++;\n } else if (deleteState == 'waiting') {\n deleteState = 'done';\n }\n break;\n }\n }\n\n array.splice(isForward ? 0 : array.length - deleteLength, deleteLength);\n\n return array.join('');\n}\n","import {\n createBr,\n createParagraph,\n createSelectionMarker,\n normalizeContentModel,\n} from 'roosterjs-content-model-dom';\nimport { DeleteResult, DeleteSelectionResult } from '../edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../edit/deleteSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { getClosestAncestorBlockGroupIndex } from '../common/getClosestAncestorBlockGroupIndex';\nimport { InsertEntityPosition } from '../../publicTypes/parameter/InsertEntityOptions';\nimport { setSelection } from '../selection/setSelection';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelEntity,\n ContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function insertEntityModel(\n model: ContentModelDocument,\n entityModel: ContentModelEntity,\n position: InsertEntityPosition,\n isBlock: boolean,\n focusAfterEntity?: boolean,\n context?: FormatWithContentModelContext\n) {\n let blockParent: ContentModelBlockGroup | undefined;\n let blockIndex = -1;\n let deleteResult: DeleteSelectionResult;\n\n if (position == 'begin' || position == 'end') {\n blockParent = model;\n blockIndex = position == 'begin' ? 0 : model.blocks.length;\n } else if ((deleteResult = deleteSelection(model, [], context)).insertPoint) {\n const { marker, paragraph, path } = deleteResult.insertPoint;\n\n if (deleteResult.deleteResult == DeleteResult.Range) {\n normalizeContentModel(model);\n }\n\n if (!isBlock) {\n const index = paragraph.segments.indexOf(marker);\n\n if (index >= 0) {\n paragraph.segments.splice(focusAfterEntity ? index : index + 1, 0, entityModel);\n }\n } else {\n const pathIndex =\n position == 'root'\n ? getClosestAncestorBlockGroupIndex(path, ['TableCell', 'Document'])\n : 0;\n blockParent = path[pathIndex];\n const child = path[pathIndex - 1];\n const directChild: ContentModelBlock =\n child?.blockGroupType == 'FormatContainer' ||\n child?.blockGroupType == 'General' ||\n child?.blockGroupType == 'ListItem'\n ? child\n : paragraph;\n const childIndex = blockParent.blocks.indexOf(directChild);\n blockIndex = childIndex >= 0 ? childIndex + 1 : -1;\n }\n }\n\n if (blockIndex >= 0 && blockParent) {\n const blocksToInsert: ContentModelBlock[] = [];\n let nextParagraph: ContentModelParagraph | undefined;\n\n if (isBlock) {\n const nextBlock = blockParent.blocks[blockIndex];\n\n blocksToInsert.push(entityModel);\n\n if (nextBlock?.blockType == 'Paragraph') {\n nextParagraph = nextBlock;\n } else if (!nextBlock || nextBlock.blockType == 'Entity' || focusAfterEntity) {\n nextParagraph = createParagraph(false /*isImplicit*/, {}, model.format);\n nextParagraph.segments.push(createBr(model.format));\n blocksToInsert.push(nextParagraph);\n }\n } else {\n nextParagraph = createParagraph(\n false /*isImplicit*/,\n undefined /*format*/,\n model.format\n );\n\n nextParagraph.segments.push(entityModel);\n blocksToInsert.push(nextParagraph);\n }\n\n blockParent.blocks.splice(blockIndex, 0, ...blocksToInsert);\n\n if (focusAfterEntity && nextParagraph) {\n const marker = createSelectionMarker(nextParagraph.segments[0]?.format || model.format);\n const segments = nextParagraph.segments;\n\n isBlock ? segments.unshift(marker) : segments.push(marker);\n setSelection(model, marker, marker);\n }\n }\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { NodePosition } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get pending segment format from editor if any, otherwise null\n * @param editor The editor to get format from\n */\nexport function getPendingFormat(editor: IContentModelEditor): ContentModelSegmentFormat | null {\n return getPendingFormatHolder(editor).format;\n}\n\n/**\n * @internal\n * Set pending segment format to editor\n * @param editor The editor to set pending format to\n * @param format The format to set.\n * @param position Cursor position when set this format\n */\nexport function setPendingFormat(\n editor: IContentModelEditor,\n format: ContentModelSegmentFormat,\n position: NodePosition\n) {\n const holder = getPendingFormatHolder(editor);\n\n holder.format = format;\n holder.position = position;\n}\n\n/**\n * @internal Clear pending format if any\n * @param editor The editor to set pending format to\n */\nexport function clearPendingFormat(editor: IContentModelEditor) {\n const holder = getPendingFormatHolder(editor);\n\n holder.format = null;\n holder.position = null;\n}\n\n/**\n * @internal\n * Check if this editor can apply pending format\n * @param editor The editor to get format from\n */\nexport function canApplyPendingFormat(editor: IContentModelEditor): boolean {\n const holder = getPendingFormatHolder(editor);\n let result = false;\n\n if (holder.format && holder.position) {\n const position = editor.getFocusedPosition();\n\n if (position?.equalTo(holder.position)) {\n result = true;\n }\n }\n\n return result;\n}\ninterface PendingFormatHolder {\n format: ContentModelSegmentFormat | null;\n position: NodePosition | null;\n}\n\nconst PendingFormatHolderKey = '__ContentModelPendingFormat';\n\nfunction getPendingFormatHolder(editor: IContentModelEditor): PendingFormatHolder {\n return editor.getCustomData(PendingFormatHolderKey, () => ({\n format: null,\n position: null,\n }));\n}\n","import { Border } from '../../publicTypes/interface/Border';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { extractBorderValues } from '../../domUtils/borderValues';\nimport { parseValueWithUnit } from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\nexport default function applyImageBorderFormat(\n image: ContentModelImage,\n border: Border | null,\n borderRadius?: string\n) {\n if (border) {\n const format = image.format;\n const { width, style, color } = border;\n const borderKey = 'borderTop';\n const extractedBorder = extractBorderValues(format[borderKey]);\n const borderColor = extractedBorder.color;\n const borderWidth = extractedBorder.width;\n const borderStyle = extractedBorder.style;\n let borderFormat = '';\n\n if (width) {\n borderFormat = parseValueWithUnit(width) + 'px';\n } else if (borderWidth) {\n borderFormat = borderWidth;\n } else {\n borderFormat = '1px';\n }\n\n if (style) {\n borderFormat = `${borderFormat} ${style}`;\n } else if (borderStyle) {\n borderFormat = `${borderFormat} ${borderStyle}`;\n } else {\n borderFormat = `${borderFormat} solid`;\n }\n\n if (color) {\n borderFormat = `${borderFormat} ${color}`;\n } else if (borderColor) {\n borderFormat = `${borderFormat} ${borderColor}`;\n }\n image.format.borderLeft = borderFormat;\n image.format.borderTop = borderFormat;\n image.format.borderBottom = borderFormat;\n image.format.borderRight = borderFormat;\n } else {\n delete image.format.borderLeft;\n delete image.format.borderTop;\n delete image.format.borderBottom;\n delete image.format.borderRight;\n }\n\n if (borderRadius) {\n image.format.borderRadius = borderRadius;\n }\n}\n","import {\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function findListItemsInSameThread(\n model: ContentModelDocument,\n currentItem: ContentModelListItem\n): ContentModelListItem[] {\n const items: (ContentModelListItem | null)[] = [];\n\n findListItems(model, items);\n\n return filterListItems(items, currentItem);\n}\n\nfunction findListItems(group: ContentModelBlockGroup, result: (ContentModelListItem | null)[]) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem') {\n result.push(block);\n } else {\n pushNullIfNecessary(result);\n findListItems(block, result);\n pushNullIfNecessary(result);\n }\n break;\n\n case 'Paragraph':\n pushNullIfNecessary(result);\n\n block.segments.forEach(segment => {\n if (segment.segmentType == 'General') {\n findListItems(segment, result);\n }\n });\n\n pushNullIfNecessary(result);\n break;\n\n case 'Table':\n pushNullIfNecessary(result);\n\n block.rows.forEach(row =>\n row.cells.forEach(cell => {\n findListItems(cell, result);\n })\n );\n pushNullIfNecessary(result);\n\n break;\n }\n });\n}\n\nfunction pushNullIfNecessary(result: (ContentModelListItem | null)[]) {\n const last = result[result.length - 1];\n\n if (!last || last !== null) {\n result.push(null);\n }\n}\n\nfunction filterListItems(\n items: (ContentModelListItem | null)[],\n currentItem: ContentModelListItem\n) {\n const result: ContentModelListItem[] = [];\n const currentIndex = items.indexOf(currentItem);\n const levelLength = currentItem.levels.length;\n const isOrderedList = currentItem.levels[levelLength - 1]?.listType == 'OL';\n\n if (currentIndex >= 0) {\n for (let i = currentIndex; i >= 0; i--) {\n const item = items[i];\n\n if (!item) {\n if (isOrderedList) {\n continue;\n } else {\n break;\n }\n }\n\n const startNumberOverride = hasStartNumberOverride(item, levelLength);\n\n if (areListTypesCompatible(items, currentIndex, i)) {\n result.unshift(item);\n\n if (isOrderedList && startNumberOverride) {\n break;\n }\n } else if (!isOrderedList || startNumberOverride) {\n break;\n }\n }\n\n for (let i = currentIndex + 1; i < items.length; i++) {\n const item = items[i];\n\n if (!item) {\n if (isOrderedList) {\n continue;\n } else {\n break;\n }\n }\n\n const startNumberOverride = hasStartNumberOverride(item, levelLength);\n\n if (areListTypesCompatible(items, currentIndex, i) && !startNumberOverride) {\n result.push(item);\n } else if (!isOrderedList || startNumberOverride) {\n break;\n }\n }\n }\n\n return result;\n}\n\nfunction areListTypesCompatible(\n listItems: (ContentModelListItem | null)[],\n currentIndex: number,\n compareToIndex: number\n): boolean {\n const currentLevels = listItems[currentIndex]!.levels;\n const compareToLevels = listItems[compareToIndex]!.levels;\n\n return (\n currentLevels.length <= compareToLevels.length &&\n currentLevels.every(\n (currentLevel, i) => currentLevel.listType == compareToLevels[i].listType\n )\n );\n}\n\nfunction hasStartNumberOverride(item: ContentModelListItem, levelLength: number): boolean {\n return item.levels\n .slice(0, levelLength)\n .some(level => level.format.startNumberOverride !== undefined);\n}\n","import { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n createListItem,\n createListLevel,\n normalizeContentModel,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelDocument,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setListType(model: ContentModelDocument, listType: 'OL' | 'UL') {\n const paragraphOrListItems = getOperationalBlocks(\n model,\n ['ListItem'],\n [] // Set stop types to be empty so we can find list items even cross the boundary of table, then we can always operation on the list item if any\n );\n const alreadyInExpectedType = paragraphOrListItems.every(({ block }) =>\n isBlockGroupOfType(block, 'ListItem')\n ? block.levels[block.levels.length - 1]?.listType == listType\n : shouldIgnoreBlock(block)\n );\n let existingListItems: ContentModelListItem[] = [];\n let hasIgnoredParagraphBefore = false;\n\n paragraphOrListItems.forEach(({ block, parent }, itemIndex) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n const level = block.levels.pop();\n\n if (!alreadyInExpectedType && level) {\n level.listType = listType;\n block.levels.push(level);\n } else if (block.blocks.length == 1) {\n setParagraphNotImplicit(block.blocks[0]);\n }\n } else {\n const index = parent.blocks.indexOf(block);\n\n if (index >= 0) {\n if (paragraphOrListItems.length == 1 || !shouldIgnoreBlock(block)) {\n const prevBlock = parent.blocks[index - 1];\n const segmentFormat =\n (block.blockType == 'Paragraph' && block.segments[0]?.format) || {};\n const newListItem = createListItem(\n [\n createListLevel(listType, {\n startNumberOverride:\n itemIndex > 0 ||\n (prevBlock?.blockType == 'BlockGroup' &&\n prevBlock.blockGroupType == 'ListItem' &&\n prevBlock.levels[0]?.listType == 'OL')\n ? undefined\n : 1,\n direction: block.format.direction,\n textAlign: block.format.textAlign,\n marginTop: hasIgnoredParagraphBefore ? '0' : undefined,\n }),\n ],\n // For list bullet, we only want to carry over these formats from segments:\n {\n fontFamily: segmentFormat.fontFamily,\n fontSize: segmentFormat.fontSize,\n textColor: segmentFormat.textColor,\n }\n );\n\n // Since there is only one paragraph under the list item, no need to keep its paragraph element (DIV).\n // TODO: Do we need to keep the CSS styles applied to original DIV?\n if (block.blockType == 'Paragraph') {\n block.isImplicit = true;\n }\n\n newListItem.blocks.push(block);\n\n parent.blocks.splice(index, 1, newListItem);\n existingListItems.push(newListItem);\n } else {\n hasIgnoredParagraphBefore = true;\n\n existingListItems.forEach(x => (x.levels[0].format.marginBottom = '0'));\n existingListItems = [];\n }\n }\n }\n });\n\n normalizeContentModel(model);\n\n return paragraphOrListItems.length > 0;\n}\n\nfunction shouldIgnoreBlock(block: ContentModelBlock) {\n return (\n block.blockType != 'Paragraph' ||\n block.segments.every(x => x.segmentType == 'Br' || x.segmentType == 'SelectionMarker')\n );\n}\n","import { ContentModelDocument, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { getSelectedParagraphs } from './collectSelections';\nimport { setSelection } from './setSelection';\n\n/**\n * @internal\n */\nexport function adjustSegmentSelection(\n model: ContentModelDocument,\n firstMatcher: (target: ContentModelSegment) => boolean,\n siblingMatcher: (target: ContentModelSegment, ref: ContentModelSegment) => boolean\n): boolean {\n const paragraphs = getSelectedParagraphs(model);\n let first: ContentModelSegment | undefined;\n let last: ContentModelSegment | undefined;\n let changed = false;\n\n paragraphs.forEach(p => {\n const index = first ? 0 : p.segments.findIndex(x => firstMatcher(x));\n const segments = p.segments;\n\n if (!first) {\n first = segments[index];\n\n for (let i = index; i > 0; i--) {\n if (siblingMatcher(segments[i - 1], first)) {\n first = segments[i - 1];\n changed = changed || !segments[i - 1].isSelected;\n } else {\n changed = changed || !!segments[i - 1].isSelected;\n break;\n }\n }\n }\n\n if (first) {\n for (let i = index; i < p.segments.length; i++) {\n if (i == index || siblingMatcher(segments[i], last || segments[index])) {\n last = segments[i];\n changed = changed || !segments[i].isSelected;\n } else {\n changed = changed || !!segments[i].isSelected;\n break;\n }\n }\n }\n });\n\n if (first && last) {\n setSelection(model, first, last);\n }\n\n return changed;\n}\n","import { createText } from 'roosterjs-content-model-dom';\nimport { isPunctuation, isSpace } from '../../domUtils/stringUtil';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport {\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelText,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function adjustWordSelection(\n model: ContentModelDocument,\n marker: ContentModelSegment\n): ContentModelSegment[] {\n let markerBlock: ContentModelParagraph | undefined;\n\n iterateSelections([model], (path, tableContext, block, segments) => {\n //Find the block with the selection marker\n if (block?.blockType == 'Paragraph' && segments?.length == 1 && segments[0] == marker) {\n markerBlock = block;\n }\n return true;\n });\n\n if (markerBlock) {\n const segments: ContentModelSegment[] = [];\n let markerSelectionIndex = markerBlock.segments.indexOf(marker);\n for (let i = markerSelectionIndex - 1; i >= 0; i--) {\n const currentSegment = markerBlock.segments[i];\n if (currentSegment.segmentType == 'Text') {\n const found = findDelimiter(currentSegment, false /*moveRightward*/);\n if (found > -1) {\n if (found == currentSegment.text.length) {\n break;\n }\n splitTextSegment(markerBlock.segments, currentSegment, i, found);\n segments.push(markerBlock.segments[i + 1]);\n break;\n } else {\n segments.push(markerBlock.segments[i]);\n }\n } else {\n break;\n }\n }\n markerSelectionIndex = markerBlock.segments.indexOf(marker);\n segments.push(marker);\n\n // Marker is at start of word\n if (segments.length <= 1) {\n return segments;\n }\n\n for (let i = markerSelectionIndex + 1; i < markerBlock.segments.length; i++) {\n const currentSegment = markerBlock.segments[i];\n if (currentSegment.segmentType == 'Text') {\n const found = findDelimiter(currentSegment, true /*moveRightward*/);\n if (found > -1) {\n if (found == 0) {\n break;\n }\n splitTextSegment(markerBlock.segments, currentSegment, i, found);\n segments.push(markerBlock.segments[i]);\n break;\n } else {\n segments.push(markerBlock.segments[i]);\n }\n } else {\n break;\n }\n }\n\n // Marker is at end of word\n if (segments[segments.length - 1] == marker) {\n return [marker];\n }\n\n return segments;\n } else {\n return [marker];\n }\n}\n\n/*\n// These are unicode characters mostly from the Category Space Separator (Zs)\nhttps://unicode.org/Public/UNIDATA/Scripts.txt\n\n\\u2000 = EN QUAD\n\\u2009 = THIN SPACE\n\\u200a = HAIR SPACE\n​\\u200b = ZERO WIDTH SPACE\n​\\u202f = NARROW NO-BREAK SPACE\n\\u205f​ = MEDIUM MATHEMATICAL SPACE\n\\u3000 = IDEOGRAPHIC SPACE\n*/\nfunction findDelimiter(segment: ContentModelText, moveRightward: boolean): number {\n const word = segment.text;\n let offset = -1;\n if (moveRightward) {\n for (let i = 0; i < word.length; i++) {\n const char = word[i];\n\n if (isPunctuation(char) || isSpace(char)) {\n offset = i;\n break;\n }\n }\n } else {\n for (let i = word.length - 1; i >= 0; i--) {\n const char = word[i];\n\n if (isPunctuation(char) || isSpace(char)) {\n offset = i + 1;\n break;\n }\n }\n }\n return offset;\n}\n\nfunction splitTextSegment(\n segments: ContentModelSegment[],\n textSegment: ContentModelText,\n index: number,\n found: number\n) {\n const text = textSegment.text;\n const newSegment = createText(text.substring(0, found), segments[index].format);\n\n if (textSegment.code) {\n newSegment.code = {\n format: { ...textSegment.code.format },\n };\n }\n\n if (textSegment.link) {\n newSegment.link = {\n format: { ...textSegment.link.format },\n dataset: { ...textSegment.link.dataset },\n };\n }\n\n textSegment.text = text.substring(found, text.length);\n segments.splice(index, 0, newSegment);\n}\n","import { addSegment, createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { ContentModelTableRow } from 'roosterjs-content-model-types';\nimport { TableSelectionCoordinates } from '../table/getSelectedCells';\n\n/**\n * @internal\n */\nexport function collapseTableSelection(\n rows: ContentModelTableRow[],\n selection: TableSelectionCoordinates\n) {\n const { firstCol, firstRow } = selection;\n const cell = rows[firstRow]?.cells[firstCol];\n if (cell) {\n addSegment(cell, createSelectionMarker());\n }\n}\n","import { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport { iterateSelections, IterateSelectionsOption } from './iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelBlockGroupType,\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\nimport {\n getClosestAncestorBlockGroupIndex,\n TypeOfBlockGroup,\n} from '../common/getClosestAncestorBlockGroupIndex';\n\n/**\n * @internal\n */\nexport type OperationalBlocks = {\n parent: ContentModelBlockGroup;\n block: ContentModelBlock | T;\n};\n\n/**\n * @internal\n */\nexport function getSelectedSegmentsAndParagraphs(\n model: ContentModelDocument,\n includingFormatHolder: boolean\n): [ContentModelSegment, ContentModelParagraph | null][] {\n const selections = collectSelections(model, {\n includeListFormatHolder: includingFormatHolder ? 'allSegments' : 'never',\n });\n const result: [ContentModelSegment, ContentModelParagraph | null][] = [];\n\n selections.forEach(({ segments, block }) => {\n if (segments && ((includingFormatHolder && !block) || block?.blockType == 'Paragraph')) {\n segments.forEach(segment => {\n if (segment.segmentType != 'Entity' || !segment.isReadonly) {\n result.push([segment, block?.blockType == 'Paragraph' ? block : null]);\n }\n });\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getSelectedParagraphs(model: ContentModelDocument): ContentModelParagraph[] {\n const selections = collectSelections(model, { includeListFormatHolder: 'never' });\n const result: ContentModelParagraph[] = [];\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ block }) => {\n if (block?.blockType == 'Paragraph') {\n result.push(block);\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getOperationalBlocks(\n model: ContentModelDocument,\n blockGroupTypes: TypeOfBlockGroup[],\n stopTypes: ContentModelBlockGroupType[],\n deepFirst?: boolean\n): OperationalBlocks[] {\n const result: OperationalBlocks[] = [];\n const findSequence = deepFirst ? blockGroupTypes.map(type => [type]) : [blockGroupTypes];\n const selections = collectSelections(model, {\n includeListFormatHolder: 'never',\n contentUnderSelectedTableCell: 'ignoreForTable', // When whole table is selected, we treat the table as a single block\n });\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ path, block }) => {\n for (let i = 0; i < findSequence.length; i++) {\n const groupIndex = getClosestAncestorBlockGroupIndex(path, findSequence[i], stopTypes);\n\n if (groupIndex >= 0) {\n if (result.filter(x => x.block == path[groupIndex]).length <= 0) {\n result.push({\n parent: path[groupIndex + 1],\n block: path[groupIndex] as T,\n });\n }\n break;\n } else if (i == findSequence.length - 1 && block) {\n result.push({\n parent: path[0],\n block: block,\n });\n break;\n }\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getFirstSelectedTable(\n model: ContentModelDocument\n): [ContentModelTable | undefined, ContentModelBlockGroup[]] {\n const selections = collectSelections(model, { includeListFormatHolder: 'never' });\n let table: ContentModelTable | undefined;\n let resultPath: ContentModelBlockGroup[] = [];\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ block, tableContext, path }) => {\n if (!table) {\n if (block?.blockType == 'Table') {\n table = block;\n resultPath = [...path];\n } else if (tableContext?.table) {\n table = tableContext.table;\n\n const parent = path.filter(\n group => group.blocks.indexOf(tableContext.table) >= 0\n )[0];\n const index = path.indexOf(parent);\n resultPath = index >= 0 ? path.slice(index) : [];\n }\n }\n });\n\n return [table, resultPath];\n}\n\n/**\n * @internal\n */\nexport function getFirstSelectedListItem(\n model: ContentModelDocument\n): ContentModelListItem | undefined {\n let listItem: ContentModelListItem | undefined;\n\n getOperationalBlocks(model, ['ListItem'], ['TableCell']).forEach(r => {\n if (!listItem && isBlockGroupOfType(r.block, 'ListItem')) {\n listItem = r.block;\n }\n });\n\n return listItem;\n}\n\ninterface SelectionInfo {\n path: ContentModelBlockGroup[];\n segments?: ContentModelSegment[];\n block?: ContentModelBlock;\n tableContext?: TableSelectionContext;\n}\n\nfunction collectSelections(\n model: ContentModelDocument,\n option?: IterateSelectionsOption\n): SelectionInfo[] {\n const selections: SelectionInfo[] = [];\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n selections.push({\n path,\n tableContext,\n block,\n segments,\n });\n },\n option\n );\n\n return selections;\n}\n\nfunction removeUnmeaningfulSelections(selections: SelectionInfo[]) {\n if (\n selections.length > 1 &&\n isOnlySelectionMarkerSelected(selections, false /*checkFirstParagraph*/)\n ) {\n selections.pop();\n }\n\n // Remove head paragraph if first selection marker is the only selection\n if (\n selections.length > 1 &&\n isOnlySelectionMarkerSelected(selections, true /*checkFirstParagraph*/)\n ) {\n selections.shift();\n }\n}\n\nfunction isOnlySelectionMarkerSelected(\n selections: SelectionInfo[],\n checkFirstParagraph: boolean\n): boolean {\n const selection = selections[checkFirstParagraph ? 0 : selections.length - 1];\n\n if (\n selection.block?.blockType == 'Paragraph' &&\n selection.segments &&\n selection.segments.length > 0\n ) {\n const allSegments = selection.block.segments;\n const segment = selection.segments[0];\n\n return (\n selection.segments.length == 1 &&\n segment.segmentType == 'SelectionMarker' &&\n segment == allSegments[checkFirstParagraph ? allSegments.length - 1 : 0]\n );\n } else {\n return false;\n }\n}\n","import { SelectionRangeEx, SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function getSelectionRootNode(rangeEx: SelectionRangeEx | undefined): Node | undefined {\n return !rangeEx\n ? undefined\n : rangeEx.type == SelectionRangeTypes.Normal\n ? rangeEx.ranges[0]?.commonAncestorContainer\n : rangeEx.type == SelectionRangeTypes.TableSelection\n ? rangeEx.table\n : rangeEx.type == SelectionRangeTypes.ImageSelection\n ? rangeEx.image\n : undefined;\n}\n","import { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelBlockWithCache,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface IterateSelectionsOption {\n /**\n * For selected table cell, this property determines how do we handle its content.\n * include: No matter if table cell is selected, always invoke callback function for selected content (default value)\n * ignoreForTable: When the whole table is selected we invoke callback for the table (using block parameter) but skip\n * all its cells and content, otherwise keep invoking callback for table cell and content\n * ignoreForTableOrCell: If whole table is selected, same with ignoreForTable, or if a table cell is selected, only\n * invoke callback for the table cell itself but not for its content, otherwise keep invoking callback for content.\n * @default include\n */\n contentUnderSelectedTableCell?: 'include' | 'ignoreForTable' | 'ignoreForTableOrCell';\n\n /**\n * For a selected general element, this property determines how do we handle its content.\n * contentOnly: (Default) When the whole general element is selected, we only invoke callback for its selected content\n * generalElementOnly: When the whole general element is selected, we only invoke callback for the general element (using block or\n * segment parameter depends on if it is a block or segment), but skip all its content.\n * both: When general element is selected, we invoke callback first for its content, then for general element itself\n */\n contentUnderSelectedGeneralElement?: 'contentOnly' | 'generalElementOnly' | 'both';\n\n /**\n * Whether call the callback for the list item format holder segment\n * anySegment: call the callback if any segment is selected under a list item\n * allSegments: call the callback only when all segments under the list item are selected\n * never: never call the callback for list item format holder\n * @default allSegments\n */\n includeListFormatHolder?: 'anySegment' | 'allSegments' | 'never';\n}\n\n/**\n * @internal\n * @returns True to stop iterating, otherwise keep going\n */\nexport type IterateSelectionsCallback = (\n path: ContentModelBlockGroup[],\n tableContext?: TableSelectionContext,\n block?: ContentModelBlock,\n segments?: ContentModelSegment[]\n) => void | boolean;\n\n/**\n * @internal\n * @returns True to stop iterating, otherwise keep going\n */\nexport function iterateSelections(\n path: ContentModelBlockGroup[],\n callback: IterateSelectionsCallback,\n option?: IterateSelectionsOption,\n table?: TableSelectionContext,\n treatAllAsSelect?: boolean\n) {\n const internalCallback: IterateSelectionsCallback = (path, tableContext, block, segments) => {\n if (!!(block as ContentModelBlockWithCache)?.cachedElement) {\n // TODO: This is a temporary solution. A better solution would be making all results from iterationSelection() to be readonly,\n // use a util function to change it to be editable before edit them where we clear its cached element\n delete (block as ContentModelBlockWithCache).cachedElement;\n }\n\n return callback(path, tableContext, block, segments);\n };\n\n internalIterateSelections(path, internalCallback, option, table, treatAllAsSelect);\n}\n\nfunction internalIterateSelections(\n path: ContentModelBlockGroup[],\n callback: IterateSelectionsCallback,\n option?: IterateSelectionsOption,\n table?: TableSelectionContext,\n treatAllAsSelect?: boolean\n): boolean {\n const parent = path[0];\n const includeListFormatHolder = option?.includeListFormatHolder || 'allSegments';\n const contentUnderSelectedTableCell = option?.contentUnderSelectedTableCell || 'include';\n const contentUnderSelectedGeneralElement =\n option?.contentUnderSelectedGeneralElement || 'contentOnly';\n\n let hasSelectedSegment = false;\n let hasUnselectedSegment = false;\n\n for (let i = 0; i < parent.blocks.length; i++) {\n const block = parent.blocks[i];\n\n switch (block.blockType) {\n case 'BlockGroup':\n const newPath = [block, ...path];\n\n if (block.blockGroupType == 'General') {\n const isSelected = treatAllAsSelect || block.isSelected;\n const handleGeneralContent =\n !isSelected ||\n contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'contentOnly';\n const handleGeneralElement =\n isSelected &&\n (contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'generalElementOnly' ||\n block.blocks.length == 0);\n\n if (\n (handleGeneralContent &&\n internalIterateSelections(\n newPath,\n callback,\n option,\n table,\n isSelected\n )) ||\n (handleGeneralElement && callback(path, table, block))\n ) {\n return true;\n }\n } else if (\n internalIterateSelections(newPath, callback, option, table, treatAllAsSelect)\n ) {\n return true;\n }\n break;\n\n case 'Table':\n const rows = block.rows;\n const isWholeTableSelected = rows.every(row =>\n row.cells.every(cell => cell.isSelected)\n );\n\n if (contentUnderSelectedTableCell != 'include' && isWholeTableSelected) {\n if (callback(path, table, block)) {\n return true;\n }\n } else {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const row = rows[rowIndex];\n\n for (let colIndex = 0; colIndex < row.cells.length; colIndex++) {\n const cell = row.cells[colIndex];\n if (!cell) {\n continue;\n }\n\n const newTable: TableSelectionContext = {\n table: block,\n rowIndex,\n colIndex,\n isWholeTableSelected,\n };\n\n if (cell.isSelected && callback(path, newTable)) {\n return true;\n }\n\n if (\n !cell.isSelected ||\n contentUnderSelectedTableCell != 'ignoreForTableOrCell'\n ) {\n const newPath = [cell, ...path];\n const isSelected = treatAllAsSelect || cell.isSelected;\n\n if (\n internalIterateSelections(\n newPath,\n callback,\n option,\n newTable,\n isSelected\n )\n ) {\n return true;\n }\n }\n }\n }\n }\n\n break;\n\n case 'Paragraph':\n const segments: ContentModelSegment[] = [];\n\n for (let i = 0; i < block.segments.length; i++) {\n const segment = block.segments[i];\n const isSelected = treatAllAsSelect || segment.isSelected;\n\n if (segment.segmentType == 'General') {\n const handleGeneralContent =\n !isSelected ||\n contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'contentOnly';\n const handleGeneralElement =\n isSelected &&\n (contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'generalElementOnly' ||\n segment.blocks.length == 0);\n\n if (\n handleGeneralContent &&\n internalIterateSelections(\n [segment, ...path],\n callback,\n option,\n table,\n isSelected\n )\n ) {\n return true;\n }\n\n if (handleGeneralElement) {\n segments.push(segment);\n }\n } else if (isSelected) {\n segments.push(segment);\n }\n\n if (isSelected) {\n hasSelectedSegment = true;\n } else {\n hasUnselectedSegment = true;\n }\n }\n\n if (segments.length > 0 && callback(path, table, block, segments)) {\n return true;\n }\n break;\n\n case 'Divider':\n case 'Entity':\n if ((treatAllAsSelect || block.isSelected) && callback(path, table, block)) {\n return true;\n }\n\n break;\n }\n }\n\n if (\n includeListFormatHolder != 'never' &&\n parent.blockGroupType == 'ListItem' &&\n hasSelectedSegment &&\n (!hasUnselectedSegment || includeListFormatHolder == 'anySegment') &&\n // When whole list item is selected, also add its format holder as selected segment\n callback(path, table, undefined /*block*/, [parent.formatHolder])\n ) {\n return true;\n }\n\n return false;\n}\n","import { Coordinates } from 'roosterjs-editor-types';\nimport { isGeneralSegment } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n ContentModelTable,\n Selectable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setSelection(group: ContentModelBlockGroup, start?: Selectable, end?: Selectable) {\n setSelectionToBlockGroup(group, false /*isInSelection*/, start || null, end || null);\n}\n\nfunction setSelectionToBlockGroup(\n group: ContentModelBlockGroup,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n): boolean {\n return handleSelection(isInSelection, group, start, end, isInSelection => {\n if (isGeneralSegment(group)) {\n setIsSelected(group, isInSelection);\n }\n\n group.blocks.forEach(block => {\n isInSelection = setSelectionToBlock(block, isInSelection, start, end);\n });\n\n return isInSelection;\n });\n}\n\nfunction setSelectionToBlock(\n block: ContentModelBlock,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n) {\n switch (block.blockType) {\n case 'BlockGroup':\n return setSelectionToBlockGroup(block, isInSelection, start, end);\n\n case 'Table':\n return setSelectionToTable(block, isInSelection, start, end);\n\n case 'Divider':\n case 'Entity':\n return handleSelection(isInSelection, block, start, end, isInSelection => {\n if (isInSelection) {\n block.isSelected = true;\n } else {\n delete block.isSelected;\n }\n\n return isInSelection;\n });\n\n case 'Paragraph':\n const segmentsToDelete: number[] = [];\n\n block.segments.forEach((segment, i) => {\n isInSelection = handleSelection(\n isInSelection,\n segment,\n start,\n end,\n isInSelection => {\n return setSelectionToSegment(\n segment,\n isInSelection,\n segmentsToDelete,\n start,\n end,\n i\n );\n }\n );\n });\n\n while (segmentsToDelete.length > 0) {\n const index = segmentsToDelete.pop()!;\n\n if (index >= 0) {\n block.segments.splice(index, 1);\n }\n }\n\n return isInSelection;\n\n default:\n return isInSelection;\n }\n}\n\nfunction setSelectionToTable(\n table: ContentModelTable,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n): boolean {\n const startCo = findCell(table, start);\n const endCo = end ? findCell(table, end) : startCo;\n\n if (!isInSelection && startCo && endCo) {\n for (let row = 0; row < table.rows.length; row++) {\n for (let col = 0; col < table.rows[row].cells.length; col++) {\n const isSelected =\n row >= startCo.y && row <= endCo.y && col >= startCo.x && col <= endCo.x;\n\n setIsSelected(table.rows[row].cells[col], isSelected);\n }\n }\n } else {\n table.rows.forEach(row =>\n row.cells.forEach(cell => {\n isInSelection = setSelectionToBlockGroup(cell, isInSelection, start, end);\n })\n );\n }\n\n return isInSelection;\n}\n\nfunction findCell(table: ContentModelTable, cell: Selectable | null): Coordinates | undefined {\n let x = -1;\n let y = -1;\n\n if (cell) {\n for (let row = 0; y < 0 && row < table.rows.length; row++) {\n for (let col = 0; x < 0 && col < table.rows[row].cells.length; col++) {\n if (table.rows[row].cells[col] == cell) {\n x = col;\n y = row;\n }\n }\n }\n }\n\n return x >= 0 && y >= 0 ? { x, y } : undefined;\n}\n\nfunction setSelectionToSegment(\n segment: ContentModelSegment,\n isInSelection: boolean,\n segmentsToDelete: number[],\n start: Selectable | null,\n end: Selectable | null,\n i: number\n) {\n switch (segment.segmentType) {\n case 'SelectionMarker':\n if (!isInSelection || (segment != start && segment != end)) {\n // Delete the selection marker when\n // 1. It is not in selection any more. Or\n // 2. It is in middle of selection, so no need to have it\n segmentsToDelete.push(i);\n }\n return isInSelection;\n\n case 'General':\n setIsSelected(segment, isInSelection);\n\n return segment != start && segment != end\n ? setSelectionToBlockGroup(segment, isInSelection, start, end)\n : isInSelection;\n\n case 'Image':\n setIsSelected(segment, isInSelection);\n segment.isSelectedAsImageSelection = start == segment && (!end || end == segment);\n return isInSelection;\n default:\n setIsSelected(segment, isInSelection);\n return isInSelection;\n }\n}\n\nfunction setIsSelected(selectable: Selectable, value: boolean) {\n if (value) {\n selectable.isSelected = true;\n } else {\n delete selectable.isSelected;\n }\n\n return value;\n}\n\nfunction handleSelection(\n isInSelection: boolean,\n model: ContentModelBlockGroup | ContentModelBlock | ContentModelSegment,\n start: Selectable | null,\n end: Selectable | null,\n callback: (isInSelection: boolean) => boolean\n) {\n isInSelection = isInSelection || model == start;\n isInSelection = callback(isInSelection);\n return isInSelection && !!end && model != end;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function alignTable(\n table: ContentModelTable,\n operation:\n | TableOperation.AlignCenter\n | TableOperation.AlignLeft\n | TableOperation.AlignRight\n | CompatibleTableOperation.AlignCenter\n | CompatibleTableOperation.AlignLeft\n | CompatibleTableOperation.AlignRight\n) {\n table.format.marginLeft = operation == TableOperation.AlignLeft ? '' : 'auto';\n table.format.marginRight = operation == TableOperation.AlignRight ? '' : 'auto';\n\n delete table.cachedElement;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst TextAlignValueMap: Partial> = {\n [TableOperation.AlignCellLeft]: 'start',\n [TableOperation.AlignCellCenter]: 'center',\n [TableOperation.AlignCellRight]: 'end',\n};\n\nconst VerticalAlignValueMap: Partial> = {\n [TableOperation.AlignCellTop]: 'top',\n [TableOperation.AlignCellMiddle]: 'middle',\n [TableOperation.AlignCellBottom]: 'bottom',\n};\n\n/**\n * @internal\n */\nexport function alignTableCell(\n table: ContentModelTable,\n operation:\n | TableOperation.AlignCellCenter\n | TableOperation.AlignCellLeft\n | TableOperation.AlignCellRight\n | TableOperation.AlignCellTop\n | TableOperation.AlignCellMiddle\n | TableOperation.AlignCellBottom\n | CompatibleTableOperation.AlignCellCenter\n | CompatibleTableOperation.AlignCellLeft\n | CompatibleTableOperation.AlignCellRight\n | CompatibleTableOperation.AlignCellTop\n | CompatibleTableOperation.AlignCellMiddle\n | CompatibleTableOperation.AlignCellBottom\n) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n const textAlign = TextAlignValueMap[operation];\n const verticalAlign = VerticalAlignValueMap[operation];\n\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[rowIndex]?.cells[colIndex];\n const format = cell?.format;\n\n if (format) {\n delete cell.cachedElement;\n\n format.textAlign = textAlign || format.textAlign;\n format.verticalAlign = verticalAlign || format.verticalAlign;\n\n if (verticalAlign) {\n updateTableCellMetadata(cell, metadata => {\n metadata = metadata || {};\n metadata.vAlignOverride = true;\n return metadata;\n });\n }\n }\n }\n }\n }\n}\n","import { BorderKeys } from 'roosterjs-content-model-dom';\nimport { combineBorderValue, extractBorderValues } from '../../domUtils/borderValues';\nimport { setTableCellBackgroundColor } from './setTableCellBackgroundColor';\nimport { TableBorderFormat } from 'roosterjs-editor-types';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n BorderFormat,\n ContentModelTable,\n ContentModelTableRow,\n TableMetadataFormat,\n} from 'roosterjs-content-model-types';\n\nconst DEFAULT_FORMAT: Required = {\n topBorderColor: '#ABABAB',\n bottomBorderColor: '#ABABAB',\n verticalBorderColor: '#ABABAB',\n hasHeaderRow: false,\n hasFirstColumn: false,\n hasBandedRows: false,\n hasBandedColumns: false,\n bgColorEven: null,\n bgColorOdd: '#ABABAB20',\n headerRowColor: '#ABABAB',\n tableBorderFormat: TableBorderFormat.DEFAULT,\n verticalAlign: null,\n};\n\ntype MetaOverrides = {\n bgColorOverrides: boolean[][];\n vAlignOverrides: boolean[][];\n};\n\n/**\n * @internal\n */\nexport function applyTableFormat(\n table: ContentModelTable,\n newFormat?: TableMetadataFormat,\n keepCellShade?: boolean\n) {\n const { rows } = table;\n\n updateTableMetadata(table, format => {\n const effectiveMetadata = {\n ...DEFAULT_FORMAT,\n ...format,\n ...(newFormat || {}),\n };\n\n const metaOverrides: MetaOverrides = updateOverrides(rows, !keepCellShade);\n\n delete table.cachedElement;\n\n clearCache(rows);\n formatCells(rows, effectiveMetadata, metaOverrides);\n setFirstColumnFormat(rows, effectiveMetadata, metaOverrides);\n setHeaderRowFormat(rows, effectiveMetadata, metaOverrides);\n return effectiveMetadata;\n });\n}\n\nfunction clearCache(rows: ContentModelTableRow[]) {\n rows.forEach(row => {\n row.cells.forEach(cell => {\n delete cell.cachedElement;\n });\n\n delete row.cachedElement;\n });\n}\n\nfunction updateOverrides(rows: ContentModelTableRow[], removeCellShade: boolean): MetaOverrides {\n const overrides: MetaOverrides = { bgColorOverrides: [], vAlignOverrides: [] };\n\n rows.forEach(row => {\n const bgColorOverrides: boolean[] = [];\n const vAlignOverrides: boolean[] = [];\n\n overrides.bgColorOverrides.push(bgColorOverrides);\n overrides.vAlignOverrides.push(vAlignOverrides);\n\n row.cells.forEach(cell => {\n updateTableCellMetadata(cell, metadata => {\n if (metadata && removeCellShade) {\n bgColorOverrides.push(false);\n delete metadata.bgColorOverride;\n } else {\n bgColorOverrides.push(!!metadata?.bgColorOverride);\n }\n vAlignOverrides.push(!!metadata?.vAlignOverride);\n\n return metadata;\n });\n });\n });\n\n return overrides;\n}\n\ntype ShouldUseTransparentBorder = (indexProp: {\n firstRow: boolean;\n lastRow: boolean;\n firstColumn: boolean;\n lastColumn: boolean;\n}) => [boolean, boolean, boolean, boolean];\n\nconst BorderFormatters: Record = {\n [TableBorderFormat.DEFAULT]: _ => [false, false, false, false],\n [TableBorderFormat.LIST_WITH_SIDE_BORDERS]: ({ lastColumn, firstColumn }) => [\n false,\n !lastColumn,\n false,\n !firstColumn,\n ],\n [TableBorderFormat.FIRST_COLUMN_HEADER_EXTERNAL]: ({\n firstColumn,\n firstRow,\n lastColumn,\n lastRow,\n }) => [\n !firstRow,\n (!lastColumn && !firstColumn) || (firstColumn && firstRow),\n !lastRow && !firstRow,\n !firstColumn,\n ],\n [TableBorderFormat.NO_HEADER_BORDERS]: ({ firstRow, firstColumn, lastColumn }) => [\n firstRow,\n firstRow || lastColumn,\n false,\n firstRow || firstColumn,\n ],\n [TableBorderFormat.NO_SIDE_BORDERS]: ({ firstColumn, lastColumn }) => [\n false,\n lastColumn,\n false,\n firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_1]: ({ firstRow, firstColumn }) => [\n firstColumn && !firstRow,\n firstRow,\n firstColumn && !firstRow,\n firstRow && !firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_2]: ({ firstRow, firstColumn }) => [\n !firstRow,\n firstRow || !firstColumn,\n !firstRow,\n !firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_3]: ({ firstColumn, firstRow }) => [\n true,\n firstRow || !firstColumn,\n !firstRow,\n true,\n ],\n [TableBorderFormat.CLEAR]: () => [true, true, true, true],\n};\n\n/*\n * Apply vertical align, borders, and background color to all cells in the table\n */\nfunction formatCells(\n rows: ContentModelTableRow[],\n format: TableMetadataFormat,\n metaOverrides: MetaOverrides\n) {\n const { hasBandedRows, hasBandedColumns, bgColorOdd, bgColorEven } = format;\n\n rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, colIndex) => {\n // Format Borders\n const transparentBorderMatrix = BorderFormatters[\n format.tableBorderFormat as TableBorderFormat\n ]({\n firstRow: rowIndex === 0,\n lastRow: rowIndex === rows.length - 1,\n firstColumn: colIndex === 0,\n lastColumn: colIndex === row.cells.length - 1,\n });\n\n const formatColor = [\n format.topBorderColor,\n format.verticalBorderColor,\n format.bottomBorderColor,\n format.verticalBorderColor,\n ];\n\n transparentBorderMatrix.forEach((alwaysUseTransparent, i) => {\n const borderColor = (!alwaysUseTransparent && formatColor[i]) || '';\n\n cell.format[BorderKeys[i]] = combineBorderValue({\n style: getBorderStyleFromColor(borderColor),\n width: '1px',\n color: borderColor,\n });\n });\n\n // Format Background Color\n if (!metaOverrides.bgColorOverrides[rowIndex][colIndex]) {\n const color =\n hasBandedRows || hasBandedColumns\n ? (hasBandedColumns && colIndex % 2 != 0) ||\n (hasBandedRows && rowIndex % 2 != 0)\n ? bgColorOdd\n : bgColorEven\n : bgColorEven; /* bgColorEven is the default color */\n\n setTableCellBackgroundColor(cell, color);\n }\n\n // Format Vertical Align\n if (format.verticalAlign && !metaOverrides.vAlignOverrides[rowIndex][colIndex]) {\n cell.format.verticalAlign = format.verticalAlign;\n }\n });\n });\n}\n\nfunction setFirstColumnFormat(\n rows: ContentModelTableRow[],\n format: Partial,\n metaOverrides: MetaOverrides\n) {\n rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, cellIndex) => {\n if (format.hasFirstColumn && cellIndex === 0) {\n cell.isHeader = true;\n\n if (rowIndex !== 0 && !metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {\n setBorderColor(cell.format, 'borderTop');\n setTableCellBackgroundColor(cell, null /*color*/);\n }\n\n if (rowIndex !== rows.length - 1 && rowIndex !== 0) {\n setBorderColor(cell.format, 'borderBottom');\n }\n } else {\n cell.isHeader = false;\n }\n });\n });\n}\n\nfunction setHeaderRowFormat(\n rows: ContentModelTableRow[],\n format: TableMetadataFormat,\n metaOverrides: MetaOverrides\n) {\n const rowIndex = 0;\n\n rows[rowIndex]?.cells.forEach((cell, cellIndex) => {\n cell.isHeader = format.hasHeaderRow;\n\n if (format.hasHeaderRow && format.headerRowColor) {\n if (!metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {\n setTableCellBackgroundColor(cell, format.headerRowColor);\n }\n\n setBorderColor(cell.format, 'borderTop', format.headerRowColor);\n setBorderColor(cell.format, 'borderRight', format.headerRowColor);\n setBorderColor(cell.format, 'borderLeft', format.headerRowColor);\n }\n });\n}\n\nfunction setBorderColor(format: BorderFormat, key: keyof BorderFormat, value?: string) {\n const border = extractBorderValues(format[key]);\n border.color = value || '';\n border.style = getBorderStyleFromColor(border.color);\n format[key] = combineBorderValue(border);\n}\n\nfunction getBorderStyleFromColor(color?: string): string {\n return !color || color == 'transparent' ? 'none' : 'solid';\n}\n","import { ContentModelTableRow } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function canMergeCells(\n rows: ContentModelTableRow[],\n firstRow: number,\n firstCol: number,\n lastRow: number,\n lastCol: number\n): boolean {\n const noSpanAbove =\n firstCol == lastCol ||\n rows[firstRow].cells.every(\n (cell, colIndex) => colIndex < firstCol || colIndex > lastCol || !cell.spanAbove\n );\n const noSpanLeft =\n firstRow == lastRow ||\n rows.every(\n (row, rowIndex) =>\n rowIndex < firstRow || rowIndex > lastRow || !row.cells[firstCol].spanLeft\n );\n\n const noDifferentBelowSpan = rows[lastRow].cells\n .map((_, colIndex) =>\n colIndex >= firstCol && colIndex <= lastCol\n ? getBelowSpanCount(rows, lastRow, colIndex)\n : -1\n )\n .every((x, _, a) => x < 0 || x == a[firstCol]);\n const noDifferentRightSpan = rows\n .map((_, rowIndex) =>\n rowIndex >= firstRow && rowIndex <= lastRow\n ? getRightSpanCount(rows, rowIndex, lastCol)\n : -1\n )\n .every((x, _, a) => x < 0 || x == a[firstRow]);\n\n return noSpanAbove && noSpanLeft && noDifferentBelowSpan && noDifferentRightSpan;\n}\n\nfunction getBelowSpanCount(rows: ContentModelTableRow[], rowIndex: number, colIndex: number) {\n let spanCount = 0;\n\n for (let row = rowIndex + 1; row < rows.length; row++) {\n if (rows[row]?.cells[colIndex]?.spanAbove) {\n spanCount++;\n } else {\n break;\n }\n }\n\n return spanCount;\n}\n\nfunction getRightSpanCount(rows: ContentModelTableRow[], rowIndex: number, colIndex: number) {\n let spanCount = 0;\n\n for (let col = colIndex + 1; col < rows[rowIndex]?.cells.length; col++) {\n if (rows[rowIndex]?.cells[col]?.spanLeft) {\n spanCount++;\n } else {\n break;\n }\n }\n\n return spanCount;\n}\n","import { addBlock, createTable, createTableCell } from 'roosterjs-content-model-dom';\nimport { ContentModelBlockGroup, ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createTableStructure(\n parent: ContentModelBlockGroup,\n columns: number,\n rows: number\n): ContentModelTable {\n const table = createTable(rows);\n\n addBlock(parent, table);\n\n table.rows.forEach(row => {\n for (let i = 0; i < columns; i++) {\n const cell = createTableCell();\n\n row.cells.push(cell);\n }\n });\n\n return table;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function deleteTable(table: ContentModelTable) {\n table.rows = [];\n delete table.cachedElement;\n}\n","import { collapseTableSelection } from '../selection/collapseTableSelection';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\n\n/**\n * @internal\n */\nexport function deleteTableColumn(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let rowIndex = 0; rowIndex < table.rows.length; rowIndex++) {\n const cellInNextCol = table.rows[rowIndex].cells[sel.lastCol + 1];\n\n if (cellInNextCol) {\n cellInNextCol.spanLeft =\n cellInNextCol.spanLeft && table.rows[rowIndex].cells[sel.firstCol].spanLeft;\n }\n\n table.rows[rowIndex].cells.splice(sel.firstCol, sel.lastCol - sel.firstCol + 1);\n }\n\n table.widths.splice(sel.firstCol, sel.lastCol - sel.firstCol + 1);\n collapseTableSelection(table.rows, sel);\n }\n}\n","import { collapseTableSelection } from '../selection/collapseTableSelection';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\n\n/**\n * @internal\n */\nexport function deleteTableRow(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n table.rows[sel.firstRow].cells.forEach((cell, colIndex) => {\n const cellInNextRow = table.rows[sel.lastRow + 1]?.cells[colIndex];\n\n if (cellInNextRow) {\n cellInNextRow.spanAbove = cellInNextRow.spanAbove && cell.spanAbove;\n }\n });\n\n table.rows.splice(sel.firstRow, sel.lastRow - sel.firstRow + 1);\n\n collapseTableSelection(table.rows, sel);\n }\n}\n","import { createBr, createParagraph } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * After edit table, it maybe in a abnormal state, e.g. selected table cell is removed, or all rows are removed causes no place to put cursor.\n * We need to make sure table is in normal state, and there is a place to put cursor.\n * @returns a new paragraph that can but put focus in, or undefined if not needed\n */\nexport function ensureFocusableParagraphForTable(\n model: ContentModelDocument,\n path: ContentModelBlockGroup[],\n table: ContentModelTable\n): ContentModelParagraph | undefined {\n let paragraph: ContentModelParagraph | undefined;\n const firstCell = table.rows.filter(row => row.cells.length > 0)[0]?.cells[0];\n\n if (firstCell) {\n // When there is a valid cell to put focus, use it\n paragraph = firstCell.blocks.filter(\n (block): block is ContentModelParagraph => block.blockType == 'Paragraph'\n )[0];\n\n if (!paragraph) {\n // If there is not a paragraph under this cell, create one\n paragraph = createEmptyParagraph(model);\n firstCell.blocks.push(paragraph);\n }\n } else {\n // No table cell at all, which means the whole table is deleted. So we need to remove it from content model.\n let block: ContentModelBlock = table;\n let parent: ContentModelBlockGroup | undefined;\n paragraph = createEmptyParagraph(model);\n\n // If the table is the only block of its parent and parent is a FormatContainer, remove the parent as well.\n // We need to do this in a loop in case there are multiple layer of FormatContainer that match this case\n while ((parent = path.shift())) {\n const index = parent.blocks.indexOf(block) ?? -1;\n\n if (parent && index >= 0) {\n parent.blocks.splice(index, 1, paragraph);\n }\n\n if (\n parent.blockGroupType == 'FormatContainer' &&\n parent.blocks.length == 1 &&\n parent.blocks[0] == paragraph\n ) {\n // If the new paragraph is the only child of parent format container, unwrap parent as well\n block = parent;\n } else {\n // Otherwise, just stop here and keep processing the new paragraph\n break;\n }\n }\n }\n\n return paragraph;\n}\n\nfunction createEmptyParagraph(model: ContentModelDocument) {\n const newPara = createParagraph(false /*isImplicit*/, undefined /*blockFormat*/, model.format);\n const br = createBr(model.format);\n\n newPara.segments.push(br);\n\n return newPara;\n}\n","import hasSelectionInBlockGroup from '../../publicApi/selection/hasSelectionInBlockGroup';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface TableSelectionCoordinates {\n firstRow: number;\n firstCol: number;\n lastRow: number;\n lastCol: number;\n}\n\n/**\n * @internal\n */\nexport function getSelectedCells(table: ContentModelTable): TableSelectionCoordinates | null {\n let firstRow = -1;\n let firstCol = -1;\n let lastRow = -1;\n let lastCol = -1;\n let hasSelection = false;\n\n table.rows.forEach((row, rowIndex) =>\n row.cells.forEach((cell, colIndex) => {\n if (hasSelectionInBlockGroup(cell)) {\n hasSelection = true;\n\n if (firstRow < 0) {\n firstRow = rowIndex;\n }\n\n if (firstCol < 0) {\n firstCol = colIndex;\n }\n\n lastRow = Math.max(lastRow, rowIndex);\n lastCol = Math.max(lastCol, colIndex);\n }\n })\n );\n\n return hasSelection ? { firstRow, firstCol, lastRow, lastCol } : null;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function insertTableColumn(\n table: ContentModelTable,\n operation:\n | TableOperation.InsertLeft\n | TableOperation.InsertRight\n | CompatibleTableOperation.InsertLeft\n | CompatibleTableOperation.InsertRight\n) {\n const sel = getSelectedCells(table);\n const insertLeft = operation == TableOperation.InsertLeft;\n\n if (sel) {\n for (let i = sel?.firstCol; i <= sel.lastCol; i++) {\n table.rows.forEach(row => {\n const cell = row.cells[insertLeft ? sel.firstCol : sel.lastCol];\n\n row.cells.splice(\n insertLeft ? sel.firstCol : sel.lastCol + 1,\n 0,\n createTableCell(cell.spanLeft, cell.spanAbove, cell.isHeader, cell.format)\n );\n });\n table.widths.splice(\n insertLeft ? sel.firstCol : sel.lastCol + 1,\n 0,\n table.widths[insertLeft ? sel.firstCol : sel.lastCol]\n );\n }\n }\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function insertTableRow(\n table: ContentModelTable,\n operation:\n | TableOperation.InsertAbove\n | TableOperation.InsertBelow\n | CompatibleTableOperation.InsertAbove\n | CompatibleTableOperation.InsertBelow\n) {\n const sel = getSelectedCells(table);\n const insertAbove = operation == TableOperation.InsertAbove;\n\n if (sel) {\n for (let i = sel.firstRow; i <= sel.lastRow; i++) {\n const sourceRow = table.rows[insertAbove ? sel.firstRow : sel.lastRow];\n\n table.rows.splice(insertAbove ? sel.firstRow : sel.lastRow + 1, 0, {\n format: { ...sourceRow.format },\n cells: sourceRow.cells.map(cell =>\n createTableCell(cell.spanLeft, cell.spanAbove, cell.isHeader, cell.format)\n ),\n height: sourceRow.height,\n });\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { getSelectedCells } from './getSelectedCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function mergeTableCells(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel && canMergeCells(table.rows, sel.firstRow, sel.firstCol, sel.lastRow, sel.lastCol)) {\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[rowIndex].cells[colIndex];\n\n if (cell) {\n cell.spanLeft = colIndex > sel.firstCol;\n cell.spanAbove = rowIndex > sel.firstRow;\n\n delete cell.cachedElement;\n }\n }\n\n delete table.rows[rowIndex].cachedElement;\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function mergeTableColumn(\n table: ContentModelTable,\n operation:\n | TableOperation.MergeLeft\n | TableOperation.MergeRight\n | CompatibleTableOperation.MergeLeft\n | CompatibleTableOperation.MergeRight\n) {\n const sel = getSelectedCells(table);\n const mergeLeft = operation == TableOperation.MergeLeft;\n\n if (sel) {\n const mergingColIndex = mergeLeft ? sel.firstCol : sel.lastCol + 1;\n\n if (mergingColIndex > 0 && mergingColIndex < table.rows[0].cells.length) {\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n const cell = table.rows[rowIndex]?.cells[mergingColIndex];\n\n if (\n cell &&\n canMergeCells(\n table.rows,\n rowIndex,\n mergingColIndex - 1,\n rowIndex,\n mergingColIndex\n )\n ) {\n cell.spanLeft = true;\n\n let newSelectedCol = mergingColIndex;\n\n while (table.rows[rowIndex]?.cells[newSelectedCol]?.spanLeft) {\n delete table.rows[rowIndex].cells[newSelectedCol].cachedElement;\n newSelectedCol--;\n }\n\n if (table.rows[rowIndex]?.cells[newSelectedCol]) {\n table.rows[rowIndex].cells[newSelectedCol].isSelected = true;\n\n delete table.rows[rowIndex].cells[newSelectedCol].cachedElement;\n }\n\n delete cell.cachedElement;\n }\n\n delete table.rows[rowIndex].cachedElement;\n }\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function mergeTableRow(\n table: ContentModelTable,\n operation:\n | TableOperation.MergeAbove\n | TableOperation.MergeBelow\n | CompatibleTableOperation.MergeAbove\n | CompatibleTableOperation.MergeBelow\n) {\n const sel = getSelectedCells(table);\n const mergeAbove = operation == TableOperation.MergeAbove;\n\n if (sel) {\n const mergingRowIndex = mergeAbove ? sel.firstRow : sel.lastRow + 1;\n\n if (mergingRowIndex > 0 && mergingRowIndex < table.rows.length) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[mergingRowIndex].cells[colIndex];\n\n if (\n cell &&\n canMergeCells(\n table.rows,\n mergingRowIndex - 1,\n colIndex,\n mergingRowIndex,\n colIndex\n )\n ) {\n cell.spanAbove = true;\n\n let newSelectedRow = mergingRowIndex;\n\n while (table.rows[newSelectedRow]?.cells[colIndex]?.spanAbove) {\n delete table.rows[newSelectedRow].cells[colIndex].cachedElement;\n delete table.rows[newSelectedRow].cachedElement;\n newSelectedRow--;\n }\n\n if (table.rows[newSelectedRow]?.cells[colIndex]) {\n table.rows[newSelectedRow].cells[colIndex].isSelected = true;\n\n delete table.rows[newSelectedRow].cells[colIndex].cachedElement;\n delete table.rows[newSelectedRow].cachedElement;\n }\n\n delete cell.cachedElement;\n }\n }\n }\n }\n}\n","import { addBlock, addSegment, createBr, createParagraph } from 'roosterjs-content-model-dom';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport {\n ContentModelSegment,\n ContentModelSegmentFormat,\n ContentModelTable,\n ContentModelTableCell,\n} from 'roosterjs-content-model-types';\n\nconst MIN_HEIGHT = 22;\n\n/**\n * @internal\n */\nexport function normalizeTable(\n table: ContentModelTable,\n defaultSegmentFormat?: ContentModelSegmentFormat\n) {\n // Always collapse border and use border box for table in roosterjs to make layout simpler\n const format = table.format;\n\n if (!format.borderCollapse || !format.useBorderBox) {\n format.borderCollapse = true;\n format.useBorderBox = true;\n }\n\n // Make sure all first cells are not spanned\n // Make sure all inner cells are not header\n // Make sure all cells have content and width\n table.rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, colIndex) => {\n if (cell.blocks.length == 0) {\n addBlock(\n cell,\n createParagraph(\n undefined /*isImplicit*/,\n undefined /*blockFormat*/,\n defaultSegmentFormat\n )\n );\n addSegment(cell, createBr(defaultSegmentFormat));\n }\n\n if (rowIndex == 0) {\n cell.spanAbove = false;\n } else if (rowIndex > 0 && cell.isHeader) {\n cell.isHeader = false;\n delete cell.cachedElement;\n }\n\n if (colIndex == 0) {\n cell.spanLeft = false;\n }\n\n cell.format.useBorderBox = true;\n });\n\n // Make sure table has correct width and height array\n if (row.height < MIN_HEIGHT) {\n row.height = MIN_HEIGHT;\n }\n });\n\n const columns = Math.max(...table.rows.map(row => row.cells.length));\n\n for (let i = 0; i < columns; i++) {\n if (table.widths[i] === undefined) {\n table.widths[i] = getTableCellWidth(columns);\n }\n }\n\n // Move blocks from spanned cell to its main cell if any,\n // and remove rows/columns if all cells in it are spanned\n const colCount = table.rows[0]?.cells.length || 0;\n\n for (let colIndex = colCount - 1; colIndex > 0; colIndex--) {\n table.rows.forEach(row => {\n const cell = row.cells[colIndex];\n const leftCell = row.cells[colIndex - 1];\n if (cell && leftCell && cell.spanLeft) {\n tryMoveBlocks(leftCell, cell);\n }\n });\n\n if (table.rows.every(row => row.cells[colIndex]?.spanLeft)) {\n table.rows.forEach(row => row.cells.splice(colIndex, 1));\n table.widths.splice(\n colIndex - 1,\n 2,\n table.widths[colIndex - 1] + table.widths[colIndex]\n );\n }\n }\n\n for (let rowIndex = table.rows.length - 1; rowIndex > 0; rowIndex--) {\n const row = table.rows[rowIndex];\n\n row.cells.forEach((cell, colIndex) => {\n const aboveCell = table.rows[rowIndex - 1]?.cells[colIndex];\n if (aboveCell && cell.spanAbove) {\n tryMoveBlocks(aboveCell, cell);\n }\n });\n\n if (row.cells.every(cell => cell.spanAbove)) {\n table.rows[rowIndex - 1].height += row.height;\n table.rows.splice(rowIndex, 1);\n }\n }\n}\n\nfunction getTableCellWidth(columns: number): number {\n if (columns <= 4) {\n return 120;\n } else if (columns <= 6) {\n return 100;\n } else {\n return 70;\n }\n}\n\nfunction tryMoveBlocks(targetCell: ContentModelTableCell, sourceCell: ContentModelTableCell) {\n const onlyHasEmptyOrBr = sourceCell.blocks.every(\n block => block.blockType == 'Paragraph' && hasOnlyBrSegment(block.segments)\n );\n\n if (!onlyHasEmptyOrBr) {\n arrayPush(targetCell.blocks, sourceCell.blocks);\n sourceCell.blocks = [];\n }\n}\n\nfunction hasOnlyBrSegment(segments: ContentModelSegment[]): boolean {\n segments = segments.filter(s => s.segmentType != 'SelectionMarker');\n\n return segments.length == 0 || (segments.length == 1 && segments[0].segmentType == 'Br');\n}\n","import { ContentModelTableCell } from 'roosterjs-content-model-types';\nimport { parseColor } from 'roosterjs-editor-dom';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\n\n// Using the HSL (hue, saturation and lightness) representation for RGB color values.\n// If the value of the lightness is less than 20, the color is dark.\n// If the value of the lightness is more than 80, the color is bright\nconst DARK_COLORS_LIGHTNESS = 20;\nconst BRIGHT_COLORS_LIGHTNESS = 80;\nconst White = '#ffffff';\nconst Black = '#000000';\n\n/**\n * @internal\n */\nexport function setTableCellBackgroundColor(\n cell: ContentModelTableCell,\n color: string | null | undefined,\n isColorOverride?: boolean\n) {\n if (color) {\n cell.format.backgroundColor = color;\n\n if (isColorOverride) {\n updateTableCellMetadata(cell, metadata => {\n metadata = metadata || {};\n metadata.bgColorOverride = true;\n return metadata;\n });\n }\n\n const lightness = calculateLightness(color);\n\n if (lightness < DARK_COLORS_LIGHTNESS) {\n cell.format.textColor = White;\n } else if (lightness > BRIGHT_COLORS_LIGHTNESS) {\n cell.format.textColor = Black;\n } else {\n delete cell.format.textColor;\n }\n } else {\n delete cell.format.backgroundColor;\n delete cell.format.textColor;\n }\n\n delete cell.cachedElement;\n}\n\nfunction calculateLightness(color: string) {\n const colorValues = parseColor(color);\n\n // Use the values of r,g,b to calculate the lightness in the HSl representation\n //First calculate the fraction of the light in each color, since in css the value of r,g,b is in the interval of [0,255], we have\n if (colorValues) {\n const red = colorValues[0] / 255;\n const green = colorValues[1] / 255;\n const blue = colorValues[2] / 255;\n\n //Then the lightness in the HSL representation is the average between maximum fraction of r,g,b and the minimum fraction\n return (Math.max(red, green, blue) + Math.min(red, green, blue)) * 50;\n } else {\n return 255;\n }\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\n\nconst MIN_WIDTH = 30;\n\n/**\n * @internal\n */\nexport function splitTableCellHorizontally(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let colIndex = sel.lastCol; colIndex >= sel.firstCol; colIndex--) {\n if (\n table.rows.every(\n (row, rowIndex) =>\n rowIndex < sel.firstRow ||\n rowIndex > sel.lastRow ||\n row.cells[colIndex + 1]?.spanLeft\n )\n ) {\n table.rows.forEach((row, rowIndex) => {\n delete row.cells[colIndex].cachedElement;\n\n if (rowIndex >= sel.firstRow && rowIndex <= sel.lastRow) {\n row.cells[colIndex + 1].spanLeft = false;\n delete row.cells[colIndex + 1].cachedElement;\n }\n });\n } else {\n table.rows.forEach((row, rowIndex) => {\n const cell = row.cells[colIndex];\n if (cell) {\n const newCell = createTableCell(\n cell.spanLeft,\n cell.spanAbove,\n cell.isHeader,\n cell.format\n );\n\n newCell.dataset = { ...cell.dataset };\n\n if (rowIndex < sel.firstRow || rowIndex > sel.lastRow) {\n newCell.spanLeft = true;\n } else {\n newCell.isSelected = cell.isSelected;\n }\n row.cells.splice(colIndex + 1, 0, newCell);\n\n delete row.cells[colIndex].cachedElement;\n }\n });\n\n const newWidth = Math.max(table.widths[colIndex] / 2, MIN_WIDTH);\n\n table.widths.splice(colIndex, 1, newWidth, newWidth);\n }\n }\n }\n}\n","import { ContentModelTable, ContentModelTableRow } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\n\nconst MIN_HEIGHT = 22;\n\n/**\n * @internal\n */\nexport function splitTableCellVertically(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let rowIndex = sel.lastRow; rowIndex >= sel.firstRow; rowIndex--) {\n const row = table.rows[rowIndex];\n const belowRow = table.rows[rowIndex + 1];\n\n row.cells.forEach(cell => {\n delete cell.cachedElement;\n });\n\n delete row.cachedElement;\n\n if (\n belowRow?.cells.every(\n (belowCell, colIndex) =>\n colIndex < sel.firstCol || colIndex > sel.lastCol || belowCell.spanAbove\n )\n ) {\n belowRow.cells.forEach((belowCell, colIndex) => {\n if (colIndex >= sel.firstCol && colIndex <= sel.lastCol) {\n belowCell.spanAbove = false;\n delete belowCell.cachedElement;\n }\n });\n\n delete belowRow.cachedElement;\n } else {\n const newHeight = Math.max((row.height /= 2), MIN_HEIGHT);\n const newRow: ContentModelTableRow = {\n format: { ...row.format },\n height: newHeight,\n cells: row.cells.map((cell, colIndex) => {\n const newCell = createTableCell(\n cell.spanLeft,\n cell.spanAbove,\n cell.isHeader,\n cell.format\n );\n\n newCell.dataset = { ...cell.dataset };\n\n if (colIndex < sel.firstCol || colIndex > sel.lastCol) {\n newCell.spanAbove = true;\n } else {\n newCell.isSelected = cell.isSelected;\n }\n\n return newCell;\n }),\n };\n\n row.height = newHeight;\n table.rows.splice(rowIndex + 1, 0, newRow);\n }\n }\n }\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setModelAlignment } from '../../modelApi/block/setModelAlignment';\n\n/**\n * Set text alignment of selected paragraphs\n * @param editor The editor to set alignment\n * @param alignment Alignment value: left, center or right\n */\nexport default function setAlignment(\n editor: IContentModelEditor,\n alignment: 'left' | 'center' | 'right'\n) {\n formatWithContentModel(editor, 'setAlignment', model => setModelAlignment(model, alignment));\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setModelDirection } from '../../modelApi/block/setModelDirection';\n\n/**\n * Set text direction of selected paragraphs (Left to right or Right to left)\n * @param editor The editor to set alignment\n * @param direction Direction value: ltr (Left to right) or rtl (Right to left)\n */\nexport default function setDirection(editor: IContentModelEditor, direction: 'ltr' | 'rtl') {\n formatWithContentModel(editor, 'setDirection', model => setModelDirection(model, direction));\n}\n","import { defaultImplicitFormatMap } from 'roosterjs-content-model-dom';\nimport { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\ntype HeadingLevelTags = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Set heading level of selected paragraphs\n * @param editor The editor to set heading level to\n * @param headingLevel Level of heading, from 1 to 6. Set to 0 means set it back to a regular paragraph\n */\nexport default function setHeadingLevel(\n editor: IContentModelEditor,\n headingLevel: 0 | 1 | 2 | 3 | 4 | 5 | 6\n) {\n formatParagraphWithContentModel(editor, 'setHeadingLevel', para => {\n const tagName =\n headingLevel > 0\n ? (('h' + headingLevel) as HeadingLevelTags | null)\n : getExistingHeadingTag(para.decorator);\n const headingStyle =\n (tagName && (defaultImplicitFormatMap[tagName] as ContentModelSegmentFormat)) || {};\n\n if (headingLevel > 0) {\n para.decorator = {\n tagName: tagName!,\n format: { ...headingStyle },\n };\n\n // Remove existing formats since tags have default font size and weight\n para.segments.forEach(segment => {\n delete segment.format.fontSize;\n delete segment.format.fontWeight;\n });\n } else if (tagName) {\n delete para.decorator;\n }\n });\n}\n\nfunction getExistingHeadingTag(\n decorator?: ContentModelParagraphDecorator\n): HeadingLevelTags | null {\n const tag = decorator?.tagName || '';\n const level = parseInt(tag.substring(1));\n\n return level >= 1 && level <= 6 ? (tag as HeadingLevelTags) : null;\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { setModelIndentation } from '../../modelApi/block/setModelIndentation';\n\n/**\n * Indent or outdent to selected paragraphs\n * @param editor The editor to operate on\n * @param indentation Whether indent or outdent\n * @param length The length of pixel to indent/outdent @default 40\n */\nexport default function setIndentation(\n editor: IContentModelEditor,\n indentation: 'indent' | 'outdent',\n length?: number\n) {\n formatWithContentModel(\n editor,\n 'setIndentation',\n model => {\n const result = setModelIndentation(model, indentation, length);\n\n if (result) {\n normalizeContentModel(model);\n }\n\n return result;\n },\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { createParagraphDecorator } from 'roosterjs-content-model-dom';\nimport { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggles the current block(s) margin properties.\n * null deletes any existing value, undefined is ignored\n * @param editor The editor to operate on\n * @param marginTop value for top margin\n * @param marginBottom value for bottom margin\n */\nexport default function setParagraphMargin(\n editor: IContentModelEditor,\n marginTop?: string | null,\n marginBottom?: string | null\n) {\n formatParagraphWithContentModel(editor, 'setParagraphMargin', para => {\n if (!para.decorator) {\n para.decorator = createParagraphDecorator('p');\n }\n\n if (marginTop) {\n para.format.marginTop = marginTop;\n } else if (marginTop === null) {\n delete para.format.marginTop;\n }\n\n if (marginBottom) {\n para.format.marginBottom = marginBottom;\n } else if (marginBottom === null) {\n delete para.format.marginBottom;\n }\n });\n}\n","import { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Sets current selected block(s) line-height property and wipes such property from child segments\n * @param editor The editor to operate on\n * @param spacing Unitless/px value to set line height\n */\nexport default function setSpacing(editor: IContentModelEditor, spacing: number | string) {\n formatParagraphWithContentModel(editor, 'setSpacing', paragraph => {\n paragraph.format.lineHeight = spacing.toString();\n paragraph.segments.forEach(segment => {\n if (segment.format.lineHeight) {\n delete segment.format.lineHeight;\n }\n });\n });\n}\n","import { ContentModelFormatContainerFormat } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { toggleModelBlockQuote } from '../../modelApi/block/toggleModelBlockQuote';\n\nconst DefaultQuoteFormat: ContentModelFormatContainerFormat = {\n borderLeft: '3px solid rgb(200, 200, 200)', // TODO: Support RTL\n textColor: 'rgb(102, 102, 102)',\n};\nconst BuildInQuoteFormat: ContentModelFormatContainerFormat = {\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n paddingLeft: '10px',\n};\n\n/**\n * Toggle BLOCKQUOTE state of selected paragraphs.\n * If any selected paragraph is not under a BLOCKQUOTE, wrap them into a BLOCKQUOTE.\n * Otherwise, unwrap all related BLOCKQUOTEs.\n * @param editor The editor object to toggle BLOCKQUOTE onto\n * @param quoteFormat @optional Block format for the new quote object\n */\nexport default function toggleBlockQuote(\n editor: IContentModelEditor,\n quoteFormat: ContentModelFormatContainerFormat = DefaultQuoteFormat\n) {\n const fullQuoteFormat = {\n ...BuildInQuoteFormat,\n ...quoteFormat,\n };\n\n formatWithContentModel(\n editor,\n 'toggleBlockQuote',\n model => toggleModelBlockQuote(model, fullQuoteFormat),\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { Browser } from 'roosterjs-editor-dom';\nimport { ChangeSource, Keys } from 'roosterjs-editor-types';\nimport { deleteAllSegmentBefore } from '../../modelApi/edit/deleteSteps/deleteAllSegmentBefore';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { DeleteSelectionStep } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n handleKeyboardEventResult,\n shouldDeleteAllSegmentsBefore,\n shouldDeleteWord,\n} from '../../editor/utils/handleKeyboardEventCommon';\nimport {\n backwardDeleteWordSelection,\n forwardDeleteWordSelection,\n} from '../../modelApi/edit/deleteSteps/deleteWordSelection';\nimport {\n backwardDeleteCollapsedSelection,\n forwardDeleteCollapsedSelection,\n} from '../../modelApi/edit/deleteSteps/deleteCollapsedSelection';\n\n/**\n * @internal\n * Handle KeyDown event\n * Currently only DELETE and BACKSPACE keys are supported\n */\nexport default function handleKeyDownEvent(editor: IContentModelEditor, rawEvent: KeyboardEvent) {\n const which = rawEvent.which;\n\n formatWithContentModel(\n editor,\n which == Keys.DELETE ? 'handleDeleteKey' : 'handleBackspaceKey',\n (model, context) => {\n const result = deleteSelection(model, getDeleteSteps(rawEvent), context).deleteResult;\n\n return handleKeyboardEventResult(editor, model, rawEvent, result, context);\n },\n {\n rawEvent,\n changeSource: ChangeSource.Keyboard,\n getChangeData: () => which,\n }\n );\n}\n\nfunction getDeleteSteps(rawEvent: KeyboardEvent): (DeleteSelectionStep | null)[] {\n const isForward = rawEvent.which == Keys.DELETE;\n const deleteAllSegmentBeforeStep =\n shouldDeleteAllSegmentsBefore(rawEvent) && !isForward ? deleteAllSegmentBefore : null;\n const deleteWordSelection = shouldDeleteWord(rawEvent, !!Browser.isMac)\n ? isForward\n ? forwardDeleteWordSelection\n : backwardDeleteWordSelection\n : null;\n const deleteCollapsedSelection = isForward\n ? forwardDeleteCollapsedSelection\n : backwardDeleteCollapsedSelection;\n return [deleteAllSegmentBeforeStep, deleteWordSelection, deleteCollapsedSelection];\n}\n","import { ChangeSource, Entity, SelectionRangeEx } from 'roosterjs-editor-types';\nimport { commitEntity, getEntityFromElement } from 'roosterjs-editor-dom';\nimport { createEntity } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { insertEntityModel } from '../../modelApi/entity/insertEntityModel';\nimport {\n InsertEntityOptions,\n InsertEntityPosition,\n} from '../../publicTypes/parameter/InsertEntityOptions';\n\nconst BlockEntityTag = 'div';\nconst InlineEntityTag = 'span';\n\n/**\n * Insert an entity into editor\n * @param editor The Content Model editor\n * @param type Type of entity\n * @param isBlock True to insert a block entity, false to insert an inline entity\n * @param position Position of the entity to insert. It can be\n * Value of InsertEntityPosition: see InsertEntityPosition\n * selectionRangeEx: Use this range instead of current focus position to insert. After insert, focus will be moved to\n * the beginning of this range (when focusAfterEntity is not set to true) or after the new entity (when focusAfterEntity is set to true)\n * @param options Move options to insert. See InsertEntityOptions\n */\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: boolean,\n position: 'focus' | 'begin' | 'end' | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null;\n\n/**\n * Insert a block entity into editor\n * @param editor The Content Model editor\n * @param type Type of entity\n * @param isBlock Must be true for a block entity\n * @param position Position of the entity to insert. It can be\n * Value of InsertEntityPosition: see InsertEntityPosition\n * selectionRangeEx: Use this range instead of current focus position to insert. After insert, focus will be moved to\n * the beginning of this range (when focusAfterEntity is not set to true) or after the new entity (when focusAfterEntity is set to true)\n * @param options Move options to insert. See InsertEntityOptions\n */\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: true,\n position: InsertEntityPosition | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null;\n\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: boolean,\n position?: InsertEntityPosition | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null {\n const { contentNode, focusAfterEntity, wrapperDisplay, skipUndoSnapshot } = options || {};\n const wrapper = editor.getDocument().createElement(isBlock ? BlockEntityTag : InlineEntityTag);\n const display = wrapperDisplay ?? (isBlock ? undefined : 'inline-block');\n\n wrapper.style.setProperty('display', display || null);\n\n if (contentNode) {\n wrapper.appendChild(contentNode);\n }\n\n commitEntity(wrapper, type, true /*isReadonly*/);\n\n const entityModel = createEntity(wrapper, true /*isReadonly*/, type);\n\n formatWithContentModel(\n editor,\n 'insertEntity',\n (model, context) => {\n insertEntityModel(\n model,\n entityModel,\n typeof position == 'string' ? position : 'focus',\n isBlock,\n focusAfterEntity,\n context\n );\n\n context.skipUndoSnapshot = skipUndoSnapshot;\n\n return true;\n },\n {\n selectionOverride: typeof position === 'object' ? position : undefined,\n }\n );\n\n if (editor.isDarkMode()) {\n editor.transformToDarkColor(wrapper);\n }\n\n const newEntity = getEntityFromElement(wrapper);\n\n editor.triggerContentChangedEvent(ChangeSource.InsertEntity, newEntity);\n\n return newEntity;\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport {\n createText,\n normalizeContentModel,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\nconst ANSI_SPACE = '\\u0020';\nconst NON_BREAK_SPACE = '\\u00A0';\n\n/**\n * Apply pending format to the text user just input\n * @param editor The editor to get format from\n * @param data The text user just input\n */\nexport default function applyPendingFormat(editor: IContentModelEditor, data: string) {\n const format = getPendingFormat(editor);\n\n if (format) {\n let isChanged = false;\n\n formatWithContentModel(editor, 'applyPendingFormat', (model, context) => {\n iterateSelections([model], (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const marker = segments[0];\n const index = block.segments.indexOf(marker);\n const previousSegment = block.segments[index - 1];\n\n if (previousSegment?.segmentType == 'Text') {\n const text = previousSegment.text;\n const subStr = text.substr(-data.length, data.length);\n\n // For space, there can be (space) or   ( ), we treat them as the same\n if (subStr == data || (data == ANSI_SPACE && subStr == NON_BREAK_SPACE)) {\n marker.format = { ...format };\n previousSegment.text = text.substring(0, text.length - data.length);\n\n const newText = createText(\n data == ANSI_SPACE ? NON_BREAK_SPACE : data,\n {\n ...previousSegment.format,\n ...format,\n }\n );\n\n block.segments.splice(index, 0, newText);\n setParagraphNotImplicit(block);\n isChanged = true;\n }\n }\n }\n return true;\n });\n\n if (isChanged) {\n normalizeContentModel(model);\n context.skipUndoSnapshot = true;\n }\n\n return isChanged;\n });\n }\n}\n","import { clearModelFormat } from '../../modelApi/common/clearModelFormat';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\n/**\n * Clear format of selection\n * @param editor The editor to clear format from\n */\nexport default function clearFormat(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'clearFormat', model => {\n const blocksToClear: [ContentModelBlockGroup[], ContentModelBlock][] = [];\n const segmentsToClear: ContentModelSegment[] = [];\n const tablesToClear: [ContentModelTable, boolean][] = [];\n\n clearModelFormat(model, blocksToClear, segmentsToClear, tablesToClear);\n\n normalizeContentModel(model);\n\n return blocksToClear.length > 0 || segmentsToClear.length > 0 || tablesToClear.length > 0;\n });\n}\n","import { contains, getTagOfNode } from 'roosterjs-editor-dom';\nimport { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';\nimport { ContentModelFormatState } from '../../publicTypes/format/formatState/ContentModelFormatState';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { getSelectionRootNode } from '../../modelApi/selection/getSelectionRootNode';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { retrieveModelFormatState } from '../../modelApi/common/retrieveModelFormatState';\nimport {\n getRegularSelectionOffsets,\n handleRegularSelection,\n processChildNode,\n} from 'roosterjs-content-model-dom';\n\n/**\n * Get current format state\n * @param editor The editor to get format from\n */\nexport default function getFormatState(editor: IContentModelEditor): ContentModelFormatState {\n const pendingFormat = getPendingFormat(editor);\n const model = editor.createContentModel({\n processorOverride: {\n child: reducedModelChildProcessor,\n },\n });\n const result: ContentModelFormatState = {\n ...editor.getUndoState(),\n isDarkMode: editor.isDarkMode(),\n zoomScale: editor.getZoomScale(),\n };\n\n retrieveModelFormatState(model, pendingFormat, result);\n\n return result;\n}\n\n/**\n * @internal\n */\ninterface FormatStateContext extends DomToModelContext {\n /**\n * An optional stack of parent elements to process. When provided, the child nodes of current parent element will be ignored,\n * but use the top element in this stack instead in childProcessor.\n */\n nodeStack?: Node[];\n}\n\n/**\n * @internal\n * Export for test only\n * In order to get format, we can still use the regular child processor. However, to improve performance, we don't need to create\n * content model for the whole doc, instead we only need to traverse the tree path that can arrive current selected node.\n * This \"reduced\" child processor will first create a node stack that stores DOM node from root to current common ancestor node of selection,\n * then use this stack as a faked DOM tree to create a reduced content model which we can use to retrieve format state\n */\nexport function reducedModelChildProcessor(\n group: ContentModelBlockGroup,\n parent: ParentNode,\n context: FormatStateContext\n) {\n const selectionRootNode = getSelectionRootNode(context.rangeEx);\n\n if (selectionRootNode) {\n if (!context.nodeStack) {\n context.nodeStack = createNodeStack(parent, selectionRootNode);\n }\n\n const stackChild = context.nodeStack.pop();\n\n if (stackChild) {\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, parent);\n\n // If selection is not on this node, skip getting node index to save some time since we don't need it here\n const index =\n nodeStartOffset >= 0 || nodeEndOffset >= 0 ? getChildIndex(parent, stackChild) : -1;\n\n if (index >= 0) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n }\n\n processChildNode(group, stackChild, context);\n\n if (index >= 0) {\n handleRegularSelection(index + 1, context, group, nodeStartOffset, nodeEndOffset);\n }\n } else {\n // No child node from node stack, that means we have reached the deepest node of selection.\n // Now we can use default child processor to perform full sub tree scanning for content model,\n // So that all selected node will be included.\n context.defaultElementProcessors.child(group, parent, context);\n }\n }\n}\n\nfunction createNodeStack(root: Node, startNode: Node): Node[] {\n const result: Node[] = [];\n let node: Node | null = startNode;\n\n while (node && contains(root, node)) {\n if (getTagOfNode(node) == 'TABLE') {\n // For table, we can't do a reduced model creation since we need to handle their cells and indexes,\n // so clean up whatever we already have, and just put table into the stack\n result.splice(0, result.length, node);\n } else {\n result.push(node);\n }\n\n node = node.parentNode;\n }\n\n return result;\n}\n\nfunction getChildIndex(parent: ParentNode, stackChild: Node) {\n let index = 0;\n let child = parent.firstChild;\n\n while (child && child != stackChild) {\n index++;\n child = child.nextSibling;\n }\n return index;\n}\n","import { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Adjust selection to make sure select an image if any\n * @return Content Model Image object if an image is select, or null\n */\nexport default function adjustImageSelection(\n editor: IContentModelEditor\n): ContentModelImage | null {\n let image: ContentModelImage | null = null;\n\n formatWithContentModel(editor, 'adjustImageSelection', model =>\n adjustSegmentSelection(\n model,\n target => {\n if (target.isSelected && target.segmentType == 'Image') {\n image = target;\n return true;\n } else {\n return false;\n }\n },\n (target, ref) => target == ref\n )\n );\n\n return image;\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { getMetadata, readFile } from 'roosterjs-editor-dom';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * Change the selected image src\n * @param editor The editor instance\n * @param file The image file\n */\nexport default function changeImage(editor: IContentModelEditor, file: File) {\n const selection = editor.getSelectionRangeEx();\n readFile(file, dataUrl => {\n if (\n dataUrl &&\n !editor.isDisposed() &&\n selection.type === SelectionRangeTypes.ImageSelection\n ) {\n formatImageWithContentModel(\n editor,\n 'changeImage',\n (image: ContentModelImage) => {\n image.src = dataUrl;\n image.dataset = {};\n image.format.width = '';\n image.format.height = '';\n image.alt = '';\n },\n {\n image: selection.image,\n previousSrc: selection.image.src,\n newSrc: dataUrl,\n originalSrc: getImageSrc(selection.image),\n }\n );\n }\n });\n}\n\nconst getImageSrc = (image: HTMLImageElement) => {\n const obj = getMetadata<{ src: string }>(image);\n return (obj && obj.src) || '';\n};\n","import { addSegment, createContentModelDocument, createImage } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { readFile } from 'roosterjs-editor-dom';\n\n/**\n * Insert an image into current selected position\n * @param editor The editor to operate on\n * @param file Image Blob file or source string\n */\nexport default function insertImage(editor: IContentModelEditor, imageFileOrSrc: File | string) {\n if (typeof imageFileOrSrc == 'string') {\n insertImageWithSrc(editor, imageFileOrSrc);\n } else {\n readFile(imageFileOrSrc, dataUrl => {\n if (dataUrl && !editor.isDisposed()) {\n insertImageWithSrc(editor, dataUrl);\n }\n });\n }\n}\n\nfunction insertImageWithSrc(editor: IContentModelEditor, src: string) {\n formatWithContentModel(editor, 'insertImage', (model, context) => {\n const image = createImage(src, { backgroundColor: '' });\n const doc = createContentModelDocument();\n\n addSegment(doc, image);\n mergeModel(model, doc, context, {\n mergeFormat: 'mergeAll',\n });\n\n return true;\n });\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image alt text for all selected images at selection. If no images is contained\n * in selection, do nothing.\n * @param editor The editor instance\n * @param altText The image alt text\n */\nexport default function setImageAltText(editor: IContentModelEditor, altText: string) {\n formatImageWithContentModel(editor, 'setImageAltText', (image: ContentModelImage) => {\n image.alt = altText;\n });\n}\n","import applyImageBorderFormat from '../../modelApi/image/applyImageBorderFormat';\nimport formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { Border } from '../../publicTypes/interface/Border';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image border style for all selected images at selection.\n * @param editor The editor instance\n * @param border the border format object. Ex: { color: 'red', width: '10px', style: 'solid'}, if one of the value in object is undefined\n * its value will not be changed. Passing null instead of an object will remove the border\n * @param borderRadius the border radius value, if undefined, the border radius will keep the actual value\n */\nexport default function setImageBorder(\n editor: IContentModelEditor,\n border: Border | null,\n borderRadius?: string\n) {\n formatImageWithContentModel(editor, 'setImageBorder', (image: ContentModelImage) => {\n applyImageBorderFormat(image, border, borderRadius);\n });\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image box shadow for all selected images at selection.\n * @param editor The editor instance\n * @param boxShadow The image box boxShadow\n * @param margin The image margin for all sides (eg. \"4px\"), null to remove margin\n */\nexport default function setImageBoxShadow(\n editor: IContentModelEditor,\n boxShadow: string,\n margin?: string | null\n) {\n formatImageWithContentModel(editor, 'setImageBoxShadow', (image: ContentModelImage) => {\n image.format.boxShadow = boxShadow;\n if (margin) {\n image.format.marginBottom = margin;\n image.format.marginLeft = margin;\n image.format.marginRight = margin;\n image.format.marginTop = margin;\n } else if (margin === null) {\n delete image.format.marginBottom;\n delete image.format.marginLeft;\n delete image.format.marginRight;\n delete image.format.marginTop;\n }\n });\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { adjustWordSelection } from '../../modelApi/selection/adjustWordSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setSelection } from '../../modelApi/selection/setSelection';\n\n/**\n * Adjust selection to make sure select a hyperlink if any, or a word if original selection is collapsed\n * @return A combination of existing link display text and url if any. If there is no existing link, return selected text and null\n */\nexport default function adjustLinkSelection(editor: IContentModelEditor): [string, string | null] {\n let text = '';\n let url: string | null = null;\n\n formatWithContentModel(editor, 'adjustLinkSelection', model => {\n let changed = adjustSegmentSelection(\n model,\n target => !!target.isSelected && !!target.link,\n (target, ref) => !!target.link && target.link.format.href == ref.link!.format.href\n );\n let segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n const firstSegment = segments[0];\n\n if (segments.length == 1 && firstSegment.segmentType == 'SelectionMarker') {\n segments = adjustWordSelection(model, firstSegment);\n\n if (segments.length > 1) {\n changed = true;\n setSelection(model, segments[0], segments[segments.length - 1]);\n }\n }\n\n text = segments.map(x => (x.segmentType == 'Text' ? x.text : '')).join('');\n url = segments[0]?.link?.format.href || null;\n\n return changed;\n });\n\n return [text, url];\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { ChangeSource } from 'roosterjs-editor-types';\nimport { ContentModelLink } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { HtmlSanitizer, matchLink } from 'roosterjs-editor-dom';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport {\n addLink,\n addSegment,\n createContentModelDocument,\n createText,\n} from 'roosterjs-content-model-dom';\n\n// Regex matching Uri scheme\nconst URI_REGEX = /^[a-zA-Z]+:/i;\n// Regex matching begin of email address\nconst MAILTO_REGEX = /^[\\w.%+-]+@/i;\n// Regex matching begin of ftp, i.e. ftp.microsoft.com\nconst FTP_REGEX = /^ftp\\./i;\n\n/**\n * Insert a hyperlink at cursor.\n * When there is a selection, hyperlink will be applied to the selection,\n * otherwise a hyperlink will be inserted to the cursor position.\n * @param editor Editor object\n * @param link Link address, can be http(s), mailto, notes, file, unc, ftp, news, telnet, gopher, wais.\n * When protocol is not specified, a best matched protocol will be predicted.\n * @param anchorTitle Optional alt text of the link, will be shown when hover on the link\n * @param displayText Optional display text for the link.\n * @param target Optional display target for the link (\"_blank\"|\"_self\"|\"_parent\"|\"_top\"|\"{framename}\")\n * If specified, the display text of link will be replaced with this text.\n * If not specified and there wasn't a link, the link url will be used as display text.\n */\nexport default function insertLink(\n editor: IContentModelEditor,\n link: string,\n anchorTitle?: string,\n displayText?: string,\n target?: string\n) {\n let url = (checkXss(link) || '').trim();\n if (url) {\n const linkData = matchLink(url);\n const link: ContentModelLink = {\n dataset: {},\n format: {\n href: linkData ? linkData.normalizedUrl : applyLinkPrefix(url),\n anchorTitle,\n target,\n underline: true,\n },\n };\n\n const links: ContentModelLink[] = [];\n let anchorNode: Node | undefined;\n\n formatWithContentModel(\n editor,\n 'insertLink',\n (model, context) => {\n const segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n const originalText = segments\n .map(x => (x.segmentType == 'Text' ? x.text : ''))\n .join('');\n const text = displayText || originalText || '';\n\n if (\n segments.some(x => x.segmentType != 'SelectionMarker') &&\n originalText == text\n ) {\n segments.forEach(x => {\n addLink(x, link);\n\n if (x.link) {\n links.push(x.link);\n }\n });\n } else if (\n segments.every(x => x.segmentType == 'SelectionMarker') ||\n (!!text && text != originalText)\n ) {\n const segment = createText(text || (linkData ? linkData.originalUrl : url), {\n ...(segments[0]?.format || {}),\n ...(getPendingFormat(editor) || {}),\n });\n const doc = createContentModelDocument();\n\n addLink(segment, link);\n addSegment(doc, segment);\n\n if (segment.link) {\n links.push(segment.link);\n }\n\n mergeModel(model, doc, context, {\n mergeFormat: 'mergeAll',\n });\n }\n\n return segments.length > 0;\n },\n {\n changeSource: ChangeSource.CreateLink,\n onNodeCreated: (modelElement, node) => {\n if (!anchorNode && links.indexOf(modelElement as ContentModelLink) >= 0) {\n anchorNode = node;\n }\n },\n getChangeData: () => anchorNode,\n }\n );\n }\n}\n\n// TODO: This is copied from original code. We may need to integrate this logic into matchLink() later.\nfunction applyLinkPrefix(url: string): string {\n if (!url) {\n return url;\n }\n\n // Add link prefix per rule:\n // (a) if the url always starts with a URI scheme, leave it as it is\n // (b) if the url is an email address, xxx@... add mailto: prefix\n // (c) if the url starts with ftp., add ftp:// prefix\n // (d) rest, add http:// prefix\n let prefix = '';\n if (url.search(URI_REGEX) < 0) {\n if (url.search(MAILTO_REGEX) == 0) {\n prefix = 'mailto:';\n } else if (url.search(FTP_REGEX) == 0) {\n prefix = 'ftp://';\n } else {\n // fallback to http://\n prefix = 'http://';\n }\n }\n\n return prefix + url;\n}\n\n// TODO: This is copied from original code. However, ContentModel should be able to filter out malicious\n// attributes later, so no need to use HtmlSanitizer here\nfunction checkXss(link: string): string {\n const sanitizer = new HtmlSanitizer();\n const a = document.createElement('a');\n\n a.href = link || '';\n\n sanitizer.sanitize(a);\n // We use getAttribute because some browsers will try to make the href property a valid link.\n // This has unintended side effects when the link lacks a protocol.\n return a.getAttribute('href') || '';\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Remove link at selection. If no links at selection, do nothing.\n * If selection contains multiple links, all of the link styles will be removed.\n * If only part of a link is selected, the whole link style will be removed.\n * @param editor The editor instance\n */\nexport default function removeLink(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'removeLink', model => {\n adjustSegmentSelection(\n model,\n target => !!target.isSelected && !!target.link,\n (target, ref) =>\n target.isSelected || // Expand the selection to any link that is involved. So we can remove multiple links together\n (!!target.link && target.link.format.href == ref.link!.format.href)\n );\n\n const segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n let isChanged = false;\n\n segments.forEach(segment => {\n if (segment.link) {\n isChanged = true;\n\n delete segment.link;\n }\n });\n\n return isChanged;\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedListItem } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set start number of a list item\n * @param editor The editor to operate on\n * @param value The number to set to, must be equal or greater than 1\n */\nexport default function setListStartNumber(editor: IContentModelEditor, value: number) {\n formatWithContentModel(editor, 'setListStartNumber', model => {\n const listItem = getFirstSelectedListItem(model);\n const level = listItem?.levels[listItem?.levels.length - 1];\n\n if (level) {\n level.format.startNumberOverride = value;\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { findListItemsInSameThread } from '../../modelApi/list/findListItemsInSameThread';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedListItem } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { updateListMetadata } from 'roosterjs-content-model-dom';\n\n/**\n * Set style of list items with in same thread of current item\n * @param editor The editor to operate on\n * @param style The target list item style to set\n */\nexport default function setListStyle(editor: IContentModelEditor, style: ListMetadataFormat) {\n formatWithContentModel(editor, 'setListStyle', model => {\n const listItem = getFirstSelectedListItem(model);\n\n if (listItem) {\n const listItems = findListItemsInSameThread(model, listItem);\n const levelIndex = listItem.levels.length - 1;\n\n listItems.forEach(listItem => {\n const level = listItem.levels[levelIndex];\n\n if (level) {\n updateListMetadata(level, metadata => Object.assign({}, metadata, style));\n }\n });\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setListType } from '../../modelApi/list/setListType';\n\n/**\n * Toggle bullet list type\n * - When there are some blocks not in bullet list, set all blocks to the given type\n * - When all blocks are already in bullet list, turn off / outdent there list type\n * @param editor The editor to operate on\n */\nexport default function toggleBullet(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'toggleBullet', model => setListType(model, 'UL'), {\n preservePendingFormat: true,\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setListType } from '../../modelApi/list/setListType';\n\n/**\n * Toggle numbering list type\n * - When there are some blocks not in numbering list, set all blocks to the given type\n * - When all blocks are already in numbering list, turn off / outdent there list type\n * @param editor The editor to operate on\n */\nexport default function toggleNumbering(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'toggleNumbering', model => setListType(model, 'OL'), {\n preservePendingFormat: true,\n });\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Bulk apply segment format to all selected content. This is usually used for format painter.\n * @param editor The editor to operate on\n * @param newFormat The segment format to apply\n */\nexport default function applySegmentFormat(\n editor: IContentModelEditor,\n newFormat: ContentModelSegmentFormat\n) {\n formatSegmentWithContentModel(\n editor,\n 'applySegmentFormat',\n format => {\n format.backgroundColor = newFormat.backgroundColor;\n format.fontFamily = newFormat.fontFamily;\n format.fontSize = newFormat.fontSize;\n format.fontWeight = newFormat.fontWeight;\n format.italic = newFormat.italic;\n format.strikethrough = newFormat.strikethrough;\n format.superOrSubScriptSequence = newFormat.superOrSubScriptSequence;\n format.textColor = newFormat.textColor;\n format.underline = newFormat.underline;\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Change the capitalization of text in the selection\n * @param editor The editor instance\n * @param capitalization The case option\n * @param language Optional parameter for language string that should comply to \"IETF BCP 47 Tags for\n * Identifying Languages\". For example: 'en' or 'en-US' for English, 'tr' for Turkish.\n * Default is the host environment’s current locale.\n */\nexport default function changeCapitalization(\n editor: IContentModelEditor,\n capitalization: 'sentence' | 'lowerCase' | 'upperCase' | 'capitalize',\n language?: string\n) {\n formatSegmentWithContentModel(editor, 'changeCapitalization', (_, __, segment) => {\n if (segment?.segmentType == 'Text') {\n switch (capitalization) {\n case 'lowerCase':\n segment.text = segment.text.toLocaleLowerCase(language);\n break;\n\n case 'upperCase':\n segment.text = segment.text.toLocaleUpperCase(language);\n break;\n\n case 'capitalize':\n const wordArray = segment.text.toLocaleLowerCase(language).split(' ');\n\n for (let i = 0; i < wordArray.length; i++) {\n wordArray[i] =\n wordArray[i].charAt(0).toLocaleUpperCase(language) +\n wordArray[i].slice(1);\n }\n\n segment.text = wordArray.join(' ');\n break;\n\n case 'sentence':\n // TODO: Add rules on punctuation for internationalization - TASK 104769\n const punctuationMarks = '[\\\\.\\\\!\\\\?]';\n // Find a match of a word character either:\n // - At the beginning of a string with or without preceding whitespace, for\n // example: ' hello world' and 'hello world' strings would both match 'h'.\n // - Or preceded by a punctuation mark and at least one whitespace, for\n // example 'yes. hello world' would match 'y' and 'h'.\n const regex = new RegExp('^\\\\s*\\\\w|' + punctuationMarks + '\\\\s+\\\\w', 'g');\n\n segment.text = segment.text\n .toLocaleLowerCase(language)\n .replace(regex, match => match.toLocaleUpperCase(language));\n break;\n }\n }\n });\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { parseValueWithUnit } from 'roosterjs-content-model-dom';\n\n/**\n * Default font size sequence, in pt. Suggest editor UI use this sequence as your font size list,\n * So that when increase/decrease font size, the font size can match the sequence of your font size picker\n */\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\nconst MIN_FONT_SIZE = 1;\nconst MAX_FONT_SIZE = 1000;\n\n/**\n * Increase or decrease font size in selection\n * @param editor The editor instance\n * @param change Whether increase or decrease font size\n * @param fontSizes A sorted font size array, in pt. Default value is FONT_SIZES\n */\nexport default function changeFontSize(\n editor: IContentModelEditor,\n change: 'increase' | 'decrease'\n) {\n formatSegmentWithContentModel(\n editor,\n 'changeFontSize',\n format => changeFontSizeInternal(format, change),\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n\nfunction changeFontSizeInternal(\n format: ContentModelSegmentFormat,\n change: 'increase' | 'decrease'\n) {\n if (format.fontSize) {\n let sizeInPt = parseValueWithUnit(format.fontSize, undefined /*element*/, 'pt');\n\n if (sizeInPt > 0) {\n const newSize = getNewFontSize(sizeInPt, change == 'increase' ? 1 : -1, FONT_SIZES);\n\n format.fontSize = newSize + 'pt';\n }\n }\n}\n\nfunction getNewFontSize(pt: number, changeBase: 1 | -1, fontSizes: number[]): number {\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\n let last = fontSizes[fontSizes.length - 1];\n if (pt <= fontSizes[0]) {\n pt = Math.max(pt + changeBase, MIN_FONT_SIZE);\n } else if (pt > last || (pt == last && changeBase == 1)) {\n pt = pt / 10;\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\n pt = Math.min(Math.max((pt + changeBase) * 10, last), MAX_FONT_SIZE);\n } else if (changeBase == 1) {\n for (let i = 0; i < fontSizes.length; i++) {\n if (pt < fontSizes[i]) {\n pt = fontSizes[i];\n break;\n }\n }\n } else {\n for (let i = fontSizes.length - 1; i >= 0; i--) {\n if (pt > fontSizes[i]) {\n pt = fontSizes[i];\n break;\n }\n }\n }\n return pt;\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setSelection } from '../../modelApi/selection/setSelection';\n\n/**\n * Set background color\n * @param editor The editor to operate on\n * @param backgroundColor The color to set. Pass null to remove existing color.\n */\nexport default function setBackgroundColor(\n editor: IContentModelEditor,\n backgroundColor: string | null\n) {\n let lastParagraph: ContentModelParagraph | null = null;\n let lastSegmentIndex: number = -1;\n\n formatSegmentWithContentModel(\n editor,\n 'setBackgroundColor',\n (format, _, segment, paragraph) => {\n if (backgroundColor === null) {\n delete format.backgroundColor;\n } else {\n format.backgroundColor = backgroundColor;\n }\n\n if (segment && paragraph && segment.segmentType != 'SelectionMarker') {\n lastParagraph = paragraph;\n lastSegmentIndex = lastParagraph.segments.indexOf(segment);\n }\n },\n undefined /*segmentHasStyleCallback*/,\n undefined /*includingFormatHolder*/,\n model => {\n if (lastParagraph && lastSegmentIndex >= 0) {\n const marker = createSelectionMarker(\n lastParagraph.segments[lastSegmentIndex]?.format\n );\n\n lastParagraph.segments.splice(lastSegmentIndex + 1, 0, marker);\n setSelection(model, marker, marker);\n }\n }\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set font name\n * @param editor The editor to operate on\n * @param fontName The font name to set\n */\nexport default function setFontName(editor: IContentModelEditor, fontName: string) {\n formatSegmentWithContentModel(\n editor,\n 'setFontName',\n (format, _, segment) => {\n format.fontFamily = fontName;\n\n if (segment?.code) {\n segment.code.format.fontFamily = fontName;\n }\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set font size\n * @param editor The editor to operate on\n * @param fontSize The font size to set\n */\nexport default function setFontSize(editor: IContentModelEditor, fontSize: string) {\n formatSegmentWithContentModel(\n editor,\n 'setFontSize',\n format => {\n format.fontSize = fontSize;\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set text color\n * @param editor The editor to operate on\n * @param textColor The text color to set. Pass null to remove existing color.\n */\nexport default function setTextColor(editor: IContentModelEditor, textColor: string | null) {\n formatSegmentWithContentModel(\n editor,\n 'setTextColor',\n textColor === null\n ? (format, _, segment) => {\n delete format.textColor;\n\n if (segment?.link) {\n delete segment.link.format.textColor;\n }\n }\n : (format, _, segment) => {\n format.textColor = textColor;\n\n if (segment?.link) {\n segment.link.format.textColor = textColor;\n }\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle bold style\n * @param editor The editor to operate on\n */\nexport default function toggleBold(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleBold',\n (format, isTurningOn) => {\n format.fontWeight = isTurningOn ? 'bold' : 'normal';\n },\n (format, _, paragraph) =>\n isBold(\n typeof format.fontWeight == 'undefined'\n ? paragraph?.decorator?.format.fontWeight\n : format.fontWeight\n )\n );\n}\n\n/**\n * @internal\n */\nexport function isBold(boldStyle?: string): boolean {\n return (\n !!boldStyle && (boldStyle == 'bold' || boldStyle == 'bolder' || parseInt(boldStyle) >= 600)\n );\n}\n","import { addCode } from 'roosterjs-content-model-dom';\nimport { ContentModelCode } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\nconst DefaultCode: ContentModelCode = {\n format: {\n fontFamily: 'monospace',\n },\n};\n\n/**\n * Toggle italic style\n * @param editor The editor to operate on\n */\nexport default function toggleCode(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleCode',\n (_, isTurningOn, segment) => {\n if (segment) {\n if (isTurningOn) {\n addCode(segment, DefaultCode);\n } else {\n delete segment.code;\n }\n }\n },\n (_, segment) => !!segment?.code\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle italic style\n * @param editor The editor to operate on\n */\nexport default function toggleItalic(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleItalic',\n (format, isTurningOn) => {\n format.italic = !!isTurningOn;\n },\n format => !!format.italic\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle strikethrough style\n * @param editor The editor to operate on\n */\nexport default function toggleStrikethrough(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleStrikethrough',\n (format, isTurningOn) => {\n format.strikethrough = !!isTurningOn;\n },\n format => !!format.strikethrough\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle subscript style\n * @param editor The editor to operate on\n */\nexport default function toggleSubscript(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleSubscript',\n (format, isTurningOn) => {\n format.superOrSubScriptSequence = isTurningOn ? 'sub' : '';\n },\n format => format.superOrSubScriptSequence?.split(' ').pop() == 'sub'\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle superscript style\n * @param editor The editor to operate on\n */\nexport default function toggleSuperscript(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleSuperscript',\n (format, isTurningOn) => {\n format.superOrSubScriptSequence = isTurningOn ? 'super' : '';\n },\n format => format.superOrSubScriptSequence?.split(' ').pop() == 'super'\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle underline style\n * @param editor The editor to operate on\n */\nexport default function toggleUnderline(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleUnderline',\n (format, isTurningOn, segment) => {\n format.underline = !!isTurningOn;\n\n if (segment?.link) {\n segment.link.format.underline = !!isTurningOn;\n }\n },\n (format, segment) => !!format.underline || !!segment?.link?.format?.underline\n );\n}\n","import { ContentModelDocument, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { getSelectedSegmentsAndParagraphs } from '../../modelApi/selection/collectSelections';\n\n/**\n * Get selected segments from a content model\n */\nexport default function getSelectedSegments(\n model: ContentModelDocument,\n includingFormatHolder: boolean\n): ContentModelSegment[] {\n return getSelectedSegmentsAndParagraphs(model, includingFormatHolder).map(x => x[0]);\n}\n","import hasSelectionInBlockGroup from './hasSelectionInBlockGroup';\nimport hasSelectionInSegment from './hasSelectionInSegment';\nimport { ContentModelBlock } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given block\n * @param block The block to check\n */\nexport default function hasSelectionInBlock(block: ContentModelBlock): boolean {\n switch (block.blockType) {\n case 'Paragraph':\n return block.segments.some(hasSelectionInSegment);\n\n case 'Table':\n return block.rows.some(row => row.cells.some(hasSelectionInBlockGroup));\n\n case 'BlockGroup':\n return hasSelectionInBlockGroup(block);\n\n case 'Divider':\n case 'Entity':\n return !!block.isSelected;\n\n default:\n return false;\n }\n}\n","import hasSelectionInBlock from './hasSelectionInBlock';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given block\n * @param block The block to check\n */\nexport default function hasSelectionInBlockGroup(group: ContentModelBlockGroup): boolean {\n if (group.blockGroupType == 'TableCell' && group.isSelected) {\n return true;\n }\n\n if (group.blocks.some(hasSelectionInBlock)) {\n return true;\n }\n\n return false;\n}\n","import hasSelectionInBlock from './hasSelectionInBlock';\nimport { ContentModelSegment } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given segment\n * @param segment The segment to check\n */\nexport default function hasSelectionInSegment(segment: ContentModelSegment): boolean {\n return (\n segment.isSelected ||\n (segment.segmentType == 'General' && segment.blocks.some(hasSelectionInBlock))\n );\n}\n","import hasSelectionInBlock from '../selection/hasSelectionInBlock';\nimport { alignTable } from '../../modelApi/table/alignTable';\nimport { alignTableCell } from '../../modelApi/table/alignTableCell';\nimport { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { deleteTable } from '../../modelApi/table/deleteTable';\nimport { deleteTableColumn } from '../../modelApi/table/deleteTableColumn';\nimport { deleteTableRow } from '../../modelApi/table/deleteTableRow';\nimport { ensureFocusableParagraphForTable } from '../../modelApi/table/ensureFocusableParagraphForTable';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { insertTableColumn } from '../../modelApi/table/insertTableColumn';\nimport { insertTableRow } from '../../modelApi/table/insertTableRow';\nimport { mergeTableCells } from '../../modelApi/table/mergeTableCells';\nimport { mergeTableColumn } from '../../modelApi/table/mergeTableColumn';\nimport { mergeTableRow } from '../../modelApi/table/mergeTableRow';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setSelection } from '../../modelApi/selection/setSelection';\nimport { splitTableCellHorizontally } from '../../modelApi/table/splitTableCellHorizontally';\nimport { splitTableCellVertically } from '../../modelApi/table/splitTableCellVertically';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport {\n createSelectionMarker,\n hasMetadata,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\n/**\n * Format current focused table with the given format\n * @param editor The editor instance\n * @param operation The table operation to apply\n */\nexport default function editTable(editor: IContentModelEditor, operation: TableOperation) {\n formatWithContentModel(editor, 'editTable', model => {\n const [tableModel, path] = getFirstSelectedTable(model);\n\n if (tableModel) {\n switch (operation) {\n case TableOperation.AlignCellLeft:\n case TableOperation.AlignCellCenter:\n case TableOperation.AlignCellRight:\n alignTableCell(tableModel, operation);\n break;\n case TableOperation.AlignCellTop:\n case TableOperation.AlignCellMiddle:\n case TableOperation.AlignCellBottom:\n alignTableCell(tableModel, operation);\n break;\n case TableOperation.AlignCenter:\n case TableOperation.AlignLeft:\n case TableOperation.AlignRight:\n alignTable(tableModel, operation);\n break;\n\n case TableOperation.DeleteColumn:\n deleteTableColumn(tableModel);\n break;\n\n case TableOperation.DeleteRow:\n deleteTableRow(tableModel);\n break;\n\n case TableOperation.DeleteTable:\n deleteTable(tableModel);\n break;\n\n case TableOperation.InsertAbove:\n case TableOperation.InsertBelow:\n insertTableRow(tableModel, operation);\n break;\n\n case TableOperation.InsertLeft:\n case TableOperation.InsertRight:\n insertTableColumn(tableModel, operation);\n break;\n\n case TableOperation.MergeAbove:\n case TableOperation.MergeBelow:\n mergeTableRow(tableModel, operation);\n break;\n\n case TableOperation.MergeCells:\n mergeTableCells(tableModel);\n break;\n\n case TableOperation.MergeLeft:\n case TableOperation.MergeRight:\n mergeTableColumn(tableModel, operation);\n break;\n\n case TableOperation.SplitHorizontally:\n splitTableCellHorizontally(tableModel);\n break;\n\n case TableOperation.SplitVertically:\n splitTableCellVertically(tableModel);\n break;\n }\n\n if (!hasSelectionInBlock(tableModel)) {\n const paragraph = ensureFocusableParagraphForTable(model, path, tableModel);\n\n if (paragraph) {\n const marker = createSelectionMarker(model.format);\n\n paragraph.segments.unshift(marker);\n setParagraphNotImplicit(paragraph);\n setSelection(model, marker);\n }\n }\n\n normalizeTable(tableModel);\n\n if (hasMetadata(tableModel)) {\n applyTableFormat(tableModel, undefined /*newFormat*/, true /*keepCellShade*/);\n }\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * Format current focused table with the given format\n * @param editor The editor instance\n * @param format The table format to apply\n * @param keepCellShade Whether keep existing shade color when apply format if there is a manually set shade color\n */\nexport default function formatTable(\n editor: IContentModelEditor,\n format: TableMetadataFormat,\n keepCellShade?: boolean\n) {\n formatWithContentModel(editor, 'formatTable', model => {\n const [tableModel] = getFirstSelectedTable(model);\n\n if (tableModel) {\n applyTableFormat(tableModel, format, keepCellShade);\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { createContentModelDocument, createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { createTableStructure } from '../../modelApi/table/createTableStructure';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setSelection } from '../../modelApi/selection/setSelection';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * Insert table into editor at current selection\n * @param editor The editor instance\n * @param columns Number of columns in table, it also controls the default table cell width:\n * if columns <= 4, width = 120px; if columns <= 6, width = 100px; else width = 70px\n * @param rows Number of rows in table\n * @param format (Optional) The table format. If not passed, the default format will be applied:\n * background color: #FFF; border color: #ABABAB\n */\nexport default function insertTable(\n editor: IContentModelEditor,\n columns: number,\n rows: number,\n format?: Partial\n) {\n formatWithContentModel(editor, 'insertTable', (model, context) => {\n const insertPosition = deleteSelection(model, [], context).insertPoint;\n\n if (insertPosition) {\n const doc = createContentModelDocument();\n const table = createTableStructure(doc, columns, rows);\n\n normalizeTable(table, getPendingFormat(editor) || insertPosition.marker.format);\n // Assign default vertical align\n format = format || { verticalAlign: 'top' };\n applyTableFormat(table, format);\n mergeModel(model, doc, context, {\n insertPosition,\n mergeFormat: 'mergeAll',\n });\n\n const firstBlock = table.rows[0]?.cells[0]?.blocks[0];\n\n if (firstBlock?.blockType == 'Paragraph') {\n const marker = createSelectionMarker(firstBlock.segments[0]?.format);\n firstBlock.segments.unshift(marker);\n setSelection(model, marker);\n }\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import hasSelectionInBlockGroup from '../selection/hasSelectionInBlockGroup';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setTableCellBackgroundColor } from '../../modelApi/table/setTableCellBackgroundColor';\n\n/**\n * Set table cell shade color\n * @param editor The editor instance\n * @param color The color to set. Pass null to remove existing shade color\n */\nexport default function setTableCellShade(editor: IContentModelEditor, color: string | null) {\n formatWithContentModel(editor, 'setTableCellShade', model => {\n const [table] = getFirstSelectedTable(model);\n\n if (table) {\n normalizeTable(table);\n\n table.rows.forEach(row =>\n row.cells.forEach(cell => {\n if (hasSelectionInBlockGroup(cell)) {\n setTableCellBackgroundColor(cell, color, true /*isColorOverride*/);\n }\n })\n );\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { ContentModelImage } from 'roosterjs-content-model-types';\nimport { EditImageEventData, PluginEventType } from 'roosterjs-editor-types';\nimport { formatSegmentWithContentModel } from './formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * @internal\n */\nexport default function formatImageWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n callback: (segment: ContentModelImage) => void,\n eventChangeData?: EditImageEventData\n) {\n formatSegmentWithContentModel(\n editor,\n apiName,\n (_, __, segment) => {\n if (segment?.segmentType == 'Image') {\n callback(segment);\n if (eventChangeData) {\n editor.triggerPluginEvent(PluginEventType.EditImage, eventChangeData);\n }\n }\n },\n undefined /** segmentHasStyleCallback **/,\n undefined /** includingFormatHolder */\n );\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { getSelectedParagraphs } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * @internal\n */\nexport function formatParagraphWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n setStyleCallback: (paragraph: ContentModelParagraph) => void\n) {\n formatWithContentModel(\n editor,\n apiName,\n model => {\n const paragraphs = getSelectedParagraphs(model);\n\n paragraphs.forEach(setStyleCallback);\n\n return paragraphs.length > 0;\n },\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { adjustWordSelection } from '../../modelApi/selection/adjustWordSelection';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { getSelectedSegmentsAndParagraphs } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n/**\n * @internal\n */\nexport function formatSegmentWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n toggleStyleCallback: (\n format: ContentModelSegmentFormat,\n isTuringOn: boolean,\n segment: ContentModelSegment | null,\n paragraph: ContentModelParagraph | null\n ) => void,\n segmentHasStyleCallback?: (\n format: ContentModelSegmentFormat,\n segment: ContentModelSegment | null,\n paragraph: ContentModelParagraph | null\n ) => boolean,\n includingFormatHolder?: boolean,\n afterFormatCallback?: (model: ContentModelDocument) => void\n) {\n formatWithContentModel(editor, apiName, model => {\n let segmentAndParagraphs = getSelectedSegmentsAndParagraphs(model, !!includingFormatHolder);\n const pendingFormat = getPendingFormat(editor);\n let isCollapsedSelection =\n segmentAndParagraphs.length == 1 &&\n segmentAndParagraphs[0][0].segmentType == 'SelectionMarker';\n\n if (isCollapsedSelection) {\n const para = segmentAndParagraphs[0][1];\n\n segmentAndParagraphs = adjustWordSelection(model, segmentAndParagraphs[0][0]).map(x => [\n x,\n para,\n ]);\n\n if (segmentAndParagraphs.length > 1) {\n isCollapsedSelection = false;\n }\n }\n\n const formatsAndSegments: [\n ContentModelSegmentFormat,\n ContentModelSegment | null,\n ContentModelParagraph | null\n ][] = pendingFormat\n ? [[pendingFormat, null, null]]\n : segmentAndParagraphs.map(item => [item[0].format, item[0], item[1]]);\n\n const isTurningOff = segmentHasStyleCallback\n ? formatsAndSegments.every(([format, segment, paragraph]) =>\n segmentHasStyleCallback(format, segment, paragraph)\n )\n : false;\n\n formatsAndSegments.forEach(([format, segment, paragraph]) =>\n toggleStyleCallback(format, !isTurningOff, segment, paragraph)\n );\n\n afterFormatCallback?.(model);\n\n if (!pendingFormat && isCollapsedSelection) {\n const pos = editor.getFocusedPosition();\n\n if (pos) {\n setPendingFormat(editor, segmentAndParagraphs[0][0].format, pos);\n }\n }\n\n if (isCollapsedSelection) {\n editor.focus();\n return false;\n } else {\n return formatsAndSegments.length > 0;\n }\n });\n}\n","import { ChangeSource, PluginEventType } from 'roosterjs-editor-types';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelFormatter,\n FormatWithContentModelContext,\n FormatWithContentModelOptions,\n} from '../../publicTypes/parameter/FormatWithContentModelContext';\n\n/**\n * The general API to do format change with Content Model\n * It will grab a Content Model for current editor content, and invoke a callback function\n * to do format change. Then according to the return value, write back the modified content model into editor.\n * If there is cached model, it will be used and updated.\n * @param editor Content Model editor\n * @param apiName Name of the format API\n * @param formatter Formatter function, see ContentModelFormatter\n * @param options More options, see FormatWithContentModelOptions\n */\nexport function formatWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n formatter: ContentModelFormatter,\n options?: FormatWithContentModelOptions\n) {\n const {\n onNodeCreated,\n preservePendingFormat,\n getChangeData,\n changeSource,\n rawEvent,\n selectionOverride,\n } = options || {};\n\n editor.focus();\n\n const model = editor.createContentModel(undefined /*option*/, selectionOverride);\n const context: FormatWithContentModelContext = {\n deletedEntities: [],\n rawEvent,\n };\n\n if (formatter(model, context)) {\n const callback = () => {\n handleDeletedEntities(editor, context);\n\n if (model) {\n editor.setContentModel(model, { onNodeCreated });\n }\n\n if (preservePendingFormat) {\n const pendingFormat = getPendingFormat(editor);\n const pos = editor.getFocusedPosition();\n\n if (pendingFormat && pos) {\n setPendingFormat(editor, pendingFormat, pos);\n }\n }\n\n return getChangeData?.();\n };\n\n if (context.skipUndoSnapshot) {\n const contentChangedEventData = callback();\n\n if (changeSource) {\n editor.triggerContentChangedEvent(changeSource, contentChangedEventData);\n }\n } else {\n editor.addUndoSnapshot(\n callback,\n changeSource || ChangeSource.Format,\n false /*canUndoByBackspace*/,\n {\n formatApiName: apiName,\n }\n );\n }\n\n editor.cacheContentModel?.(model);\n }\n}\n\nfunction handleDeletedEntities(\n editor: IContentModelEditor,\n context: FormatWithContentModelContext\n) {\n context.deletedEntities.forEach(({ entity, operation }) => {\n if (entity.id && entity.type) {\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n entity: {\n id: entity.id,\n isReadonly: entity.isReadonly,\n type: entity.type,\n wrapper: entity.wrapper,\n },\n operation,\n rawEvent: context.rawEvent,\n });\n }\n });\n}\n","import { domToContentModel } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { NodePosition } from 'roosterjs-editor-types';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport ContentModelBeforePasteEvent, {\n ContentModelBeforePasteEventData,\n} from '../../publicTypes/event/ContentModelBeforePasteEvent';\nimport {\n createDefaultHtmlSanitizerOptions,\n getPasteType,\n handleImagePaste,\n handleTextPaste,\n moveChildNodes,\n retrieveMetadataFromClipboard,\n sanitizePasteContent,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ClipboardData,\n GetContentMode,\n PasteType,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * Paste into editor using a clipboardData object\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param pasteAsText Force pasting as plain text. Default value is false\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format. Default value is false. When pasteAsText is true, this parameter is ignored\n * @param pasteAsImage: When set to true, if the clipboardData contains a imageDataUri will paste the image to the editor\n */\nexport default function paste(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n pasteAsText: boolean = false,\n applyCurrentFormat: boolean = false,\n pasteAsImage: boolean = false\n) {\n if (clipboardData.snapshotBeforePaste) {\n // Restore original content before paste a new one\n editor.setContent(clipboardData.snapshotBeforePaste);\n } else {\n clipboardData.snapshotBeforePaste = editor.getContent(GetContentMode.RawHTMLWithSelection);\n }\n\n const eventData = createBeforePasteEventData(\n editor,\n clipboardData,\n getPasteType(pasteAsText, applyCurrentFormat, pasteAsImage)\n );\n\n const {\n domToModelOption,\n fragment,\n customizedMerge,\n } = triggerPluginEventAndCreatePasteFragment(\n editor,\n clipboardData,\n null /* position */,\n pasteAsText,\n pasteAsImage,\n eventData\n );\n\n const pasteModel = domToContentModel(fragment, domToModelOption);\n\n if (pasteModel) {\n formatWithContentModel(\n editor,\n 'Paste',\n (model, context) =>\n mergePasteContent(model, context, pasteModel, applyCurrentFormat, customizedMerge),\n {\n changeSource: ChangeSource.Paste,\n getChangeData: () => clipboardData,\n }\n );\n }\n}\n\n/**\n * @internal\n * Export only for unit test\n */\nexport function mergePasteContent(\n model: ContentModelDocument,\n context: FormatWithContentModelContext,\n pasteModel: ContentModelDocument,\n applyCurrentFormat: boolean,\n customizedMerge:\n | undefined\n | ((source: ContentModelDocument, target: ContentModelDocument) => void)\n): boolean {\n if (customizedMerge) {\n customizedMerge(model, pasteModel);\n } else {\n mergeModel(model, pasteModel, context, {\n mergeFormat: applyCurrentFormat ? 'keepSourceEmphasisFormat' : 'none',\n mergeTable: shouldMergeTable(pasteModel),\n });\n }\n return true;\n}\n\nfunction shouldMergeTable(pasteModel: ContentModelDocument): boolean | undefined {\n // If model contains a table and a paragraph element after the table with a single BR segment, remove the Paragraph after the table\n if (\n pasteModel.blocks.length == 2 &&\n pasteModel.blocks[0].blockType === 'Table' &&\n pasteModel.blocks[1].blockType === 'Paragraph' &&\n pasteModel.blocks[1].segments.length === 1 &&\n pasteModel.blocks[1].segments[0].segmentType === 'Br'\n ) {\n pasteModel.blocks.splice(1);\n }\n // Only merge table when the document contain a single table.\n return pasteModel.blocks.length === 1 && pasteModel.blocks[0].blockType === 'Table';\n}\n\nfunction createBeforePasteEventData(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n pasteType: PasteType\n): ContentModelBeforePasteEventData {\n const options = createDefaultHtmlSanitizerOptions();\n\n // Remove \"caret-color\" style generated by Safari to make sure caret shows in right color after paste\n options.cssStyleCallbacks['caret-color'] = () => false;\n\n return {\n clipboardData,\n fragment: editor.getDocument().createDocumentFragment(),\n sanitizingOption: options,\n htmlBefore: '',\n htmlAfter: '',\n htmlAttributes: {},\n domToModelOption: {},\n pasteType,\n };\n}\n\n/**\n * This function is used to create a BeforePasteEvent object after trigger the event, so other plugins can modify the event object\n * This function will also create a DocumentFragment for paste.\n */\nfunction triggerPluginEventAndCreatePasteFragment(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n pasteAsImage: boolean,\n eventData: ContentModelBeforePasteEventData\n): ContentModelBeforePasteEventData {\n const event = {\n eventType: PluginEventType.BeforePaste,\n ...eventData,\n } as ContentModelBeforePasteEvent;\n\n const { fragment } = event;\n const { rawHtml, text, imageDataUri } = clipboardData;\n const trustedHTMLHandler = editor.getTrustedHTMLHandler();\n\n let doc: Document | undefined = rawHtml\n ? new DOMParser().parseFromString(trustedHTMLHandler(rawHtml), 'text/html')\n : undefined;\n\n // Step 2: Retrieve Metadata from Html and the Html that was copied.\n retrieveMetadataFromClipboard(doc, event, trustedHTMLHandler);\n\n // Step 3: Fill the BeforePasteEvent object, especially the fragment for paste\n if ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) {\n // Paste image\n handleImagePaste(imageDataUri, fragment);\n } else if (!pasteAsText && rawHtml && doc ? doc.body : false) {\n moveChildNodes(fragment, doc?.body);\n } else if (text) {\n // Paste text\n handleTextPaste(text, position, fragment);\n }\n\n let pluginEvent: ContentModelBeforePasteEvent = event;\n // Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste, when the type of paste is different than Plain Text\n if (event.pasteType !== PasteType.AsPlainText) {\n pluginEvent = editor.triggerPluginEvent(\n PluginEventType.BeforePaste,\n event,\n true /* broadcast */\n ) as ContentModelBeforePasteEvent;\n }\n\n // Step 5. Sanitize the fragment before paste to make sure the content is safe\n sanitizePasteContent(event, position);\n\n return pluginEvent;\n}\n","import { EditorPlugin } from 'roosterjs-editor-types';\nimport { getDarkColor } from 'roosterjs-color-utils';\nimport {\n ContentModelEditor,\n ContentModelEditorOptions,\n ContentModelPastePlugin,\n IContentModelEditor,\n} from 'roosterjs-content-model-editor';\n\n/**\n * Create a Content Model Editor using the given options\n * @param contentDiv The html div element needed for creating the editor\n * @param additionalPlugins The additional user defined plugins. Currently the default plugins that are already included are\n * ContentEdit, HyperLink and Paste, user don't need to add those.\n * @param initialContent The initial content to show in editor. It can't be removed by undo, user need to manually remove it if needed.\n * @returns The ContentModelEditor instance\n */\nexport function createContentModelEditor(\n contentDiv: HTMLDivElement,\n additionalPlugins?: EditorPlugin[],\n initialContent?: string\n): IContentModelEditor {\n let plugins: EditorPlugin[] = [new ContentModelPastePlugin()];\n\n if (additionalPlugins) {\n plugins = plugins.concat(additionalPlugins);\n }\n\n let options: ContentModelEditorOptions = {\n plugins: plugins,\n initialContent: initialContent,\n getDarkColor: getDarkColor,\n defaultFormat: {\n fontFamily: 'Calibri,Arial,Helvetica,sans-serif',\n fontSize: '11pt',\n textColor: '#000000',\n },\n };\n return new ContentModelEditor(contentDiv, options);\n}\n","export { createContentModelEditor } from './createContentModelEditor';\nexport * from 'roosterjs-content-model-types';\nexport * from 'roosterjs-content-model-dom';\nexport * from 'roosterjs-content-model-editor';\n","module.exports = roosterjs;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2594);\n"],"names":["editorContext","options","selection","context","blockFormat","segmentFormat","isInSelection","listFormat","levels","threadItemCounts","link","format","dataset","code","blockDecorator","tagName","elementProcessors","defaultProcessorMap","processorOverride","defaultStyles","defaultStyleMap","defaultStyleOverride","formatParsers","getFormatParsers","formatParserOverride","additionalFormatParsers","defaultElementProcessors","defaultFormatParsers","isRootRtl","direction","rangeEx","a","linkProcessor","b","knownElementProcessor","blockquote","br","brProcessor","codeProcessor","div","em","font","fontProcessor","i","img","imageProcessor","h1","headingProcessor","h2","h3","h4","h5","h6","hr","hrProcessor","li","listItemProcessor","ol","listProcessor","p","pProcessor","pre","formatContainerProcessor","s","section","span","strike","strong","sub","sup","table","tableProcessor","u","ul","generalProcessor","textProcessor","element","elementProcessor","entity","entityProcessor","child","childProcessor","delimiter","delimiterProcessor","root","option","model","createContentModelDocument","defaultFormat","createDomToModelContext","normalizeContentModel","SegmentDecoratorTags","group","decorator","undefined","isSegmentDecorator","indexOf","parseFormat","block","container","ContextStyles","forEach","style","paragraph","createParagraph","addBlock","createBr","isSelected","addSegment","processChildNode","isNodeOfType","display","handleRegularSelection","index","nodeStartOffset","nodeEndOffset","addSelectionMarker","type","areAllCollapsed","parent","getRegularSelectionOffsets","firstChild","nextSibling","stackFormat","toLowerCase","processor","className","getEntityFromElement","contentEditable","tryGetProcessorForEntity","getDelimiterFromElement","tryGetProcessorForDelimiter","isReadonly","id","isBlockEntity","isBlockElement","segment","entityModel","createEntity","FontSizes","size","intSize","fontFamily","getAttribute","fontSize","parseInt","Number","isNaN","length","textColor","segmentOnBlock","getDefaultStyle","formatContainer","createFormatContainer","zeroFontSize","blocks","blockType","isImplicit","shouldFallbackToParagraph","Object","assign","setParagraphNotImplicit","generalBlockProcessor","createGeneralBlock","isSelectedBefore","generalSegmentProcessor","createGeneralSegment","addDecorators","getObjectKeys","key","createParagraphDecorator","blockProcessor","divider","createDivider","imageFormat","image","createImage","src","alt","title","isSelectedAsImageSelection","FormatContainerTriggerStyles","ByPassFormatContainerTags","isBlock","defaultStyle","bgcolor","getPropertyValue","some","marginLeft","marginRight","shouldUseFormatContainer","href","segmentUnderLink","hasAttribute","listParent","listItem","createListItem","listItemElement","push","currentBlocks","lastItem","level","createListLevel","listLevel","updateListMetadata","metadata","listLevelMetadataFormatHandler","parse","orderedStyleType","unorderedStyleType","originalListParent","pop","calcSizes","positions","result","lastPos","tableElement","createTable","rows","tableSelection","selectedTable","coordinates","hasTableSelection","firstCell","lastCell","allowCacheElement","cachedElement","tableBorder","columnPositions","rowPositions","zoomScale","row","tr","tableRow","tbody","parentNode","safeInstanceOf","parentElement","parentTag","sourceCol","targetCol","cells","td","hasSelectionBeforeCell","colEnd","colSpan","rowEnd","rowSpan","needCalcWidth","needCalcHeight","rect","getBoundingClientRect","width","height","segmentOnTableCell","cellFormat","tableCell","hasTd","cell","createTableCell","spannedRow","hasSelectionAfterCell","y","x","col","widths","heights","textNode","txt","nodeValue","txtStartOffset","txtEndOffset","addTextSegment","substring","WhiteSpaceValuesNeedToHandle","text","lastBlock","lastSegment","segments","segmentType","areSameFormats","hasSpacesOnly","whiteSpace","textModel","createText","marker","createSelectionMarker","f1","f2","keys1","keys2","every","tag","currentContainer","range","ranges","startContainer","startOffset","endContainer","endOffset","BLOCK_DISPLAY_STYLES","parsers","parser","SkippedStylesForBlock","SkippedStylesForTable","stackFormatInternal","processType","callback","linkFormat","codeFormat","decoratorFormat","underline","stackLinkInternal","stackCodeInternal","node","expectedType","nodeType","ListStyleDefinitionMetadata","createObjectDefinition","createNumberDefinition","list","updateMetadata","EditingInfoDatasetName","definition","metadataString","obj","JSON","validate","stringify","directionFormatHandler","_","dir","apply","displayFormatHandler","htmlAlignFormatHandler","htmlAlign","calcAlign","textAlign","setAttribute","ResultMap","lineHeightFormatHandler","lineHeight","MarginKeys","marginFormatHandler","value","parseValueWithUnit","implicitFormat","PaddingKeys","paddingFormatHandler","textAlignFormatHandler","flexDirection","alignSelf","whiteSpaceFormatHandler","backgroundColorFormatHandler","backgroundColor","getColor","darkColorHandler","isDarkMode","setColor","borderBoxFormatHandler","boxSizing","useBorderBox","BorderKeys","borderFormatHandler","boxShadowFormatHandler","boxShadow","datasetFormatHandler","floatFormatHandler","float","idFormatHandler","PercentageRegex","tryParseSize","attrName","attrValue","test","sizeFormatHandler","maxWidth","maxHeight","minWidth","minHeight","verticalAlignFormatHandler","verticalAlign","wordBreakFormatHandler","wordBreak","defaultFormatHandlerMap","bold","boldFormatHandler","border","borderBox","fontFamilyFormatHandler","fontSizeFormatHandler","italic","italicFormatHandler","letterSpacing","letterSpacingFormatHandler","linkFormatHandler","listItemThread","listItemThreadFormatHandler","listLevelThread","listLevelThreadFormatHandler","listStylePosition","listStylePositionFormatHandler","margin","padding","strikeFormatHandler","superOrSubScript","superOrSubScriptFormatHandler","tableLayout","tableLayoutFormatHandler","tableSpacing","tableSpacingFormatHandler","textColorFormatHandler","textColorOnTableCell","textColorOnTableCellFormatHandler","underlineFormatHandler","styleBasedSegmentFormats","elementBasedSegmentFormats","sharedBlockFormats","sharedContainerFormats","defaultFormatKeysPerCategory","styleBasedSegment","elementBasedSegment","tableCellBorder","reduce","defaultFormatAppliers","override","additionalParsers","map","formatKey","concat","additionalAppliers","OrderedMapPlaceholderRegex","DefaultOrderedListStyles","DefaultUnorderedListStyles","CharCodeOfA","RomanValues","M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I","getOrderedListStyleValue","template","listNumber","replace","match","subStr","convertDecimalsToAlpha","convertDecimalsToRoman","decimal","isLowerCase","alpha","String","fromCharCode","Math","floor","romanValue","timesRomanCharAppear","repeat","toLocaleLowerCase","listItemMetadataFormatHandler","depth","nodeStack","listStyleType","getTagOfNode","OrderedMap","UnorderedMap","isLiUnderOl","displayForDummyItem","splice","startNumberOverride","OLTypeToStyleMap","A","getKeyFromValue","filter","listStyle","listType","start","startNumber","fontWeight","blockFontWeight","ownerDocument","createElement","moveChildNodes","appendChild","isSuperOrSubScript","contextFont","knownFontSize","KnownFontSizes","endsWith","existingFontSize","round","normalizeFontSize","small","medium","large","fontStyle","name","target","rel","anchorId","relationship","anchorTitle","anchorClass","textDecoration","strikethrough","superOrSubScriptSequence","split","join","trim","reverse","wrapper","color","implicitColor","BorderCollapsed","borderCollapse","borderSpacing","DeprecatedColors","isBackground","darkColor","findLightColorFromDarkColor","tryGetFontColor","parseColorValue","lightModeColor","effectiveColor","registerColor","blockElement","address","article","aside","marginTop","marginBottom","center","dd","dl","dt","fieldset","figcaption","figure","footer","form","header","main","nav","th","PseudoTagNames","defaultImplicitFormatMap","ltr","rtl","end","initial","justify","align","MarginValueRegex","getFontSize","currentSizeOrElement","styleInPt","getComputedStyle","ptToPx","parseFloat","pt","currentSizePxOrElement","resultUnit","px","exec","numStr","unit","num","domToContentModel","contentModelToDom","get","hasMetadata","addCode","addLink","isGeneralSegment","unwrapBlock","isWhiteSpacePreserved","normalizeSingleSegment","newSegment","SPACE_TEXT_REGEX","isBlockEmpty","isBlockGroupEmpty","blockGroupType","isSegmentEmpty","isBlockGroup","isSegment","WHITESPACE_PRE_VALUES","normalizeParagraph","r","c","last","secondLast","noMarkerSegments","normalizeAllSegments","j","removeEmptySegments","SPACE","NONE_BREAK_SPACE","LEADING_SPACE_REGEX","TRAILING_SPACE_REGEX","resetNormalizeSegmentContext","textSegments","ignoreLeadingSpaces","ignoreTrailingSpaces","lastInlineSegment","lastTextSegment","normalizeSegment","normalizeTextSegments","normalizeLastTextSegment","first","substr","groupToUnwrap","formatHolder","keys","rowCount","spanLeftOrColSpan","spanAboveOrRowSpan","isHeader","spanLeft","spanAbove","calcPosition","pos","Position","toArray","childNodes","normalize","doc","modelToDomContext","createModelToDomContext","modelHandlers","blockGroupChildren","startPosition","endPosition","imageSelection","createRange","collapsed","extractSelectionRange","regularSelection","current","formatAppliers","getFormatAppliers","formatApplierOverride","additionalFormatAppliers","defaultContentModelHandlers","modelHandlerOverride","defaultImplicitFormatOverride","defaultModelHandlers","onNodeCreated","handleBlock","handleBlockGroupChildren","handleBr","handleEntity","general","handleGeneralModel","handleDivider","handleImage","handleList","handleListItem","handleParagraph","handleFormatContainer","handleSegment","segmentDecorator","handleSegmentDecorator","handleTable","handleText","refNode","handlers","childBlock","next","removeChild","handleSegmentCommon","reuseCachedElement","insertBefore","applyFormat","cloneNode","isInlineEntity","commitEntity","wrap","addDelimiterForEntity","after","addDelimiters","imageModel","document","widthNum","heightNum","layer","stackLevel","itemLevel","editingInfo","newList","unwrap","needParagraphWrapper","formatOnWrapper","handleSegments","firstSegment","optimize","codeNode","tableNode","max","createTextNode","OptimizeTags","hasSameAttributes","element1","element2","attr1","attributes","attr2","classList","contains","removeUnnecessarySpan","mergeNode","lastChild","newNode","appliers","applier","segmentNode","containerNode","tagNameOrFormat","newFormat","tablePreProcessor","getSelectionRootNode","shouldUseTableProcessor","BorderStyles","BorderSizeRegex","combinedBorder","v","NumberDefinition","ImageMetadataFormatDefinition","widthPx","heightPx","leftPercent","rightPercent","topPercent","bottomPercent","angleRad","createStringDefinition","naturalHeight","naturalWidth","TableCellMetadataFormatDefinition","bgColorOverride","createBooleanDefinition","vAlignOverride","NullStringDefinition","BooleanDefinition","TableFormatDefinition","topBorderColor","bottomBorderColor","verticalBorderColor","hasHeaderRow","headerRowColor","hasFirstColumn","hasBandedColumns","hasBandedRows","bgColorEven","bgColorOdd","tableBorderFormat","SPACES_REGEX","char","charCodeAt","isForward","contentDiv","createContentModelEditorCore","createContentModel","selectionOverride","core","this","getCore","api","setContentModel","cacheContentModel","lifecycle","shadowEditFragment","cachedModel","cachedRangeEx","getContentModelDefaultFormat","EditorBase","cloneModel","includeCachedElement","defaultDomToModelOptions","createEditorContext","getSelectionRangeEx","internalCreateContentModel","defaultView","checkRootRtl","originalWidth","visualWidth","offsetWidth","checkZoomScale","originalApi","defaultModelToDomOptions","select","switchShadowEdit","editorCore","isOn","getSelectionRange","fragment","createDocumentFragment","selectionPath","getSelectionPath","triggerEvent","eventType","shadowEditSelectionPath","state","editor","disposer","onPaste","event","clipboardData","isClipboardEvent","dataTransfer","items","preventDefault","extractClipboardItems","allowedCustomPasteType","then","isDisposed","getName","initialize","addDomEventHandler","paste","e","copy","onCutCopy","cut","dispose","getState","isCut","pasteModel","iterateSelections","path","tableContext","getTempDiv","newRange","tempDiv","querySelector","elementToSelect","childElementCount","selectionExToRange","triggerPluginEvent","clonedRoot","rawEvent","addRangeToSelection","runAsync","focus","formatWithContentModel","deleteSelection","deleteResult","changeSource","getCustomData","getDocument","body","promoteToContentModelEditorCore","cmCore","textColors","backgroundColors","getDefaultSegmentFormat","promoteDefaultFormat","experimentalFeatures","isFeatureEnabled","promoteContentModelInfo","promoteCoreApi","modifiedOptions","plugins","corePluginOverride","typeInContainer","copyPaste","createEditorCore","hasDefaultFormat","onPluginEvent","handleKeyDownEvent","which","defaultPrevented","handledByEditFeature","shouldDeleteWithContentModel","isCharacterValue","tryApplyDefaultFormat","startPos","getStart","addUndoSnapshot","insertPoint","blockCount","blockIndex","previousBlock","applyDefaultFormat","currentFormat","pendingFormat","getPendingFormat","setPendingFormat","isModifierKey","canDeleteBefore","canDeleteAfter","previousSibling","isComposing","isInIME","checkAndApplyPendingFormat","data","clearPendingFormat","canApplyPendingFormat","unknownTagReplacement","ev","domToModelOption","sanitizingOption","getPasteSource","processPastedContentFromWordDesktop","processPastedContentWacComponents","pasteType","processPastedContentFromExcel","getTrustedHTMLHandler","additionalTagReplacements","processPastedContentFromPowerPoint","parseLink","deprecatedBorderColorParser","chainSanitizerCallback","cssStyleCallbacks","blockElementParser","LAST_TD_END_REGEX","LAST_TR_END_REGEX","LAST_TR_REGEX","LAST_TABLE_REGEX","DEFAULT_BORDER_STYLE","excelHandler","html","htmlBefore","trMatch","tableMatch","trustedHTMLHandler","DOMParser","parseFromString","Array","from","replaceChildren","borderStyle","borderBottom","borderLeft","borderRight","borderTop","LIST_CONTAINER_ELEMENT_CLASS_NAME","TABLE_CONTAINER","TEMP_ELEMENTS_CLASSES","CLASSES_TO_KEEP","LIST_ELEMENT_TAGS","LIST_ELEMENT_SELECTOR","wacSubSuperParser","wacElementProcessor","elementTag","matchesSelector","removeProperty","findClosestElementAncestor","shouldClearListContext","wacLiElementProcessor","lastblock","currentLevel","wacListItemParser","wacListLevelParser","paddingLeft","wacBlockParser","setProcessor","wacListProcessor","additionalAllowedCssClasses","isWrappedInContainer","previousElementSibling","toUpperCase","startsWith","PERCENTAGE_REGEX","removeNonValidLineHeight","parsedLineHeight","listLevelParser","wordDesktopElementProcessor","listItemElementParser","elementCallbacks","styles","getStyles","processWordList","processWordComments","MSO_COMMENT_ANCHOR_HREF_REGEX","MSO_LIST","MSO_LIST_IGNORE","startNumberOverrideParser","fakeBullet","wordKnownLevels","wordLevel","wordList","has","getFakeBulletText","isIgnoreNode","textContent","listAttribute","Map","wordListStyle","listProps","isFakeBullet","getFakeBulletTagName","newLevel","lastLevel","processAsListItem","set","entry","dColor","newValue","trimRight","SUPPORTED_PROTOCOLS","INVALID_LINKS_REGEX","url","URL","protocol","removeAttribute","skipUndoSnapshot","isMac","altKey","metaKey","ctrlKey","default","combineBorderValue","extractBorderValues","updateImageMetadata","updateTableCellMetadata","updateTableMetadata","isNext","newPath","nextBlock","unshift","shift","para","find","siblingSegment","left","right","TableAlignMap","alignment","paragraphOrListItemOrTable","getOperationalBlocks","newAligment","alignTable","internalSetDirection","setProperty","paddingRight","isBlockGroupOfType","findListItemsInSameThread","item","indentation","paragraphOrListItem","isIndent","isRtl","originalValue","ceil","isQuote","paragraphOfQuote","blockAndParent","canMergeQuote","wrapBlockStep1","wrapBlockStep2","clearContainerFormat","containerPathIndex","getClosestAncestorBlockGroupIndex","containerIndex","newContainer","clearListFormat","clearBlockFormat","blocksToClear","segmentsToClear","tablesToClear","arrayPush","colIndex","rowIndex","isWholeTableSelected","clearTableCellFormat","includeListFormatHolder","isOnlySelectionMarkerSelected","adjustWordSelection","isWholeBlockSelected","defaultSegmentFormat","clearSegmentsFormat","applyTableFormat","createTablesFormat","cloneModelWithFormat","cloneModelWithDataset","cloneBlockBase","cloneBlockGroupBase","cloneFormatContainer","cloneGeneralBlock","cloneSelectionMarker","cloneListLevel","cloneListItem","cloneDivider","cloneEntity","newParagraph","cloneSegmentBase","cloneGeneralSegment","textSegment","cloneSegment","cloneParagraph","cloneTableCell","cloneTableRow","cloneTable","cloneBlock","newModel","blockGroupTypes","stopTypes","input","HeadingTags","mergeParagraph","markerPosition","newPara","mergeToCurrentParagraph","splitParagraph","segmentIndex","sourceKeys","mergeTable","newTable","source","newCell","k","leftCell","aboveCell","normalizeTable","insertBlock","mergeList","listItemIndex","newParaFormat","paraIndex","newListItem","applyDefaultFormatOption","mergeSegmentFormat","targetformat","sourceFormat","insertPosition","mergeFormat","mergeValue","isFirst","formatState","firstTableContext","firstBlock","isFirstImage","isFirstSegment","retrieveStructureFormat","isMultilineSelection","headingLevel","validHeadingLevel","retrieveParagraphFormat","extractedBorder","borderColor","borderWidth","mergedFormat","superOrSubscript","isBold","retrieveSegmentFormat","canUnlink","canAddImageAltText","borderRadius","canMergeTableCell","tableFormat","isInTable","tableHasHeader","retrieveTableFormat","step1Result","blockToWrap","creator","canMerge","prevBlock","createAndAdd","additionalSteps","formatContext","deleteExpandedSelection","step","isValidDeleteSelectionContext","lastParagraph","lastTableContext","mergeParagraphAfterDelete","deleteAllSegmentBefore","deleteSegment","getDeleteCollapsedSelection","segmentsWithoutBr","fixupBr","blockToDelete","segmentToDelete","getLeafSiblingBlock","createInsertPoint","deleteBlock","forwardDeleteCollapsedSelection","backwardDeleteCollapsedSelection","DeleteWordState","getDeleteWordSelection","startIndex","deleteNext","iterator","markerIndex","forward","preserveWhiteSpace","punctuation","isPunctuation","space","isSpace","newText","normalizeText","iterateSegments","curr","done","forwardDeleteWordSelection","backwardDeleteWordSelection","replacement","operation","deletedEntities","DeleteSelectionIteratingOptions","contentUnderSelectedTableCell","contentUnderSelectedGeneralElement","markerFormat","insertMarkerIndex","isBackward","currentIndex","normalizePreviousSegment","deleteSingleChar","array","deleteLength","deleteState","position","focusAfterEntity","blockParent","pathIndex","directChild","childIndex","blocksToInsert","nextParagraph","setSelection","getPendingFormatHolder","holder","getFocusedPosition","equalTo","PendingFormatHolderKey","borderFormat","findListItems","pushNullIfNecessary","areListTypesCompatible","listItems","compareToIndex","currentLevels","compareToLevels","hasStartNumberOverride","levelLength","slice","currentItem","isOrderedList","filterListItems","shouldIgnoreBlock","paragraphOrListItems","alreadyInExpectedType","existingListItems","hasIgnoredParagraphBefore","itemIndex","firstMatcher","siblingMatcher","paragraphs","getSelectedParagraphs","changed","findIndex","findDelimiter","moveRightward","word","offset","splitTextSegment","found","markerBlock","markerSelectionIndex","currentSegment","firstCol","deepFirst","findSequence","selections","collectSelections","removeUnmeaningfulSelections","groupIndex","checkFirstParagraph","allSegments","includingFormatHolder","resultPath","commonAncestorContainer","internalIterateSelections","treatAllAsSelect","hasSelectedSegment","hasUnselectedSegment","handleGeneralContent","handleGeneralElement","setSelectionToBlockGroup","handleSelection","setIsSelected","startCo","findCell","endCo","setSelectionToTable","segmentsToDelete","setSelectionToSegment","setSelectionToBlock","selectable","TextAlignValueMap","VerticalAlignValueMap","sel","getSelectedCells","firstRow","lastRow","lastCol","DEFAULT_FORMAT","keepCellShade","effectiveMetadata","metaOverrides","removeCellShade","overrides","bgColorOverrides","vAlignOverrides","updateOverrides","clearCache","transparentBorderMatrix","BorderFormatters","firstColumn","lastColumn","formatColor","alwaysUseTransparent","getBorderStyleFromColor","setTableCellBackgroundColor","formatCells","cellIndex","setBorderColor","setFirstColumnFormat","setHeaderRowFormat","noSpanAbove","noSpanLeft","noDifferentBelowSpan","spanCount","getBelowSpanCount","noDifferentRightSpan","getRightSpanCount","columns","cellInNextCol","collapseTableSelection","cellInNextRow","createEmptyParagraph","hasSelection","insertLeft","insertAbove","sourceRow","canMergeCells","mergingColIndex","newSelectedCol","mergingRowIndex","newSelectedRow","getTableCellWidth","tryMoveBlocks","targetCell","sourceCell","isColorOverride","lightness","colorValues","parseColor","red","green","blue","min","calculateLightness","newWidth","belowRow","belowCell","newHeight","newRow","setModelAlignment","setModelDirection","formatParagraphWithContentModel","headingStyle","setModelIndentation","preservePendingFormat","spacing","toString","DefaultQuoteFormat","BuildInQuoteFormat","quoteFormat","fullQuoteFormat","toggleModelBlockQuote","shouldDeleteAllSegmentsBefore","shouldDeleteWord","Browser","getDeleteSteps","handleKeyboardEventResult","getChangeData","contentNode","wrapperDisplay","insertEntityModel","transformToDarkColor","newEntity","triggerContentChangedEvent","__","previousSegment","clearModelFormat","reducedModelChildProcessor","selectionRootNode","startNode","createNodeStack","stackChild","getChildIndex","getUndoState","getZoomScale","retrieveModelFormatState","adjustSegmentSelection","ref","file","readFile","dataUrl","previousSrc","newSrc","originalSrc","getImageSrc","getMetadata","insertImageWithSrc","mergeModel","imageFileOrSrc","altText","URI_REGEX","MAILTO_REGEX","FTP_REGEX","applyLinkPrefix","prefix","search","displayText","sanitizer","HtmlSanitizer","sanitize","checkXss","matchLink","normalizedUrl","originalText","originalUrl","modelElement","isChanged","getFirstSelectedListItem","setListType","formatSegmentWithContentModel","capitalization","language","toLocaleUpperCase","wordArray","charAt","regex","RegExp","FONT_SIZES","change","sizeInPt","newSize","changeBase","fontSizes","getNewFontSize","changeFontSizeInternal","lastSegmentIndex","fontName","boldStyle","isTurningOn","DefaultCode","getSelectedSegmentsAndParagraphs","getFirstSelectedTable","tableModel","alignTableCell","deleteTableColumn","deleteTableRow","deleteTable","insertTableRow","insertTableColumn","mergeTableRow","mergeTableCells","mergeTableColumn","splitTableCellHorizontally","splitTableCellVertically","ensureFocusableParagraphForTable","createTableStructure","apiName","eventChangeData","setStyleCallback","toggleStyleCallback","segmentHasStyleCallback","afterFormatCallback","segmentAndParagraphs","isCollapsedSelection","formatsAndSegments","isTurningOff","formatter","handleDeletedEntities","contentChangedEventData","formatApiName","mergePasteContent","applyCurrentFormat","customizedMerge","shouldMergeTable","pasteAsText","pasteAsImage","snapshotBeforePaste","setContent","getContent","eventData","createDefaultHtmlSanitizerOptions","htmlAfter","htmlAttributes","createBeforePasteEventData","getPasteType","rawHtml","imageDataUri","retrieveMetadataFromClipboard","handleImagePaste","handleTextPaste","pluginEvent","sanitizePasteContent","triggerPluginEventAndCreatePasteFragment","additionalPlugins","initialContent","ContentModelPastePlugin","getDarkColor","ContentModelEditor","createContentModelEditor","module","exports","roosterjs","extendStatics","d","setPrototypeOf","__proto__","prototype","hasOwnProperty","call","__extends","TypeError","constructor","create","__assign","t","n","arguments","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","kind","descriptor","access","addInitializer","init","__runInitializers","thisArg","useValue","__propKey","__setFunctionName","description","configurable","__metadata","metadataKey","metadataValue","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","__generator","g","label","sent","trys","ops","verb","Symbol","op","__createBinding","o","m","k2","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","jl","__spreadArray","to","pack","l","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","__classPrivateFieldSet","__classPrivateFieldIn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","toStringTag","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rooster-content-model-min.js","mappings":"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","sources":["webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateListMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/domUtils/metadata/updateMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemMetadataFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelMetadataFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/list/listStylePositionFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/defaultStyles.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/index.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isGeneralSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/isWhiteSpacePreserved.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/reuseCachedElement.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domToModel/processors/tablePreProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/borderValues.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateImageMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableCellMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/metadata/updateTableMetadata.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/domUtils/stringUtil.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/ContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/createEditorContext.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/getSelectionRangeEx.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/setContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/coreApi/switchShadowEdit.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelCopyPastePlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/corePlugins/ContentModelTypeInContainerPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/createContentModelEditorCore.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/isContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelEditPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/ContentModelFormatPlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/ContentModelPastePlugin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/Excel/processPastedContentFromExcel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/PowerPoint/processPastedContentFromPowerPoint.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WacComponents/processPastedContentWacComponents.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processPastedContentFromWordDesktop.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordComments.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/WordDesktop/processWordLists.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/addParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/deprecatedColorParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/linkParser.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/plugins/PastePlugin/utils/setProcessor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/editor/utils/handleKeyboardEventCommon.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/index.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/getLeafSiblingBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelAlignment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelDirection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/setModelIndentation.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/block/toggleModelBlockQuote.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/clearModelFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/cloneModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/getClosestAncestorBlockGroupIndex.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/isBlockGroupOfType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/mergeModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/retrieveModelFormatState.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/common/wrapBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteAllSegmentBefore.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteCollapsedSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/deleteSteps/deleteWordSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/createInsertPoint.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteExpandedSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/edit/utils/deleteSingleChar.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/entity/insertEntityModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/format/pendingFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/image/applyImageBorderFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/findListItemsInSameThread.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/list/setListType.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustSegmentSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/adjustWordSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collapseTableSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/collectSelections.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/getSelectionRootNode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/iterateSelections.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/selection/setSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/alignTableCell.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/applyTableFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/canMergeCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/createTableStructure.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/deleteTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/ensureFocusableParagraphForTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/getSelectedCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/insertTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableCells.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableColumn.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/mergeTableRow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/normalizeTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/setTableCellBackgroundColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellHorizontally.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/modelApi/table/splitTableCellVertically.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setAlignment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setDirection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setHeadingLevel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setIndentation.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setParagraphMargin.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/setSpacing.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/block/toggleBlockQuote.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/editing/handleKeyDownEvent.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/entity/insertEntity.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/applyPendingFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/clearFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/format/getFormatState.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/adjustImageSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/changeImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/insertImage.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageAltText.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBorder.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/image/setImageBoxShadow.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/adjustLinkSelection.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/insertLink.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/link/removeLink.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStartNumber.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/setListStyle.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleBullet.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/list/toggleNumbering.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/applySegmentFormat.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeCapitalization.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/changeFontSize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setBackgroundColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontName.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setFontSize.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/setTextColor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleBold.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleCode.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleItalic.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleStrikethrough.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSubscript.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleSuperscript.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/segment/toggleUnderline.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/getSelectedSegments.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlock.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInBlockGroup.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/selection/hasSelectionInSegment.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/editTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/formatTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/insertTable.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/table/setTableCellShade.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatImageWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatParagraphWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatSegmentWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/formatWithContentModel.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model-editor/lib/publicApi/utils/paste.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model/lib/createContentModelEditor.ts","webpack://roosterjsContentModel/./packages-content-model/roosterjs-content-model/lib/index.ts","webpack://roosterjsContentModel/external var \"roosterjs\"","webpack://roosterjsContentModel/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjsContentModel/webpack/bootstrap","webpack://roosterjsContentModel/webpack/runtime/define property getters","webpack://roosterjsContentModel/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjsContentModel/webpack/runtime/make namespace object","webpack://roosterjsContentModel/webpack/startup"],"sourcesContent":["import { defaultFormatParsers, getFormatParsers } from '../../formatHandlers/defaultFormatHandlers';\nimport { defaultProcessorMap } from './defaultProcessors';\nimport { defaultStyleMap } from '../../formatHandlers/utils/defaultStyles';\nimport { DomToModelContext, DomToModelOption, EditorContext } from 'roosterjs-content-model-types';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\n\n/**\n * Create context object form DOM to Content Model conversion\n * @param editorContext Context of editor\n * @param options Options for this context\n * @param selection Selection that already exists in content\n */\nexport function createDomToModelContext(\n editorContext?: EditorContext,\n options?: DomToModelOption,\n selection?: SelectionRangeEx\n): DomToModelContext {\n const context: DomToModelContext = {\n ...editorContext,\n\n blockFormat: {},\n segmentFormat: {},\n isInSelection: false,\n\n listFormat: {\n levels: [],\n threadItemCounts: [],\n },\n link: {\n format: {},\n dataset: {},\n },\n code: {\n format: {},\n },\n blockDecorator: {\n format: {},\n tagName: '',\n },\n\n elementProcessors: {\n ...defaultProcessorMap,\n ...(options?.processorOverride || {}),\n },\n\n defaultStyles: {\n ...defaultStyleMap,\n ...(options?.defaultStyleOverride || {}),\n },\n\n formatParsers: getFormatParsers(\n options?.formatParserOverride,\n options?.additionalFormatParsers\n ),\n\n defaultElementProcessors: defaultProcessorMap,\n defaultFormatParsers: defaultFormatParsers,\n };\n\n if (editorContext?.isRootRtl) {\n context.blockFormat.direction = 'rtl';\n }\n\n if (selection) {\n context.rangeEx = selection;\n }\n\n return context;\n}\n","import { brProcessor } from '../processors/brProcessor';\nimport { childProcessor } from '../processors/childProcessor';\nimport { codeProcessor } from '../processors/codeProcessor';\nimport { delimiterProcessor } from '../processors/delimiterProcessor';\nimport { elementProcessor } from '../processors/elementProcessor';\nimport { ElementProcessorMap } from 'roosterjs-content-model-types';\nimport { entityProcessor } from '../processors/entityProcessor';\nimport { fontProcessor } from '../processors/fontProcessor';\nimport { formatContainerProcessor } from '../processors/formatContainerProcessor';\nimport { generalProcessor } from '../processors/generalProcessor';\nimport { headingProcessor } from '../processors/headingProcessor';\nimport { hrProcessor } from '../processors/hrProcessor';\nimport { imageProcessor } from '../processors/imageProcessor';\nimport { knownElementProcessor } from '../processors/knownElementProcessor';\nimport { linkProcessor } from '../processors/linkProcessor';\nimport { listItemProcessor } from '../processors/listItemProcessor';\nimport { listProcessor } from '../processors/listProcessor';\nimport { pProcessor } from '../processors/pProcessor';\nimport { tableProcessor } from '../processors/tableProcessor';\nimport { textProcessor } from '../processors/textProcessor';\n\n/**\n * @internal\n */\nexport const defaultProcessorMap: ElementProcessorMap = {\n a: linkProcessor,\n b: knownElementProcessor,\n blockquote: knownElementProcessor,\n br: brProcessor,\n code: codeProcessor,\n div: knownElementProcessor,\n em: knownElementProcessor,\n font: fontProcessor,\n i: knownElementProcessor,\n img: imageProcessor,\n h1: headingProcessor,\n h2: headingProcessor,\n h3: headingProcessor,\n h4: headingProcessor,\n h5: headingProcessor,\n h6: headingProcessor,\n hr: hrProcessor,\n li: listItemProcessor,\n ol: listProcessor,\n p: pProcessor,\n pre: formatContainerProcessor,\n s: knownElementProcessor,\n section: knownElementProcessor,\n span: knownElementProcessor,\n strike: knownElementProcessor,\n strong: knownElementProcessor,\n sub: knownElementProcessor,\n sup: knownElementProcessor,\n table: tableProcessor,\n u: knownElementProcessor,\n ul: listProcessor,\n\n '*': generalProcessor,\n '#text': textProcessor,\n element: elementProcessor,\n entity: entityProcessor,\n child: childProcessor,\n delimiter: delimiterProcessor,\n};\n","import { createContentModelDocument } from '../modelApi/creators/createContentModelDocument';\nimport { createDomToModelContext } from './context/createDomToModelContext';\nimport { normalizeContentModel } from '../modelApi/common/normalizeContentModel';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport {\n ContentModelDocument,\n DomToModelOption,\n EditorContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create Content Model from DOM tree in this editor\n * @param root Root element of DOM tree to create Content Model from\n * @param option The option to customize the behavior of DOM to Content Model conversion\n * @param editorContext Context of content model editor\n * @param selection Existing selection range in editor\n * @returns A ContentModelDocument object that contains all the models created from the give root element\n */\nexport function domToContentModel(\n root: HTMLElement | DocumentFragment,\n option?: DomToModelOption,\n editorContext?: EditorContext,\n selection?: SelectionRangeEx\n): ContentModelDocument {\n const model = createContentModelDocument(editorContext?.defaultFormat);\n const context = createDomToModelContext(editorContext, option, selection);\n\n context.elementProcessors.child(model, root, context);\n\n normalizeContentModel(model);\n\n return model;\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { ContextStyles } from './formatContainerProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { parseFormat } from '../utils/parseFormat';\nimport {\n ContentModelBlockGroup,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport function blockProcessor(\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext,\n segmentFormat?: ContentModelSegmentFormat\n) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const blockFormat = { ...context.blockFormat };\n\n parseFormat(element, context.formatParsers.container, blockFormat, context);\n\n ContextStyles.forEach(style => {\n if (blockFormat[style]) {\n context.blockFormat[style] = blockFormat[style];\n }\n });\n\n if (!isSegmentDecorator) {\n const paragraph = createParagraph(\n false /*isImplicit*/,\n blockFormat,\n segmentFormat,\n decorator\n );\n\n addBlock(group, paragraph);\n }\n\n context.elementProcessors.child(group, element, context);\n}\n","import { addSegment } from '../../modelApi/common/addSegment';\nimport { createBr } from '../../modelApi/creators/createBr';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const brProcessor: ElementProcessor = (group, element, context) => {\n const br = createBr(context.segmentFormat);\n\n if (context.isInSelection) {\n br.isSelected = true;\n }\n\n addSegment(group, br, context.blockFormat);\n};\n","import { addSelectionMarker } from '../utils/addSelectionMarker';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType, SelectionRangeTypes } from 'roosterjs-editor-types';\nimport {\n ContentModelBlockGroup,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * Content Model Element Processor for child elements\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const childProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n parent: ParentNode,\n context: DomToModelContext\n) => {\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, parent);\n let index = 0;\n\n for (let child = parent.firstChild; child; child = child.nextSibling) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n\n processChildNode(group, child, context);\n\n index++;\n }\n\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n};\n\n/**\n * Helper function for processing child node\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n *\n */\nexport function processChildNode(\n group: ContentModelBlockGroup,\n child: Node,\n context: DomToModelContext\n) {\n if (isNodeOfType(child, NodeType.Element) && child.style.display != 'none') {\n context.elementProcessors.element(group, child, context);\n } else if (isNodeOfType(child, NodeType.Text)) {\n context.elementProcessors['#text'](group, child, context);\n }\n}\n\n/**\n * Helper function to handle regular (range based) selection when process child node\n * @param index Index of current child node in its parent\n * @param context DOM to Content Model context\n * @param group The parent block group\n * @param nodeStartOffset Start offset of current regular selection\n * @param nodeEndOffset End offset of current regular selection\n */\nexport function handleRegularSelection(\n index: number,\n context: DomToModelContext,\n group: ContentModelBlockGroup,\n nodeStartOffset: number,\n nodeEndOffset: number\n) {\n if (index == nodeStartOffset) {\n context.isInSelection = true;\n\n addSelectionMarker(group, context);\n }\n\n if (index == nodeEndOffset && context.rangeEx?.type == SelectionRangeTypes.Normal) {\n if (!context.rangeEx.areAllCollapsed) {\n addSelectionMarker(group, context);\n }\n context.isInSelection = false;\n }\n}\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const codeProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(context, { code: 'codeDefault' }, () => {\n parseFormat(element, context.formatParsers.code, context.code.format, context);\n\n knownElementProcessor(group, element, context);\n });\n};\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { handleRegularSelection } from './childProcessor';\n\n/**\n * @internal\n * @param group\n * @param element\n * @param context\n */\nexport const delimiterProcessor: ElementProcessor = (group, element, context) => {\n let index = 0;\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, element);\n\n for (let child = element.firstChild; child; child = child.nextSibling) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n\n delimiterProcessor(group, child, context);\n index++;\n }\n\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n};\n","import { getDelimiterFromElement, getEntityFromElement } from 'roosterjs-editor-dom';\nimport {\n DomToModelContext,\n ElementProcessor,\n ElementProcessorMap,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * @param group\n * @param element\n * @param context\n */\nexport const elementProcessor: ElementProcessor = (group, element, context) => {\n const tagName = element.tagName.toLowerCase() as keyof ElementProcessorMap;\n const processor = (tryGetProcessorForEntity(element, context) ||\n tryGetProcessorForDelimiter(element, context) ||\n context.elementProcessors[tagName] ||\n (tagName.indexOf(':') >= 0 && context.elementProcessors.child) ||\n context.elementProcessors['*']) as ElementProcessor;\n processor(group, element, context);\n};\n\nfunction tryGetProcessorForEntity(element: HTMLElement, context: DomToModelContext) {\n return (element.className && getEntityFromElement(element)) ||\n element.contentEditable == 'false' // For readonly element, treat as an entity\n ? context.elementProcessors.entity\n : null;\n}\n\nfunction tryGetProcessorForDelimiter(element: Node, context: DomToModelContext) {\n return getDelimiterFromElement(element) ? context.elementProcessors.delimiter : null;\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createEntity } from '../../modelApi/creators/createEntity';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { getEntityFromElement } from 'roosterjs-editor-dom';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * Content Model Element Processor for entity\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const entityProcessor: ElementProcessor = (group, element, context) => {\n const entity = getEntityFromElement(element);\n\n // In Content Model we also treat read only element as an entity since we cannot edit it\n const { id, type, isReadonly } = entity || { isReadonly: true };\n const isBlockEntity = isBlockElement(element, context);\n\n stackFormat(\n context,\n { segment: isBlockEntity ? 'empty' : undefined, paragraph: 'empty' },\n () => {\n const entityModel = createEntity(element, isReadonly, type, context.segmentFormat, id);\n\n // TODO: Need to handle selection for editable entity\n if (context.isInSelection) {\n entityModel.isSelected = true;\n }\n\n if (isBlockEntity) {\n addBlock(group, entityModel);\n } else {\n addSegment(group, entityModel);\n }\n }\n );\n};\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\nconst FontSizes = ['10px', '13px', '16px', '18px', '24px', '32px', '48px'];\n\nfunction getFontSize(size: string | null) {\n const intSize = parseInt(size || '');\n\n if (Number.isNaN(intSize)) {\n return undefined;\n } else if (intSize < 1) {\n return FontSizes[0];\n } else if (intSize > FontSizes.length) {\n return FontSizes[FontSizes.length - 1];\n } else {\n return FontSizes[intSize - 1];\n }\n}\n\n/**\n * @internal\n */\nexport const fontProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n {\n segment: isBlockElement(element, context) ? 'shallowCloneForBlock' : 'shallowClone',\n },\n () => {\n const fontFamily = element.getAttribute('face');\n const fontSize = getFontSize(element.getAttribute('size'));\n const textColor = element.getAttribute('color');\n const format = context.segmentFormat;\n\n if (fontFamily) {\n format.fontFamily = fontFamily;\n }\n\n if (fontSize) {\n format.fontSize = fontSize;\n }\n\n if (textColor) {\n format.textColor = textColor;\n }\n\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n context.elementProcessors.child(group, element, context);\n }\n );\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createFormatContainer } from '../../modelApi/creators/createFormatContainer';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { getDefaultStyle } from '../utils/getDefaultStyle';\nimport { parseFormat } from '../utils/parseFormat';\nimport { setParagraphNotImplicit } from '../../modelApi/block/setParagraphNotImplicit';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n ContentModelParagraph,\n ElementProcessor,\n MarginFormat,\n PaddingFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const ContextStyles: (keyof (MarginFormat & PaddingFormat))[] = [\n 'marginLeft',\n 'marginRight',\n 'paddingLeft',\n 'paddingRight',\n];\n\n/**\n * @internal\n */\nexport const formatContainerProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n stackFormat(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, () => {\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n\n const format: ContentModelFormatContainerFormat = {\n ...context.blockFormat,\n };\n\n parseFormat(element, context.formatParsers.container, format, context);\n\n const tagName =\n getDefaultStyle(element, context).display == 'block'\n ? element.tagName.toLowerCase()\n : 'div';\n const formatContainer = createFormatContainer(tagName, format);\n\n // It is possible to inherit margin left/right styles from parent DIV or other containers,\n // since we are going into a deeper level of format container now,\n // the container will render these styles so no need to keep them in context format\n ContextStyles.forEach(style => {\n delete context.blockFormat[style];\n });\n\n context.elementProcessors.child(formatContainer, element, context);\n\n if (element.style.fontSize && parseInt(element.style.fontSize) == 0) {\n formatContainer.zeroFontSize = true;\n }\n\n if (shouldFallbackToParagraph(formatContainer)) {\n // For DIV container that only has one paragraph child, container style can be merged into paragraph\n // and no need to have this container\n const paragraph = formatContainer.blocks[0] as ContentModelParagraph;\n\n if (formatContainer.zeroFontSize) {\n paragraph.segmentFormat = Object.assign({}, paragraph.segmentFormat, {\n fontSize: '0',\n });\n }\n\n Object.assign(paragraph.format, formatContainer.format);\n setParagraphNotImplicit(paragraph);\n addBlock(group, paragraph);\n } else {\n addBlock(group, formatContainer);\n }\n });\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n\nfunction shouldFallbackToParagraph(formatContainer: ContentModelFormatContainer) {\n const firstChild = formatContainer.blocks[0];\n\n return (\n formatContainer.tagName == 'div' &&\n formatContainer.blocks.length == 1 &&\n firstChild.blockType == 'Paragraph' &&\n firstChild.isImplicit\n );\n}\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { createGeneralBlock } from '../../modelApi/creators/createGeneralBlock';\nimport { createGeneralSegment } from '../../modelApi/creators/createGeneralSegment';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { stackFormat } from '../utils/stackFormat';\n\nconst generalBlockProcessor: ElementProcessor = (group, element, context) => {\n const block = createGeneralBlock(element);\n const isSelectedBefore = context.isInSelection;\n\n stackFormat(\n context,\n {\n segment: 'empty',\n paragraph: 'empty',\n link: 'empty',\n },\n () => {\n addBlock(group, block);\n\n context.elementProcessors.child(block, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n block.isSelected = true;\n }\n};\n\nconst generalSegmentProcessor: ElementProcessor = (group, element, context) => {\n const segment = createGeneralSegment(element, context.segmentFormat);\n const isSelectedBefore = context.isInSelection;\n\n addDecorators(segment, context);\n addSegment(group, segment);\n\n stackFormat(\n context,\n {\n segment:\n 'empty' /*clearFormat, General segment will include all properties and styles when generate back to HTML, so no need to carry over existing segment format*/,\n },\n () => {\n context.elementProcessors.child(segment, element, context);\n }\n );\n\n if (isSelectedBefore && context.isInSelection) {\n segment.isSelected = true;\n }\n};\n\n/**\n * @internal\n */\nexport const generalProcessor: ElementProcessor = (group, element, context) => {\n const processor = isBlockElement(element, context)\n ? generalBlockProcessor\n : generalSegmentProcessor;\n\n processor(group, element, context);\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { ContentModelSegmentFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { createParagraphDecorator } from '../../modelApi/creators/createParagraphDecorator';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const headingProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n { segment: 'shallowCloneForBlock', paragraph: 'shallowClone', blockDecorator: 'empty' },\n () => {\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n\n // These formats are already declared on heading element, no need to keep them in context.\n // And we should not duplicate them in context, either. Because when we want to turn off heading,\n // inner text should not keep those text format from heading.\n getObjectKeys(segmentFormat).forEach(key => {\n delete context.segmentFormat[key];\n });\n\n context.blockDecorator = createParagraphDecorator(element.tagName, segmentFormat);\n\n blockProcessor(group, element, context);\n }\n );\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createDivider } from '../../modelApi/creators/createDivider';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const hrProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n {\n paragraph: 'shallowClone',\n },\n () => {\n parseFormat(element, context.formatParsers.divider, context.blockFormat, context);\n\n const hr = createDivider('hr', context.blockFormat);\n\n if (element.size) {\n hr.size = element.size;\n }\n\n if (context.isInSelection) {\n hr.isSelected = true;\n }\n\n addBlock(group, hr);\n }\n );\n};\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { ContentModelImageFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createImage } from '../../modelApi/creators/createImage';\nimport { parseFormat } from '../utils/parseFormat';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const imageProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(context, { segment: 'shallowClone' }, () => {\n const imageFormat: ContentModelImageFormat = context.segmentFormat;\n\n parseFormat(element, context.formatParsers.segment, imageFormat, context);\n parseFormat(element, context.formatParsers.image, imageFormat, context);\n parseFormat(element, context.formatParsers.block, context.blockFormat, context);\n\n const image = createImage(element.src, imageFormat);\n const alt = element.alt;\n const title = element.title;\n\n parseFormat(element, context.formatParsers.dataset, image.dataset, context);\n addDecorators(image, context);\n\n if (alt) {\n image.alt = alt;\n }\n if (title) {\n image.title = title;\n }\n if (context.isInSelection) {\n image.isSelected = true;\n }\n if (\n context.rangeEx?.type == SelectionRangeTypes.ImageSelection &&\n context.rangeEx.image == element\n ) {\n image.isSelectedAsImageSelection = true;\n image.isSelected = true;\n }\n\n addSegment(group, image);\n });\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { formatContainerProcessor } from './formatContainerProcessor';\nimport { getDefaultStyle } from '../utils/getDefaultStyle';\nimport { isBlockElement } from '../utils/isBlockElement';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelSegmentFormat,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\nconst FormatContainerTriggerStyles: (keyof CSSStyleDeclaration)[] = [\n 'marginBottom',\n 'marginTop',\n 'paddingBottom',\n 'paddingTop',\n 'paddingLeft',\n 'paddingRight',\n 'borderTopWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n];\nconst ByPassFormatContainerTags = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'A'];\nconst SegmentDecoratorTags = ['A', 'CODE'];\n\n/**\n * @internal\n */\nexport const knownElementProcessor: ElementProcessor = (group, element, context) => {\n const isBlock = isBlockElement(element, context);\n\n if (\n (isBlock || element.style.display == 'inline-block') && // For inline-block here, we will also check if it should be represented as Format Container\n shouldUseFormatContainer(element, context)\n ) {\n formatContainerProcessor(group, element, context);\n } else if (isBlock) {\n const decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;\n const isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;\n\n stackFormat(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, () => {\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n Object.assign(context.segmentFormat, segmentFormat);\n\n blockProcessor(group, element, context, segmentFormat);\n });\n\n if (isBlock && !isSegmentDecorator) {\n addBlock(\n group,\n createParagraph(\n true /*isImplicit*/,\n context.blockFormat,\n undefined /*segmentFormat*/,\n decorator\n )\n );\n }\n } else {\n stackFormat(\n context,\n {\n segment: 'shallowClone',\n paragraph: 'shallowClone',\n link: 'cloneFormat',\n },\n () => {\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n if (context.link.format.href && element.tagName != 'A') {\n parseFormat(\n element,\n context.formatParsers.segmentUnderLink,\n context.link.format,\n context\n );\n }\n\n context.elementProcessors.child(group, element, context);\n }\n );\n }\n};\n\nfunction shouldUseFormatContainer(element: HTMLElement, context: DomToModelContext) {\n // For those tags that we know we should not use format container, just return false\n if (ByPassFormatContainerTags.indexOf(element.tagName) >= 0) {\n return false;\n }\n\n const style = element.style;\n const defaultStyle = getDefaultStyle(element, context);\n\n const bgcolor = style.getPropertyValue('background-color');\n\n // For block element with background, we need to use format container\n if (bgcolor && bgcolor != 'transparent') {\n return true;\n }\n\n // For block element with positive value of border width or top/bottom margin/padding,\n // we need to use format container\n if (\n FormatContainerTriggerStyles.some(\n key => parseInt((style[key] as string) || (defaultStyle[key] as string) || '') > 0\n )\n ) {\n return true;\n }\n\n // For margin left/right with value \"auto\", we need to use format container\n if (style.marginLeft == 'auto' || style.marginRight == 'auto') {\n return true;\n }\n\n // For element with \"align\" attribute, we need to use format container\n if (element.getAttribute('align')) {\n return true;\n }\n\n return false;\n}\n","import { ElementProcessor } from 'roosterjs-content-model-types';\nimport { knownElementProcessor } from './knownElementProcessor';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const linkProcessor: ElementProcessor = (group, element, context) => {\n if (element.hasAttribute('href')) {\n stackFormat(context, { link: 'linkDefault' }, () => {\n parseFormat(element, context.formatParsers.link, context.link.format, context);\n parseFormat(element, context.formatParsers.dataset, context.link.dataset, context);\n\n knownElementProcessor(group, element, context);\n });\n } else {\n // A tag without href, can be treated as normal SPAN tag\n knownElementProcessor(group, element, context);\n }\n};\n","import { createListItem } from '../../modelApi/creators/createListItem';\nimport { ElementProcessor } from 'roosterjs-content-model-types';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const listItemProcessor: ElementProcessor = (group, element, context) => {\n const { listFormat } = context;\n\n if (listFormat.listParent && listFormat.levels.length > 0) {\n stackFormat(\n context,\n {\n segment: 'shallowCloneForBlock',\n },\n () => {\n parseFormat(\n element,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\n parseFormat(\n element,\n context.formatParsers.listItemElement,\n listItem.format,\n context\n );\n\n listFormat.listParent!.blocks.push(listItem);\n\n parseFormat(\n element,\n context.formatParsers.listItem,\n listItem.levels[listItem.levels.length - 1].format,\n context\n );\n\n context.elementProcessors.child(listItem, element, context);\n\n const firstChild = listItem.blocks[0];\n\n if (\n listItem.blocks.length == 1 &&\n firstChild.blockType == 'Paragraph' &&\n firstChild.isImplicit\n ) {\n Object.assign(listItem.format, firstChild.format);\n firstChild.format = {};\n }\n }\n );\n } else {\n const currentBlocks = listFormat.listParent?.blocks;\n const lastItem = currentBlocks?.[currentBlocks?.length - 1];\n\n context.elementProcessors['*'](\n lastItem?.blockType == 'BlockGroup' ? lastItem : group,\n element,\n context\n );\n }\n};\n","import { ContentModelListLevel, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createListLevel } from '../../modelApi/creators/createListLevel';\nimport { listLevelMetadataFormatHandler } from '../../formatHandlers/list/listLevelMetadataFormatHandler';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\n\n/**\n * @internal\n */\nexport const listProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n stackFormat(\n context,\n {\n segment: 'shallowCloneForBlock',\n paragraph: 'shallowCloneForGroup',\n },\n () => {\n const level: ContentModelListLevel = createListLevel(\n element.tagName as 'OL' | 'UL',\n context.blockFormat\n );\n const { listFormat } = context;\n\n parseFormat(element, context.formatParsers.dataset, level.dataset, context);\n parseFormat(element, context.formatParsers.listLevel, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n metadata = metadata || {};\n parseFormat(element, [listLevelMetadataFormatHandler.parse], metadata, context);\n\n if (\n typeof metadata.orderedStyleType == 'undefined' &&\n typeof metadata.unorderedStyleType == 'undefined'\n ) {\n metadata = null;\n }\n\n return metadata;\n });\n\n parseFormat(element, context.formatParsers.segment, context.segmentFormat, context);\n\n const originalListParent = listFormat.listParent;\n\n listFormat.listParent = listFormat.listParent || group;\n listFormat.levels.push(level);\n\n try {\n context.elementProcessors.child(group, element, context);\n } finally {\n listFormat.levels.pop();\n listFormat.listParent = originalListParent;\n }\n }\n );\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { blockProcessor } from './blockProcessor';\nimport { ContentModelSegmentFormat, ElementProcessor } from 'roosterjs-content-model-types';\nimport { createParagraph } from '../../modelApi/creators/createParagraph';\nimport { createParagraphDecorator } from '../../modelApi/creators/createParagraphDecorator';\nimport { parseFormat } from '../utils/parseFormat';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const pProcessor: ElementProcessor = (group, element, context) => {\n stackFormat(\n context,\n { blockDecorator: 'empty', segment: 'shallowCloneForBlock', paragraph: 'shallowClone' },\n () => {\n context.blockDecorator = createParagraphDecorator(element.tagName);\n\n const segmentFormat: ContentModelSegmentFormat = {};\n\n parseFormat(element, context.formatParsers.segmentOnBlock, segmentFormat, context);\n Object.assign(context.segmentFormat, segmentFormat);\n\n blockProcessor(group, element, context, segmentFormat);\n }\n );\n\n addBlock(group, createParagraph(true /*isImplicit*/, context.blockFormat));\n};\n","import { addBlock } from '../../modelApi/common/addBlock';\nimport { createTable } from '../../modelApi/creators/createTable';\nimport { createTableCell } from '../../modelApi/creators/createTableCell';\nimport { getBoundingClientRect } from '../utils/getBoundingClientRect';\nimport { parseFormat } from '../utils/parseFormat';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelTableCellFormat,\n DatasetFormat,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * Content Model Element Processor for table\n *\n * For Table with merged/splitted cells, HTML uses colSpan and rowSpan attributes to specify how it should be rendered.\n * To make it easier to edit a table, we will use a different way to describe table.\n *\n * 1. For a m * n table (m rows, n columns), we always create a m * n array for the cells.\n * 2. For a regular table cell, it is mapped to one item of this array\n * 3. For a merged/splitted table cell, it will has colSpan/rowSpan value. We also created TableCell model for those spanned\n * cells, and use \"spanLeft\" and \"spanAbove\" to mark its state\n * 4. When edit table, we always edit on this mapped m * n array because it always has an item for each cell\n * 5. When write back to DOM, we create TD/TH elements for those non-spanned cells, and mark its colSpan/rowSpan value according\n * its neighbour cell's spanLeft/spanAbove attribute\n * @param group The parent block group\n * @param parent Parent DOM node to process\n * @param context DOM to Content Model context\n */\nexport const tableProcessor: ElementProcessor = (\n group,\n tableElement,\n context\n) => {\n stackFormat(\n context,\n { segment: 'shallowCloneForBlock', paragraph: 'shallowCloneForGroup' },\n () => {\n parseFormat(tableElement, context.formatParsers.block, context.blockFormat, context);\n\n const table = createTable(tableElement.rows.length, context.blockFormat);\n const tableSelection =\n context.rangeEx?.type == SelectionRangeTypes.TableSelection\n ? context.rangeEx\n : null;\n const selectedTable = tableSelection?.table;\n const coordinates = tableSelection?.coordinates;\n const hasTableSelection =\n selectedTable == tableElement &&\n !!coordinates?.firstCell &&\n !!coordinates?.lastCell;\n\n if (context.allowCacheElement) {\n table.cachedElement = tableElement;\n }\n\n parseFormat(tableElement, context.formatParsers.table, table.format, context);\n parseFormat(tableElement, context.formatParsers.tableBorder, table.format, context);\n parseFormat(\n tableElement,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n parseFormat(tableElement, context.formatParsers.dataset, table.dataset, context);\n addBlock(group, table);\n\n const columnPositions: number[] = [0];\n const rowPositions: number[] = [0];\n const zoomScale = context.zoomScale || 1;\n\n for (let row = 0; row < tableElement.rows.length; row++) {\n const tr = tableElement.rows[row];\n const tableRow = table.rows[row];\n\n const tbody = tr.parentNode;\n\n if (safeInstanceOf(tbody, 'HTMLTableSectionElement')) {\n parseFormat(tbody, context.formatParsers.tableRow, tableRow.format, context);\n } else if (context.allowCacheElement) {\n tableRow.cachedElement = tr;\n }\n\n parseFormat(tr, context.formatParsers.tableRow, tableRow.format, context);\n\n stackFormat(context, { paragraph: 'shallowClone', segment: 'shallowClone' }, () => {\n const parent = tr.parentElement;\n const parentTag = parent?.tagName;\n\n if (\n parent &&\n (parentTag == 'TBODY' || parentTag == 'THEAD' || parentTag == 'TFOOT')\n ) {\n // If there is TBODY around TR, retrieve format from TBODY first, in case some format are declared there\n parseFormat(\n parent,\n context.formatParsers.block,\n context.blockFormat,\n context\n );\n parseFormat(\n parent,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n }\n\n parseFormat(tr, context.formatParsers.block, context.blockFormat, context);\n parseFormat(\n tr,\n context.formatParsers.segmentOnBlock,\n context.segmentFormat,\n context\n );\n\n for (\n let sourceCol = 0, targetCol = 0;\n sourceCol < tr.cells.length;\n sourceCol++\n ) {\n for (; tableRow.cells[targetCol]; targetCol++) {}\n\n const td = tr.cells[sourceCol];\n const hasSelectionBeforeCell = context.isInSelection;\n const colEnd = targetCol + td.colSpan;\n const rowEnd = row + td.rowSpan;\n const needCalcWidth = columnPositions[colEnd] === undefined;\n const needCalcHeight = rowPositions[rowEnd] === undefined;\n\n if (needCalcWidth || needCalcHeight) {\n const rect = getBoundingClientRect(td);\n\n if (rect.width > 0 || rect.height > 0) {\n if (needCalcWidth) {\n columnPositions[colEnd] =\n columnPositions[targetCol] + rect.width / zoomScale;\n }\n\n if (needCalcHeight) {\n rowPositions[rowEnd] =\n rowPositions[row] + rect.height / zoomScale;\n }\n }\n }\n\n stackFormat(\n context,\n { paragraph: 'shallowClone', segment: 'shallowClone' },\n () => {\n parseFormat(\n td,\n context.formatParsers.block,\n context.blockFormat,\n context\n );\n parseFormat(\n td,\n context.formatParsers.segmentOnTableCell,\n context.segmentFormat,\n context\n );\n\n const cellFormat: ContentModelTableCellFormat = {\n ...context.blockFormat,\n };\n const dataset: DatasetFormat = {};\n\n parseFormat(\n td,\n context.formatParsers.tableCell,\n cellFormat,\n context\n );\n parseFormat(\n td,\n context.formatParsers.tableBorder,\n cellFormat,\n context\n );\n parseFormat(td, context.formatParsers.dataset, dataset, context);\n\n for (\n let colSpan = 1;\n colSpan <= td.colSpan;\n colSpan++, targetCol++\n ) {\n for (let rowSpan = 1; rowSpan <= td.rowSpan; rowSpan++) {\n const hasTd = colSpan == 1 && rowSpan == 1;\n const cell = createTableCell(\n colSpan > 1,\n rowSpan > 1,\n td.tagName == 'TH',\n cellFormat\n );\n\n cell.dataset = { ...dataset };\n\n const spannedRow = table.rows[row + rowSpan - 1];\n\n if (spannedRow) {\n spannedRow.cells[targetCol] = cell;\n }\n\n if (hasTd) {\n if (context.allowCacheElement) {\n cell.cachedElement = td;\n }\n\n const { listParent, levels } = context.listFormat;\n\n context.listFormat.listParent = undefined;\n context.listFormat.levels = [];\n\n try {\n context.elementProcessors.child(cell, td, context);\n } finally {\n context.listFormat.listParent = listParent;\n context.listFormat.levels = levels;\n }\n }\n\n const hasSelectionAfterCell = context.isInSelection;\n\n if (\n (hasSelectionBeforeCell && hasSelectionAfterCell) ||\n (hasTableSelection &&\n row >= coordinates.firstCell.y &&\n row <= coordinates.lastCell.y &&\n targetCol >= coordinates.firstCell.x &&\n targetCol <= coordinates.lastCell.x)\n ) {\n cell.isSelected = true;\n }\n }\n }\n }\n );\n }\n });\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n if (!tableRow.cells[col]) {\n tableRow.cells[col] = createTableCell(\n false,\n false,\n false,\n context.blockFormat\n );\n }\n }\n }\n\n table.widths = calcSizes(columnPositions);\n\n const heights = calcSizes(rowPositions);\n\n table.rows.forEach((row, i) => {\n if (heights[i] > 0) {\n row.height = heights[i];\n }\n });\n }\n );\n};\n\nfunction calcSizes(positions: number[]): number[] {\n let result: number[] = [];\n let lastPos = positions[positions.length - 1];\n\n for (let i = positions.length - 2; i >= 0; i--) {\n if (positions[i] === undefined) {\n result[i] = 0;\n } else {\n result[i] = lastPos - positions[i];\n lastPos = positions[i];\n }\n }\n\n return result;\n}\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { addSelectionMarker } from '../utils/addSelectionMarker';\nimport { areSameFormats } from '../utils/areSameFormats';\nimport { createText } from '../../modelApi/creators/createText';\nimport { getRegularSelectionOffsets } from '../utils/getRegularSelectionOffsets';\nimport { hasSpacesOnly } from '../../modelApi/common/hasSpacesOnly';\nimport {\n ContentModelBlockGroup,\n DomToModelContext,\n ElementProcessor,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n textNode: Text,\n context: DomToModelContext\n) => {\n let txt = textNode.nodeValue || '';\n let [txtStartOffset, txtEndOffset] = getRegularSelectionOffsets(context, textNode);\n\n if (txtStartOffset >= 0) {\n addTextSegment(group, txt.substring(0, txtStartOffset), context);\n context.isInSelection = true;\n\n addSelectionMarker(group, context);\n\n txt = txt.substring(txtStartOffset);\n txtEndOffset -= txtStartOffset;\n }\n\n if (txtEndOffset >= 0) {\n addTextSegment(group, txt.substring(0, txtEndOffset), context);\n\n if (context.rangeEx && !context.rangeEx.areAllCollapsed) {\n addSelectionMarker(group, context);\n }\n\n context.isInSelection = false;\n txt = txt.substring(txtEndOffset);\n }\n\n addTextSegment(group, txt, context);\n};\n\n// When we see these values of white-space style, need to preserve spaces and line-breaks and let browser handle it for us.\nconst WhiteSpaceValuesNeedToHandle = ['pre', 'pre-wrap', 'pre-line', 'break-spaces'];\n\nfunction addTextSegment(group: ContentModelBlockGroup, text: string, context: DomToModelContext) {\n if (text) {\n const lastBlock = group.blocks[group.blocks.length - 1];\n const paragraph = lastBlock?.blockType == 'Paragraph' ? lastBlock : null;\n const lastSegment = paragraph?.segments[paragraph.segments.length - 1];\n\n if (\n lastSegment?.segmentType == 'Text' &&\n !!lastSegment.isSelected == !!context.isInSelection &&\n areSameFormats(lastSegment.format, context.segmentFormat) &&\n areSameFormats(lastSegment.link || {}, context.link.format || {}) &&\n areSameFormats(lastSegment.code || {}, context.code.format || {})\n ) {\n lastSegment.text += text;\n } else if (\n !hasSpacesOnly(text) ||\n paragraph?.segments.length! > 0 ||\n WhiteSpaceValuesNeedToHandle.indexOf(paragraph?.format.whiteSpace || '') >= 0\n ) {\n const textModel = createText(text, context.segmentFormat);\n\n if (context.isInSelection) {\n textModel.isSelected = true;\n }\n\n addDecorators(textModel, context);\n\n addSegment(group, textModel, context.blockFormat);\n }\n }\n}\n","import { addDecorators } from '../../modelApi/common/addDecorators';\nimport { addSegment } from '../../modelApi/common/addSegment';\nimport { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';\nimport { createSelectionMarker } from '../../modelApi/creators/createSelectionMarker';\n\n/**\n * @internal\n */\nexport function addSelectionMarker(group: ContentModelBlockGroup, context: DomToModelContext) {\n const marker = createSelectionMarker(context.segmentFormat);\n\n addDecorators(marker, context);\n\n addSegment(group, marker, context.blockFormat);\n}\n","import { ContentModelFormatBase } from 'roosterjs-content-model-types';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\n/**\n * Check if the two given formats object are equal. This is a check to value but not to reference\n * @param f1 The first format object to check\n * @param f2 The second format object to check\n */\nexport function areSameFormats(f1: T, f2: T) {\n if (f1 == f2) {\n return true;\n } else {\n const keys1 = getObjectKeys(f1);\n const keys2 = getObjectKeys(f2);\n\n return keys1.length == keys2.length && keys1.every(key => f1[key] == f2[key]);\n }\n}\n","/**\n * @internal\n */\nexport function getBoundingClientRect(element: Element): DOMRect {\n return element.getBoundingClientRect();\n}\n","import { DefaultStyleMap, DomToModelContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Get default CSS style of given element\n * @param element The element to get default style from\n * @param context The context of DOM to Content Model conversion\n * @returns A valid CSS style object\n */\nexport function getDefaultStyle(\n element: HTMLElement,\n context: DomToModelContext\n): Partial {\n let tag = element.tagName.toLowerCase() as keyof DefaultStyleMap;\n\n return context.defaultStyles[tag] || {};\n}\n","import { DomToModelContext } from 'roosterjs-content-model-types';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * Get offset numbers of a regular (range based) selection.\n * If the selection start/end position is not in the given node, it will return -1 for the related value\n * @param context DOM to Content Model context used for retrieve the selection\n * @param currentContainer The container node to check\n * @returns a tuple of start and end offsets. -1 means selection is not directly under the given node\n */\nexport function getRegularSelectionOffsets(\n context: DomToModelContext,\n currentContainer: Node\n): [number, number] {\n const range =\n context.rangeEx?.type == SelectionRangeTypes.Normal ? context.rangeEx.ranges[0] : null;\n\n let startOffset = range?.startContainer == currentContainer ? range.startOffset : -1;\n let endOffset = range?.endContainer == currentContainer ? range.endOffset! : -1;\n\n return [startOffset, endOffset];\n}\n","import { DomToModelContext } from 'roosterjs-content-model-types';\nimport { getDefaultStyle } from './getDefaultStyle';\n\nconst BLOCK_DISPLAY_STYLES = ['block', 'list-item', 'table', 'table-cell', 'flex'];\n\n/**\n * @internal\n * Check if the given element will be layout as a block\n * @param element The element to check\n * @param context The context of DOM to Content Model conversion\n */\nexport function isBlockElement(element: HTMLElement, context: DomToModelContext): boolean {\n const display = element.style.display || getDefaultStyle(element, context).display || '';\n\n return BLOCK_DISPLAY_STYLES.indexOf(display) >= 0;\n}\n","import { getDefaultStyle } from './getDefaultStyle';\nimport {\n ContentModelFormatBase,\n DomToModelContext,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\n/**\n * Parse formats of the given HTML element using specified format parsers\n * @param element The element to parse format from\n * @param parsers The parses we are using to parse format\n * @param format The format object to hold result format\n * @param context DOM to Content Model context\n */\nexport function parseFormat(\n element: HTMLElement,\n parsers: (FormatParser | null)[],\n format: T,\n context: DomToModelContext\n) {\n const defaultStyle = getDefaultStyle(element, context);\n\n parsers.forEach(parser => {\n parser?.(format, element, context, defaultStyle);\n });\n}\n","import { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n ContentModelBlockFormat,\n ContentModelCode,\n ContentModelFormatBase,\n ContentModelLink,\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n DomToModelContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface StackFormatOptions {\n segment?: 'shallowClone' | 'shallowCloneForBlock' | 'empty';\n paragraph?: 'shallowClone' | 'shallowCloneForGroup' | 'empty';\n blockDecorator?: 'empty';\n link?: 'linkDefault' | 'cloneFormat' | 'empty';\n code?: 'codeDefault' | 'empty';\n}\n\n// Some styles, such as background color, won't be inherited by block element if it was originally\n// declared from an inline element. So we need to skip them.\n// e.g.\n// \n// line 1 <---------------------------- in red here\n//
          line 2
          <---------------------- not in red here\n//
          \nconst SkippedStylesForBlock: (keyof ContentModelSegmentFormat)[] = ['backgroundColor'];\nconst SkippedStylesForTable: (keyof ContentModelBlockFormat)[] = [\n 'marginLeft',\n 'marginRight',\n 'paddingLeft',\n 'paddingRight',\n];\n\n/**\n * @internal\n */\nexport function stackFormat(\n context: DomToModelContext,\n options: StackFormatOptions,\n callback: () => void\n) {\n const {\n segmentFormat,\n blockFormat,\n link: linkFormat,\n code: codeFormat,\n blockDecorator: decoratorFormat,\n } = context;\n const { segment, paragraph, link, code, blockDecorator } = options;\n\n try {\n context.segmentFormat = stackFormatInternal(segmentFormat, segment);\n context.blockFormat = stackFormatInternal(blockFormat, paragraph);\n context.link = stackLinkInternal(linkFormat, link);\n context.code = stackCodeInternal(codeFormat, code);\n context.blockDecorator = stackDecoratorInternal(decoratorFormat, blockDecorator);\n\n callback();\n } finally {\n context.segmentFormat = segmentFormat;\n context.blockFormat = blockFormat;\n context.link = linkFormat;\n context.code = codeFormat;\n context.blockDecorator = decoratorFormat;\n }\n}\n\nfunction stackLinkInternal(\n linkFormat: ContentModelLink,\n link?: 'linkDefault' | 'cloneFormat' | 'empty'\n) {\n switch (link) {\n case 'linkDefault':\n return {\n format: {\n underline: true,\n },\n dataset: {},\n };\n\n case 'empty':\n return {\n format: {},\n dataset: {},\n };\n\n case 'cloneFormat':\n default:\n return {\n dataset: linkFormat.dataset,\n format: { ...linkFormat.format },\n };\n }\n}\n\nfunction stackCodeInternal(codeFormat: ContentModelCode, code?: 'codeDefault' | 'empty') {\n switch (code) {\n case 'codeDefault':\n return {\n format: {\n fontFamily: 'monospace',\n },\n };\n case 'empty':\n return {\n format: {},\n };\n default:\n return codeFormat;\n }\n}\n\nfunction stackDecoratorInternal(\n format: ContentModelParagraphDecorator,\n decorator?: 'decoratorDefault' | 'empty'\n) {\n switch (decorator) {\n case 'empty':\n return {\n format: {},\n tagName: '',\n };\n default:\n return format;\n }\n}\n\nfunction stackFormatInternal(\n format: T,\n processType?: 'shallowClone' | 'shallowCloneForBlock' | 'shallowCloneForGroup' | 'empty'\n): T | {} {\n switch (processType) {\n case 'empty':\n return {};\n\n case undefined:\n return format;\n\n default:\n const result = { ...format };\n\n getObjectKeys(format).forEach(key => {\n if (\n (processType == 'shallowCloneForBlock' &&\n SkippedStylesForBlock.indexOf(key as keyof ContentModelSegmentFormat) >=\n 0) ||\n (processType == 'shallowCloneForGroup' &&\n SkippedStylesForTable.indexOf(key as keyof ContentModelBlockFormat) >= 0)\n ) {\n delete result[key];\n }\n });\n\n return result;\n }\n}\n","import { NodeType } from 'roosterjs-editor-types';\n\n/**\n * A type map from node type number to its type declaration. This is used by utility function isNodeOfType()\n */\nexport interface NodeTypeMap {\n /**\n * Attribute node\n */\n [NodeType.Attribute]: Attr;\n\n /**\n * Comment node\n */\n [NodeType.Comment]: Comment;\n\n /**\n * DocumentFragment node\n */\n [NodeType.DocumentFragment]: DocumentFragment;\n\n /**\n * Document node\n */\n [NodeType.Document]: Document;\n\n /**\n * DocumentType node\n */\n [NodeType.DocumentType]: DocumentType;\n\n /**\n * HTMLElement node\n */\n [NodeType.Element]: HTMLElement;\n /**\n * ProcessingInstruction node\n */\n [NodeType.ProcessingInstruction]: ProcessingInstruction;\n\n /**\n * Text node\n */\n [NodeType.Text]: Text;\n}\n\n/**\n * Type checker for Node. Return true if it of the specified node type\n * @param node The node to check\n * @param expectedType The type to check\n */\nexport function isNodeOfType(\n node: Node | null | undefined,\n expectedType: T\n): node is NodeTypeMap[T] {\n return !!node && node.nodeType == expectedType;\n}\n","import { BulletListType, NumberingListType } from 'roosterjs-editor-types';\nimport { ContentModelWithDataset, ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { createNumberDefinition, createObjectDefinition } from 'roosterjs-editor-dom';\nimport { updateMetadata } from './updateMetadata';\n\nconst ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update list metadata with a callback\n * @param list The list Content Model (metadata holder)\n * @param callback The callback function used for updating metadata\n */\nexport function updateListMetadata(\n list: ContentModelWithDataset,\n callback?: (format: ListMetadataFormat | null) => ListMetadataFormat | null\n): ListMetadataFormat | null {\n return updateMetadata(list, callback, ListStyleDefinitionMetadata);\n}\n","import { ContentModelWithDataset } from 'roosterjs-content-model-types';\nimport { Definition } from 'roosterjs-editor-types';\nimport { validate } from 'roosterjs-editor-dom';\n\nconst EditingInfoDatasetName = 'editingInfo';\n\n/**\n * Update metadata of the given model\n * @param model The model to update metadata to\n * @param callback A callback function to update metadata\n * @param definition @optional Metadata definition used for verify the metadata object\n * @returns The metadata object if any, or null\n */\nexport function updateMetadata(\n model: ContentModelWithDataset,\n callback?: (metadata: T | null) => T | null,\n definition?: Definition\n): T | null {\n const metadataString = model.dataset[EditingInfoDatasetName];\n let obj: T | null = null;\n\n try {\n obj = JSON.parse(metadataString) as T;\n } catch {}\n\n if (definition && !validate(obj, definition)) {\n obj = null;\n }\n\n if (callback) {\n obj = callback(obj);\n\n if (!obj) {\n delete model.dataset[EditingInfoDatasetName];\n } else if (!definition || validate(obj, definition)) {\n model.dataset[EditingInfoDatasetName] = JSON.stringify(obj);\n }\n }\n\n return obj;\n}\n\n/**\n * Check if the given model has metadata\n * @param model The content model to check\n */\nexport function hasMetadata(model: ContentModelWithDataset | HTMLElement): boolean {\n return !!model.dataset[EditingInfoDatasetName];\n}\n","import { DirectionFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const directionFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const dir = element.style.direction || element.dir || defaultStyle.direction;\n\n if (dir) {\n format.direction = dir == 'rtl' ? 'rtl' : 'ltr';\n }\n },\n apply: (format, element) => {\n if (format.direction) {\n element.style.direction = format.direction;\n }\n },\n};\n","import { DisplayFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const displayFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const display = element.style.display;\n\n if (display) {\n format.display = display;\n }\n },\n apply: (format, element) => {\n if (format.display) {\n element.style.display = format.display;\n }\n },\n};\n","import { calcAlign, ResultMap } from '../utils/dir';\nimport { DirectionFormat, HtmlAlignFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport { directionFormatHandler } from './directionFormatHandler';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const htmlAlignFormatHandler: FormatHandler<\n DirectionFormat & HtmlAlignFormat & TextAlignFormat\n> = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n const htmlAlign = element.getAttribute('align');\n\n if (htmlAlign) {\n format.htmlAlign = calcAlign(htmlAlign, format.direction);\n delete format.textAlign;\n delete context.blockFormat.textAlign;\n }\n },\n apply: (format, element) => {\n const dir: 'ltr' | 'rtl' = format.direction == 'rtl' ? 'rtl' : 'ltr';\n\n if (format.htmlAlign) {\n element.setAttribute('align', ResultMap[format.htmlAlign][dir]);\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LineHeightFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const lineHeightFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const lineHeight = element.style.lineHeight || defaultStyle.lineHeight;\n\n if (lineHeight && lineHeight != 'inherit') {\n format.lineHeight = lineHeight;\n }\n },\n apply: (format, element) => {\n if (format.lineHeight) {\n element.style.lineHeight = format.lineHeight;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { MarginFormat } from 'roosterjs-content-model-types';\nimport { parseValueWithUnit } from '../utils/parseValueWithUnit';\n\nconst MarginKeys: (keyof MarginFormat & keyof CSSStyleDeclaration)[] = [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n];\n\n/**\n * @internal\n */\nexport const marginFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n MarginKeys.forEach(key => {\n const value = element.style[key] || defaultStyle[key];\n\n if (value) {\n switch (key) {\n case 'marginTop':\n case 'marginBottom':\n format[key] = value;\n break;\n\n case 'marginLeft':\n case 'marginRight':\n format[key] = format[key]\n ? parseValueWithUnit(format[key] || '', element) +\n parseValueWithUnit(value, element) +\n 'px'\n : value;\n break;\n }\n }\n });\n },\n apply: (format, element, context) => {\n MarginKeys.forEach(key => {\n const value = format[key];\n\n if (value != context.implicitFormat[key]) {\n element.style[key] = value || '0';\n }\n });\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { PaddingFormat } from 'roosterjs-content-model-types';\n\nconst PaddingKeys: (keyof PaddingFormat & keyof CSSStyleDeclaration)[] = [\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n];\n\n/**\n * @internal\n */\nexport const paddingFormatHandler: FormatHandler = {\n parse: (format, element) => {\n PaddingKeys.forEach(key => {\n const value = element.style[key];\n\n if (value) {\n format[key] = value;\n }\n });\n },\n apply: (format, element) => {\n PaddingKeys.forEach(key => {\n const value = format[key];\n if (value) {\n element.style[key] = value;\n }\n });\n },\n};\n","import { calcAlign, ResultMap } from '../utils/dir';\nimport { DirectionFormat, TextAlignFormat } from 'roosterjs-content-model-types';\nimport { directionFormatHandler } from './directionFormatHandler';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const textAlignFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n directionFormatHandler.parse(format, element, context, defaultStyle);\n\n let textAlign = element.style.textAlign || defaultStyle.textAlign;\n\n if (\n element.tagName == 'LI' &&\n element.parentElement?.style.display === 'flex' &&\n element.parentElement.style.flexDirection === 'column' &&\n element.style.alignSelf\n ) {\n // For LI element with flex style applied, we use its \"align-self\" style value instead since LI has a different implementation for align\n textAlign = element.style.alignSelf;\n }\n\n if (textAlign) {\n format.textAlign = calcAlign(textAlign, format.direction);\n }\n },\n apply: (format, element) => {\n const dir: 'ltr' | 'rtl' = format.direction == 'rtl' ? 'rtl' : 'ltr';\n\n if (format.textAlign) {\n const parent = element.parentElement;\n const parentTag = parent?.tagName;\n\n if (element.tagName == 'LI' && parent && (parentTag == 'OL' || parentTag == 'UL')) {\n element.style.alignSelf = format.textAlign;\n element.parentElement.style.flexDirection = 'column';\n element.parentElement.style.display = 'flex';\n } else {\n element.style.textAlign = ResultMap[format.textAlign][dir];\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { WhiteSpaceFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const whiteSpaceFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const whiteSpace = element.style.whiteSpace || defaultStyle.whiteSpace;\n\n if (whiteSpace) {\n format.whiteSpace = whiteSpace;\n }\n },\n apply: (format, element, context) => {\n const whiteSpace = context.implicitFormat.whiteSpace;\n if (format.whiteSpace != whiteSpace) {\n element.style.whiteSpace = format.whiteSpace || 'normal';\n }\n },\n};\n","import { BackgroundColorFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getColor, setColor } from '../utils/color';\n\n/**\n * @internal\n */\nexport const backgroundColorFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const backgroundColor =\n getColor(\n element,\n true /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n ) || defaultStyle.backgroundColor;\n\n if (backgroundColor) {\n format.backgroundColor = backgroundColor;\n }\n },\n apply: (format, element, context) => {\n if (format.backgroundColor) {\n setColor(\n element,\n format.backgroundColor,\n true /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n );\n }\n },\n};\n","import { BorderBoxFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const borderBoxFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style?.boxSizing == 'border-box') {\n format.useBorderBox = true;\n }\n },\n apply: (format, element) => {\n if (format.useBorderBox) {\n element.style.boxSizing = 'border-box';\n }\n },\n};\n","import { BorderFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * Keys of border items\n */\nexport const BorderKeys: (keyof BorderFormat & keyof CSSStyleDeclaration)[] = [\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'borderRadius',\n];\n\n/**\n * @internal\n */\nexport const borderFormatHandler: FormatHandler = {\n parse: (format, element) => {\n BorderKeys.forEach(key => {\n const value = element.style[key];\n\n if (value) {\n format[key] = value == 'none' ? '' : value;\n }\n });\n },\n apply: (format, element) => {\n BorderKeys.forEach(key => {\n const value = format[key];\n\n if (value) {\n element.style[key] = value;\n }\n });\n },\n};\n","import { BoxShadowFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const boxShadowFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style?.boxShadow) {\n format.boxShadow = element.style.boxShadow;\n }\n },\n apply: (format, element) => {\n if (format.boxShadow) {\n element.style.boxShadow = format.boxShadow;\n }\n },\n};\n","import { DatasetFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const datasetFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const dataset = element.dataset;\n\n getObjectKeys(dataset).forEach(key => {\n format[key] = dataset[key] || '';\n });\n },\n\n apply: (format, element) => {\n getObjectKeys(format).forEach(key => {\n element.dataset[key] = format[key];\n });\n },\n};\n","import { FloatFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const floatFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const float = element.style.float || element.getAttribute('align');\n\n if (float) {\n format.float = float;\n }\n },\n apply: (format, element) => {\n if (format.float) {\n element.style.float = format.float;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { IdFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const idFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.id) {\n format.id = element.id;\n }\n },\n apply: (format, element) => {\n if (format.id) {\n element.id = format.id;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { SizeFormat } from 'roosterjs-content-model-types';\n\nconst PercentageRegex = /[\\d\\.]+%/;\n\n/**\n * @internal\n */\nexport const sizeFormatHandler: FormatHandler = {\n parse: (format, element, context) => {\n const width = element.style.width || tryParseSize(element, 'width');\n const height = element.style.height || tryParseSize(element, 'height');\n const maxWidth = element.style.maxWidth;\n const maxHeight = element.style.maxHeight;\n const minWidth = element.style.minWidth;\n const minHeight = element.style.minHeight;\n\n if (width) {\n format.width = width;\n }\n if (height) {\n format.height = height;\n }\n if (maxWidth) {\n format.maxWidth = maxWidth;\n }\n if (maxHeight) {\n format.maxHeight = maxHeight;\n }\n if (minWidth) {\n format.minWidth = minWidth;\n }\n if (minHeight) {\n format.minHeight = minHeight;\n }\n },\n apply: (format, element) => {\n if (format.width) {\n element.style.width = format.width;\n }\n if (format.height) {\n element.style.height = format.height;\n }\n if (format.maxWidth) {\n element.style.maxWidth = format.maxWidth;\n }\n if (format.maxHeight) {\n element.style.maxHeight = format.maxHeight;\n }\n if (format.minWidth) {\n element.style.minWidth = format.minWidth;\n }\n if (format.minHeight) {\n element.style.minHeight = format.minHeight;\n }\n },\n};\n\nfunction tryParseSize(element: HTMLElement, attrName: 'width' | 'height'): string | undefined {\n const attrValue = element.getAttribute(attrName);\n const value = parseInt(attrValue || '');\n\n return attrValue && PercentageRegex.test(attrValue)\n ? attrValue\n : Number.isNaN(value)\n ? undefined\n : value + 'px';\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { VerticalAlignFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const verticalAlignFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const align = element.style.verticalAlign || element.getAttribute('valign');\n\n switch (align) {\n case 'baseline':\n case 'initial':\n case 'super':\n case 'sub':\n case 'text-top':\n case 'text-bottom':\n case 'top':\n format.verticalAlign = 'top';\n break;\n\n case 'bottom':\n format.verticalAlign = 'bottom';\n break;\n\n case 'middle':\n format.verticalAlign = 'middle';\n break;\n }\n },\n apply: (format, element) => {\n if (format.verticalAlign) {\n element.style.verticalAlign = format.verticalAlign;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { WordBreakFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const wordBreakFormatHandler: FormatHandler = {\n parse: (format, element, _, defaultStyle) => {\n const wordBreak = element.style.wordBreak || defaultStyle.wordBreak;\n\n if (wordBreak) {\n format.wordBreak = wordBreak;\n }\n },\n apply: (format, element) => {\n if (format.wordBreak) {\n element.style.wordBreak = format.wordBreak;\n }\n },\n};\n","import { backgroundColorFormatHandler } from './common/backgroundColorFormatHandler';\nimport { boldFormatHandler } from './segment/boldFormatHandler';\nimport { borderBoxFormatHandler } from './common/borderBoxFormatHandler';\nimport { borderFormatHandler } from './common/borderFormatHandler';\nimport { boxShadowFormatHandler } from './common/boxShadowFormatHandler';\nimport { datasetFormatHandler } from './common/datasetFormatHandler';\nimport { directionFormatHandler } from './block/directionFormatHandler';\nimport { displayFormatHandler } from './block/displayFormatHandler';\nimport { floatFormatHandler } from './common/floatFormatHandler';\nimport { fontFamilyFormatHandler } from './segment/fontFamilyFormatHandler';\nimport { fontSizeFormatHandler } from './segment/fontSizeFormatHandler';\nimport { FormatHandler } from './FormatHandler';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { htmlAlignFormatHandler } from './block/htmlAlignFormatHandler';\nimport { idFormatHandler } from './common/idFormatHandler';\nimport { italicFormatHandler } from './segment/italicFormatHandler';\nimport { letterSpacingFormatHandler } from './segment/letterSpacingFormatHandler';\nimport { lineHeightFormatHandler } from './block/lineHeightFormatHandler';\nimport { linkFormatHandler } from './segment/linkFormatHandler';\nimport { listItemThreadFormatHandler } from './list/listItemThreadFormatHandler';\nimport { listLevelThreadFormatHandler } from './list/listLevelThreadFormatHandler';\nimport { listStylePositionFormatHandler } from './list/listStylePositionFormatHandler';\nimport { marginFormatHandler } from './block/marginFormatHandler';\nimport { paddingFormatHandler } from './block/paddingFormatHandler';\nimport { sizeFormatHandler } from './common/sizeFormatHandler';\nimport { strikeFormatHandler } from './segment/strikeFormatHandler';\nimport { superOrSubScriptFormatHandler } from './segment/superOrSubScriptFormatHandler';\nimport { tableLayoutFormatHandler } from './table/tableLayoutFormatHandler';\nimport { tableSpacingFormatHandler } from './table/tableSpacingFormatHandler';\nimport { textAlignFormatHandler } from './block/textAlignFormatHandler';\nimport { textColorFormatHandler } from './segment/textColorFormatHandler';\nimport { textColorOnTableCellFormatHandler } from './table/textColorOnTableCellFormatHandler';\nimport { underlineFormatHandler } from './segment/underlineFormatHandler';\nimport { verticalAlignFormatHandler } from './common/verticalAlignFormatHandler';\nimport { whiteSpaceFormatHandler } from './block/whiteSpaceFormatHandler';\nimport { wordBreakFormatHandler } from './common/wordBreakFormatHandler';\nimport {\n ContentModelFormatMap,\n FormatHandlerTypeMap,\n FormatKey,\n FormatApplier,\n FormatAppliers,\n FormatAppliersPerCategory,\n FormatParser,\n FormatParsers,\n FormatParsersPerCategory,\n} from 'roosterjs-content-model-types';\n\ntype FormatHandlers = {\n [Key in FormatKey]: FormatHandler;\n};\n\nconst defaultFormatHandlerMap: FormatHandlers = {\n backgroundColor: backgroundColorFormatHandler,\n bold: boldFormatHandler,\n border: borderFormatHandler,\n borderBox: borderBoxFormatHandler,\n boxShadow: boxShadowFormatHandler,\n dataset: datasetFormatHandler,\n direction: directionFormatHandler,\n display: displayFormatHandler,\n float: floatFormatHandler,\n fontFamily: fontFamilyFormatHandler,\n fontSize: fontSizeFormatHandler,\n htmlAlign: htmlAlignFormatHandler,\n id: idFormatHandler,\n italic: italicFormatHandler,\n letterSpacing: letterSpacingFormatHandler,\n lineHeight: lineHeightFormatHandler,\n link: linkFormatHandler,\n listItemThread: listItemThreadFormatHandler,\n listLevelThread: listLevelThreadFormatHandler,\n listStylePosition: listStylePositionFormatHandler,\n margin: marginFormatHandler,\n padding: paddingFormatHandler,\n size: sizeFormatHandler,\n strike: strikeFormatHandler,\n superOrSubScript: superOrSubScriptFormatHandler,\n tableLayout: tableLayoutFormatHandler,\n tableSpacing: tableSpacingFormatHandler,\n textAlign: textAlignFormatHandler,\n textColor: textColorFormatHandler,\n textColorOnTableCell: textColorOnTableCellFormatHandler,\n underline: underlineFormatHandler,\n verticalAlign: verticalAlignFormatHandler,\n whiteSpace: whiteSpaceFormatHandler,\n wordBreak: wordBreakFormatHandler,\n};\n\nconst styleBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'letterSpacing',\n 'fontFamily',\n 'fontSize',\n];\n\nconst elementBasedSegmentFormats: (keyof FormatHandlerTypeMap)[] = [\n 'strike',\n 'underline',\n 'superOrSubScript',\n 'italic',\n 'bold',\n];\nconst sharedBlockFormats: (keyof FormatHandlerTypeMap)[] = [\n 'direction',\n 'textAlign',\n 'lineHeight',\n 'whiteSpace',\n];\nconst sharedContainerFormats: (keyof FormatHandlerTypeMap)[] = [\n 'backgroundColor',\n 'margin',\n 'padding',\n 'border',\n];\n\nconst defaultFormatKeysPerCategory: {\n [key in keyof ContentModelFormatMap]: (keyof FormatHandlerTypeMap)[];\n} = {\n block: sharedBlockFormats,\n listItem: ['listItemThread'],\n listItemElement: [...sharedBlockFormats, 'direction', 'textAlign', 'lineHeight', 'margin'],\n listLevel: [\n 'listLevelThread',\n 'direction',\n 'textAlign',\n 'margin',\n 'padding',\n 'listStylePosition',\n 'backgroundColor',\n ],\n styleBasedSegment: [...styleBasedSegmentFormats, 'textColor', 'backgroundColor', 'lineHeight'],\n elementBasedSegment: elementBasedSegmentFormats,\n segment: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColor',\n 'backgroundColor',\n 'lineHeight',\n ],\n segmentOnBlock: [...styleBasedSegmentFormats, ...elementBasedSegmentFormats, 'textColor'],\n segmentOnTableCell: [\n ...styleBasedSegmentFormats,\n ...elementBasedSegmentFormats,\n 'textColorOnTableCell',\n ],\n tableCell: [\n 'border',\n 'backgroundColor',\n 'padding',\n 'verticalAlign',\n 'wordBreak',\n 'textColor',\n 'htmlAlign',\n 'size',\n ],\n tableRow: ['backgroundColor'],\n table: [\n 'id',\n 'border',\n 'backgroundColor',\n 'display',\n 'htmlAlign',\n 'margin',\n 'size',\n 'tableLayout',\n ],\n tableBorder: ['borderBox', 'tableSpacing'],\n tableCellBorder: ['borderBox'],\n image: [\n 'id',\n 'size',\n 'margin',\n 'padding',\n 'borderBox',\n 'border',\n 'boxShadow',\n 'display',\n 'float',\n 'verticalAlign',\n ],\n link: [\n 'link',\n 'textColor',\n 'underline',\n 'display',\n 'margin',\n 'padding',\n 'backgroundColor',\n 'border',\n 'size',\n 'textAlign',\n ],\n segmentUnderLink: ['textColor'],\n code: ['fontFamily', 'display'],\n dataset: ['dataset'],\n divider: [...sharedBlockFormats, ...sharedContainerFormats, 'display', 'size', 'htmlAlign'],\n container: [...sharedContainerFormats, 'htmlAlign', 'size', 'display'],\n};\n\n/**\n * @internal\n */\nexport const defaultFormatParsers: FormatParsers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].parse as FormatParser;\n return result;\n },\n {}\n);\n\n/**\n * @internal\n */\nexport const defaultFormatAppliers: FormatAppliers = getObjectKeys(defaultFormatHandlerMap).reduce(\n (result, key) => {\n result[key] = defaultFormatHandlerMap[key].apply as FormatApplier;\n return result;\n },\n {}\n);\n\n/**\n * @internal\n */\nexport function getFormatParsers(\n override: Partial = {},\n additionalParsers: Partial = {}\n): FormatParsersPerCategory {\n return getObjectKeys(defaultFormatKeysPerCategory).reduce((result, key) => {\n const value = defaultFormatKeysPerCategory[key]\n .map(\n formatKey =>\n (override[formatKey] === undefined\n ? defaultFormatParsers[formatKey]\n : override[formatKey]) as FormatParser\n )\n .concat((additionalParsers[key] as FormatParser[]) || []);\n\n result[key] = value;\n\n return result;\n }, {} as FormatParsersPerCategory);\n}\n\n/**\n * @internal\n */\nexport function getFormatAppliers(\n override: Partial = {},\n additionalAppliers: Partial = {}\n): FormatAppliersPerCategory {\n return getObjectKeys(defaultFormatKeysPerCategory).reduce((result, key) => {\n const value = defaultFormatKeysPerCategory[key]\n .map(\n formatKey =>\n (override[formatKey] === undefined\n ? defaultFormatAppliers[formatKey]\n : override[formatKey]) as FormatApplier\n )\n .concat((additionalAppliers[key] as FormatApplier[]) || []);\n\n result[key] = value;\n\n return result;\n }, {} as FormatAppliersPerCategory);\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys, getTagOfNode } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { NodeType } from 'roosterjs-editor-types';\nimport { OrderedMap, UnorderedMap } from './listLevelMetadataFormatHandler';\n\nconst OrderedMapPlaceholderRegex = /\\$\\{(\\w+)\\}/;\nconst DefaultOrderedListStyles = ['decimal', 'lower-alpha', 'lower-roman'];\nconst DefaultUnorderedListStyles = ['disc', 'circle', 'square'];\nconst CharCodeOfA = 65;\nconst RomanValues: Record = {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1,\n};\n\n/**\n * @internal\n */\nexport const listItemMetadataFormatHandler: FormatHandler = {\n parse: () => {\n // TODO: Handle list style override\n },\n apply: (format, element, context) => {\n const parent = element.parentNode;\n const depth = context.listFormat.nodeStack.length - 2; // Minus two for the parent element and convert length to index\n\n if (depth >= 0 && isNodeOfType(parent, NodeType.Element) && !parent.style.listStyleType) {\n const parentTag = getTagOfNode(parent);\n const style =\n parentTag == 'OL'\n ? getOrderedListStyleValue(\n OrderedMap[format.orderedStyleType!],\n context.listFormat.threadItemCounts[depth]\n ) ?? DefaultOrderedListStyles[depth % DefaultOrderedListStyles.length]\n : UnorderedMap[format.unorderedStyleType!] ??\n DefaultUnorderedListStyles[depth % DefaultUnorderedListStyles.length];\n\n if (style && (depth > 0 || (style != 'decimal' && style != 'disc'))) {\n element.style.listStyleType = style;\n }\n }\n },\n};\n\n/**\n * @internal\n * Export for test only\n */\nexport function getOrderedListStyleValue(\n template: string | undefined,\n listNumber: number\n): string | undefined {\n return template\n ? template.replace(OrderedMapPlaceholderRegex, (match, subStr) => {\n switch (subStr) {\n case 'Number':\n return listNumber + '';\n case 'LowerAlpha':\n return convertDecimalsToAlpha(listNumber, true /*isLowerCase*/);\n case 'UpperAlpha':\n return convertDecimalsToAlpha(listNumber, false /*isLowerCase*/);\n case 'LowerRoman':\n return convertDecimalsToRoman(listNumber, true /*isLowerCase*/);\n case 'UpperRoman':\n return convertDecimalsToRoman(listNumber, false /*isLowerCase*/);\n }\n\n return '';\n })\n : undefined;\n}\n\nfunction convertDecimalsToAlpha(decimal: number, isLowerCase?: boolean): string {\n let alpha = '';\n decimal--;\n\n while (decimal >= 0) {\n alpha = String.fromCharCode((decimal % 26) + CharCodeOfA) + alpha;\n decimal = Math.floor(decimal / 26) - 1;\n }\n return isLowerCase ? alpha.toLowerCase() : alpha;\n}\n\nfunction convertDecimalsToRoman(decimal: number, isLowerCase?: boolean) {\n let romanValue = '';\n for (let i of getObjectKeys(RomanValues)) {\n let timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);\n decimal = decimal - timesRomanCharAppear * RomanValues[i];\n romanValue = romanValue + i.repeat(timesRomanCharAppear);\n }\n return isLowerCase ? romanValue.toLocaleLowerCase() : romanValue;\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const listItemThreadFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyles) => {\n const { listFormat } = context;\n const depth = listFormat.levels.length;\n const display = element.style.display || defaultStyles.display;\n\n if (display && display != 'list-item') {\n format.displayForDummyItem = display;\n } else if (isLiUnderOl(element) && depth > 0) {\n listFormat.threadItemCounts[depth - 1]++;\n listFormat.threadItemCounts.splice(depth);\n listFormat.levels.forEach(level => {\n // Delete restart number so next list item doesn't need to have this value.\n // Then it will be treated as a continuous list item to the previous one\n delete level.format.startNumberOverride;\n });\n }\n },\n apply: (format, element, context) => {\n if (format.displayForDummyItem) {\n element.style.display = format.displayForDummyItem;\n } else if (isLiUnderOl(element)) {\n const { listFormat } = context;\n const { threadItemCounts } = listFormat;\n const index = listFormat.nodeStack.length - 2; // The first one is always the parent of list, then minus another 1 to convert length to index\n\n if (index >= 0) {\n threadItemCounts.splice(index + 1);\n threadItemCounts[index] = (threadItemCounts[index] ?? 0) + 1;\n }\n }\n },\n};\n\nfunction isLiUnderOl(element: HTMLElement) {\n return (\n safeInstanceOf(element, 'HTMLLIElement') &&\n safeInstanceOf(element.parentNode, 'HTMLOListElement')\n );\n}\n","import { BulletListType, NumberingListType } from 'roosterjs-editor-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { getObjectKeys, getTagOfNode, safeInstanceOf } from 'roosterjs-editor-dom';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const OrderedMap: Record = {\n [NumberingListType.Decimal]: 'decimal',\n [NumberingListType.DecimalDash]: '\"${Number}- \"',\n [NumberingListType.DecimalParenthesis]: '\"${Number}) \"',\n [NumberingListType.DecimalDoubleParenthesis]: '\"(${Number}) \"',\n [NumberingListType.LowerAlpha]: 'lower-alpha',\n [NumberingListType.LowerAlphaDash]: '\"${LowerAlpha}- \"',\n [NumberingListType.LowerAlphaParenthesis]: '\"${LowerAlpha}) \"',\n [NumberingListType.LowerAlphaDoubleParenthesis]: '\"(${LowerAlpha}) \"',\n [NumberingListType.UpperAlpha]: 'upper-alpha',\n [NumberingListType.UpperAlphaDash]: '\"${UpperAlpha}- \"',\n [NumberingListType.UpperAlphaParenthesis]: '\"${UpperAlpha}) \"',\n [NumberingListType.UpperAlphaDoubleParenthesis]: '\"(${UpperAlpha}) \"',\n [NumberingListType.LowerRoman]: 'lower-roman',\n [NumberingListType.LowerRomanDash]: '\"${LowerRoman}- \"',\n [NumberingListType.LowerRomanParenthesis]: '\"${LowerRoman}) \"',\n [NumberingListType.LowerRomanDoubleParenthesis]: '\"(${LowerRoman}) \"',\n [NumberingListType.UpperRoman]: 'upper-roman',\n [NumberingListType.UpperRomanDash]: '\"${UpperRoman}- \"',\n [NumberingListType.UpperRomanParenthesis]: '\"${UpperRoman}) \"',\n [NumberingListType.UpperRomanDoubleParenthesis]: '\"(${UpperRoman}) \"',\n};\n\n/**\n * @internal\n */\nexport const UnorderedMap: Record = {\n [BulletListType.Disc]: 'disc',\n [BulletListType.Square]: '\"∎ \"',\n [BulletListType.Circle]: 'circle',\n [BulletListType.Dash]: '\"- \"',\n [BulletListType.LongArrow]: '\"➔ \"',\n [BulletListType.DoubleLongArrow]: '\"➔ \"',\n [BulletListType.ShortArrow]: '\"➢ \"',\n [BulletListType.UnfilledArrow]: '\"➪ \"',\n [BulletListType.Hyphen]: '\"— \"',\n};\n\nconst OLTypeToStyleMap: Record = {\n '1': 'decimal',\n a: 'lower-alpha',\n A: 'upper-alpha',\n i: 'lower-roman',\n I: 'upper-roman',\n};\n\n/**\n * @internal\n */\nexport const listLevelMetadataFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const listStyle =\n element.style.listStyleType ||\n (safeInstanceOf(element, 'HTMLOListElement') && OLTypeToStyleMap[element.type]);\n const tag = getTagOfNode(element);\n\n if (listStyle) {\n if (tag == 'OL' && format.orderedStyleType === undefined) {\n const value = getKeyFromValue(OrderedMap, listStyle);\n format.orderedStyleType =\n typeof value === 'undefined' ? undefined : parseInt(value);\n } else if (tag == 'UL' && format.unorderedStyleType === undefined) {\n const value = getKeyFromValue(UnorderedMap, listStyle);\n format.unorderedStyleType =\n typeof value === 'undefined' ? undefined : parseInt(value);\n }\n }\n },\n apply: (format, element) => {\n const tag = getTagOfNode(element);\n const listType =\n tag == 'OL'\n ? OrderedMap[format.orderedStyleType!]\n : UnorderedMap[format.unorderedStyleType!];\n\n if (listType && listType.indexOf('\"') < 0) {\n element.style.listStyleType = listType;\n }\n },\n};\n\nfunction getKeyFromValue(\n map: Record,\n value: V | undefined\n): string | undefined {\n const result =\n value === undefined ? undefined : getObjectKeys(map).filter(key => map[key] == value)[0];\n\n // During run time the key is always string\n return (result as any) as string | undefined;\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const listLevelThreadFormatHandler: FormatHandler = {\n parse: (format, element, context) => {\n if (safeInstanceOf(element, 'HTMLOListElement')) {\n const { listFormat } = context;\n const { threadItemCounts, levels } = listFormat;\n const depth = levels.length;\n\n if (\n typeof threadItemCounts[depth] === 'number' &&\n element.start != threadItemCounts[depth] + 1\n ) {\n format.startNumberOverride = element.start;\n }\n\n threadItemCounts[depth] = element.start - 1;\n }\n },\n apply: (format, element, context) => {\n const {\n listFormat: { threadItemCounts, nodeStack },\n } = context;\n const depth = nodeStack.length - 1; // The first one is always the parent of list\n\n if (depth >= 0 && safeInstanceOf(element, 'HTMLOListElement')) {\n const startNumber = format.startNumberOverride;\n\n if (typeof startNumber === 'number') {\n threadItemCounts[depth] = startNumber - 1;\n } else if (typeof threadItemCounts[depth] != 'number') {\n threadItemCounts[depth] = 0;\n }\n\n threadItemCounts.splice(depth + 1);\n element.start = threadItemCounts[depth] + 1;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { ListStylePositionFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const listStylePositionFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const listStylePosition = element.style.listStylePosition;\n\n if (listStylePosition) {\n format.listStylePosition = listStylePosition;\n }\n },\n apply: (format, element) => {\n if (format.listStylePosition) {\n element.style.listStylePosition = format.listStylePosition;\n }\n },\n};\n","import { BoldFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const boldFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontWeight = element.style.fontWeight || defaultStyle.fontWeight;\n\n if (fontWeight) {\n format.fontWeight = fontWeight;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.fontWeight === 'undefined') {\n return;\n }\n\n const blockFontWeight = context.implicitFormat.fontWeight;\n\n if (\n (blockFontWeight && blockFontWeight != format.fontWeight) ||\n (!blockFontWeight && format.fontWeight && format.fontWeight != 'normal')\n ) {\n if (format.fontWeight == 'bold') {\n const b = element.ownerDocument.createElement('b');\n moveChildNodes(b, element);\n element.appendChild(b);\n } else {\n element.style.fontWeight = format.fontWeight || 'normal';\n }\n }\n },\n};\n","import { FontFamilyFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\n\n/**\n * @internal\n */\nexport const fontFamilyFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontFamily = element.style.fontFamily || defaultStyle.fontFamily;\n\n if (fontFamily && fontFamily != 'inherit') {\n format.fontFamily = fontFamily;\n }\n },\n apply: (format, element, context) => {\n if (format.fontFamily && format.fontFamily != context.implicitFormat.fontFamily) {\n element.style.fontFamily = format.fontFamily;\n }\n },\n};\n","import { FontSizeFormat } from 'roosterjs-content-model-types';\nimport { FormatHandler } from '../FormatHandler';\nimport { isSuperOrSubScript } from './superOrSubScriptFormatHandler';\nimport { parseValueWithUnit } from '../utils/parseValueWithUnit';\n\n/**\n * @internal\n */\nexport const fontSizeFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontSize = element.style.fontSize || defaultStyle.fontSize;\n const verticalAlign = element.style.verticalAlign || defaultStyle.verticalAlign;\n\n // when font size is 'smaller' and the style is for superscript/subscript,\n // the font size will be handled by superOrSubScript handler\n if (fontSize && !isSuperOrSubScript(fontSize, verticalAlign) && fontSize != 'inherit') {\n if (element.style.fontSize) {\n format.fontSize = normalizeFontSize(fontSize, context.segmentFormat.fontSize);\n } else if (defaultStyle.fontSize) {\n format.fontSize = fontSize;\n }\n }\n },\n apply: (format, element, context) => {\n if (format.fontSize && format.fontSize != context.implicitFormat.fontSize) {\n element.style.fontSize = format.fontSize;\n }\n },\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\nconst KnownFontSizes: Record = {\n 'xx-small': '6.75pt',\n 'x-small': '7.5pt',\n small: '9.75pt',\n medium: '12pt',\n large: '13.5pt',\n 'x-large': '18pt',\n 'xx-large': '24pt',\n 'xxx-large': '36pt',\n};\n\nfunction normalizeFontSize(fontSize: string, contextFont: string | undefined): string | undefined {\n const knownFontSize = KnownFontSizes[fontSize];\n\n if (knownFontSize) {\n return knownFontSize;\n } else if (\n fontSize == 'smaller' ||\n fontSize == 'larger' ||\n fontSize.endsWith('em') ||\n fontSize.endsWith('%')\n ) {\n if (!contextFont) {\n return undefined;\n } else {\n const existingFontSize = parseValueWithUnit(contextFont, undefined /*element*/, 'px');\n\n if (existingFontSize) {\n switch (fontSize) {\n case 'smaller':\n return Math.round((existingFontSize * 500) / 6) / 100 + 'px';\n case 'larger':\n return Math.round((existingFontSize * 600) / 5) / 100 + 'px';\n default:\n return parseValueWithUnit(fontSize, existingFontSize, 'px') + 'px';\n }\n }\n }\n } else if (fontSize == 'inherit' || fontSize == 'revert' || fontSize == 'unset') {\n return undefined;\n } else {\n return fontSize;\n }\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { ItalicFormat } from 'roosterjs-content-model-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const italicFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const fontStyle = element.style.fontStyle || defaultStyle.fontStyle;\n\n if (fontStyle == 'italic' || fontStyle == 'oblique') {\n format.italic = true;\n } else if (fontStyle == 'initial' || fontStyle == 'normal') {\n format.italic = false;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.italic === 'undefined') {\n return;\n }\n\n const implicitItalic = context.implicitFormat.italic;\n\n if (!!implicitItalic != !!format.italic) {\n if (format.italic) {\n const i = element.ownerDocument.createElement('i');\n moveChildNodes(i, element);\n element.appendChild(i);\n } else {\n element.style.fontStyle = 'normal';\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LetterSpacingFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const letterSpacingFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const letterSpacing = element.style.letterSpacing || defaultStyle.letterSpacing;\n\n if (letterSpacing) {\n format.letterSpacing = letterSpacing;\n }\n },\n apply: (format, element, context) => {\n if (format.letterSpacing) {\n element.style.letterSpacing = format.letterSpacing;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { LinkFormat } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const linkFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (safeInstanceOf(element, 'HTMLAnchorElement')) {\n const name = element.name;\n const href = element.getAttribute('href'); // Use getAttribute to get original HREF but not the resolved absolute url\n const target = element.target;\n const rel = element.rel;\n const id = element.id;\n const className = element.className;\n const title = element.title;\n\n if (name) {\n format.name = name;\n }\n\n if (href) {\n format.href = href;\n }\n\n if (target) {\n format.target = target;\n }\n\n if (id) {\n format.anchorId = id;\n }\n\n if (rel) {\n format.relationship = rel;\n }\n\n if (title) {\n format.anchorTitle = title;\n }\n\n if (className) {\n format.anchorClass = className;\n }\n }\n },\n apply: (format, element) => {\n if (safeInstanceOf(element, 'HTMLAnchorElement') && format.href) {\n element.href = format.href;\n\n if (format.name) {\n element.name = format.name;\n }\n\n if (format.target) {\n element.target = format.target;\n }\n\n if (format.anchorId) {\n element.id = format.anchorId;\n }\n\n if (format.anchorClass) {\n element.className = format.anchorClass;\n }\n\n if (format.anchorTitle) {\n element.title = format.anchorTitle;\n }\n\n if (format.relationship) {\n element.rel = format.relationship;\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { StrikeFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const strikeFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textDecoration = element.style.textDecoration || defaultStyle.textDecoration;\n\n if (textDecoration?.indexOf('line-through')! >= 0) {\n format.strikethrough = true;\n }\n },\n apply: (format, element) => {\n if (format.strikethrough) {\n const strike = element.ownerDocument.createElement('s');\n moveChildNodes(strike, element);\n element.appendChild(strike);\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { SuperOrSubScriptFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const superOrSubScriptFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const verticalAlign = element.style.verticalAlign || defaultStyle.verticalAlign;\n const fontSize = element.style.fontSize || defaultStyle.fontSize;\n\n if (isSuperOrSubScript(fontSize, verticalAlign)) {\n format.superOrSubScriptSequence = (format.superOrSubScriptSequence || '')\n .split(' ')\n .concat(verticalAlign)\n .join(' ')\n .trim();\n }\n },\n apply: (format, element) => {\n if (format.superOrSubScriptSequence) {\n format.superOrSubScriptSequence\n .split(' ')\n .reverse()\n .forEach(value => {\n const tagName = value == 'super' ? 'sup' : value == 'sub' ? 'sub' : null;\n\n if (tagName) {\n const wrapper = element.ownerDocument.createElement(tagName);\n moveChildNodes(wrapper, element);\n element.appendChild(wrapper);\n }\n });\n }\n },\n};\n\n/**\n * @internal\n */\nexport function isSuperOrSubScript(\n fontSize: string | undefined,\n verticalAlign: string | undefined\n): verticalAlign is 'sub' | 'super' {\n return fontSize == 'smaller' && (verticalAlign == 'sub' || verticalAlign == 'super');\n}\n","import { FormatHandler } from '../FormatHandler';\nimport { getColor, setColor } from '../utils/color';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textColorFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textColor =\n getColor(\n element,\n false /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n ) || defaultStyle.color;\n\n if (textColor && textColor != 'inherit') {\n format.textColor = textColor;\n }\n },\n apply: (format, element, context) => {\n const implicitColor = context.implicitFormat.textColor;\n\n if (format.textColor && format.textColor != implicitColor) {\n setColor(\n element,\n format.textColor,\n false /*isBackground*/,\n context.darkColorHandler,\n !!context.isDarkMode\n );\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { UnderlineFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const underlineFormatHandler: FormatHandler = {\n parse: (format, element, context, defaultStyle) => {\n const textDecoration = element.style.textDecoration || defaultStyle.textDecoration;\n\n if (textDecoration?.indexOf('underline')! >= 0) {\n format.underline = true;\n } else if (element.tagName == 'A' && textDecoration == 'none') {\n format.underline = false;\n }\n },\n apply: (format, element, context) => {\n if (typeof format.underline === 'undefined') {\n return;\n }\n\n const blockUnderline = context.implicitFormat.underline;\n\n if (!!blockUnderline != !!format.underline) {\n if (format.underline) {\n const u = element.ownerDocument.createElement('u');\n moveChildNodes(u, element);\n element.appendChild(u);\n } else {\n element.style.textDecoration = 'none';\n }\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { TableLayoutFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const tableLayoutFormatHandler: FormatHandler = {\n parse: (format, element) => {\n const tableLayout = element.style.tableLayout;\n if (tableLayout && tableLayout != 'inherit') {\n format.tableLayout = tableLayout;\n }\n },\n apply: (format, element) => {\n if (format.tableLayout) {\n element.style.tableLayout = format.tableLayout;\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { SpacingFormat } from 'roosterjs-content-model-types';\n\nconst BorderCollapsed = 'collapse';\n\n/**\n * @internal\n */\nexport const tableSpacingFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style.borderCollapse == BorderCollapsed) {\n format.borderCollapse = true;\n }\n },\n apply: (format, element) => {\n if (format.borderCollapse) {\n element.style.borderCollapse = BorderCollapsed;\n element.style.borderSpacing = '0';\n element.style.boxSizing = 'border-box';\n }\n },\n};\n","import { FormatHandler } from '../FormatHandler';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const textColorOnTableCellFormatHandler: FormatHandler = {\n parse: (format, element) => {\n if (element.style.color) {\n // Delete color from format since text color on TD/TH will be handled by separate code\n // and text color on segment format context need to be reset so that it will not inherit\n // value outer container\n delete format.textColor;\n }\n },\n apply: () => {},\n};\n","import { DarkColorHandler } from 'roosterjs-editor-types';\nimport { getTagOfNode } from 'roosterjs-editor-dom';\n\n/**\n * List of deprecated colors\n */\nexport const DeprecatedColors: string[] = [\n 'inactiveborder',\n 'activeborder',\n 'inactivecaptiontext',\n 'inactivecaption',\n 'activecaption',\n 'appworkspace',\n 'infobackground',\n 'background',\n 'buttonhighlight',\n 'buttonshadow',\n 'captiontext',\n 'infotext',\n 'menutext',\n 'menu',\n 'scrollbar',\n 'threeddarkshadow',\n 'threedface',\n 'threedhighlight',\n 'threedlightshadow',\n 'threedfhadow',\n 'windowtext',\n 'windowframe',\n 'window',\n];\n\n/**\n * @internal\n */\nexport function getColor(\n element: HTMLElement,\n isBackground: boolean,\n darkColorHandler: DarkColorHandler | undefined | null,\n isDarkMode: boolean\n): string | undefined {\n let color: string | undefined;\n\n if (!color) {\n color =\n (darkColorHandler &&\n tryGetFontColor(element, isDarkMode, darkColorHandler, isBackground)) ||\n (isBackground ? element.style.backgroundColor : element.style.color) ||\n element.getAttribute(isBackground ? 'bgcolor' : 'color') ||\n undefined;\n }\n\n if (color && DeprecatedColors.indexOf(color) > -1) {\n color = undefined;\n }\n\n if (darkColorHandler) {\n color = darkColorHandler.parseColorValue(color).lightModeColor;\n }\n\n return color;\n}\n\n/**\n * @internal\n */\nexport function setColor(\n element: HTMLElement,\n lightModeColor: string,\n isBackground: boolean,\n darkColorHandler: DarkColorHandler | undefined | null,\n isDarkMode: boolean\n) {\n const effectiveColor = darkColorHandler\n ? darkColorHandler.registerColor(lightModeColor, isDarkMode)\n : lightModeColor;\n\n if (isBackground) {\n element.style.backgroundColor = effectiveColor;\n } else {\n element.style.color = effectiveColor;\n }\n}\n\n/**\n * There is a known issue that when input with IME in Chrome, it is possible Chrome insert a new FONT tag with colors.\n * If editor is in dark mode, this color will cause the FONT tag doesn't have light mode color info so that after convert\n * to light mode the color will be wrong.\n * To workaround it, we check if this is a known color (for light mode with VariableBasedDarkColor enabled, all used colors\n * are stored in darkColorHandler), then use the related light mode color instead.\n */\nfunction tryGetFontColor(\n element: HTMLElement,\n isDarkMode: boolean,\n darkColorHandler: DarkColorHandler,\n isBackground: boolean\n) {\n let darkColor: string | null;\n\n return getTagOfNode(element) == 'FONT' &&\n !element.style.getPropertyValue(isBackground ? 'background-color' : 'color') &&\n isDarkMode &&\n (darkColor = element.getAttribute(isBackground ? 'bgcolor' : 'color'))\n ? darkColorHandler.findLightColorFromDarkColor(darkColor)\n : null;\n}\n","import { DefaultImplicitFormatMap, DefaultStyleMap } from 'roosterjs-content-model-types';\n\nconst blockElement: Partial = {\n display: 'block',\n};\n\n/**\n * @internal\n */\nexport const defaultStyleMap: DefaultStyleMap = {\n address: blockElement,\n article: blockElement,\n aside: blockElement,\n b: {\n fontWeight: 'bold',\n },\n blockquote: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n },\n br: blockElement,\n center: {\n display: 'block',\n textAlign: 'center',\n },\n dd: blockElement,\n div: blockElement,\n dl: blockElement,\n dt: blockElement,\n em: {\n fontStyle: 'italic',\n },\n fieldset: blockElement,\n figcaption: blockElement,\n figure: blockElement,\n footer: blockElement,\n form: blockElement,\n h1: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '2em',\n },\n h2: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.5em',\n },\n h3: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '1.17em',\n },\n h4: {\n display: 'block',\n fontWeight: 'bold',\n },\n h5: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.83em',\n },\n h6: {\n display: 'block',\n fontWeight: 'bold',\n fontSize: '0.67em',\n },\n header: blockElement,\n hr: blockElement,\n i: {\n fontStyle: 'italic',\n },\n li: {\n display: 'list-item',\n },\n main: blockElement,\n nav: blockElement,\n ol: blockElement,\n p: {\n display: 'block',\n marginTop: '1em',\n marginBottom: '1em',\n },\n pre: {\n display: 'block',\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n s: {\n textDecoration: 'line-through',\n },\n section: blockElement,\n strike: {\n textDecoration: 'line-through',\n },\n strong: {\n fontWeight: 'bold',\n },\n sub: {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n sup: {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n table: {\n display: 'table',\n boxSizing: 'border-box',\n },\n td: {\n display: 'table-cell',\n },\n th: {\n display: 'table-cell',\n },\n u: {\n textDecoration: 'underline',\n },\n ul: blockElement,\n};\n\n/**\n * @internal\n */\nexport const enum PseudoTagNames {\n childOfPre = 'pre *', // This value is not a CSS selector, it just to tell this will impact elements under PRE tag. Any unique value here can work actually\n}\n\n/**\n * A map from tag name to its default implicit formats\n */\nexport const defaultImplicitFormatMap: DefaultImplicitFormatMap = {\n a: {\n underline: true,\n },\n blockquote: {\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n },\n code: {\n fontFamily: 'monospace',\n },\n h1: {\n fontWeight: 'bold',\n fontSize: '2em',\n },\n h2: {\n fontWeight: 'bold',\n fontSize: '1.5em',\n },\n h3: {\n fontWeight: 'bold',\n fontSize: '1.17em',\n },\n h4: {\n fontWeight: 'bold',\n fontSize: '1em', // Set this default value here to overwrite existing font size when change heading level\n },\n h5: {\n fontWeight: 'bold',\n fontSize: '0.83em',\n },\n h6: {\n fontWeight: 'bold',\n fontSize: '0.67em',\n },\n p: {\n marginTop: '1em',\n marginBottom: '1em',\n },\n pre: {\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n\n // For PRE tag, the following styles will be included from the PRE tag.\n // Adding this implicit style here so no need to generate these style for child elements\n [PseudoTagNames.childOfPre]: {\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n },\n};\n","/**\n * @internal\n */\nexport const ResultMap = {\n start: {\n ltr: 'left',\n rtl: 'right',\n },\n center: {\n ltr: 'center',\n rtl: 'center',\n },\n end: {\n ltr: 'right',\n rtl: 'left',\n },\n initial: {\n ltr: 'initial',\n rtl: 'initial',\n },\n justify: {\n ltr: 'justify',\n rtl: 'justify',\n },\n};\n\n/**\n * @internal\n */\nexport function calcAlign(align: string, dir?: 'ltr' | 'rtl') {\n switch (align) {\n case 'center':\n return 'center';\n\n case 'left':\n return dir == 'rtl' ? 'end' : 'start';\n\n case 'right':\n return dir == 'rtl' ? 'start' : 'end';\n\n case 'start':\n case 'end':\n return align;\n\n case 'justify':\n case 'initial':\n return align;\n\n default:\n return undefined;\n }\n}\n","import { getComputedStyle } from 'roosterjs-editor-dom';\n\nconst MarginValueRegex = /(-?\\d+(\\.\\d+)?)([a-z]+|%)/;\n\n/**\n * Parse unit value with its unit\n * @param value The source value to parse\n * @param currentSizePxOrElement The source element which has this unit value, or current font size (in px) from context.\n * @param resultUnit Unit for result, can be px or pt. @default px\n */\nexport function parseValueWithUnit(\n value: string = '',\n currentSizePxOrElement?: number | HTMLElement,\n resultUnit: 'px' | 'pt' = 'px'\n): number {\n const match = MarginValueRegex.exec(value);\n let result = 0;\n\n if (match) {\n const [_, numStr, __, unit] = match;\n const num = parseFloat(numStr);\n\n switch (unit) {\n case 'px':\n result = num;\n break;\n case 'pt':\n result = ptToPx(num);\n break;\n case 'em':\n result = getFontSize(currentSizePxOrElement) * num;\n break;\n case 'ex':\n result = (getFontSize(currentSizePxOrElement) * num) / 2;\n break;\n case '%':\n result = (getFontSize(currentSizePxOrElement) * num) / 100;\n break;\n default:\n // TODO: Support more unit if need\n break;\n }\n }\n\n if (result > 0 && resultUnit == 'pt') {\n result = pxToPt(result);\n }\n\n return result;\n}\n\nfunction getFontSize(currentSizeOrElement?: number | HTMLElement): number {\n if (typeof currentSizeOrElement === 'undefined') {\n return 0;\n } else if (typeof currentSizeOrElement === 'number') {\n return currentSizeOrElement;\n } else {\n const styleInPt = getComputedStyle(currentSizeOrElement, 'font-size');\n const floatInPt = parseFloat(styleInPt);\n const floatInPx = ptToPx(floatInPt);\n\n return floatInPx;\n }\n}\n\nfunction ptToPx(pt: number): number {\n return Math.round((pt * 4000) / 3) / 1000;\n}\n\nfunction pxToPt(px: number) {\n return Math.round((px * 3000) / 4) / 1000;\n}\n","export { domToContentModel } from './domToModel/domToContentModel';\nexport { contentModelToDom } from './modelToDom/contentModelToDom';\n\nexport {\n childProcessor,\n handleRegularSelection,\n processChildNode,\n} from './domToModel/processors/childProcessor';\nexport { entityProcessor } from './domToModel/processors/entityProcessor';\nexport { tableProcessor } from './domToModel/processors/tableProcessor';\nexport { getRegularSelectionOffsets } from './domToModel/utils/getRegularSelectionOffsets';\nexport { parseFormat } from './domToModel/utils/parseFormat';\nexport { areSameFormats } from './domToModel/utils/areSameFormats';\n\nexport { updateMetadata, hasMetadata } from './domUtils/metadata/updateMetadata';\nexport { updateListMetadata } from './domUtils/metadata/updateListMetadata';\nexport { isNodeOfType, NodeTypeMap } from './domUtils/isNodeOfType';\n\nexport { createBr } from './modelApi/creators/createBr';\nexport { createListItem } from './modelApi/creators/createListItem';\nexport { createFormatContainer } from './modelApi/creators/createFormatContainer';\nexport { createParagraph } from './modelApi/creators/createParagraph';\nexport { createSelectionMarker } from './modelApi/creators/createSelectionMarker';\nexport { createTable } from './modelApi/creators/createTable';\nexport { createTableCell } from './modelApi/creators/createTableCell';\nexport { createText } from './modelApi/creators/createText';\nexport { createImage } from './modelApi/creators/createImage';\nexport { createContentModelDocument } from './modelApi/creators/createContentModelDocument';\nexport { createParagraphDecorator } from './modelApi/creators/createParagraphDecorator';\nexport { createGeneralSegment } from './modelApi/creators/createGeneralSegment';\nexport { createGeneralBlock } from './modelApi/creators/createGeneralBlock';\nexport { createEntity } from './modelApi/creators/createEntity';\nexport { createDivider } from './modelApi/creators/createDivider';\nexport { createListLevel } from './modelApi/creators/createListLevel';\n\nexport { addBlock } from './modelApi/common/addBlock';\nexport { addCode } from './modelApi/common/addDecorators';\nexport { addLink } from './modelApi/common/addDecorators';\nexport { normalizeContentModel } from './modelApi/common/normalizeContentModel';\nexport { isGeneralSegment } from './modelApi/common/isGeneralSegment';\nexport { unwrapBlock } from './modelApi/common/unwrapBlock';\nexport { addSegment } from './modelApi/common/addSegment';\nexport { isWhiteSpacePreserved } from './modelApi/common/isWhiteSpacePreserved';\nexport { normalizeSingleSegment } from './modelApi/common/normalizeSegment';\n\nexport { setParagraphNotImplicit } from './modelApi/block/setParagraphNotImplicit';\n\nexport { parseValueWithUnit } from './formatHandlers/utils/parseValueWithUnit';\nexport { BorderKeys } from './formatHandlers/common/borderFormatHandler';\nexport { DeprecatedColors } from './formatHandlers/utils/color';\nexport { defaultImplicitFormatMap } from './formatHandlers/utils/defaultStyles';\n\nexport { createDomToModelContext } from './domToModel/context/createDomToModelContext';\n","import { ContentModelBlock } from 'roosterjs-content-model-types';\n\n/**\n * For a given block, if it is a paragraph, set it to be not-implicit\n * @param block The block to check\n */\nexport function setParagraphNotImplicit(block: ContentModelBlock) {\n if (block.blockType == 'Paragraph' && block.isImplicit) {\n block.isImplicit = false;\n }\n}\n","import type { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * Add a given block to block group\n * @param group The block group to add block into\n * @param block The block to add\n */\nexport function addBlock(group: ContentModelBlockGroup, block: ContentModelBlock) {\n group.blocks.push(block);\n}\n","import {\n ContentModelCode,\n ContentModelLink,\n ContentModelSegment,\n DomToModelDecoratorContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function addLink(segment: ContentModelSegment, link: ContentModelLink) {\n if (link.format.href) {\n segment.link = {\n format: { ...link.format },\n dataset: { ...link.dataset },\n };\n }\n}\n\n/**\n * Add a code decorator into segment if any\n * @param segment The segment to add decorator to\n * @param code The code decorator to add\n */\nexport function addCode(segment: ContentModelSegment, code: ContentModelCode) {\n if (code.format.fontFamily) {\n segment.code = {\n format: { ...code.format },\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addDecorators(segment: ContentModelSegment, context: DomToModelDecoratorContext) {\n addLink(segment, context.link);\n addCode(segment, context.code);\n}\n","import { addBlock } from './addBlock';\nimport { createParagraph } from '../creators/createParagraph';\nimport type {\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * Add a given segment into a paragraph from its parent group. If the last block of the given group is not paragraph, create a new paragraph.\n * @param group The parent block group of the paragraph to add segment into\n * @param newSegment The segment to add\n * @param blockFormat The block format used for creating a new paragraph when need\n */\nexport function addSegment(\n group: ContentModelBlockGroup,\n newSegment: ContentModelSegment,\n blockFormat?: ContentModelBlockFormat\n) {\n const lastBlock = group.blocks[group.blocks.length - 1];\n let paragraph: ContentModelParagraph;\n\n if (lastBlock?.blockType == 'Paragraph') {\n paragraph = lastBlock;\n } else {\n paragraph = createParagraph(true, blockFormat);\n addBlock(group, paragraph);\n }\n\n const lastSegment = paragraph.segments[paragraph.segments.length - 1];\n\n if (newSegment.segmentType == 'SelectionMarker') {\n if (!lastSegment || !lastSegment.isSelected) {\n paragraph.segments.push(newSegment);\n }\n } else {\n if (newSegment.isSelected && lastSegment?.segmentType == 'SelectionMarker') {\n paragraph.segments.pop();\n }\n\n paragraph.segments.push(newSegment);\n }\n}\n","// A regex to match text that only has space and CR\n// We use real space char \" \" (\\u0020) here but not \"\\s\" since \"\\s\" will also match \" \" (\\u00A0) which is something we need to keep\nconst SPACE_TEXT_REGEX = /^[\\r\\n\\t ]*$/;\n\n/**\n * @internal\n * Check if the given string only has space, including line breaks.\n * @param txt The string to check\n */\nexport function hasSpacesOnly(txt: string): boolean {\n return SPACE_TEXT_REGEX.test(txt);\n}\n","import {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function isBlockEmpty(block: ContentModelBlock): boolean {\n switch (block.blockType) {\n case 'Paragraph':\n return block.segments.length == 0;\n\n case 'Table':\n return block.rows.every(row => row.cells.length == 0);\n\n case 'BlockGroup':\n return isBlockGroupEmpty(block);\n\n case 'Entity':\n return false;\n\n default:\n return false;\n }\n}\n\n/**\n * @internal\n */\nexport function isBlockGroupEmpty(group: ContentModelBlockGroup): boolean {\n switch (group.blockGroupType) {\n case 'FormatContainer':\n // Format Container of DIV is a container for style, so we always treat it as not empty\n return group.tagName == 'div' ? false : group.blocks.every(isBlockEmpty);\n\n case 'ListItem':\n return group.blocks.every(isBlockEmpty);\n\n case 'Document':\n case 'General':\n case 'TableCell':\n return false;\n\n default:\n return true;\n }\n}\n\n/**\n * @internal\n */\nexport function isSegmentEmpty(segment: ContentModelSegment): boolean {\n switch (segment.segmentType) {\n case 'Text':\n return !segment.text;\n\n case 'Image':\n return !segment.src;\n\n default:\n return false;\n }\n}\n\n/**\n * @internal\n */\nexport function isEmpty(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): boolean {\n if (isBlockGroup(model)) {\n return isBlockGroupEmpty(model);\n } else if (isBlock(model)) {\n return isBlockEmpty(model);\n } else if (isSegment(model)) {\n return isSegmentEmpty(model);\n }\n\n return false;\n}\n\nfunction isSegment(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelSegment {\n return typeof (model).segmentType === 'string';\n}\n\nfunction isBlock(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelBlock {\n return typeof (model).blockType === 'string';\n}\n\nfunction isBlockGroup(\n model: ContentModelBlock | ContentModelBlockGroup | ContentModelSegment\n): model is ContentModelBlockGroup {\n return typeof (model).blockGroupType === 'string';\n}\n","import { ContentModelBlockGroup, ContentModelGeneralSegment } from 'roosterjs-content-model-types';\n\n/**\n * Check if the given block group is a general segment\n * @param group The group to check\n */\nexport function isGeneralSegment(\n group: ContentModelBlockGroup | ContentModelGeneralSegment\n): group is ContentModelGeneralSegment {\n return (\n group.blockGroupType == 'General' &&\n (group).segmentType == 'General'\n );\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\n\n// According to https://developer.mozilla.org/en-US/docs/Web/CSS/white-space, these style values will need to preserve white spaces\nconst WHITESPACE_PRE_VALUES = ['pre', 'pre-wrap', 'break-spaces'];\n\n/**\n * Check if we have white-space to be preserved for a given paragraph\n * @param paragraph The paragraph to check\n */\nexport function isWhiteSpacePreserved(paragraph: ContentModelParagraph): boolean {\n return (\n (paragraph.format.whiteSpace &&\n WHITESPACE_PRE_VALUES.indexOf(paragraph.format.whiteSpace) >= 0) ||\n false\n );\n}\n","import { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { isBlockEmpty } from './isEmpty';\nimport { normalizeParagraph } from './normalizeParagraph';\nimport { unwrapBlock } from './unwrapBlock';\n\n/**\n * For a given content model, normalize it to make the model be consistent.\n * This process includes:\n * - For a list item without any list level, unwrap the list item\n * - For a paragraph, make sure it has BR at the end if it is an empty paragraph\n * - For text segments under paragraph, make sure its space values are correct (use nbsp to replace space when necessary)\n * - For an empty block, remove it\n * @param group The root level block group of content model to normalize\n */\nexport function normalizeContentModel(group: ContentModelBlockGroup) {\n for (let i = group.blocks.length - 1; i >= 0; i--) {\n const block = group.blocks[i];\n\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem' && block.levels.length == 0) {\n i += block.blocks.length;\n unwrapBlock(group, block);\n } else {\n normalizeContentModel(block);\n }\n break;\n case 'Paragraph':\n normalizeParagraph(block);\n break;\n case 'Table':\n for (let r = 0; r < block.rows.length; r++) {\n for (let c = 0; c < block.rows[r].cells.length; c++) {\n if (block.rows[r].cells[c]) {\n normalizeContentModel(block.rows[r].cells[c]);\n }\n }\n }\n break;\n }\n\n if (isBlockEmpty(block)) {\n group.blocks.splice(i, 1);\n }\n }\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { createBr } from '../creators/createBr';\nimport { isSegmentEmpty } from './isEmpty';\nimport { isWhiteSpacePreserved } from './isWhiteSpacePreserved';\nimport { normalizeAllSegments } from './normalizeSegment';\n\n/**\n * @internal\n */\nexport function normalizeParagraph(paragraph: ContentModelParagraph) {\n const segments = paragraph.segments;\n\n if (!paragraph.isImplicit && segments.length > 0) {\n const last = segments[segments.length - 1];\n const secondLast = segments[segments.length - 2];\n\n if (\n last.segmentType == 'SelectionMarker' &&\n (!secondLast || secondLast.segmentType == 'Br')\n ) {\n segments.push(createBr(last.format));\n } else if (segments.length > 1 && segments[segments.length - 1].segmentType == 'Br') {\n const noMarkerSegments = segments.filter(x => x.segmentType != 'SelectionMarker');\n\n // When there is content with a
          tag at the end, we can remove the BR.\n // But if there are more than one
          at the end, do not remove them.\n if (\n noMarkerSegments.length > 1 &&\n noMarkerSegments[noMarkerSegments.length - 2].segmentType != 'Br'\n ) {\n segments.pop();\n }\n }\n }\n\n if (!isWhiteSpacePreserved(paragraph)) {\n normalizeAllSegments(paragraph);\n }\n\n removeEmptySegments(paragraph);\n}\n\nfunction removeEmptySegments(block: ContentModelParagraph) {\n for (let j = block.segments.length - 1; j >= 0; j--) {\n if (isSegmentEmpty(block.segments[j])) {\n block.segments.splice(j, 1);\n }\n }\n}\n","import { hasSpacesOnly } from './hasSpacesOnly';\nimport {\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelText,\n} from 'roosterjs-content-model-types';\n\nconst SPACE = '\\u0020';\nconst NONE_BREAK_SPACE = '\\u00A0';\nconst LEADING_SPACE_REGEX = /^\\u0020+/;\nconst TRAILING_SPACE_REGEX = /\\u0020+$/;\n\n/**\n * @internal\n */\nexport function normalizeAllSegments(paragraph: ContentModelParagraph) {\n const context = resetNormalizeSegmentContext();\n\n paragraph.segments.forEach(segment => {\n normalizeSegment(segment, context);\n });\n\n normalizeTextSegments(context.textSegments, context.lastInlineSegment);\n normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);\n}\n\n/**\n * Normalize a given segment, make sure its spaces are correctly represented by space and non-break space\n * @param segment The segment to normalize\n * @param ignoreTrailingSpaces Whether we should ignore the trailing space of the text segment @default false\n */\nexport function normalizeSingleSegment(\n segment: ContentModelSegment,\n ignoreTrailingSpaces: boolean = false\n) {\n const context = resetNormalizeSegmentContext();\n\n context.ignoreTrailingSpaces = ignoreTrailingSpaces;\n normalizeSegment(segment, context);\n}\n\n/**\n * @internal Export for test only\n */\nexport interface NormalizeSegmentContext {\n textSegments: ContentModelText[];\n ignoreLeadingSpaces: boolean;\n ignoreTrailingSpaces: boolean;\n lastTextSegment: ContentModelText | undefined;\n lastInlineSegment: ContentModelSegment | undefined;\n}\n\n/**\n * @internal Export for test only\n */\nexport function createNormalizeSegmentContext(): NormalizeSegmentContext {\n return resetNormalizeSegmentContext();\n}\n\nfunction resetNormalizeSegmentContext(\n context?: Partial\n): NormalizeSegmentContext {\n return Object.assign(context ?? {}, {\n textSegments: [],\n ignoreLeadingSpaces: true,\n ignoreTrailingSpaces: true,\n lastInlineSegment: undefined,\n lastTextSegment: undefined,\n });\n}\n\n/**\n * @internal Export for test only\n */\nexport function normalizeSegment(segment: ContentModelSegment, context: NormalizeSegmentContext) {\n switch (segment.segmentType) {\n case 'Br':\n normalizeTextSegments(context.textSegments, context.lastInlineSegment);\n normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);\n\n // Line ends, reset all states\n resetNormalizeSegmentContext(context);\n break;\n\n case 'Entity':\n case 'General':\n case 'Image':\n // Here \"inline segment\" means a segment showing some content inline such as text, image, or other inline HTML elements\n // BR will end current line, so it is not treated as \"inline\" here.\n // We will do some normalization to the trailing spaces for non-inline-segments\n context.lastInlineSegment = segment;\n context.ignoreLeadingSpaces = false;\n break;\n\n case 'Text':\n context.textSegments.push(segment);\n context.lastInlineSegment = segment;\n context.lastTextSegment = segment;\n\n const first = segment.text.substring(0, 1);\n const last = segment.text.substr(-1);\n\n if (!hasSpacesOnly(segment.text)) {\n if (first == SPACE) {\n // 1. Multiple leading space => single   or empty (depends on if previous segment ends with space)\n segment.text = segment.text.replace(\n LEADING_SPACE_REGEX,\n context.ignoreLeadingSpaces ? '' : NONE_BREAK_SPACE\n );\n }\n\n if (last == SPACE) {\n // 2. Multiple trailing space => single space\n segment.text = segment.text.replace(\n TRAILING_SPACE_REGEX,\n context.ignoreTrailingSpaces ? SPACE : NONE_BREAK_SPACE\n );\n }\n }\n\n context.ignoreLeadingSpaces = last == SPACE;\n\n break;\n }\n}\n\nfunction normalizeTextSegments(\n segments: ContentModelText[],\n lastInlineSegment: ContentModelSegment | undefined\n) {\n segments.forEach(segment => {\n // 3. Segment ends with   replace it with space if the previous char is not space so that next segment can wrap\n // Only do this for segments that is not the last one since the last space will be removed in step 4\n if (segment != lastInlineSegment) {\n const text = segment.text;\n\n if (\n text.substr(-1) == NONE_BREAK_SPACE &&\n text.length > 1 &&\n text.substr(-2, 1) != SPACE\n ) {\n segment.text = text.substring(0, text.length - 1) + SPACE;\n }\n }\n });\n}\n\nfunction normalizeLastTextSegment(\n segment: ContentModelText | undefined,\n lastInlineSegment: ContentModelSegment | undefined\n) {\n if (segment && segment == lastInlineSegment && segment?.text.substr(-1) == SPACE) {\n // 4. last text segment of the paragraph, remove trailing space\n segment.text = segment.text.replace(TRAILING_SPACE_REGEX, '');\n }\n}\n","import { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { setParagraphNotImplicit } from '../block/setParagraphNotImplicit';\n\n/**\n * Unwrap a given block group, move its child blocks to be under its parent group\n * @param parent Parent block group of the unwrapping group\n * @param groupToUnwrap The block group to unwrap\n */\nexport function unwrapBlock(\n parent: ContentModelBlockGroup | null,\n groupToUnwrap: ContentModelBlockGroup & ContentModelBlock\n) {\n const index = parent?.blocks.indexOf(groupToUnwrap) ?? -1;\n\n if (index >= 0) {\n groupToUnwrap.blocks.forEach(setParagraphNotImplicit);\n\n parent?.blocks.splice(index, 1, ...groupToUnwrap.blocks);\n }\n}\n","import { ContentModelBr, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelBr model\n * @param format @optional The format of this model\n */\nexport function createBr(format?: ContentModelSegmentFormat): ContentModelBr {\n return {\n segmentType: 'Br',\n format: format ? { ...format } : {},\n };\n}\n","import { ContentModelDocument, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelDocument model\n * @param defaultFormat @optional Default format of this model\n */\nexport function createContentModelDocument(\n defaultFormat?: ContentModelSegmentFormat\n): ContentModelDocument {\n const result: ContentModelDocument = {\n blockGroupType: 'Document',\n blocks: [],\n };\n\n if (defaultFormat) {\n result.format = defaultFormat;\n }\n\n return result;\n}\n","import { ContentModelBlockFormat, ContentModelDivider } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelDivider model\n * @param tagName Tag name of this divider. Currently only hr and div are supported\n * @param format @optional The format of this model\n */\nexport function createDivider(\n tagName: 'hr' | 'div',\n format?: ContentModelBlockFormat\n): ContentModelDivider {\n return {\n blockType: 'Divider',\n tagName,\n format: format ? { ...format } : {},\n };\n}\n","import { ContentModelEntity, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelEntity model\n * @param wrapper Wrapper element of this entity\n * @param isReadonly Whether this is a readonly entity\n * @param type @optional Type of this entity\n * @param segmentFormat @optional Segment format of this entity\n * @param id @optional Id of this entity\n */\nexport function createEntity(\n wrapper: HTMLElement,\n isReadonly: boolean,\n type?: string,\n segmentFormat?: ContentModelSegmentFormat,\n id?: string\n): ContentModelEntity {\n return {\n segmentType: 'Entity',\n blockType: 'Entity',\n format: { ...segmentFormat },\n id,\n type,\n isReadonly,\n wrapper,\n };\n}\n","import {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelFormatContainer model\n * @param tag Tag name of this format container, in lower case\n * @param format @optional The format of this model\n */\nexport function createFormatContainer(\n tag: Lowercase,\n format?: ContentModelFormatContainerFormat\n): ContentModelFormatContainer {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'FormatContainer',\n tagName: tag,\n blocks: [],\n format: { ...(format || {}) },\n };\n}\n","import { ContentModelGeneralBlock } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelGeneralBlock model\n * @param element Original element of this model\n */\nexport function createGeneralBlock(element: HTMLElement): ContentModelGeneralBlock {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'General',\n element: element,\n blocks: [],\n format: {},\n };\n}\n","import {\n ContentModelGeneralSegment,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelGeneralSegment model\n * @param element The original DOM element\n * @param format @optional The format of this model\n */\nexport function createGeneralSegment(\n element: HTMLElement,\n format?: ContentModelSegmentFormat\n): ContentModelGeneralSegment {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'General',\n segmentType: 'General',\n format: format ? { ...format } : {},\n blocks: [],\n element: element,\n };\n}\n","import { ContentModelImage, ContentModelImageFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelImage model\n * @param src Image source\n * @param format @optional The format of this model\n */\nexport function createImage(src: string, format?: ContentModelImageFormat): ContentModelImage {\n return {\n segmentType: 'Image',\n src: src,\n format: format ? { ...format } : {},\n dataset: {},\n };\n}\n","import { createListLevel } from './createListLevel';\nimport { createSelectionMarker } from './createSelectionMarker';\nimport {\n ContentModelListItem,\n ContentModelListLevel,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelListItem model\n * @param levels Existing list levels\n * @param format @optional The format of this model\n */\nexport function createListItem(\n levels: ContentModelListLevel[],\n format?: ContentModelSegmentFormat\n): ContentModelListItem {\n return {\n blockType: 'BlockGroup',\n blockGroupType: 'ListItem',\n blocks: [],\n levels: levels\n ? levels.map(level => createListLevel(level.listType, level.format, level.dataset))\n : [],\n formatHolder: createSelectionMarker(format),\n format: {},\n };\n}\n","import {\n ContentModelListItemLevelFormat,\n ContentModelListLevel,\n DatasetFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelListLevel model\n * @param listType Tag name of the list, either OL or UL\n * @param format @optional The format of this model\n * @param dataset @optional The dataset of this model\n */\nexport function createListLevel(\n listType: 'OL' | 'UL',\n format?: ContentModelListItemLevelFormat,\n dataset?: DatasetFormat\n): ContentModelListLevel {\n return {\n listType,\n format: { ...format },\n dataset: { ...dataset },\n };\n}\n","import type {\n ContentModelBlockFormat,\n ContentModelParagraph,\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelParagraph model\n * @param isImplicit @optional Whether this is an implicit paragraph. An implicit paragraph is a paragraph that will not render with DOM element container\n * @param blockFormat @optional Format of this paragraph\n * @param segmentFormat @optional Segment format applied to this block\n * @param decorator @optional Decorator of this paragraph\n */\nexport function createParagraph(\n isImplicit?: boolean,\n blockFormat?: ContentModelBlockFormat,\n segmentFormat?: ContentModelSegmentFormat,\n decorator?: ContentModelParagraphDecorator\n): ContentModelParagraph {\n const result: ContentModelParagraph = {\n blockType: 'Paragraph',\n segments: [],\n format: blockFormat ? { ...blockFormat } : {},\n };\n\n if (segmentFormat && Object.keys(segmentFormat).length > 0) {\n result.segmentFormat = { ...segmentFormat };\n }\n\n if (isImplicit) {\n result.isImplicit = true;\n }\n\n if (decorator) {\n result.decorator = {\n tagName: decorator.tagName,\n format: { ...decorator.format },\n };\n }\n\n return result;\n}\n","import {\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelParagraphDecorator model\n * @param tagName Tag name of this decorator\n * @param format @optional The format of this model\n */\nexport function createParagraphDecorator(\n tagName: string,\n format?: ContentModelSegmentFormat\n): ContentModelParagraphDecorator {\n return {\n tagName: tagName.toLocaleLowerCase(),\n format: { ...(format || {}) },\n };\n}\n","import {\n ContentModelSegmentFormat,\n ContentModelSelectionMarker,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelSelectionMarker model\n * @param format @optional The format of this model\n */\nexport function createSelectionMarker(\n format?: ContentModelSegmentFormat\n): ContentModelSelectionMarker {\n return {\n segmentType: 'SelectionMarker',\n isSelected: true,\n format: format ? { ...format } : {},\n };\n}\n","import {\n ContentModelTable,\n ContentModelTableFormat,\n ContentModelTableRow,\n} from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelTable model\n * @param rowCount Count of rows of this table\n * @param format @optional The format of this model\n */\nexport function createTable(rowCount: number, format?: ContentModelTableFormat): ContentModelTable {\n const rows: ContentModelTableRow[] = [];\n\n for (let i = 0; i < rowCount; i++) {\n rows.push({\n height: 0,\n format: {},\n cells: [],\n });\n }\n\n return {\n blockType: 'Table',\n rows,\n format: { ...(format || {}) },\n widths: [],\n dataset: {},\n };\n}\n","import { ContentModelTableCell, ContentModelTableCellFormat } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelTableCell model\n * @param spanLeftOrColSpan @optional Whether this is a table cell merged with its left cell, or colspan number @default false\n * @param spanAboveOrRowSpan Whether this is a table cell merged with its upper cell, or rowSpan number @default false\n * @param isHeader @optional Whether this is a header cell @default false\n * @param format @optional The format of this model\n */\nexport function createTableCell(\n spanLeftOrColSpan?: boolean | number,\n spanAboveOrRowSpan?: boolean | number,\n isHeader?: boolean,\n format?: ContentModelTableCellFormat\n): ContentModelTableCell {\n const spanLeft =\n typeof spanLeftOrColSpan === 'number' ? spanLeftOrColSpan > 1 : !!spanLeftOrColSpan;\n const spanAbove =\n typeof spanAboveOrRowSpan === 'number' ? spanAboveOrRowSpan > 1 : !!spanAboveOrRowSpan;\n return {\n blockGroupType: 'TableCell',\n blocks: [],\n format: format ? { ...format } : {},\n spanLeft,\n spanAbove,\n isHeader: !!isHeader,\n dataset: {},\n };\n}\n","import { ContentModelSegmentFormat, ContentModelText } from 'roosterjs-content-model-types';\n\n/**\n * Create a ContentModelText model\n * @param text Text of this model\n * @param format @optional The format of this model\n */\nexport function createText(text: string, format?: ContentModelSegmentFormat): ContentModelText {\n return {\n segmentType: 'Text',\n text: text,\n format: format ? { ...format } : {},\n };\n}\n","import { createModelToDomContext } from './context/createModelToDomContext';\nimport { createRange, Position, toArray } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../domUtils/isNodeOfType';\nimport {\n ContentModelDocument,\n EditorContext,\n ModelToDomBlockAndSegmentNode,\n ModelToDomContext,\n ModelToDomOption,\n} from 'roosterjs-content-model-types';\nimport {\n NodePosition,\n NodeType,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * Create DOM tree fragment from Content Model document\n * @param doc Document object of the target DOM tree\n * @param root Target node that will become the container of new DOM tree.\n * When a DOM node with existing node is passed, it will be merged with content model so that unchanged blocks\n * won't be touched.\n * @param model The content model document to generate DOM tree from\n * @param editorContext Content for Content Model editor\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n * @returns A tuple of the following 3 objects:\n * 1. Document Fragment that contains the DOM tree generated from the given model\n * 2. A SelectionRangeEx object that contains selection info from the model if any, or null\n * 3. An array entity DOM wrapper and its placeholder node pair for reusable root level entities.\n */\nexport function contentModelToDom(\n doc: Document,\n root: Node,\n model: ContentModelDocument,\n editorContext?: EditorContext,\n option?: ModelToDomOption\n): SelectionRangeEx | null {\n const modelToDomContext = createModelToDomContext(editorContext, option);\n\n modelToDomContext.modelHandlers.blockGroupChildren(doc, root, model, modelToDomContext);\n\n const range = extractSelectionRange(modelToDomContext);\n\n root.normalize();\n\n return range;\n}\n\nfunction extractSelectionRange(context: ModelToDomContext): SelectionRangeEx | null {\n const {\n regularSelection: { start, end },\n tableSelection,\n imageSelection,\n } = context;\n\n let startPosition: NodePosition | undefined;\n let endPosition: NodePosition | undefined;\n\n if (imageSelection?.image) {\n return {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [createRange(imageSelection.image)],\n areAllCollapsed: false,\n image: imageSelection.image,\n };\n } else if (\n (startPosition = start && calcPosition(start)) &&\n (endPosition = end && calcPosition(end))\n ) {\n const range = createRange(startPosition, endPosition);\n\n return {\n type: SelectionRangeTypes.Normal,\n ranges: [createRange(startPosition, endPosition)],\n areAllCollapsed: range.collapsed,\n };\n } else if (tableSelection?.table) {\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges: [],\n areAllCollapsed: false,\n table: tableSelection.table,\n coordinates: {\n firstCell: tableSelection.firstCell,\n lastCell: tableSelection.lastCell,\n },\n };\n } else {\n return null;\n }\n}\n\nfunction calcPosition(pos: ModelToDomBlockAndSegmentNode): NodePosition | undefined {\n let result: NodePosition | undefined;\n\n if (pos.block) {\n if (!pos.segment) {\n result = new Position(pos.block, 0);\n } else if (isNodeOfType(pos.segment, NodeType.Text)) {\n result = new Position(pos.segment, pos.segment.nodeValue?.length || 0);\n } else {\n result = new Position(\n pos.segment.parentNode!,\n toArray(pos.segment.parentNode!.childNodes as NodeListOf).indexOf(\n pos.segment!\n ) + 1\n );\n }\n }\n\n if (isNodeOfType(result?.node, NodeType.DocumentFragment)) {\n result = result?.normalize();\n }\n\n return result;\n}\n","import { defaultContentModelHandlers } from './defaultContentModelHandlers';\nimport { defaultImplicitFormatMap } from '../../formatHandlers/utils/defaultStyles';\nimport { EditorContext, ModelToDomContext, ModelToDomOption } from 'roosterjs-content-model-types';\nimport {\n defaultFormatAppliers,\n getFormatAppliers,\n} from '../../formatHandlers/defaultFormatHandlers';\n\n/**\n * @internal\n * @param editorContext\n * @returns\n */\nexport function createModelToDomContext(\n editorContext?: EditorContext,\n options?: ModelToDomOption\n): ModelToDomContext {\n options = options || {};\n\n return {\n ...editorContext,\n\n regularSelection: {\n current: {\n block: null,\n segment: null,\n },\n },\n listFormat: {\n threadItemCounts: [],\n nodeStack: [],\n },\n implicitFormat: {},\n formatAppliers: getFormatAppliers(\n options.formatApplierOverride,\n options.additionalFormatAppliers\n ),\n modelHandlers: {\n ...defaultContentModelHandlers,\n ...(options.modelHandlerOverride || {}),\n },\n defaultImplicitFormatMap: {\n ...defaultImplicitFormatMap,\n ...(options.defaultImplicitFormatOverride || {}),\n },\n\n defaultModelHandlers: defaultContentModelHandlers,\n defaultFormatAppliers: defaultFormatAppliers,\n onNodeCreated: options.onNodeCreated,\n };\n}\n","import { ContentModelHandlerMap } from 'roosterjs-content-model-types';\nimport { handleBlock } from '../handlers/handleBlock';\nimport { handleBlockGroupChildren } from '../handlers/handleBlockGroupChildren';\nimport { handleBr } from '../handlers/handleBr';\nimport { handleDivider } from '../handlers/handleDivider';\nimport { handleEntity } from '../handlers/handleEntity';\nimport { handleFormatContainer } from '../handlers/handleFormatContainer';\nimport { handleGeneralModel } from '../handlers/handleGeneralModel';\nimport { handleImage } from '../handlers/handleImage';\nimport { handleList } from '../handlers/handleList';\nimport { handleListItem } from '../handlers/handleListItem';\nimport { handleParagraph } from '../handlers/handleParagraph';\nimport { handleSegment } from '../handlers/handleSegment';\nimport { handleSegmentDecorator } from '../handlers/handleSegmentDecorator';\nimport { handleTable } from '../handlers/handleTable';\nimport { handleText } from '../handlers/handleText';\n\n/**\n * @internal\n */\nexport const defaultContentModelHandlers: ContentModelHandlerMap = {\n block: handleBlock,\n blockGroupChildren: handleBlockGroupChildren,\n br: handleBr,\n entity: handleEntity,\n general: handleGeneralModel,\n divider: handleDivider,\n image: handleImage,\n list: handleList,\n listItem: handleListItem,\n paragraph: handleParagraph,\n formatContainer: handleFormatContainer,\n segment: handleSegment,\n segmentDecorator: handleSegmentDecorator,\n table: handleTable,\n text: handleText,\n};\n","import {\n ContentModelBlock,\n ContentModelBlockHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBlock: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n block: ContentModelBlock,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n const handlers = context.modelHandlers;\n\n switch (block.blockType) {\n case 'Table':\n refNode = handlers.table(doc, parent, block, context, refNode);\n break;\n case 'Paragraph':\n refNode = handlers.paragraph(doc, parent, block, context, refNode);\n break;\n case 'Entity':\n refNode = handlers.entity(doc, parent, block, context, refNode);\n break;\n case 'Divider':\n refNode = handlers.divider(doc, parent, block, context, refNode);\n break;\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'General':\n refNode = handlers.general(doc, parent, block, context, refNode);\n break;\n\n case 'FormatContainer':\n refNode = handlers.formatContainer(doc, parent, block, context, refNode);\n break;\n\n case 'ListItem':\n refNode = handlers.listItem(doc, parent, block, context, refNode);\n break;\n }\n\n break;\n }\n\n return refNode;\n};\n","import {\n ContentModelBlockGroup,\n ContentModelHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBlockGroupChildren: ContentModelHandler = (\n doc: Document,\n parent: Node,\n group: ContentModelBlockGroup,\n context: ModelToDomContext\n) => {\n const { listFormat } = context;\n const nodeStack = listFormat.nodeStack;\n let refNode: Node | null = parent.firstChild;\n\n try {\n group.blocks.forEach((childBlock, index) => {\n // When process list, we need a node stack.\n // When there are two continuous lists, they should share the same stack\n // so that list items with same type/threadId can be merged into the same list element\n // In other cases, clear the stack so that two separate lists won't share the same list element\n if (\n index == 0 ||\n childBlock.blockType != 'BlockGroup' ||\n childBlock.blockGroupType != 'ListItem'\n ) {\n listFormat.nodeStack = [];\n }\n\n refNode = context.modelHandlers.block(doc, parent, childBlock, context, refNode);\n });\n\n // Remove all rest node if any since they don't appear in content model\n while (refNode) {\n const next = refNode.nextSibling;\n\n refNode.parentNode?.removeChild(refNode);\n refNode = next;\n }\n } finally {\n listFormat.nodeStack = nodeStack;\n }\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport {\n ContentModelBr,\n ContentModelHandler,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleBr: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelBr,\n context: ModelToDomContext\n) => {\n const br = doc.createElement('br');\n const element = doc.createElement('span');\n element.appendChild(br);\n parent.appendChild(element);\n\n handleSegmentCommon(doc, br, element, segment, context);\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelDivider,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleDivider: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n divider: ContentModelDivider,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let element = context.allowCacheElement ? divider.cachedElement : undefined;\n\n if (element) {\n refNode = reuseCachedElement(parent, element, refNode);\n } else {\n element = doc.createElement(divider.tagName);\n\n if (context.allowCacheElement) {\n divider.cachedElement = element;\n }\n\n parent.insertBefore(element, refNode);\n\n applyFormat(element, context.formatAppliers.divider, divider.format, context);\n\n if (divider.size) {\n element.setAttribute('size', divider.size);\n }\n }\n\n context.onNodeCreated?.(divider, element);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { Entity } from 'roosterjs-editor-types';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelEntity,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\nimport {\n addDelimiters,\n commitEntity,\n getObjectKeys,\n isBlockElement,\n wrap,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\nexport const handleEntity: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n entityModel: ContentModelEntity,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n const { id, type, isReadonly, format } = entityModel;\n let wrapper = entityModel.wrapper;\n\n if (!context.allowCacheElement) {\n wrapper = wrapper.cloneNode(true /*deep*/) as HTMLElement;\n wrapper.style.color = wrapper.style.color || 'inherit';\n wrapper.style.backgroundColor = wrapper.style.backgroundColor || 'inherit';\n }\n\n const entity: Entity | null =\n id && type\n ? {\n wrapper,\n id,\n type,\n isReadonly: !!isReadonly,\n }\n : null;\n const isInlineEntity = !isBlockElement(wrapper);\n\n if (entity) {\n // Commit the entity attributes in case there is any change\n commitEntity(wrapper, entity.type, entity.isReadonly, entity.id);\n }\n\n refNode = reuseCachedElement(parent, wrapper, refNode);\n\n if (isInlineEntity && getObjectKeys(format).length > 0) {\n const span = wrap(wrapper, 'span');\n\n applyFormat(span, context.formatAppliers.segment, format, context);\n }\n\n if (context.addDelimiterForEntity && isInlineEntity && isReadonly) {\n const [after] = addDelimiters(wrapper);\n\n context.regularSelection.current.segment = after;\n } else if (isInlineEntity) {\n context.regularSelection.current.segment = wrapper;\n }\n\n context.onNodeCreated?.(entityModel, wrapper);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { isBlockGroupEmpty } from '../../modelApi/common/isEmpty';\nimport { PseudoTagNames } from '../../formatHandlers/utils/defaultStyles';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelBlockHandler,\n ContentModelFormatContainer,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleFormatContainer: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n container: ContentModelFormatContainer,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let element = context.allowCacheElement ? container.cachedElement : undefined;\n\n if (element) {\n refNode = reuseCachedElement(parent, element, refNode);\n\n context.modelHandlers.blockGroupChildren(doc, element, container, context);\n } else if (!isBlockGroupEmpty(container)) {\n const containerNode = doc.createElement(container.tagName);\n\n if (context.allowCacheElement) {\n container.cachedElement = containerNode;\n }\n\n parent.insertBefore(containerNode, refNode);\n\n stackFormat(context, container.tagName, () => {\n applyFormat(containerNode, context.formatAppliers.container, container.format, context);\n applyFormat(\n containerNode,\n context.formatAppliers.segmentOnBlock,\n container.format,\n context\n );\n\n applyFormat(containerNode, context.formatAppliers.container, container.format, context);\n });\n\n if (container.tagName == 'pre') {\n stackFormat(context, PseudoTagNames.childOfPre, () => {\n context.modelHandlers.blockGroupChildren(doc, containerNode, container, context);\n });\n } else {\n context.modelHandlers.blockGroupChildren(doc, containerNode, container, context);\n }\n\n element = containerNode;\n }\n\n if (element) {\n context.onNodeCreated?.(container, element);\n }\n\n return refNode;\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport { isGeneralSegment } from '../../modelApi/common/isGeneralSegment';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { wrap } from 'roosterjs-editor-dom';\nimport {\n ContentModelBlockHandler,\n ContentModelGeneralBlock,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleGeneralModel: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n group: ContentModelGeneralBlock,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let node: Node = group.element;\n\n if (refNode && node.parentNode == parent) {\n refNode = reuseCachedElement(parent, node, refNode);\n } else {\n node = node.cloneNode();\n group.element = node as HTMLElement;\n\n parent.insertBefore(node, refNode);\n }\n\n if (isGeneralSegment(group) && isNodeOfType(node, NodeType.Element)) {\n const element = wrap(node, 'span');\n\n handleSegmentCommon(doc, node, element, group, context);\n } else {\n context.onNodeCreated?.(group, node);\n }\n\n context.modelHandlers.blockGroupChildren(doc, node, group, context);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport { parseValueWithUnit } from '../../formatHandlers/utils/parseValueWithUnit';\nimport {\n ContentModelHandler,\n ContentModelImage,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleImage: ContentModelHandler = (\n doc: Document,\n parent: Node,\n imageModel: ContentModelImage,\n context: ModelToDomContext\n) => {\n const img = doc.createElement('img');\n const element = document.createElement('span');\n\n parent.appendChild(element);\n element.appendChild(img);\n\n img.src = imageModel.src;\n\n if (imageModel.alt) {\n img.alt = imageModel.alt;\n }\n\n if (imageModel.title) {\n img.title = imageModel.title;\n }\n\n applyFormat(img, context.formatAppliers.image, imageModel.format, context);\n applyFormat(img, context.formatAppliers.dataset, imageModel.dataset, context);\n\n const { width, height } = imageModel.format;\n const widthNum = width ? parseValueWithUnit(width) : 0;\n const heightNum = height ? parseValueWithUnit(height) : 0;\n\n if (widthNum > 0) {\n img.width = widthNum;\n }\n\n if (heightNum > 0) {\n img.height = heightNum;\n }\n\n if (imageModel.isSelectedAsImageSelection) {\n context.imageSelection = {\n image: img,\n };\n }\n\n handleSegmentCommon(doc, img, element, imageModel, context);\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { listLevelMetadataFormatHandler } from '../../formatHandlers/list/listLevelMetadataFormatHandler';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\nimport {\n ContentModelBlockHandler,\n ContentModelListItem,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleList: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n listItem: ContentModelListItem,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let layer = 0;\n const { nodeStack } = context.listFormat;\n\n if (nodeStack.length == 0) {\n nodeStack.push({\n node: parent,\n });\n }\n\n // Skip existing list levels that has same properties so we can reuse them\n for (; layer < listItem.levels.length && layer + 1 < nodeStack.length; layer++) {\n const stackLevel = nodeStack[layer + 1];\n const itemLevel = listItem.levels[layer];\n\n if (\n stackLevel.listType != itemLevel.listType ||\n stackLevel.dataset?.editingInfo != itemLevel.dataset.editingInfo ||\n (itemLevel.listType == 'OL' && typeof itemLevel.format.startNumberOverride === 'number')\n ) {\n break;\n }\n }\n\n // Cut off remained list levels that we can't reuse\n nodeStack.splice(layer + 1);\n\n // Create new list levels that are after reused ones\n for (; layer < listItem.levels.length; layer++) {\n const level = listItem.levels[layer];\n const newList = doc.createElement(level.listType || 'UL');\n const lastParent = nodeStack[nodeStack.length - 1].node;\n\n lastParent.insertBefore(newList, layer == 0 ? refNode : null);\n\n applyFormat(newList, context.formatAppliers.listLevel, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n applyFormat(newList, [listLevelMetadataFormatHandler.apply], metadata || {}, context);\n\n if (\n metadata &&\n typeof metadata.orderedStyleType == 'undefined' &&\n typeof metadata.unorderedStyleType == 'undefined'\n ) {\n metadata = null;\n }\n\n return metadata;\n });\n applyFormat(newList, context.formatAppliers.dataset, level.dataset, context);\n\n nodeStack.push({ node: newList, ...level });\n\n context.onNodeCreated?.(level, newList);\n }\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { listItemMetadataFormatHandler } from '../../formatHandlers/list/listItemMetadataFormatHandler';\nimport { setParagraphNotImplicit } from '../../modelApi/block/setParagraphNotImplicit';\nimport { unwrap } from 'roosterjs-editor-dom';\nimport { updateListMetadata } from '../../domUtils/metadata/updateListMetadata';\nimport {\n ContentModelBlockHandler,\n ContentModelListItem,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleListItem: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n listItem: ContentModelListItem,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n refNode = context.modelHandlers.list(doc, parent, listItem, context, refNode);\n\n const { nodeStack } = context.listFormat;\n\n let listParent = nodeStack?.[nodeStack?.length - 1]?.node || parent;\n const li = doc.createElement('li');\n const level = listItem.levels[listItem.levels.length - 1];\n\n // It is possible listParent is the same with parent param.\n // This happens when outdent a list item to cause it has no list level\n listParent.insertBefore(li, refNode?.parentNode == listParent ? refNode : null);\n\n if (level) {\n applyFormat(li, context.formatAppliers.listItemElement, listItem.format, context);\n applyFormat(li, context.formatAppliers.segment, listItem.formatHolder.format, context);\n applyFormat(li, context.formatAppliers.listItem, level.format, context);\n\n // TODO: Move this out into roosterjs-content-model-editor package\n updateListMetadata(level, metadata => {\n applyFormat(li, [listItemMetadataFormatHandler.apply], metadata || {}, context);\n\n return metadata;\n });\n\n context.modelHandlers.blockGroupChildren(doc, li, listItem, context);\n } else {\n // There is no level for this list item, that means it should be moved out of the list\n // For each paragraph, make it not implicit so it will have a DIV around it, to avoid more paragraphs connected together\n listItem.blocks.forEach(setParagraphNotImplicit);\n\n context.modelHandlers.blockGroupChildren(doc, li, listItem, context);\n\n unwrap(li);\n }\n\n context.onNodeCreated?.(listItem, li);\n\n return refNode;\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { getObjectKeys, unwrap } from 'roosterjs-editor-dom';\nimport { optimize } from '../optimizers/optimize';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport { stackFormat } from '../utils/stackFormat';\nimport {\n ContentModelBlockHandler,\n ContentModelParagraph,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\nconst DefaultParagraphTag = 'div';\n\n/**\n * @internal\n */\nexport const handleParagraph: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n paragraph: ContentModelParagraph,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n let container = context.allowCacheElement ? paragraph.cachedElement : undefined;\n\n if (container) {\n refNode = reuseCachedElement(parent, container, refNode);\n } else {\n stackFormat(context, paragraph.decorator?.tagName || null, () => {\n const needParagraphWrapper =\n !paragraph.isImplicit ||\n !!paragraph.decorator ||\n (getObjectKeys(paragraph.format).length > 0 &&\n paragraph.segments.some(segment => segment.segmentType != 'SelectionMarker'));\n const formatOnWrapper = needParagraphWrapper\n ? {\n ...(paragraph.decorator?.format || {}),\n ...paragraph.segmentFormat,\n }\n : {};\n\n container = doc.createElement(paragraph.decorator?.tagName || DefaultParagraphTag);\n\n parent.insertBefore(container, refNode);\n\n context.regularSelection.current = {\n block: needParagraphWrapper ? container : container.parentNode,\n segment: null,\n };\n\n const handleSegments = () => {\n const parent = container;\n\n if (parent) {\n const firstSegment = paragraph.segments[0];\n\n if (firstSegment?.segmentType == 'SelectionMarker') {\n // Make sure there is a segment created before selection marker.\n // If selection marker is the first selected segment in a paragraph, create a dummy text node,\n // so after rewrite, the regularSelection object can have a valid segment object set to the text node.\n context.modelHandlers.text(\n doc,\n parent,\n {\n ...firstSegment,\n segmentType: 'Text',\n text: '',\n },\n context\n );\n }\n\n paragraph.segments.forEach(segment => {\n context.modelHandlers.segment(doc, parent, segment, context);\n });\n }\n };\n\n if (needParagraphWrapper) {\n stackFormat(context, formatOnWrapper, handleSegments);\n\n applyFormat(container, context.formatAppliers.block, paragraph.format, context);\n applyFormat(container, context.formatAppliers.container, paragraph.format, context);\n applyFormat(\n container,\n context.formatAppliers.segmentOnBlock,\n formatOnWrapper,\n context\n );\n } else {\n handleSegments();\n }\n\n optimize(container);\n\n // It is possible the next sibling node is changed during processing child segments\n // e.g. When this paragraph is an implicit paragraph and it contains an inline entity segment\n // The segment will be appended to container as child then the container will be removed\n // since this paragraph it is implicit. In that case container.nextSibling will become original\n // inline entity's next sibling. So reset refNode to its real next sibling (after change) here\n // to make sure the value is correct.\n refNode = container.nextSibling;\n\n if (needParagraphWrapper) {\n if (context.allowCacheElement) {\n paragraph.cachedElement = container;\n }\n } else {\n unwrap(container);\n }\n });\n }\n\n if (container) {\n context.onNodeCreated?.(paragraph, container);\n }\n\n return refNode;\n};\n","import {\n ContentModelHandler,\n ContentModelSegment,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleSegment: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelSegment,\n context: ModelToDomContext\n) => {\n const regularSelection = context.regularSelection;\n\n // If start position is not set yet, and current segment is in selection, set start position\n if (segment.isSelected && !regularSelection.start) {\n regularSelection.start = {\n ...regularSelection.current,\n };\n }\n\n switch (segment.segmentType) {\n case 'Text':\n context.modelHandlers.text(doc, parent, segment, context);\n break;\n\n case 'Br':\n context.modelHandlers.br(doc, parent, segment, context);\n break;\n\n case 'Image':\n context.modelHandlers.image(doc, parent, segment, context);\n break;\n\n case 'General':\n context.modelHandlers.general(doc, parent, segment, context, null /*refNode*/);\n break;\n\n case 'Entity':\n context.modelHandlers.entity(doc, parent, segment, context, null /*refNode*/);\n break;\n }\n\n // If end position is not set, or it is not finalized, and current segment is still in selection, set end position\n // If there is other selection, we will overwrite regularSelection.end when we process that segment\n if (segment.isSelected && regularSelection.start) {\n regularSelection.end = {\n ...regularSelection.current,\n };\n }\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { ContentModelHandler, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { stackFormat } from '../utils/stackFormat';\n\n/**\n * @internal\n */\nexport const handleSegmentDecorator: ContentModelHandler = (\n doc,\n parent,\n segment,\n context\n) => {\n const { code, link } = segment;\n\n if (link) {\n stackFormat(context, 'a', () => {\n const a = document.createElement('a');\n\n moveChildNodes(a, parent);\n parent.appendChild(a);\n\n applyFormat(a, context.formatAppliers.link, link.format, context);\n applyFormat(a, context.formatAppliers.dataset, link.dataset, context);\n\n context.onNodeCreated?.(link, a);\n });\n }\n\n if (code) {\n stackFormat(context, 'code', () => {\n const codeNode = document.createElement('code');\n\n moveChildNodes(codeNode, parent);\n parent.appendChild(codeNode);\n\n applyFormat(codeNode, context.formatAppliers.code, code.format, context);\n\n context.onNodeCreated?.(code, codeNode);\n });\n }\n};\n","import { applyFormat } from '../utils/applyFormat';\nimport { hasMetadata } from '../../domUtils/metadata/updateMetadata';\nimport { isBlockEmpty } from '../../modelApi/common/isEmpty';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\nimport { reuseCachedElement } from '../utils/reuseCachedElement';\nimport {\n ContentModelBlockHandler,\n ContentModelTable,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleTable: ContentModelBlockHandler = (\n doc: Document,\n parent: Node,\n table: ContentModelTable,\n context: ModelToDomContext,\n refNode: Node | null\n) => {\n if (isBlockEmpty(table)) {\n // Empty table, do not create TABLE element and just return\n return refNode;\n }\n\n let tableNode = context.allowCacheElement ? table.cachedElement : undefined;\n\n if (tableNode) {\n refNode = reuseCachedElement(parent, tableNode, refNode);\n\n moveChildNodes(tableNode);\n } else {\n tableNode = doc.createElement('table');\n\n if (context.allowCacheElement) {\n table.cachedElement = tableNode;\n }\n\n parent.insertBefore(tableNode, refNode);\n\n applyFormat(tableNode, context.formatAppliers.block, table.format, context);\n applyFormat(tableNode, context.formatAppliers.table, table.format, context);\n applyFormat(tableNode, context.formatAppliers.tableBorder, table.format, context);\n applyFormat(tableNode, context.formatAppliers.dataset, table.dataset, context);\n }\n\n context.onNodeCreated?.(table, tableNode);\n\n const tbody = doc.createElement('tbody');\n tableNode.appendChild(tbody);\n\n for (let row = 0; row < table.rows.length; row++) {\n const tableRow = table.rows[row];\n\n if (tableRow.cells.length == 0) {\n // Skip empty row\n continue;\n }\n\n const tr = (context.allowCacheElement && tableRow.cachedElement) || doc.createElement('tr');\n tbody.appendChild(tr);\n moveChildNodes(tr);\n\n if (!tableRow.cachedElement) {\n if (context.allowCacheElement) {\n tableRow.cachedElement = tr;\n }\n\n applyFormat(tr, context.formatAppliers.tableRow, tableRow.format, context);\n }\n\n context.onNodeCreated?.(tableRow, tr);\n\n for (let col = 0; col < tableRow.cells.length; col++) {\n const cell = tableRow.cells[col];\n\n if (cell.isSelected) {\n context.tableSelection = context.tableSelection || {\n table: tableNode,\n firstCell: { x: col, y: row },\n lastCell: { x: col, y: row },\n };\n\n if (context.tableSelection.table == tableNode) {\n const lastCell = context.tableSelection.lastCell;\n\n lastCell.x = Math.max(lastCell.x, col);\n lastCell.y = Math.max(lastCell.y, row);\n }\n }\n\n if (!cell.spanAbove && !cell.spanLeft) {\n let td =\n (context.allowCacheElement && cell.cachedElement) ||\n doc.createElement(cell.isHeader ? 'th' : 'td');\n\n tr.appendChild(td);\n\n let rowSpan = 1;\n let colSpan = 1;\n let width = table.widths[col];\n let height = tableRow.height;\n\n for (; table.rows[row + rowSpan]?.cells[col]?.spanAbove; rowSpan++) {\n height += table.rows[row + rowSpan].height;\n }\n for (; tableRow.cells[col + colSpan]?.spanLeft; colSpan++) {\n width += table.widths[col + colSpan];\n }\n\n if (rowSpan > 1) {\n td.rowSpan = rowSpan;\n }\n\n if (colSpan > 1) {\n td.colSpan = colSpan;\n }\n\n if (!cell.cachedElement || (cell.format.useBorderBox && hasMetadata(table))) {\n if (width > 0 && !td.style.width) {\n td.style.width = width + 'px';\n }\n\n if (height > 0 && !td.style.height) {\n td.style.height = height + 'px';\n }\n }\n\n if (!cell.cachedElement) {\n if (context.allowCacheElement) {\n cell.cachedElement = td;\n }\n\n applyFormat(td, context.formatAppliers.block, cell.format, context);\n applyFormat(td, context.formatAppliers.tableCell, cell.format, context);\n applyFormat(td, context.formatAppliers.tableCellBorder, cell.format, context);\n applyFormat(td, context.formatAppliers.dataset, cell.dataset, context);\n }\n\n context.modelHandlers.blockGroupChildren(doc, td, cell, context);\n\n context.onNodeCreated?.(cell, td);\n }\n }\n }\n\n return refNode;\n};\n","import { handleSegmentCommon } from '../utils/handleSegmentCommon';\nimport {\n ContentModelHandler,\n ContentModelText,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport const handleText: ContentModelHandler = (\n doc: Document,\n parent: Node,\n segment: ContentModelText,\n context: ModelToDomContext\n) => {\n const txt = doc.createTextNode(segment.text);\n const element = doc.createElement('span');\n\n parent.appendChild(element);\n element.appendChild(txt);\n\n handleSegmentCommon(doc, txt, element, segment, context);\n};\n","import { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\nconst OptimizeTags = ['SPAN', 'B', 'EM', 'I', 'U', 'SUB', 'SUP', 'STRIKE', 'S', 'A', 'CODE'];\n\n/**\n * @internal\n */\nexport function mergeNode(root: Node) {\n for (let child = root.firstChild; child; ) {\n const next = child.nextSibling;\n\n if (\n next &&\n isNodeOfType(child, NodeType.Element) &&\n isNodeOfType(next, NodeType.Element) &&\n child.tagName == next.tagName &&\n OptimizeTags.indexOf(child.tagName) >= 0 &&\n hasSameAttributes(child, next)\n ) {\n while (next.firstChild) {\n child.appendChild(next.firstChild);\n }\n\n next.parentNode!.removeChild(next);\n } else {\n child = next;\n }\n }\n}\n\nfunction hasSameAttributes(element1: HTMLElement, element2: HTMLElement) {\n const attr1 = element1.attributes;\n const attr2 = element2.attributes;\n\n if (attr1.length != attr2.length) {\n return false;\n }\n\n for (let i = 0; i < attr1.length; i++) {\n if (attr1[i].name != attr2[i].name || attr1[i].value != attr2[i].value) {\n return false;\n }\n }\n\n return true;\n}\n","import { EntityClasses, NodeType } from 'roosterjs-editor-types';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { mergeNode } from './mergeNode';\nimport { removeUnnecessarySpan } from './removeUnnecessarySpan';\n\n/**\n * @internal\n */\nexport function optimize(root: Node) {\n /**\n * Do no do any optimization to entity\n */\n if (\n isNodeOfType(root, NodeType.Element) &&\n root.classList.contains(EntityClasses.ENTITY_INFO_NAME)\n ) {\n return;\n }\n\n removeUnnecessarySpan(root);\n mergeNode(root);\n\n for (let child = root.firstChild; child; child = child.nextSibling) {\n optimize(child);\n }\n}\n","import { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function removeUnnecessarySpan(root: Node) {\n for (let child = root.firstChild; child; ) {\n if (\n isNodeOfType(child, NodeType.Element) &&\n child.tagName == 'SPAN' &&\n child.attributes.length == 0\n ) {\n const node = child;\n let refNode = child.nextSibling;\n child = child.nextSibling;\n\n while (node.lastChild) {\n const newNode = node.lastChild;\n root.insertBefore(newNode, refNode);\n refNode = newNode;\n }\n\n root.removeChild(node);\n } else {\n child = child.nextSibling;\n }\n }\n}\n","import {\n ContentModelFormatBase,\n FormatApplier,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Apply formats to the given HTML element using specified appliers\n * @param element The element to apply formats to\n * @param appliers The appliers we are using to apply formats\n * @param format The format object we get format info from\n * @param context Content Model to DOM context\n */\nexport function applyFormat(\n element: HTMLElement,\n appliers: (FormatApplier | null)[],\n format: T,\n context: ModelToDomContext\n) {\n appliers.forEach(applier => {\n applier?.(format, element, context);\n });\n}\n","import { applyFormat } from './applyFormat';\nimport { ContentModelSegment, ModelToDomContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function handleSegmentCommon(\n doc: Document,\n segmentNode: Node,\n containerNode: HTMLElement,\n segment: ContentModelSegment,\n context: ModelToDomContext\n) {\n if (!segmentNode.firstChild) {\n context.regularSelection.current.segment = segmentNode;\n }\n\n applyFormat(containerNode, context.formatAppliers.styleBasedSegment, segment.format, context);\n\n context.modelHandlers.segmentDecorator(doc, containerNode, segment, context);\n\n applyFormat(containerNode, context.formatAppliers.elementBasedSegment, segment.format, context);\n\n context.onNodeCreated?.(segment, segmentNode);\n}\n","import { getEntityFromElement } from 'roosterjs-editor-dom';\nimport { isNodeOfType } from '../../domUtils/isNodeOfType';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function reuseCachedElement(parent: Node, element: Node, refNode: Node | null): Node | null {\n if (element.parentNode == parent) {\n // Remove nodes before the one we are hitting since they don't appear in Content Model at this position.\n // But we don't want to touch entity since it would better to keep entity at its place unless it is removed\n // In that case we will remove it after we have handled all other nodes\n while (refNode && refNode != element && !isEntity(refNode)) {\n const next = refNode.nextSibling;\n\n refNode.parentNode?.removeChild(refNode);\n refNode = next;\n }\n\n if (refNode && refNode == element) {\n refNode = refNode.nextSibling;\n } else {\n parent.insertBefore(element, refNode);\n }\n } else {\n parent.insertBefore(element, refNode);\n }\n\n return refNode;\n}\n\n/**\n * @internal\n */\nexport function removeNode(node: Node): Node | null {\n const next = node.nextSibling;\n node.parentNode?.removeChild(node);\n\n return next;\n}\n\nfunction isEntity(node: Node) {\n return isNodeOfType(node, NodeType.Element) && !!getEntityFromElement(node);\n}\n","import {\n ContentModelBlockFormat,\n ContentModelSegmentFormat,\n ModelToDomContext,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function stackFormat(\n context: ModelToDomContext,\n tagNameOrFormat: string | (ContentModelSegmentFormat & ContentModelBlockFormat) | null,\n callback: () => void\n) {\n const newFormat =\n typeof tagNameOrFormat === 'string'\n ? context.defaultImplicitFormatMap[tagNameOrFormat]\n : tagNameOrFormat;\n\n if (newFormat) {\n const implicitFormat = context.implicitFormat;\n\n try {\n context.implicitFormat = {\n ...implicitFormat,\n ...newFormat,\n };\n\n callback();\n } finally {\n context.implicitFormat = implicitFormat;\n }\n } else {\n callback();\n }\n}\n","import { contains } from 'roosterjs-editor-dom';\nimport { DomToModelContext, ElementProcessor } from 'roosterjs-content-model-types';\nimport { entityProcessor, hasMetadata, tableProcessor } from 'roosterjs-content-model-dom';\nimport { getSelectionRootNode } from '../../modelApi/selection/getSelectionRootNode';\n\n/**\n * @internal\n */\nexport const tablePreProcessor: ElementProcessor = (group, element, context) => {\n const processor = shouldUseTableProcessor(element, context) ? tableProcessor : entityProcessor;\n\n processor(group, element, context);\n};\n\nfunction shouldUseTableProcessor(element: HTMLTableElement, context: DomToModelContext) {\n // Treat table as a real table when:\n // 1. It is a roosterjs table (has metadata)\n // 2. Table is in selection\n // 3. There is selection inside table (or whole table is selected)\n // Otherwise, we treat the table as entity so we will not change it when write back\n return (\n hasMetadata(element) ||\n context.isInSelection ||\n contains(element, getSelectionRootNode(context.rangeEx), true /*treatSameNodeAsContain*/)\n );\n}\n","import { Border } from '../publicTypes/interface/Border';\n\nconst BorderStyles = [\n 'none',\n 'hidden',\n 'dotted',\n 'dashed',\n 'solid',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n];\nconst BorderSizeRegex = /^(thin|medium|thick|[\\d\\.]+\\w*)$/;\n\n/**\n * Extract an integrated border string with border width, style, color to value tuple\n * @param combinedBorder The integrated border style string\n * @returns An array with the splitted values\n */\nexport function extractBorderValues(combinedBorder?: string): Border {\n const result: Border = {};\n const values = (combinedBorder || '').replace(/, /g, ',').split(' ');\n\n values.forEach(v => {\n if (BorderStyles.indexOf(v) >= 0 && !result.style) {\n result.style = v;\n } else if (BorderSizeRegex.test(v) && !result.width) {\n result.width = v;\n } else if (v && !result.color) {\n result.color = v; // TODO: Do we need to use a regex to match all possible colors?\n }\n });\n\n return result;\n}\n\n/**\n * Combine border value array back to string\n * @param values Input string values\n * @param initialValue Initial value for those items without valid value\n */\nexport function combineBorderValue(value: Border): string {\n return [value.width || '', value.style || '', value.color || ''].join(' ').trim() || 'none';\n}\n","import { ContentModelImage, ImageMetadataFormat } from 'roosterjs-content-model-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\nimport {\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from 'roosterjs-editor-dom';\n\nconst NumberDefinition = createNumberDefinition();\n\nconst ImageMetadataFormatDefinition = createObjectDefinition>({\n widthPx: NumberDefinition,\n heightPx: NumberDefinition,\n leftPercent: NumberDefinition,\n rightPercent: NumberDefinition,\n topPercent: NumberDefinition,\n bottomPercent: NumberDefinition,\n angleRad: NumberDefinition,\n src: createStringDefinition(),\n naturalHeight: NumberDefinition,\n naturalWidth: NumberDefinition,\n});\n\n/**\n * Update image metadata with a callback\n * @param image The image Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateImageMetadata(\n image: ContentModelImage,\n callback?: (format: ImageMetadataFormat | null) => ImageMetadataFormat | null\n): ImageMetadataFormat | null {\n return updateMetadata(image, callback, ImageMetadataFormatDefinition);\n}\n","import { ContentModelTableCell } from 'roosterjs-content-model-types';\nimport { createBooleanDefinition, createObjectDefinition } from 'roosterjs-editor-dom';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\n\nconst TableCellMetadataFormatDefinition = createObjectDefinition>(\n {\n bgColorOverride: createBooleanDefinition(true /** isOptional */),\n vAlignOverride: createBooleanDefinition(true /** isOptional */),\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update table cell metadata with a callback\n * @param cell The table cell Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateTableCellMetadata(\n cell: ContentModelTableCell,\n callback?: (format: TableCellMetadataFormat | null) => TableCellMetadataFormat | null\n): TableCellMetadataFormat | null {\n return updateMetadata(cell, callback, TableCellMetadataFormatDefinition);\n}\n","import { ContentModelTable, TableMetadataFormat } from 'roosterjs-content-model-types';\nimport { TableBorderFormat } from 'roosterjs-editor-types';\nimport { updateMetadata } from 'roosterjs-content-model-dom';\nimport {\n createBooleanDefinition,\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from 'roosterjs-editor-dom';\n\nconst NullStringDefinition = createStringDefinition(\n false /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst BooleanDefinition = createBooleanDefinition(false /** isOptional */);\n\nconst TableFormatDefinition = createObjectDefinition>(\n {\n topBorderColor: NullStringDefinition,\n bottomBorderColor: NullStringDefinition,\n verticalBorderColor: NullStringDefinition,\n hasHeaderRow: BooleanDefinition,\n headerRowColor: NullStringDefinition,\n hasFirstColumn: BooleanDefinition,\n hasBandedColumns: BooleanDefinition,\n hasBandedRows: BooleanDefinition,\n bgColorEven: NullStringDefinition,\n bgColorOdd: NullStringDefinition,\n tableBorderFormat: createNumberDefinition(\n false /** isOptional */,\n undefined /* value */,\n TableBorderFormat.DEFAULT /* first table border format, TODO: Use Min/Max to specify valid values */,\n TableBorderFormat.CLEAR /* last table border format, , TODO: Use Min/Max to specify valid values */\n ),\n verticalAlign: NullStringDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Update table metadata with a callback\n * @param table The table Content Model\n * @param callback The callback function used for updating metadata\n */\nexport function updateTableMetadata(\n table: ContentModelTable,\n callback?: (format: TableMetadataFormat | null) => TableMetadataFormat | null\n): TableMetadataFormat | null {\n return updateMetadata(table, callback, TableFormatDefinition);\n}\n","const SPACES_REGEX = /[\\u2000\\u2009\\u200a​\\u200b​\\u202f\\u205f​\\u3000\\s\\t\\r\\n]/gm;\nconst PUNCTUATIONS = '.,?!:\"()[]\\\\/';\n\n/**\n * @internal\n * Check if the given character is punctuation\n * @param char The character to check\n */\nexport function isPunctuation(char: string) {\n return PUNCTUATIONS.indexOf(char) >= 0;\n}\n\n/**\n * @internal\n * Check if the give character is a space. A space can be normal ASCII pace (32) or non-break space (160) or other kinds of spaces\n * such as ZeroWidthSpace, ...\n * @param char The character to check\n */\nexport function isSpace(char: string) {\n const code = char?.charCodeAt(0) ?? 0;\n return code == 160 || code == 32 || SPACES_REGEX.test(char);\n}\n\n/**\n * @internal\n * Normalize spaces of the given string. After normalization, all leading (for forward) or trailing (for backward) spaces\n * will be replaces with non-break space (160)\n * @param txt The string to normalize\n * @param isForward Whether normalize forward or backward\n */\nexport function normalizeText(txt: string, isForward: boolean): string {\n return txt.replace(isForward ? /^\\u0020+/ : /\\u0020+$/, '\\u00A0');\n}\n","import { ContentModelEditorCore } from '../publicTypes/ContentModelEditorCore';\nimport { ContentModelEditorOptions, IContentModelEditor } from '../publicTypes/IContentModelEditor';\nimport { createContentModelEditorCore } from './createContentModelEditorCore';\nimport { EditorBase } from 'roosterjs-editor-core';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport {\n ContentModelDocument,\n ContentModelSegmentFormat,\n DomToModelOption,\n ModelToDomOption,\n} from 'roosterjs-content-model-types';\n\n/**\n * Editor for Content Model.\n * (This class is still under development, and may still be changed in the future with some breaking changes)\n */\nexport default class ContentModelEditor\n extends EditorBase\n implements IContentModelEditor {\n /**\n * Creates an instance of Editor\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\n constructor(contentDiv: HTMLDivElement, options: ContentModelEditorOptions = {}) {\n super(contentDiv, options, createContentModelEditorCore);\n }\n\n /**\n * Create Content Model from DOM tree in this editor\n * @param option The option to customize the behavior of DOM to Content Model conversion\n */\n createContentModel(\n option?: DomToModelOption,\n selectionOverride?: SelectionRangeEx\n ): ContentModelDocument {\n const core = this.getCore();\n\n return core.api.createContentModel(core, option, selectionOverride);\n }\n\n /**\n * Set content with content model\n * @param model The content model to set\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n */\n setContentModel(model: ContentModelDocument, option?: ModelToDomOption) {\n const core = this.getCore();\n\n core.api.setContentModel(core, model, option);\n }\n\n /**\n * Cache a content model object. Next time when format with content model, we can reuse it.\n * @param model\n */\n cacheContentModel(model: ContentModelDocument | null) {\n const core = this.getCore();\n\n if (!core.lifecycle.shadowEditFragment) {\n core.cachedModel = model || undefined;\n core.cachedRangeEx = undefined;\n }\n }\n\n /**\n * Get default format as ContentModelSegmentFormat.\n * This is a replacement of IEditor.getDefaultFormat for Content Model.\n * @returns The default format\n */\n getContentModelDefaultFormat(): ContentModelSegmentFormat {\n const core = this.getCore();\n\n return core.defaultFormat;\n }\n}\n","import { cloneModel } from '../../modelApi/common/cloneModel';\nimport { domToContentModel } from 'roosterjs-content-model-dom';\nimport { DomToModelOption } from 'roosterjs-content-model-types';\nimport { SelectionRangeEx } from 'roosterjs-editor-types';\nimport { tablePreProcessor } from '../../domToModel/processors/tablePreProcessor';\nimport {\n ContentModelEditorCore,\n CreateContentModel,\n} from '../../publicTypes/ContentModelEditorCore';\n\n/**\n * @internal\n * Create Content Model from DOM tree in this editor\n * @param option The option to customize the behavior of DOM to Content Model conversion\n */\nexport const createContentModel: CreateContentModel = (core, option, selectionOverride) => {\n let cachedModel = selectionOverride ? null : core.cachedModel;\n\n if (cachedModel && core.lifecycle.shadowEditFragment) {\n // When in shadow edit, use a cloned model so we won't pollute the cached one\n cachedModel = cloneModel(cachedModel, { includeCachedElement: true });\n }\n\n return cachedModel || internalCreateContentModel(core, option, selectionOverride);\n};\n\nfunction internalCreateContentModel(\n core: ContentModelEditorCore,\n option: DomToModelOption | undefined,\n selectionOverride?: SelectionRangeEx\n) {\n const context: DomToModelOption = {\n ...core.defaultDomToModelOptions,\n ...option,\n };\n\n context.processorOverride = {\n table: tablePreProcessor,\n ...context.processorOverride,\n ...option?.processorOverride,\n };\n\n return domToContentModel(\n core.contentDiv,\n context,\n core.api.createEditorContext(core),\n selectionOverride || core.api.getSelectionRangeEx(core)\n );\n}\n","import { CreateEditorContext } from '../../publicTypes/ContentModelEditorCore';\nimport { EditorContext } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Create a EditorContext object used by ContentModel API\n */\nexport const createEditorContext: CreateEditorContext = core => {\n const { lifecycle, defaultFormat, darkColorHandler, addDelimiterForEntity, contentDiv } = core;\n\n const context: EditorContext = {\n isDarkMode: lifecycle.isDarkMode,\n defaultFormat: defaultFormat,\n darkColorHandler: darkColorHandler,\n addDelimiterForEntity: addDelimiterForEntity,\n allowCacheElement: true,\n };\n\n checkRootRtl(contentDiv, context);\n checkZoomScale(contentDiv, context);\n\n return context;\n};\n\nfunction checkZoomScale(element: HTMLElement, context: EditorContext) {\n const originalWidth = element?.getBoundingClientRect()?.width || 0;\n const visualWidth = element.offsetWidth;\n\n if (visualWidth > 0 && originalWidth > 0) {\n context.zoomScale = Math.round((originalWidth / visualWidth) * 100) / 100;\n }\n}\n\nfunction checkRootRtl(element: HTMLElement, context: EditorContext) {\n const style = element?.ownerDocument.defaultView?.getComputedStyle(element);\n\n if (style?.direction == 'rtl') {\n context.isRootRtl = true;\n }\n}\n","import { ContentModelEditorCore } from '../../publicTypes/ContentModelEditorCore';\nimport { GetSelectionRangeEx } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport const getSelectionRangeEx: GetSelectionRangeEx = core => {\n const contentModelCore = core as ContentModelEditorCore;\n\n return contentModelCore.cachedRangeEx ?? core.originalApi.getSelectionRangeEx(core);\n};\n","import { contentModelToDom } from 'roosterjs-content-model-dom';\nimport { SetContentModel } from '../../publicTypes/ContentModelEditorCore';\n\n/**\n * @internal\n * Set content with content model\n * @param model The content model to set\n * @param option Additional options to customize the behavior of Content Model to DOM conversion\n */\nexport const setContentModel: SetContentModel = (core, model, option) => {\n const range = contentModelToDom(\n core.contentDiv.ownerDocument,\n core.contentDiv,\n model,\n core.api.createEditorContext(core),\n {\n ...core.defaultModelToDomOptions,\n ...(option || {}),\n }\n );\n\n if (!core.lifecycle.shadowEditFragment) {\n core.api.select(core, range);\n core.cachedRangeEx = range || undefined;\n }\n\n return range;\n};\n","import { ContentModelEditorCore } from '../../publicTypes/ContentModelEditorCore';\nimport { getSelectionPath } from 'roosterjs-editor-dom';\nimport { PluginEventType, SwitchShadowEdit } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Switch the Shadow Edit mode of editor On/Off\n * @param editorCore The EditorCore object\n * @param isOn True to switch On, False to switch Off\n */\nexport const switchShadowEdit: SwitchShadowEdit = (editorCore, isOn): void => {\n // TODO: Use strong-typed editor core object\n const core = editorCore as ContentModelEditorCore;\n\n if (isOn != !!core.lifecycle.shadowEditFragment) {\n if (isOn) {\n if (!core.cachedModel) {\n core.cachedModel = core.api.createContentModel(core);\n }\n\n const range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n\n // Fake object, not used in Content Model Editor, just to satisfy original editor code\n // TODO: we can remove them once we have standalone Content Model Editor\n const fragment = core.contentDiv.ownerDocument.createDocumentFragment();\n const selectionPath = range && getSelectionPath(core.contentDiv, range);\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EnteredShadowEdit,\n fragment,\n selectionPath,\n },\n false /*broadcast*/\n );\n\n core.lifecycle.shadowEditSelectionPath = selectionPath;\n core.lifecycle.shadowEditFragment = fragment;\n } else {\n core.lifecycle.shadowEditFragment = null;\n core.lifecycle.shadowEditSelectionPath = null;\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.LeavingShadowEdit,\n },\n false /*broadcast*/\n );\n\n if (core.cachedModel) {\n core.api.setContentModel(core, core.cachedModel);\n }\n }\n }\n};\n","import paste from '../../publicApi/utils/paste';\nimport { cloneModel } from '../../modelApi/common/cloneModel';\nimport { contentModelToDom, normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../../publicApi/utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport type {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDecorator,\n ContentModelSegment,\n ContentModelTableRow,\n} from 'roosterjs-content-model-types';\nimport {\n addRangeToSelection,\n createElement,\n moveChildNodes,\n createRange,\n extractClipboardItems,\n toArray,\n wrap,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n CopyPastePluginState,\n IEditor,\n PluginEventType,\n PluginWithState,\n KnownCreateElementDataIndex,\n ClipboardData,\n SelectionRangeTypes,\n SelectionRangeEx,\n ColorTransformDirection,\n} from 'roosterjs-editor-types';\n\n/**\n * Copy and paste plugin for handling onCopy and onPaste event\n */\nexport default class ContentModelCopyPastePlugin implements PluginWithState {\n private editor: IContentModelEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Construct a new instance of CopyPastePlugin\n * @param options The editor options\n */\n constructor(private state: CopyPastePluginState) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContentModelCopyPaste';\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 as IContentModelEditor;\n this.disposer = this.editor.addDomEventHandler({\n paste: e => this.onPaste(e),\n copy: e => this.onCutCopy(e, false /*isCut*/),\n cut: e => this.onCutCopy(e, true /*isCut*/),\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.disposer) {\n this.disposer();\n }\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onCutCopy(event: Event, isCut: boolean) {\n if (!this.editor) {\n return;\n }\n const selection = this.editor.getSelectionRangeEx();\n if (selection && !selection.areAllCollapsed) {\n const model = this.editor.createContentModel();\n\n const pasteModel = cloneModel(model, {\n includeCachedElement: this.editor.isDarkMode()\n ? (node, type) => {\n if (type == 'cache') {\n return undefined;\n } else {\n const result = node.cloneNode(true /*deep*/) as HTMLElement;\n\n this.editor?.transformToDarkColor(\n result,\n ColorTransformDirection.DarkToLight\n );\n\n return result;\n }\n }\n : false,\n });\n if (selection.type === SelectionRangeTypes.TableSelection) {\n iterateSelections([pasteModel], (path, tableContext) => {\n if (tableContext?.table) {\n const table = tableContext?.table;\n table.rows = table.rows\n .map(row => {\n return {\n ...row,\n cells: row.cells.filter(cell => cell.isSelected),\n };\n })\n .filter(row => row.cells.length > 0);\n return true;\n }\n return false;\n });\n }\n const tempDiv = this.getTempDiv(this.editor);\n const selectionForCopy = contentModelToDom(\n tempDiv.ownerDocument,\n tempDiv,\n pasteModel,\n undefined /*editorContext, leave it undefined to use default context since we don't need editor-related dark mode info for pasted content*/,\n {\n onNodeCreated,\n }\n );\n\n let newRange: Range | null = selectionExToRange(selectionForCopy, tempDiv);\n if (newRange) {\n newRange = this.editor.triggerPluginEvent(PluginEventType.BeforeCutCopy, {\n clonedRoot: tempDiv,\n range: newRange,\n rawEvent: event as ClipboardEvent,\n isCut,\n }).range;\n\n if (newRange) {\n addRangeToSelection(newRange);\n }\n\n this.editor.runAsync(editor => {\n cleanUpAndRestoreSelection(tempDiv);\n editor.focus();\n editor.select(selection);\n\n if (isCut) {\n formatWithContentModel(\n editor as IContentModelEditor,\n 'cut',\n (model, context) => {\n if (\n deleteSelection(model, [], context).deleteResult ==\n DeleteResult.Range\n ) {\n normalizeContentModel(model);\n }\n\n return true;\n },\n {\n changeSource: ChangeSource.Cut,\n }\n );\n }\n });\n }\n }\n }\n\n private onPaste = (event: Event) => {\n if (this.editor && isClipboardEvent(event)) {\n const editor = this.editor;\n\n const dataTransfer = event.clipboardData;\n\n if (dataTransfer?.items) {\n event.preventDefault();\n extractClipboardItems(\n toArray(dataTransfer.items),\n {\n allowedCustomPasteType: this.state.allowedCustomPasteType,\n },\n true /*pasteNativeEvent*/\n ).then((clipboardData: ClipboardData) => {\n if (!editor.isDisposed()) {\n paste(editor, clipboardData);\n }\n });\n }\n }\n };\n\n private getTempDiv(editor: IEditor) {\n const div = editor.getCustomData(\n 'CopyPasteTempDiv',\n () => {\n const tempDiv = createElement(\n KnownCreateElementDataIndex.CopyPasteTempDiv,\n editor.getDocument()\n ) as HTMLDivElement;\n\n editor.getDocument().body.appendChild(tempDiv);\n\n return tempDiv;\n },\n tempDiv => tempDiv.parentNode?.removeChild(tempDiv)\n );\n\n div.style.backgroundColor = 'white';\n div.style.color = 'black';\n div.childNodes.forEach(node => div.removeChild(node));\n\n div.style.display = '';\n div.focus();\n\n return div;\n }\n}\n\nfunction cleanUpAndRestoreSelection(tempDiv: HTMLDivElement) {\n tempDiv.style.backgroundColor = '';\n tempDiv.style.color = '';\n tempDiv.style.display = 'none';\n moveChildNodes(tempDiv);\n}\n\nfunction isClipboardEvent(event: Event): event is ClipboardEvent {\n return !!(event as ClipboardEvent).clipboardData;\n}\n\nfunction selectionExToRange(\n selection: SelectionRangeEx | null,\n tempDiv: HTMLDivElement\n): Range | null {\n if (!selection) {\n return null;\n }\n let newRange: Range | null = null;\n if (selection.type === SelectionRangeTypes.TableSelection && selection.coordinates) {\n const table = tempDiv.querySelector(`#${selection.table.id}`) as HTMLTableElement;\n const elementToSelect =\n table.parentElement?.childElementCount == 1 ? table.parentElement : table;\n newRange = createRange(elementToSelect);\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\n const image = tempDiv.querySelector('#' + selection.image.id);\n\n if (image) {\n newRange = createRange(image);\n }\n } else {\n newRange = selection.ranges[0];\n }\n\n return newRange;\n}\n\n/**\n * @internal\n * Exported only for unit testing\n */\nexport const onNodeCreated = (\n _:\n | ContentModelBlock\n | ContentModelBlockGroup\n | ContentModelSegment\n | ContentModelDecorator\n | ContentModelTableRow,\n node: Node\n): void => {\n if (safeInstanceOf(node, 'HTMLTableElement')) {\n wrap(node, 'div');\n }\n};\n","import { EditorPlugin } from 'roosterjs-editor-types';\n\n/**\n * Dummy plugin, just to skip original TypeInContainerPlugin's behavior\n */\nexport default class ContentModelTypeInContainerPlugin implements EditorPlugin {\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelTypeInContainer';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize() {}\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {}\n}\n","import ContentModelCopyPastePlugin from './corePlugins/ContentModelCopyPastePlugin';\nimport ContentModelEditPlugin from './plugins/ContentModelEditPlugin';\nimport ContentModelFormatPlugin from './plugins/ContentModelFormatPlugin';\nimport ContentModelTypeInContainerPlugin from './corePlugins/ContentModelTypeInContainerPlugin';\nimport { ContentModelEditorCore } from '../publicTypes/ContentModelEditorCore';\nimport { ContentModelEditorOptions } from '../publicTypes/IContentModelEditor';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { CoreCreator, EditorCore, ExperimentalFeatures } from 'roosterjs-editor-types';\nimport { createContentModel } from './coreApi/createContentModel';\nimport { createEditorContext } from './coreApi/createEditorContext';\nimport { createEditorCore, isFeatureEnabled } from 'roosterjs-editor-core';\nimport { getSelectionRangeEx } from './coreApi/getSelectionRangeEx';\nimport { setContentModel } from './coreApi/setContentModel';\nimport { switchShadowEdit } from './coreApi/switchShadowEdit';\n\n/**\n * Editor Core creator for Content Model editor\n */\nexport const createContentModelEditorCore: CoreCreator<\n ContentModelEditorCore,\n ContentModelEditorOptions\n> = (contentDiv, options) => {\n const modifiedOptions: ContentModelEditorOptions = {\n ...options,\n plugins: [\n ...(options.plugins || []),\n new ContentModelFormatPlugin(),\n new ContentModelEditPlugin(),\n ],\n corePluginOverride: {\n typeInContainer: new ContentModelTypeInContainerPlugin(),\n copyPaste: isFeatureEnabled(\n options.experimentalFeatures,\n ExperimentalFeatures.ContentModelPaste\n )\n ? new ContentModelCopyPastePlugin({\n allowedCustomPasteType: options.allowedCustomPasteType || [],\n })\n : undefined,\n ...(options.corePluginOverride || {}),\n },\n };\n\n const core = createEditorCore(contentDiv, modifiedOptions) as ContentModelEditorCore;\n\n promoteToContentModelEditorCore(core, modifiedOptions);\n\n return core;\n};\n\n/**\n * Creator Content Model Editor Core from Editor Core\n * @param core The original EditorCore object\n * @param options Options of this editor\n */\nexport function promoteToContentModelEditorCore(\n core: EditorCore,\n options: ContentModelEditorOptions\n) {\n const cmCore = core as ContentModelEditorCore;\n\n promoteDefaultFormat(cmCore);\n promoteContentModelInfo(cmCore, options);\n promoteCoreApi(cmCore);\n}\n\nfunction promoteDefaultFormat(cmCore: ContentModelEditorCore) {\n cmCore.lifecycle.defaultFormat = cmCore.lifecycle.defaultFormat || {};\n cmCore.defaultFormat = getDefaultSegmentFormat(cmCore);\n}\n\nfunction promoteContentModelInfo(\n cmCore: ContentModelEditorCore,\n options: ContentModelEditorOptions\n) {\n const experimentalFeatures = cmCore.lifecycle.experimentalFeatures;\n\n cmCore.defaultDomToModelOptions = options.defaultDomToModelOptions || {};\n cmCore.defaultModelToDomOptions = options.defaultModelToDomOptions || {};\n cmCore.addDelimiterForEntity = isFeatureEnabled(\n experimentalFeatures,\n ExperimentalFeatures.InlineEntityReadOnlyDelimiters\n );\n}\n\nfunction promoteCoreApi(cmCore: ContentModelEditorCore) {\n cmCore.api.createEditorContext = createEditorContext;\n cmCore.api.createContentModel = createContentModel;\n cmCore.api.setContentModel = setContentModel;\n cmCore.api.switchShadowEdit = switchShadowEdit;\n cmCore.api.getSelectionRangeEx = getSelectionRangeEx;\n cmCore.originalApi.createEditorContext = createEditorContext;\n cmCore.originalApi.createContentModel = createContentModel;\n cmCore.originalApi.setContentModel = setContentModel;\n}\n\nfunction getDefaultSegmentFormat(core: EditorCore): ContentModelSegmentFormat {\n const format = core.lifecycle.defaultFormat ?? {};\n\n return {\n fontWeight: format.bold ? 'bold' : undefined,\n italic: format.italic || undefined,\n underline: format.underline || undefined,\n fontFamily: format.fontFamily || undefined,\n fontSize: format.fontSize || undefined,\n textColor: format.textColors?.lightModeColor || format.textColor || undefined,\n backgroundColor:\n format.backgroundColors?.lightModeColor || format.backgroundColor || undefined,\n };\n}\n","import { IContentModelEditor } from '../publicTypes/IContentModelEditor';\nimport { IEditor } from 'roosterjs-editor-types';\n\n/**\n * Check if the given editor object is Content Model editor\n * @param editor The editor to check\n * @returns True if the given editor is Content Model editor, otherwise false\n */\nexport default function isContentModelEditor(editor: IEditor): editor is IContentModelEditor {\n const contentModelEditor = editor as IContentModelEditor;\n\n return !!contentModelEditor.createContentModel;\n}\n","import handleKeyDownEvent from '../../publicApi/editing/handleKeyDownEvent';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../../publicApi/utils/formatWithContentModel';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { isNodeOfType, normalizeContentModel } from 'roosterjs-content-model-dom';\nimport {\n EditorPlugin,\n IEditor,\n Keys,\n NodePosition,\n NodeType,\n PluginEvent,\n PluginEventType,\n PluginKeyDownEvent,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport {\n getObjectKeys,\n isBlockElement,\n isCharacterValue,\n isModifierKey,\n Position,\n} from 'roosterjs-editor-dom';\n\n// During IME input, KeyDown event will have \"Process\" as key\nconst ProcessKey = 'Process';\n\n/**\n * ContentModel plugins helps editor to do editing operation on top of content model.\n * This includes:\n * 1. Delete Key\n * 2. Backspace Key\n */\nexport default class ContentModelEditPlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n private hasDefaultFormat = false;\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelEdit';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n\n const defaultFormat = this.editor.getContentModelDefaultFormat();\n this.hasDefaultFormat =\n getObjectKeys(defaultFormat).filter(x => typeof defaultFormat[x] !== 'undefined')\n .length > 0;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case PluginEventType.KeyDown:\n this.handleKeyDownEvent(this.editor, event);\n break;\n\n case PluginEventType.ContentChanged:\n case PluginEventType.MouseUp:\n case PluginEventType.SelectionChanged:\n this.editor.cacheContentModel(null);\n break;\n }\n }\n }\n\n private handleKeyDownEvent(editor: IContentModelEditor, event: PluginKeyDownEvent) {\n const rawEvent = event.rawEvent;\n const which = rawEvent.which;\n\n if (rawEvent.defaultPrevented || event.handledByEditFeature) {\n // Other plugins already handled this event, so it is most likely content is already changed, we need to clear cached content model\n editor.cacheContentModel(null /*model*/);\n } else {\n // TODO: Consider use ContentEditFeature and need to hide other conflict features that are not based on Content Model\n switch (which) {\n case Keys.BACKSPACE:\n case Keys.DELETE:\n const rangeEx = editor.getSelectionRangeEx();\n const range =\n rangeEx.type == SelectionRangeTypes.Normal ? rangeEx.ranges[0] : null;\n\n if (this.shouldDeleteWithContentModel(range, rawEvent)) {\n handleKeyDownEvent(editor, rawEvent);\n } else {\n editor.cacheContentModel(null);\n }\n\n break;\n\n default:\n if (\n (isCharacterValue(rawEvent) || rawEvent.key == ProcessKey) &&\n this.hasDefaultFormat\n ) {\n this.tryApplyDefaultFormat(editor);\n }\n\n editor.cacheContentModel(null);\n break;\n }\n }\n }\n\n private tryApplyDefaultFormat(editor: IContentModelEditor) {\n const rangeEx = editor.getSelectionRangeEx();\n const range = rangeEx?.type == SelectionRangeTypes.Normal ? rangeEx.ranges[0] : null;\n const startPos = range ? Position.getStart(range) : null;\n let node: Node | null = startPos?.node ?? null;\n\n while (node && editor.contains(node)) {\n if (isNodeOfType(node, NodeType.Element) && node.getAttribute?.('style')) {\n return;\n } else if (isBlockElement(node)) {\n break;\n } else {\n node = node.parentNode;\n }\n }\n\n formatWithContentModel(editor, 'input', (model, context) => {\n const result = deleteSelection(model, [], context);\n\n if (result.deleteResult == DeleteResult.Range) {\n normalizeContentModel(model);\n editor.addUndoSnapshot();\n\n return true;\n } else if (\n result.deleteResult == DeleteResult.NotDeleted &&\n result.insertPoint &&\n startPos\n ) {\n const { paragraph, path, marker } = result.insertPoint;\n const blocks = path[0].blocks;\n const blockCount = blocks.length;\n const blockIndex = blocks.indexOf(paragraph);\n\n if (\n paragraph.isImplicit &&\n paragraph.segments.length == 1 &&\n paragraph.segments[0] == marker &&\n blockCount > 0 &&\n blockIndex == blockCount - 1\n ) {\n // Focus is in the last paragraph which is implicit and there is not other segments.\n // This can happen when focus is moved after all other content under current block group.\n // We need to check if browser will merge focus into previous paragraph by checking if\n // previous block is block. If previous block is paragraph, browser will most likely merge\n // the input into previous paragraph, then nothing need to do here. Otherwise we need to\n // apply pending format since this input event will start a new real paragraph.\n const previousBlock = blocks[blockIndex - 1];\n\n if (previousBlock?.blockType != 'Paragraph') {\n this.applyDefaultFormat(editor, marker.format, startPos);\n }\n } else if (paragraph.segments.every(x => x.segmentType != 'Text')) {\n this.applyDefaultFormat(editor, marker.format, startPos);\n }\n\n // We didn't do any change but just apply default format to pending format, so no need to write back\n return false;\n } else {\n return false;\n }\n });\n }\n\n private applyDefaultFormat(\n editor: IContentModelEditor,\n currentFormat: ContentModelSegmentFormat,\n startPos: NodePosition\n ) {\n const pendingFormat = getPendingFormat(editor) || {};\n const defaultFormat = editor.getContentModelDefaultFormat();\n const newFormat: ContentModelSegmentFormat = {\n ...defaultFormat,\n ...pendingFormat,\n ...currentFormat,\n };\n\n setPendingFormat(editor, newFormat, startPos);\n }\n\n private shouldDeleteWithContentModel(range: Range | null, rawEvent: KeyboardEvent) {\n return !(\n range?.collapsed &&\n range.startContainer.nodeType == NodeType.Text &&\n !isModifierKey(rawEvent) &&\n (this.canDeleteBefore(rawEvent, range) || this.canDeleteAfter(rawEvent, range))\n );\n }\n\n private canDeleteBefore(rawEvent: KeyboardEvent, range: Range) {\n return (\n rawEvent.which == Keys.BACKSPACE &&\n (range.startOffset > 1 || range.startContainer.previousSibling)\n );\n }\n\n private canDeleteAfter(rawEvent: KeyboardEvent, range: Range) {\n return (\n rawEvent.which == Keys.DELETE &&\n (range.startOffset < (range.startContainer.nodeValue?.length ?? 0) - 1 ||\n range.startContainer.nextSibling)\n );\n }\n}\n","import applyPendingFormat from '../../publicApi/format/applyPendingFormat';\nimport { canApplyPendingFormat, clearPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { EditorPlugin, IEditor, Keys, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * ContentModelFormat plugins helps editor to do formatting on top of content model.\n * This includes:\n * 1. Handle pending format changes when selection is collapsed\n */\nexport default class ContentModelFormatPlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelFormat';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n\n switch (event.eventType) {\n case PluginEventType.Input:\n // In Safari, isComposing will be undefined but isInIME() works\n if (!event.rawEvent.isComposing && !this.editor.isInIME()) {\n this.checkAndApplyPendingFormat(event.rawEvent.data);\n }\n\n break;\n\n case PluginEventType.CompositionEnd:\n this.checkAndApplyPendingFormat(event.rawEvent.data);\n break;\n\n case PluginEventType.KeyDown:\n if (event.rawEvent.which >= Keys.PAGEUP && event.rawEvent.which <= Keys.DOWN) {\n clearPendingFormat(this.editor);\n }\n\n break;\n\n case PluginEventType.MouseUp:\n case PluginEventType.ContentChanged:\n if (!canApplyPendingFormat(this.editor)) {\n clearPendingFormat(this.editor);\n }\n break;\n }\n }\n\n private checkAndApplyPendingFormat(data: string | null) {\n if (this.editor && data) {\n applyPendingFormat(this.editor, data);\n clearPendingFormat(this.editor);\n }\n }\n}\n","import addParser from './utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { chainSanitizerCallback, getPasteSource } from 'roosterjs-editor-dom';\nimport { ContentModelBlockFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { deprecatedBorderColorParser } from './utils/deprecatedColorParser';\nimport { IContentModelEditor } from '../../../publicTypes/IContentModelEditor';\nimport { parseLink } from './utils/linkParser';\nimport { processPastedContentFromExcel } from './Excel/processPastedContentFromExcel';\nimport { processPastedContentFromPowerPoint } from './PowerPoint/processPastedContentFromPowerPoint';\nimport { processPastedContentFromWordDesktop } from './WordDesktop/processPastedContentFromWordDesktop';\nimport { processPastedContentWacComponents } from './WacComponents/processPastedContentWacComponents';\nimport {\n EditorPlugin,\n HtmlSanitizerOptions,\n IEditor,\n KnownPasteSourceType,\n PasteType,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\nconst GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n\n/**\n * Paste plugin, handles BeforePaste event and reformat some special content, including:\n * 1. Content copied from Word\n * 2. Content copied from Excel\n * 3. Content copied from Word Online or OneNote Online\n * 4. Content copied from Power Point\n * (This class is still under development, and may still be changed in the future with some breaking changes)\n */\nexport default class ContentModelPastePlugin implements EditorPlugin {\n private editor: IContentModelEditor | null = null;\n\n /**\n * Construct a new instance of Paste class\n * @param unknownTagReplacement Replace solution of unknown tags, default behavior is to replace with SPAN\n */\n constructor(private unknownTagReplacement: string = 'SPAN') {}\n\n /**\n * Get name of this plugin\n */\n getName() {\n return 'ContentModelPaste';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n // TODO: Later we may need a different interface for Content Model editor plugin\n this.editor = editor as IContentModelEditor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor || event.eventType != PluginEventType.BeforePaste) {\n return;\n }\n\n const ev = event as ContentModelBeforePasteEvent;\n if (!ev.domToModelOption) {\n return;\n }\n const pasteSource = getPasteSource(ev, false);\n switch (pasteSource) {\n case KnownPasteSourceType.WordDesktop:\n processPastedContentFromWordDesktop(ev);\n break;\n case KnownPasteSourceType.WacComponents:\n processPastedContentWacComponents(ev);\n break;\n case KnownPasteSourceType.ExcelOnline:\n case KnownPasteSourceType.ExcelDesktop:\n if (ev.pasteType === PasteType.Normal || ev.pasteType === PasteType.MergeFormat) {\n // Handle HTML copied from Excel\n processPastedContentFromExcel(ev, this.editor.getTrustedHTMLHandler());\n }\n break;\n case KnownPasteSourceType.GoogleSheets:\n ev.sanitizingOption.additionalTagReplacements[GOOGLE_SHEET_NODE_NAME] = '*';\n break;\n case KnownPasteSourceType.PowerPointDesktop:\n processPastedContentFromPowerPoint(ev, this.editor.getTrustedHTMLHandler());\n break;\n }\n\n addParser(ev.domToModelOption, 'link', parseLink);\n addParser(ev.domToModelOption, 'tableCell', deprecatedBorderColorParser);\n addParser(ev.domToModelOption, 'table', deprecatedBorderColorParser);\n sanitizeBlockStyles(ev.sanitizingOption);\n\n if (ev.pasteType === PasteType.MergeFormat) {\n addParser(ev.domToModelOption, 'block', blockElementParser);\n addParser(ev.domToModelOption, 'listLevel', blockElementParser);\n }\n\n ev.sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;\n }\n}\n\n/**\n * For block elements that have background color style, remove the background color when user selects the merge current format\n * paste option\n */\nconst blockElementParser: FormatParser = (\n format: ContentModelBlockFormat,\n element: HTMLElement\n) => {\n if (element.style.backgroundColor) {\n delete format.backgroundColor;\n }\n};\n\nfunction sanitizeBlockStyles(sanitizingOption: Required) {\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'display', (value: string) => {\n return value != 'flex'; // return whether we keep the style\n });\n}\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\nimport { TrustedHTMLHandler } from 'roosterjs-editor-types';\n\nconst LAST_TD_END_REGEX = /<\\/\\s*td\\s*>((?!<\\/\\s*tr\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_END_REGEX = /<\\/\\s*tr\\s*>((?!<\\/\\s*table\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_REGEX = /]*>[^<]*/i;\nconst LAST_TABLE_REGEX = /]*>[^<]*/i;\nconst DEFAULT_BORDER_STYLE = 'solid 1px #d4d4d4';\n\n/**\n * @internal\n * Convert pasted content from Excel, add borders when source doc doesn't have a border\n * @param event The BeforePaste event\n */\n\nexport function processPastedContentFromExcel(\n event: ContentModelBeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, htmlBefore, clipboardData } = event;\n const html = clipboardData.html ? excelHandler(clipboardData.html, htmlBefore) : undefined;\n\n if (html && clipboardData.html != html) {\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n\n // For Excel Online\n const firstChild = fragment.firstChild;\n if (firstChild && firstChild.childNodes.length > 0 && getTagOfNode(firstChild) == 'DIV') {\n const tableFound = Array.from(firstChild.childNodes).every((child: Node) => {\n // Tables pasted from Excel Online should be of the format: 0 to N META tags and 1 TABLE tag\n return getTagOfNode(child) == 'META'\n ? true\n : getTagOfNode(child) == 'TABLE' && child == firstChild.lastChild;\n });\n\n // Extract Table from Div\n if (tableFound && firstChild.lastChild) {\n event.fragment.replaceChildren(firstChild.lastChild);\n }\n }\n\n addParser(event.domToModelOption, 'tableCell', (format, element) => {\n if (element.style.borderStyle === 'none') {\n format.borderBottom = DEFAULT_BORDER_STYLE;\n format.borderLeft = DEFAULT_BORDER_STYLE;\n format.borderRight = DEFAULT_BORDER_STYLE;\n format.borderTop = DEFAULT_BORDER_STYLE;\n }\n });\n}\n\n/**\n * @internal Export for test only\n * @param html Source html\n */\n\nexport function excelHandler(html: string, htmlBefore: string): string {\n if (html.match(LAST_TD_END_REGEX)) {\n const trMatch = htmlBefore.match(LAST_TR_REGEX);\n const tr = trMatch ? trMatch[0] : '

          ';\n html = table + html + '
          ';\n }\n\n return html;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content from PowerPoint\n * @param event The BeforePaste event\n */\n\nexport function processPastedContentFromPowerPoint(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n\n if (clipboardData.html && !clipboardData.text && clipboardData.image) {\n // It is possible that PowerPoint copied both image and HTML but not plain text.\n // We always prefer HTML if any.\n const doc = new DOMParser().parseFromString(\n trustedHTMLHandler(clipboardData.html),\n 'text/html'\n );\n\n moveChildNodes(fragment, doc?.body);\n }\n}\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { findClosestElementAncestor, getTagOfNode, matchesSelector } from 'roosterjs-editor-dom';\nimport { setProcessor } from '../utils/setProcessor';\nimport {\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelListItemLevelFormat,\n ContentModelSegmentFormat,\n DomToModelContext,\n ElementProcessor,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer,span.WACImageBorder';\nconst LIST_CONTAINER_ELEMENT_CLASS_NAME = 'ListContainerWrapper';\n\nconst PARAGRAPH = 'Paragraph';\nconst TABLE_CONTAINER = 'TableContainer';\n\nconst TEMP_ELEMENTS_CLASSES = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n 'ListMarkerWrappingSpan',\n];\n\nconst CLASSES_TO_KEEP = [\n 'OutlineElement',\n 'NumberListStyle',\n 'WACImageContainer',\n 'ListContainerWrapper',\n 'BulletListStyle',\n ...TEMP_ELEMENTS_CLASSES,\n 'TableCellContent',\n PARAGRAPH,\n 'WACImageContainer',\n 'WACImageBorder',\n TABLE_CONTAINER,\n 'LineBreakBlob',\n];\n\nconst LIST_ELEMENT_TAGS = ['UL', 'OL', 'LI'];\nconst LIST_ELEMENT_SELECTOR = LIST_ELEMENT_TAGS.join(',');\n\n/**\n * Wac components do not use sub and super tags, instead only add vertical align to a span.\n * This parser normalize the content for content model\n */\nconst wacSubSuperParser: FormatParser = (\n format: ContentModelSegmentFormat,\n element: HTMLElement\n): void => {\n const verticalAlign = element.style.verticalAlign;\n if (verticalAlign === 'super') {\n format.superOrSubScriptSequence = 'super';\n }\n if (verticalAlign === 'sub') {\n format.superOrSubScriptSequence = 'sub';\n }\n};\n\n/**\n * This processor does:\n * 1) Remove the display and margin of the element.\n * 2) When an element should be ignored but should handle the child elements call the default child processor.\n * 3) Removes the End of Paragraph element to avoid empty lines, we should only remove this if the previous element of the EOP is an EmptyTextRun\n * 4) Finally call the default processor.\n * @returns\n */\nconst wacElementProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext\n): void => {\n const elementTag = getTagOfNode(element);\n if (matchesSelector(element, WAC_IDENTIFY_SELECTOR)) {\n element.style.removeProperty('display');\n element.style.removeProperty('margin');\n }\n\n if (element.classList.contains(LIST_CONTAINER_ELEMENT_CLASS_NAME)) {\n context.elementProcessors.child(group, element, context);\n return;\n }\n\n if (TEMP_ELEMENTS_CLASSES.some(className => element.classList.contains(className))) {\n return;\n } else if (shouldClearListContext(elementTag, element, context)) {\n const { listFormat } = context;\n listFormat.levels = [];\n listFormat.listParent = undefined;\n }\n\n context.defaultElementProcessors.element(group, element, context);\n};\n\n/**\n * This processor calls the default list processor and then sets the correct list level and list bullet.\n */\nconst wacLiElementProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLLIElement,\n context: DomToModelContext\n): void => {\n context.defaultElementProcessors.li?.(group, element, context);\n const { listFormat } = context;\n const listParent = listFormat.listParent;\n if (listParent) {\n const lastblock = listParent.blocks[listParent.blocks.length - 1];\n if (\n lastblock.blockType == 'BlockGroup' &&\n lastblock.blockGroupType == 'ListItem' &&\n context.listFormat.listParent !== lastblock\n ) {\n const currentLevel = lastblock.levels[lastblock.levels.length - 1];\n\n // Get item level from 'data-aria-level' attribute\n let level = parseInt(element.getAttribute('data-aria-level') ?? '');\n if (level > 0) {\n if (level > lastblock.levels.length) {\n while (level != lastblock.levels.length) {\n lastblock.levels.push(currentLevel);\n }\n } else {\n lastblock.levels.splice(level, lastblock.levels.length - 1);\n lastblock.levels[level - 1] = currentLevel;\n }\n }\n }\n }\n};\n\n/**\n * This parsers does:\n * 1) Sets the display for dummy item to undefined when the current style is block.\n * 2) Removes the Margin Left\n */\nconst wacListItemParser: FormatParser = (\n format: ContentModelListItemLevelFormat,\n element: HTMLElement\n): void => {\n if (element.style.display === 'block') {\n format.displayForDummyItem = undefined;\n }\n\n format.marginLeft = undefined;\n};\n\n/**\n * Wac usually adds padding to lists which is unwanted so remove it.\n */\nconst wacListLevelParser: FormatParser = (\n format: ContentModelListItemLevelFormat\n): void => {\n format.marginLeft = undefined;\n format.paddingLeft = undefined;\n};\n\n/**\n * This function returns whether we need to clear the list format.\n * Word Online wraps lists inside divs to have this structure:\n *\n *
          \n *
            ...
          \n *
          \n *
          \n *

          ...

          \n *
          \n *
          \n *
            ...
          \n *
          \n *\n * So if a elements is not contained inside of a list we should clear the list context to prevent normal text to be\n * transformed into list\n * For the above scenario, if we do not clear the format, the content inside of the second div would be transformed to a list too.\n */\nfunction shouldClearListContext(\n elementTag: string,\n element: HTMLElement,\n context: DomToModelContext\n) {\n return (\n context.listFormat.levels.length > 0 &&\n LIST_ELEMENT_TAGS.every(tag => tag != elementTag) &&\n !findClosestElementAncestor(element, undefined, LIST_ELEMENT_SELECTOR)\n );\n}\n\n/**\n * @internal\n * Convert pasted content from Office Online\n * Once it is known that the document is from WAC\n * We need to remove the display property and margin from all the list item\n * @param ev ContentModelBeforePasteEvent\n */\nexport function processPastedContentWacComponents(ev: ContentModelBeforePasteEvent) {\n addParser(ev.domToModelOption, 'segment', wacSubSuperParser);\n addParser(ev.domToModelOption, 'listItem', wacListItemParser);\n addParser(ev.domToModelOption, 'listLevel', wacListLevelParser);\n addParser(ev.domToModelOption, 'container', wacBlockParser);\n\n setProcessor(ev.domToModelOption, 'element', wacElementProcessor);\n setProcessor(ev.domToModelOption, 'li', wacLiElementProcessor);\n setProcessor(ev.domToModelOption, 'ol', wacListProcessor);\n setProcessor(ev.domToModelOption, 'ul', wacListProcessor);\n ev.sanitizingOption.additionalAllowedCssClasses.push(...CLASSES_TO_KEEP);\n}\n\n/**\n * List items from word have this format when using List items:\n * @example\n
          \n
            \n
            \n
            \n
              \n
              \n
              \n
                \n
                \n * Due to this the div between each of the lists we need to restore the list context to use the previous list,\n * otherwise it could create a new list instead under the same list element\n */\nconst wacListProcessor: ElementProcessor = (\n group: ContentModelBlockGroup,\n element: HTMLOListElement | HTMLUListElement,\n context: DomToModelContext\n): void => {\n const lastBlock = group.blocks[group.blocks.length - 1];\n const isWrappedInContainer = findClosestElementAncestor(\n element,\n undefined,\n `.${LIST_CONTAINER_ELEMENT_CLASS_NAME}`\n );\n if (\n isWrappedInContainer?.previousElementSibling?.classList.contains(\n LIST_CONTAINER_ELEMENT_CLASS_NAME\n )\n ) {\n if (lastBlock?.blockType === 'BlockGroup' && lastBlock.blockGroupType == 'ListItem') {\n context.listFormat = {\n threadItemCounts: [],\n levels: lastBlock.levels,\n listParent: group,\n };\n }\n }\n if (element.tagName.toUpperCase() === 'OL') {\n context.defaultElementProcessors.ol?.(group, element as HTMLOListElement, context);\n } else {\n context.defaultElementProcessors.ul?.(group, element as HTMLUListElement, context);\n }\n};\n\nconst wacBlockParser: FormatParser = (\n format: ContentModelBlockFormat,\n element: HTMLElement\n) => {\n if (element.classList.contains(TABLE_CONTAINER) && element.style.marginLeft.startsWith('-')) {\n delete format.marginLeft;\n }\n};\n","import addParser from '../utils/addParser';\nimport ContentModelBeforePasteEvent from '../../../../publicTypes/event/ContentModelBeforePasteEvent';\nimport { chainSanitizerCallback, getStyles, moveChildNodes } from 'roosterjs-editor-dom';\nimport { processWordComments } from './processWordComments';\nimport { processWordList } from './processWordLists';\nimport { setProcessor } from '../utils/setProcessor';\nimport {\n ContentModelBlockFormat,\n ContentModelListItemFormat,\n ContentModelListItemLevelFormat,\n DomToModelContext,\n ElementProcessor,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\nconst PERCENTAGE_REGEX = /%/;\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\n\n/**\n * @internal\n * Handles Pasted content when source is Word Desktop\n * @param ev ContentModelBeforePasteEvent\n */\nexport function processPastedContentFromWordDesktop(ev: ContentModelBeforePasteEvent) {\n setProcessor(ev.domToModelOption, 'element', wordDesktopElementProcessor);\n addParser(ev.domToModelOption, 'block', removeNonValidLineHeight);\n addParser(ev.domToModelOption, 'listLevel', listLevelParser);\n addParser(ev.domToModelOption, 'listItemElement', listItemElementParser);\n\n // Remove \"border:none\" for image to fix image resize behavior\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\n // displayed incorrectly when resize it. So we need to drop this style\n chainSanitizerCallback(\n ev.sanitizingOption.cssStyleCallbacks,\n 'border',\n (value, element) => element.tagName != 'IMG' || value != 'none'\n );\n\n // Preserve when its innerHTML is \" \" to avoid dropping an empty line\n chainSanitizerCallback(ev.sanitizingOption.elementCallbacks, 'O:P', element => {\n moveChildNodes(element);\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); //  \n return true;\n });\n}\n\n/**\n * @internal\n * Exported only for unit test\n */\nexport const wordDesktopElementProcessor: ElementProcessor = (\n group,\n element,\n context\n) => {\n const styles = getStyles(element);\n // Process Word Lists or Word Commands, otherwise use the default processor on this element.\n if (\n !(processWordList(styles, group, element, context) || processWordComments(styles, element))\n ) {\n context.defaultElementProcessors.element(group, element, context);\n }\n};\n\nfunction removeNonValidLineHeight(\n format: ContentModelBlockFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly>\n): void {\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\n let parsedLineHeight: number;\n if (\n PERCENTAGE_REGEX.test(element.style.lineHeight) &&\n !isNaN((parsedLineHeight = parseInt(element.style.lineHeight))) &&\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\n ) {\n format.lineHeight = defaultStyle.lineHeight;\n }\n}\n\nfunction listLevelParser(\n format: ContentModelListItemLevelFormat,\n element: HTMLElement,\n context: DomToModelContext,\n defaultStyle: Readonly>\n): void {\n if (element.style.marginLeft != '') {\n format.marginLeft = defaultStyle.marginLeft;\n }\n\n format.marginBottom = undefined;\n}\n\nconst listItemElementParser: FormatParser = (\n format: ContentModelListItemFormat,\n element: HTMLElement\n): void => {\n if (element.style.marginLeft) {\n format.marginLeft = undefined;\n }\n if (element.style.marginRight) {\n format.marginRight = undefined;\n }\n};\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\n\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\nconst MSO_ELEMENT = 'mso-element';\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\n\n/**\n * @internal\n * Check whether the element contain Word attributes related to comments and if it does we should no process\n * this element.\n * @returns\n */\nexport function processWordComments(styles: Record, element: HTMLElement) {\n return (\n styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT ||\n (safeInstanceOf(element, 'HTMLAnchorElement') &&\n MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) ||\n styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST\n );\n}\n","import { getStyles } from 'roosterjs-editor-dom';\nimport { NodeType } from 'roosterjs-editor-types';\nimport {\n addBlock,\n createListItem,\n createListLevel,\n parseFormat,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlockGroup,\n ContentModelListItemLevelFormat,\n ContentModelListLevel,\n DomToModelContext,\n DomToModelListFormat,\n FormatParser,\n} from 'roosterjs-content-model-types';\n\n/** Word list metadata style name */\nconst MSO_LIST = 'mso-list';\nconst MSO_LIST_IGNORE = 'ignore';\nconst LOOKUP_DEPTH = 5;\nconst WORD_FIRST_LIST = 'l0';\n\ninterface WordDesktopListFormat extends DomToModelListFormat {\n wordLevel?: number | '';\n wordList?: string;\n wordKnownLevels?: Map;\n}\n\n/**\n * @internal\n * @param styles\n * @param group\n * @param element\n * @param context\n * @returns\n */\nexport function processWordList(\n styles: Record,\n group: ContentModelBlockGroup,\n element: HTMLElement,\n context: DomToModelContext\n) {\n const listFormat = context.listFormat as WordDesktopListFormat;\n if (!listFormat.wordKnownLevels) {\n listFormat.wordKnownLevels = new Map();\n }\n const wordListStyle = styles[MSO_LIST] || '';\n\n // If the element contains Ignore style, do not process it,\n // Usually this element contains the fake bullet used in Word Desktop.\n if (wordListStyle.toLowerCase() === MSO_LIST_IGNORE) {\n return true;\n }\n\n const listProps = wordListStyle.split(' ');\n // Try get the list metadata from word, which follows this format: l1 level1 lfo2\n // If we are able to get the level property means we can process this element to be a list\n listFormat.wordLevel = listProps[1] && parseInt(listProps[1].substr('level'.length));\n\n listFormat.wordList = listProps[0] || WORD_FIRST_LIST;\n if (listFormat.levels.length == 0) {\n listFormat.levels = listFormat.wordKnownLevels.get(listFormat.wordList) || [];\n }\n\n if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {\n const { wordLevel } = listFormat;\n // Retrieve the Fake bullet on the element and also the list type\n const fakeBullet = getFakeBulletText(element);\n const listType = getFakeBulletTagName(fakeBullet);\n\n // Create the new level of the list item and parse the format\n const newLevel: ContentModelListLevel = createListLevel(listType);\n parseFormat(element, context.formatParsers.listLevel, newLevel.format, context);\n\n // If the list format is in a different level, update the array so we get the new item\n // To be in the same level as the provided level metadata.\n if (wordLevel > listFormat.levels.length) {\n while (wordLevel != listFormat.levels.length) {\n listFormat.levels.push(newLevel);\n }\n } else {\n listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);\n listFormat.levels[wordLevel - 1] = newLevel;\n }\n\n listFormat.listParent = group;\n\n processAsListItem(listFormat, context, element, group, fakeBullet);\n\n if (\n listFormat.levels.length > 0 &&\n listFormat.wordKnownLevels.get(listFormat.wordList) != listFormat.levels\n ) {\n listFormat.wordKnownLevels.set(listFormat.wordList, [...listFormat.levels]);\n }\n return true;\n }\n\n return false;\n}\n\nfunction processAsListItem(\n listFormat: WordDesktopListFormat,\n context: DomToModelContext,\n element: HTMLElement,\n group: ContentModelBlockGroup,\n fakeBullet: string\n) {\n const listItem = createListItem(listFormat.levels, context.segmentFormat);\n const lastLevel = listItem.levels[listItem.levels.length - 1];\n\n parseFormat(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);\n parseFormat(element, context.formatParsers.listItemElement, listItem.format, context);\n\n if (lastLevel?.listType == 'OL') {\n parseFormat(\n element,\n [startNumberOverrideParser(fakeBullet)],\n listItem.levels[listItem.levels.length - 1].format,\n context\n );\n }\n\n context.elementProcessors.child(listItem, element, context);\n addBlock(group, listItem);\n}\n\nfunction startNumberOverrideParser(\n fakeBullet: string\n): FormatParser | null {\n return (format, _, context) => {\n const {\n wordKnownLevels,\n wordLevel,\n wordList,\n } = context.listFormat as WordDesktopListFormat;\n if (typeof wordLevel === 'number' && wordList) {\n const start = parseInt(fakeBullet);\n if (start != undefined && !isNaN(start) && !wordKnownLevels?.has(wordList)) {\n format.startNumberOverride = start;\n }\n }\n };\n}\n\n/**\n * Check whether the string is a fake bullet from word Desktop\n */\nfunction isFakeBullet(fakeBullet: string): boolean {\n return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;\n}\n\n/** Given a fake bullet text, returns the type of list that should be used for it */\nfunction getFakeBulletTagName(fakeBullet: string): 'UL' | 'OL' {\n return isFakeBullet(fakeBullet) ? 'UL' : 'OL';\n}\n\n/**\n * Finds the fake bullet text out of the specified node and returns it. For images, it will return\n * a bullet string. If not found, it returns null...\n */\nfunction getFakeBulletText(node: Node, levels?: number): string {\n // Word uses the following format for their bullets:\n // <p style=\"mso-list:l1 level1 lfo2\">\n // <span style=\"...\">\n // <span style=\"mso-list:Ignore\">1.<span style=\"...\">      </span></span>\n // </span>\n // Content here...\n // </p>\n //\n // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That\n // text or image node will be the fake bullet we are looking for\n let result: string = '';\n levels = levels || LOOKUP_DEPTH;\n let child: Node | null = node.firstChild;\n while (!result && child) {\n // Check if this is the node that holds the fake bullets (mso-list: Ignore)\n if (isIgnoreNode(child)) {\n // Yes... this is the node that holds either the text or image data\n result = child.textContent?.trim() ?? '';\n\n // This is the case for image case\n if (result.length == 0) {\n result = 'o';\n }\n } else if (child.nodeType == NodeType.Element && levels > 1) {\n // If this is an element and we are not in the last level, try to get the fake bullet\n // out of the child\n result = getFakeBulletText(child, levels - 1);\n }\n\n child = child.nextSibling;\n }\n\n return result;\n}\n/**\n * Checks if the specified node is marked as a mso-list: Ignore. These\n * nodes need to be ignored when a list item is converted into standard\n * HTML lists\n */\nfunction isIgnoreNode(node: Node): boolean {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyles(node as HTMLElement)[MSO_LIST];\n if (\n listAttribute &&\n listAttribute.length > 0 &&\n listAttribute.trim().toLowerCase() == MSO_LIST_IGNORE\n ) {\n return true;\n }\n }\n\n return false;\n}\n","import {\n ContentModelFormatMap,\n DomToModelOption,\n FormatParser,\n FormatParsersPerCategory,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport default function addParser(\n domToModelOption: DomToModelOption,\n entry: TKey,\n additionalFormatParsers: FormatParser\n) {\n if (!domToModelOption.additionalFormatParsers) {\n domToModelOption.additionalFormatParsers = {};\n }\n if (!domToModelOption.additionalFormatParsers[entry]) {\n domToModelOption.additionalFormatParsers[entry] = [];\n }\n\n domToModelOption.additionalFormatParsers[entry]?.push(additionalFormatParsers);\n}\n","import { BorderFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { BorderKeys, DeprecatedColors } from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\nexport const deprecatedBorderColorParser: FormatParser = (\n format: BorderFormat\n): void => {\n BorderKeys.forEach(key => {\n const value = format[key];\n let color: string = '';\n if (\n value &&\n DeprecatedColors.some(dColor => value.indexOf(dColor) > -1 && (color = dColor))\n ) {\n const newValue = value.replace(color, '').trimRight();\n format[key] = newValue;\n }\n });\n};\n","import { ContentModelHyperLinkFormat, FormatParser } from 'roosterjs-content-model-types';\nimport { safeInstanceOf } from 'roosterjs-editor-dom';\n\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];\nconst INVALID_LINKS_REGEX = /^file:\\/\\/\\/[a-zA-Z\\/]/i;\n\n/**\n * @internal\n */\nexport const parseLink: FormatParser = (format, element) => {\n if (!safeInstanceOf(element, 'HTMLAnchorElement')) {\n return;\n }\n\n let url: URL | undefined;\n try {\n url = new URL(element.href);\n } catch {\n url = undefined;\n }\n\n if (\n (url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||\n INVALID_LINKS_REGEX.test(element.href)\n ) {\n element.removeAttribute('href');\n format.href = '';\n }\n};\n","import { DomToModelOption, ElementProcessorMap } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setProcessor(\n domToModelOption: DomToModelOption,\n entry: TKey,\n processorOverride: Partial[TKey]\n) {\n if (!domToModelOption.processorOverride) {\n domToModelOption.processorOverride = {};\n }\n\n domToModelOption.processorOverride[entry] = processorOverride;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { DeleteResult } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * @return True means content is changed, so need to rewrite content model to editor. Otherwise false\n */\nexport function handleKeyboardEventResult(\n editor: IContentModelEditor,\n model: ContentModelDocument,\n rawEvent: KeyboardEvent,\n result: DeleteResult,\n context: FormatWithContentModelContext\n): boolean {\n context.skipUndoSnapshot = true;\n\n switch (result) {\n case DeleteResult.NotDeleted:\n // We have not delete anything, we will let browser handle this event, so clear cached model if any since the content will be changed by browser\n editor.cacheContentModel(null);\n return false;\n\n case DeleteResult.NothingToDelete:\n // We known there is nothing to delete, no need to let browser keep handling the event\n rawEvent.preventDefault();\n return false;\n\n case DeleteResult.Range:\n case DeleteResult.SingleChar:\n // We have deleted what we need from content model, no need to let browser keep handling the event\n rawEvent.preventDefault();\n normalizeContentModel(model);\n\n if (result == DeleteResult.Range) {\n // A range is about to be deleted, so add an undo snapshot immediately\n context.skipUndoSnapshot = false;\n }\n\n // Trigger an event to let plugins know the content is about to be changed by Content Model keyboard editing.\n // So plugins can do proper handling. e.g. UndoPlugin can decide whether take a snapshot before this change happens.\n editor.triggerPluginEvent(PluginEventType.BeforeKeyboardEditing, {\n rawEvent,\n });\n\n return true;\n }\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteWord(rawEvent: KeyboardEvent, isMac: boolean) {\n return (\n (isMac && rawEvent.altKey && !rawEvent.metaKey) ||\n (!isMac && rawEvent.ctrlKey && !rawEvent.altKey)\n );\n}\n\n/**\n * @internal\n */\nexport function shouldDeleteAllSegmentsBefore(rawEvent: KeyboardEvent) {\n return rawEvent.metaKey && !rawEvent.altKey;\n}\n","export { ContentModelFormatState } from './publicTypes/format/formatState/ContentModelFormatState';\nexport { ImageFormatState } from './publicTypes/format/formatState/ImageFormatState';\nexport { Border } from './publicTypes/interface/Border';\nexport {\n CreateEditorContext,\n ContentModelCoreApiMap,\n ContentModelEditorCore,\n CreateContentModel,\n SetContentModel,\n} from './publicTypes/ContentModelEditorCore';\nexport {\n default as ContentModelBeforePasteEvent,\n ContentModelBeforePasteEventData,\n CompatibleContentModelBeforePasteEvent,\n} from './publicTypes/event/ContentModelBeforePasteEvent';\nexport { IContentModelEditor, ContentModelEditorOptions } from './publicTypes/IContentModelEditor';\nexport { InsertPoint } from './publicTypes/selection/InsertPoint';\nexport { TableSelectionContext } from './publicTypes/selection/TableSelectionContext';\nexport {\n DeletedEntity,\n FormatWithContentModelContext,\n FormatWithContentModelOptions,\n ContentModelFormatter,\n} from './publicTypes/parameter/FormatWithContentModelContext';\nexport {\n InsertEntityOptions,\n InsertEntityPosition,\n} from './publicTypes/parameter/InsertEntityOptions';\n\nexport { default as insertTable } from './publicApi/table/insertTable';\nexport { default as formatTable } from './publicApi/table/formatTable';\nexport { default as setTableCellShade } from './publicApi/table/setTableCellShade';\nexport { default as editTable } from './publicApi/table/editTable';\nexport { default as toggleBullet } from './publicApi/list/toggleBullet';\nexport { default as toggleNumbering } from './publicApi/list/toggleNumbering';\nexport { default as toggleBold } from './publicApi/segment/toggleBold';\nexport { default as toggleItalic } from './publicApi/segment/toggleItalic';\nexport { default as toggleUnderline } from './publicApi/segment/toggleUnderline';\nexport { default as toggleStrikethrough } from './publicApi/segment/toggleStrikethrough';\nexport { default as toggleSubscript } from './publicApi/segment/toggleSubscript';\nexport { default as toggleSuperscript } from './publicApi/segment/toggleSuperscript';\nexport { default as setBackgroundColor } from './publicApi/segment/setBackgroundColor';\nexport { default as setFontName } from './publicApi/segment/setFontName';\nexport { default as setFontSize } from './publicApi/segment/setFontSize';\nexport { default as setTextColor } from './publicApi/segment/setTextColor';\nexport { default as changeFontSize } from './publicApi/segment/changeFontSize';\nexport { default as applySegmentFormat } from './publicApi/segment/applySegmentFormat';\nexport { default as changeCapitalization } from './publicApi/segment/changeCapitalization';\nexport { default as insertImage } from './publicApi/image/insertImage';\nexport { default as setListStyle } from './publicApi/list/setListStyle';\nexport { default as setListStartNumber } from './publicApi/list/setListStartNumber';\nexport { default as hasSelectionInBlock } from './publicApi/selection/hasSelectionInBlock';\nexport { default as hasSelectionInSegment } from './publicApi/selection/hasSelectionInSegment';\nexport { default as hasSelectionInBlockGroup } from './publicApi/selection/hasSelectionInBlockGroup';\nexport { default as getSelectedSegments } from './publicApi/selection/getSelectedSegments';\nexport { default as setIndentation } from './publicApi/block/setIndentation';\nexport { default as setAlignment } from './publicApi/block/setAlignment';\nexport { default as setDirection } from './publicApi/block/setDirection';\nexport { default as setHeadingLevel } from './publicApi/block/setHeadingLevel';\nexport { default as toggleBlockQuote } from './publicApi/block/toggleBlockQuote';\nexport { default as setSpacing } from './publicApi/block/setSpacing';\nexport { default as setImageBorder } from './publicApi/image/setImageBorder';\nexport { default as setImageBoxShadow } from './publicApi/image/setImageBoxShadow';\nexport { default as changeImage } from './publicApi/image/changeImage';\nexport { default as getFormatState } from './publicApi/format/getFormatState';\nexport { default as applyPendingFormat } from './publicApi/format/applyPendingFormat';\nexport { default as clearFormat } from './publicApi/format/clearFormat';\nexport { default as insertLink } from './publicApi/link/insertLink';\nexport { default as removeLink } from './publicApi/link/removeLink';\nexport { default as adjustLinkSelection } from './publicApi/link/adjustLinkSelection';\nexport { default as setImageAltText } from './publicApi/image/setImageAltText';\nexport { default as adjustImageSelection } from './publicApi/image/adjustImageSelection';\nexport { default as setParagraphMargin } from './publicApi/block/setParagraphMargin';\nexport { default as toggleCode } from './publicApi/segment/toggleCode';\nexport { default as paste } from './publicApi/utils/paste';\nexport { default as insertEntity } from './publicApi/entity/insertEntity';\nexport { formatWithContentModel } from './publicApi/utils/formatWithContentModel';\n\nexport { default as ContentModelEditor } from './editor/ContentModelEditor';\nexport { default as isContentModelEditor } from './editor/isContentModelEditor';\nexport { default as ContentModelFormatPlugin } from './editor/plugins/ContentModelFormatPlugin';\nexport { default as ContentModelEditPlugin } from './editor/plugins/ContentModelEditPlugin';\nexport { default as ContentModelPastePlugin } from './editor/plugins/PastePlugin/ContentModelPastePlugin';\nexport { default as ContentModelTypeInContainerPlugin } from './editor/corePlugins/ContentModelTypeInContainerPlugin';\nexport { default as ContentModelCopyPastePlugin } from './editor/corePlugins/ContentModelCopyPastePlugin';\nexport {\n createContentModelEditorCore,\n promoteToContentModelEditorCore,\n} from './editor/createContentModelEditorCore';\nexport { combineBorderValue, extractBorderValues } from './domUtils/borderValues';\nexport { updateImageMetadata } from './domUtils/metadata/updateImageMetadata';\nexport { updateTableCellMetadata } from './domUtils/metadata/updateTableCellMetadata';\nexport { updateTableMetadata } from './domUtils/metadata/updateTableMetadata';\n","import { isGeneralSegment } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport type BlockAndPath = {\n /**\n * The sibling block\n */\n block: ContentModelBlock;\n\n /**\n * Path of this sibling block\n */\n path: ContentModelBlockGroup[];\n\n /**\n * If the input block is under a general segment, it is possible there are sibling segments under the same paragraph.\n * Use this property to return the sibling sibling under the same paragraph\n */\n siblingSegment?: ContentModelSegment;\n};\n\n/**\n * @internal\n */\nexport function getLeafSiblingBlock(\n path: ContentModelBlockGroup[],\n block: ContentModelBlock,\n isNext: boolean\n): BlockAndPath | null {\n const newPath = [...path];\n\n while (newPath.length > 0) {\n let group = newPath[0];\n const index = group.blocks.indexOf(block);\n\n if (index < 0) {\n break;\n }\n\n let nextBlock = group.blocks[index + (isNext ? 1 : -1)];\n\n if (nextBlock) {\n while (nextBlock.blockType == 'BlockGroup') {\n const child = nextBlock.blocks[isNext ? 0 : nextBlock.blocks.length - 1];\n\n if (!child) {\n return { block: nextBlock, path: newPath };\n } else if (child.blockType != 'BlockGroup') {\n newPath.unshift(nextBlock);\n return { block: child, path: newPath };\n } else {\n newPath.unshift(nextBlock);\n nextBlock = child;\n }\n }\n\n return { block: nextBlock, path: newPath };\n } else if (isGeneralSegment(group)) {\n // For general segment, we need to check if there is sibling segment under the same paragraph\n // First let's find the parent paragraph of this segment\n newPath.shift();\n\n let segmentIndex = -1;\n const segment = group;\n const para = newPath[0]?.blocks.find(\n x => x.blockType == 'Paragraph' && (segmentIndex = x.segments.indexOf(segment)) >= 0\n ) as ContentModelParagraph;\n\n if (para) {\n // Now we have found the parent paragraph, so let's check if it has a sibling segment\n const siblingSegment = para.segments[segmentIndex + (isNext ? 1 : -1)];\n\n if (siblingSegment) {\n // Return this block, path and segment since we have found it\n return { block: para, path: newPath, siblingSegment };\n } else {\n // No sibling segment, let's keep go upper level\n block = para;\n }\n } else {\n // Parent sibling is not found (in theory this should never happen), just return null\n break;\n }\n } else if (group.blockGroupType != 'Document' && group.blockGroupType != 'TableCell') {\n newPath.shift();\n block = group;\n } else {\n break;\n }\n }\n\n return null;\n}\n","import { alignTable } from '../table/alignTable';\nimport { ContentModelDocument, ContentModelListItem } from 'roosterjs-content-model-types';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { TableOperation } from 'roosterjs-editor-types';\n\nconst ResultMap: Record<\n 'left' | 'center' | 'right',\n Record<'ltr' | 'rtl', 'start' | 'center' | 'end'>\n> = {\n left: {\n ltr: 'start',\n rtl: 'end',\n },\n center: {\n ltr: 'center',\n rtl: 'center',\n },\n right: {\n ltr: 'end',\n rtl: 'start',\n },\n};\n\nconst TableAlignMap: Record<\n 'left' | 'center' | 'right',\n Record<\n 'ltr' | 'rtl',\n TableOperation.AlignLeft | TableOperation.AlignCenter | TableOperation.AlignRight\n >\n> = {\n left: {\n ltr: TableOperation.AlignLeft,\n rtl: TableOperation.AlignRight,\n },\n center: {\n ltr: TableOperation.AlignCenter,\n rtl: TableOperation.AlignCenter,\n },\n right: {\n ltr: TableOperation.AlignRight,\n rtl: TableOperation.AlignLeft,\n },\n};\n\n/**\n * @internal\n */\nexport function setModelAlignment(\n model: ContentModelDocument,\n alignment: 'left' | 'center' | 'right'\n) {\n const paragraphOrListItemOrTable = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n\n paragraphOrListItemOrTable.forEach(({ block }) => {\n const newAligment = ResultMap[alignment][block.format.direction == 'rtl' ? 'rtl' : 'ltr'];\n if (block.blockType === 'Table') {\n alignTable(\n block,\n TableAlignMap[alignment][block.format.direction == 'rtl' ? 'rtl' : 'ltr']\n );\n } else if (block) {\n const { format } = block;\n format.textAlign = newAligment;\n }\n });\n\n return paragraphOrListItemOrTable.length > 0;\n}\n","import { findListItemsInSameThread } from '../list/findListItemsInSameThread';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n ContentModelBlockFormat,\n ContentModelDocument,\n ContentModelListItem,\n MarginFormat,\n PaddingFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setModelDirection(model: ContentModelDocument, direction: 'ltr' | 'rtl') {\n const paragraphOrListItemOrTable = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n\n paragraphOrListItemOrTable.forEach(({ block }) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n const items = findListItemsInSameThread(model, block);\n\n items.forEach(item => {\n item.levels.forEach(level => {\n level.format.direction = direction;\n });\n\n item.blocks.forEach(block => internalSetDirection(block.format, direction));\n });\n } else if (block) {\n internalSetDirection(block.format, direction);\n }\n });\n\n return paragraphOrListItemOrTable.length > 0;\n}\n\nfunction internalSetDirection(format: ContentModelBlockFormat, direction: 'ltr' | 'rtl') {\n const wasRtl = format.direction == 'rtl';\n const isRtl = direction == 'rtl';\n\n if (wasRtl != isRtl) {\n format.direction = direction;\n\n // Adjust margin when change direction\n // TODO: make margin and padding direction-aware, like what we did for textAlign. So no need to adjust them here\n // TODO: Do we also need to handle border here?\n const marginLeft = format.marginLeft;\n const paddingLeft = format.paddingLeft;\n\n setProperty(format, 'marginLeft', format.marginRight);\n setProperty(format, 'marginRight', marginLeft);\n setProperty(format, 'paddingLeft', format.paddingRight);\n setProperty(format, 'paddingRight', paddingLeft);\n }\n}\n\nfunction setProperty(\n format: MarginFormat & PaddingFormat,\n key: keyof (MarginFormat & PaddingFormat),\n value: string | undefined\n) {\n if (value) {\n format[key] = value;\n } else {\n delete format[key];\n }\n}\n","import { createListLevel, parseValueWithUnit } from 'roosterjs-content-model-dom';\nimport { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n ContentModelDocument,\n ContentModelListItem,\n ContentModelListLevel,\n} from 'roosterjs-content-model-types';\n\nconst IndentStepInPixel = 40;\n\n/**\n * @internal\n */\nexport function setModelIndentation(\n model: ContentModelDocument,\n indentation: 'indent' | 'outdent',\n length: number = IndentStepInPixel\n) {\n const paragraphOrListItem = getOperationalBlocks(\n model,\n ['ListItem'],\n ['TableCell']\n );\n const isIndent = indentation == 'indent';\n\n paragraphOrListItem.forEach(({ block }) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n if (isIndent) {\n const lastLevel = block.levels[block.levels.length - 1];\n const newLevel: ContentModelListLevel = createListLevel(\n lastLevel?.listType || 'UL',\n lastLevel?.format\n );\n\n // New level is totally new, no need to have these attributes for now\n delete newLevel.format.startNumberOverride;\n\n block.levels.push(newLevel);\n } else {\n block.levels.pop();\n }\n } else if (block) {\n const { format } = block;\n const { marginLeft, marginRight, direction } = format;\n const isRtl = direction == 'rtl';\n const originalValue = parseValueWithUnit(isRtl ? marginRight : marginLeft);\n let newValue = (isIndent ? Math.ceil : Math.floor)(originalValue / length) * length;\n\n if (newValue == originalValue) {\n newValue = Math.max(newValue + length * (isIndent ? 1 : -1), 0);\n }\n\n if (isRtl) {\n format.marginRight = newValue + 'px';\n } else {\n format.marginLeft = newValue + 'px';\n }\n }\n });\n\n return paragraphOrListItem.length > 0;\n}\n","import { areSameFormats, createFormatContainer, unwrapBlock } from 'roosterjs-content-model-dom';\nimport { getOperationalBlocks, OperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport { wrapBlockStep1, WrapBlockStep1Result, wrapBlockStep2 } from '../common/wrapBlock';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function toggleModelBlockQuote(\n model: ContentModelDocument,\n format: ContentModelFormatContainerFormat\n): boolean {\n const paragraphOfQuote = getOperationalBlocks<\n ContentModelFormatContainer | ContentModelListItem\n >(model, ['FormatContainer', 'ListItem'], ['TableCell'], true /*deepFirst*/);\n\n if (areAllBlockQuotes(paragraphOfQuote)) {\n // All selections are already in quote, we need to unquote them\n paragraphOfQuote.forEach(({ block, parent }) => {\n unwrapBlock(parent, block);\n });\n } else {\n const step1Results: WrapBlockStep1Result[] = [];\n const creator = () => createFormatContainer('blockquote', format);\n const canMerge = (\n target: ContentModelBlock,\n current?: ContentModelFormatContainer\n ): target is ContentModelFormatContainer =>\n canMergeQuote(target, current?.format || format);\n\n paragraphOfQuote.forEach(({ block, parent }) => {\n if (isQuote(block)) {\n // Already in quote, no op\n } else {\n wrapBlockStep1(step1Results, parent, block, creator, canMerge);\n }\n });\n\n wrapBlockStep2(step1Results, canMerge);\n }\n\n return paragraphOfQuote.length > 0;\n}\n\nfunction canMergeQuote(\n target: ContentModelBlock,\n format: ContentModelFormatContainerFormat\n): target is ContentModelFormatContainer {\n return isQuote(target) && areSameFormats(format, target.format);\n}\n\nfunction isQuote(block: ContentModelBlock): block is ContentModelFormatContainer {\n return (\n isBlockGroupOfType(block, 'FormatContainer') &&\n block.tagName == 'blockquote'\n );\n}\n\nfunction areAllBlockQuotes(\n blockAndParents: OperationalBlocks[]\n): blockAndParents is { block: ContentModelFormatContainer; parent: ContentModelBlockGroup }[] {\n return blockAndParents.every(blockAndParent => isQuote(blockAndParent.block));\n}\n","import { adjustWordSelection } from '../selection/adjustWordSelection';\nimport { applyTableFormat } from '../table/applyTableFormat';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport { createFormatContainer } from 'roosterjs-content-model-dom';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { iterateSelections } from '../selection/iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelListItem,\n ContentModelSegment,\n ContentModelSegmentFormat,\n ContentModelTable,\n Selectable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function clearModelFormat(\n model: ContentModelDocument,\n blocksToClear: [ContentModelBlockGroup[], ContentModelBlock][],\n segmentsToClear: ContentModelSegment[],\n tablesToClear: [ContentModelTable, boolean][]\n) {\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n if (segments) {\n arrayPush(segmentsToClear, segments);\n }\n\n if (block) {\n blocksToClear.push([path, block]);\n } else if (tableContext) {\n clearTableCellFormat(tableContext, tablesToClear);\n }\n },\n {\n // When there is a default format to apply, we know how to handle segment format under list.\n // So no need to clear format of list number.\n // Otherwise, we will clear all format of selected text. And since they are under LI tag, we\n // also need to clear the format of LI (format holder) so that the format is really cleared\n includeListFormatHolder: model.format ? 'never' : 'anySegment',\n }\n );\n\n const marker = segmentsToClear[0];\n\n // 2. If selection is collapsed, add selection to whole word to clear if any\n if (\n blocksToClear.length == 1 &&\n isOnlySelectionMarkerSelected(blocksToClear[0][1]) &&\n blocksToClear.length == 1\n ) {\n segmentsToClear.splice(0, segmentsToClear.length, ...adjustWordSelection(model, marker));\n clearListFormat(blocksToClear[0][0]);\n } else if (blocksToClear.length > 1 || blocksToClear.some(x => isWholeBlockSelected(x[1]))) {\n // 2. If a full block or multiple blocks are selected, clear block format\n for (let i = blocksToClear.length - 1; i >= 0; i--) {\n const [path, block] = blocksToClear[i];\n\n clearBlockFormat(path, block);\n clearListFormat(path);\n clearContainerFormat(path, block);\n }\n }\n\n // 3. Finally clear format for segments\n clearSegmentsFormat(segmentsToClear, model.format);\n\n // 4. Clear format for table if any\n createTablesFormat(tablesToClear);\n}\n\nfunction createTablesFormat(tablesToClear: [ContentModelTable, boolean][]) {\n tablesToClear.forEach(x => {\n const [table, isWholeTableSelected] = x;\n if (isWholeTableSelected) {\n table.format = {\n useBorderBox: table.format.useBorderBox,\n borderCollapse: table.format.borderCollapse,\n };\n updateTableMetadata(table, () => null);\n }\n\n applyTableFormat(table, undefined /*newFormat*/, true);\n });\n}\n\nfunction clearSegmentsFormat(\n segmentsToClear: ContentModelSegment[],\n defaultSegmentFormat: ContentModelSegmentFormat | undefined\n) {\n segmentsToClear.forEach(x => {\n x.format = { ...(defaultSegmentFormat || {}) };\n\n if (x.link) {\n delete x.link.format.textColor;\n }\n\n delete x.code;\n });\n}\n\nfunction clearTableCellFormat(\n tableContext: TableSelectionContext | undefined,\n tablesToClear: [ContentModelTable, boolean][]\n) {\n if (tableContext) {\n const { table, colIndex, rowIndex, isWholeTableSelected } = tableContext;\n const cell = table.rows[rowIndex].cells[colIndex];\n\n if (cell.isSelected) {\n updateTableCellMetadata(cell, () => null);\n cell.isHeader = false;\n cell.format = {\n useBorderBox: cell.format.useBorderBox,\n };\n }\n\n if (!tablesToClear.find(x => x[0] == table)) {\n tablesToClear.push([table, isWholeTableSelected]);\n }\n }\n}\n\nfunction clearContainerFormat(path: ContentModelBlockGroup[], block: ContentModelBlock) {\n const containerPathIndex = getClosestAncestorBlockGroupIndex(\n path,\n ['FormatContainer'],\n ['TableCell']\n );\n\n if (containerPathIndex >= 0 && containerPathIndex < path.length - 1) {\n const container = path[containerPathIndex] as ContentModelFormatContainer;\n const containerIndex = path[containerPathIndex + 1].blocks.indexOf(container);\n const blockIndex = container.blocks.indexOf(block);\n\n if (blockIndex >= 0 && containerIndex >= 0) {\n const newContainer = createFormatContainer(container.tagName, container.format);\n\n container.blocks.splice(blockIndex, 1);\n newContainer.blocks = container.blocks.splice(blockIndex);\n\n path[containerPathIndex + 1].blocks.splice(containerIndex + 1, 0, block, newContainer);\n }\n }\n}\n\nfunction clearListFormat(path: ContentModelBlockGroup[]) {\n const listItem = path[getClosestAncestorBlockGroupIndex(path, ['ListItem'], ['TableCell'])] as\n | ContentModelListItem\n | undefined;\n\n if (listItem) {\n listItem.levels = [];\n }\n}\n\nfunction clearBlockFormat(path: ContentModelBlockGroup[], block: ContentModelBlock) {\n if (block.blockType == 'Divider') {\n const index = path[0].blocks.indexOf(block);\n\n if (index >= 0) {\n path[0].blocks.splice(index, 1);\n }\n } else if (block.blockType == 'Paragraph') {\n block.format = {};\n delete block.decorator;\n }\n}\n\nfunction isOnlySelectionMarkerSelected(block: ContentModelBlock) {\n const segments = block.blockType == 'Paragraph' ? block.segments.filter(x => x.isSelected) : [];\n\n return segments.length == 1 && segments[0].segmentType == 'SelectionMarker';\n}\n\nfunction isWholeBlockSelected(block: ContentModelBlock) {\n return (\n (block as Selectable).isSelected ||\n (block.blockType == 'Paragraph' && block.segments.every(x => x.isSelected))\n );\n}\n","import type {\n ContentModelBlock,\n ContentModelBlockBase,\n ContentModelBlockGroupBase,\n ContentModelBlockGroupType,\n ContentModelBlockType,\n ContentModelDivider,\n ContentModelDocument,\n ContentModelEntity,\n ContentModelFormatBase,\n ContentModelFormatContainer,\n ContentModelGeneralBlock,\n ContentModelImage,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelSegmentBase,\n ContentModelSegmentType,\n ContentModelSelectionMarker,\n ContentModelTable,\n ContentModelTableCell,\n ContentModelWithDataset,\n ContentModelWithFormat,\n ContentModelGeneralSegment,\n ContentModelText,\n ContentModelTableRow,\n ContentModelListLevel,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport type CachedElementHandler = (\n node: HTMLElement,\n type: 'general' | 'entity' | 'cache'\n) => HTMLElement | undefined;\n\n/**\n * @internal\n * Options for cloneModel API\n */\nexport interface CloneModelOptions {\n /**\n * Specify how to deal with cached element, including cached block element, element in General Model, and wrapper element in Entity\n * - True: Cloned model will have the same reference to the cached element\n * - False/Not passed: For cached block element, cached element will be undefined. For General Model and Entity, the element will have deep clone and assign to the cloned model\n * - A callback: invoke the callback with the source cached element and a string to specify model type, let the callback return the expected value of cached element.\n * For General Model and Entity, the callback must return a valid element, otherwise there will be exception thrown.\n */\n includeCachedElement?: boolean | CachedElementHandler;\n}\n\n/**\n * @internal\n */\nexport function cloneModel(\n model: ContentModelDocument,\n options?: CloneModelOptions\n): ContentModelDocument {\n const newModel: ContentModelDocument = cloneBlockGroupBase(model, options || {});\n\n if (model.format) {\n newModel.format = Object.assign({}, model.format);\n }\n\n return newModel;\n}\n\nfunction cloneBlock(block: ContentModelBlock, options: CloneModelOptions): ContentModelBlock {\n switch (block.blockType) {\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'FormatContainer':\n return cloneFormatContainer(block, options);\n case 'General':\n return cloneGeneralBlock(block, options);\n case 'ListItem':\n return cloneListItem(block, options);\n }\n break;\n case 'Divider':\n return cloneDivider(block, options);\n case 'Entity':\n return cloneEntity(block, options);\n case 'Paragraph':\n return cloneParagraph(block, options);\n case 'Table':\n return cloneTable(block, options);\n }\n}\n\nfunction cloneSegment(\n segment: ContentModelSegment,\n options: CloneModelOptions\n): ContentModelSegment {\n switch (segment.segmentType) {\n case 'Br':\n return cloneSegmentBase(segment);\n case 'Entity':\n return cloneEntity(segment, options);\n case 'General':\n return cloneGeneralSegment(segment, options);\n case 'Image':\n return cloneImage(segment);\n case 'SelectionMarker':\n return cloneSelectionMarker(segment);\n case 'Text':\n return cloneText(segment);\n }\n}\n\nfunction cloneModelWithFormat(\n model: ContentModelWithFormat\n): ContentModelWithFormat {\n return {\n format: Object.assign({}, model.format),\n };\n}\n\nfunction cloneModelWithDataset(model: ContentModelWithDataset): ContentModelWithDataset {\n return {\n dataset: Object.assign({}, model.dataset),\n };\n}\n\nfunction cloneBlockBase(\n block: ContentModelBlockBase\n): ContentModelBlockBase {\n const { blockType } = block;\n\n return Object.assign(\n {\n blockType,\n },\n cloneModelWithFormat(block)\n );\n}\n\nfunction cloneBlockGroupBase(\n group: ContentModelBlockGroupBase,\n options: CloneModelOptions\n): ContentModelBlockGroupBase {\n const { blockGroupType, blocks } = group;\n\n return {\n blockGroupType: blockGroupType,\n blocks: blocks.map(block => cloneBlock(block, options)),\n };\n}\n\nfunction cloneSegmentBase(\n segment: ContentModelSegmentBase\n): ContentModelSegmentBase {\n const { segmentType, isSelected, code, link } = segment;\n\n const newSegment: ContentModelSegmentBase = Object.assign(\n {\n segmentType,\n isSelected,\n },\n cloneModelWithFormat(segment)\n );\n\n if (code) {\n newSegment.code = cloneModelWithFormat(code);\n }\n if (link) {\n newSegment.link = Object.assign(cloneModelWithFormat(link), cloneModelWithDataset(link));\n }\n\n return newSegment;\n}\n\nfunction cloneEntity(entity: ContentModelEntity, options: CloneModelOptions): ContentModelEntity {\n const { wrapper, isReadonly, type, id } = entity;\n\n return Object.assign(\n {\n wrapper: handleCachedElement(wrapper, 'entity', options),\n isReadonly,\n type,\n id,\n },\n cloneBlockBase(entity),\n cloneSegmentBase(entity)\n );\n}\n\nfunction cloneParagraph(\n paragraph: ContentModelParagraph,\n options: CloneModelOptions\n): ContentModelParagraph {\n const { cachedElement, segments, isImplicit, decorator, segmentFormat } = paragraph;\n\n const newParagraph: ContentModelParagraph = Object.assign(\n {\n cachedElement: handleCachedElement(cachedElement, 'cache', options),\n isImplicit,\n segments: segments.map(segment => cloneSegment(segment, options)),\n segmentFormat: segmentFormat ? { ...segmentFormat } : undefined,\n },\n cloneBlockBase(paragraph),\n cloneModelWithFormat(paragraph)\n );\n\n if (decorator) {\n newParagraph.decorator = Object.assign(\n {\n tagName: decorator.tagName,\n },\n cloneModelWithFormat(decorator)\n );\n }\n\n return newParagraph;\n}\n\nfunction cloneTable(table: ContentModelTable, options: CloneModelOptions): ContentModelTable {\n const { cachedElement, widths, rows } = table;\n\n return Object.assign(\n {\n cachedElement: handleCachedElement(cachedElement, 'cache', options),\n widths: Array.from(widths),\n rows: rows.map(row => cloneTableRow(row, options)),\n },\n cloneBlockBase(table),\n cloneModelWithDataset(table)\n );\n}\n\nfunction cloneTableRow(\n row: ContentModelTableRow,\n options: CloneModelOptions\n): ContentModelTableRow {\n const { height, cells, cachedElement } = row;\n\n return Object.assign(\n {\n height,\n cachedElement: handleCachedElement(cachedElement, 'cache', options),\n cells: cells.map(cell => cloneTableCell(cell, options)),\n },\n cloneModelWithFormat(row)\n );\n}\n\nfunction cloneTableCell(\n cell: ContentModelTableCell,\n options: CloneModelOptions\n): ContentModelTableCell {\n const { cachedElement, isSelected, spanAbove, spanLeft, isHeader } = cell;\n\n return Object.assign(\n {\n cachedElement: handleCachedElement(cachedElement, 'cache', options),\n isSelected,\n spanAbove,\n spanLeft,\n isHeader,\n },\n cloneBlockGroupBase(cell, options),\n cloneModelWithFormat(cell),\n cloneModelWithDataset(cell)\n );\n}\n\nfunction cloneFormatContainer(\n container: ContentModelFormatContainer,\n options: CloneModelOptions\n): ContentModelFormatContainer {\n const { tagName, cachedElement } = container;\n const newContainer: ContentModelFormatContainer = Object.assign(\n { tagName, cachedElement: handleCachedElement(cachedElement, 'cache', options) },\n cloneBlockBase(container),\n cloneBlockGroupBase(container, options)\n );\n\n if (container.zeroFontSize) {\n newContainer.zeroFontSize = true;\n }\n\n return newContainer;\n}\n\nfunction cloneListItem(\n item: ContentModelListItem,\n options: CloneModelOptions\n): ContentModelListItem {\n const { formatHolder, levels } = item;\n\n return Object.assign(\n {\n formatHolder: cloneSelectionMarker(formatHolder),\n levels: levels.map(cloneListLevel),\n },\n cloneBlockBase(item),\n cloneBlockGroupBase(item, options)\n );\n}\n\nfunction cloneListLevel(level: ContentModelListLevel): ContentModelListLevel {\n const { listType } = level;\n\n return Object.assign({ listType }, cloneModelWithFormat(level), cloneModelWithDataset(level));\n}\nfunction cloneDivider(\n divider: ContentModelDivider,\n options: CloneModelOptions\n): ContentModelDivider {\n const { tagName, isSelected, cachedElement } = divider;\n\n return Object.assign(\n {\n isSelected,\n tagName,\n cachedElement: handleCachedElement(cachedElement, 'cache', options),\n },\n cloneBlockBase(divider)\n );\n}\n\nfunction cloneGeneralBlock(\n general: ContentModelGeneralBlock,\n options: CloneModelOptions\n): ContentModelGeneralBlock {\n const { element } = general;\n\n return Object.assign(\n {\n element: handleCachedElement(element, 'general', options),\n },\n cloneBlockBase(general),\n cloneBlockGroupBase(general, options)\n );\n}\n\nfunction cloneSelectionMarker(marker: ContentModelSelectionMarker): ContentModelSelectionMarker {\n return Object.assign({ isSelected: marker.isSelected }, cloneSegmentBase(marker));\n}\n\nfunction cloneImage(image: ContentModelImage): ContentModelImage {\n const { src, alt, title, isSelectedAsImageSelection } = image;\n\n return Object.assign(\n { src, alt, title, isSelectedAsImageSelection },\n cloneSegmentBase(image),\n cloneModelWithDataset(image)\n );\n}\n\nfunction cloneGeneralSegment(\n general: ContentModelGeneralSegment,\n options: CloneModelOptions\n): ContentModelGeneralSegment {\n return Object.assign(cloneGeneralBlock(general, options), cloneSegmentBase(general));\n}\n\nfunction cloneText(textSegment: ContentModelText): ContentModelText {\n const { text } = textSegment;\n return Object.assign({ text }, cloneSegmentBase(textSegment));\n}\n\nfunction handleCachedElement(\n node: T,\n type: 'general' | 'entity',\n options: CloneModelOptions\n): T;\n\nfunction handleCachedElement(\n node: T | undefined,\n type: 'cache',\n options: CloneModelOptions\n): T | undefined;\n\nfunction handleCachedElement(\n node: T | undefined,\n type: 'general' | 'entity' | 'cache',\n options: CloneModelOptions\n): T | undefined {\n const { includeCachedElement } = options;\n\n if (!node) {\n return undefined;\n } else if (!includeCachedElement) {\n return type == 'cache' ? undefined : (node.cloneNode(true /*deep*/) as T);\n } else if (includeCachedElement === true) {\n return node;\n } else {\n const result = includeCachedElement(node, type) as T | undefined;\n\n if ((type == 'general' || type == 'entity') && !result) {\n throw new Error('Entity and General Model must has wrapper element');\n }\n\n return result;\n }\n}\n","import {\n ContentModelBlockGroup,\n ContentModelBlockGroupBase,\n ContentModelBlockGroupType,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport type TypeOfBlockGroup<\n T extends ContentModelBlockGroup\n> = T extends ContentModelBlockGroupBase ? U : never;\n\n/**\n * @internal\n */\nexport function getClosestAncestorBlockGroupIndex(\n path: ContentModelBlockGroup[],\n blockGroupTypes: TypeOfBlockGroup[],\n stopTypes: ContentModelBlockGroupType[] = []\n): number {\n for (let i = 0; i < path.length; i++) {\n const group = path[i];\n\n if ((blockGroupTypes as string[]).indexOf(group.blockGroupType) >= 0) {\n return i;\n } else if (stopTypes.indexOf(group.blockGroupType) >= 0) {\n // Do not go across boundary specified by stopTypes.\n // For example, in most case we will set table as the boundary,\n // in order to allow modify list item under a table when the table itself is in another list item\n // Although this is not very likely to happen in most case, but we still need to handle it\n return -1;\n }\n }\n\n return -1;\n}\n","import { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { TypeOfBlockGroup } from './getClosestAncestorBlockGroupIndex';\n\n/**\n * @internal\n */\nexport function isBlockGroupOfType(\n input: ContentModelBlock | ContentModelBlockGroup | null | undefined,\n type: TypeOfBlockGroup\n): input is T {\n const item = input;\n\n return item?.blockGroupType == type;\n}\n","import { addSegment } from 'roosterjs-content-model-dom';\nimport { applyTableFormat } from '../table/applyTableFormat';\nimport { deleteSelection } from '../edit/deleteSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { InsertPoint } from '../../publicTypes/selection/InsertPoint';\nimport { normalizeTable } from '../table/normalizeTable';\nimport {\n createListItem,\n createParagraph,\n createSelectionMarker,\n createTableCell,\n normalizeContentModel,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockFormat,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegmentFormat,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\nconst HeadingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n/**\n * @internal\n * Options to specify how to merge models\n */\nexport interface MergeModelOption {\n /**\n * When there is only a table to merge, whether merge this table into current table (if any), or just directly insert (nested table).\n * This is usually used when paste table inside a table\n * @default false\n */\n mergeTable?: boolean;\n\n /**\n * Use this insert position to merge instead of querying selection from target model\n * @default undefined\n */\n insertPosition?: InsertPoint;\n\n /**\n * Use this to decide whether to change the source model format when doing the merge.\n * 'mergeAll': segment format of the insert position will be merged into the content that is merged into current model.\n * If the source model already has some format, it will not be overwritten.\n * 'keepSourceEmphasisFormat': format of the insert position will be set into the content that is merged into current model.\n * If the source model already has emphasis format, such as, fontWeight, Italic or underline different than the default style, it will not be overwritten.\n * 'none' the source segment format will not be modified.\n * @default undefined\n */\n mergeFormat?: 'mergeAll' | 'keepSourceEmphasisFormat' | 'none';\n}\n\n/**\n * @internal\n */\nexport function mergeModel(\n target: ContentModelDocument,\n source: ContentModelDocument,\n context?: FormatWithContentModelContext,\n options?: MergeModelOption\n) {\n const insertPosition =\n options?.insertPosition ?? deleteSelection(target, [], context).insertPoint;\n\n if (insertPosition) {\n if (options?.mergeFormat && options.mergeFormat != 'none') {\n const newFormat: ContentModelSegmentFormat = {\n ...(target.format || {}),\n ...insertPosition.marker.format,\n };\n\n applyDefaultFormat(source, newFormat, options?.mergeFormat);\n }\n\n for (let i = 0; i < source.blocks.length; i++) {\n const block = source.blocks[i];\n\n switch (block.blockType) {\n case 'Paragraph':\n mergeParagraph(insertPosition, block, i == 0, context);\n break;\n\n case 'Divider':\n insertBlock(insertPosition, block);\n break;\n\n case 'Entity':\n insertBlock(insertPosition, block);\n context?.newEntities.push(block);\n break;\n\n case 'Table':\n if (source.blocks.length == 1 && options?.mergeTable) {\n mergeTable(insertPosition, block, source);\n } else {\n insertBlock(insertPosition, block);\n }\n break;\n\n case 'BlockGroup':\n switch (block.blockGroupType) {\n case 'General':\n case 'FormatContainer':\n insertBlock(insertPosition, block);\n break;\n case 'ListItem':\n mergeList(insertPosition, block);\n break;\n }\n break;\n }\n }\n }\n\n normalizeContentModel(target);\n}\n\nfunction mergeParagraph(\n markerPosition: InsertPoint,\n newPara: ContentModelParagraph,\n mergeToCurrentParagraph: boolean,\n context?: FormatWithContentModelContext\n) {\n const { paragraph, marker } = markerPosition;\n const newParagraph = mergeToCurrentParagraph\n ? paragraph\n : splitParagraph(markerPosition, newPara.format);\n const segmentIndex = newParagraph.segments.indexOf(marker);\n\n if (segmentIndex >= 0) {\n for (let i = 0; i < newPara.segments.length; i++) {\n const segment = newPara.segments[i];\n\n newParagraph.segments.splice(segmentIndex + i, 0, segment);\n\n if (context && segment.segmentType == 'Entity') {\n context.newEntities.push(segment);\n }\n }\n }\n\n if (newPara.decorator) {\n newParagraph.decorator = { ...newPara.decorator };\n if (HeadingTags.indexOf(newParagraph.decorator.tagName) > -1) {\n const sourceKeys: (keyof ContentModelSegmentFormat)[] = getObjectKeys(\n newParagraph.decorator.format\n );\n const segmentDecoratorKeys: (keyof ContentModelSegmentFormat)[] = getObjectKeys(\n newParagraph.segmentFormat || {}\n );\n\n sourceKeys.forEach(key => {\n if (segmentDecoratorKeys.indexOf(key) > -1) {\n delete newParagraph.segmentFormat?.[key];\n }\n });\n }\n }\n\n if (!mergeToCurrentParagraph) {\n newParagraph.format = newPara.format;\n }\n}\n\nfunction mergeTable(\n markerPosition: InsertPoint,\n newTable: ContentModelTable,\n source: ContentModelDocument\n) {\n const { tableContext } = markerPosition;\n\n if (tableContext && source.blocks.length == 1 && source.blocks[0] == newTable) {\n const { table, colIndex, rowIndex } = tableContext;\n for (let i = 0; i < newTable.rows.length; i++) {\n for (let j = 0; j < newTable.rows[i].cells.length; j++) {\n const newCell = newTable.rows[i].cells[j];\n\n if (i == 0 && colIndex + j >= table.rows[0].cells.length) {\n for (let k = 0; k < table.rows.length; k++) {\n const leftCell = table.rows[k]?.cells[colIndex + j - 1];\n table.rows[k].cells[colIndex + j] = createTableCell(\n false /*spanLeft*/,\n false /*spanAbove*/,\n leftCell?.isHeader,\n leftCell?.format\n );\n }\n }\n\n if (j == 0 && rowIndex + i >= table.rows.length) {\n if (!table.rows[rowIndex + i]) {\n table.rows[rowIndex + i] = {\n cells: [],\n format: {},\n height: 0,\n };\n }\n\n for (let k = 0; k < table.rows[rowIndex].cells.length; k++) {\n const aboveCell = table.rows[rowIndex + i - 1]?.cells[k];\n table.rows[rowIndex + i].cells[k] = createTableCell(\n false /*spanLeft*/,\n false /*spanAbove*/,\n false /*isHeader*/,\n aboveCell?.format\n );\n }\n }\n\n table.rows[rowIndex + i].cells[colIndex + j] = newCell;\n\n if (i == 0 && j == 0) {\n addSegment(newCell, createSelectionMarker());\n }\n }\n }\n\n normalizeTable(table, markerPosition.marker.format);\n applyTableFormat(table, undefined /*newFormat*/, true /*keepCellShade*/);\n } else {\n insertBlock(markerPosition, newTable);\n }\n}\n\nfunction mergeList(markerPosition: InsertPoint, newList: ContentModelListItem) {\n splitParagraph(markerPosition, newList.format);\n\n const { path, paragraph } = markerPosition;\n\n const listItemIndex = getClosestAncestorBlockGroupIndex(path, ['ListItem']);\n const listItem = path[listItemIndex] as ContentModelListItem;\n const listParent = path[listItemIndex + 1]; // It is ok here when index is -1, that means there is no list and we just insert a new paragraph and use path[0] as its parent\n const blockIndex = listParent.blocks.indexOf(listItem || paragraph);\n\n if (blockIndex >= 0) {\n listParent.blocks.splice(blockIndex, 0, newList);\n }\n\n if (listItem) {\n listItem?.levels.forEach((level, i) => {\n newList.levels[i] = { ...level };\n });\n }\n}\n\nfunction splitParagraph(markerPosition: InsertPoint, newParaFormat: ContentModelBlockFormat) {\n const { paragraph, marker, path } = markerPosition;\n const segmentIndex = paragraph.segments.indexOf(marker);\n const paraIndex = path[0].blocks.indexOf(paragraph);\n const newParagraph = createParagraph(\n false /*isImplicit*/,\n { ...paragraph.format, ...newParaFormat },\n paragraph.segmentFormat\n );\n\n if (segmentIndex >= 0) {\n newParagraph.segments = paragraph.segments.splice(segmentIndex);\n }\n\n if (paraIndex >= 0) {\n path[0].blocks.splice(paraIndex + 1, 0, newParagraph);\n }\n\n const listItemIndex = getClosestAncestorBlockGroupIndex(\n path,\n ['ListItem'],\n ['FormatContainer', 'TableCell']\n );\n const listItem = path[listItemIndex] as ContentModelListItem;\n\n if (listItem) {\n const listParent = listItemIndex >= 0 ? path[listItemIndex + 1] : null;\n const blockIndex = listParent ? listParent.blocks.indexOf(listItem) : -1;\n\n if (blockIndex >= 0 && listParent) {\n const newListItem = createListItem(listItem.levels, listItem.formatHolder.format);\n\n if (paraIndex >= 0) {\n newListItem.blocks = listItem.blocks.splice(paraIndex + 1);\n }\n\n if (blockIndex >= 0) {\n listParent.blocks.splice(blockIndex + 1, 0, newListItem);\n }\n\n path[listItemIndex] = newListItem;\n }\n }\n\n markerPosition.paragraph = newParagraph;\n\n return newParagraph;\n}\n\nfunction insertBlock(markerPosition: InsertPoint, block: ContentModelBlock) {\n const { path } = markerPosition;\n const newParaFormat = block.blockType !== 'Paragraph' ? {} : block.format;\n const newPara = splitParagraph(markerPosition, newParaFormat);\n const blockIndex = path[0].blocks.indexOf(newPara);\n\n if (blockIndex >= 0) {\n path[0].blocks.splice(blockIndex, 0, block);\n }\n}\n\nfunction applyDefaultFormat(\n group: ContentModelBlockGroup,\n format: ContentModelSegmentFormat,\n applyDefaultFormatOption: 'mergeAll' | 'keepSourceEmphasisFormat'\n) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem') {\n block.formatHolder.format = mergeSegmentFormat(\n applyDefaultFormatOption,\n format,\n block.formatHolder.format\n );\n }\n applyDefaultFormat(block, format, applyDefaultFormatOption);\n break;\n\n case 'Table':\n block.rows.forEach(row =>\n row.cells.forEach(cell => {\n applyDefaultFormat(cell, format, applyDefaultFormatOption);\n })\n );\n break;\n\n case 'Paragraph':\n const paragraphFormat = block.decorator?.format || {};\n block.segments.forEach(segment => {\n if (segment.segmentType == 'General') {\n applyDefaultFormat(segment, format, applyDefaultFormatOption);\n }\n\n segment.format = mergeSegmentFormat(applyDefaultFormatOption, format, {\n ...paragraphFormat,\n ...segment.format,\n });\n });\n\n if (applyDefaultFormatOption === 'keepSourceEmphasisFormat') {\n delete block.decorator;\n }\n break;\n }\n });\n}\n\nfunction mergeSegmentFormat(\n applyDefaultFormatOption: 'mergeAll' | 'keepSourceEmphasisFormat',\n targetformat: ContentModelSegmentFormat,\n sourceFormat: ContentModelSegmentFormat\n): ContentModelSegmentFormat {\n return applyDefaultFormatOption == 'mergeAll'\n ? { ...targetformat, ...sourceFormat }\n : {\n ...targetformat,\n ...getSemanticFormat(sourceFormat),\n };\n}\n\nfunction getSemanticFormat(segmentFormat: ContentModelSegmentFormat): ContentModelSegmentFormat {\n const result: ContentModelSegmentFormat = {};\n\n const { fontWeight, italic, underline } = segmentFormat;\n\n if (fontWeight && fontWeight != 'normal') {\n result.fontWeight = fontWeight;\n }\n if (italic) {\n result.italic = italic;\n }\n if (underline) {\n result.underline = underline;\n }\n\n return result;\n}\n","import { ContentModelFormatState } from '../../publicTypes/format/formatState/ContentModelFormatState';\nimport { extractBorderValues } from '../../domUtils/borderValues';\nimport { getClosestAncestorBlockGroupIndex } from './getClosestAncestorBlockGroupIndex';\nimport { isBold } from '../../publicApi/segment/toggleBold';\nimport { iterateSelections } from '../selection/iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelFormatContainer,\n ContentModelImage,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function retrieveModelFormatState(\n model: ContentModelDocument,\n pendingFormat: ContentModelSegmentFormat | null,\n formatState: ContentModelFormatState\n) {\n let firstTableContext: TableSelectionContext | undefined;\n let firstBlock: ContentModelBlock | undefined;\n let isFirst = true;\n let isFirstImage = true;\n let isFirstSegment = true;\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n // Structure formats\n retrieveStructureFormat(formatState, path, isFirst);\n\n // Multiple line format\n if (block) {\n if (firstBlock) {\n formatState.isMultilineSelection = true;\n } else {\n firstBlock = block;\n }\n }\n\n if (block?.blockType == 'Paragraph') {\n // Paragraph formats\n retrieveParagraphFormat(formatState, block, isFirst);\n\n // Segment formats\n segments?.forEach(segment => {\n if (isFirstSegment || segment.segmentType != 'SelectionMarker') {\n retrieveSegmentFormat(\n formatState,\n isFirst,\n Object.assign(\n {},\n model.format,\n block.format,\n block.decorator?.format,\n segment.format,\n segment.code?.format,\n segment.link?.format,\n pendingFormat\n )\n );\n\n mergeValue(formatState, 'isCodeInline', !!segment?.code, isFirst);\n }\n\n // We only care the format of selection marker when it is the first selected segment. This is because when selection marker\n // is after some other selected segments, it mostly like appears at the beginning of a seconde line when the whole first line\n // is selected (e.g. triple-click on a line) then the second selection marker doesn't contain a correct format, so we need to\n // ignore it\n isFirstSegment = false;\n\n formatState.canUnlink = formatState.canUnlink || !!segment.link;\n formatState.canAddImageAltText =\n formatState.canAddImageAltText ||\n segments.some(segment => segment.segmentType == 'Image');\n\n isFirst = false;\n\n if (segment.segmentType === 'Image') {\n if (isFirstImage) {\n retrieveImageFormat(segment, formatState);\n isFirstImage = false;\n } else {\n formatState.imageFormat = undefined;\n }\n }\n });\n\n isFirst = false;\n }\n\n if (tableContext) {\n if (firstTableContext) {\n const { table, colIndex, rowIndex } = firstTableContext;\n\n // Merge table format\n if (\n tableContext.table == table &&\n (tableContext.colIndex != colIndex || tableContext.rowIndex != rowIndex)\n ) {\n formatState.canMergeTableCell = true;\n formatState.isMultilineSelection = true;\n }\n } else {\n // Table formats\n retrieveTableFormat(tableContext, formatState);\n firstTableContext = tableContext;\n }\n }\n\n // TODO: Support Code block in format state for Content Model\n },\n {\n includeListFormatHolder: 'never',\n }\n );\n\n if (formatState.fontSize) {\n formatState.fontSize = px2Pt(formatState.fontSize);\n }\n}\n\nfunction retrieveSegmentFormat(\n result: ContentModelFormatState,\n isFirst: boolean,\n mergedFormat: ContentModelSegmentFormat\n) {\n const superOrSubscript = mergedFormat.superOrSubScriptSequence?.split(' ')?.pop();\n\n mergeValue(result, 'isBold', isBold(mergedFormat.fontWeight), isFirst);\n mergeValue(result, 'isItalic', mergedFormat.italic, isFirst);\n mergeValue(result, 'isUnderline', mergedFormat.underline, isFirst);\n mergeValue(result, 'isStrikeThrough', mergedFormat.strikethrough, isFirst);\n mergeValue(result, 'isSuperscript', superOrSubscript == 'super', isFirst);\n mergeValue(result, 'isSubscript', superOrSubscript == 'sub', isFirst);\n mergeValue(result, 'letterSpacing', mergedFormat.letterSpacing, isFirst);\n\n mergeValue(result, 'fontName', mergedFormat.fontFamily, isFirst);\n mergeValue(result, 'fontSize', mergedFormat.fontSize, isFirst);\n mergeValue(result, 'backgroundColor', mergedFormat.backgroundColor, isFirst);\n mergeValue(result, 'textColor', mergedFormat.textColor, isFirst);\n\n //TODO: handle block owning segments with different line-heights\n mergeValue(result, 'lineHeight', mergedFormat.lineHeight, isFirst);\n}\n\nfunction retrieveParagraphFormat(\n result: ContentModelFormatState,\n paragraph: ContentModelParagraph,\n isFirst: boolean\n) {\n const headingLevel = parseInt((paragraph.decorator?.tagName || '').substring(1));\n const validHeadingLevel = headingLevel >= 1 && headingLevel <= 6 ? headingLevel : undefined;\n\n mergeValue(result, 'marginBottom', paragraph.format.marginBottom, isFirst);\n mergeValue(result, 'marginTop', paragraph.format.marginTop, isFirst);\n mergeValue(result, 'headingLevel', validHeadingLevel, isFirst);\n mergeValue(result, 'headerLevel', validHeadingLevel, isFirst);\n mergeValue(result, 'textAlign', paragraph.format.textAlign, isFirst);\n mergeValue(result, 'direction', paragraph.format.direction, isFirst);\n}\n\nfunction retrieveStructureFormat(\n result: ContentModelFormatState,\n path: ContentModelBlockGroup[],\n isFirst: boolean\n) {\n const listItemIndex = getClosestAncestorBlockGroupIndex(path, ['ListItem'], []);\n const containerIndex = getClosestAncestorBlockGroupIndex(path, ['FormatContainer'], []);\n\n if (listItemIndex >= 0) {\n const listItem = path[listItemIndex] as ContentModelListItem;\n const listType = listItem?.levels[listItem.levels.length - 1]?.listType;\n\n mergeValue(result, 'isBullet', listType == 'UL', isFirst);\n mergeValue(result, 'isNumbering', listType == 'OL', isFirst);\n }\n\n mergeValue(\n result,\n 'isBlockQuote',\n containerIndex >= 0 &&\n (path[containerIndex] as ContentModelFormatContainer)?.tagName == 'blockquote',\n isFirst\n );\n}\n\nfunction retrieveTableFormat(tableContext: TableSelectionContext, result: ContentModelFormatState) {\n const tableFormat = updateTableMetadata(tableContext.table);\n\n result.isInTable = true;\n result.tableHasHeader = tableContext.table.rows.some(row =>\n row.cells.some(cell => cell.isHeader)\n );\n\n if (tableFormat) {\n result.tableFormat = tableFormat;\n }\n}\n\nfunction retrieveImageFormat(image: ContentModelImage, result: ContentModelFormatState) {\n const { format } = image;\n const borderKey = 'borderTop';\n const extractedBorder = extractBorderValues(format[borderKey]);\n const borderColor = extractedBorder.color;\n const borderWidth = extractedBorder.width;\n const borderStyle = extractedBorder.style;\n result.imageFormat = {\n borderColor,\n borderWidth,\n borderStyle,\n boxShadow: format.boxShadow,\n borderRadius: format.borderRadius,\n };\n}\n\nfunction mergeValue(\n format: ContentModelFormatState,\n key: K,\n newValue: ContentModelFormatState[K] | undefined,\n isFirst: boolean\n) {\n if (isFirst) {\n if (newValue !== undefined) {\n format[key] = newValue;\n }\n } else if (newValue !== format[key]) {\n delete format[key];\n }\n}\n\nfunction px2Pt(px: string) {\n if (px && px.indexOf('px') == px.length - 2) {\n // Edge may not handle the floating computing well which causes the calculated value is a little less than actual value\n // So add 0.05 to fix it\n return Math.round(parseFloat(px) * 75 + 0.05) / 100 + 'pt';\n }\n return px;\n}\n","import { addBlock, setParagraphNotImplicit } from 'roosterjs-content-model-dom';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport { ContentModelBlock, ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface WrapBlockStep1Result {\n parent: ContentModelBlockGroup;\n wrapper: T;\n}\n\n/**\n * @internal\n */\nexport function wrapBlockStep1(\n step1Result: WrapBlockStep1Result[],\n parent: ContentModelBlockGroup | null,\n blockToWrap: ContentModelBlock,\n creator: () => T,\n canMerge: (target: ContentModelBlock) => target is T\n) {\n const index = parent?.blocks.indexOf(blockToWrap) ?? -1;\n\n if (parent && index >= 0) {\n parent.blocks.splice(index, 1);\n\n const prevBlock = parent.blocks[index - 1];\n const wrapper = canMerge(prevBlock) ? prevBlock : createAndAdd(parent, index, creator);\n\n setParagraphNotImplicit(blockToWrap);\n addBlock(wrapper, blockToWrap);\n\n // Use reverse order, so that we can merge from last to first to avoid modifying unmerged quotes\n step1Result.unshift({ parent, wrapper });\n }\n}\n\n/**\n * @internal\n */\nexport function wrapBlockStep2(\n step1Result: WrapBlockStep1Result[],\n canMerge: (target: ContentModelBlock, current: T) => target is T\n) {\n step1Result.forEach(({ parent, wrapper }) => {\n const index = parent.blocks.indexOf(wrapper);\n const nextBlock = parent.blocks[index + 1];\n\n if (index >= 0 && canMerge(nextBlock, wrapper)) {\n wrapper.blocks.forEach(setParagraphNotImplicit);\n arrayPush(wrapper.blocks, nextBlock.blocks);\n parent.blocks.splice(index + 1, 1);\n }\n });\n}\n\nfunction createAndAdd(\n parent: ContentModelBlockGroup,\n index: number,\n creator: () => T\n): T {\n const block = creator();\n\n parent.blocks.splice(index, 0, block);\n return block;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { deleteExpandedSelection } from './utils/deleteExpandedSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport {\n DeleteResult,\n DeleteSelectionContext,\n DeleteSelectionResult,\n DeleteSelectionStep,\n ValidDeleteSelectionContext,\n} from './utils/DeleteSelectionStep';\n\n/**\n * @internal\n */\nexport function deleteSelection(\n model: ContentModelDocument,\n additionalSteps: (DeleteSelectionStep | null)[] = [],\n formatContext?: FormatWithContentModelContext\n): DeleteSelectionResult {\n const context = deleteExpandedSelection(model, formatContext);\n\n additionalSteps.forEach(step => {\n if (\n step &&\n isValidDeleteSelectionContext(context) &&\n context.deleteResult == DeleteResult.NotDeleted\n ) {\n step(context);\n }\n });\n\n mergeParagraphAfterDelete(context);\n\n return context;\n}\n\nfunction isValidDeleteSelectionContext(\n context: DeleteSelectionContext\n): context is ValidDeleteSelectionContext {\n return !!context.insertPoint;\n}\n\n// If we end up with multiple paragraphs impacted, we need to merge them\nfunction mergeParagraphAfterDelete(context: DeleteSelectionContext) {\n const { insertPoint, deleteResult, lastParagraph, lastTableContext } = context;\n\n if (\n insertPoint &&\n deleteResult != DeleteResult.NotDeleted &&\n deleteResult != DeleteResult.NothingToDelete &&\n lastParagraph &&\n lastParagraph != insertPoint.paragraph &&\n lastTableContext == insertPoint.tableContext\n ) {\n insertPoint.paragraph.segments.push(...lastParagraph.segments);\n lastParagraph.segments = [];\n }\n}\n","import { DeleteResult, DeleteSelectionStep } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\n\n/**\n * @internal\n */\nexport const deleteAllSegmentBefore: DeleteSelectionStep = context => {\n const { paragraph, marker } = context.insertPoint;\n const index = paragraph.segments.indexOf(marker);\n\n for (let i = index - 1; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n segment.isSelected = true;\n\n if (deleteSegment(paragraph, segment, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n }\n};\n","import { BlockAndPath, getLeafSiblingBlock } from '../../block/getLeafSiblingBlock';\nimport { ContentModelSegment } from 'roosterjs-content-model-types';\nimport { createInsertPoint } from '../utils/createInsertPoint';\nimport { deleteBlock } from '../utils/deleteBlock';\nimport { DeleteResult, DeleteSelectionStep } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\nimport { setParagraphNotImplicit } from 'roosterjs-content-model-dom';\n\nfunction getDeleteCollapsedSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\n return context => {\n const isForward = direction == 'forward';\n const { paragraph, marker, path, tableContext } = context.insertPoint;\n const segments = paragraph.segments;\n\n fixupBr(segments);\n\n const index = segments.indexOf(marker) + (isForward ? 1 : -1);\n const segmentToDelete = segments[index];\n let blockToDelete: BlockAndPath | null;\n\n if (segmentToDelete) {\n if (deleteSegment(paragraph, segmentToDelete, context.formatContext, direction)) {\n context.deleteResult = DeleteResult.SingleChar;\n\n // It is possible that we have deleted everything from this paragraph, so we need to mark it as not implicit\n // to avoid losing its format. See https://github.com/microsoft/roosterjs/issues/1953\n setParagraphNotImplicit(paragraph);\n }\n } else if ((blockToDelete = getLeafSiblingBlock(path, paragraph, isForward))) {\n const { block, path, siblingSegment } = blockToDelete;\n\n if (block.blockType == 'Paragraph') {\n if (siblingSegment) {\n // When selection is under general segment, need to check if it has a sibling sibling, and delete from it\n if (deleteSegment(block, siblingSegment, context.formatContext, direction)) {\n context.deleteResult = DeleteResult.Range;\n }\n } else {\n if (isForward) {\n context.lastParagraph = block;\n } else {\n if (block.segments[block.segments.length - 1]?.segmentType == 'Br') {\n block.segments.pop();\n }\n\n context.insertPoint = createInsertPoint(marker, block, path, tableContext);\n context.lastParagraph = paragraph;\n delete block.cachedElement;\n }\n\n context.deleteResult = DeleteResult.Range;\n }\n\n // When go across table, getLeafSiblingBlock will return null, when we are here, we must be in the same table context\n context.lastTableContext = tableContext;\n } else {\n if (\n deleteBlock(\n path[0].blocks,\n block,\n undefined /*replacement*/,\n context.formatContext,\n direction\n )\n ) {\n context.deleteResult = DeleteResult.Range;\n }\n }\n } else {\n // We have nothing to delete, in this case we don't want browser handle it as well.\n // Because when Backspace on an empty document, it will also delete the only DIV and SPAN element, causes\n // editor is really empty. We don't want that happen. So the handling should stop here.\n context.deleteResult = DeleteResult.NothingToDelete;\n }\n };\n}\n\n/**\n * If the last segment is BR, remove it for now. We may add it back later when normalize model.\n * So that if this is an empty paragraph, it will start to delete next block\n */\nfunction fixupBr(segments: ContentModelSegment[]) {\n if (segments[segments.length - 1]?.segmentType == 'Br') {\n const segmentsWithoutBr = segments.filter(x => x.segmentType != 'SelectionMarker');\n\n if (segmentsWithoutBr[segmentsWithoutBr.length - 2]?.segmentType != 'Br') {\n segments.pop();\n }\n }\n}\n\n/**\n * @internal if we didn't delete anything, and we want to delete forward, now perform it\n */\nexport const forwardDeleteCollapsedSelection = getDeleteCollapsedSelection('forward');\n\n/**\n * @internal if we didn't delete anything, and we want to delete backward, now perform it\n */\nexport const backwardDeleteCollapsedSelection = getDeleteCollapsedSelection('backward');\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { isPunctuation, isSpace, normalizeText } from '../../../domUtils/stringUtil';\nimport { isWhiteSpacePreserved } from 'roosterjs-content-model-dom';\nimport {\n DeleteResult,\n DeleteSelectionContext,\n DeleteSelectionStep,\n} from '../utils/DeleteSelectionStep';\n\nconst enum DeleteWordState {\n Start,\n Punctuation,\n Text,\n NonText,\n Space,\n End,\n}\n\ninterface CharInfo {\n text: boolean;\n space: boolean;\n punctuation: boolean;\n}\n\nfunction getDeleteWordSelection(direction: 'forward' | 'backward'): DeleteSelectionStep {\n return context => {\n const { marker, paragraph } = context.insertPoint;\n const startIndex = paragraph.segments.indexOf(marker);\n const deleteNext = direction == 'forward';\n\n let iterator = iterateSegments(paragraph, startIndex, deleteNext, context);\n let curr = iterator.next();\n\n for (let state = DeleteWordState.Start; state != DeleteWordState.End && !curr.done; ) {\n const { punctuation, space, text } = curr.value;\n\n // This is a state machine of how to delete a whole word together with space and punctuations.\n // For a full state machine chart, see\n // Forward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/ForwardDeleteWord.png\n // Backward delete: https://github.com/microsoft/roosterjs/blob/master/assets/design-charts/BackwardDeleteWord.png\n switch (state) {\n case DeleteWordState.Start:\n state = space\n ? DeleteWordState.Space\n : punctuation\n ? DeleteWordState.Punctuation\n : DeleteWordState.Text;\n curr = iterator.next(true /*delete*/);\n break;\n\n case DeleteWordState.Punctuation:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.Text:\n if (deleteNext && space) {\n state = DeleteWordState.NonText;\n curr = iterator.next(true /*delete*/);\n } else if (text) {\n curr = iterator.next(true /*delete*/);\n } else {\n state = DeleteWordState.End;\n }\n break;\n\n case DeleteWordState.NonText:\n if (punctuation || !space) {\n state = DeleteWordState.End;\n } else {\n curr = iterator.next(true /*delete*/);\n }\n break;\n\n case DeleteWordState.Space:\n if (space) {\n curr = iterator.next(true /*delete*/);\n } else if (punctuation) {\n state = deleteNext ? DeleteWordState.NonText : DeleteWordState.Punctuation;\n curr = iterator.next(true /*delete*/);\n } else {\n state = deleteNext ? DeleteWordState.End : DeleteWordState.Text;\n }\n break;\n }\n }\n };\n}\n\nfunction* iterateSegments(\n paragraph: ContentModelParagraph,\n markerIndex: number,\n forward: boolean,\n context: DeleteSelectionContext\n): Generator {\n const step = forward ? 1 : -1;\n const segments = paragraph.segments;\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph);\n\n for (let i = markerIndex + step; i >= 0 && i < segments.length; i += step) {\n const segment = segments[i];\n\n switch (segment.segmentType) {\n case 'Text':\n for (\n let j = forward ? 0 : segment.text.length - 1;\n j >= 0 && j < segment.text.length;\n j += step\n ) {\n const c = segment.text[j];\n const punctuation = isPunctuation(c);\n const space = isSpace(c);\n const text = !punctuation && !space;\n\n if (yield { punctuation, space, text }) {\n let newText = segment.text;\n\n newText = newText.substring(0, j) + newText.substring(j + 1);\n\n if (!preserveWhiteSpace) {\n newText = normalizeText(newText, forward);\n }\n\n context.deleteResult = DeleteResult.Range;\n\n if (newText) {\n segment.text = newText;\n\n if (step > 0) {\n j -= step;\n }\n } else {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n break;\n }\n }\n }\n break;\n\n case 'Image':\n if (\n yield { punctuation: true, space: false, text: false } // Treat image as punctuation since they have the same behavior.\n ) {\n segments.splice(i, 1);\n\n if (step > 0) {\n i -= step;\n }\n\n context.deleteResult = DeleteResult.Range;\n }\n break;\n\n case 'SelectionMarker':\n break;\n\n default:\n return null;\n }\n }\n\n return null;\n}\n\n/**\n * @internal\n */\nexport const forwardDeleteWordSelection = getDeleteWordSelection('forward');\n\n/**\n * @internal\n */\nexport const backwardDeleteWordSelection = getDeleteWordSelection('backward');\n","import { InsertPoint } from '../../../publicTypes/selection/InsertPoint';\nimport { TableSelectionContext } from '../../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlockGroup,\n ContentModelParagraph,\n ContentModelSelectionMarker,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createInsertPoint(\n marker: ContentModelSelectionMarker,\n paragraph: ContentModelParagraph,\n path: ContentModelBlockGroup[],\n tableContext: TableSelectionContext | undefined\n): InsertPoint {\n return {\n marker,\n paragraph,\n path,\n tableContext,\n };\n}\n","import { ContentModelBlock } from 'roosterjs-content-model-types';\nimport { EntityOperation } from 'roosterjs-editor-types';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\n\n/**\n * @internal\n */\nexport function deleteBlock(\n blocks: ContentModelBlock[],\n blockToDelete: ContentModelBlock,\n replacement?: ContentModelBlock,\n context?: FormatWithContentModelContext,\n direction?: 'forward' | 'backward'\n): boolean {\n const index = blocks.indexOf(blockToDelete);\n\n switch (blockToDelete.blockType) {\n case 'Table':\n case 'Divider':\n replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);\n return true;\n\n case 'Entity':\n const operation = blockToDelete.isSelected\n ? EntityOperation.Overwrite\n : direction == 'forward'\n ? EntityOperation.RemoveFromStart\n : direction == 'backward'\n ? EntityOperation.RemoveFromEnd\n : undefined;\n\n if (operation !== undefined) {\n replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);\n context?.deletedEntities.push({\n entity: blockToDelete,\n operation,\n });\n }\n\n return true;\n\n case 'BlockGroup':\n switch (blockToDelete.blockGroupType) {\n case 'General':\n if (replacement) {\n blocks.splice(index, 1, replacement);\n return true;\n } else {\n // no op, let browser handle it\n return false;\n }\n\n case 'ListItem':\n case 'FormatContainer':\n blocks.splice(index, 1);\n return true;\n }\n }\n\n return false;\n}\n","import { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { createInsertPoint } from '../utils/createInsertPoint';\nimport { deleteBlock } from '../utils/deleteBlock';\nimport { DeleteResult, DeleteSelectionContext } from '../utils/DeleteSelectionStep';\nimport { deleteSegment } from '../utils/deleteSegment';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\nimport { iterateSelections, IterateSelectionsOption } from '../../selection/iterateSelections';\nimport {\n createBr,\n createParagraph,\n createSelectionMarker,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\nconst DeleteSelectionIteratingOptions: IterateSelectionsOption = {\n contentUnderSelectedTableCell: 'ignoreForTableOrCell', // When a table cell is selected, we replace all content for this cell, so no need to go into its content\n contentUnderSelectedGeneralElement: 'generalElementOnly', // When a general element is selected, we replace the whole element so no need to go into its content\n includeListFormatHolder: 'never',\n};\n\n/**\n * @internal\n * Iterate the model and find all selected content if any, delete them, and keep/create an insert point\n * at the first deleted position so that we know where to put cursor to after delete\n */\nexport function deleteExpandedSelection(\n model: ContentModelDocument,\n formatContext?: FormatWithContentModelContext\n): DeleteSelectionContext {\n const context: DeleteSelectionContext = {\n deleteResult: DeleteResult.NotDeleted,\n insertPoint: null,\n formatContext,\n };\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n // Set paragraph, format and index for default position where we will put cursor to.\n // Later we can overwrite these info when process the selections\n let paragraph = createParagraph(\n true /*implicit*/,\n undefined /*blockFormat*/,\n model.format\n );\n let markerFormat = model.format;\n let insertMarkerIndex = 0;\n\n if (segments) {\n // Delete segments inside a paragraph\n if (segments[0] && block?.blockType == 'Paragraph') {\n // Now that we have found a paragraph with selections, we can overwrite the default paragraph with this one\n // so we can put cursor here after delete\n paragraph = block;\n insertMarkerIndex = paragraph.segments.indexOf(segments[0]);\n markerFormat = segments[0].format;\n\n context.lastParagraph = paragraph;\n context.lastTableContext = tableContext;\n\n segments.forEach((segment, i) => {\n if (\n i == 0 &&\n !context.insertPoint &&\n segment.segmentType == 'SelectionMarker'\n ) {\n // First time we hit a selection and it is a selection marker, just mark it and not need to delete\n // because this is possible a collapsed selection, then it will be handled later\n context.insertPoint = createInsertPoint(\n segment,\n block,\n path,\n tableContext\n );\n } else if (deleteSegment(block, segment, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n });\n\n // Since we are operating on this paragraph and it possible we delete everything from this paragraph,\n // Need to make it \"not implicit\" so that it will always have a container element, so that when we do normalization\n // of this paragraph, a BR can be added if need\n if (context.deleteResult == DeleteResult.Range) {\n setParagraphNotImplicit(block);\n }\n }\n } else if (block) {\n // Delete a whole block (divider, table, ...)\n const blocks = path[0].blocks;\n\n if (deleteBlock(blocks, block, paragraph, context.formatContext)) {\n context.deleteResult = DeleteResult.Range;\n }\n } else if (tableContext) {\n // Delete a whole table cell\n const { table, colIndex, rowIndex } = tableContext;\n const row = table.rows[rowIndex];\n const cell = row.cells[colIndex];\n\n path = [cell, ...path];\n paragraph.segments.push(createBr(model.format));\n cell.blocks = [paragraph];\n\n delete cell.cachedElement;\n delete row.cachedElement;\n context.deleteResult = DeleteResult.Range;\n }\n\n if (!context.insertPoint) {\n // If we have not got a insert point after delete and we have a paragraph to put an insert point in, create insert point now\n const marker = createSelectionMarker(markerFormat);\n\n setParagraphNotImplicit(paragraph);\n paragraph.segments.splice(insertMarkerIndex, 0, marker);\n context.insertPoint = createInsertPoint(marker, paragraph, path, tableContext);\n }\n },\n DeleteSelectionIteratingOptions\n );\n\n return context;\n}\n","import { ContentModelParagraph, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { deleteSingleChar } from './deleteSingleChar';\nimport { EntityOperation } from 'roosterjs-editor-types';\nimport { FormatWithContentModelContext } from '../../../publicTypes/parameter/FormatWithContentModelContext';\nimport { isWhiteSpacePreserved, normalizeSingleSegment } from 'roosterjs-content-model-dom';\nimport { normalizeText } from '../../../domUtils/stringUtil';\n\n/**\n * @internal\n */\nexport function deleteSegment(\n paragraph: ContentModelParagraph,\n segmentToDelete: ContentModelSegment,\n context?: FormatWithContentModelContext,\n direction?: 'forward' | 'backward'\n): boolean {\n const segments = paragraph.segments;\n const index = segments.indexOf(segmentToDelete);\n const preserveWhiteSpace = isWhiteSpacePreserved(paragraph);\n const isForward = direction == 'forward';\n const isBackward = direction == 'backward';\n\n if (!preserveWhiteSpace) {\n normalizePreviousSegment(segments, index);\n }\n\n switch (segmentToDelete.segmentType) {\n case 'Br':\n case 'Image':\n case 'SelectionMarker':\n segments.splice(index, 1);\n return true;\n\n case 'Entity':\n const operation = segmentToDelete.isSelected\n ? EntityOperation.Overwrite\n : isForward\n ? EntityOperation.RemoveFromStart\n : isBackward\n ? EntityOperation.RemoveFromEnd\n : undefined;\n if (operation !== undefined) {\n segments.splice(index, 1);\n context?.deletedEntities.push({\n entity: segmentToDelete,\n operation,\n });\n }\n\n return true;\n\n case 'Text':\n let text = segmentToDelete.text;\n\n if (text.length == 0 || segmentToDelete.isSelected) {\n segments.splice(index, 1);\n } else if (direction) {\n text = deleteSingleChar(text, isForward); // isForward ? text.substring(1) : text.substring(0, text.length - 1);\n\n if (!preserveWhiteSpace) {\n text = normalizeText(text, isForward);\n }\n\n if (text == '') {\n segments.splice(index, 1);\n } else {\n segmentToDelete.text = text;\n }\n }\n\n return true;\n\n case 'General':\n if (segmentToDelete.isSelected) {\n segments.splice(index, 1);\n return true;\n } else {\n // No op if a general segment is not selected, let browser handle general segment\n // TODO: Need to revisit this\n return false;\n }\n }\n}\n\nfunction normalizePreviousSegment(segments: ContentModelSegment[], currentIndex: number) {\n let index = currentIndex - 1;\n\n while (segments[index]?.segmentType == 'SelectionMarker') {\n index--;\n }\n\n const segment = segments[index];\n\n if (segment) {\n normalizeSingleSegment(segment);\n }\n}\n","/**\n * @internal\n */\nexport function deleteSingleChar(text: string, isForward: boolean) {\n // In case of emoji that occupies multiple characters, we need to delete the whole emoji\n const array = [...text];\n let deleteLength = 0;\n\n for (\n let i = isForward ? 0 : array.length - 1,\n deleteState: 'notDeleted' | 'waiting' | 'done' = 'notDeleted';\n i >= 0 && i < array.length && deleteState != 'done';\n i += isForward ? 1 : -1\n ) {\n switch (array[i]) {\n case '\\u200D': // ZERO WIDTH JOINER\n case '\\u20E3': // COMBINING ENCLOSING KEYCAP\n case '\\uFE0E': // VARIATION SELECTOR-15\n case '\\uFE0F': // VARIATION SELECTOR-16\n deleteState = 'notDeleted';\n deleteLength++;\n break;\n\n default:\n if (deleteState == 'notDeleted') {\n deleteState = 'waiting';\n deleteLength++;\n } else if (deleteState == 'waiting') {\n deleteState = 'done';\n }\n break;\n }\n }\n\n array.splice(isForward ? 0 : array.length - deleteLength, deleteLength);\n\n return array.join('');\n}\n","import {\n createBr,\n createParagraph,\n createSelectionMarker,\n normalizeContentModel,\n} from 'roosterjs-content-model-dom';\nimport { DeleteResult, DeleteSelectionResult } from '../edit/utils/DeleteSelectionStep';\nimport { deleteSelection } from '../edit/deleteSelection';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { getClosestAncestorBlockGroupIndex } from '../common/getClosestAncestorBlockGroupIndex';\nimport { InsertEntityPosition } from '../../publicTypes/parameter/InsertEntityOptions';\nimport { setSelection } from '../selection/setSelection';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelEntity,\n ContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function insertEntityModel(\n model: ContentModelDocument,\n entityModel: ContentModelEntity,\n position: InsertEntityPosition,\n isBlock: boolean,\n focusAfterEntity?: boolean,\n context?: FormatWithContentModelContext\n) {\n let blockParent: ContentModelBlockGroup | undefined;\n let blockIndex = -1;\n let deleteResult: DeleteSelectionResult;\n\n if (position == 'begin' || position == 'end') {\n blockParent = model;\n blockIndex = position == 'begin' ? 0 : model.blocks.length;\n } else if ((deleteResult = deleteSelection(model, [], context)).insertPoint) {\n const { marker, paragraph, path } = deleteResult.insertPoint;\n\n if (deleteResult.deleteResult == DeleteResult.Range) {\n normalizeContentModel(model);\n }\n\n if (!isBlock) {\n const index = paragraph.segments.indexOf(marker);\n\n if (index >= 0) {\n paragraph.segments.splice(focusAfterEntity ? index : index + 1, 0, entityModel);\n }\n } else {\n const pathIndex =\n position == 'root'\n ? getClosestAncestorBlockGroupIndex(path, ['TableCell', 'Document'])\n : 0;\n blockParent = path[pathIndex];\n const child = path[pathIndex - 1];\n const directChild: ContentModelBlock =\n child?.blockGroupType == 'FormatContainer' ||\n child?.blockGroupType == 'General' ||\n child?.blockGroupType == 'ListItem'\n ? child\n : paragraph;\n const childIndex = blockParent.blocks.indexOf(directChild);\n blockIndex = childIndex >= 0 ? childIndex + 1 : -1;\n }\n }\n\n if (blockIndex >= 0 && blockParent) {\n const blocksToInsert: ContentModelBlock[] = [];\n let nextParagraph: ContentModelParagraph | undefined;\n\n if (isBlock) {\n const nextBlock = blockParent.blocks[blockIndex];\n\n blocksToInsert.push(entityModel);\n\n if (nextBlock?.blockType == 'Paragraph') {\n nextParagraph = nextBlock;\n } else if (!nextBlock || nextBlock.blockType == 'Entity' || focusAfterEntity) {\n nextParagraph = createParagraph(false /*isImplicit*/, {}, model.format);\n nextParagraph.segments.push(createBr(model.format));\n blocksToInsert.push(nextParagraph);\n }\n } else {\n nextParagraph = createParagraph(\n false /*isImplicit*/,\n undefined /*format*/,\n model.format\n );\n\n nextParagraph.segments.push(entityModel);\n blocksToInsert.push(nextParagraph);\n }\n\n blockParent.blocks.splice(blockIndex, 0, ...blocksToInsert);\n\n if (focusAfterEntity && nextParagraph) {\n const marker = createSelectionMarker(nextParagraph.segments[0]?.format || model.format);\n const segments = nextParagraph.segments;\n\n isBlock ? segments.unshift(marker) : segments.push(marker);\n setSelection(model, marker, marker);\n }\n }\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { NodePosition } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get pending segment format from editor if any, otherwise null\n * @param editor The editor to get format from\n */\nexport function getPendingFormat(editor: IContentModelEditor): ContentModelSegmentFormat | null {\n return getPendingFormatHolder(editor).format;\n}\n\n/**\n * @internal\n * Set pending segment format to editor\n * @param editor The editor to set pending format to\n * @param format The format to set.\n * @param position Cursor position when set this format\n */\nexport function setPendingFormat(\n editor: IContentModelEditor,\n format: ContentModelSegmentFormat,\n position: NodePosition\n) {\n const holder = getPendingFormatHolder(editor);\n\n holder.format = format;\n holder.position = position;\n}\n\n/**\n * @internal Clear pending format if any\n * @param editor The editor to set pending format to\n */\nexport function clearPendingFormat(editor: IContentModelEditor) {\n const holder = getPendingFormatHolder(editor);\n\n holder.format = null;\n holder.position = null;\n}\n\n/**\n * @internal\n * Check if this editor can apply pending format\n * @param editor The editor to get format from\n */\nexport function canApplyPendingFormat(editor: IContentModelEditor): boolean {\n const holder = getPendingFormatHolder(editor);\n let result = false;\n\n if (holder.format && holder.position) {\n const position = editor.getFocusedPosition();\n\n if (position?.equalTo(holder.position)) {\n result = true;\n }\n }\n\n return result;\n}\ninterface PendingFormatHolder {\n format: ContentModelSegmentFormat | null;\n position: NodePosition | null;\n}\n\nconst PendingFormatHolderKey = '__ContentModelPendingFormat';\n\nfunction getPendingFormatHolder(editor: IContentModelEditor): PendingFormatHolder {\n return editor.getCustomData(PendingFormatHolderKey, () => ({\n format: null,\n position: null,\n }));\n}\n","import { Border } from '../../publicTypes/interface/Border';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { extractBorderValues } from '../../domUtils/borderValues';\nimport { parseValueWithUnit } from 'roosterjs-content-model-dom';\n\n/**\n * @internal\n */\nexport default function applyImageBorderFormat(\n image: ContentModelImage,\n border: Border | null,\n borderRadius?: string\n) {\n if (border) {\n const format = image.format;\n const { width, style, color } = border;\n const borderKey = 'borderTop';\n const extractedBorder = extractBorderValues(format[borderKey]);\n const borderColor = extractedBorder.color;\n const borderWidth = extractedBorder.width;\n const borderStyle = extractedBorder.style;\n let borderFormat = '';\n\n if (width) {\n borderFormat = parseValueWithUnit(width) + 'px';\n } else if (borderWidth) {\n borderFormat = borderWidth;\n } else {\n borderFormat = '1px';\n }\n\n if (style) {\n borderFormat = `${borderFormat} ${style}`;\n } else if (borderStyle) {\n borderFormat = `${borderFormat} ${borderStyle}`;\n } else {\n borderFormat = `${borderFormat} solid`;\n }\n\n if (color) {\n borderFormat = `${borderFormat} ${color}`;\n } else if (borderColor) {\n borderFormat = `${borderFormat} ${borderColor}`;\n }\n image.format.borderLeft = borderFormat;\n image.format.borderTop = borderFormat;\n image.format.borderBottom = borderFormat;\n image.format.borderRight = borderFormat;\n } else {\n delete image.format.borderLeft;\n delete image.format.borderTop;\n delete image.format.borderBottom;\n delete image.format.borderRight;\n }\n\n if (borderRadius) {\n image.format.borderRadius = borderRadius;\n }\n}\n","import {\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function findListItemsInSameThread(\n model: ContentModelDocument,\n currentItem: ContentModelListItem\n): ContentModelListItem[] {\n const items: (ContentModelListItem | null)[] = [];\n\n findListItems(model, items);\n\n return filterListItems(items, currentItem);\n}\n\nfunction findListItems(group: ContentModelBlockGroup, result: (ContentModelListItem | null)[]) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n if (block.blockGroupType == 'ListItem') {\n result.push(block);\n } else {\n pushNullIfNecessary(result);\n findListItems(block, result);\n pushNullIfNecessary(result);\n }\n break;\n\n case 'Paragraph':\n pushNullIfNecessary(result);\n\n block.segments.forEach(segment => {\n if (segment.segmentType == 'General') {\n findListItems(segment, result);\n }\n });\n\n pushNullIfNecessary(result);\n break;\n\n case 'Table':\n pushNullIfNecessary(result);\n\n block.rows.forEach(row =>\n row.cells.forEach(cell => {\n findListItems(cell, result);\n })\n );\n pushNullIfNecessary(result);\n\n break;\n }\n });\n}\n\nfunction pushNullIfNecessary(result: (ContentModelListItem | null)[]) {\n const last = result[result.length - 1];\n\n if (!last || last !== null) {\n result.push(null);\n }\n}\n\nfunction filterListItems(\n items: (ContentModelListItem | null)[],\n currentItem: ContentModelListItem\n) {\n const result: ContentModelListItem[] = [];\n const currentIndex = items.indexOf(currentItem);\n const levelLength = currentItem.levels.length;\n const isOrderedList = currentItem.levels[levelLength - 1]?.listType == 'OL';\n\n if (currentIndex >= 0) {\n for (let i = currentIndex; i >= 0; i--) {\n const item = items[i];\n\n if (!item) {\n if (isOrderedList) {\n continue;\n } else {\n break;\n }\n }\n\n const startNumberOverride = hasStartNumberOverride(item, levelLength);\n\n if (areListTypesCompatible(items, currentIndex, i)) {\n result.unshift(item);\n\n if (isOrderedList && startNumberOverride) {\n break;\n }\n } else if (!isOrderedList || startNumberOverride) {\n break;\n }\n }\n\n for (let i = currentIndex + 1; i < items.length; i++) {\n const item = items[i];\n\n if (!item) {\n if (isOrderedList) {\n continue;\n } else {\n break;\n }\n }\n\n const startNumberOverride = hasStartNumberOverride(item, levelLength);\n\n if (areListTypesCompatible(items, currentIndex, i) && !startNumberOverride) {\n result.push(item);\n } else if (!isOrderedList || startNumberOverride) {\n break;\n }\n }\n }\n\n return result;\n}\n\nfunction areListTypesCompatible(\n listItems: (ContentModelListItem | null)[],\n currentIndex: number,\n compareToIndex: number\n): boolean {\n const currentLevels = listItems[currentIndex]!.levels;\n const compareToLevels = listItems[compareToIndex]!.levels;\n\n return (\n currentLevels.length <= compareToLevels.length &&\n currentLevels.every(\n (currentLevel, i) => currentLevel.listType == compareToLevels[i].listType\n )\n );\n}\n\nfunction hasStartNumberOverride(item: ContentModelListItem, levelLength: number): boolean {\n return item.levels\n .slice(0, levelLength)\n .some(level => level.format.startNumberOverride !== undefined);\n}\n","import { getOperationalBlocks } from '../selection/collectSelections';\nimport { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport {\n createListItem,\n createListLevel,\n normalizeContentModel,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelDocument,\n ContentModelListItem,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setListType(model: ContentModelDocument, listType: 'OL' | 'UL') {\n const paragraphOrListItems = getOperationalBlocks(\n model,\n ['ListItem'],\n [] // Set stop types to be empty so we can find list items even cross the boundary of table, then we can always operation on the list item if any\n );\n const alreadyInExpectedType = paragraphOrListItems.every(({ block }) =>\n isBlockGroupOfType(block, 'ListItem')\n ? block.levels[block.levels.length - 1]?.listType == listType\n : shouldIgnoreBlock(block)\n );\n let existingListItems: ContentModelListItem[] = [];\n let hasIgnoredParagraphBefore = false;\n\n paragraphOrListItems.forEach(({ block, parent }, itemIndex) => {\n if (isBlockGroupOfType(block, 'ListItem')) {\n const level = block.levels.pop();\n\n if (!alreadyInExpectedType && level) {\n level.listType = listType;\n block.levels.push(level);\n } else if (block.blocks.length == 1) {\n setParagraphNotImplicit(block.blocks[0]);\n }\n } else {\n const index = parent.blocks.indexOf(block);\n\n if (index >= 0) {\n if (paragraphOrListItems.length == 1 || !shouldIgnoreBlock(block)) {\n const prevBlock = parent.blocks[index - 1];\n const segmentFormat =\n (block.blockType == 'Paragraph' && block.segments[0]?.format) || {};\n const newListItem = createListItem(\n [\n createListLevel(listType, {\n startNumberOverride:\n itemIndex > 0 ||\n (prevBlock?.blockType == 'BlockGroup' &&\n prevBlock.blockGroupType == 'ListItem' &&\n prevBlock.levels[0]?.listType == 'OL')\n ? undefined\n : 1,\n direction: block.format.direction,\n textAlign: block.format.textAlign,\n marginTop: hasIgnoredParagraphBefore ? '0' : undefined,\n }),\n ],\n // For list bullet, we only want to carry over these formats from segments:\n {\n fontFamily: segmentFormat.fontFamily,\n fontSize: segmentFormat.fontSize,\n textColor: segmentFormat.textColor,\n }\n );\n\n // Since there is only one paragraph under the list item, no need to keep its paragraph element (DIV).\n // TODO: Do we need to keep the CSS styles applied to original DIV?\n if (block.blockType == 'Paragraph') {\n block.isImplicit = true;\n }\n\n newListItem.blocks.push(block);\n\n parent.blocks.splice(index, 1, newListItem);\n existingListItems.push(newListItem);\n } else {\n hasIgnoredParagraphBefore = true;\n\n existingListItems.forEach(x => (x.levels[0].format.marginBottom = '0'));\n existingListItems = [];\n }\n }\n }\n });\n\n normalizeContentModel(model);\n\n return paragraphOrListItems.length > 0;\n}\n\nfunction shouldIgnoreBlock(block: ContentModelBlock) {\n return (\n block.blockType != 'Paragraph' ||\n block.segments.every(x => x.segmentType == 'Br' || x.segmentType == 'SelectionMarker')\n );\n}\n","import { ContentModelDocument, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { getSelectedParagraphs } from './collectSelections';\nimport { setSelection } from './setSelection';\n\n/**\n * @internal\n */\nexport function adjustSegmentSelection(\n model: ContentModelDocument,\n firstMatcher: (target: ContentModelSegment) => boolean,\n siblingMatcher: (target: ContentModelSegment, ref: ContentModelSegment) => boolean\n): boolean {\n const paragraphs = getSelectedParagraphs(model);\n let first: ContentModelSegment | undefined;\n let last: ContentModelSegment | undefined;\n let changed = false;\n\n paragraphs.forEach(p => {\n const index = first ? 0 : p.segments.findIndex(x => firstMatcher(x));\n const segments = p.segments;\n\n if (!first) {\n first = segments[index];\n\n for (let i = index; i > 0; i--) {\n if (siblingMatcher(segments[i - 1], first)) {\n first = segments[i - 1];\n changed = changed || !segments[i - 1].isSelected;\n } else {\n changed = changed || !!segments[i - 1].isSelected;\n break;\n }\n }\n }\n\n if (first) {\n for (let i = index; i < p.segments.length; i++) {\n if (i == index || siblingMatcher(segments[i], last || segments[index])) {\n last = segments[i];\n changed = changed || !segments[i].isSelected;\n } else {\n changed = changed || !!segments[i].isSelected;\n break;\n }\n }\n }\n });\n\n if (first && last) {\n setSelection(model, first, last);\n }\n\n return changed;\n}\n","import { createText } from 'roosterjs-content-model-dom';\nimport { isPunctuation, isSpace } from '../../domUtils/stringUtil';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport {\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelText,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function adjustWordSelection(\n model: ContentModelDocument,\n marker: ContentModelSegment\n): ContentModelSegment[] {\n let markerBlock: ContentModelParagraph | undefined;\n\n iterateSelections([model], (path, tableContext, block, segments) => {\n //Find the block with the selection marker\n if (block?.blockType == 'Paragraph' && segments?.length == 1 && segments[0] == marker) {\n markerBlock = block;\n }\n return true;\n });\n\n if (markerBlock) {\n const segments: ContentModelSegment[] = [];\n let markerSelectionIndex = markerBlock.segments.indexOf(marker);\n for (let i = markerSelectionIndex - 1; i >= 0; i--) {\n const currentSegment = markerBlock.segments[i];\n if (currentSegment.segmentType == 'Text') {\n const found = findDelimiter(currentSegment, false /*moveRightward*/);\n if (found > -1) {\n if (found == currentSegment.text.length) {\n break;\n }\n splitTextSegment(markerBlock.segments, currentSegment, i, found);\n segments.push(markerBlock.segments[i + 1]);\n break;\n } else {\n segments.push(markerBlock.segments[i]);\n }\n } else {\n break;\n }\n }\n markerSelectionIndex = markerBlock.segments.indexOf(marker);\n segments.push(marker);\n\n // Marker is at start of word\n if (segments.length <= 1) {\n return segments;\n }\n\n for (let i = markerSelectionIndex + 1; i < markerBlock.segments.length; i++) {\n const currentSegment = markerBlock.segments[i];\n if (currentSegment.segmentType == 'Text') {\n const found = findDelimiter(currentSegment, true /*moveRightward*/);\n if (found > -1) {\n if (found == 0) {\n break;\n }\n splitTextSegment(markerBlock.segments, currentSegment, i, found);\n segments.push(markerBlock.segments[i]);\n break;\n } else {\n segments.push(markerBlock.segments[i]);\n }\n } else {\n break;\n }\n }\n\n // Marker is at end of word\n if (segments[segments.length - 1] == marker) {\n return [marker];\n }\n\n return segments;\n } else {\n return [marker];\n }\n}\n\n/*\n// These are unicode characters mostly from the Category Space Separator (Zs)\nhttps://unicode.org/Public/UNIDATA/Scripts.txt\n\n\\u2000 = EN QUAD\n\\u2009 = THIN SPACE\n\\u200a = HAIR SPACE\n​\\u200b = ZERO WIDTH SPACE\n​\\u202f = NARROW NO-BREAK SPACE\n\\u205f​ = MEDIUM MATHEMATICAL SPACE\n\\u3000 = IDEOGRAPHIC SPACE\n*/\nfunction findDelimiter(segment: ContentModelText, moveRightward: boolean): number {\n const word = segment.text;\n let offset = -1;\n if (moveRightward) {\n for (let i = 0; i < word.length; i++) {\n const char = word[i];\n\n if (isPunctuation(char) || isSpace(char)) {\n offset = i;\n break;\n }\n }\n } else {\n for (let i = word.length - 1; i >= 0; i--) {\n const char = word[i];\n\n if (isPunctuation(char) || isSpace(char)) {\n offset = i + 1;\n break;\n }\n }\n }\n return offset;\n}\n\nfunction splitTextSegment(\n segments: ContentModelSegment[],\n textSegment: ContentModelText,\n index: number,\n found: number\n) {\n const text = textSegment.text;\n const newSegment = createText(text.substring(0, found), segments[index].format);\n\n if (textSegment.code) {\n newSegment.code = {\n format: { ...textSegment.code.format },\n };\n }\n\n if (textSegment.link) {\n newSegment.link = {\n format: { ...textSegment.link.format },\n dataset: { ...textSegment.link.dataset },\n };\n }\n\n textSegment.text = text.substring(found, text.length);\n segments.splice(index, 0, newSegment);\n}\n","import { addSegment, createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { ContentModelTableRow } from 'roosterjs-content-model-types';\nimport { TableSelectionCoordinates } from '../table/getSelectedCells';\n\n/**\n * @internal\n */\nexport function collapseTableSelection(\n rows: ContentModelTableRow[],\n selection: TableSelectionCoordinates\n) {\n const { firstCol, firstRow } = selection;\n const cell = rows[firstRow]?.cells[firstCol];\n if (cell) {\n addSegment(cell, createSelectionMarker());\n }\n}\n","import { isBlockGroupOfType } from '../common/isBlockGroupOfType';\nimport { iterateSelections, IterateSelectionsOption } from './iterateSelections';\nimport { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelBlockGroupType,\n ContentModelDocument,\n ContentModelListItem,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\nimport {\n getClosestAncestorBlockGroupIndex,\n TypeOfBlockGroup,\n} from '../common/getClosestAncestorBlockGroupIndex';\n\n/**\n * @internal\n */\nexport type OperationalBlocks = {\n parent: ContentModelBlockGroup;\n block: ContentModelBlock | T;\n};\n\n/**\n * @internal\n */\nexport function getSelectedSegmentsAndParagraphs(\n model: ContentModelDocument,\n includingFormatHolder: boolean\n): [ContentModelSegment, ContentModelParagraph | null][] {\n const selections = collectSelections(model, {\n includeListFormatHolder: includingFormatHolder ? 'allSegments' : 'never',\n });\n const result: [ContentModelSegment, ContentModelParagraph | null][] = [];\n\n selections.forEach(({ segments, block }) => {\n if (segments && ((includingFormatHolder && !block) || block?.blockType == 'Paragraph')) {\n segments.forEach(segment => {\n if (segment.segmentType != 'Entity' || !segment.isReadonly) {\n result.push([segment, block?.blockType == 'Paragraph' ? block : null]);\n }\n });\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getSelectedParagraphs(model: ContentModelDocument): ContentModelParagraph[] {\n const selections = collectSelections(model, { includeListFormatHolder: 'never' });\n const result: ContentModelParagraph[] = [];\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ block }) => {\n if (block?.blockType == 'Paragraph') {\n result.push(block);\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getOperationalBlocks(\n model: ContentModelDocument,\n blockGroupTypes: TypeOfBlockGroup[],\n stopTypes: ContentModelBlockGroupType[],\n deepFirst?: boolean\n): OperationalBlocks[] {\n const result: OperationalBlocks[] = [];\n const findSequence = deepFirst ? blockGroupTypes.map(type => [type]) : [blockGroupTypes];\n const selections = collectSelections(model, {\n includeListFormatHolder: 'never',\n contentUnderSelectedTableCell: 'ignoreForTable', // When whole table is selected, we treat the table as a single block\n });\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ path, block }) => {\n for (let i = 0; i < findSequence.length; i++) {\n const groupIndex = getClosestAncestorBlockGroupIndex(path, findSequence[i], stopTypes);\n\n if (groupIndex >= 0) {\n if (result.filter(x => x.block == path[groupIndex]).length <= 0) {\n result.push({\n parent: path[groupIndex + 1],\n block: path[groupIndex] as T,\n });\n }\n break;\n } else if (i == findSequence.length - 1 && block) {\n result.push({\n parent: path[0],\n block: block,\n });\n break;\n }\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getFirstSelectedTable(\n model: ContentModelDocument\n): [ContentModelTable | undefined, ContentModelBlockGroup[]] {\n const selections = collectSelections(model, { includeListFormatHolder: 'never' });\n let table: ContentModelTable | undefined;\n let resultPath: ContentModelBlockGroup[] = [];\n\n removeUnmeaningfulSelections(selections);\n\n selections.forEach(({ block, tableContext, path }) => {\n if (!table) {\n if (block?.blockType == 'Table') {\n table = block;\n resultPath = [...path];\n } else if (tableContext?.table) {\n table = tableContext.table;\n\n const parent = path.filter(\n group => group.blocks.indexOf(tableContext.table) >= 0\n )[0];\n const index = path.indexOf(parent);\n resultPath = index >= 0 ? path.slice(index) : [];\n }\n }\n });\n\n return [table, resultPath];\n}\n\n/**\n * @internal\n */\nexport function getFirstSelectedListItem(\n model: ContentModelDocument\n): ContentModelListItem | undefined {\n let listItem: ContentModelListItem | undefined;\n\n getOperationalBlocks(model, ['ListItem'], ['TableCell']).forEach(r => {\n if (!listItem && isBlockGroupOfType(r.block, 'ListItem')) {\n listItem = r.block;\n }\n });\n\n return listItem;\n}\n\ninterface SelectionInfo {\n path: ContentModelBlockGroup[];\n segments?: ContentModelSegment[];\n block?: ContentModelBlock;\n tableContext?: TableSelectionContext;\n}\n\nfunction collectSelections(\n model: ContentModelDocument,\n option?: IterateSelectionsOption\n): SelectionInfo[] {\n const selections: SelectionInfo[] = [];\n\n iterateSelections(\n [model],\n (path, tableContext, block, segments) => {\n selections.push({\n path,\n tableContext,\n block,\n segments,\n });\n },\n option\n );\n\n return selections;\n}\n\nfunction removeUnmeaningfulSelections(selections: SelectionInfo[]) {\n if (\n selections.length > 1 &&\n isOnlySelectionMarkerSelected(selections, false /*checkFirstParagraph*/)\n ) {\n selections.pop();\n }\n\n // Remove head paragraph if first selection marker is the only selection\n if (\n selections.length > 1 &&\n isOnlySelectionMarkerSelected(selections, true /*checkFirstParagraph*/)\n ) {\n selections.shift();\n }\n}\n\nfunction isOnlySelectionMarkerSelected(\n selections: SelectionInfo[],\n checkFirstParagraph: boolean\n): boolean {\n const selection = selections[checkFirstParagraph ? 0 : selections.length - 1];\n\n if (\n selection.block?.blockType == 'Paragraph' &&\n selection.segments &&\n selection.segments.length > 0\n ) {\n const allSegments = selection.block.segments;\n const segment = selection.segments[0];\n\n return (\n selection.segments.length == 1 &&\n segment.segmentType == 'SelectionMarker' &&\n segment == allSegments[checkFirstParagraph ? allSegments.length - 1 : 0]\n );\n } else {\n return false;\n }\n}\n","import { SelectionRangeEx, SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function getSelectionRootNode(rangeEx: SelectionRangeEx | undefined): Node | undefined {\n return !rangeEx\n ? undefined\n : rangeEx.type == SelectionRangeTypes.Normal\n ? rangeEx.ranges[0]?.commonAncestorContainer\n : rangeEx.type == SelectionRangeTypes.TableSelection\n ? rangeEx.table\n : rangeEx.type == SelectionRangeTypes.ImageSelection\n ? rangeEx.image\n : undefined;\n}\n","import { TableSelectionContext } from '../../publicTypes/selection/TableSelectionContext';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelBlockWithCache,\n ContentModelSegment,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface IterateSelectionsOption {\n /**\n * For selected table cell, this property determines how do we handle its content.\n * include: No matter if table cell is selected, always invoke callback function for selected content (default value)\n * ignoreForTable: When the whole table is selected we invoke callback for the table (using block parameter) but skip\n * all its cells and content, otherwise keep invoking callback for table cell and content\n * ignoreForTableOrCell: If whole table is selected, same with ignoreForTable, or if a table cell is selected, only\n * invoke callback for the table cell itself but not for its content, otherwise keep invoking callback for content.\n * @default include\n */\n contentUnderSelectedTableCell?: 'include' | 'ignoreForTable' | 'ignoreForTableOrCell';\n\n /**\n * For a selected general element, this property determines how do we handle its content.\n * contentOnly: (Default) When the whole general element is selected, we only invoke callback for its selected content\n * generalElementOnly: When the whole general element is selected, we only invoke callback for the general element (using block or\n * segment parameter depends on if it is a block or segment), but skip all its content.\n * both: When general element is selected, we invoke callback first for its content, then for general element itself\n */\n contentUnderSelectedGeneralElement?: 'contentOnly' | 'generalElementOnly' | 'both';\n\n /**\n * Whether call the callback for the list item format holder segment\n * anySegment: call the callback if any segment is selected under a list item\n * allSegments: call the callback only when all segments under the list item are selected\n * never: never call the callback for list item format holder\n * @default allSegments\n */\n includeListFormatHolder?: 'anySegment' | 'allSegments' | 'never';\n}\n\n/**\n * @internal\n * @returns True to stop iterating, otherwise keep going\n */\nexport type IterateSelectionsCallback = (\n path: ContentModelBlockGroup[],\n tableContext?: TableSelectionContext,\n block?: ContentModelBlock,\n segments?: ContentModelSegment[]\n) => void | boolean;\n\n/**\n * @internal\n * @returns True to stop iterating, otherwise keep going\n */\nexport function iterateSelections(\n path: ContentModelBlockGroup[],\n callback: IterateSelectionsCallback,\n option?: IterateSelectionsOption,\n table?: TableSelectionContext,\n treatAllAsSelect?: boolean\n) {\n const internalCallback: IterateSelectionsCallback = (path, tableContext, block, segments) => {\n if (!!(block as ContentModelBlockWithCache)?.cachedElement) {\n // TODO: This is a temporary solution. A better solution would be making all results from iterationSelection() to be readonly,\n // use a util function to change it to be editable before edit them where we clear its cached element\n delete (block as ContentModelBlockWithCache).cachedElement;\n }\n\n return callback(path, tableContext, block, segments);\n };\n\n internalIterateSelections(path, internalCallback, option, table, treatAllAsSelect);\n}\n\nfunction internalIterateSelections(\n path: ContentModelBlockGroup[],\n callback: IterateSelectionsCallback,\n option?: IterateSelectionsOption,\n table?: TableSelectionContext,\n treatAllAsSelect?: boolean\n): boolean {\n const parent = path[0];\n const includeListFormatHolder = option?.includeListFormatHolder || 'allSegments';\n const contentUnderSelectedTableCell = option?.contentUnderSelectedTableCell || 'include';\n const contentUnderSelectedGeneralElement =\n option?.contentUnderSelectedGeneralElement || 'contentOnly';\n\n let hasSelectedSegment = false;\n let hasUnselectedSegment = false;\n\n for (let i = 0; i < parent.blocks.length; i++) {\n const block = parent.blocks[i];\n\n switch (block.blockType) {\n case 'BlockGroup':\n const newPath = [block, ...path];\n\n if (block.blockGroupType == 'General') {\n const isSelected = treatAllAsSelect || block.isSelected;\n const handleGeneralContent =\n !isSelected ||\n contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'contentOnly';\n const handleGeneralElement =\n isSelected &&\n (contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'generalElementOnly' ||\n block.blocks.length == 0);\n\n if (\n (handleGeneralContent &&\n internalIterateSelections(\n newPath,\n callback,\n option,\n table,\n isSelected\n )) ||\n (handleGeneralElement && callback(path, table, block))\n ) {\n return true;\n }\n } else if (\n internalIterateSelections(newPath, callback, option, table, treatAllAsSelect)\n ) {\n return true;\n }\n break;\n\n case 'Table':\n const rows = block.rows;\n const isWholeTableSelected = rows.every(row =>\n row.cells.every(cell => cell.isSelected)\n );\n\n if (contentUnderSelectedTableCell != 'include' && isWholeTableSelected) {\n if (callback(path, table, block)) {\n return true;\n }\n } else {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const row = rows[rowIndex];\n\n for (let colIndex = 0; colIndex < row.cells.length; colIndex++) {\n const cell = row.cells[colIndex];\n if (!cell) {\n continue;\n }\n\n const newTable: TableSelectionContext = {\n table: block,\n rowIndex,\n colIndex,\n isWholeTableSelected,\n };\n\n if (cell.isSelected && callback(path, newTable)) {\n return true;\n }\n\n if (\n !cell.isSelected ||\n contentUnderSelectedTableCell != 'ignoreForTableOrCell'\n ) {\n const newPath = [cell, ...path];\n const isSelected = treatAllAsSelect || cell.isSelected;\n\n if (\n internalIterateSelections(\n newPath,\n callback,\n option,\n newTable,\n isSelected\n )\n ) {\n return true;\n }\n }\n }\n }\n }\n\n break;\n\n case 'Paragraph':\n const segments: ContentModelSegment[] = [];\n\n for (let i = 0; i < block.segments.length; i++) {\n const segment = block.segments[i];\n const isSelected = treatAllAsSelect || segment.isSelected;\n\n if (segment.segmentType == 'General') {\n const handleGeneralContent =\n !isSelected ||\n contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'contentOnly';\n const handleGeneralElement =\n isSelected &&\n (contentUnderSelectedGeneralElement == 'both' ||\n contentUnderSelectedGeneralElement == 'generalElementOnly' ||\n segment.blocks.length == 0);\n\n if (\n handleGeneralContent &&\n internalIterateSelections(\n [segment, ...path],\n callback,\n option,\n table,\n isSelected\n )\n ) {\n return true;\n }\n\n if (handleGeneralElement) {\n segments.push(segment);\n }\n } else if (isSelected) {\n segments.push(segment);\n }\n\n if (isSelected) {\n hasSelectedSegment = true;\n } else {\n hasUnselectedSegment = true;\n }\n }\n\n if (segments.length > 0 && callback(path, table, block, segments)) {\n return true;\n }\n break;\n\n case 'Divider':\n case 'Entity':\n if ((treatAllAsSelect || block.isSelected) && callback(path, table, block)) {\n return true;\n }\n\n break;\n }\n }\n\n if (\n includeListFormatHolder != 'never' &&\n parent.blockGroupType == 'ListItem' &&\n hasSelectedSegment &&\n (!hasUnselectedSegment || includeListFormatHolder == 'anySegment') &&\n // When whole list item is selected, also add its format holder as selected segment\n callback(path, table, undefined /*block*/, [parent.formatHolder])\n ) {\n return true;\n }\n\n return false;\n}\n","import { Coordinates } from 'roosterjs-editor-types';\nimport { isGeneralSegment } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n ContentModelTable,\n Selectable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setSelection(group: ContentModelBlockGroup, start?: Selectable, end?: Selectable) {\n setSelectionToBlockGroup(group, false /*isInSelection*/, start || null, end || null);\n}\n\nfunction setSelectionToBlockGroup(\n group: ContentModelBlockGroup,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n): boolean {\n return handleSelection(isInSelection, group, start, end, isInSelection => {\n if (isGeneralSegment(group)) {\n setIsSelected(group, isInSelection);\n }\n\n group.blocks.forEach(block => {\n isInSelection = setSelectionToBlock(block, isInSelection, start, end);\n });\n\n return isInSelection;\n });\n}\n\nfunction setSelectionToBlock(\n block: ContentModelBlock,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n) {\n switch (block.blockType) {\n case 'BlockGroup':\n return setSelectionToBlockGroup(block, isInSelection, start, end);\n\n case 'Table':\n return setSelectionToTable(block, isInSelection, start, end);\n\n case 'Divider':\n case 'Entity':\n return handleSelection(isInSelection, block, start, end, isInSelection => {\n if (isInSelection) {\n block.isSelected = true;\n } else {\n delete block.isSelected;\n }\n\n return isInSelection;\n });\n\n case 'Paragraph':\n const segmentsToDelete: number[] = [];\n\n block.segments.forEach((segment, i) => {\n isInSelection = handleSelection(\n isInSelection,\n segment,\n start,\n end,\n isInSelection => {\n return setSelectionToSegment(\n segment,\n isInSelection,\n segmentsToDelete,\n start,\n end,\n i\n );\n }\n );\n });\n\n while (segmentsToDelete.length > 0) {\n const index = segmentsToDelete.pop()!;\n\n if (index >= 0) {\n block.segments.splice(index, 1);\n }\n }\n\n return isInSelection;\n\n default:\n return isInSelection;\n }\n}\n\nfunction setSelectionToTable(\n table: ContentModelTable,\n isInSelection: boolean,\n start: Selectable | null,\n end: Selectable | null\n): boolean {\n const startCo = findCell(table, start);\n const endCo = end ? findCell(table, end) : startCo;\n\n if (!isInSelection && startCo && endCo) {\n for (let row = 0; row < table.rows.length; row++) {\n for (let col = 0; col < table.rows[row].cells.length; col++) {\n const isSelected =\n row >= startCo.y && row <= endCo.y && col >= startCo.x && col <= endCo.x;\n\n setIsSelected(table.rows[row].cells[col], isSelected);\n }\n }\n } else {\n table.rows.forEach(row =>\n row.cells.forEach(cell => {\n isInSelection = setSelectionToBlockGroup(cell, isInSelection, start, end);\n })\n );\n }\n\n return isInSelection;\n}\n\nfunction findCell(table: ContentModelTable, cell: Selectable | null): Coordinates | undefined {\n let x = -1;\n let y = -1;\n\n if (cell) {\n for (let row = 0; y < 0 && row < table.rows.length; row++) {\n for (let col = 0; x < 0 && col < table.rows[row].cells.length; col++) {\n if (table.rows[row].cells[col] == cell) {\n x = col;\n y = row;\n }\n }\n }\n }\n\n return x >= 0 && y >= 0 ? { x, y } : undefined;\n}\n\nfunction setSelectionToSegment(\n segment: ContentModelSegment,\n isInSelection: boolean,\n segmentsToDelete: number[],\n start: Selectable | null,\n end: Selectable | null,\n i: number\n) {\n switch (segment.segmentType) {\n case 'SelectionMarker':\n if (!isInSelection || (segment != start && segment != end)) {\n // Delete the selection marker when\n // 1. It is not in selection any more. Or\n // 2. It is in middle of selection, so no need to have it\n segmentsToDelete.push(i);\n }\n return isInSelection;\n\n case 'General':\n setIsSelected(segment, isInSelection);\n\n return segment != start && segment != end\n ? setSelectionToBlockGroup(segment, isInSelection, start, end)\n : isInSelection;\n\n case 'Image':\n setIsSelected(segment, isInSelection);\n segment.isSelectedAsImageSelection = start == segment && (!end || end == segment);\n return isInSelection;\n default:\n setIsSelected(segment, isInSelection);\n return isInSelection;\n }\n}\n\nfunction setIsSelected(selectable: Selectable, value: boolean) {\n if (value) {\n selectable.isSelected = true;\n } else {\n delete selectable.isSelected;\n }\n\n return value;\n}\n\nfunction handleSelection(\n isInSelection: boolean,\n model: ContentModelBlockGroup | ContentModelBlock | ContentModelSegment,\n start: Selectable | null,\n end: Selectable | null,\n callback: (isInSelection: boolean) => boolean\n) {\n isInSelection = isInSelection || model == start;\n isInSelection = callback(isInSelection);\n return isInSelection && !!end && model != end;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function alignTable(\n table: ContentModelTable,\n operation:\n | TableOperation.AlignCenter\n | TableOperation.AlignLeft\n | TableOperation.AlignRight\n | CompatibleTableOperation.AlignCenter\n | CompatibleTableOperation.AlignLeft\n | CompatibleTableOperation.AlignRight\n) {\n table.format.marginLeft = operation == TableOperation.AlignLeft ? '' : 'auto';\n table.format.marginRight = operation == TableOperation.AlignRight ? '' : 'auto';\n\n delete table.cachedElement;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst TextAlignValueMap: Partial> = {\n [TableOperation.AlignCellLeft]: 'start',\n [TableOperation.AlignCellCenter]: 'center',\n [TableOperation.AlignCellRight]: 'end',\n};\n\nconst VerticalAlignValueMap: Partial> = {\n [TableOperation.AlignCellTop]: 'top',\n [TableOperation.AlignCellMiddle]: 'middle',\n [TableOperation.AlignCellBottom]: 'bottom',\n};\n\n/**\n * @internal\n */\nexport function alignTableCell(\n table: ContentModelTable,\n operation:\n | TableOperation.AlignCellCenter\n | TableOperation.AlignCellLeft\n | TableOperation.AlignCellRight\n | TableOperation.AlignCellTop\n | TableOperation.AlignCellMiddle\n | TableOperation.AlignCellBottom\n | CompatibleTableOperation.AlignCellCenter\n | CompatibleTableOperation.AlignCellLeft\n | CompatibleTableOperation.AlignCellRight\n | CompatibleTableOperation.AlignCellTop\n | CompatibleTableOperation.AlignCellMiddle\n | CompatibleTableOperation.AlignCellBottom\n) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n const textAlign = TextAlignValueMap[operation];\n const verticalAlign = VerticalAlignValueMap[operation];\n\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[rowIndex]?.cells[colIndex];\n const format = cell?.format;\n\n if (format) {\n delete cell.cachedElement;\n\n format.textAlign = textAlign || format.textAlign;\n format.verticalAlign = verticalAlign || format.verticalAlign;\n\n if (verticalAlign) {\n updateTableCellMetadata(cell, metadata => {\n metadata = metadata || {};\n metadata.vAlignOverride = true;\n return metadata;\n });\n }\n }\n }\n }\n }\n}\n","import { BorderKeys } from 'roosterjs-content-model-dom';\nimport { combineBorderValue, extractBorderValues } from '../../domUtils/borderValues';\nimport { setTableCellBackgroundColor } from './setTableCellBackgroundColor';\nimport { TableBorderFormat } from 'roosterjs-editor-types';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\nimport { updateTableMetadata } from '../../domUtils/metadata/updateTableMetadata';\nimport {\n BorderFormat,\n ContentModelTable,\n ContentModelTableRow,\n TableMetadataFormat,\n} from 'roosterjs-content-model-types';\n\nconst DEFAULT_FORMAT: Required = {\n topBorderColor: '#ABABAB',\n bottomBorderColor: '#ABABAB',\n verticalBorderColor: '#ABABAB',\n hasHeaderRow: false,\n hasFirstColumn: false,\n hasBandedRows: false,\n hasBandedColumns: false,\n bgColorEven: null,\n bgColorOdd: '#ABABAB20',\n headerRowColor: '#ABABAB',\n tableBorderFormat: TableBorderFormat.DEFAULT,\n verticalAlign: null,\n};\n\ntype MetaOverrides = {\n bgColorOverrides: boolean[][];\n vAlignOverrides: boolean[][];\n};\n\n/**\n * @internal\n */\nexport function applyTableFormat(\n table: ContentModelTable,\n newFormat?: TableMetadataFormat,\n keepCellShade?: boolean\n) {\n const { rows } = table;\n\n updateTableMetadata(table, format => {\n const effectiveMetadata = {\n ...DEFAULT_FORMAT,\n ...format,\n ...(newFormat || {}),\n };\n\n const metaOverrides: MetaOverrides = updateOverrides(rows, !keepCellShade);\n\n delete table.cachedElement;\n\n clearCache(rows);\n formatCells(rows, effectiveMetadata, metaOverrides);\n setFirstColumnFormat(rows, effectiveMetadata, metaOverrides);\n setHeaderRowFormat(rows, effectiveMetadata, metaOverrides);\n return effectiveMetadata;\n });\n}\n\nfunction clearCache(rows: ContentModelTableRow[]) {\n rows.forEach(row => {\n row.cells.forEach(cell => {\n delete cell.cachedElement;\n });\n\n delete row.cachedElement;\n });\n}\n\nfunction updateOverrides(rows: ContentModelTableRow[], removeCellShade: boolean): MetaOverrides {\n const overrides: MetaOverrides = { bgColorOverrides: [], vAlignOverrides: [] };\n\n rows.forEach(row => {\n const bgColorOverrides: boolean[] = [];\n const vAlignOverrides: boolean[] = [];\n\n overrides.bgColorOverrides.push(bgColorOverrides);\n overrides.vAlignOverrides.push(vAlignOverrides);\n\n row.cells.forEach(cell => {\n updateTableCellMetadata(cell, metadata => {\n if (metadata && removeCellShade) {\n bgColorOverrides.push(false);\n delete metadata.bgColorOverride;\n } else {\n bgColorOverrides.push(!!metadata?.bgColorOverride);\n }\n vAlignOverrides.push(!!metadata?.vAlignOverride);\n\n return metadata;\n });\n });\n });\n\n return overrides;\n}\n\ntype ShouldUseTransparentBorder = (indexProp: {\n firstRow: boolean;\n lastRow: boolean;\n firstColumn: boolean;\n lastColumn: boolean;\n}) => [boolean, boolean, boolean, boolean];\n\nconst BorderFormatters: Record = {\n [TableBorderFormat.DEFAULT]: _ => [false, false, false, false],\n [TableBorderFormat.LIST_WITH_SIDE_BORDERS]: ({ lastColumn, firstColumn }) => [\n false,\n !lastColumn,\n false,\n !firstColumn,\n ],\n [TableBorderFormat.FIRST_COLUMN_HEADER_EXTERNAL]: ({\n firstColumn,\n firstRow,\n lastColumn,\n lastRow,\n }) => [\n !firstRow,\n (!lastColumn && !firstColumn) || (firstColumn && firstRow),\n !lastRow && !firstRow,\n !firstColumn,\n ],\n [TableBorderFormat.NO_HEADER_BORDERS]: ({ firstRow, firstColumn, lastColumn }) => [\n firstRow,\n firstRow || lastColumn,\n false,\n firstRow || firstColumn,\n ],\n [TableBorderFormat.NO_SIDE_BORDERS]: ({ firstColumn, lastColumn }) => [\n false,\n lastColumn,\n false,\n firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_1]: ({ firstRow, firstColumn }) => [\n firstColumn && !firstRow,\n firstRow,\n firstColumn && !firstRow,\n firstRow && !firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_2]: ({ firstRow, firstColumn }) => [\n !firstRow,\n firstRow || !firstColumn,\n !firstRow,\n !firstColumn,\n ],\n [TableBorderFormat.ESPECIAL_TYPE_3]: ({ firstColumn, firstRow }) => [\n true,\n firstRow || !firstColumn,\n !firstRow,\n true,\n ],\n [TableBorderFormat.CLEAR]: () => [true, true, true, true],\n};\n\n/*\n * Apply vertical align, borders, and background color to all cells in the table\n */\nfunction formatCells(\n rows: ContentModelTableRow[],\n format: TableMetadataFormat,\n metaOverrides: MetaOverrides\n) {\n const { hasBandedRows, hasBandedColumns, bgColorOdd, bgColorEven } = format;\n\n rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, colIndex) => {\n // Format Borders\n const transparentBorderMatrix = BorderFormatters[\n format.tableBorderFormat as TableBorderFormat\n ]({\n firstRow: rowIndex === 0,\n lastRow: rowIndex === rows.length - 1,\n firstColumn: colIndex === 0,\n lastColumn: colIndex === row.cells.length - 1,\n });\n\n const formatColor = [\n format.topBorderColor,\n format.verticalBorderColor,\n format.bottomBorderColor,\n format.verticalBorderColor,\n ];\n\n transparentBorderMatrix.forEach((alwaysUseTransparent, i) => {\n const borderColor = (!alwaysUseTransparent && formatColor[i]) || '';\n\n cell.format[BorderKeys[i]] = combineBorderValue({\n style: getBorderStyleFromColor(borderColor),\n width: '1px',\n color: borderColor,\n });\n });\n\n // Format Background Color\n if (!metaOverrides.bgColorOverrides[rowIndex][colIndex]) {\n const color =\n hasBandedRows || hasBandedColumns\n ? (hasBandedColumns && colIndex % 2 != 0) ||\n (hasBandedRows && rowIndex % 2 != 0)\n ? bgColorOdd\n : bgColorEven\n : bgColorEven; /* bgColorEven is the default color */\n\n setTableCellBackgroundColor(cell, color);\n }\n\n // Format Vertical Align\n if (format.verticalAlign && !metaOverrides.vAlignOverrides[rowIndex][colIndex]) {\n cell.format.verticalAlign = format.verticalAlign;\n }\n });\n });\n}\n\nfunction setFirstColumnFormat(\n rows: ContentModelTableRow[],\n format: Partial,\n metaOverrides: MetaOverrides\n) {\n rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, cellIndex) => {\n if (format.hasFirstColumn && cellIndex === 0) {\n cell.isHeader = true;\n\n if (rowIndex !== 0 && !metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {\n setBorderColor(cell.format, 'borderTop');\n setTableCellBackgroundColor(cell, null /*color*/);\n }\n\n if (rowIndex !== rows.length - 1 && rowIndex !== 0) {\n setBorderColor(cell.format, 'borderBottom');\n }\n } else {\n cell.isHeader = false;\n }\n });\n });\n}\n\nfunction setHeaderRowFormat(\n rows: ContentModelTableRow[],\n format: TableMetadataFormat,\n metaOverrides: MetaOverrides\n) {\n const rowIndex = 0;\n\n rows[rowIndex]?.cells.forEach((cell, cellIndex) => {\n cell.isHeader = format.hasHeaderRow;\n\n if (format.hasHeaderRow && format.headerRowColor) {\n if (!metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {\n setTableCellBackgroundColor(cell, format.headerRowColor);\n }\n\n setBorderColor(cell.format, 'borderTop', format.headerRowColor);\n setBorderColor(cell.format, 'borderRight', format.headerRowColor);\n setBorderColor(cell.format, 'borderLeft', format.headerRowColor);\n }\n });\n}\n\nfunction setBorderColor(format: BorderFormat, key: keyof BorderFormat, value?: string) {\n const border = extractBorderValues(format[key]);\n border.color = value || '';\n border.style = getBorderStyleFromColor(border.color);\n format[key] = combineBorderValue(border);\n}\n\nfunction getBorderStyleFromColor(color?: string): string {\n return !color || color == 'transparent' ? 'none' : 'solid';\n}\n","import { ContentModelTableRow } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function canMergeCells(\n rows: ContentModelTableRow[],\n firstRow: number,\n firstCol: number,\n lastRow: number,\n lastCol: number\n): boolean {\n const noSpanAbove =\n firstCol == lastCol ||\n rows[firstRow].cells.every(\n (cell, colIndex) => colIndex < firstCol || colIndex > lastCol || !cell.spanAbove\n );\n const noSpanLeft =\n firstRow == lastRow ||\n rows.every(\n (row, rowIndex) =>\n rowIndex < firstRow || rowIndex > lastRow || !row.cells[firstCol].spanLeft\n );\n\n const noDifferentBelowSpan = rows[lastRow].cells\n .map((_, colIndex) =>\n colIndex >= firstCol && colIndex <= lastCol\n ? getBelowSpanCount(rows, lastRow, colIndex)\n : -1\n )\n .every((x, _, a) => x < 0 || x == a[firstCol]);\n const noDifferentRightSpan = rows\n .map((_, rowIndex) =>\n rowIndex >= firstRow && rowIndex <= lastRow\n ? getRightSpanCount(rows, rowIndex, lastCol)\n : -1\n )\n .every((x, _, a) => x < 0 || x == a[firstRow]);\n\n return noSpanAbove && noSpanLeft && noDifferentBelowSpan && noDifferentRightSpan;\n}\n\nfunction getBelowSpanCount(rows: ContentModelTableRow[], rowIndex: number, colIndex: number) {\n let spanCount = 0;\n\n for (let row = rowIndex + 1; row < rows.length; row++) {\n if (rows[row]?.cells[colIndex]?.spanAbove) {\n spanCount++;\n } else {\n break;\n }\n }\n\n return spanCount;\n}\n\nfunction getRightSpanCount(rows: ContentModelTableRow[], rowIndex: number, colIndex: number) {\n let spanCount = 0;\n\n for (let col = colIndex + 1; col < rows[rowIndex]?.cells.length; col++) {\n if (rows[rowIndex]?.cells[col]?.spanLeft) {\n spanCount++;\n } else {\n break;\n }\n }\n\n return spanCount;\n}\n","import { addBlock, createTable, createTableCell } from 'roosterjs-content-model-dom';\nimport { ContentModelBlockGroup, ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function createTableStructure(\n parent: ContentModelBlockGroup,\n columns: number,\n rows: number\n): ContentModelTable {\n const table = createTable(rows);\n\n addBlock(parent, table);\n\n table.rows.forEach(row => {\n for (let i = 0; i < columns; i++) {\n const cell = createTableCell();\n\n row.cells.push(cell);\n }\n });\n\n return table;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function deleteTable(table: ContentModelTable) {\n table.rows = [];\n delete table.cachedElement;\n}\n","import { collapseTableSelection } from '../selection/collapseTableSelection';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\n\n/**\n * @internal\n */\nexport function deleteTableColumn(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let rowIndex = 0; rowIndex < table.rows.length; rowIndex++) {\n const cellInNextCol = table.rows[rowIndex].cells[sel.lastCol + 1];\n\n if (cellInNextCol) {\n cellInNextCol.spanLeft =\n cellInNextCol.spanLeft && table.rows[rowIndex].cells[sel.firstCol].spanLeft;\n }\n\n table.rows[rowIndex].cells.splice(sel.firstCol, sel.lastCol - sel.firstCol + 1);\n }\n\n table.widths.splice(sel.firstCol, sel.lastCol - sel.firstCol + 1);\n collapseTableSelection(table.rows, sel);\n }\n}\n","import { collapseTableSelection } from '../selection/collapseTableSelection';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\n\n/**\n * @internal\n */\nexport function deleteTableRow(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n table.rows[sel.firstRow].cells.forEach((cell, colIndex) => {\n const cellInNextRow = table.rows[sel.lastRow + 1]?.cells[colIndex];\n\n if (cellInNextRow) {\n cellInNextRow.spanAbove = cellInNextRow.spanAbove && cell.spanAbove;\n }\n });\n\n table.rows.splice(sel.firstRow, sel.lastRow - sel.firstRow + 1);\n\n collapseTableSelection(table.rows, sel);\n }\n}\n","import { createBr, createParagraph } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * After edit table, it maybe in a abnormal state, e.g. selected table cell is removed, or all rows are removed causes no place to put cursor.\n * We need to make sure table is in normal state, and there is a place to put cursor.\n * @returns a new paragraph that can but put focus in, or undefined if not needed\n */\nexport function ensureFocusableParagraphForTable(\n model: ContentModelDocument,\n path: ContentModelBlockGroup[],\n table: ContentModelTable\n): ContentModelParagraph | undefined {\n let paragraph: ContentModelParagraph | undefined;\n const firstCell = table.rows.filter(row => row.cells.length > 0)[0]?.cells[0];\n\n if (firstCell) {\n // When there is a valid cell to put focus, use it\n paragraph = firstCell.blocks.filter(\n (block): block is ContentModelParagraph => block.blockType == 'Paragraph'\n )[0];\n\n if (!paragraph) {\n // If there is not a paragraph under this cell, create one\n paragraph = createEmptyParagraph(model);\n firstCell.blocks.push(paragraph);\n }\n } else {\n // No table cell at all, which means the whole table is deleted. So we need to remove it from content model.\n let block: ContentModelBlock = table;\n let parent: ContentModelBlockGroup | undefined;\n paragraph = createEmptyParagraph(model);\n\n // If the table is the only block of its parent and parent is a FormatContainer, remove the parent as well.\n // We need to do this in a loop in case there are multiple layer of FormatContainer that match this case\n while ((parent = path.shift())) {\n const index = parent.blocks.indexOf(block) ?? -1;\n\n if (parent && index >= 0) {\n parent.blocks.splice(index, 1, paragraph);\n }\n\n if (\n parent.blockGroupType == 'FormatContainer' &&\n parent.blocks.length == 1 &&\n parent.blocks[0] == paragraph\n ) {\n // If the new paragraph is the only child of parent format container, unwrap parent as well\n block = parent;\n } else {\n // Otherwise, just stop here and keep processing the new paragraph\n break;\n }\n }\n }\n\n return paragraph;\n}\n\nfunction createEmptyParagraph(model: ContentModelDocument) {\n const newPara = createParagraph(false /*isImplicit*/, undefined /*blockFormat*/, model.format);\n const br = createBr(model.format);\n\n newPara.segments.push(br);\n\n return newPara;\n}\n","import hasSelectionInBlockGroup from '../../publicApi/selection/hasSelectionInBlockGroup';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport interface TableSelectionCoordinates {\n firstRow: number;\n firstCol: number;\n lastRow: number;\n lastCol: number;\n}\n\n/**\n * @internal\n */\nexport function getSelectedCells(table: ContentModelTable): TableSelectionCoordinates | null {\n let firstRow = -1;\n let firstCol = -1;\n let lastRow = -1;\n let lastCol = -1;\n let hasSelection = false;\n\n table.rows.forEach((row, rowIndex) =>\n row.cells.forEach((cell, colIndex) => {\n if (hasSelectionInBlockGroup(cell)) {\n hasSelection = true;\n\n if (firstRow < 0) {\n firstRow = rowIndex;\n }\n\n if (firstCol < 0) {\n firstCol = colIndex;\n }\n\n lastRow = Math.max(lastRow, rowIndex);\n lastCol = Math.max(lastCol, colIndex);\n }\n })\n );\n\n return hasSelection ? { firstRow, firstCol, lastRow, lastCol } : null;\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function insertTableColumn(\n table: ContentModelTable,\n operation:\n | TableOperation.InsertLeft\n | TableOperation.InsertRight\n | CompatibleTableOperation.InsertLeft\n | CompatibleTableOperation.InsertRight\n) {\n const sel = getSelectedCells(table);\n const insertLeft = operation == TableOperation.InsertLeft;\n\n if (sel) {\n for (let i = sel?.firstCol; i <= sel.lastCol; i++) {\n table.rows.forEach(row => {\n const cell = row.cells[insertLeft ? sel.firstCol : sel.lastCol];\n\n row.cells.splice(\n insertLeft ? sel.firstCol : sel.lastCol + 1,\n 0,\n createTableCell(cell.spanLeft, cell.spanAbove, cell.isHeader, cell.format)\n );\n });\n table.widths.splice(\n insertLeft ? sel.firstCol : sel.lastCol + 1,\n 0,\n table.widths[insertLeft ? sel.firstCol : sel.lastCol]\n );\n }\n }\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function insertTableRow(\n table: ContentModelTable,\n operation:\n | TableOperation.InsertAbove\n | TableOperation.InsertBelow\n | CompatibleTableOperation.InsertAbove\n | CompatibleTableOperation.InsertBelow\n) {\n const sel = getSelectedCells(table);\n const insertAbove = operation == TableOperation.InsertAbove;\n\n if (sel) {\n for (let i = sel.firstRow; i <= sel.lastRow; i++) {\n const sourceRow = table.rows[insertAbove ? sel.firstRow : sel.lastRow];\n\n table.rows.splice(insertAbove ? sel.firstRow : sel.lastRow + 1, 0, {\n format: { ...sourceRow.format },\n cells: sourceRow.cells.map(cell =>\n createTableCell(cell.spanLeft, cell.spanAbove, cell.isHeader, cell.format)\n ),\n height: sourceRow.height,\n });\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { getSelectedCells } from './getSelectedCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function mergeTableCells(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel && canMergeCells(table.rows, sel.firstRow, sel.firstCol, sel.lastRow, sel.lastCol)) {\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[rowIndex].cells[colIndex];\n\n if (cell) {\n cell.spanLeft = colIndex > sel.firstCol;\n cell.spanAbove = rowIndex > sel.firstRow;\n\n delete cell.cachedElement;\n }\n }\n\n delete table.rows[rowIndex].cachedElement;\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function mergeTableColumn(\n table: ContentModelTable,\n operation:\n | TableOperation.MergeLeft\n | TableOperation.MergeRight\n | CompatibleTableOperation.MergeLeft\n | CompatibleTableOperation.MergeRight\n) {\n const sel = getSelectedCells(table);\n const mergeLeft = operation == TableOperation.MergeLeft;\n\n if (sel) {\n const mergingColIndex = mergeLeft ? sel.firstCol : sel.lastCol + 1;\n\n if (mergingColIndex > 0 && mergingColIndex < table.rows[0].cells.length) {\n for (let rowIndex = sel.firstRow; rowIndex <= sel.lastRow; rowIndex++) {\n const cell = table.rows[rowIndex]?.cells[mergingColIndex];\n\n if (\n cell &&\n canMergeCells(\n table.rows,\n rowIndex,\n mergingColIndex - 1,\n rowIndex,\n mergingColIndex\n )\n ) {\n cell.spanLeft = true;\n\n let newSelectedCol = mergingColIndex;\n\n while (table.rows[rowIndex]?.cells[newSelectedCol]?.spanLeft) {\n delete table.rows[rowIndex].cells[newSelectedCol].cachedElement;\n newSelectedCol--;\n }\n\n if (table.rows[rowIndex]?.cells[newSelectedCol]) {\n table.rows[rowIndex].cells[newSelectedCol].isSelected = true;\n\n delete table.rows[rowIndex].cells[newSelectedCol].cachedElement;\n }\n\n delete cell.cachedElement;\n }\n\n delete table.rows[rowIndex].cachedElement;\n }\n }\n }\n}\n","import { canMergeCells } from './canMergeCells';\nimport { ContentModelTable } from 'roosterjs-content-model-types';\nimport { getSelectedCells } from './getSelectedCells';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n */\nexport function mergeTableRow(\n table: ContentModelTable,\n operation:\n | TableOperation.MergeAbove\n | TableOperation.MergeBelow\n | CompatibleTableOperation.MergeAbove\n | CompatibleTableOperation.MergeBelow\n) {\n const sel = getSelectedCells(table);\n const mergeAbove = operation == TableOperation.MergeAbove;\n\n if (sel) {\n const mergingRowIndex = mergeAbove ? sel.firstRow : sel.lastRow + 1;\n\n if (mergingRowIndex > 0 && mergingRowIndex < table.rows.length) {\n for (let colIndex = sel.firstCol; colIndex <= sel.lastCol; colIndex++) {\n const cell = table.rows[mergingRowIndex].cells[colIndex];\n\n if (\n cell &&\n canMergeCells(\n table.rows,\n mergingRowIndex - 1,\n colIndex,\n mergingRowIndex,\n colIndex\n )\n ) {\n cell.spanAbove = true;\n\n let newSelectedRow = mergingRowIndex;\n\n while (table.rows[newSelectedRow]?.cells[colIndex]?.spanAbove) {\n delete table.rows[newSelectedRow].cells[colIndex].cachedElement;\n delete table.rows[newSelectedRow].cachedElement;\n newSelectedRow--;\n }\n\n if (table.rows[newSelectedRow]?.cells[colIndex]) {\n table.rows[newSelectedRow].cells[colIndex].isSelected = true;\n\n delete table.rows[newSelectedRow].cells[colIndex].cachedElement;\n delete table.rows[newSelectedRow].cachedElement;\n }\n\n delete cell.cachedElement;\n }\n }\n }\n }\n}\n","import { addBlock, addSegment, createBr, createParagraph } from 'roosterjs-content-model-dom';\nimport { arrayPush } from 'roosterjs-editor-dom';\nimport {\n ContentModelSegment,\n ContentModelSegmentFormat,\n ContentModelTable,\n ContentModelTableCell,\n} from 'roosterjs-content-model-types';\n\nconst MIN_HEIGHT = 22;\n\n/**\n * @internal\n */\nexport function normalizeTable(\n table: ContentModelTable,\n defaultSegmentFormat?: ContentModelSegmentFormat\n) {\n // Always collapse border and use border box for table in roosterjs to make layout simpler\n const format = table.format;\n\n if (!format.borderCollapse || !format.useBorderBox) {\n format.borderCollapse = true;\n format.useBorderBox = true;\n }\n\n // Make sure all first cells are not spanned\n // Make sure all inner cells are not header\n // Make sure all cells have content and width\n table.rows.forEach((row, rowIndex) => {\n row.cells.forEach((cell, colIndex) => {\n if (cell.blocks.length == 0) {\n addBlock(\n cell,\n createParagraph(\n undefined /*isImplicit*/,\n undefined /*blockFormat*/,\n defaultSegmentFormat\n )\n );\n addSegment(cell, createBr(defaultSegmentFormat));\n }\n\n if (rowIndex == 0) {\n cell.spanAbove = false;\n } else if (rowIndex > 0 && cell.isHeader) {\n cell.isHeader = false;\n delete cell.cachedElement;\n }\n\n if (colIndex == 0) {\n cell.spanLeft = false;\n }\n\n cell.format.useBorderBox = true;\n });\n\n // Make sure table has correct width and height array\n if (row.height < MIN_HEIGHT) {\n row.height = MIN_HEIGHT;\n }\n });\n\n const columns = Math.max(...table.rows.map(row => row.cells.length));\n\n for (let i = 0; i < columns; i++) {\n if (table.widths[i] === undefined) {\n table.widths[i] = getTableCellWidth(columns);\n }\n }\n\n // Move blocks from spanned cell to its main cell if any,\n // and remove rows/columns if all cells in it are spanned\n const colCount = table.rows[0]?.cells.length || 0;\n\n for (let colIndex = colCount - 1; colIndex > 0; colIndex--) {\n table.rows.forEach(row => {\n const cell = row.cells[colIndex];\n const leftCell = row.cells[colIndex - 1];\n if (cell && leftCell && cell.spanLeft) {\n tryMoveBlocks(leftCell, cell);\n }\n });\n\n if (table.rows.every(row => row.cells[colIndex]?.spanLeft)) {\n table.rows.forEach(row => row.cells.splice(colIndex, 1));\n table.widths.splice(\n colIndex - 1,\n 2,\n table.widths[colIndex - 1] + table.widths[colIndex]\n );\n }\n }\n\n for (let rowIndex = table.rows.length - 1; rowIndex > 0; rowIndex--) {\n const row = table.rows[rowIndex];\n\n row.cells.forEach((cell, colIndex) => {\n const aboveCell = table.rows[rowIndex - 1]?.cells[colIndex];\n if (aboveCell && cell.spanAbove) {\n tryMoveBlocks(aboveCell, cell);\n }\n });\n\n if (row.cells.every(cell => cell.spanAbove)) {\n table.rows[rowIndex - 1].height += row.height;\n table.rows.splice(rowIndex, 1);\n }\n }\n}\n\nfunction getTableCellWidth(columns: number): number {\n if (columns <= 4) {\n return 120;\n } else if (columns <= 6) {\n return 100;\n } else {\n return 70;\n }\n}\n\nfunction tryMoveBlocks(targetCell: ContentModelTableCell, sourceCell: ContentModelTableCell) {\n const onlyHasEmptyOrBr = sourceCell.blocks.every(\n block => block.blockType == 'Paragraph' && hasOnlyBrSegment(block.segments)\n );\n\n if (!onlyHasEmptyOrBr) {\n arrayPush(targetCell.blocks, sourceCell.blocks);\n sourceCell.blocks = [];\n }\n}\n\nfunction hasOnlyBrSegment(segments: ContentModelSegment[]): boolean {\n segments = segments.filter(s => s.segmentType != 'SelectionMarker');\n\n return segments.length == 0 || (segments.length == 1 && segments[0].segmentType == 'Br');\n}\n","import { ContentModelTableCell } from 'roosterjs-content-model-types';\nimport { parseColor } from 'roosterjs-editor-dom';\nimport { updateTableCellMetadata } from '../../domUtils/metadata/updateTableCellMetadata';\n\n// Using the HSL (hue, saturation and lightness) representation for RGB color values.\n// If the value of the lightness is less than 20, the color is dark.\n// If the value of the lightness is more than 80, the color is bright\nconst DARK_COLORS_LIGHTNESS = 20;\nconst BRIGHT_COLORS_LIGHTNESS = 80;\nconst White = '#ffffff';\nconst Black = '#000000';\n\n/**\n * @internal\n */\nexport function setTableCellBackgroundColor(\n cell: ContentModelTableCell,\n color: string | null | undefined,\n isColorOverride?: boolean\n) {\n if (color) {\n cell.format.backgroundColor = color;\n\n if (isColorOverride) {\n updateTableCellMetadata(cell, metadata => {\n metadata = metadata || {};\n metadata.bgColorOverride = true;\n return metadata;\n });\n }\n\n const lightness = calculateLightness(color);\n\n if (lightness < DARK_COLORS_LIGHTNESS) {\n cell.format.textColor = White;\n } else if (lightness > BRIGHT_COLORS_LIGHTNESS) {\n cell.format.textColor = Black;\n } else {\n delete cell.format.textColor;\n }\n } else {\n delete cell.format.backgroundColor;\n delete cell.format.textColor;\n }\n\n delete cell.cachedElement;\n}\n\nfunction calculateLightness(color: string) {\n const colorValues = parseColor(color);\n\n // Use the values of r,g,b to calculate the lightness in the HSl representation\n //First calculate the fraction of the light in each color, since in css the value of r,g,b is in the interval of [0,255], we have\n if (colorValues) {\n const red = colorValues[0] / 255;\n const green = colorValues[1] / 255;\n const blue = colorValues[2] / 255;\n\n //Then the lightness in the HSL representation is the average between maximum fraction of r,g,b and the minimum fraction\n return (Math.max(red, green, blue) + Math.min(red, green, blue)) * 50;\n } else {\n return 255;\n }\n}\n","import { ContentModelTable } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\n\nconst MIN_WIDTH = 30;\n\n/**\n * @internal\n */\nexport function splitTableCellHorizontally(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let colIndex = sel.lastCol; colIndex >= sel.firstCol; colIndex--) {\n if (\n table.rows.every(\n (row, rowIndex) =>\n rowIndex < sel.firstRow ||\n rowIndex > sel.lastRow ||\n row.cells[colIndex + 1]?.spanLeft\n )\n ) {\n table.rows.forEach((row, rowIndex) => {\n delete row.cells[colIndex].cachedElement;\n\n if (rowIndex >= sel.firstRow && rowIndex <= sel.lastRow) {\n row.cells[colIndex + 1].spanLeft = false;\n delete row.cells[colIndex + 1].cachedElement;\n }\n });\n } else {\n table.rows.forEach((row, rowIndex) => {\n const cell = row.cells[colIndex];\n if (cell) {\n const newCell = createTableCell(\n cell.spanLeft,\n cell.spanAbove,\n cell.isHeader,\n cell.format\n );\n\n newCell.dataset = { ...cell.dataset };\n\n if (rowIndex < sel.firstRow || rowIndex > sel.lastRow) {\n newCell.spanLeft = true;\n } else {\n newCell.isSelected = cell.isSelected;\n }\n row.cells.splice(colIndex + 1, 0, newCell);\n\n delete row.cells[colIndex].cachedElement;\n }\n });\n\n const newWidth = Math.max(table.widths[colIndex] / 2, MIN_WIDTH);\n\n table.widths.splice(colIndex, 1, newWidth, newWidth);\n }\n }\n }\n}\n","import { ContentModelTable, ContentModelTableRow } from 'roosterjs-content-model-types';\nimport { createTableCell } from 'roosterjs-content-model-dom';\nimport { getSelectedCells } from './getSelectedCells';\n\nconst MIN_HEIGHT = 22;\n\n/**\n * @internal\n */\nexport function splitTableCellVertically(table: ContentModelTable) {\n const sel = getSelectedCells(table);\n\n if (sel) {\n for (let rowIndex = sel.lastRow; rowIndex >= sel.firstRow; rowIndex--) {\n const row = table.rows[rowIndex];\n const belowRow = table.rows[rowIndex + 1];\n\n row.cells.forEach(cell => {\n delete cell.cachedElement;\n });\n\n delete row.cachedElement;\n\n if (\n belowRow?.cells.every(\n (belowCell, colIndex) =>\n colIndex < sel.firstCol || colIndex > sel.lastCol || belowCell.spanAbove\n )\n ) {\n belowRow.cells.forEach((belowCell, colIndex) => {\n if (colIndex >= sel.firstCol && colIndex <= sel.lastCol) {\n belowCell.spanAbove = false;\n delete belowCell.cachedElement;\n }\n });\n\n delete belowRow.cachedElement;\n } else {\n const newHeight = Math.max((row.height /= 2), MIN_HEIGHT);\n const newRow: ContentModelTableRow = {\n format: { ...row.format },\n height: newHeight,\n cells: row.cells.map((cell, colIndex) => {\n const newCell = createTableCell(\n cell.spanLeft,\n cell.spanAbove,\n cell.isHeader,\n cell.format\n );\n\n newCell.dataset = { ...cell.dataset };\n\n if (colIndex < sel.firstCol || colIndex > sel.lastCol) {\n newCell.spanAbove = true;\n } else {\n newCell.isSelected = cell.isSelected;\n }\n\n return newCell;\n }),\n };\n\n row.height = newHeight;\n table.rows.splice(rowIndex + 1, 0, newRow);\n }\n }\n }\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setModelAlignment } from '../../modelApi/block/setModelAlignment';\n\n/**\n * Set text alignment of selected paragraphs\n * @param editor The editor to set alignment\n * @param alignment Alignment value: left, center or right\n */\nexport default function setAlignment(\n editor: IContentModelEditor,\n alignment: 'left' | 'center' | 'right'\n) {\n formatWithContentModel(editor, 'setAlignment', model => setModelAlignment(model, alignment));\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setModelDirection } from '../../modelApi/block/setModelDirection';\n\n/**\n * Set text direction of selected paragraphs (Left to right or Right to left)\n * @param editor The editor to set alignment\n * @param direction Direction value: ltr (Left to right) or rtl (Right to left)\n */\nexport default function setDirection(editor: IContentModelEditor, direction: 'ltr' | 'rtl') {\n formatWithContentModel(editor, 'setDirection', model => setModelDirection(model, direction));\n}\n","import { defaultImplicitFormatMap } from 'roosterjs-content-model-dom';\nimport { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelParagraphDecorator,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n\ntype HeadingLevelTags = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Set heading level of selected paragraphs\n * @param editor The editor to set heading level to\n * @param headingLevel Level of heading, from 1 to 6. Set to 0 means set it back to a regular paragraph\n */\nexport default function setHeadingLevel(\n editor: IContentModelEditor,\n headingLevel: 0 | 1 | 2 | 3 | 4 | 5 | 6\n) {\n formatParagraphWithContentModel(editor, 'setHeadingLevel', para => {\n const tagName =\n headingLevel > 0\n ? (('h' + headingLevel) as HeadingLevelTags | null)\n : getExistingHeadingTag(para.decorator);\n const headingStyle =\n (tagName && (defaultImplicitFormatMap[tagName] as ContentModelSegmentFormat)) || {};\n\n if (headingLevel > 0) {\n para.decorator = {\n tagName: tagName!,\n format: { ...headingStyle },\n };\n\n // Remove existing formats since tags have default font size and weight\n para.segments.forEach(segment => {\n delete segment.format.fontSize;\n delete segment.format.fontWeight;\n });\n } else if (tagName) {\n delete para.decorator;\n }\n });\n}\n\nfunction getExistingHeadingTag(\n decorator?: ContentModelParagraphDecorator\n): HeadingLevelTags | null {\n const tag = decorator?.tagName || '';\n const level = parseInt(tag.substring(1));\n\n return level >= 1 && level <= 6 ? (tag as HeadingLevelTags) : null;\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { setModelIndentation } from '../../modelApi/block/setModelIndentation';\n\n/**\n * Indent or outdent to selected paragraphs\n * @param editor The editor to operate on\n * @param indentation Whether indent or outdent\n * @param length The length of pixel to indent/outdent @default 40\n */\nexport default function setIndentation(\n editor: IContentModelEditor,\n indentation: 'indent' | 'outdent',\n length?: number\n) {\n formatWithContentModel(\n editor,\n 'setIndentation',\n model => {\n const result = setModelIndentation(model, indentation, length);\n\n if (result) {\n normalizeContentModel(model);\n }\n\n return result;\n },\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { createParagraphDecorator } from 'roosterjs-content-model-dom';\nimport { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggles the current block(s) margin properties.\n * null deletes any existing value, undefined is ignored\n * @param editor The editor to operate on\n * @param marginTop value for top margin\n * @param marginBottom value for bottom margin\n */\nexport default function setParagraphMargin(\n editor: IContentModelEditor,\n marginTop?: string | null,\n marginBottom?: string | null\n) {\n formatParagraphWithContentModel(editor, 'setParagraphMargin', para => {\n if (!para.decorator) {\n para.decorator = createParagraphDecorator('p');\n }\n\n if (marginTop) {\n para.format.marginTop = marginTop;\n } else if (marginTop === null) {\n delete para.format.marginTop;\n }\n\n if (marginBottom) {\n para.format.marginBottom = marginBottom;\n } else if (marginBottom === null) {\n delete para.format.marginBottom;\n }\n });\n}\n","import { formatParagraphWithContentModel } from '../utils/formatParagraphWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Sets current selected block(s) line-height property and wipes such property from child segments\n * @param editor The editor to operate on\n * @param spacing Unitless/px value to set line height\n */\nexport default function setSpacing(editor: IContentModelEditor, spacing: number | string) {\n formatParagraphWithContentModel(editor, 'setSpacing', paragraph => {\n paragraph.format.lineHeight = spacing.toString();\n paragraph.segments.forEach(segment => {\n if (segment.format.lineHeight) {\n delete segment.format.lineHeight;\n }\n });\n });\n}\n","import { ContentModelFormatContainerFormat } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { toggleModelBlockQuote } from '../../modelApi/block/toggleModelBlockQuote';\n\nconst DefaultQuoteFormat: ContentModelFormatContainerFormat = {\n borderLeft: '3px solid rgb(200, 200, 200)', // TODO: Support RTL\n textColor: 'rgb(102, 102, 102)',\n};\nconst BuildInQuoteFormat: ContentModelFormatContainerFormat = {\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: '40px',\n marginRight: '40px',\n paddingLeft: '10px',\n};\n\n/**\n * Toggle BLOCKQUOTE state of selected paragraphs.\n * If any selected paragraph is not under a BLOCKQUOTE, wrap them into a BLOCKQUOTE.\n * Otherwise, unwrap all related BLOCKQUOTEs.\n * @param editor The editor object to toggle BLOCKQUOTE onto\n * @param quoteFormat @optional Block format for the new quote object\n */\nexport default function toggleBlockQuote(\n editor: IContentModelEditor,\n quoteFormat: ContentModelFormatContainerFormat = DefaultQuoteFormat\n) {\n const fullQuoteFormat = {\n ...BuildInQuoteFormat,\n ...quoteFormat,\n };\n\n formatWithContentModel(\n editor,\n 'toggleBlockQuote',\n model => toggleModelBlockQuote(model, fullQuoteFormat),\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { Browser } from 'roosterjs-editor-dom';\nimport { ChangeSource, Keys } from 'roosterjs-editor-types';\nimport { deleteAllSegmentBefore } from '../../modelApi/edit/deleteSteps/deleteAllSegmentBefore';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { DeleteSelectionStep } from '../../modelApi/edit/utils/DeleteSelectionStep';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n handleKeyboardEventResult,\n shouldDeleteAllSegmentsBefore,\n shouldDeleteWord,\n} from '../../editor/utils/handleKeyboardEventCommon';\nimport {\n backwardDeleteWordSelection,\n forwardDeleteWordSelection,\n} from '../../modelApi/edit/deleteSteps/deleteWordSelection';\nimport {\n backwardDeleteCollapsedSelection,\n forwardDeleteCollapsedSelection,\n} from '../../modelApi/edit/deleteSteps/deleteCollapsedSelection';\n\n/**\n * @internal\n * Handle KeyDown event\n * Currently only DELETE and BACKSPACE keys are supported\n */\nexport default function handleKeyDownEvent(editor: IContentModelEditor, rawEvent: KeyboardEvent) {\n const which = rawEvent.which;\n\n formatWithContentModel(\n editor,\n which == Keys.DELETE ? 'handleDeleteKey' : 'handleBackspaceKey',\n (model, context) => {\n const result = deleteSelection(model, getDeleteSteps(rawEvent), context).deleteResult;\n\n return handleKeyboardEventResult(editor, model, rawEvent, result, context);\n },\n {\n rawEvent,\n changeSource: ChangeSource.Keyboard,\n getChangeData: () => which,\n }\n );\n}\n\nfunction getDeleteSteps(rawEvent: KeyboardEvent): (DeleteSelectionStep | null)[] {\n const isForward = rawEvent.which == Keys.DELETE;\n const deleteAllSegmentBeforeStep =\n shouldDeleteAllSegmentsBefore(rawEvent) && !isForward ? deleteAllSegmentBefore : null;\n const deleteWordSelection = shouldDeleteWord(rawEvent, !!Browser.isMac)\n ? isForward\n ? forwardDeleteWordSelection\n : backwardDeleteWordSelection\n : null;\n const deleteCollapsedSelection = isForward\n ? forwardDeleteCollapsedSelection\n : backwardDeleteCollapsedSelection;\n return [deleteAllSegmentBeforeStep, deleteWordSelection, deleteCollapsedSelection];\n}\n","import { ChangeSource, Entity, SelectionRangeEx } from 'roosterjs-editor-types';\nimport { commitEntity, getEntityFromElement } from 'roosterjs-editor-dom';\nimport { createEntity, normalizeContentModel } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { insertEntityModel } from '../../modelApi/entity/insertEntityModel';\nimport {\n InsertEntityOptions,\n InsertEntityPosition,\n} from '../../publicTypes/parameter/InsertEntityOptions';\n\nconst BlockEntityTag = 'div';\nconst InlineEntityTag = 'span';\n\n/**\n * Insert an entity into editor\n * @param editor The Content Model editor\n * @param type Type of entity\n * @param isBlock True to insert a block entity, false to insert an inline entity\n * @param position Position of the entity to insert. It can be\n * Value of InsertEntityPosition: see InsertEntityPosition\n * selectionRangeEx: Use this range instead of current focus position to insert. After insert, focus will be moved to\n * the beginning of this range (when focusAfterEntity is not set to true) or after the new entity (when focusAfterEntity is set to true)\n * @param options Move options to insert. See InsertEntityOptions\n */\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: boolean,\n position: 'focus' | 'begin' | 'end' | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null;\n\n/**\n * Insert a block entity into editor\n * @param editor The Content Model editor\n * @param type Type of entity\n * @param isBlock Must be true for a block entity\n * @param position Position of the entity to insert. It can be\n * Value of InsertEntityPosition: see InsertEntityPosition\n * selectionRangeEx: Use this range instead of current focus position to insert. After insert, focus will be moved to\n * the beginning of this range (when focusAfterEntity is not set to true) or after the new entity (when focusAfterEntity is set to true)\n * @param options Move options to insert. See InsertEntityOptions\n */\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: true,\n position: InsertEntityPosition | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null;\n\nexport default function insertEntity(\n editor: IContentModelEditor,\n type: string,\n isBlock: boolean,\n position?: InsertEntityPosition | SelectionRangeEx,\n options?: InsertEntityOptions\n): Entity | null {\n const { contentNode, focusAfterEntity, wrapperDisplay, skipUndoSnapshot } = options || {};\n const wrapper = editor.getDocument().createElement(isBlock ? BlockEntityTag : InlineEntityTag);\n const display = wrapperDisplay ?? (isBlock ? undefined : 'inline-block');\n\n wrapper.style.setProperty('display', display || null);\n\n if (contentNode) {\n wrapper.appendChild(contentNode);\n }\n\n commitEntity(wrapper, type, true /*isReadonly*/);\n\n const entityModel = createEntity(wrapper, true /*isReadonly*/, type);\n\n formatWithContentModel(\n editor,\n 'insertEntity',\n (model, context) => {\n insertEntityModel(\n model,\n entityModel,\n typeof position == 'string' ? position : 'focus',\n isBlock,\n focusAfterEntity,\n context\n );\n\n normalizeContentModel(model);\n\n context.skipUndoSnapshot = skipUndoSnapshot;\n context.newEntities.push(entityModel);\n\n return true;\n },\n {\n selectionOverride: typeof position === 'object' ? position : undefined,\n }\n );\n\n const newEntity = getEntityFromElement(wrapper);\n\n editor.triggerContentChangedEvent(ChangeSource.InsertEntity, newEntity);\n\n return newEntity;\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { iterateSelections } from '../../modelApi/selection/iterateSelections';\nimport {\n createText,\n normalizeContentModel,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\nconst ANSI_SPACE = '\\u0020';\nconst NON_BREAK_SPACE = '\\u00A0';\n\n/**\n * Apply pending format to the text user just input\n * @param editor The editor to get format from\n * @param data The text user just input\n */\nexport default function applyPendingFormat(editor: IContentModelEditor, data: string) {\n const format = getPendingFormat(editor);\n\n if (format) {\n let isChanged = false;\n\n formatWithContentModel(editor, 'applyPendingFormat', (model, context) => {\n iterateSelections([model], (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const marker = segments[0];\n const index = block.segments.indexOf(marker);\n const previousSegment = block.segments[index - 1];\n\n if (previousSegment?.segmentType == 'Text') {\n const text = previousSegment.text;\n const subStr = text.substr(-data.length, data.length);\n\n // For space, there can be (space) or   ( ), we treat them as the same\n if (subStr == data || (data == ANSI_SPACE && subStr == NON_BREAK_SPACE)) {\n marker.format = { ...format };\n previousSegment.text = text.substring(0, text.length - data.length);\n\n const newText = createText(\n data == ANSI_SPACE ? NON_BREAK_SPACE : data,\n {\n ...previousSegment.format,\n ...format,\n }\n );\n\n block.segments.splice(index, 0, newText);\n setParagraphNotImplicit(block);\n isChanged = true;\n }\n }\n }\n return true;\n });\n\n if (isChanged) {\n normalizeContentModel(model);\n context.skipUndoSnapshot = true;\n }\n\n return isChanged;\n });\n }\n}\n","import { clearModelFormat } from '../../modelApi/common/clearModelFormat';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeContentModel } from 'roosterjs-content-model-dom';\nimport {\n ContentModelBlock,\n ContentModelBlockGroup,\n ContentModelSegment,\n ContentModelTable,\n} from 'roosterjs-content-model-types';\n\n/**\n * Clear format of selection\n * @param editor The editor to clear format from\n */\nexport default function clearFormat(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'clearFormat', model => {\n const blocksToClear: [ContentModelBlockGroup[], ContentModelBlock][] = [];\n const segmentsToClear: ContentModelSegment[] = [];\n const tablesToClear: [ContentModelTable, boolean][] = [];\n\n clearModelFormat(model, blocksToClear, segmentsToClear, tablesToClear);\n\n normalizeContentModel(model);\n\n return blocksToClear.length > 0 || segmentsToClear.length > 0 || tablesToClear.length > 0;\n });\n}\n","import { contains, getTagOfNode } from 'roosterjs-editor-dom';\nimport { ContentModelBlockGroup, DomToModelContext } from 'roosterjs-content-model-types';\nimport { ContentModelFormatState } from '../../publicTypes/format/formatState/ContentModelFormatState';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { getSelectionRootNode } from '../../modelApi/selection/getSelectionRootNode';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { retrieveModelFormatState } from '../../modelApi/common/retrieveModelFormatState';\nimport {\n getRegularSelectionOffsets,\n handleRegularSelection,\n processChildNode,\n} from 'roosterjs-content-model-dom';\n\n/**\n * Get current format state\n * @param editor The editor to get format from\n */\nexport default function getFormatState(editor: IContentModelEditor): ContentModelFormatState {\n const pendingFormat = getPendingFormat(editor);\n const model = editor.createContentModel({\n processorOverride: {\n child: reducedModelChildProcessor,\n },\n });\n const result: ContentModelFormatState = {\n ...editor.getUndoState(),\n isDarkMode: editor.isDarkMode(),\n zoomScale: editor.getZoomScale(),\n };\n\n retrieveModelFormatState(model, pendingFormat, result);\n\n return result;\n}\n\n/**\n * @internal\n */\ninterface FormatStateContext extends DomToModelContext {\n /**\n * An optional stack of parent elements to process. When provided, the child nodes of current parent element will be ignored,\n * but use the top element in this stack instead in childProcessor.\n */\n nodeStack?: Node[];\n}\n\n/**\n * @internal\n * Export for test only\n * In order to get format, we can still use the regular child processor. However, to improve performance, we don't need to create\n * content model for the whole doc, instead we only need to traverse the tree path that can arrive current selected node.\n * This \"reduced\" child processor will first create a node stack that stores DOM node from root to current common ancestor node of selection,\n * then use this stack as a faked DOM tree to create a reduced content model which we can use to retrieve format state\n */\nexport function reducedModelChildProcessor(\n group: ContentModelBlockGroup,\n parent: ParentNode,\n context: FormatStateContext\n) {\n const selectionRootNode = getSelectionRootNode(context.rangeEx);\n\n if (selectionRootNode) {\n if (!context.nodeStack) {\n context.nodeStack = createNodeStack(parent, selectionRootNode);\n }\n\n const stackChild = context.nodeStack.pop();\n\n if (stackChild) {\n const [nodeStartOffset, nodeEndOffset] = getRegularSelectionOffsets(context, parent);\n\n // If selection is not on this node, skip getting node index to save some time since we don't need it here\n const index =\n nodeStartOffset >= 0 || nodeEndOffset >= 0 ? getChildIndex(parent, stackChild) : -1;\n\n if (index >= 0) {\n handleRegularSelection(index, context, group, nodeStartOffset, nodeEndOffset);\n }\n\n processChildNode(group, stackChild, context);\n\n if (index >= 0) {\n handleRegularSelection(index + 1, context, group, nodeStartOffset, nodeEndOffset);\n }\n } else {\n // No child node from node stack, that means we have reached the deepest node of selection.\n // Now we can use default child processor to perform full sub tree scanning for content model,\n // So that all selected node will be included.\n context.defaultElementProcessors.child(group, parent, context);\n }\n }\n}\n\nfunction createNodeStack(root: Node, startNode: Node): Node[] {\n const result: Node[] = [];\n let node: Node | null = startNode;\n\n while (node && contains(root, node)) {\n if (getTagOfNode(node) == 'TABLE') {\n // For table, we can't do a reduced model creation since we need to handle their cells and indexes,\n // so clean up whatever we already have, and just put table into the stack\n result.splice(0, result.length, node);\n } else {\n result.push(node);\n }\n\n node = node.parentNode;\n }\n\n return result;\n}\n\nfunction getChildIndex(parent: ParentNode, stackChild: Node) {\n let index = 0;\n let child = parent.firstChild;\n\n while (child && child != stackChild) {\n index++;\n child = child.nextSibling;\n }\n return index;\n}\n","import { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Adjust selection to make sure select an image if any\n * @return Content Model Image object if an image is select, or null\n */\nexport default function adjustImageSelection(\n editor: IContentModelEditor\n): ContentModelImage | null {\n let image: ContentModelImage | null = null;\n\n formatWithContentModel(editor, 'adjustImageSelection', model =>\n adjustSegmentSelection(\n model,\n target => {\n if (target.isSelected && target.segmentType == 'Image') {\n image = target;\n return true;\n } else {\n return false;\n }\n },\n (target, ref) => target == ref\n )\n );\n\n return image;\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { getMetadata, readFile } from 'roosterjs-editor-dom';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { SelectionRangeTypes } from 'roosterjs-editor-types';\n\n/**\n * Change the selected image src\n * @param editor The editor instance\n * @param file The image file\n */\nexport default function changeImage(editor: IContentModelEditor, file: File) {\n const selection = editor.getSelectionRangeEx();\n readFile(file, dataUrl => {\n if (\n dataUrl &&\n !editor.isDisposed() &&\n selection.type === SelectionRangeTypes.ImageSelection\n ) {\n formatImageWithContentModel(\n editor,\n 'changeImage',\n (image: ContentModelImage) => {\n image.src = dataUrl;\n image.dataset = {};\n image.format.width = '';\n image.format.height = '';\n image.alt = '';\n },\n {\n image: selection.image,\n previousSrc: selection.image.src,\n newSrc: dataUrl,\n originalSrc: getImageSrc(selection.image),\n }\n );\n }\n });\n}\n\nconst getImageSrc = (image: HTMLImageElement) => {\n const obj = getMetadata<{ src: string }>(image);\n return (obj && obj.src) || '';\n};\n","import { addSegment, createContentModelDocument, createImage } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { readFile } from 'roosterjs-editor-dom';\n\n/**\n * Insert an image into current selected position\n * @param editor The editor to operate on\n * @param file Image Blob file or source string\n */\nexport default function insertImage(editor: IContentModelEditor, imageFileOrSrc: File | string) {\n if (typeof imageFileOrSrc == 'string') {\n insertImageWithSrc(editor, imageFileOrSrc);\n } else {\n readFile(imageFileOrSrc, dataUrl => {\n if (dataUrl && !editor.isDisposed()) {\n insertImageWithSrc(editor, dataUrl);\n }\n });\n }\n}\n\nfunction insertImageWithSrc(editor: IContentModelEditor, src: string) {\n formatWithContentModel(editor, 'insertImage', (model, context) => {\n const image = createImage(src, { backgroundColor: '' });\n const doc = createContentModelDocument();\n\n addSegment(doc, image);\n mergeModel(model, doc, context, {\n mergeFormat: 'mergeAll',\n });\n\n return true;\n });\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image alt text for all selected images at selection. If no images is contained\n * in selection, do nothing.\n * @param editor The editor instance\n * @param altText The image alt text\n */\nexport default function setImageAltText(editor: IContentModelEditor, altText: string) {\n formatImageWithContentModel(editor, 'setImageAltText', (image: ContentModelImage) => {\n image.alt = altText;\n });\n}\n","import applyImageBorderFormat from '../../modelApi/image/applyImageBorderFormat';\nimport formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { Border } from '../../publicTypes/interface/Border';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image border style for all selected images at selection.\n * @param editor The editor instance\n * @param border the border format object. Ex: { color: 'red', width: '10px', style: 'solid'}, if one of the value in object is undefined\n * its value will not be changed. Passing null instead of an object will remove the border\n * @param borderRadius the border radius value, if undefined, the border radius will keep the actual value\n */\nexport default function setImageBorder(\n editor: IContentModelEditor,\n border: Border | null,\n borderRadius?: string\n) {\n formatImageWithContentModel(editor, 'setImageBorder', (image: ContentModelImage) => {\n applyImageBorderFormat(image, border, borderRadius);\n });\n}\n","import formatImageWithContentModel from '../utils/formatImageWithContentModel';\nimport { ContentModelImage } from 'roosterjs-content-model-types';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set image box shadow for all selected images at selection.\n * @param editor The editor instance\n * @param boxShadow The image box boxShadow\n * @param margin The image margin for all sides (eg. \"4px\"), null to remove margin\n */\nexport default function setImageBoxShadow(\n editor: IContentModelEditor,\n boxShadow: string,\n margin?: string | null\n) {\n formatImageWithContentModel(editor, 'setImageBoxShadow', (image: ContentModelImage) => {\n image.format.boxShadow = boxShadow;\n if (margin) {\n image.format.marginBottom = margin;\n image.format.marginLeft = margin;\n image.format.marginRight = margin;\n image.format.marginTop = margin;\n } else if (margin === null) {\n delete image.format.marginBottom;\n delete image.format.marginLeft;\n delete image.format.marginRight;\n delete image.format.marginTop;\n }\n });\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { adjustWordSelection } from '../../modelApi/selection/adjustWordSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setSelection } from '../../modelApi/selection/setSelection';\n\n/**\n * Adjust selection to make sure select a hyperlink if any, or a word if original selection is collapsed\n * @return A combination of existing link display text and url if any. If there is no existing link, return selected text and null\n */\nexport default function adjustLinkSelection(editor: IContentModelEditor): [string, string | null] {\n let text = '';\n let url: string | null = null;\n\n formatWithContentModel(editor, 'adjustLinkSelection', model => {\n let changed = adjustSegmentSelection(\n model,\n target => !!target.isSelected && !!target.link,\n (target, ref) => !!target.link && target.link.format.href == ref.link!.format.href\n );\n let segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n const firstSegment = segments[0];\n\n if (segments.length == 1 && firstSegment.segmentType == 'SelectionMarker') {\n segments = adjustWordSelection(model, firstSegment);\n\n if (segments.length > 1) {\n changed = true;\n setSelection(model, segments[0], segments[segments.length - 1]);\n }\n }\n\n text = segments.map(x => (x.segmentType == 'Text' ? x.text : '')).join('');\n url = segments[0]?.link?.format.href || null;\n\n return changed;\n });\n\n return [text, url];\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { ChangeSource } from 'roosterjs-editor-types';\nimport { ContentModelLink } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { HtmlSanitizer, matchLink } from 'roosterjs-editor-dom';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport {\n addLink,\n addSegment,\n createContentModelDocument,\n createText,\n} from 'roosterjs-content-model-dom';\n\n// Regex matching Uri scheme\nconst URI_REGEX = /^[a-zA-Z]+:/i;\n// Regex matching begin of email address\nconst MAILTO_REGEX = /^[\\w.%+-]+@/i;\n// Regex matching begin of ftp, i.e. ftp.microsoft.com\nconst FTP_REGEX = /^ftp\\./i;\n\n/**\n * Insert a hyperlink at cursor.\n * When there is a selection, hyperlink will be applied to the selection,\n * otherwise a hyperlink will be inserted to the cursor position.\n * @param editor Editor object\n * @param link Link address, can be http(s), mailto, notes, file, unc, ftp, news, telnet, gopher, wais.\n * When protocol is not specified, a best matched protocol will be predicted.\n * @param anchorTitle Optional alt text of the link, will be shown when hover on the link\n * @param displayText Optional display text for the link.\n * @param target Optional display target for the link (\"_blank\"|\"_self\"|\"_parent\"|\"_top\"|\"{framename}\")\n * If specified, the display text of link will be replaced with this text.\n * If not specified and there wasn't a link, the link url will be used as display text.\n */\nexport default function insertLink(\n editor: IContentModelEditor,\n link: string,\n anchorTitle?: string,\n displayText?: string,\n target?: string\n) {\n let url = (checkXss(link) || '').trim();\n if (url) {\n const linkData = matchLink(url);\n const link: ContentModelLink = {\n dataset: {},\n format: {\n href: linkData ? linkData.normalizedUrl : applyLinkPrefix(url),\n anchorTitle,\n target,\n underline: true,\n },\n };\n\n const links: ContentModelLink[] = [];\n let anchorNode: Node | undefined;\n\n formatWithContentModel(\n editor,\n 'insertLink',\n (model, context) => {\n const segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n const originalText = segments\n .map(x => (x.segmentType == 'Text' ? x.text : ''))\n .join('');\n const text = displayText || originalText || '';\n\n if (\n segments.some(x => x.segmentType != 'SelectionMarker') &&\n originalText == text\n ) {\n segments.forEach(x => {\n addLink(x, link);\n\n if (x.link) {\n links.push(x.link);\n }\n });\n } else if (\n segments.every(x => x.segmentType == 'SelectionMarker') ||\n (!!text && text != originalText)\n ) {\n const segment = createText(text || (linkData ? linkData.originalUrl : url), {\n ...(segments[0]?.format || {}),\n ...(getPendingFormat(editor) || {}),\n });\n const doc = createContentModelDocument();\n\n addLink(segment, link);\n addSegment(doc, segment);\n\n if (segment.link) {\n links.push(segment.link);\n }\n\n mergeModel(model, doc, context, {\n mergeFormat: 'mergeAll',\n });\n }\n\n return segments.length > 0;\n },\n {\n changeSource: ChangeSource.CreateLink,\n onNodeCreated: (modelElement, node) => {\n if (!anchorNode && links.indexOf(modelElement as ContentModelLink) >= 0) {\n anchorNode = node;\n }\n },\n getChangeData: () => anchorNode,\n }\n );\n }\n}\n\n// TODO: This is copied from original code. We may need to integrate this logic into matchLink() later.\nfunction applyLinkPrefix(url: string): string {\n if (!url) {\n return url;\n }\n\n // Add link prefix per rule:\n // (a) if the url always starts with a URI scheme, leave it as it is\n // (b) if the url is an email address, xxx@... add mailto: prefix\n // (c) if the url starts with ftp., add ftp:// prefix\n // (d) rest, add http:// prefix\n let prefix = '';\n if (url.search(URI_REGEX) < 0) {\n if (url.search(MAILTO_REGEX) == 0) {\n prefix = 'mailto:';\n } else if (url.search(FTP_REGEX) == 0) {\n prefix = 'ftp://';\n } else {\n // fallback to http://\n prefix = 'http://';\n }\n }\n\n return prefix + url;\n}\n\n// TODO: This is copied from original code. However, ContentModel should be able to filter out malicious\n// attributes later, so no need to use HtmlSanitizer here\nfunction checkXss(link: string): string {\n const sanitizer = new HtmlSanitizer();\n const a = document.createElement('a');\n\n a.href = link || '';\n\n sanitizer.sanitize(a);\n // We use getAttribute because some browsers will try to make the href property a valid link.\n // This has unintended side effects when the link lacks a protocol.\n return a.getAttribute('href') || '';\n}\n","import getSelectedSegments from '../selection/getSelectedSegments';\nimport { adjustSegmentSelection } from '../../modelApi/selection/adjustSegmentSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Remove link at selection. If no links at selection, do nothing.\n * If selection contains multiple links, all of the link styles will be removed.\n * If only part of a link is selected, the whole link style will be removed.\n * @param editor The editor instance\n */\nexport default function removeLink(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'removeLink', model => {\n adjustSegmentSelection(\n model,\n target => !!target.isSelected && !!target.link,\n (target, ref) =>\n target.isSelected || // Expand the selection to any link that is involved. So we can remove multiple links together\n (!!target.link && target.link.format.href == ref.link!.format.href)\n );\n\n const segments = getSelectedSegments(model, false /*includingFormatHolder*/);\n let isChanged = false;\n\n segments.forEach(segment => {\n if (segment.link) {\n isChanged = true;\n\n delete segment.link;\n }\n });\n\n return isChanged;\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedListItem } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set start number of a list item\n * @param editor The editor to operate on\n * @param value The number to set to, must be equal or greater than 1\n */\nexport default function setListStartNumber(editor: IContentModelEditor, value: number) {\n formatWithContentModel(editor, 'setListStartNumber', model => {\n const listItem = getFirstSelectedListItem(model);\n const level = listItem?.levels[listItem?.levels.length - 1];\n\n if (level) {\n level.format.startNumberOverride = value;\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { findListItemsInSameThread } from '../../modelApi/list/findListItemsInSameThread';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedListItem } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\nimport { updateListMetadata } from 'roosterjs-content-model-dom';\n\n/**\n * Set style of list items with in same thread of current item\n * @param editor The editor to operate on\n * @param style The target list item style to set\n */\nexport default function setListStyle(editor: IContentModelEditor, style: ListMetadataFormat) {\n formatWithContentModel(editor, 'setListStyle', model => {\n const listItem = getFirstSelectedListItem(model);\n\n if (listItem) {\n const listItems = findListItemsInSameThread(model, listItem);\n const levelIndex = listItem.levels.length - 1;\n\n listItems.forEach(listItem => {\n const level = listItem.levels[levelIndex];\n\n if (level) {\n updateListMetadata(level, metadata => Object.assign({}, metadata, style));\n }\n });\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setListType } from '../../modelApi/list/setListType';\n\n/**\n * Toggle bullet list type\n * - When there are some blocks not in bullet list, set all blocks to the given type\n * - When all blocks are already in bullet list, turn off / outdent there list type\n * @param editor The editor to operate on\n */\nexport default function toggleBullet(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'toggleBullet', model => setListType(model, 'UL'), {\n preservePendingFormat: true,\n });\n}\n","import { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setListType } from '../../modelApi/list/setListType';\n\n/**\n * Toggle numbering list type\n * - When there are some blocks not in numbering list, set all blocks to the given type\n * - When all blocks are already in numbering list, turn off / outdent there list type\n * @param editor The editor to operate on\n */\nexport default function toggleNumbering(editor: IContentModelEditor) {\n formatWithContentModel(editor, 'toggleNumbering', model => setListType(model, 'OL'), {\n preservePendingFormat: true,\n });\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Bulk apply segment format to all selected content. This is usually used for format painter.\n * @param editor The editor to operate on\n * @param newFormat The segment format to apply\n */\nexport default function applySegmentFormat(\n editor: IContentModelEditor,\n newFormat: ContentModelSegmentFormat\n) {\n formatSegmentWithContentModel(\n editor,\n 'applySegmentFormat',\n format => {\n format.backgroundColor = newFormat.backgroundColor;\n format.fontFamily = newFormat.fontFamily;\n format.fontSize = newFormat.fontSize;\n format.fontWeight = newFormat.fontWeight;\n format.italic = newFormat.italic;\n format.strikethrough = newFormat.strikethrough;\n format.superOrSubScriptSequence = newFormat.superOrSubScriptSequence;\n format.textColor = newFormat.textColor;\n format.underline = newFormat.underline;\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Change the capitalization of text in the selection\n * @param editor The editor instance\n * @param capitalization The case option\n * @param language Optional parameter for language string that should comply to \"IETF BCP 47 Tags for\n * Identifying Languages\". For example: 'en' or 'en-US' for English, 'tr' for Turkish.\n * Default is the host environment’s current locale.\n */\nexport default function changeCapitalization(\n editor: IContentModelEditor,\n capitalization: 'sentence' | 'lowerCase' | 'upperCase' | 'capitalize',\n language?: string\n) {\n formatSegmentWithContentModel(editor, 'changeCapitalization', (_, __, segment) => {\n if (segment?.segmentType == 'Text') {\n switch (capitalization) {\n case 'lowerCase':\n segment.text = segment.text.toLocaleLowerCase(language);\n break;\n\n case 'upperCase':\n segment.text = segment.text.toLocaleUpperCase(language);\n break;\n\n case 'capitalize':\n const wordArray = segment.text.toLocaleLowerCase(language).split(' ');\n\n for (let i = 0; i < wordArray.length; i++) {\n wordArray[i] =\n wordArray[i].charAt(0).toLocaleUpperCase(language) +\n wordArray[i].slice(1);\n }\n\n segment.text = wordArray.join(' ');\n break;\n\n case 'sentence':\n // TODO: Add rules on punctuation for internationalization - TASK 104769\n const punctuationMarks = '[\\\\.\\\\!\\\\?]';\n // Find a match of a word character either:\n // - At the beginning of a string with or without preceding whitespace, for\n // example: ' hello world' and 'hello world' strings would both match 'h'.\n // - Or preceded by a punctuation mark and at least one whitespace, for\n // example 'yes. hello world' would match 'y' and 'h'.\n const regex = new RegExp('^\\\\s*\\\\w|' + punctuationMarks + '\\\\s+\\\\w', 'g');\n\n segment.text = segment.text\n .toLocaleLowerCase(language)\n .replace(regex, match => match.toLocaleUpperCase(language));\n break;\n }\n }\n });\n}\n","import { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { parseValueWithUnit } from 'roosterjs-content-model-dom';\n\n/**\n * Default font size sequence, in pt. Suggest editor UI use this sequence as your font size list,\n * So that when increase/decrease font size, the font size can match the sequence of your font size picker\n */\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\nconst MIN_FONT_SIZE = 1;\nconst MAX_FONT_SIZE = 1000;\n\n/**\n * Increase or decrease font size in selection\n * @param editor The editor instance\n * @param change Whether increase or decrease font size\n * @param fontSizes A sorted font size array, in pt. Default value is FONT_SIZES\n */\nexport default function changeFontSize(\n editor: IContentModelEditor,\n change: 'increase' | 'decrease'\n) {\n formatSegmentWithContentModel(\n editor,\n 'changeFontSize',\n format => changeFontSizeInternal(format, change),\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n\nfunction changeFontSizeInternal(\n format: ContentModelSegmentFormat,\n change: 'increase' | 'decrease'\n) {\n if (format.fontSize) {\n let sizeInPt = parseValueWithUnit(format.fontSize, undefined /*element*/, 'pt');\n\n if (sizeInPt > 0) {\n const newSize = getNewFontSize(sizeInPt, change == 'increase' ? 1 : -1, FONT_SIZES);\n\n format.fontSize = newSize + 'pt';\n }\n }\n}\n\nfunction getNewFontSize(pt: number, changeBase: 1 | -1, fontSizes: number[]): number {\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\n let last = fontSizes[fontSizes.length - 1];\n if (pt <= fontSizes[0]) {\n pt = Math.max(pt + changeBase, MIN_FONT_SIZE);\n } else if (pt > last || (pt == last && changeBase == 1)) {\n pt = pt / 10;\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\n pt = Math.min(Math.max((pt + changeBase) * 10, last), MAX_FONT_SIZE);\n } else if (changeBase == 1) {\n for (let i = 0; i < fontSizes.length; i++) {\n if (pt < fontSizes[i]) {\n pt = fontSizes[i];\n break;\n }\n }\n } else {\n for (let i = fontSizes.length - 1; i >= 0; i--) {\n if (pt > fontSizes[i]) {\n pt = fontSizes[i];\n break;\n }\n }\n }\n return pt;\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { setSelection } from '../../modelApi/selection/setSelection';\n\n/**\n * Set background color\n * @param editor The editor to operate on\n * @param backgroundColor The color to set. Pass null to remove existing color.\n */\nexport default function setBackgroundColor(\n editor: IContentModelEditor,\n backgroundColor: string | null\n) {\n let lastParagraph: ContentModelParagraph | null = null;\n let lastSegmentIndex: number = -1;\n\n formatSegmentWithContentModel(\n editor,\n 'setBackgroundColor',\n (format, _, segment, paragraph) => {\n if (backgroundColor === null) {\n delete format.backgroundColor;\n } else {\n format.backgroundColor = backgroundColor;\n }\n\n if (segment && paragraph && segment.segmentType != 'SelectionMarker') {\n lastParagraph = paragraph;\n lastSegmentIndex = lastParagraph.segments.indexOf(segment);\n }\n },\n undefined /*segmentHasStyleCallback*/,\n undefined /*includingFormatHolder*/,\n model => {\n if (lastParagraph && lastSegmentIndex >= 0) {\n const marker = createSelectionMarker(\n lastParagraph.segments[lastSegmentIndex]?.format\n );\n\n lastParagraph.segments.splice(lastSegmentIndex + 1, 0, marker);\n setSelection(model, marker, marker);\n }\n }\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set font name\n * @param editor The editor to operate on\n * @param fontName The font name to set\n */\nexport default function setFontName(editor: IContentModelEditor, fontName: string) {\n formatSegmentWithContentModel(\n editor,\n 'setFontName',\n (format, _, segment) => {\n format.fontFamily = fontName;\n\n if (segment?.code) {\n segment.code.format.fontFamily = fontName;\n }\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set font size\n * @param editor The editor to operate on\n * @param fontSize The font size to set\n */\nexport default function setFontSize(editor: IContentModelEditor, fontSize: string) {\n formatSegmentWithContentModel(\n editor,\n 'setFontSize',\n format => {\n format.fontSize = fontSize;\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Set text color\n * @param editor The editor to operate on\n * @param textColor The text color to set. Pass null to remove existing color.\n */\nexport default function setTextColor(editor: IContentModelEditor, textColor: string | null) {\n formatSegmentWithContentModel(\n editor,\n 'setTextColor',\n textColor === null\n ? (format, _, segment) => {\n delete format.textColor;\n\n if (segment?.link) {\n delete segment.link.format.textColor;\n }\n }\n : (format, _, segment) => {\n format.textColor = textColor;\n\n if (segment?.link) {\n segment.link.format.textColor = textColor;\n }\n },\n undefined /* segmentHasStyleCallback*/,\n true /*includingFormatHandler*/\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle bold style\n * @param editor The editor to operate on\n */\nexport default function toggleBold(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleBold',\n (format, isTurningOn) => {\n format.fontWeight = isTurningOn ? 'bold' : 'normal';\n },\n (format, _, paragraph) =>\n isBold(\n typeof format.fontWeight == 'undefined'\n ? paragraph?.decorator?.format.fontWeight\n : format.fontWeight\n )\n );\n}\n\n/**\n * @internal\n */\nexport function isBold(boldStyle?: string): boolean {\n return (\n !!boldStyle && (boldStyle == 'bold' || boldStyle == 'bolder' || parseInt(boldStyle) >= 600)\n );\n}\n","import { addCode } from 'roosterjs-content-model-dom';\nimport { ContentModelCode } from 'roosterjs-content-model-types';\nimport { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\nconst DefaultCode: ContentModelCode = {\n format: {\n fontFamily: 'monospace',\n },\n};\n\n/**\n * Toggle italic style\n * @param editor The editor to operate on\n */\nexport default function toggleCode(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleCode',\n (_, isTurningOn, segment) => {\n if (segment) {\n if (isTurningOn) {\n addCode(segment, DefaultCode);\n } else {\n delete segment.code;\n }\n }\n },\n (_, segment) => !!segment?.code\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle italic style\n * @param editor The editor to operate on\n */\nexport default function toggleItalic(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleItalic',\n (format, isTurningOn) => {\n format.italic = !!isTurningOn;\n },\n format => !!format.italic\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle strikethrough style\n * @param editor The editor to operate on\n */\nexport default function toggleStrikethrough(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleStrikethrough',\n (format, isTurningOn) => {\n format.strikethrough = !!isTurningOn;\n },\n format => !!format.strikethrough\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle subscript style\n * @param editor The editor to operate on\n */\nexport default function toggleSubscript(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleSubscript',\n (format, isTurningOn) => {\n format.superOrSubScriptSequence = isTurningOn ? 'sub' : '';\n },\n format => format.superOrSubScriptSequence?.split(' ').pop() == 'sub'\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle superscript style\n * @param editor The editor to operate on\n */\nexport default function toggleSuperscript(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleSuperscript',\n (format, isTurningOn) => {\n format.superOrSubScriptSequence = isTurningOn ? 'super' : '';\n },\n format => format.superOrSubScriptSequence?.split(' ').pop() == 'super'\n );\n}\n","import { formatSegmentWithContentModel } from '../utils/formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * Toggle underline style\n * @param editor The editor to operate on\n */\nexport default function toggleUnderline(editor: IContentModelEditor) {\n formatSegmentWithContentModel(\n editor,\n 'toggleUnderline',\n (format, isTurningOn, segment) => {\n format.underline = !!isTurningOn;\n\n if (segment?.link) {\n segment.link.format.underline = !!isTurningOn;\n }\n },\n (format, segment) => !!format.underline || !!segment?.link?.format?.underline\n );\n}\n","import { ContentModelDocument, ContentModelSegment } from 'roosterjs-content-model-types';\nimport { getSelectedSegmentsAndParagraphs } from '../../modelApi/selection/collectSelections';\n\n/**\n * Get selected segments from a content model\n */\nexport default function getSelectedSegments(\n model: ContentModelDocument,\n includingFormatHolder: boolean\n): ContentModelSegment[] {\n return getSelectedSegmentsAndParagraphs(model, includingFormatHolder).map(x => x[0]);\n}\n","import hasSelectionInBlockGroup from './hasSelectionInBlockGroup';\nimport hasSelectionInSegment from './hasSelectionInSegment';\nimport { ContentModelBlock } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given block\n * @param block The block to check\n */\nexport default function hasSelectionInBlock(block: ContentModelBlock): boolean {\n switch (block.blockType) {\n case 'Paragraph':\n return block.segments.some(hasSelectionInSegment);\n\n case 'Table':\n return block.rows.some(row => row.cells.some(hasSelectionInBlockGroup));\n\n case 'BlockGroup':\n return hasSelectionInBlockGroup(block);\n\n case 'Divider':\n case 'Entity':\n return !!block.isSelected;\n\n default:\n return false;\n }\n}\n","import hasSelectionInBlock from './hasSelectionInBlock';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given block\n * @param block The block to check\n */\nexport default function hasSelectionInBlockGroup(group: ContentModelBlockGroup): boolean {\n if (group.blockGroupType == 'TableCell' && group.isSelected) {\n return true;\n }\n\n if (group.blocks.some(hasSelectionInBlock)) {\n return true;\n }\n\n return false;\n}\n","import hasSelectionInBlock from './hasSelectionInBlock';\nimport { ContentModelSegment } from 'roosterjs-content-model-types';\n\n/**\n * Check if there is selection within the given segment\n * @param segment The segment to check\n */\nexport default function hasSelectionInSegment(segment: ContentModelSegment): boolean {\n return (\n segment.isSelected ||\n (segment.segmentType == 'General' && segment.blocks.some(hasSelectionInBlock))\n );\n}\n","import hasSelectionInBlock from '../selection/hasSelectionInBlock';\nimport { alignTable } from '../../modelApi/table/alignTable';\nimport { alignTableCell } from '../../modelApi/table/alignTableCell';\nimport { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { deleteTable } from '../../modelApi/table/deleteTable';\nimport { deleteTableColumn } from '../../modelApi/table/deleteTableColumn';\nimport { deleteTableRow } from '../../modelApi/table/deleteTableRow';\nimport { ensureFocusableParagraphForTable } from '../../modelApi/table/ensureFocusableParagraphForTable';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { insertTableColumn } from '../../modelApi/table/insertTableColumn';\nimport { insertTableRow } from '../../modelApi/table/insertTableRow';\nimport { mergeTableCells } from '../../modelApi/table/mergeTableCells';\nimport { mergeTableColumn } from '../../modelApi/table/mergeTableColumn';\nimport { mergeTableRow } from '../../modelApi/table/mergeTableRow';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setSelection } from '../../modelApi/selection/setSelection';\nimport { splitTableCellHorizontally } from '../../modelApi/table/splitTableCellHorizontally';\nimport { splitTableCellVertically } from '../../modelApi/table/splitTableCellVertically';\nimport { TableOperation } from 'roosterjs-editor-types';\nimport {\n createSelectionMarker,\n hasMetadata,\n setParagraphNotImplicit,\n} from 'roosterjs-content-model-dom';\n\n/**\n * Format current focused table with the given format\n * @param editor The editor instance\n * @param operation The table operation to apply\n */\nexport default function editTable(editor: IContentModelEditor, operation: TableOperation) {\n formatWithContentModel(editor, 'editTable', model => {\n const [tableModel, path] = getFirstSelectedTable(model);\n\n if (tableModel) {\n switch (operation) {\n case TableOperation.AlignCellLeft:\n case TableOperation.AlignCellCenter:\n case TableOperation.AlignCellRight:\n alignTableCell(tableModel, operation);\n break;\n case TableOperation.AlignCellTop:\n case TableOperation.AlignCellMiddle:\n case TableOperation.AlignCellBottom:\n alignTableCell(tableModel, operation);\n break;\n case TableOperation.AlignCenter:\n case TableOperation.AlignLeft:\n case TableOperation.AlignRight:\n alignTable(tableModel, operation);\n break;\n\n case TableOperation.DeleteColumn:\n deleteTableColumn(tableModel);\n break;\n\n case TableOperation.DeleteRow:\n deleteTableRow(tableModel);\n break;\n\n case TableOperation.DeleteTable:\n deleteTable(tableModel);\n break;\n\n case TableOperation.InsertAbove:\n case TableOperation.InsertBelow:\n insertTableRow(tableModel, operation);\n break;\n\n case TableOperation.InsertLeft:\n case TableOperation.InsertRight:\n insertTableColumn(tableModel, operation);\n break;\n\n case TableOperation.MergeAbove:\n case TableOperation.MergeBelow:\n mergeTableRow(tableModel, operation);\n break;\n\n case TableOperation.MergeCells:\n mergeTableCells(tableModel);\n break;\n\n case TableOperation.MergeLeft:\n case TableOperation.MergeRight:\n mergeTableColumn(tableModel, operation);\n break;\n\n case TableOperation.SplitHorizontally:\n splitTableCellHorizontally(tableModel);\n break;\n\n case TableOperation.SplitVertically:\n splitTableCellVertically(tableModel);\n break;\n }\n\n if (!hasSelectionInBlock(tableModel)) {\n const paragraph = ensureFocusableParagraphForTable(model, path, tableModel);\n\n if (paragraph) {\n const marker = createSelectionMarker(model.format);\n\n paragraph.segments.unshift(marker);\n setParagraphNotImplicit(paragraph);\n setSelection(model, marker);\n }\n }\n\n normalizeTable(tableModel);\n\n if (hasMetadata(tableModel)) {\n applyTableFormat(tableModel, undefined /*newFormat*/, true /*keepCellShade*/);\n }\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * Format current focused table with the given format\n * @param editor The editor instance\n * @param format The table format to apply\n * @param keepCellShade Whether keep existing shade color when apply format if there is a manually set shade color\n */\nexport default function formatTable(\n editor: IContentModelEditor,\n format: TableMetadataFormat,\n keepCellShade?: boolean\n) {\n formatWithContentModel(editor, 'formatTable', model => {\n const [tableModel] = getFirstSelectedTable(model);\n\n if (tableModel) {\n applyTableFormat(tableModel, format, keepCellShade);\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { applyTableFormat } from '../../modelApi/table/applyTableFormat';\nimport { createContentModelDocument, createSelectionMarker } from 'roosterjs-content-model-dom';\nimport { createTableStructure } from '../../modelApi/table/createTableStructure';\nimport { deleteSelection } from '../../modelApi/edit/deleteSelection';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setSelection } from '../../modelApi/selection/setSelection';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\n/**\n * Insert table into editor at current selection\n * @param editor The editor instance\n * @param columns Number of columns in table, it also controls the default table cell width:\n * if columns <= 4, width = 120px; if columns <= 6, width = 100px; else width = 70px\n * @param rows Number of rows in table\n * @param format (Optional) The table format. If not passed, the default format will be applied:\n * background color: #FFF; border color: #ABABAB\n */\nexport default function insertTable(\n editor: IContentModelEditor,\n columns: number,\n rows: number,\n format?: Partial\n) {\n formatWithContentModel(editor, 'insertTable', (model, context) => {\n const insertPosition = deleteSelection(model, [], context).insertPoint;\n\n if (insertPosition) {\n const doc = createContentModelDocument();\n const table = createTableStructure(doc, columns, rows);\n\n normalizeTable(table, getPendingFormat(editor) || insertPosition.marker.format);\n // Assign default vertical align\n format = format || { verticalAlign: 'top' };\n applyTableFormat(table, format);\n mergeModel(model, doc, context, {\n insertPosition,\n mergeFormat: 'mergeAll',\n });\n\n const firstBlock = table.rows[0]?.cells[0]?.blocks[0];\n\n if (firstBlock?.blockType == 'Paragraph') {\n const marker = createSelectionMarker(firstBlock.segments[0]?.format);\n firstBlock.segments.unshift(marker);\n setSelection(model, marker);\n }\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import hasSelectionInBlockGroup from '../selection/hasSelectionInBlockGroup';\nimport { formatWithContentModel } from '../utils/formatWithContentModel';\nimport { getFirstSelectedTable } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { normalizeTable } from '../../modelApi/table/normalizeTable';\nimport { setTableCellBackgroundColor } from '../../modelApi/table/setTableCellBackgroundColor';\n\n/**\n * Set table cell shade color\n * @param editor The editor instance\n * @param color The color to set. Pass null to remove existing shade color\n */\nexport default function setTableCellShade(editor: IContentModelEditor, color: string | null) {\n formatWithContentModel(editor, 'setTableCellShade', model => {\n const [table] = getFirstSelectedTable(model);\n\n if (table) {\n normalizeTable(table);\n\n table.rows.forEach(row =>\n row.cells.forEach(cell => {\n if (hasSelectionInBlockGroup(cell)) {\n setTableCellBackgroundColor(cell, color, true /*isColorOverride*/);\n }\n })\n );\n\n return true;\n } else {\n return false;\n }\n });\n}\n","import { ContentModelImage } from 'roosterjs-content-model-types';\nimport { EditImageEventData, PluginEventType } from 'roosterjs-editor-types';\nimport { formatSegmentWithContentModel } from './formatSegmentWithContentModel';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * @internal\n */\nexport default function formatImageWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n callback: (segment: ContentModelImage) => void,\n eventChangeData?: EditImageEventData\n) {\n formatSegmentWithContentModel(\n editor,\n apiName,\n (_, __, segment) => {\n if (segment?.segmentType == 'Image') {\n callback(segment);\n if (eventChangeData) {\n editor.triggerPluginEvent(PluginEventType.EditImage, eventChangeData);\n }\n }\n },\n undefined /** segmentHasStyleCallback **/,\n undefined /** includingFormatHolder */\n );\n}\n","import { ContentModelParagraph } from 'roosterjs-content-model-types';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { getSelectedParagraphs } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\n\n/**\n * @internal\n */\nexport function formatParagraphWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n setStyleCallback: (paragraph: ContentModelParagraph) => void\n) {\n formatWithContentModel(\n editor,\n apiName,\n model => {\n const paragraphs = getSelectedParagraphs(model);\n\n paragraphs.forEach(setStyleCallback);\n\n return paragraphs.length > 0;\n },\n {\n preservePendingFormat: true,\n }\n );\n}\n","import { adjustWordSelection } from '../../modelApi/selection/adjustWordSelection';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { getSelectedSegmentsAndParagraphs } from '../../modelApi/selection/collectSelections';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelDocument,\n ContentModelParagraph,\n ContentModelSegment,\n ContentModelSegmentFormat,\n} from 'roosterjs-content-model-types';\n/**\n * @internal\n */\nexport function formatSegmentWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n toggleStyleCallback: (\n format: ContentModelSegmentFormat,\n isTuringOn: boolean,\n segment: ContentModelSegment | null,\n paragraph: ContentModelParagraph | null\n ) => void,\n segmentHasStyleCallback?: (\n format: ContentModelSegmentFormat,\n segment: ContentModelSegment | null,\n paragraph: ContentModelParagraph | null\n ) => boolean,\n includingFormatHolder?: boolean,\n afterFormatCallback?: (model: ContentModelDocument) => void\n) {\n formatWithContentModel(editor, apiName, model => {\n let segmentAndParagraphs = getSelectedSegmentsAndParagraphs(model, !!includingFormatHolder);\n const pendingFormat = getPendingFormat(editor);\n let isCollapsedSelection =\n segmentAndParagraphs.length == 1 &&\n segmentAndParagraphs[0][0].segmentType == 'SelectionMarker';\n\n if (isCollapsedSelection) {\n const para = segmentAndParagraphs[0][1];\n\n segmentAndParagraphs = adjustWordSelection(model, segmentAndParagraphs[0][0]).map(x => [\n x,\n para,\n ]);\n\n if (segmentAndParagraphs.length > 1) {\n isCollapsedSelection = false;\n }\n }\n\n const formatsAndSegments: [\n ContentModelSegmentFormat,\n ContentModelSegment | null,\n ContentModelParagraph | null\n ][] = pendingFormat\n ? [[pendingFormat, null, null]]\n : segmentAndParagraphs.map(item => [item[0].format, item[0], item[1]]);\n\n const isTurningOff = segmentHasStyleCallback\n ? formatsAndSegments.every(([format, segment, paragraph]) =>\n segmentHasStyleCallback(format, segment, paragraph)\n )\n : false;\n\n formatsAndSegments.forEach(([format, segment, paragraph]) =>\n toggleStyleCallback(format, !isTurningOff, segment, paragraph)\n );\n\n afterFormatCallback?.(model);\n\n if (!pendingFormat && isCollapsedSelection) {\n const pos = editor.getFocusedPosition();\n\n if (pos) {\n setPendingFormat(editor, segmentAndParagraphs[0][0].format, pos);\n }\n }\n\n if (isCollapsedSelection) {\n editor.focus();\n return false;\n } else {\n return formatsAndSegments.length > 0;\n }\n });\n}\n","import { ChangeSource, PluginEventType } from 'roosterjs-editor-types';\nimport { getPendingFormat, setPendingFormat } from '../../modelApi/format/pendingFormat';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport {\n ContentModelFormatter,\n FormatWithContentModelContext,\n FormatWithContentModelOptions,\n} from '../../publicTypes/parameter/FormatWithContentModelContext';\n\n/**\n * The general API to do format change with Content Model\n * It will grab a Content Model for current editor content, and invoke a callback function\n * to do format change. Then according to the return value, write back the modified content model into editor.\n * If there is cached model, it will be used and updated.\n * @param editor Content Model editor\n * @param apiName Name of the format API\n * @param formatter Formatter function, see ContentModelFormatter\n * @param options More options, see FormatWithContentModelOptions\n */\nexport function formatWithContentModel(\n editor: IContentModelEditor,\n apiName: string,\n formatter: ContentModelFormatter,\n options?: FormatWithContentModelOptions\n) {\n const {\n onNodeCreated,\n preservePendingFormat,\n getChangeData,\n changeSource,\n rawEvent,\n selectionOverride,\n } = options || {};\n\n editor.focus();\n\n const model = editor.createContentModel(undefined /*option*/, selectionOverride);\n const context: FormatWithContentModelContext = {\n newEntities: [],\n deletedEntities: [],\n rawEvent,\n };\n\n if (formatter(model, context)) {\n const callback = () => {\n handleNewEntities(editor, context);\n handleDeletedEntities(editor, context);\n\n if (model) {\n editor.setContentModel(model, { onNodeCreated });\n }\n\n if (preservePendingFormat) {\n const pendingFormat = getPendingFormat(editor);\n const pos = editor.getFocusedPosition();\n\n if (pendingFormat && pos) {\n setPendingFormat(editor, pendingFormat, pos);\n }\n }\n\n return getChangeData?.();\n };\n\n if (context.skipUndoSnapshot) {\n const contentChangedEventData = callback();\n\n if (changeSource) {\n editor.triggerContentChangedEvent(changeSource, contentChangedEventData);\n }\n } else {\n editor.addUndoSnapshot(\n callback,\n changeSource || ChangeSource.Format,\n false /*canUndoByBackspace*/,\n {\n formatApiName: apiName,\n }\n );\n }\n\n editor.cacheContentModel?.(model);\n }\n}\n\nfunction handleNewEntities(editor: IContentModelEditor, context: FormatWithContentModelContext) {\n // TODO: Ideally we can trigger NewEntity event here. But to be compatible with original editor code, we don't do it here for now.\n // Once Content Model Editor can be standalone, we can change this behavior to move triggering NewEntity event code\n // from EntityPlugin to here\n\n if (editor.isDarkMode()) {\n context.newEntities.forEach(entity => {\n editor.transformToDarkColor(entity.wrapper);\n });\n }\n}\n\nfunction handleDeletedEntities(\n editor: IContentModelEditor,\n context: FormatWithContentModelContext\n) {\n context.deletedEntities.forEach(({ entity, operation }) => {\n if (entity.id && entity.type) {\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n entity: {\n id: entity.id,\n isReadonly: entity.isReadonly,\n type: entity.type,\n wrapper: entity.wrapper,\n },\n operation,\n rawEvent: context.rawEvent,\n });\n }\n });\n}\n","import { domToContentModel } from 'roosterjs-content-model-dom';\nimport { formatWithContentModel } from './formatWithContentModel';\nimport { FormatWithContentModelContext } from '../../publicTypes/parameter/FormatWithContentModelContext';\nimport { IContentModelEditor } from '../../publicTypes/IContentModelEditor';\nimport { mergeModel } from '../../modelApi/common/mergeModel';\nimport { NodePosition } from 'roosterjs-editor-types';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport ContentModelBeforePasteEvent, {\n ContentModelBeforePasteEventData,\n} from '../../publicTypes/event/ContentModelBeforePasteEvent';\nimport {\n createDefaultHtmlSanitizerOptions,\n getPasteType,\n handleImagePaste,\n handleTextPaste,\n moveChildNodes,\n retrieveMetadataFromClipboard,\n sanitizePasteContent,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ClipboardData,\n GetContentMode,\n PasteType,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * Paste into editor using a clipboardData object\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param pasteAsText Force pasting as plain text. Default value is false\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format. Default value is false. When pasteAsText is true, this parameter is ignored\n * @param pasteAsImage: When set to true, if the clipboardData contains a imageDataUri will paste the image to the editor\n */\nexport default function paste(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n pasteAsText: boolean = false,\n applyCurrentFormat: boolean = false,\n pasteAsImage: boolean = false\n) {\n if (clipboardData.snapshotBeforePaste) {\n // Restore original content before paste a new one\n editor.setContent(clipboardData.snapshotBeforePaste);\n } else {\n clipboardData.snapshotBeforePaste = editor.getContent(GetContentMode.RawHTMLWithSelection);\n }\n\n const eventData = createBeforePasteEventData(\n editor,\n clipboardData,\n getPasteType(pasteAsText, applyCurrentFormat, pasteAsImage)\n );\n\n const {\n domToModelOption,\n fragment,\n customizedMerge,\n } = triggerPluginEventAndCreatePasteFragment(\n editor,\n clipboardData,\n null /* position */,\n pasteAsText,\n pasteAsImage,\n eventData\n );\n\n const pasteModel = domToContentModel(fragment, domToModelOption);\n\n if (pasteModel) {\n formatWithContentModel(\n editor,\n 'Paste',\n (model, context) =>\n mergePasteContent(model, context, pasteModel, applyCurrentFormat, customizedMerge),\n {\n changeSource: ChangeSource.Paste,\n getChangeData: () => clipboardData,\n }\n );\n }\n}\n\n/**\n * @internal\n * Export only for unit test\n */\nexport function mergePasteContent(\n model: ContentModelDocument,\n context: FormatWithContentModelContext,\n pasteModel: ContentModelDocument,\n applyCurrentFormat: boolean,\n customizedMerge:\n | undefined\n | ((source: ContentModelDocument, target: ContentModelDocument) => void)\n): boolean {\n if (customizedMerge) {\n customizedMerge(model, pasteModel);\n } else {\n mergeModel(model, pasteModel, context, {\n mergeFormat: applyCurrentFormat ? 'keepSourceEmphasisFormat' : 'none',\n mergeTable: shouldMergeTable(pasteModel),\n });\n }\n return true;\n}\n\nfunction shouldMergeTable(pasteModel: ContentModelDocument): boolean | undefined {\n // If model contains a table and a paragraph element after the table with a single BR segment, remove the Paragraph after the table\n if (\n pasteModel.blocks.length == 2 &&\n pasteModel.blocks[0].blockType === 'Table' &&\n pasteModel.blocks[1].blockType === 'Paragraph' &&\n pasteModel.blocks[1].segments.length === 1 &&\n pasteModel.blocks[1].segments[0].segmentType === 'Br'\n ) {\n pasteModel.blocks.splice(1);\n }\n // Only merge table when the document contain a single table.\n return pasteModel.blocks.length === 1 && pasteModel.blocks[0].blockType === 'Table';\n}\n\nfunction createBeforePasteEventData(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n pasteType: PasteType\n): ContentModelBeforePasteEventData {\n const options = createDefaultHtmlSanitizerOptions();\n\n // Remove \"caret-color\" style generated by Safari to make sure caret shows in right color after paste\n options.cssStyleCallbacks['caret-color'] = () => false;\n\n return {\n clipboardData,\n fragment: editor.getDocument().createDocumentFragment(),\n sanitizingOption: options,\n htmlBefore: '',\n htmlAfter: '',\n htmlAttributes: {},\n domToModelOption: {},\n pasteType,\n };\n}\n\n/**\n * This function is used to create a BeforePasteEvent object after trigger the event, so other plugins can modify the event object\n * This function will also create a DocumentFragment for paste.\n */\nfunction triggerPluginEventAndCreatePasteFragment(\n editor: IContentModelEditor,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n pasteAsImage: boolean,\n eventData: ContentModelBeforePasteEventData\n): ContentModelBeforePasteEventData {\n const event = {\n eventType: PluginEventType.BeforePaste,\n ...eventData,\n } as ContentModelBeforePasteEvent;\n\n const { fragment } = event;\n const { rawHtml, text, imageDataUri } = clipboardData;\n const trustedHTMLHandler = editor.getTrustedHTMLHandler();\n\n let doc: Document | undefined = rawHtml\n ? new DOMParser().parseFromString(trustedHTMLHandler(rawHtml), 'text/html')\n : undefined;\n\n // Step 2: Retrieve Metadata from Html and the Html that was copied.\n retrieveMetadataFromClipboard(doc, event, trustedHTMLHandler);\n\n // Step 3: Fill the BeforePasteEvent object, especially the fragment for paste\n if ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) {\n // Paste image\n handleImagePaste(imageDataUri, fragment);\n } else if (!pasteAsText && rawHtml && doc ? doc.body : false) {\n moveChildNodes(fragment, doc?.body);\n } else if (text) {\n // Paste text\n handleTextPaste(text, position, fragment);\n }\n\n let pluginEvent: ContentModelBeforePasteEvent = event;\n // Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste, when the type of paste is different than Plain Text\n if (event.pasteType !== PasteType.AsPlainText) {\n pluginEvent = editor.triggerPluginEvent(\n PluginEventType.BeforePaste,\n event,\n true /* broadcast */\n ) as ContentModelBeforePasteEvent;\n }\n\n // Step 5. Sanitize the fragment before paste to make sure the content is safe\n sanitizePasteContent(event, position);\n\n return pluginEvent;\n}\n","import { EditorPlugin } from 'roosterjs-editor-types';\nimport { getDarkColor } from 'roosterjs-color-utils';\nimport {\n ContentModelEditor,\n ContentModelEditorOptions,\n ContentModelPastePlugin,\n IContentModelEditor,\n} from 'roosterjs-content-model-editor';\n\n/**\n * Create a Content Model Editor using the given options\n * @param contentDiv The html div element needed for creating the editor\n * @param additionalPlugins The additional user defined plugins. Currently the default plugins that are already included are\n * ContentEdit, HyperLink and Paste, user don't need to add those.\n * @param initialContent The initial content to show in editor. It can't be removed by undo, user need to manually remove it if needed.\n * @returns The ContentModelEditor instance\n */\nexport function createContentModelEditor(\n contentDiv: HTMLDivElement,\n additionalPlugins?: EditorPlugin[],\n initialContent?: string\n): IContentModelEditor {\n let plugins: EditorPlugin[] = [new ContentModelPastePlugin()];\n\n if (additionalPlugins) {\n plugins = plugins.concat(additionalPlugins);\n }\n\n let options: ContentModelEditorOptions = {\n plugins: plugins,\n initialContent: initialContent,\n getDarkColor: getDarkColor,\n defaultFormat: {\n fontFamily: 'Calibri,Arial,Helvetica,sans-serif',\n fontSize: '11pt',\n textColor: '#000000',\n },\n };\n return new ContentModelEditor(contentDiv, options);\n}\n","export { createContentModelEditor } from './createContentModelEditor';\nexport * from 'roosterjs-content-model-types';\nexport * from 'roosterjs-content-model-dom';\nexport * from 'roosterjs-content-model-editor';\n","module.exports = roosterjs;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2594);\n"],"names":["editorContext","options","selection","context","blockFormat","segmentFormat","isInSelection","listFormat","levels","threadItemCounts","link","format","dataset","code","blockDecorator","tagName","elementProcessors","defaultProcessorMap","processorOverride","defaultStyles","defaultStyleMap","defaultStyleOverride","formatParsers","getFormatParsers","formatParserOverride","additionalFormatParsers","defaultElementProcessors","defaultFormatParsers","isRootRtl","direction","rangeEx","a","linkProcessor","b","knownElementProcessor","blockquote","br","brProcessor","codeProcessor","div","em","font","fontProcessor","i","img","imageProcessor","h1","headingProcessor","h2","h3","h4","h5","h6","hr","hrProcessor","li","listItemProcessor","ol","listProcessor","p","pProcessor","pre","formatContainerProcessor","s","section","span","strike","strong","sub","sup","table","tableProcessor","u","ul","generalProcessor","textProcessor","element","elementProcessor","entity","entityProcessor","child","childProcessor","delimiter","delimiterProcessor","root","option","model","createContentModelDocument","defaultFormat","createDomToModelContext","normalizeContentModel","SegmentDecoratorTags","group","decorator","undefined","isSegmentDecorator","indexOf","parseFormat","block","container","ContextStyles","forEach","style","paragraph","createParagraph","addBlock","createBr","isSelected","addSegment","processChildNode","isNodeOfType","display","handleRegularSelection","index","nodeStartOffset","nodeEndOffset","addSelectionMarker","type","areAllCollapsed","parent","getRegularSelectionOffsets","firstChild","nextSibling","stackFormat","toLowerCase","processor","className","getEntityFromElement","contentEditable","tryGetProcessorForEntity","getDelimiterFromElement","tryGetProcessorForDelimiter","isReadonly","id","isBlockEntity","isBlockElement","segment","entityModel","createEntity","FontSizes","size","intSize","fontFamily","getAttribute","fontSize","parseInt","Number","isNaN","length","textColor","segmentOnBlock","getDefaultStyle","formatContainer","createFormatContainer","zeroFontSize","blocks","blockType","isImplicit","shouldFallbackToParagraph","Object","assign","setParagraphNotImplicit","generalBlockProcessor","createGeneralBlock","isSelectedBefore","generalSegmentProcessor","createGeneralSegment","addDecorators","getObjectKeys","key","createParagraphDecorator","blockProcessor","divider","createDivider","imageFormat","image","createImage","src","alt","title","isSelectedAsImageSelection","FormatContainerTriggerStyles","ByPassFormatContainerTags","isBlock","defaultStyle","bgcolor","getPropertyValue","some","marginLeft","marginRight","shouldUseFormatContainer","href","segmentUnderLink","hasAttribute","listParent","listItem","createListItem","listItemElement","push","currentBlocks","lastItem","level","createListLevel","listLevel","updateListMetadata","metadata","listLevelMetadataFormatHandler","parse","orderedStyleType","unorderedStyleType","originalListParent","pop","calcSizes","positions","result","lastPos","tableElement","createTable","rows","tableSelection","selectedTable","coordinates","hasTableSelection","firstCell","lastCell","allowCacheElement","cachedElement","tableBorder","columnPositions","rowPositions","zoomScale","row","tr","tableRow","tbody","parentNode","safeInstanceOf","parentElement","parentTag","sourceCol","targetCol","cells","td","hasSelectionBeforeCell","colEnd","colSpan","rowEnd","rowSpan","needCalcWidth","needCalcHeight","rect","getBoundingClientRect","width","height","segmentOnTableCell","cellFormat","tableCell","hasTd","cell","createTableCell","spannedRow","hasSelectionAfterCell","y","x","col","widths","heights","textNode","txt","nodeValue","txtStartOffset","txtEndOffset","addTextSegment","substring","WhiteSpaceValuesNeedToHandle","text","lastBlock","lastSegment","segments","segmentType","areSameFormats","hasSpacesOnly","whiteSpace","textModel","createText","marker","createSelectionMarker","f1","f2","keys1","keys2","every","tag","currentContainer","range","ranges","startContainer","startOffset","endContainer","endOffset","BLOCK_DISPLAY_STYLES","parsers","parser","SkippedStylesForBlock","SkippedStylesForTable","stackFormatInternal","processType","callback","linkFormat","codeFormat","decoratorFormat","underline","stackLinkInternal","stackCodeInternal","node","expectedType","nodeType","ListStyleDefinitionMetadata","createObjectDefinition","createNumberDefinition","list","updateMetadata","EditingInfoDatasetName","definition","metadataString","obj","JSON","validate","stringify","directionFormatHandler","_","dir","apply","displayFormatHandler","htmlAlignFormatHandler","htmlAlign","calcAlign","textAlign","setAttribute","ResultMap","lineHeightFormatHandler","lineHeight","MarginKeys","marginFormatHandler","value","parseValueWithUnit","implicitFormat","PaddingKeys","paddingFormatHandler","textAlignFormatHandler","flexDirection","alignSelf","whiteSpaceFormatHandler","backgroundColorFormatHandler","backgroundColor","getColor","darkColorHandler","isDarkMode","setColor","borderBoxFormatHandler","boxSizing","useBorderBox","BorderKeys","borderFormatHandler","boxShadowFormatHandler","boxShadow","datasetFormatHandler","floatFormatHandler","float","idFormatHandler","PercentageRegex","tryParseSize","attrName","attrValue","test","sizeFormatHandler","maxWidth","maxHeight","minWidth","minHeight","verticalAlignFormatHandler","verticalAlign","wordBreakFormatHandler","wordBreak","defaultFormatHandlerMap","bold","boldFormatHandler","border","borderBox","fontFamilyFormatHandler","fontSizeFormatHandler","italic","italicFormatHandler","letterSpacing","letterSpacingFormatHandler","linkFormatHandler","listItemThread","listItemThreadFormatHandler","listLevelThread","listLevelThreadFormatHandler","listStylePosition","listStylePositionFormatHandler","margin","padding","strikeFormatHandler","superOrSubScript","superOrSubScriptFormatHandler","tableLayout","tableLayoutFormatHandler","tableSpacing","tableSpacingFormatHandler","textColorFormatHandler","textColorOnTableCell","textColorOnTableCellFormatHandler","underlineFormatHandler","styleBasedSegmentFormats","elementBasedSegmentFormats","sharedBlockFormats","sharedContainerFormats","defaultFormatKeysPerCategory","styleBasedSegment","elementBasedSegment","tableCellBorder","reduce","defaultFormatAppliers","override","additionalParsers","map","formatKey","concat","additionalAppliers","OrderedMapPlaceholderRegex","DefaultOrderedListStyles","DefaultUnorderedListStyles","CharCodeOfA","RomanValues","M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I","getOrderedListStyleValue","template","listNumber","replace","match","subStr","convertDecimalsToAlpha","convertDecimalsToRoman","decimal","isLowerCase","alpha","String","fromCharCode","Math","floor","romanValue","timesRomanCharAppear","repeat","toLocaleLowerCase","listItemMetadataFormatHandler","depth","nodeStack","listStyleType","getTagOfNode","OrderedMap","UnorderedMap","isLiUnderOl","displayForDummyItem","splice","startNumberOverride","OLTypeToStyleMap","A","getKeyFromValue","filter","listStyle","listType","start","startNumber","fontWeight","blockFontWeight","ownerDocument","createElement","moveChildNodes","appendChild","isSuperOrSubScript","contextFont","knownFontSize","KnownFontSizes","endsWith","existingFontSize","round","normalizeFontSize","small","medium","large","fontStyle","name","target","rel","anchorId","relationship","anchorTitle","anchorClass","textDecoration","strikethrough","superOrSubScriptSequence","split","join","trim","reverse","wrapper","color","implicitColor","BorderCollapsed","borderCollapse","borderSpacing","DeprecatedColors","isBackground","darkColor","findLightColorFromDarkColor","tryGetFontColor","parseColorValue","lightModeColor","effectiveColor","registerColor","blockElement","address","article","aside","marginTop","marginBottom","center","dd","dl","dt","fieldset","figcaption","figure","footer","form","header","main","nav","th","PseudoTagNames","defaultImplicitFormatMap","ltr","rtl","end","initial","justify","align","MarginValueRegex","getFontSize","currentSizeOrElement","styleInPt","getComputedStyle","ptToPx","parseFloat","pt","currentSizePxOrElement","resultUnit","px","exec","numStr","unit","num","domToContentModel","contentModelToDom","get","hasMetadata","addCode","addLink","isGeneralSegment","unwrapBlock","isWhiteSpacePreserved","normalizeSingleSegment","newSegment","SPACE_TEXT_REGEX","isBlockEmpty","isBlockGroupEmpty","blockGroupType","isSegmentEmpty","isBlockGroup","isSegment","WHITESPACE_PRE_VALUES","normalizeParagraph","r","c","last","secondLast","noMarkerSegments","normalizeAllSegments","j","removeEmptySegments","SPACE","NONE_BREAK_SPACE","LEADING_SPACE_REGEX","TRAILING_SPACE_REGEX","resetNormalizeSegmentContext","textSegments","ignoreLeadingSpaces","ignoreTrailingSpaces","lastInlineSegment","lastTextSegment","normalizeSegment","normalizeTextSegments","normalizeLastTextSegment","first","substr","groupToUnwrap","formatHolder","keys","rowCount","spanLeftOrColSpan","spanAboveOrRowSpan","isHeader","spanLeft","spanAbove","calcPosition","pos","Position","toArray","childNodes","normalize","doc","modelToDomContext","createModelToDomContext","modelHandlers","blockGroupChildren","startPosition","endPosition","imageSelection","createRange","collapsed","extractSelectionRange","regularSelection","current","formatAppliers","getFormatAppliers","formatApplierOverride","additionalFormatAppliers","defaultContentModelHandlers","modelHandlerOverride","defaultImplicitFormatOverride","defaultModelHandlers","onNodeCreated","handleBlock","handleBlockGroupChildren","handleBr","handleEntity","general","handleGeneralModel","handleDivider","handleImage","handleList","handleListItem","handleParagraph","handleFormatContainer","handleSegment","segmentDecorator","handleSegmentDecorator","handleTable","handleText","refNode","handlers","childBlock","next","removeChild","handleSegmentCommon","reuseCachedElement","insertBefore","applyFormat","cloneNode","isInlineEntity","commitEntity","wrap","addDelimiterForEntity","after","addDelimiters","imageModel","document","widthNum","heightNum","layer","stackLevel","itemLevel","editingInfo","newList","unwrap","needParagraphWrapper","formatOnWrapper","handleSegments","firstSegment","optimize","codeNode","tableNode","max","createTextNode","OptimizeTags","hasSameAttributes","element1","element2","attr1","attributes","attr2","classList","contains","removeUnnecessarySpan","mergeNode","lastChild","newNode","appliers","applier","segmentNode","containerNode","tagNameOrFormat","newFormat","tablePreProcessor","getSelectionRootNode","shouldUseTableProcessor","BorderStyles","BorderSizeRegex","combinedBorder","v","NumberDefinition","ImageMetadataFormatDefinition","widthPx","heightPx","leftPercent","rightPercent","topPercent","bottomPercent","angleRad","createStringDefinition","naturalHeight","naturalWidth","TableCellMetadataFormatDefinition","bgColorOverride","createBooleanDefinition","vAlignOverride","NullStringDefinition","BooleanDefinition","TableFormatDefinition","topBorderColor","bottomBorderColor","verticalBorderColor","hasHeaderRow","headerRowColor","hasFirstColumn","hasBandedColumns","hasBandedRows","bgColorEven","bgColorOdd","tableBorderFormat","SPACES_REGEX","char","charCodeAt","isForward","contentDiv","createContentModelEditorCore","createContentModel","selectionOverride","core","this","getCore","api","setContentModel","cacheContentModel","lifecycle","shadowEditFragment","cachedModel","cachedRangeEx","getContentModelDefaultFormat","EditorBase","cloneModel","includeCachedElement","defaultDomToModelOptions","createEditorContext","getSelectionRangeEx","internalCreateContentModel","defaultView","checkRootRtl","originalWidth","visualWidth","offsetWidth","checkZoomScale","originalApi","defaultModelToDomOptions","select","switchShadowEdit","editorCore","isOn","getSelectionRange","fragment","createDocumentFragment","selectionPath","getSelectionPath","triggerEvent","eventType","shadowEditSelectionPath","state","editor","disposer","onPaste","event","clipboardData","isClipboardEvent","dataTransfer","items","preventDefault","extractClipboardItems","allowedCustomPasteType","then","isDisposed","getName","initialize","addDomEventHandler","paste","e","copy","onCutCopy","cut","dispose","getState","isCut","pasteModel","transformToDarkColor","iterateSelections","path","tableContext","getTempDiv","newRange","tempDiv","querySelector","elementToSelect","childElementCount","selectionExToRange","triggerPluginEvent","clonedRoot","rawEvent","addRangeToSelection","runAsync","focus","formatWithContentModel","deleteSelection","deleteResult","changeSource","getCustomData","getDocument","body","promoteToContentModelEditorCore","cmCore","textColors","backgroundColors","getDefaultSegmentFormat","promoteDefaultFormat","experimentalFeatures","isFeatureEnabled","promoteContentModelInfo","promoteCoreApi","modifiedOptions","plugins","corePluginOverride","typeInContainer","copyPaste","createEditorCore","hasDefaultFormat","onPluginEvent","handleKeyDownEvent","which","defaultPrevented","handledByEditFeature","shouldDeleteWithContentModel","isCharacterValue","tryApplyDefaultFormat","startPos","getStart","addUndoSnapshot","insertPoint","blockCount","blockIndex","previousBlock","applyDefaultFormat","currentFormat","pendingFormat","getPendingFormat","setPendingFormat","isModifierKey","canDeleteBefore","canDeleteAfter","previousSibling","isComposing","isInIME","checkAndApplyPendingFormat","data","clearPendingFormat","canApplyPendingFormat","unknownTagReplacement","ev","domToModelOption","sanitizingOption","getPasteSource","processPastedContentFromWordDesktop","processPastedContentWacComponents","pasteType","processPastedContentFromExcel","getTrustedHTMLHandler","additionalTagReplacements","processPastedContentFromPowerPoint","parseLink","deprecatedBorderColorParser","chainSanitizerCallback","cssStyleCallbacks","blockElementParser","LAST_TD_END_REGEX","LAST_TR_END_REGEX","LAST_TR_REGEX","LAST_TABLE_REGEX","DEFAULT_BORDER_STYLE","excelHandler","html","htmlBefore","trMatch","tableMatch","trustedHTMLHandler","DOMParser","parseFromString","Array","from","replaceChildren","borderStyle","borderBottom","borderLeft","borderRight","borderTop","LIST_CONTAINER_ELEMENT_CLASS_NAME","TABLE_CONTAINER","TEMP_ELEMENTS_CLASSES","CLASSES_TO_KEEP","LIST_ELEMENT_TAGS","LIST_ELEMENT_SELECTOR","wacSubSuperParser","wacElementProcessor","elementTag","matchesSelector","removeProperty","findClosestElementAncestor","shouldClearListContext","wacLiElementProcessor","lastblock","currentLevel","wacListItemParser","wacListLevelParser","paddingLeft","wacBlockParser","setProcessor","wacListProcessor","additionalAllowedCssClasses","isWrappedInContainer","previousElementSibling","toUpperCase","startsWith","PERCENTAGE_REGEX","removeNonValidLineHeight","parsedLineHeight","listLevelParser","wordDesktopElementProcessor","listItemElementParser","elementCallbacks","styles","getStyles","processWordList","processWordComments","MSO_COMMENT_ANCHOR_HREF_REGEX","MSO_LIST","MSO_LIST_IGNORE","startNumberOverrideParser","fakeBullet","wordKnownLevels","wordLevel","wordList","has","getFakeBulletText","isIgnoreNode","textContent","listAttribute","Map","wordListStyle","listProps","isFakeBullet","getFakeBulletTagName","newLevel","lastLevel","processAsListItem","set","entry","dColor","newValue","trimRight","SUPPORTED_PROTOCOLS","INVALID_LINKS_REGEX","url","URL","protocol","removeAttribute","skipUndoSnapshot","isMac","altKey","metaKey","ctrlKey","default","combineBorderValue","extractBorderValues","updateImageMetadata","updateTableCellMetadata","updateTableMetadata","isNext","newPath","nextBlock","unshift","shift","para","find","siblingSegment","left","right","TableAlignMap","alignment","paragraphOrListItemOrTable","getOperationalBlocks","newAligment","alignTable","internalSetDirection","setProperty","paddingRight","isBlockGroupOfType","findListItemsInSameThread","item","indentation","paragraphOrListItem","isIndent","isRtl","originalValue","ceil","isQuote","paragraphOfQuote","blockAndParent","canMergeQuote","wrapBlockStep1","wrapBlockStep2","clearContainerFormat","containerPathIndex","getClosestAncestorBlockGroupIndex","containerIndex","newContainer","clearListFormat","clearBlockFormat","blocksToClear","segmentsToClear","tablesToClear","arrayPush","colIndex","rowIndex","isWholeTableSelected","clearTableCellFormat","includeListFormatHolder","isOnlySelectionMarkerSelected","adjustWordSelection","isWholeBlockSelected","defaultSegmentFormat","clearSegmentsFormat","applyTableFormat","createTablesFormat","cloneModelWithFormat","cloneModelWithDataset","cloneBlockBase","cloneBlockGroupBase","handleCachedElement","cloneFormatContainer","cloneGeneralBlock","cloneSelectionMarker","cloneListLevel","cloneListItem","cloneDivider","cloneEntity","newParagraph","cloneSegmentBase","cloneGeneralSegment","textSegment","cloneSegment","cloneParagraph","cloneTableCell","cloneTableRow","cloneTable","cloneBlock","Error","newModel","blockGroupTypes","stopTypes","input","HeadingTags","mergeParagraph","markerPosition","newPara","mergeToCurrentParagraph","splitParagraph","segmentIndex","newEntities","sourceKeys","mergeTable","newTable","source","newCell","k","leftCell","aboveCell","normalizeTable","insertBlock","mergeList","listItemIndex","newParaFormat","paraIndex","newListItem","applyDefaultFormatOption","mergeSegmentFormat","targetformat","sourceFormat","insertPosition","mergeFormat","mergeValue","isFirst","formatState","firstTableContext","firstBlock","isFirstImage","isFirstSegment","retrieveStructureFormat","isMultilineSelection","headingLevel","validHeadingLevel","retrieveParagraphFormat","extractedBorder","borderColor","borderWidth","mergedFormat","superOrSubscript","isBold","retrieveSegmentFormat","canUnlink","canAddImageAltText","borderRadius","canMergeTableCell","tableFormat","isInTable","tableHasHeader","retrieveTableFormat","step1Result","blockToWrap","creator","canMerge","prevBlock","createAndAdd","additionalSteps","formatContext","deleteExpandedSelection","step","isValidDeleteSelectionContext","lastParagraph","lastTableContext","mergeParagraphAfterDelete","deleteAllSegmentBefore","deleteSegment","getDeleteCollapsedSelection","segmentsWithoutBr","fixupBr","blockToDelete","segmentToDelete","getLeafSiblingBlock","createInsertPoint","deleteBlock","forwardDeleteCollapsedSelection","backwardDeleteCollapsedSelection","DeleteWordState","getDeleteWordSelection","startIndex","deleteNext","iterator","markerIndex","forward","preserveWhiteSpace","punctuation","isPunctuation","space","isSpace","newText","normalizeText","iterateSegments","curr","done","forwardDeleteWordSelection","backwardDeleteWordSelection","replacement","operation","deletedEntities","DeleteSelectionIteratingOptions","contentUnderSelectedTableCell","contentUnderSelectedGeneralElement","markerFormat","insertMarkerIndex","isBackward","currentIndex","normalizePreviousSegment","deleteSingleChar","array","deleteLength","deleteState","position","focusAfterEntity","blockParent","pathIndex","directChild","childIndex","blocksToInsert","nextParagraph","setSelection","getPendingFormatHolder","holder","getFocusedPosition","equalTo","PendingFormatHolderKey","borderFormat","findListItems","pushNullIfNecessary","areListTypesCompatible","listItems","compareToIndex","currentLevels","compareToLevels","hasStartNumberOverride","levelLength","slice","currentItem","isOrderedList","filterListItems","shouldIgnoreBlock","paragraphOrListItems","alreadyInExpectedType","existingListItems","hasIgnoredParagraphBefore","itemIndex","firstMatcher","siblingMatcher","paragraphs","getSelectedParagraphs","changed","findIndex","findDelimiter","moveRightward","word","offset","splitTextSegment","found","markerBlock","markerSelectionIndex","currentSegment","firstCol","deepFirst","findSequence","selections","collectSelections","removeUnmeaningfulSelections","groupIndex","checkFirstParagraph","allSegments","includingFormatHolder","resultPath","commonAncestorContainer","internalIterateSelections","treatAllAsSelect","hasSelectedSegment","hasUnselectedSegment","handleGeneralContent","handleGeneralElement","setSelectionToBlockGroup","handleSelection","setIsSelected","startCo","findCell","endCo","setSelectionToTable","segmentsToDelete","setSelectionToSegment","setSelectionToBlock","selectable","TextAlignValueMap","VerticalAlignValueMap","sel","getSelectedCells","firstRow","lastRow","lastCol","DEFAULT_FORMAT","keepCellShade","effectiveMetadata","metaOverrides","removeCellShade","overrides","bgColorOverrides","vAlignOverrides","updateOverrides","clearCache","transparentBorderMatrix","BorderFormatters","firstColumn","lastColumn","formatColor","alwaysUseTransparent","getBorderStyleFromColor","setTableCellBackgroundColor","formatCells","cellIndex","setBorderColor","setFirstColumnFormat","setHeaderRowFormat","noSpanAbove","noSpanLeft","noDifferentBelowSpan","spanCount","getBelowSpanCount","noDifferentRightSpan","getRightSpanCount","columns","cellInNextCol","collapseTableSelection","cellInNextRow","createEmptyParagraph","hasSelection","insertLeft","insertAbove","sourceRow","canMergeCells","mergingColIndex","newSelectedCol","mergingRowIndex","newSelectedRow","getTableCellWidth","tryMoveBlocks","targetCell","sourceCell","isColorOverride","lightness","colorValues","parseColor","red","green","blue","min","calculateLightness","newWidth","belowRow","belowCell","newHeight","newRow","setModelAlignment","setModelDirection","formatParagraphWithContentModel","headingStyle","setModelIndentation","preservePendingFormat","spacing","toString","DefaultQuoteFormat","BuildInQuoteFormat","quoteFormat","fullQuoteFormat","toggleModelBlockQuote","shouldDeleteAllSegmentsBefore","shouldDeleteWord","Browser","getDeleteSteps","handleKeyboardEventResult","getChangeData","contentNode","wrapperDisplay","insertEntityModel","newEntity","triggerContentChangedEvent","__","previousSegment","clearModelFormat","reducedModelChildProcessor","selectionRootNode","startNode","createNodeStack","stackChild","getChildIndex","getUndoState","getZoomScale","retrieveModelFormatState","adjustSegmentSelection","ref","file","readFile","dataUrl","previousSrc","newSrc","originalSrc","getImageSrc","getMetadata","insertImageWithSrc","mergeModel","imageFileOrSrc","altText","URI_REGEX","MAILTO_REGEX","FTP_REGEX","applyLinkPrefix","prefix","search","displayText","sanitizer","HtmlSanitizer","sanitize","checkXss","matchLink","normalizedUrl","originalText","originalUrl","modelElement","isChanged","getFirstSelectedListItem","setListType","formatSegmentWithContentModel","capitalization","language","toLocaleUpperCase","wordArray","charAt","regex","RegExp","FONT_SIZES","change","sizeInPt","newSize","changeBase","fontSizes","getNewFontSize","changeFontSizeInternal","lastSegmentIndex","fontName","boldStyle","isTurningOn","DefaultCode","getSelectedSegmentsAndParagraphs","getFirstSelectedTable","tableModel","alignTableCell","deleteTableColumn","deleteTableRow","deleteTable","insertTableRow","insertTableColumn","mergeTableRow","mergeTableCells","mergeTableColumn","splitTableCellHorizontally","splitTableCellVertically","ensureFocusableParagraphForTable","createTableStructure","apiName","eventChangeData","setStyleCallback","toggleStyleCallback","segmentHasStyleCallback","afterFormatCallback","segmentAndParagraphs","isCollapsedSelection","formatsAndSegments","isTurningOff","formatter","handleNewEntities","handleDeletedEntities","contentChangedEventData","formatApiName","mergePasteContent","applyCurrentFormat","customizedMerge","shouldMergeTable","pasteAsText","pasteAsImage","snapshotBeforePaste","setContent","getContent","eventData","createDefaultHtmlSanitizerOptions","htmlAfter","htmlAttributes","createBeforePasteEventData","getPasteType","rawHtml","imageDataUri","retrieveMetadataFromClipboard","handleImagePaste","handleTextPaste","pluginEvent","sanitizePasteContent","triggerPluginEventAndCreatePasteFragment","additionalPlugins","initialContent","ContentModelPastePlugin","getDarkColor","ContentModelEditor","createContentModelEditor","module","exports","roosterjs","extendStatics","d","setPrototypeOf","__proto__","prototype","hasOwnProperty","call","__extends","TypeError","constructor","create","__assign","t","n","arguments","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","kind","descriptor","access","addInitializer","init","__runInitializers","thisArg","useValue","__propKey","__setFunctionName","description","configurable","__metadata","metadataKey","metadataValue","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","__generator","g","label","sent","trys","ops","verb","Symbol","op","__createBinding","o","m","k2","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","jl","__spreadArray","to","pack","l","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","__classPrivateFieldSet","__classPrivateFieldIn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","toStringTag","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/rooster-min.js b/rooster-min.js index f0530be0b47..0153b8a1c7d 100644 --- a/rooster-min.js +++ b/rooster-min.js @@ -1,2 +1,2 @@ -var roosterjs;(()=>{var e={8168:(e,t,n)=>{var r=n(8874),o={};for(var i in r)r.hasOwnProperty(i)&&(o[r[i]]=i);var a=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 a)if(a.hasOwnProperty(l)){if(!("channels"in a[l]))throw new Error("missing channels property: "+l);if(!("labels"in a[l]))throw new Error("missing channel labels property: "+l);if(a[l].labels.length!==a[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=a[l].channels,u=a[l].labels;delete a[l].channels,delete a[l].labels,Object.defineProperty(a[l],"channels",{value:s}),Object.defineProperty(a[l],"labels",{value:u})}a.rgb.hsl=function(e){var t,n,r=e[0]/255,o=e[1]/255,i=e[2]/255,a=Math.min(r,o,i),l=Math.max(r,o,i),s=l-a;return l===a?t=0:r===l?t=(o-i)/s:o===l?t=2+(i-r)/s:i===l&&(t=4+(r-o)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+l)/2,[t,100*(l===a?0:n<=.5?s/(l+a):s/(2-l-a)),100*n]},a.rgb.hsv=function(e){var t,n,r,o,i,a=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(a,l,s),d=u-Math.min(a,l,s),c=function(e){return(u-e)/6/d+.5};return 0===d?o=i=0:(i=d/u,t=c(a),n=c(l),r=c(s),a===u?o=r-n:l===u?o=1/3+t-r:s===u&&(o=2/3+n-t),o<0?o+=1:o>1&&(o-=1)),[360*o,100*i,100*u]},a.rgb.hwb=function(e){var t=e[0],n=e[1],r=e[2];return[a.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(n,r))*100,100*(r=1-1/255*Math.max(t,Math.max(n,r)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,r=e[1]/255,o=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-r,1-o)))/(1-t)||0),100*((1-r-t)/(1-t)||0),100*((1-o-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=o[e];if(t)return t;var n,i,a,l=1/0;for(var s in r)if(r.hasOwnProperty(s)){var u=(i=e,a=r[s],Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)+Math.pow(i[2]-a[2],2));u.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],r=t[1],o=t[2];return r/=100,o/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.hsl.rgb=function(e){var t,n,r,o,i,a=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[i=255*s,i,i];t=2*s-(n=s<.5?s*(1+l):s+l-s*l),o=[0,0,0];for(var u=0;u<3;u++)(r=a+1/3*-(u-1))<0&&r++,r>1&&r--,i=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,o[u]=255*i;return o},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,r=e[2]/100,o=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,o*=i<=1?i:2-i,[t,100*(0===r?2*o/(i+o):2*n/(r+n)),(r+n)/2*100]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,r=e[2]/100,o=Math.floor(t)%6,i=t-Math.floor(t),a=255*r*(1-n),l=255*r*(1-n*i),s=255*r*(1-n*(1-i));switch(r*=255,o){case 0:return[r,s,a];case 1:return[l,r,a];case 2:return[a,r,s];case 3:return[a,l,r];case 4:return[s,a,r];case 5:return[r,a,l]}},a.hsv.hsl=function(e){var t,n,r,o=e[0],i=e[1]/100,a=e[2]/100,l=Math.max(a,.01);return r=(2-i)*a,n=i*l,[o,100*(n=(n/=(t=(2-i)*l)<=1?t:2-t)||0),100*(r/=2)]},a.hwb.rgb=function(e){var t,n,r,o,i,a,l,s=e[0]/360,u=e[1]/100,d=e[2]/100,c=u+d;switch(c>1&&(u/=c,d/=c),r=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(r=1-r),o=u+r*((n=1-d)-u),t){default:case 6:case 0:i=n,a=o,l=u;break;case 1:i=o,a=n,l=u;break;case 2:i=u,a=n,l=o;break;case 3:i=u,a=o,l=n;break;case 4:i=o,a=u,l=n;break;case 5:i=n,a=u,l=o}return[255*i,255*a,255*l]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,r=e[2]/100,o=e[3]/100;return[255*(1-Math.min(1,t*(1-o)+o)),255*(1-Math.min(1,n*(1-o)+o)),255*(1-Math.min(1,r*(1-o)+o))]},a.xyz.rgb=function(e){var t,n,r,o=e[0]/100,i=e[1]/100,a=e[2]/100;return n=-.9689*o+1.8758*i+.0415*a,r=.0557*o+-.204*i+1.057*a,t=(t=3.2406*o+-1.5372*i+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],r=e[2];return n/=100,r/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.lab.xyz=function(e){var t,n,r,o=e[0];t=e[1]/500+(n=(o+16)/116),r=n-e[2]/200;var i=Math.pow(n,3),a=Math.pow(t,3),l=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,r=l>.008856?l:(r-16/116)/7.787,[t*=95.047,n*=100,r*=108.883]},a.lab.lch=function(e){var t,n=e[0],r=e[1],o=e[2];return(t=360*Math.atan2(o,r)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(r*r+o*o),t]},a.lch.lab=function(e){var t,n=e[0],r=e[1];return t=e[2]/360*2*Math.PI,[n,r*Math.cos(t),r*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],r=e[2],o=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(o=Math.round(o/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===o&&(i+=60),i},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},a.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 n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.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},a.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 n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},a.rgb.hcg=function(e){var t,n=e[0]/255,r=e[1]/255,o=e[2]/255,i=Math.max(Math.max(n,r),o),a=Math.min(Math.min(n,r),o),l=i-a;return t=l<=0?0:i===n?(r-o)/l%6:i===r?2+(o-n)/l:4+(n-r)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?a/(1-l):0)]},a.hsl.hcg=function(e){var t,n=e[1]/100,r=e[2]/100,o=0;return(t=r<.5?2*n*r:2*n*(1-r))<1&&(o=(r-.5*t)/(1-t)),[e[0],100*t,100*o]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=t*n,o=0;return r<1&&(o=(n-r)/(1-r)),[e[0],100*r,100*o]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];var o,i=[0,0,0],a=t%1*6,l=a%1,s=1-l;switch(Math.floor(a)){case 0:i[0]=1,i[1]=l,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=l;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=l,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return o=(1-n)*r,[255*(n*i[0]+o),255*(n*i[1]+o),255*(n*i[2]+o)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,r=n-t,o=0;return r<1&&(o=(n-r)/(1-r)),[e[0],100*r,100*o]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2085:(e,t,n)=>{var r=n(8168),o=n(4111),i={};Object.keys(r).forEach((function(e){i[e]={},Object.defineProperty(i[e],"channels",{value:r[e].channels}),Object.defineProperty(i[e],"labels",{value:r[e].labels});var t=o(e);Object.keys(t).forEach((function(n){var r=t[n];i[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var r=n.length,o=0;o1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)}))})),e.exports=i},4111:(e,t,n)=>{var r=n(8168);function o(e,t){return function(n){return t(e(n))}}function i(e,t){for(var n=[t[e].parent,e],i=r[t[e].parent][e],a=t[e].parent;t[a].parent;)n.unshift(t[a].parent),i=o(r[t[a].parent][a],i),a=t[a].parent;return i.conversion=n,i}e.exports=function(e){for(var t=function(e){var t=function(){for(var e={},t=Object.keys(r),n=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,n)=>{var r=n(8874),o=n(6851),i={};for(var a in r)r.hasOwnProperty(a)&&(i[r[a]]=a);var l=e.exports={to:{},get:{}};function s(e,t,n){return Math.min(Math.max(t,e),n)}function u(e){var t=e.toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),n="hsl";break;case"hwb":t=l.get.hwb(e),n="hwb";break;default:t=l.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,n,o,i=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=t[2],t=t[1],n=0;n<3;n++){var a=2*n;i[n]=parseInt(t.slice(a,a+2),16)}o&&(i[3]=parseInt(o,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(o=(t=t[1])[3],n=0;n<3;n++)i[n]=parseInt(t[n]+t[n],16);o&&(i[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(n=0;n<3;n++)i[n]=parseInt(t[n+1],0);t[4]&&(i[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]:(i=r[t[1]])?(i[3]=1,i):null:null;for(n=0;n<3;n++)i[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(i[3]=parseFloat(t[4]))}for(n=0;n<3;n++)i[n]=s(i[n],0,255);return i[3]=s(i[3],0,1),i},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 n=parseFloat(t[4]);return[(parseFloat(t[1])+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,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 n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,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),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+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 i[e.slice(0,3)]}},6767:(e,t,n)=>{"use strict";var r=n(9818),o=n(2085),i=[].slice,a=["keyword","gray","hex"],l={};Object.keys(o).forEach((function(e){l[i.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 a&&(t=null),t&&!(t in o))throw new Error("Unknown model: "+t);var n,d;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 c=r.get(e);if(null===c)throw new Error("Unable to parse color from string: "+e);this.model=c.model,d=o[this.model].channels,this.color=c.value.slice(0,d),this.valpha="number"==typeof c.value[d]?c.value[d]:1}else if(e.length){this.model=t||"rgb",d=o[this.model].channels;var p=i.call(e,0,d);this.color=f(p,d),this.valpha="number"==typeof e[d]?e[d]: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 v=Object.keys(e);"alpha"in e&&(v.splice(v.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var h=v.sort().join("");if(!(h in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[h];var g=o[this.model].labels,m=[];for(n=0;nn?(t+.05)/(n+.05):(n+.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(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,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 n=e.rgb(),r=this.rgb(),o=void 0===t?.5:t,i=2*o-1,a=n.alpha()-r.alpha(),l=((i*a==-1?i:(i+a)/(1+i*a))+1)/2,s=1-l;return u.rgb(l*n.red()+s*r.red(),l*n.green()+s*r.green(),l*n.blue()+s*r.blue(),n.alpha()*o+r.alpha()*(1-o))}},Object.keys(o).forEach((function(e){if(-1===a.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 n,r="number"==typeof arguments[t]?t:this.valpha;return new u((n=o[this.model][e].raw(this.color),Array.isArray(n)?n:[n]).concat(r),e)},u[e]=function(n){return"number"==typeof n&&(n=f(i.call(arguments),t)),new u(n,e)}}})),e.exports=u},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,n)=>{"use strict";var r=n(5171),o=Array.prototype.concat,i=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDarkColor=void 0;var r=n(6134);Object.defineProperty(t,"getDarkColor",{enumerable:!0,get:function(){return r.default}})},6134:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6767);t.default=function(e,t){void 0===t&&(t=21.247);try{var n=r(e||void 0),o=n.lab().array(),i=(100-o[0])*((100-t)/100)+t;e=r.lab(i,o[1],o[2]).rgb().alpha(n.alpha()).toString()}catch(e){}return e}},8106:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t,n){function i(e,n){if(null===e)return e;switch(t){case"lowercase":return e.toLocaleLowerCase(n);case"uppercase":return e.toLocaleUpperCase(n);case"capitalize":for(var r=e.toLocaleLowerCase(n).split(" "),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getNewFontSize=t.FONT_SIZES=void 0;var r=n(9069),o=n(6344);t.FONT_SIZES=[8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72];function i(e,t,n){e=1==t?Math.floor(e):Math.ceil(e);var r=n[n.length-1];if(e<=n[0])e=Math.max(e+t,1);else if(e>r||e==r&&1==t)e/=10,e=1==t?Math.floor(e):Math.ceil(e),e=Math.min(Math.max(10*(e+t),r),1e3);else if(1==t){for(var o=0;o=0;o--)if(e>n[o]){e=n[o];break}return e}t.default=function(e,n,a){void 0===a&&(a=t.FONT_SIZES);var l=0==n?1:-1;(0,r.default)(e,(function(e){var t=parseFloat((0,o.getComputedStyle)(e,"font-size")||e.style.fontSize);e.style.fontSize=i(t,l,a)+"pt";var n=(0,o.getComputedStyle)(e,"line-height");n&&"normal"!=n&&(e.style.lineHeight="normal")}),"changeFontSize")},t.getNewFontSize=i},4234:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4040);t.default=function(e){(0,r.default)(e,1)}},4040:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4485),i=n(9703),a=n(9733),l=n(4077),s=n(6304),u=n(690),d=n(9339),c=n(8683),f=n(6823),p=n(926),v=n(3275),h=n(6344),g=["font","text-decoration","color","background"],m="B,I,U,STRONG,EM,SUB,SUP,STRIKE,FONT,CENTER,H1,H2,H3,H4,H5,H6,UL,OL,LI,SPAN,P,BLOCKQUOTE,CODE,S,PRE".split(","),y=["href","src","cellpadding","cellspacing"],b=["TD","TH","TR","TABLE","TBODY","THEAD"];function E(e){var t=(0,h.toArray)(e.childNodes).map(E).every((function(e){return e})),n=(0,h.isBlockElement)(e),o=(0,h.getTagOfNode)(e);return o&&(m.indexOf(o)>=0||t&&!(0,h.isVoidHtmlElement)(e)&&b.indexOf(o)<0?(n&&!t&&(0,h.wrap)(e),(0,h.unwrap)(e)):function(e){var t,n,o=(0,h.safeInstanceOf)(e,"HTMLTableCellElement"),i=(0,h.safeInstanceOf)(e,"HTMLTableElement");try{for(var a=(0,r.__values)((0,h.toArray)(e.attributes)),l=a.next();!l.done;l=a.next()){var s=l.value;o&&"style"==s.name?S(e):i&&"style"==s.name?T(e):y.indexOf(s.name.toLowerCase())<0&&0!=s.name.indexOf("data-")&&e.removeAttribute(s.name)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}}(e)),n}function C(e,t){var n=(0,h.getStyles)(e),r={};return(0,h.getObjectKeys)(n).forEach((function(e){return t(e,n,r)})),(0,h.setStyles)(e,n),r}function S(e){return C(e,(function(e,t,n){e.indexOf("border")<0&&(n[e]=t[e],delete t[e])}))}function T(e){return C(e,(function(e,t,n){"border-collapse"!=e&&(n[e]=t[e],delete t[e])}))}function P(e){(0,l.default)(e,(function(){(0,i.default)(e,(function(t){var n=(0,h.getSelectedBlockElementsInRegion)(t),r=(0,h.collapseNodesInRegion)(t,n);if(e.contains(t.rootNode)){var o=S(t.rootNode);if((0,h.getObjectKeys)(o).length>0){var i=(0,h.wrap)((0,h.toArray)(t.rootNode.childNodes));(0,h.setStyles)(i,o)}}for(;r.length>0&&r[0].parentNode&&(0,h.isNodeInRegion)(t,r[0].parentNode);){var a=(0,h.splitBalancedNodeRange)(r);r=a?[a]:[]}r.forEach(E)})),_(e)}),"clearBlockFormat")}function _(e){var t=e.getDefaultFormat(),n=0===(0,h.getObjectKeys)(t).length;if(e.queryElements("[style]",2,(function(e){var t=(0,h.getTagOfNode)(e);-1==b.indexOf(t)?w(t,e,n):e.childNodes.forEach((function(e){e.childNodes.forEach((function(e){var t=(0,h.getTagOfNode)(e);(0,h.safeInstanceOf)(e,"HTMLElement")&&w(t,e,n)}))}))})),!n){if(t.fontFamily&&(0,u.default)(e,t.fontFamily),t.fontSize&&(0,d.default)(e,t.fontSize),t.textColor){var r=e.queryElements("a *, a",1),i=r.length>0?function(e){return-1==r.indexOf(e)}:void 0;t.textColors?(0,c.default)(e,t.textColors,i):(0,c.default)(e,t.textColor,i)}t.backgroundColor&&(t.backgroundColors?(0,s.default)(e,t.backgroundColors):(0,s.default)(e,t.backgroundColor)),t.bold?(0,f.default)(e):function(e,t){void 0===t&&(t="400"),(0,o.default)(e,"font-weight",(function(e){return e.style.fontWeight=t}),"setDefaultFontWeight")}(e),t.italic&&(0,p.default)(e),t.underline&&(0,v.default)(e)}}function w(e,t,n){-1==b.indexOf(e)&&(g.forEach((function(e){return t.style.removeProperty(e)})),n&&""===t.getAttribute("style")&&t.removeAttribute("style"))}function O(e,t){switch(void 0===t&&(t=0),t){case 0:!function(e){e.focus(),e.addUndoSnapshot((function(){return(0,a.default)(e,"removeFormat"),e.queryElements("[class]",1,(function(e){return e.removeAttribute("class")})),_(e),"clearInlineFormat"}),"Format")}(e);break;case 1:P(e);break;default:!function(e){var t=function(e){var t=e.getSelectionTraverser();return!!(null==t?void 0:t.currentBlockElement)&&!!(null==t?void 0:t.getNextBlockElement())}(e);if(!t){var n=e.getSelectionTraverser(),r=null==n?void 0:n.currentInlineElement,o=r instanceof h.PartialInlineElement||r instanceof h.NodeInlineElement&&!function(e,t){for(var n,r=e,o=function(){if(r.nextSibling||r.previousSibling){if((0,h.safeInstanceOf)(r,"HTMLLIElement"))return{value:!0};var e=!0;return null===(n=r.parentNode)||void 0===n||n.childNodes.forEach((function(t){var n;t!=r&&(null===(n=t.textContent)||void 0===n?void 0:n.length)&&(e=!1)})),{value:e}}r=r.parentNode};r&&t.contains(r.parentNode);){var i=o();if("object"==typeof i)return i.value}return!0}(r.getContainerNode(),e);if(o)return void O(e)}P(e)}(e)}}t.default=O},2149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=/^[a-zA-Z]+:/i,i=/^[\w.%+-]+@/i,a=/^ftp\./i;function l(e){return e.queryElements("a[href]",1)[0]}function s(e,t){t&&e.textContent!=t&&(e.textContent=t)}t.default=function(e,t,n,u,d){e.focus();var c=(function(e){var t=new r.HtmlSanitizer,n=document.createElement("a");return n.href=e||"",t.sanitize(n),n.getAttribute("href")}(t)||"").trim();if(c){var f=(0,r.matchLink)(c),p=f?f.normalizedUrl:function(e){if(!e)return e;var t="";return e.search(o)<0&&(t=0==e.search(i)?"mailto:":0==e.search(a)?"ftp://":"http://"),t+e}(c),v=f?f.originalUrl:c;e.addUndoSnapshot((function(){var t=e.getSelectionRangeEx(),o=null;if(0===t.type){var i=t.ranges[0];if(i&&i.collapsed)(o=l(e))?(o.href=p,s(o,u)):((o=e.getDocument().createElement("A")).textContent=u||v,o.href=p,e.insertNode(o));else{e.getDocument().execCommand("createLink",!1,p);for(var a=e.getSelectionTraverser(),c=null==a?void 0:a.getNextInlineElement(),f=[];c;)f.push(c.getContainerNode()),c=null==a?void 0:a.getNextInlineElement();f.forEach((function(t){return e.deleteNode(t)})),s(o=l(e),u)}}else 2===t.type&&((o=(0,r.wrap)(t.image,"A")).href=p);return n&&o&&(o.title=n),o&&function(e,t){t?e.target=t:!t&&e.getAttribute("target")&&e.removeAttribute("target")}(o,d),o}),"CreateLink")}}},3956:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementBasedFormatState=void 0;var r=n(7582),o=n(6344);function i(e,t){var n=(0,o.getTagOfNode)(e.getElementAtCursor("OL,UL",void 0,t)),r=e.getSelectionRange(),i=!1;if(r&&!r.collapsed){var l=e.getBlockElementAtNode(r.startContainer),s=e.getBlockElementAtNode(r.endContainer);i=!(!s||!l||s.equals(l))}var u=(0,o.getTagOfNode)(e.getElementAtCursor("H1,H2,H3,H4,H5,H6",void 0,t)),d=e.queryElements("table",1)[0],c=d?(0,o.getTableFormatInfo)(d):void 0,f=(null==d?void 0:d.rows[0])?(0,o.toArray)(d.rows[0].cells).every((function(e){return"TH"==(0,o.getTagOfNode)(e)})):void 0,p=u&&parseInt(u[1])||0;return{isBullet:"UL"==n,isNumbering:"OL"==n,isMultilineSelection:i,headingLevel:p,headerLevel:p,canUnlink:!!e.queryElements("a[href]",1)[0],canAddImageAltText:!!e.queryElements("img",1)[0],isBlockQuote:!!e.queryElements("blockquote",1)[0],isCodeInline:!!e.queryElements("code",1)[0],isCodeBlock:!!e.queryElements("pre>code",1)[0],isInTable:!!d,tableFormat:c||{},tableHasHeader:f,canMergeTableCell:a(e)}}t.getElementBasedFormatState=i,t.default=function(e,t){return(0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)({},e.getPendableFormatState(!1)),i(e,t)),e.getStyleBasedFormatState()),e.getUndoState()),{isDarkMode:e.isDarkMode(),zoomScale:e.getZoomScale()})};var a=function(e){var t=e.getSelectionRangeEx();if(t&&1===t.type&&t.coordinates){var n=t.coordinates,r=n.firstCell,o=n.lastCell;return r.x!==o.x||r.y!==o.y}return!1}},9540:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(6344);t.default=function(e,t,n,i,a,l,s,u){var d,c=(0,o.wrap)(n,i?"div":"span");if(!i&&a&&(c.style.display="inline-block"),(0,o.commitEntity)(c,t,a),!e.contains(c)){var f=null,p=void 0;if("number"==typeof l)p=l;else if(l){f=e.getSelectionRange();var v=l.normalize().node,h=v&&e.getElementAtCursor((0,o.getEntitySelector)(),v);h&&(l=new o.Position(h,-3)),e.select(l),p=3}else e.focus(),p=3;var g=s&&e.getSelectedRegions(),m=g&&o.VListChain.createListChains(g);e.insertNode(c,{updateCursor:!1,insertOnNewLine:i,replaceSelection:!0,position:p,insertToRegionRoot:s}),m&&(0,r.default)(e,m),3==p&&(f?e.select(f):i||e.select(c,-3))}var y=(0,o.getEntityFromElement)(c);if(i){var b=(0,o.createElement)(1,e.getDocument());if(null===(d=c.parentNode)||void 0===d||d.insertBefore(b,c.nextSibling),b&&(0,o.applyFormat)(b,e.getDefaultFormat(),e.isDarkMode(),e.getDarkColorHandler()),u){var E=null==b?void 0:b.querySelector("br"),C=E&&new o.Position(E,-2);C&&e.select(C)}}else a&&e.isFeatureEnabled("InlineEntityReadOnlyDelimiters")&&((0,o.addDelimiters)(y.wrapper),y.wrapper.nextElementSibling&&e.select(new o.Position(y.wrapper.nextElementSibling,-3)));return e.triggerContentChangedEvent("InsertEntity",y),y}},7239:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);function i(e,t,n){(0,r.default)(e,(function(){var r=e.getDocument().createElement("img");r.src=t,n&&(0,o.getObjectKeys)(n).forEach((function(e){return r.setAttribute(e,n[e])})),e.insertNode(r)}),"insertImage")}t.default=function(e,t,n){"string"==typeof t?i(e,t,n):(0,o.readFile)(t,(function(t){t&&!e.isDisposed()&&i(e,t,n)}))}},2633:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e){e.focus(),(0,r.default)(e,(function(t,n){e.queryElements("a[href]",1,o.unwrap),t&&n&&e.select(t,n)}),"removeLink")}},7758:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r,o){var i,a,l;if(!t||!n)return!1;if(l="string"==typeof t?null!==(a=null==(o=null!==(i=o||e.getContentSearcherOfCursor())&&void 0!==i?i:void 0)?void 0:o.getRangeFromText(t,r))&&void 0!==a?a:null:t){var s=e.getSelectionRange();return(null==s?void 0:s.collapsed)&&l.endContainer==s.startContainer&&l.endOffset==s.startOffset&&(r=!0),e.insertNode(n,{position:5,updateCursor:r,replaceSelection:!0,insertOnNewLine:!1,range:l}),!0}return!1}},6827:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077);t.default=function(e,t,n){t&&(0,r.default)(e,(function(){t.style.transform="rotate("+n+"deg)"}),"rotateElement")}},2391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(9733),i=n(4077),a=n(6577),l=n(6344);t.default=function(e,t){(0,i.default)(e,(function(){var n,i=e.getSelectionRangeEx(),s=i&&1===i.type,u=e.getElementAtCursor();s&&i.coordinates&&(0,l.isWholeTableSelected)(new l.VTable(i.table),i.coordinates)?function(e,t){var n=e.table;1==t?(n.style.marginLeft="auto",n.style.marginRight="auto"):2==t?(n.style.marginLeft="auto",n.style.marginRight=""):(n.style.marginLeft="",n.style.marginRight="auto")}(i,t):u&&(n=u,(0,l.findClosestElementAncestor)(n,void 0,"LI"))?function(e,t){(0,r.default)(e,(function(e,n,r){var o=(0,l.getSelectedBlockElementsInRegion)(e)[0].getStartNode(),i=(0,l.createVListFromRegion)(e,!0,o);n&&r&&(null==i||i.setAlignment(n,r,t))}),void 0,"alignList")}(e,t):function(e,t){var n="left",r="justifyLeft";1==t?(r="justifyCenter",n="center"):2==t&&(r="justifyRight",n="right"),(0,o.default)(e,r);var i=e.queryElements("[align]",1,(function(e){e.style.textAlign=n,(0,a.default)(e)}));if(0==i.length){var l=e.getElementAtCursor();l&&(0,a.default)(l)}}(e,t)}),"setAlignment")}},6304:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t){(0,r.default)(e,(function(n,r){(0,o.setColor)(n,r?"":t,!0,e.isDarkMode(),!1,e.getDarkColorHandler())}),"setBackgroundColor")}},9741:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5483),o=n(4077);t.default=function(e,t){e.focus(),(0,o.default)(e,(function(n,o){(0,r.default)(e,(function(e){e.setAttribute("dir",0==t?"ltr":"rtl"),e.style.textAlign=0==t?"left":"right"})),n&&o&&e.select(n,o)}),"setDirection")}},690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485);t.default=function(e,t){(0,r.default)(e,"font-family",(function(e,n){e.style.fontFamily=n?"":t}),"setFontName")}},9339:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485),o=n(6344);t.default=function(e,t){(0,r.default)(e,"font-size",(function(e,n){e.style.fontSize=n?"":t;var r=(0,o.getComputedStyle)(e,"line-height");r&&"normal"!=r&&(e.style.lineHeight="normal")}),"setFontSize")}},8298:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toggleHeader=void 0;var r=n(4077),o=n(6344);function i(e,t){t=Math.min(Math.max(Math.round(t),0),6),(0,r.default)(e,(function(){e.focus();var n=!1;if(e.queryElements("H1,H2,H3,H4,H5,H6",1,(function(t){n||(e.getDocument().execCommand("formatBlock",!1,"
                "),n=!0);var r=e.getDocument().createElement("div");(0,o.moveChildNodes)(r,t),e.replaceNode(t,r)})),t>0){for(var r=e.getSelectionTraverser(),i=null==r?void 0:r.currentBlockElement,a=new o.HtmlSanitizer({cssStyleCallbacks:{"font-size":function(){return!1}}});i;){var l=i.collapseToSingleElement();a.sanitize(l),i=null==r?void 0:r.getNextBlockElement()}e.getDocument().execCommand("formatBlock",!1,"")}}),"toggleHeader")}t.default=i,t.toggleHeader=i},620:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077);t.default=function(e,t){e.focus(),(0,r.default)(e,(function(){e.queryElements("img",1,(function(e){return e.setAttribute("alt",t)}))}),"setImageAltText")}},1696:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6577),i=n(6344);function a(e,t){t.forEach((function(t){var n=t.collapseToSingleElement(),r=(0,i.findClosestElementAncestor)(n,e.rootNode,"blockquote");if(r){for(n==r&&(n=(0,i.wrap)((0,i.toArray)(n.childNodes)));n&&(0,i.isNodeInRegion)(e,n)&&"BLOCKQUOTE"!=(0,i.getTagOfNode)(n);)n=(0,i.splitBalancedNodeRange)(n);n&&(0,i.isNodeInRegion)(e,n)&&(0,i.unwrap)(n)}}))}function l(e,t){var n;return(null===(n=e.items[0])||void 0===n?void 0:n.getNode())==t&&e.getListItemIndex(t)==(e.getStart()||1)}function s(e,t,n){return 0==e||t.getElementAtCursor("blockquote",n)}t.default=function(e,t){var n=0==t?function(e,t){var n=(0,i.collapseNodesInRegion)(e,t);(0,i.wrap)(n,2);var r=[];n.forEach((function(e){return(0,o.default)(e,r)}))}:a;(0,r.default)(e,(function(r,o,a){for(var u=(0,i.getSelectedBlockElementsInRegion)(r,!0),d=[[]],c=0;c{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){void 0===n&&(n=1),(0,r.default)(e,(function(){e.focus();var r=e.getSelectedRegions();if(r[0]){var i=(0,o.createVListFromRegion)(r[0],!1,t);i&&(i.split(t,n),i.writeBack(e.isFeatureEnabled("ReuseAllAncestorListElements"),e.isFeatureEnabled("DisableListChain")))}}),"setOrderedListNumbering")}},8683:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485),o=n(6344);t.default=function(e,t,n){(0,r.default)(e,"color",(function(r,i){n&&!n(r)||(0,o.setColor)(r,i?"":t,!1,e.isDarkMode(),!1,e.getDarkColorHandler())}),"setTextColor")}},5936:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(949),o=n(6344),i=function(e){e.style.borderLeft="3px solid",e.style.borderColor="#C8C8C8",e.style.paddingLeft="10px",e.style.color="#666666"};t.default=function(e,t){(0,r.default)(e,(function(e){var n=(0,o.wrap)(e,"blockquote");(t||i)(n)}),(function(){return 0==e.queryElements("blockquote",1,o.unwrap).length}),"toggleBlockQuote")}},6823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"bold","toggleBold")}},2473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5367);t.default=function(e,t,n){(0,r.default)(e,2,void 0,!1,void 0,t,n)}},8761:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(949),o=n(6344),i="code",a="pre>"+i;t.default=function(e,t){(0,r.default)(e,(function(e){var n=(0,o.wrap)(e,i),r=(0,o.wrap)(n,"pre");null==t||t(r)}),(function(){return 0==e.queryElements(a,1,(function(e){if(!e.previousSibling&&!e.nextSibling){var t=e.parentNode;(0,o.unwrap)(e),t&&(0,o.unwrap)(t)}})).length}),"toggleCodeBlock")}},926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"italic","toggleItalic")}},5485:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5367);t.default=function(e,t,n,o){(0,r.default)(e,1,t,void 0,n,void 0,o)}},2809:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"strikeThrough","toggleStrikethrough")}},9752:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"subscript","toggleSubscript")}},9282:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"superscript","toggleSuperscript")}},3275:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"underline","toggleUnderline")}},4548:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.experimentCommitListChains=t.commitListChains=t.blockFormat=t.toggleListType=t.applyCellShading=t.toggleHeader=t.setHeadingLevel=t.toggleUnderline=t.toggleSuperscript=t.toggleSubscript=t.toggleStrikethrough=t.toggleCodeBlock=t.toggleBlockQuote=t.setOrderedListNumbering=t.toggleNumbering=t.toggleItalic=t.toggleBullet=t.toggleBold=t.changeCapitalization=t.setIndentation=t.setImageAltText=t.setFontSize=t.setFontName=t.setDirection=t.setTextColor=t.setBackgroundColor=t.setAlignment=t.rotateElement=t.replaceWithNode=t.removeLink=t.formatTable=t.editTable=t.insertTable=t.insertImage=t.insertEntity=t.getElementBasedFormatState=t.getFormatState=t.createLink=t.clearFormat=t.clearBlockFormat=t.FONT_SIZES=t.changeFontSize=void 0;var r=n(5177);Object.defineProperty(t,"changeFontSize",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"FONT_SIZES",{enumerable:!0,get:function(){return r.FONT_SIZES}});var o=n(4234);Object.defineProperty(t,"clearBlockFormat",{enumerable:!0,get:function(){return o.default}});var i=n(4040);Object.defineProperty(t,"clearFormat",{enumerable:!0,get:function(){return i.default}});var a=n(2149);Object.defineProperty(t,"createLink",{enumerable:!0,get:function(){return a.default}});var l=n(3956);Object.defineProperty(t,"getFormatState",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"getElementBasedFormatState",{enumerable:!0,get:function(){return l.getElementBasedFormatState}});var s=n(9540);Object.defineProperty(t,"insertEntity",{enumerable:!0,get:function(){return s.default}});var u=n(7239);Object.defineProperty(t,"insertImage",{enumerable:!0,get:function(){return u.default}});var d=n(6725);Object.defineProperty(t,"insertTable",{enumerable:!0,get:function(){return d.default}});var c=n(5443);Object.defineProperty(t,"editTable",{enumerable:!0,get:function(){return c.default}});var f=n(3242);Object.defineProperty(t,"formatTable",{enumerable:!0,get:function(){return f.default}});var p=n(2633);Object.defineProperty(t,"removeLink",{enumerable:!0,get:function(){return p.default}});var v=n(7758);Object.defineProperty(t,"replaceWithNode",{enumerable:!0,get:function(){return v.default}});var h=n(6827);Object.defineProperty(t,"rotateElement",{enumerable:!0,get:function(){return h.default}});var g=n(2391);Object.defineProperty(t,"setAlignment",{enumerable:!0,get:function(){return g.default}});var m=n(6304);Object.defineProperty(t,"setBackgroundColor",{enumerable:!0,get:function(){return m.default}});var y=n(8683);Object.defineProperty(t,"setTextColor",{enumerable:!0,get:function(){return y.default}});var b=n(9741);Object.defineProperty(t,"setDirection",{enumerable:!0,get:function(){return b.default}});var E=n(690);Object.defineProperty(t,"setFontName",{enumerable:!0,get:function(){return E.default}});var C=n(9339);Object.defineProperty(t,"setFontSize",{enumerable:!0,get:function(){return C.default}});var S=n(620);Object.defineProperty(t,"setImageAltText",{enumerable:!0,get:function(){return S.default}});var T=n(1696);Object.defineProperty(t,"setIndentation",{enumerable:!0,get:function(){return T.default}});var P=n(8106);Object.defineProperty(t,"changeCapitalization",{enumerable:!0,get:function(){return P.default}});var _=n(6823);Object.defineProperty(t,"toggleBold",{enumerable:!0,get:function(){return _.default}});var w=n(2473);Object.defineProperty(t,"toggleBullet",{enumerable:!0,get:function(){return w.default}});var O=n(926);Object.defineProperty(t,"toggleItalic",{enumerable:!0,get:function(){return O.default}});var D=n(5485);Object.defineProperty(t,"toggleNumbering",{enumerable:!0,get:function(){return D.default}});var M=n(8073);Object.defineProperty(t,"setOrderedListNumbering",{enumerable:!0,get:function(){return M.default}});var A=n(5936);Object.defineProperty(t,"toggleBlockQuote",{enumerable:!0,get:function(){return A.default}});var R=n(8761);Object.defineProperty(t,"toggleCodeBlock",{enumerable:!0,get:function(){return R.default}});var I=n(2809);Object.defineProperty(t,"toggleStrikethrough",{enumerable:!0,get:function(){return I.default}});var L=n(9752);Object.defineProperty(t,"toggleSubscript",{enumerable:!0,get:function(){return L.default}});var N=n(9282);Object.defineProperty(t,"toggleSuperscript",{enumerable:!0,get:function(){return N.default}});var x=n(3275);Object.defineProperty(t,"toggleUnderline",{enumerable:!0,get:function(){return x.default}});var k=n(8298);Object.defineProperty(t,"setHeadingLevel",{enumerable:!0,get:function(){return k.default}}),Object.defineProperty(t,"toggleHeader",{enumerable:!0,get:function(){return k.toggleHeader}});var j=n(7622);Object.defineProperty(t,"applyCellShading",{enumerable:!0,get:function(){return j.default}});var B=n(5367);Object.defineProperty(t,"toggleListType",{enumerable:!0,get:function(){return B.default}});var F=n(9703);Object.defineProperty(t,"blockFormat",{enumerable:!0,get:function(){return F.default}});var H=n(19);Object.defineProperty(t,"commitListChains",{enumerable:!0,get:function(){return H.default}}),Object.defineProperty(t,"experimentCommitListChains",{enumerable:!0,get:function(){return H.experimentCommitListChains}})},7622:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4077),i=n(6344);t.default=function(e,t){e.focus(),(0,o.default)(e,(function(){e.getSelectedRegions().forEach((function(n){if((0,i.safeInstanceOf)(n.rootNode,"HTMLTableCellElement")){(0,i.setColor)(n.rootNode,t,!0,e.isDarkMode(),!0,e.getDarkColorHandler());var o=(0,i.getTableCellMetadata)(n.rootNode);(0,i.saveTableCellMetadata)(n.rootNode,(0,r.__assign)((0,r.__assign)({},o),{bgColorOverride:!0}))}}))}),"applyCellShading")}},5443:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);function i(e){return null==e}t.default=function(e,t){var n=e.getElementAtCursor("TD,TH");n&&(0,r.default)(e,(function(){var r=new o.VTable(n);if(function(e,t){var n,r=e.getSelectionRangeEx();r&&1===r.type&&(t.selection=null!==(n=r.coordinates)&&void 0!==n?n:null)}(e,r),r.edit(t),r.writeBack(!1,e.getDarkColorHandler()),e.transformToDarkColor(r.table),e.focus(),!i(r.row)&&!i(r.col)){var a=function(e,t,n){var r=t,o=n;switch(e){case 0:o=0;break;case 1:r+=1,o=0;break;case 2:r=0;break;case 3:r=0,o+=1}return{newRow:r,newCol:o}}(t,r.row,r.col),l=a.newCol,s=a.newRow,u=r.getCell(s,l).td;u&&e.select(u,0)}}),"editTable")}},3242:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){(n=n||e.getElementAtCursor("TABLE"))&&(0,r.default)(e,(function(r,i){if(n){var a=new o.VTable(n);a.applyFormat(t),a.writeBack(!1,e.getDarkColorHandler()),e.transformToDarkColor(a.table),e.focus(),r&&i&&e.select(r,i)}}),"formatTable")}},6725:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6304),i=n(6344);function a(e){return e<=4?"120px":e<=6?"100px":"70px"}t.default=function(e,t,n,l){var s=e.getDocument(),u=s.createElement("table");u.cellSpacing="0",u.cellPadding="1";for(var d=0;d{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){e.focus();var i=e.getSelectionRangeEx(),a=function(e,n){return e.isContentEditable&&t(e,n)};if(i&&i.areAllCollapsed){var l=i.ranges[0].startContainer;"SPAN"!=(0,o.getTagOfNode)(l)||l.firstChild&&("BR"!=(0,o.getTagOfNode)(l.firstChild)||l.firstChild.nextSibling)?(e.triggerPluginEvent(13,{formatState:{},formatCallback:t}),e.triggerContentChangedEvent("Format")):(e.addUndoSnapshot(),a(l))}else(0,r.default)(e,(function(){var t,n;i.ranges.forEach((function(r){var o=e.getSelectionTraverser(r);if(o)for(var i=o&&o.currentInlineElement;i;){var l=o.getNextInlineElement();i.applyStyle((function(e,r){a(e,r),t=t||e,n=e})),i=l}})),t&&n&&0==i.type&&e.select(t,-2,n,-3)}),n)}},4485:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t,n,i){var a=[];(0,r.default)(e,(function(t,r){n(t,r);var o=e.getElementAtCursor("LI",t);o&&-1===a.indexOf(o)&&a.push(o)}),i),function(e,t){e.forEach((function(e){(0,o.safeInstanceOf)(e,"HTMLLIElement")&&(0,o.setListItemStyle)(e,t)}))}(a,[t])}},9703:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(4077),i=n(6344);t.default=function(e,t,n,a){e.focus();var l=e.getSelectionRangeEx();(0,o.default)(e,(function(o,a){if(!n||n()){var s=e.getSelectedRegions();if(s.length>0){var u=i.VListChain.createListChains(s,null==o?void 0:o.node);s.forEach((function(e){return t(e,o,a,u)})),(0,r.default)(e,u)}}0==l.type&&o&&a?e.select(o,a):e.select(l)}),a)}},949:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6344);t.default=function(e,t,n,i){(0,r.default)(e,(function(e){var n=(0,o.getSelectedBlockElementsInRegion)(e,!0),r=(0,o.collapseNodesInRegion)(e,n);if(r.length>0){if(1==r.length){var i=(0,o.getTagOfNode)(r[0]);"BR"==i?r=[(0,o.wrap)(r[0])]:"LI"!=i&&"TD"!=i||(r=(0,o.toArray)(r[0].childNodes))}for(;r[0]&&r[0].parentNode&&(0,o.isNodeInRegion)(e,r[0].parentNode)&&r.some((function(e){return"LI"==(0,o.getTagOfNode)(e)}));){var a=(0,o.splitBalancedNodeRange)(r);r=a?[a]:[]}t(r)}}),n,i)}},5483:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){var t=e.getStartNode();return t==e.getEndNode()&&3==t.nodeType&&["TR","TABLE"].indexOf((0,r.getTagOfNode)(t.parentNode))>=0}t.default=function(e,t){var n=e.getSelectionTraverser();if(n){for(var r=n.currentBlockElement,i=[];r;)o(r)||i.push(r),r=n.getNextBlockElement();i.forEach((function(e){var n=e.collapseToSingleElement();t(n)}))}}},19:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.experimentCommitListChains=void 0;var r=n(6344);function o(e,t){if((null==t?void 0:t.length)>0){var n=e.getSelectionRange(),o=n&&r.Position.getStart(n),i=n&&r.Position.getEnd(n),a=e.isFeatureEnabled("ReuseAllAncestorListElements"),l=e.isFeatureEnabled("DisableListChain");t.forEach((function(e){return e.commit(a,l)})),o&&i&&e.select(o,i)}}t.default=o,t.experimentCommitListChains=o},9733:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){e.focus();var i=function(){return e.getDocument().execCommand(t,!1,void 0)},a=e.getSelectionRangeEx();if(a&&a.areAllCollapsed){e.addUndoSnapshot();var l=e.getPendableFormatState(!1);i();var s=(0,o.getObjectKeys)(o.PendableFormatCommandMap).filter((function(e){return o.PendableFormatCommandMap[e]==t}))[0];s&&(l[s]=!l[s],e.triggerPluginEvent(13,{formatState:l}))}else(0,r.default)(e,(function(){var t=0!=a.type;a.ranges.forEach((function(n){t&&e.select(n),i()})),t&&e.select(a)}),n)}},4077:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){e.addUndoSnapshot(t,"Format",void 0,n&&""!=n?{formatApiName:n}:void 0)}},6577:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){if((0,r.safeInstanceOf)(e,"HTMLElement")){var n=e.style.textAlign,o=(0,r.findClosestElementAncestor)(e,void 0,"blockquote");if(!o)return;var i=(a=e,"rtl"==(0,r.getComputedStyle)(a,"direction")||"rtl"==a.getAttribute("dir"));if(t){if(t.indexOf(o)>-1)return;t.push(o)}for(;o;)"center"==n?i?(o.style.removeProperty("marginInlineEnd"),o.style.marginInlineStart="auto"):(o.style.removeProperty("marginInlineStart"),o.style.marginInlineEnd="auto"):(o.style.removeProperty("marginInlineEnd"),o.style.removeProperty("marginInlineStart")),o=(0,r.findClosestElementAncestor)(o.parentElement,void 0,"blockquote")}var a}},5367:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6344);t.default=function(e,t,n,i,a,l,s){void 0===n&&(n=0),void 0===i&&(i=!0),(0,r.default)(e,(function(r,s,u,d){var c,f,p=n>0&&d.filter((function(e){return e.canAppendAtCursor(n)}))[0],v=null===(f=(0,o.getBlockElementAtNode)(r.rootNode,null!==(c=null==s?void 0:s.node)&&void 0!==c?c:null))||void 0===f?void 0:f.collapseToSingleElement();if(v){var h=p&&u&&(null==s?void 0:s.equalTo(u))?p.createVListAtBlock(v,n):(0,o.createVListFromRegion)(r,1!==n&&i);h&&s&&u&&(h.changeListType(s,u,t),e.isFeatureEnabled("AutoFormatList")&&h.setListStyleType(a,l),h.writeBack(e.isFeatureEnabled("ReuseAllAncestorListElements"),e.isFeatureEnabled("DisableListChain")))}}),void 0,s||"toggleListType")}},9484:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addUndoSnapshot=void 0;var r=n(7582),o=n(6344);function i(e,t,n){var i;if(!e.lifecycle.shadowEditFragment){var a=e.api.getSelectionRangeEx(e),l=e.lifecycle.isDarkMode,s=function(e,t,n){switch(null==t?void 0:t.type){case 1:return(0,r.__assign)({type:1,tableId:t.table.id,isDarkMode:!!n},t.coordinates);case 2:return{type:2,imageId:t.image.id,isDarkMode:!!n};case 0:return(0,r.__assign)({type:0,isDarkMode:!!n,start:[],end:[]},(0,o.getSelectionPath)(e,t.ranges[0])||{})}}(e.contentDiv,a,l)||null;e.undo.snapshotsService.addSnapshot({html:e.contentDiv.innerHTML,metadata:s,knownColors:(null===(i=e.darkColorHandler)||void 0===i?void 0:i.getKnownColorsCopy())||[],entityStates:n},t),e.undo.hasNewContent=!1}}t.addUndoSnapshot=function(e,t,n,r,a){var l,s,u,d=e.undo,c=d.isNested;c||(d.isNested=!0,!e.undo.hasNewContent&&(null==a?void 0:a.getEntityState)&&t||i(e,r,null===(l=null==a?void 0:a.getEntityState)||void 0===l?void 0:l.call(a)));try{var f;t&&(u=t((f=e.api.getSelectionRange(e,!0))&&o.Position.getStart(f).normalize(),f&&o.Position.getEnd(f).normalize()),c||i(e,!1,null===(s=null==a?void 0:a.getEntityState)||void 0===s?void 0:s.call(a)))}finally{c||(d.isNested=!1)}if(t&&n){var p={eventType:7,source:n,data:u,additionalData:a};e.api.triggerEvent(e,p,!0)}r&&(f=e.api.getSelectionRange(e,!1))&&(e.undo.hasNewContent=!1,e.undo.autoCompletePosition=o.Position.getStart(f))}},9457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attachDomEvent=void 0;var r=n(6344);t.attachDomEvent=function(e,t){var n=(0,r.getObjectKeys)(t||{}).map((function(n){var r,o,i=(r=t[n],o={pluginEventType:null,beforeDispatch:null},"number"==typeof r?o.pluginEventType=r:"function"==typeof r?o.beforeDispatch=r:"object"==typeof r&&(o=r),o),a=i.pluginEventType,l=i.beforeDispatch,s=n,u=function(t){l&&l(t),null!=a&&e.api.triggerEvent(e,{eventType:a,rawEvent:t},!1)};return e.contentDiv.addEventListener(s,u),function(){e.contentDiv.removeEventListener(s,u)}}));return function(){return n.forEach((function(e){return e()}))}}},6447:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.coreApiMap=void 0;var r=n(9484),o=n(9457),i=n(3942),a=n(9943),l=n(3221),s=n(5049),u=n(5719),d=n(1467),c=n(2634),f=n(2628),p=n(5149),v=n(1844),h=n(6651),g=n(674),m=n(4830),y=n(7243),b=n(1036),E=n(1282),C=n(6233),S=n(5764),T=n(857);t.coreApiMap={attachDomEvent:o.attachDomEvent,addUndoSnapshot:r.addUndoSnapshot,createPasteFragment:i.createPasteFragment,ensureTypeInContainer:a.ensureTypeInContainer,focus:l.focus,getContent:s.getContent,getSelectionRange:d.getSelectionRange,getSelectionRangeEx:c.getSelectionRangeEx,getStyleBasedFormatState:f.getStyleBasedFormatState,getPendableFormatState:u.getPendableFormatState,hasFocus:p.hasFocus,insertNode:v.insertNode,restoreUndoSnapshot:h.restoreUndoSnapshot,select:g.select,selectRange:y.selectRange,setContent:E.setContent,switchShadowEdit:C.switchShadowEdit,transformColor:S.transformColor,triggerEvent:T.triggerEvent,selectTable:b.selectTable,selectImage:m.selectImage}},3942:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPasteFragment=void 0;var r=n(6344);t.createPasteFragment=function(e,t,n,o,i,a){if(void 0===a&&(a=!1),!t)return null;var l=function(e,t,n){var o=(0,r.createDefaultHtmlSanitizerOptions)();return o.cssStyleCallbacks["caret-color"]=function(){return!1},{eventType:10,clipboardData:t,fragment:e.contentDiv.ownerDocument.createDocumentFragment(),sanitizingOption:o,htmlBefore:"",htmlAfter:"",htmlAttributes:{},pasteType:n}}(e,t,(0,r.getPasteType)(o,i,a));return function(e,t,n,o,i,a,l){var s=l.fragment,u=t.rawHtml,d=t.text,c=t.imageDataUri,f=u?(new DOMParser).parseFromString(e.trustedHTMLHandler(u),"text/html"):void 0;if((0,r.retrieveMetadataFromClipboard)(f,l,e.trustedHTMLHandler),a&&c||!o&&!d&&c)(0,r.handleImagePaste)(c,s);else if(!o&&u&&f&&f.body){if((0,r.moveChildNodes)(s,null==f?void 0:f.body),i&&n){var p=function(e,t){var n=e.api.getPendableFormatState(e,!0),r=e.api.getStyleBasedFormatState(e,t);return{fontFamily:r.fontName,fontSize:r.fontSize,textColor:r.textColor,backgroundColor:r.backgroundColor,textColors:r.textColors,backgroundColors:r.backgroundColors,bold:n.isBold,italic:n.isItalic,underline:n.isUnderline}}(e,n.node);(0,r.applyTextStyle)(s,(function(e){return(0,r.applyFormat)(e,p)}))}}else d&&(0,r.handleTextPaste)(d,n,s);return 1!==l.pasteType&&e.api.triggerEvent(e,l,!0),(0,r.sanitizePasteContent)(l,n),s}(e,t,n,o,i,a,l)}},9943:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ensureTypeInContainer=void 0;var r=n(6344);t.ensureTypeInContainer=function(e,t,n){var o,i=(0,r.findClosestElementAncestor)(t.node,e.contentDiv,"table");i&&(o=i.querySelector("td,th"))&&(t=new r.Position(o,0)),t=t.normalize();var a,l=(0,r.getBlockElementAtNode)(e.contentDiv,t.node);if(l){if(a=l.collapseToSingleElement(),(0,r.isNodeEmpty)(a,!1,!0)){var s=a.ownerDocument.createElement("br");a.append(s)}var u=(0,r.isNodeEmpty)(a)||n&&function(e,t){return(0,r.safeInstanceOf)(e.target,"Node")&&e.target.contains(t)&&e.key===t.innerText}(n,a);a=a&&u?a:null}else a=(0,r.createElement)(1,e.contentDiv.ownerDocument),e.api.insertNode(e,a,{position:1,updateCursor:!1,replaceSelection:!1,insertOnNewLine:!1}),t=new r.Position(a,0);a&&e.lifecycle.defaultFormat&&(0,r.applyFormat)(a,e.lifecycle.defaultFormat,e.lifecycle.isDarkMode,e.darkColorHandler),n&&e.api.selectRange(e,(0,r.createRange)(new r.Position(t)))}},3221:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.focus=void 0;var r=n(6344);t.focus=function(e){if(!e.lifecycle.shadowEditFragment){if(!(e.api.hasFocus(e)&&e.api.getSelectionRange(e,!1)||e.domEvent.selectionRange&&e.api.selectRange(e,e.domEvent.selectionRange,!0))){var t=(0,r.getFirstLeafNode)(e.contentDiv)||e.contentDiv;e.api.selectRange(e,(0,r.createRange)(t,0),!0)}e.domEvent.selectionRange=null,e.api.hasFocus(e)||e.contentDiv.focus()}}},5049:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getContent=void 0;var r=n(6344);t.getContent=function(e,t){var n,o,i="",a=0==t,l=2==t,s=e.lifecycle.shadowEditFragment||e.contentDiv;if(4==t)i=s.textContent;else if(3==t)i=(0,r.getTextContent)(s);else{var u=(n=s,(0,r.safeInstanceOf)(n,"DocumentFragment")?(o=n.ownerDocument.createElement("div")).appendChild(n.cloneNode(!0)):o=n.cloneNode(!0),o);u.normalize();var d=e.api.getSelectionRange(e,!0),c=l?e.lifecycle.shadowEditFragment?e.lifecycle.shadowEditSelectionPath:d?(0,r.getSelectionPath)(e.contentDiv,d):null:null,f=c&&(0,r.createRange)(u,c.start,c.end);e.api.transformColor(e,u,!1,null,1,!0,e.lifecycle.isDarkMode),a?(e.api.triggerEvent(e,{eventType:8,clonedRoot:u},!0),i=u.innerHTML):i=f?(0,r.getHtmlWithSelectionPath)(u,f):u.innerHTML}return null!=i?i:""}},5719:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPendableFormatState=void 0;var r=n(6344);t.getPendableFormatState=function(e,t){var n,a=e.api.getSelectionRange(e,!0),l=e.pendingFormatState.pendableFormatState,s=null===(n=e.pendingFormatState.pendableFormatPosition)||void 0===n?void 0:n.normalize(),u=a&&r.Position.getStart(a).normalize(),d=u&&s&&a.collapsed&&u.equalTo(s);return a&&l&&d&&!t?l:u?function(e,t){for(var n=t.node,a={},l=[],s=function(){var e=(0,r.getTagOfNode)(n),t=1==n.nodeType&&n.style;e&&t&&(0,r.getObjectKeys)(o).forEach((function(n){l.indexOf(n)>=0||(a[n]=a[n]||o[n](e,t),i[n](t)&&l.push(n))})),n=n.parentNode};n&&(0,r.contains)(e.contentDiv,n);)s();return a}(e,u):{}};var o={isBold:function(e,t){return"B"==e||"STRONG"==e||"H1"==e||"H2"==e||"H3"==e||"H4"==e||"H5"==e||"H6"==e||parseInt(t.fontWeight)>=700||["bold","bolder"].indexOf(t.fontWeight)>=0},isUnderline:function(e,t){return"U"==e||t.textDecoration.indexOf("underline")>=0},isItalic:function(e,t){return"I"==e||"EM"==e||"italic"===t.fontStyle},isSubscript:function(e,t){return"SUB"==e||"sub"===t.verticalAlign},isSuperscript:function(e,t){return"SUP"==e||"super"===t.verticalAlign},isStrikeThrough:function(e,t){return"S"==e||"STRIKE"==e||t.textDecoration.indexOf("line-through")>=0}},i={isBold:function(e){return""!==e.fontWeight&&parseInt(e.fontWeight)<700||"normal"===e.fontWeight},isUnderline:function(e){return""!==e.textDecoration&&e.textDecoration.indexOf("underline")<0},isItalic:function(e){return""!==e.fontStyle&&"italic"!==e.fontStyle},isSubscript:function(e){return""!==e.verticalAlign&&"sub"!==e.verticalAlign},isSuperscript:function(e){return""!==e.verticalAlign&&"super"!==e.verticalAlign},isStrikeThrough:function(e){return""!==e.textDecoration&&e.textDecoration.indexOf("line-through")<0}}},1467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRange=void 0;var r=n(6344);t.getSelectionRange=function(e,t){var n,o=null;if(e.lifecycle.shadowEditFragment)return e.lifecycle.shadowEditSelectionPath&&(0,r.createRange)(e.contentDiv,e.lifecycle.shadowEditSelectionPath.start,e.lifecycle.shadowEditSelectionPath.end);if(!t||e.api.hasFocus(e)){var i=null===(n=e.contentDiv.ownerDocument.defaultView)||void 0===n?void 0:n.getSelection();if(i&&i.rangeCount>0){var a=i.getRangeAt(0);(0,r.contains)(e.contentDiv,a)&&(o=a)}}return!o&&t&&(o=e.domEvent.selectionRange),o}},2634:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRangeEx=void 0;var r=n(6344);function o(e){return{type:0,ranges:e,areAllCollapsed:i(e)}}function i(e){return e.filter((function(e){return null==e?void 0:e.collapsed})).length==e.length}t.getSelectionRangeEx=function(e){var t,n,a;if(e.lifecycle.shadowEditFragment){var l,s=e.lifecycle,u=s.shadowEditTableSelectionPath,d=s.shadowEditSelectionPath,c=s.shadowEditImageSelectionPath;if(((null==u?void 0:u.length)||0)>0)return{type:1,ranges:l=e.lifecycle.shadowEditTableSelectionPath.map((function(t){return(0,r.createRange)(e.contentDiv,t.start,t.end)})),areAllCollapsed:i(l),table:(0,r.findClosestElementAncestor)(l[0].startContainer,e.contentDiv,"table"),coordinates:void 0};if(((null==c?void 0:c.length)||0)>0)return{type:2,ranges:l=e.lifecycle.shadowEditImageSelectionPath.map((function(t){return(0,r.createRange)(e.contentDiv,t.start,t.end)})),areAllCollapsed:i(l),image:(0,r.findClosestElementAncestor)(l[0].startContainer,e.contentDiv,"img"),imageId:void 0};var f=d&&(0,r.createRange)(e.contentDiv,d.start,d.end);return o(f?[f]:[])}if(e.api.hasFocus(e)){if(e.domEvent.tableSelectionRange)return e.domEvent.tableSelectionRange;if(e.domEvent.imageSelectionRange)return e.domEvent.imageSelectionRange;var p=null===(t=e.contentDiv.ownerDocument.defaultView)||void 0===t?void 0:t.getSelection();if(p&&p.rangeCount>0){var v=p.getRangeAt(0);if((0,r.contains)(e.contentDiv,v))return o([v])}}return null!==(a=null!==(n=e.domEvent.tableSelectionRange)&&void 0!==n?n:e.domEvent.imageSelectionRange)&&void 0!==a?a:o(e.domEvent.selectionRange?[e.domEvent.selectionRange]:[])}},2628:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getStyleBasedFormatState=void 0;var r=n(6344);t.getStyleBasedFormatState=function(e,t){if(!t)return{};var n=[],o=e.pendingFormatState.pendableFormatSpan;o&&(n=[o.style.fontFamily,o.style.fontSize,o.style.color,o.style.backgroundColor]);for(var i,a,l=t?(0,r.getComputedStyles)(t,["font-family","font-size","color","background-color","line-height","margin-top","margin-bottom","text-align","direction"]):[],s=e.contentDiv,u=e.darkColorHandler;t&&(0,r.contains)(s,t,!0)&&(!i||!a);){if(1==t.nodeType){var d=t;i=i||d.style.getPropertyValue("color"),a=a||d.style.getPropertyValue("background-color")}t=t.parentNode}e.lifecycle.isDarkMode||t!=e.contentDiv||(i=i||l[2],a=a||l[3]);var c=u.parseColorValue(n[2]||i),f=u.parseColorValue(n[3]||a);return{fontName:n[0]||l[0],fontSize:n[1]||l[1],textColor:c.lightModeColor,backgroundColor:f.lightModeColor,textColors:c.darkModeColor?{lightModeColor:c.lightModeColor,darkModeColor:c.darkModeColor}:void 0,backgroundColors:f.darkModeColor?{lightModeColor:f.lightModeColor,darkModeColor:f.darkModeColor}:void 0,lineHeight:l[4],marginTop:l[5],marginBottom:l[6],textAlign:l[7],direction:l[8]}}},5149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasFocus=void 0;var r=n(6344);t.hasFocus=function(e){var t=e.contentDiv.ownerDocument.activeElement;return!(!t||!(0,r.contains)(e.contentDiv,t,!0))}},1844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.insertNode=void 0;var r=n(6344);t.insertNode=function(e,t,n){var o;n=n||{position:3,insertOnNewLine:!1,updateCursor:!0,replaceSelection:!0,insertToRegionRoot:!1};var i=e.contentDiv;return n.updateCursor&&e.api.focus(e),4==n.position?(null===(o=i.parentNode)||void 0===o||o.insertBefore(t,i.nextSibling),!0):(e.api.transformColor(e,t,!0,(function(){var o,a;if(n)switch(n.position){case 0:case 1:var l,s=0==n.position,u=(0,r.getFirstLastBlockElement)(i,s);if(u){var d=s?u.getStartNode():u.getEndNode();n.insertOnNewLine||3==d.nodeType||(0,r.isVoidHtmlElement)(d)?(0,r.safeInstanceOf)(t,"DocumentFragment")?(l=(0,r.toArray)(t.childNodes),null===(o=d.parentNode)||void 0===o||o.insertBefore(t,s?d:d.nextSibling)):l=null===(a=d.parentNode)||void 0===a?void 0:a.insertBefore(t,s?d:d.nextSibling):l=d.insertBefore(t,s?d.firstChild:null)}else l=i.appendChild(t);if(l&&n.insertOnNewLine){var c=Array.isArray(l)?l:[l];(0,r.isBlockElement)(c[0])&&(0,r.isBlockElement)(c[c.length-1])||(0,r.wrap)(c)}break;case 2:var f=i.appendChild(t);f&&n.insertOnNewLine&&!(0,r.isBlockElement)(f)&&(0,r.wrap)(f);break;case 5:case 3:var p=function(e,t){var n=e.api.getSelectionRange(e,!0),r=null;return 5==t.position?(r=n,n=t.range):n&&(r=n.cloneRange()),{range:n,rangeToRestore:r}}(e,n),v=p.range,h=p.rangeToRestore;if(!v)return;n.replaceSelection&&!v.collapsed&&v.deleteContents();var g=r.Position.getStart(v),m=void 0;g=n.insertOnNewLine&&n.insertToRegionRoot?function(e,t,n){var o=(0,r.getRegionsFromRange)(e.contentDiv,t,0)[0],i=n.node;if(o){if(3!=i.nodeType||n.isAtEnd||(i=(0,r.splitTextNode)(i,n.offset,!0)),i!=o.rootNode)for(;i&&i.parentNode!=o.rootNode;)(0,r.splitParentNode)(i,!1),i=i.parentNode;i&&(n=new r.Position(i,-3))}return n}(e,v,g):n.insertOnNewLine&&(m=(0,r.getBlockElementAtNode)(i,g.normalize().node))?function(e,t,n){var o=new r.Position(e.getEndNode(),-3);if((0,r.safeInstanceOf)(o.node,"HTMLTableRowElement")){var i=t.contentDiv.ownerDocument.createElement("div");(0,r.createRange)(n).insertNode(i),o=new r.Position(i,0)}return o}(m,e,g):(0,r.adjustInsertPosition)(i,t,g,v);var y=11==t.nodeType?t.lastChild:t;(v=(0,r.createRange)(g)).insertNode(t),n.updateCursor&&y&&(h=(0,r.createRange)(new r.Position(y,-3).normalize())),h&&e.api.selectRange(e,h)}}),0),!0)}},6651:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreUndoSnapshot=void 0;var r=n(6344);t.restoreUndoSnapshot=function(e,t){var n,o;e.undo.hasNewContent&&t<0&&e.api.addUndoSnapshot(e,null,null,!1);var i=e.undo.snapshotsService.move(t);if(i&&null!=i.html)try{e.undo.isRestoring=!0,e.api.setContent(e,i.html,!0,null!==(n=i.metadata)&&void 0!==n?n:void 0);var a=e.darkColorHandler,l=e.lifecycle.isDarkMode;i.knownColors.forEach((function(e){a.registerColor(e.lightModeColor,l,e.darkModeColor)})),null===(o=i.entityStates)||void 0===o||o.forEach((function(t){var n=t.type,o=t.id,i=t.state,a=(0,r.queryElements)(e.contentDiv,(0,r.getEntitySelector)(n,o))[0],l=a&&(0,r.getEntityFromElement)(a);l&&e.api.triggerEvent(e,{eventType:15,operation:11,entity:l,state:i},!1)}))}finally{e.undo.isRestoring=!1}}},674:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.select=void 0;var r=n(6344);t.select=function(e,t,n,o,i){var a,l,s=null;if(function(e){var t=e;return t&&"object"==typeof t&&"number"==typeof t.type&&Array.isArray(t.ranges)}(t))s=t;else if((0,r.safeInstanceOf)(t,"HTMLTableElement")&&(null===(a=n)||a&&"object"==typeof a&&"object"==typeof a.firstCell&&"object"==typeof a.lastCell))s={type:1,ranges:[],areAllCollapsed:!1,table:t,coordinates:null!=n?n:void 0};else if((0,r.safeInstanceOf)(t,"HTMLImageElement")&&void 0===n)s={type:2,ranges:[],areAllCollapsed:!1,image:t};else{var u=t?(0,r.safeInstanceOf)(t,"Range")?t:(l=t)&&"object"==typeof l&&Array.isArray(l.start)&&Array.isArray(l.end)?(0,r.createRange)(e.contentDiv,t.start,t.end):function(e){var t=e;return t&&"object"==typeof t&&"object"==typeof t.node&&"number"==typeof t.offset}(t)||(0,r.safeInstanceOf)(t,"Node")?(0,r.createRange)(t,n,o,i):null:null;s=u?{type:0,ranges:[u],areAllCollapsed:u.collapsed}:null}if(s){switch(s.type){case 1:(0,r.contains)(e.contentDiv,s.table)&&(e.domEvent.imageSelectionRange=e.api.selectImage(e,null),e.domEvent.tableSelectionRange=e.api.selectTable(e,s.table,s.coordinates),s=e.domEvent.tableSelectionRange);break;case 2:(0,r.contains)(e.contentDiv,s.image)&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,s.image),s=e.domEvent.imageSelectionRange);break;case 0:e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,null),(0,r.contains)(e.contentDiv,s.ranges[0])?e.api.selectRange(e,s.ranges[0]):s=null}e.api.triggerEvent(e,{eventType:22,selectionRangeEx:s},!0)}else e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,null);return!!s}},4830:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectImage=void 0;var r=n(3505),o=n(6344),i="imageStyle";t.selectImage=function(e,t){s(e);var n=null;if(t){var i=(0,o.createRange)(t);(0,r.default)(t,"imageSelected"),(0,r.default)(e.contentDiv,"contentDiv_"),e.api.selectRange(e,(0,o.createRange)(new o.Position(t,-3))),a(e,t),n={type:2,ranges:[i],image:t,areAllCollapsed:i.collapsed}}return n};var a=function(e,t){(0,o.removeImportantStyleRule)(t,["border","margin"]);var n=l(e,t.id);(0,o.setGlobalCssStyles)(e.contentDiv.ownerDocument,n,i+e.contentDiv.id)},l=function(e,t){return"#"+e.contentDiv.id+" #"+t+" {outline-style: auto!important;outline-color: "+(e.imageSelectionBorderColor||"#DB626C")+"!important;caret-color: transparent!important;}"},s=function(e){var t=e.contentDiv.ownerDocument;(0,o.removeGlobalCssStyle)(t,i+e.contentDiv.id)}},7243:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectRange=void 0;var r=n(5149),o=n(6344);t.selectRange=function(e,t,n){return!(e.lifecycle.shadowEditSelectionPath||!(0,o.contains)(e.contentDiv,t)||((0,o.addRangeToSelection)(t,n),(0,r.hasFocus)(e)||(e.domEvent.selectionRange=t),t.collapsed&&function(e){var t=e.contentDiv,n=e.pendingFormatState,r=e.api.getSelectionRange;if(n.pendableFormatState){var i=t.ownerDocument,a=(0,o.getPendableFormatState)(i);(0,o.getObjectKeys)(o.PendableFormatCommandMap).forEach((function(e){var t;!!(null===(t=n.pendableFormatState)||void 0===t?void 0:t[e])!=a[e]&&i.execCommand(o.PendableFormatCommandMap[e],!1,void 0)}));var l=r(e,!0),s=l&&o.Position.getStart(l);s&&(n.pendableFormatPosition=s)}}(e),0))}},1036:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectTable=void 0;var r=n(3505),o=n(6344),i="tableStyle";t.selectTable=function(e,t,n){var d;if(a(e),function(e){if(e){var t=e||{},n=t.firstCell,r=t.lastCell;if(n&&r){var o=function(e){return u(e.x)&&u(e.y)};return o(n)&&o(r)}}return!1}(n)&&t){(0,r.default)(t,"tableSelected"),(0,r.default)(e.contentDiv,"contentDiv_");var c=function(e,t,n){var r=function(e,t,n){var r,i=[],a=[],u=new o.VTable(e),d=(0,o.isWholeTableSelected)(u,t);d?function(e,t,n,r){var o=t.table,i=e+" #"+o.id;n.push(i,i+" *");var a=new Range;a.selectNode(o),r.push(a)}(n,u,a,i):function(e,t,n,r,i){var a,u=e.firstCell.y,d=e.firstCell.x,c=e.lastCell.y,f=e.lastCell.x,p=t.table,v=null,h=null,g=(0,o.toArray)(p.childNodes).filter((function(e){return["THEAD","TBODY","TFOOT"].indexOf((0,o.getTagOfNode)(e))>-1})),m=0,y=g.map((function(e){var t={el:(0,o.getTagOfNode)(e),start:m,end:e.childNodes.length+m};return m=t.end,t}));null===(a=t.cells)||void 0===a||a.forEach((function(e,t){var a=0;v=null,h=null;for(var g=y.filter((function(e){return e.start<=t&&e.end>t}))[0],m=g?">"+g.el+">":">",b=g&&t+1>=g.start?t+1-g.start:t+1,E=0;E=u&&t<=c&&E>=d&&E<=f)){s(C);var S=l(n,p.id,m,b,(0,o.getTagOfNode)(C),a),T=S+" *";r.push(S,T),v=v||p.querySelector(S),h=p.querySelector(S)}}if(v&&h){var P=new Range;P.setStartBefore(v),P.setEndAfter(h),i.push(P)}}))}(t,u,n,a,i);for(var c=[],f="";a.length>0;)((f+=(f.length>0?",":"")+a.shift()||"").length+((null===(r=a[0])||void 0===r?void 0:r.length)||0)>9e3||0==a.length)&&(c.push(f+" {background-color: rgb(198,198,198) !important; caret-color: transparent}"),f="");return{cssRules:c,ranges:i,isWholeTableSelected:d}}(t,n,"#"+e.contentDiv.id),a=r.cssRules,u=r.ranges,d=r.isWholeTableSelected;return a.forEach((function(t){return(0,o.setGlobalCssStyles)(e.contentDiv.ownerDocument,t,i+e.contentDiv.id)})),{ranges:u,isWholeTableSelected:d}}(e,t,n),f=c.ranges,p=c.isWholeTableSelected;if(!function(e,t){var n,r=t.firstCell;return!(e.rows.item(r.y)&&(null===(n=e.rows.item(r.y))||void 0===n?void 0:n.cells.item(r.x)))}(t,n)){var v=null===(d=t.rows.item(n.firstCell.y))||void 0===d?void 0:d.cells.item(n.firstCell.x);v&&e.api.selectRange(e,(0,o.createRange)(new o.Position(v,0)))}return{type:1,ranges:f,table:t,areAllCollapsed:f.filter((function(e){return null==e?void 0:e.collapsed})).length==f.length,coordinates:n,isWholeTableSelected:p}}return null};var a=function(e){var t=e.contentDiv.ownerDocument;(0,o.removeGlobalCssStyle)(t,i+e.contentDiv.id)};function l(e,t,n,r,o,i){return e+" #"+t+n+" tr:nth-child("+r+")>"+o+":nth-child("+i+")"}function s(e){e&&(0,o.removeImportantStyleRule)(e,["background-color","background"])}function u(e){return(!!e||0==e)&&e>-1}},1282:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setContent=void 0;var r=n(6344);t.setContent=function(e,t,n,o){var i,a,l=!1;if(e.contentDiv.innerHTML!=t){e.api.triggerEvent(e,{eventType:20,newContent:t},!0);var s=e.entity.entityMap,u=t||"",d=(new DOMParser).parseFromString(null!==(a=null===(i=e.trustedHTMLHandler)||void 0===i?void 0:i.call(e,u))&&void 0!==a?a:u,"text/html").body;(0,r.restoreContentWithEntityPlaceholder)(d,e.contentDiv,s);var c=(0,r.extractContentMetadata)(e.contentDiv);(function(e,t){if(!e.lifecycle.shadowEditSelectionPath&&t)switch(e.domEvent.tableSelectionRange=null,e.domEvent.imageSelectionRange=null,e.domEvent.selectionRange=null,t.type){case 0:e.api.selectTable(e,null),e.api.selectImage(e,null);var n=(0,r.createRange)(e.contentDiv,t.start,t.end);e.api.selectRange(e,n);break;case 1:var o=(0,r.queryElements)(e.contentDiv,"#"+t.tableId)[0];o&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,o,t));break;case 2:var i=(0,r.queryElements)(e.contentDiv,"#"+t.imageId)[0];i&&(e.domEvent.imageSelectionRange=e.api.selectImage(e,i))}})(e,o=o||c),l=!0}var f=e.lifecycle.isDarkMode;(!o&&f||o&&!!o.isDarkMode!=!!f)&&(e.api.transformColor(e,e.contentDiv,!1,null,f?0:1,!0,null==o?void 0:o.isDarkMode),l=!0),n&&l&&e.api.triggerEvent(e,{eventType:7,source:"SetContent"},!1)}},6233:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchShadowEdit=void 0;var r=n(6344);t.switchShadowEdit=function(e,t){var n=e.lifecycle,o=e.contentDiv,i=n.shadowEditEntities,a=n.shadowEditFragment,l=n.shadowEditSelectionPath,s=n.shadowEditTableSelectionPath,u=n.shadowEditImageSelectionPath,d=!!a,c=function(e,t){return(null==t?void 0:t.type)==e&&t.ranges.map((function(e){return(0,r.getSelectionPath)(o,e)})).map((function(e){return e}))||null};if(t){if(!d){var f=e.api.getSelectionRangeEx(e),p=e.api.getSelectionRange(e,!0);l=p&&(0,r.getSelectionPath)(o,p),s=c(1,f),u=c(2,f),i={},a=(0,r.moveContentWithEntityPlaceholders)(o,i),e.api.triggerEvent(e,{eventType:17,fragment:a,selectionPath:l},!1),n.shadowEditFragment=a,n.shadowEditSelectionPath=l,n.shadowEditTableSelectionPath=s,n.shadowEditImageSelectionPath=u,n.shadowEditEntities=i}n.shadowEditFragment&&(0,r.restoreContentWithEntityPlaceholder)(n.shadowEditFragment,o,n.shadowEditEntities,!0)}else if(n.shadowEditFragment=null,n.shadowEditSelectionPath=null,n.shadowEditEntities=null,d){if(e.api.triggerEvent(e,{eventType:18},!1),a&&(0,r.restoreContentWithEntityPlaceholder)(a,o,i),e.api.focus(e),l&&e.api.selectRange(e,(0,r.createRange)(o,l.start,l.end)),e.domEvent.imageSelectionRange){var v=e.domEvent.imageSelectionRange.image;e.contentDiv.querySelector("#"+v.id)&&e.api.selectImage(e,v)}if(e.domEvent.tableSelectionRange){var h=e.domEvent.tableSelectionRange,g=h.table,m=h.coordinates,y=g.id,b=e.contentDiv.querySelector("#"+y);g&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,b,m))}}}},5764:(e,t)=>{"use strict";function n(e,t,o){o&&r(e)&&t(e);for(var i=e.firstChild;i;i=i.nextSibling)r(i)&&t(i),n(i,t)}function r(e){var t=e;return e.nodeType==Node.ELEMENT_NODE&&!!t.style}Object.defineProperty(t,"__esModule",{value:!0}),t.transformColor=void 0,t.transformColor=function(e,t,r,o,i,a,l){void 0===l&&(l=!1);var s=e.darkColorHandler,u=e.lifecycle.onExternalContentTransform,d=0==i;t&&(a||e.lifecycle.isDarkMode)&&n(t,u?function(e){u(e,l,d,s)}:function(e){s.transformElementColor(e,l,d)},r),null==o||o()}},857:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.triggerEvent=void 0;var n=[11,12,8,21];t.triggerEvent=function(e,t,r){e.lifecycle.shadowEditFragment&&!(n.indexOf(t.eventType)>=0)||!r&&e.plugins.some((function(e){return function(e,t){var n;return!(!t.onPluginEvent||!(null===(n=t.willHandleEventExclusively)||void 0===n?void 0:n.call(t,e)))&&(t.onPluginEvent(e),!0)}(t,e)}))||e.plugins.forEach((function(e){e.onPluginEvent&&e.onPluginEvent(t)}))}},3505:(e,t)=>{"use strict";function n(e,t,n){for(var r=0,o=function(){return n.getElementById(t+r)},i=o();i;)r++,i=o();e.id=t+r}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=e.ownerDocument;e.id?r.querySelectorAll("#"+e.id).length>1&&(e.removeAttribute("id"),n(e,t,r)):n(e,t,r)}},4142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2544),o=n(4082),i=n(6344),a=function(){function e(e){var t=this;this.editor=null,this.disposer=null,this.onPaste=function(e){var n,r=null;if(t.editor){var o=t.editor;(0,i.extractClipboardEvent)(e,(function(e){o&&!o.isDisposed()&&o.paste(e)}),{allowedCustomPasteType:t.state.allowedCustomPasteType,getTempDiv:function(){var e;return r=null!==(e=o.getSelectionRange())&&void 0!==e?e:null,t.getTempDiv(o)},removeTempDiv:function(e){r&&t.cleanUpAndRestoreSelection(e,r,!1)}},null!==(n=t.editor.getSelectionRange())&&void 0!==n?n:void 0)}},this.state={allowedCustomPasteType:e.allowedCustomPasteType||[]}}return e.prototype.getName=function(){return"CopyPaste"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=this.editor.addDomEventHandler({paste:function(e){return t.onPaste(e)},copy:function(e){return t.onCutCopy(e,!1)},cut:function(e){return t.onCutCopy(e,!0)}})},e.prototype.dispose=function(){this.disposer&&this.disposer(),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onCutCopy=function(e,t){var n=this;if(this.editor){var r=this.editor.getSelectionRangeEx();if(r&&!r.areAllCollapsed){var o=this.editor.getContent(2),a=this.getTempDiv(this.editor,!0),l=(0,i.setHtmlWithMetadata)(a,o,this.editor.getTrustedHTMLHandler()),s=null;if(1===r.type&&r.coordinates){var u=a.querySelector("#"+r.table.id);s=this.createTableRange(u,r.coordinates),t&&this.deleteTableContent(this.editor,r.table,r.coordinates)}else if(2===r.type){var d=a.querySelector("#"+r.image.id);d&&(s=(0,i.createRange)(d),t&&this.deleteImage(this.editor,r.image.id))}else s=0===(null==l?void 0:l.type)?(0,i.createRange)(a,l.start,l.end):null;s&&(this.editor.triggerPluginEvent(9,{clonedRoot:a,range:s,rawEvent:e,isCut:t}).range&&(0,i.addRangeToSelection)(s),this.editor.runAsync((function(e){n.cleanUpAndRestoreSelection(a,r,!t),t&&e.addUndoSnapshot((function(){var t=e.deleteSelectedContent();e.focus(),e.select(t)}),"Cut")})))}}},e.prototype.getTempDiv=function(e,t){var n=e.getCustomData("CopyPasteTempDiv",(function(){var t=(0,i.createElement)(3,e.getDocument());return e.getDocument().body.appendChild(t),t}),(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}));return t&&(n.style.backgroundColor="white",n.style.color="black"),n.style.display="",n.focus(),n},e.prototype.cleanUpAndRestoreSelection=function(e,t,n){var r,o,a;if((null===(r=t)||void 0===r?void 0:r.type)||0==t.type){var l=t;switch(l.type){case 1:case 2:null===(o=this.editor)||void 0===o||o.select(l);break;case 0:var s=null===(a=l.ranges)||void 0===a?void 0:a[0];this.restoreRange(s,n)}}else this.restoreRange(t,n);e.style.backgroundColor="",e.style.color="",e.style.display="none",(0,i.moveChildNodes)(e)},e.prototype.restoreRange=function(e,t){e&&this.editor&&(t&&i.Browser.isAndroid&&e.collapse(),this.editor.select(e))},e.prototype.createTableRange=function(e,t){var n=new i.VTable(e);return n.selection=t,(0,o.removeCellsOutsideSelection)(n),n.writeBack(),(0,i.createRange)(n.table)},e.prototype.deleteTableContent=function(e,t,n){var o=new i.VTable(t);o.selection=n,(0,r.forEachSelectedCell)(o,(function(t){(null==t?void 0:t.td)&&(t.td.innerHTML=e.getTrustedHTMLHandler()("
                "))}));var a=(0,i.isWholeTableSelected)(o,n),l=t.rows.length-1===n.lastCell.y&&0===n.firstCell.y;a?(o.edit(4),o.writeBack()):l&&(o.edit(5),o.writeBack()),(a||l)&&(t.style.removeProperty("width"),t.style.removeProperty("height"))},e.prototype.deleteImage=function(e,t){e.queryElements("#"+t,(function(t){e.deleteNode(t)}))},e}();t.default=a},7039:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e,t){var n,o=this;this.editor=null,this.disposer=null,this.onDragStart=function(e){var t,n=e,r=null===(t=o.editor)||void 0===t?void 0:t.getElementAtCursor("*",n.target);r&&!r.isContentEditable&&n.preventDefault()},this.onDrop=function(){var e;null===(e=o.editor)||void 0===e||e.runAsync((function(e){e.addUndoSnapshot((function(){}),"Drop")}))},this.onFocus=function(){var e,t,n,r=o.state.tableSelectionRange||{},i=r.table,a=r.coordinates,l=(o.state.imageSelectionRange||{}).image;i&&a?null===(e=o.editor)||void 0===e||e.select(i,a):l?null===(t=o.editor)||void 0===t||t.select(l):o.state.selectionRange&&(null===(n=o.editor)||void 0===n||n.select(o.state.selectionRange)),o.state.selectionRange=null},this.onKeyDownDocument=function(e){9!=e.which||e.defaultPrevented||o.cacheSelection()},this.onMouseDownDocument=function(e){!o.editor||o.state.selectionRange||o.editor.contains(e.target)||o.cacheSelection()},this.cacheSelection=function(){!o.state.selectionRange&&o.editor&&(o.state.selectionRange=o.editor.getSelectionRange(!1))},this.onScroll=function(e){var t;null===(t=o.editor)||void 0===t||t.triggerPluginEvent(14,{rawEvent:e,scrollContainer:o.state.scrollContainer})},this.onKeyboardEvent=function(e){((0,r.isCharacterValue)(e)||e.which>=33&&e.which<=40)&&e.stopPropagation()},this.onInputEvent=function(e){e.stopPropagation()},this.onContextMenuEvent=function(e){var t,n,i=[],a=null===(t=o.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(),l=null==a?void 0:a.getInlineElementBefore(),s=e.target;2!=e.button&&l&&(s=l.getContainerNode()),o.state.contextMenuProviders.forEach((function(e){var t,n=null!==(t=e.getContextMenuItems(s))&&void 0!==t?t:[];(null==n?void 0:n.length)>0&&(i.length>0&&i.push(null),(0,r.arrayPush)(i,n))})),null===(n=o.editor)||void 0===n||n.triggerPluginEvent(16,{rawEvent:e,items:i})},this.state={isInIME:!1,scrollContainer:e.scrollContainer||t,selectionRange:null,stopPrintableKeyboardEventPropagation:!e.allowKeyboardEventPropagation,contextMenuProviders:(null===(n=e.plugins)||void 0===n?void 0:n.filter(i))||[],tableSelectionRange:null,imageSelectionRange:null}}return e.prototype.getName=function(){return"DOMEvent"},e.prototype.initialize=function(e){var t,n,o,i,a=this;this.editor=e;var l=this.editor.getDocument(),s=((t={keypress:this.getEventHandler(1),keydown:this.getEventHandler(0),keyup:this.getEventHandler(2),mousedown:5,contextmenu:this.onContextMenuEvent,compositionstart:function(){return a.state.isInIME=!0},compositionend:function(t){a.state.isInIME=!1,e.triggerPluginEvent(4,{rawEvent:t})},dragstart:this.onDragStart,drop:this.onDrop,focus:this.onFocus})[r.Browser.isIE?"textinput":"input"]=this.getEventHandler(3),t);r.Browser.isSafari?(l.addEventListener("mousedown",this.onMouseDownDocument,!0),l.addEventListener("keydown",this.onKeyDownDocument),null===(n=l.defaultView)||void 0===n||n.addEventListener("blur",this.cacheSelection)):r.Browser.isIEOrEdge?s.beforedeactivate=this.cacheSelection:s.blur=this.cacheSelection,this.disposer=e.addDomEventHandler(s),this.state.scrollContainer.addEventListener("scroll",this.onScroll),null===(o=l.defaultView)||void 0===o||o.addEventListener("scroll",this.onScroll),null===(i=l.defaultView)||void 0===i||i.addEventListener("resize",this.onScroll)},e.prototype.dispose=function(){var e,t,n,o,i,a=null===(e=this.editor)||void 0===e?void 0:e.getDocument();a&&r.Browser.isSafari&&(a.removeEventListener("mousedown",this.onMouseDownDocument,!0),a.removeEventListener("keydown",this.onKeyDownDocument),null===(t=a.defaultView)||void 0===t||t.removeEventListener("blur",this.cacheSelection)),null===(n=null==a?void 0:a.defaultView)||void 0===n||n.removeEventListener("resize",this.onScroll),null===(o=null==a?void 0:a.defaultView)||void 0===o||o.removeEventListener("scroll",this.onScroll),this.state.scrollContainer.removeEventListener("scroll",this.onScroll),null===(i=this.disposer)||void 0===i||i.call(this),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.getEventHandler=function(e){var t=this;return this.state.stopPrintableKeyboardEventPropagation?{pluginEventType:e,beforeDispatch:function(n){return 3==e?t.onInputEvent(n):t.onKeyboardEvent(n)}}:e},e}();function i(e){var t;return!!(null===(t=e)||void 0===t?void 0:t.getContextMenuItems)}t.default=o},6262:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null,this.state={features:{}}}return e.prototype.getName=function(){return"Edit"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){var t,n=!1,o=null,i=!1,a=0==e.eventType;if(a){var l=e.rawEvent,s=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n=(i=(0,r.isCtrlOrMetaPressed)(l))||l.altKey,o=this.state.features[l.which]||s&&!s.collapsed&&this.state.features[258]}else 7==e.eventType&&(o=this.state.features[257]);for(var u=0;o&&u<(null==o?void 0:o.length);u++){var d=o[u];if((d.allowFunctionKeys||!n)&&this.editor&&d.shouldHandleEvent(e,this.editor,i)){d.handleEvent(e,this.editor),a&&(e.handledByEditFeature=!0);break}}},e}();t.default=o},3346:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4195),o=n(6344),i=/_(\d{1,8})$/,a=["^_Entity$","^_EId_","^_EType_","^_EReadonly_"],l=[6,7,4,5],s=function(){function e(){var e=this;this.editor=null,this.handleCutEvent=function(t){var n,r=null===(n=e.editor)||void 0===n?void 0:n.getSelectionRange();r&&!r.collapsed&&e.checkRemoveEntityForRange(t)},this.state={entityMap:{}}}return e.prototype.getName=function(){return"Entity"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.state.entityMap={}},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){var t;switch(e.eventType){case 6:this.handleMouseUpEvent(e);break;case 0:this.handleKeyDownEvent(e.rawEvent);break;case 9:e.isCut&&this.handleCutEvent(e.rawEvent);break;case 10:this.handleBeforePasteEvent(e.sanitizingOption);break;case 7:this.handleContentChangedEvent(e);break;case 11:this.handleContentChangedEvent();break;case 8:this.handleExtractContentWithDomEvent(e.clonedRoot);break;case 16:this.handleContextMenuEvent(e.rawEvent);break;case 15:this.handleEntityOperationEvent(e)}(null===(t=this.editor)||void 0===t?void 0:t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))&&(0,r.inlineEntityOnPluginEvent)(e,this.editor)},e.prototype.handleContextMenuEvent=function(e){var t,n=e.target,r=n&&(null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor((0,o.getEntitySelector)(),n));r&&(e.preventDefault(),this.triggerEvent(r,2,e))},e.prototype.handleMouseUpEvent=function(e){var t,n=e.rawEvent,r=e.isClicking,i=n.target;this.editor&&r&&i&&(t=this.editor.getElementAtCursor((0,o.getEntitySelector)(),i))&&(this.triggerEvent(t,1,n),u(this.editor))},e.prototype.handleKeyDownEvent=function(e){var t;if((0,o.isCharacterValue)(e)||8==e.which||46==e.which||13==e.which){var n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed&&this.checkRemoveEntityForRange(e)}},e.prototype.handleBeforePasteEvent=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed&&this.checkRemoveEntityForRange(null),e.additionalAllowedCssClasses&&(0,o.arrayPush)(e.additionalAllowedCssClasses,a)},e.prototype.handleContentChangedEvent=function(e){var t,n=this,i=!1;(0,o.getObjectKeys)(this.state.entityMap).forEach((function(e){var t=n.state.entityMap[e],r=t.element;!n.editor||t.isDeleted||n.editor.contains(r)||(t.isDeleted=!0,n.triggerEvent(r,6),i||r.isContentEditable||(0,o.isBlockElement)(r)||(i=!0))})),("InsertEntity"==(null==e?void 0:e.source)&&e.data?[e.data]:this.getExistingEntities().filter((function(e){var t=n.state.entityMap[e.id];return!t||t.element!=e.wrapper||t.isDeleted}))).forEach((function(e){var t=e.wrapper,r=e.type,i=e.id,a=e.isReadonly;e.id=n.ensureUniqueId(r,i,t),(0,o.commitEntity)(t,r,a,e.id),n.handleNewEntity(e)})),i&&(null===(t=this.editor)||void 0===t?void 0:t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))&&(0,r.normalizeDelimitersInEditor)(this.editor)},e.prototype.handleEntityOperationEvent=function(e){if(this.editor&&l.indexOf(e.operation)>=0){var t=this.state.entityMap[e.entity.id];t&&(t.isDeleted=!0)}},e.prototype.handleExtractContentWithDomEvent=function(e){var t=this;(0,o.toArray)(e.querySelectorAll((0,o.getEntitySelector)())).forEach((function(e){e.removeAttribute("contentEditable"),t.triggerEvent(e,8)}))},e.prototype.checkRemoveEntityForRange=function(e){var t,n=this,r=[],i=(0,o.getEntitySelector)();if(null===(t=this.editor)||void 0===t||t.queryElements(i,1,(function(t){t.isContentEditable?r.push(t):n.triggerEvent(t,6,e)})),this.editor&&r.length>0){var a=this.editor.queryElements(i,2);r.forEach((function(t){var r=a.indexOf(t)>=0;n.triggerEvent(t,r?6:7,e)}))}},e.prototype.triggerEvent=function(e,t,n){var r,i=e&&(0,o.getEntityFromElement)(e);return i?null===(r=this.editor)||void 0===r?void 0:r.triggerPluginEvent(15,{operation:t,rawEvent:n,entity:i}):null},e.prototype.handleNewEntity=function(e){var t=e.wrapper,n=this.triggerEvent(t,0),r={element:e.wrapper};(null==n?void 0:n.shouldPersist)&&(r.canPersist=!0),this.state.entityMap[e.id]=r},e.prototype.getExistingEntities=function(){var e,t;return null!==(t=null===(e=this.editor)||void 0===e?void 0:e.queryElements((0,o.getEntitySelector)()).map(o.getEntityFromElement).filter((function(e){return!!e})))&&void 0!==t?t:[]},e.prototype.ensureUniqueId=function(e,t,n){for(var r=i.exec(t),o=(r?t.substr(0,t.length-r[0].length):t)||e,a="",l=r&&parseInt(r[1])||0;;l++){a=l>0?o+"_"+l:o;var s=this.state.entityMap[a];if(!s||s.element==n)break}return a},e}();t.default=s;var u=o.Browser.isIE?function(e){e.runAsync((function(e){var t=e.getCustomData("ENTITY_IE_FOCUS_BUTTON",(function(){var t=(0,o.createElement)({tag:"button",style:"overflow:hidden;position:fixed;width:0;height:0;top:-1000px"},e.getDocument());return t.onblur=function(){t.style.display="none"},e.insertNode(t,{position:4}),t}));t.style.display="",(0,o.addRangeToSelection)((0,o.createRange)(t,0))}))}:function(){}},6194:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"ImageSelection"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){var e;null===(e=this.editor)||void 0===e||e.select(null),this.editor=null},e.prototype.onPluginEvent=function(e){var t;if(this.editor)switch(e.eventType){case 17:case 18:var n=this.editor.getSelectionRangeEx();2==n.type&&this.editor.select(n.image);break;case 6:var o=e.rawEvent.target;(0,r.safeInstanceOf)(o,"HTMLImageElement")&&o.isContentEditable&&0===e.rawEvent.button&&this.editor.select(o);break;case 5:var i=e.rawEvent.target,a=this.editor.getSelectionRangeEx();a&&2===a.type&&a.image!==i&&this.editor.select(null);break;case 2:var l=e.rawEvent.key,s=this.editor.getSelectionRangeEx();2===s.type&&("Escape"===l?(this.editor.select(s.image,-2),null===(t=this.editor.getSelectionRange())||void 0===t||t.collapse(),e.rawEvent.stopPropagation()):"Delete"===l?(this.editor.deleteNode(s.image),e.rawEvent.preventDefault()):this.editor.select(s.ranges[0]));break;case 16:var u=e.rawEvent.target,d=this.editor.getSelectionRangeEx();!(0,r.safeInstanceOf)(u,"HTMLImageElement")||2===d.type&&d.image===u||this.editor.select(u)}},e}();t.default=o},6121:(e,t,n)=>{"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0});var i=n(7582),a=n(6344),l="contenteditable",s=a.Browser.isFirefox?((r={}).enableObjectResizing=!1,r.enableInlineTableEditing=!1,r):a.Browser.isIE?((o={}).defaultParagraphSeparator="div",o.AutoUrlDetect=!1,o):{},u={darkModeColor:"rgb(51,51,51)",lightModeColor:"rgb(255,255,255)"},d={darkModeColor:"rgb(255,255,255)",lightModeColor:"rgb(0,0,0)"},c=function(){function e(e,t){var n,r,o=this;this.editor=null,this.initializer=null,this.disposer=null,this.initialContent=e.initialContent||t.innerHTML||"",null===t.getAttribute(l)&&(this.initializer=function(){t.contentEditable="true",t.style.userSelect="text",t.style.webkitUserSelect="text"},this.disposer=function(){t.style.userSelect="",t.style.webkitUserSelect="",t.removeAttribute(l)}),this.adjustColor=e.doNotAdjustEditorColor?function(){}:function(){var e,n=d,r=u,i=o.state.isDarkMode,l=null===(e=o.editor)||void 0===e?void 0:e.getDarkColorHandler();(0,a.setColor)(t,n,!1,i,!1,l),(0,a.setColor)(t,r,!0,i,!1,l)};var s=null!==(n=e.getDarkColor)&&void 0!==n?n:function(e){return e},c=e.defaultFormat?(0,i.__assign)({},e.defaultFormat):null;c&&(c.textColor&&!c.textColors&&(c.textColors={lightModeColor:c.textColor,darkModeColor:s(c.textColor)},delete c.textColor),c.backgroundColor&&!c.backgroundColors&&(c.backgroundColors={lightModeColor:c.backgroundColor,darkModeColor:s(c.backgroundColor)},delete c.backgroundColor)),this.state={customData:{},defaultFormat:c,isDarkMode:!!e.inDarkMode,getDarkColor:s,onExternalContentTransform:null!==(r=e.onExternalContentTransform)&&void 0!==r?r:null,experimentalFeatures:e.experimentalFeatures||[],shadowEditFragment:null,shadowEditEntities:null,shadowEditSelectionPath:null,shadowEditTableSelectionPath:null,shadowEditImageSelectionPath:null}}return e.prototype.getName=function(){return"Lifecycle"},e.prototype.initialize=function(e){var t;this.editor=e,this.editor.setContent(this.initialContent,!1),null===(t=this.initializer)||void 0===t||t.call(this),this.adjustColor(),this.adjustBrowserBehavior(),this.editor.triggerPluginEvent(11,{},!0)},e.prototype.dispose=function(){var e,t=this;null===(e=this.editor)||void 0===e||e.triggerPluginEvent(12,{},!0),(0,a.getObjectKeys)(this.state.customData).forEach((function(e){var n=t.state.customData[e];n&&n.disposer&&n.disposer(n.value),delete t.state.customData[e]})),this.disposer&&(this.disposer(),this.disposer=null,this.initializer=null),this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){7!=e.eventType||"SwitchToDarkMode"!=e.source&&"SwitchToLightMode"!=e.source||(this.state.isDarkMode="SwitchToDarkMode"==e.source,this.adjustColor())},e.prototype.adjustBrowserBehavior=function(){var e=this;(0,a.getObjectKeys)(s).forEach((function(t){var n;try{null===(n=e.editor)||void 0===n||n.getDocument().execCommand(t,!1,s[t])}catch(e){}}))},e}();t.default=c},5896:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){var e=this;this.editor=null,this.mouseUpEventListerAdded=!1,this.mouseDownX=null,this.mouseDownY=null,this.onMouseUp=function(t){e.editor&&(e.removeMouseUpEventListener(),e.editor.triggerPluginEvent(6,{rawEvent:t,isClicking:e.mouseDownX==t.pageX&&e.mouseDownY==t.pageY}))}}return e.prototype.getName=function(){return"MouseUp"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.removeMouseUpEventListener(),this.editor=null},e.prototype.onPluginEvent=function(e){this.editor&&5==e.eventType&&!this.mouseUpEventListerAdded&&(this.editor.getDocument().addEventListener("mouseup",this.onMouseUp,!0),this.mouseUpEventListerAdded=!0,this.mouseDownX=e.rawEvent.pageX,this.mouseDownY=e.rawEvent.pageY)},e.prototype.removeMouseUpEventListener=function(){this.editor&&this.mouseUpEventListerAdded&&(this.mouseUpEventListerAdded=!1,this.editor.getDocument().removeEventListener("mouseup",this.onMouseUp,!0))},e}();t.default=n},3433:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"NormalizeTable"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 11:case 7:this.editor&&this.normalizeTables(this.editor.queryElements("table"));break;case 10:this.normalizeTables((0,r.toArray)(e.fragment.querySelectorAll("table")));break;case 5:this.normalizeTableFromEvent(e.rawEvent);break;case 0:e.rawEvent.shiftKey&&this.normalizeTableFromEvent(e.rawEvent);break;case 8:t=e.clonedRoot,(0,r.toArray)(t.querySelectorAll("li")).forEach((function(e){var t=e.previousSibling;"block"==e.style.display&&(0,r.safeInstanceOf)(t,"HTMLLIElement")&&(e.style.removeProperty("display"),t.appendChild((0,r.changeElementTag)(e,"div")))}))}var t},e.prototype.normalizeTableFromEvent=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor("table",e.target);n&&this.normalizeTables([n])},e.prototype.normalizeTables=function(e){if(this.editor&&e.length>0){var t=this.editor.getSelectionRangeEx(),n=0==(null==t?void 0:t.type)&&t.ranges[0]||{},o=n.startContainer,i=n.endContainer,a=n.startOffset,l=n.endOffset,s=function(e){var t=!1;return e.forEach((function(e){for(var n,o=null,i=e.firstChild;i;i=i.nextSibling)switch((0,r.getTagOfNode)(i)){case"TR":o||(o=e.ownerDocument.createElement("tbody"),e.insertBefore(o,i)),o.appendChild(i),i=o,t=!0;break;case"TBODY":o?((0,r.moveChildNodes)(o,i,!0),null===(n=i.parentNode)||void 0===n||n.removeChild(i),i=o,t=!0):o=i;break;default:o=null}var a=e.querySelectorAll("colgroup"),l=e.querySelector("thead");l&&a.forEach((function(e){l.contains(e)||l.appendChild(e)}))})),t}(e);s&&(o&&i&&"number"==typeof a&&"number"==typeof l?this.editor.select(o,a,i,l):1==(null==t?void 0:t.type)&&t.coordinates&&this.editor.select(t.table,t.coordinates))}},e}();t.default=o},4465:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null,this.state={pendableFormatPosition:null,pendableFormatState:null,pendableFormatSpan:null}}return e.prototype.getName=function(){return"PendingFormatState"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.clear()},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 13:e.formatState?(this.state.pendableFormatPosition=this.getCurrentPosition(),this.state.pendableFormatState=e.formatState,this.state.pendableFormatSpan=e.formatCallback?this.createPendingFormatSpan(e.formatCallback):null):this.clear();break;case 0:case 5:case 7:var t=null;this.editor&&0==e.eventType&&(0,r.isCharacterValue)(e.rawEvent)&&this.state.pendableFormatSpan?(this.state.pendableFormatSpan.removeAttribute("contentEditable"),this.editor.insertNode(this.state.pendableFormatSpan),this.editor.select(this.state.pendableFormatSpan,0,this.state.pendableFormatSpan,-1),this.clear()):(0==e.eventType&&e.rawEvent.which>=33&&e.rawEvent.which<=40||this.state.pendableFormatPosition&&(t=this.getCurrentPosition())&&!this.state.pendableFormatPosition.equalTo(t)||7==e.eventType&&("SwitchToDarkMode"==e.source||"SwitchToLightMode"==e.source))&&this.clear()}},e.prototype.clear=function(){this.state.pendableFormatPosition=null,this.state.pendableFormatState=null,this.state.pendableFormatSpan=null},e.prototype.getCurrentPosition=function(){var e,t,n=null===(e=this.editor)||void 0===e?void 0:e.getSelectionRange();return null!==(t=n&&r.Position.getStart(n).normalize())&&void 0!==t?t:null},e.prototype.createPendingFormatSpan=function(e){var t,n,o=this.state.pendableFormatSpan;if(!o&&this.editor){var i=this.editor.getStyleBasedFormatState(),a=this.editor.getDocument(),l=this.editor.isDarkMode();(o=a.createElement("span")).contentEditable="true",o.appendChild(a.createTextNode("​")),o.style.setProperty("font-family",null!==(t=i.fontName)&&void 0!==t?t:null),o.style.setProperty("font-size",null!==(n=i.fontSize)&&void 0!==n?n:null);var s=this.editor.getDarkColorHandler();(i.textColors||i.textColor)&&(0,r.setColor)(o,i.textColors||i.textColor,!1,l,!1,s),(i.backgroundColors||i.backgroundColor)&&(0,r.setColor)(o,i.backgroundColors||i.backgroundColor,!0,l,!1,s)}return o&&e(o),o},e}();t.default=o},4269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"TypeInContainer"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.isRangeEmpty=function(e){return!(!e.collapsed||e.startContainer.nodeType!==Node.ELEMENT_NODE||"DIV"!=(0,r.getTagOfNode)(e.startContainer)||e.startContainer.firstChild)},e.prototype.onPluginEvent=function(e){var t,n=this;if(1==e.eventType&&this.editor&&(!e.rawEvent||!(0,r.isCtrlOrMetaPressed)(e.rawEvent))){var o=this.editor.getSelectionRange(),i=o&&(0,r.findClosestElementAncestor)(o.startContainer,void 0,"[style]");if(!o||!this.isRangeEmpty(o)&&this.editor.contains(i))return;if(o.collapsed)this.editor.ensureTypeInContainer(r.Position.getStart(o),e.rawEvent);else{var a=function(){var t,r,o=null===(t=n.editor)||void 0===t?void 0:t.getFocusedPosition();o&&(null===(r=n.editor)||void 0===r||r.ensureTypeInContainer(o,e.rawEvent))};r.Browser.isMobileOrTablet?null===(t=this.editor.getDocument().defaultView)||void 0===t||t.setTimeout(a,100):this.editor.runAsync(a)}}},e}();t.default=o},6469:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e){var t,n,o;this.editor=null,this.lastKeyPress=null,this.state={snapshotsService:e.undoMetadataSnapshotService||(n=e.undoSnapshotService,n?{canMove:function(e){return n.canMove(e)},move:function(e){return(o=n.move(e))?{html:o,metadata:null,knownColors:[]}:null},addSnapshot:function(e,t){return n.addSnapshot(e.html+(e.metadata?"\x3c!--"+JSON.stringify(e.metadata)+"--\x3e":""),t)},clearRedo:function(){return n.clearRedo()},canUndoAutoComplete:function(){return n.canUndoAutoComplete()}}:void 0)||(t=(0,r.createSnapshots)(1e7),{canMove:function(e){return(0,r.canMoveCurrentSnapshot)(t,e)},move:function(e){return(0,r.moveCurrentSnapshot)(t,e)},addSnapshot:function(e,n){return(0,r.addSnapshotV2)(t,e,n)},clearRedo:function(){return(0,r.clearProceedingSnapshotsV2)(t)},canUndoAutoComplete:function(){return(0,r.canUndoAutoComplete)(t)}}),isRestoring:!1,hasNewContent:!1,isNested:!1,autoCompletePosition:null}}return e.prototype.getName=function(){return"Undo"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.willHandleEventExclusively=function(e){return 0==e.eventType&&8==e.rawEvent.which&&!e.rawEvent.ctrlKey&&this.canUndoAutoComplete()},e.prototype.onPluginEvent=function(e){if(this.editor&&!this.editor.isInIME())switch(e.eventType){case 11:var t=this.editor.getUndoState();t.canUndo||t.canRedo||this.addUndoSnapshot();break;case 0:this.onKeyDown(e.rawEvent);break;case 1:this.onKeyPress(e.rawEvent);break;case 4:this.clearRedoForInput(),this.addUndoSnapshot();break;case 7:this.onContentChanged(e);break;case 23:this.onBeforeKeyboardEditing(e.rawEvent)}},e.prototype.onKeyDown=function(e){var t,n;if(8==e.which&&!e.altKey||46==e.which){if(8==e.which&&!e.ctrlKey&&this.canUndoAutoComplete())e.preventDefault(),null===(t=this.editor)||void 0===t||t.undo(),this.state.autoCompletePosition=null,this.lastKeyPress=e.which;else if(!e.defaultPrevented){var o=null===(n=this.editor)||void 0===n?void 0:n.getSelectionRange();!o||o.collapsed&&this.lastKeyPress==e.which&&!(0,r.isCtrlOrMetaPressed)(e)||this.addUndoSnapshot(),this.state.hasNewContent=!0,this.lastKeyPress=e.which}}else e.which>=33&&e.which<=40?(this.state.hasNewContent&&this.addUndoSnapshot(),this.lastKeyPress=0):8!=this.lastKeyPress&&46!=this.lastKeyPress||this.state.hasNewContent&&this.addUndoSnapshot()},e.prototype.onKeyPress=function(e){var t;if(!e.metaKey){var n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed||32==e.which&&32!=this.lastKeyPress||13==e.which?(this.addUndoSnapshot(),13==e.which&&(this.state.hasNewContent=!0)):this.clearRedoForInput(),this.lastKeyPress=e.which}},e.prototype.onBeforeKeyboardEditing=function(e){e.which!=this.lastKeyPress&&this.addUndoSnapshot(),this.lastKeyPress=e.which,this.state.hasNewContent=!0},e.prototype.onContentChanged=function(e){this.state.isRestoring||"SwitchToDarkMode"==e.source||"SwitchToLightMode"==e.source||"Keyboard"==e.source||this.clearRedoForInput()},e.prototype.clearRedoForInput=function(){this.state.snapshotsService.clearRedo(),this.lastKeyPress=0,this.state.hasNewContent=!0},e.prototype.canUndoAutoComplete=function(){var e,t,n=null===(e=this.editor)||void 0===e?void 0:e.getFocusedPosition();return this.state.snapshotsService.canUndoAutoComplete()&&!!n&&!!(null===(t=this.state.autoCompletePosition)||void 0===t?void 0:t.equalTo(n))},e.prototype.addUndoSnapshot=function(){var e;null===(e=this.editor)||void 0===e||e.addUndoSnapshot(),this.state.autoCompletePosition=null},e}();t.default=o},8376:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPluginState=void 0;var r=n(4142),o=n(7039),i=n(6262),a=n(3346),l=n(6194),s=n(6121),u=n(5896),d=n(3433),c=n(4465),f=n(4269),p=n(6469);t.default=function(e,t){var n=t.corePluginOverride||{};return{typeInContainer:n.typeInContainer||new f.default,edit:n.edit||new i.default,pendingFormatState:n.pendingFormatState||new c.default,_placeholder:null,typeAfterLink:null,undo:n.undo||new p.default(t),domEvent:n.domEvent||new o.default(t,e),mouseUp:n.mouseUp||new u.default,copyPaste:n.copyPaste||new r.default(t),entity:n.entity||new a.default,imageSelection:n.imageSelection||new l.default,normalizeTable:n.normalizeTable||new d.default,lifecycle:n.lifecycle||new s.default(t,e)}},t.getPluginState=function(e){return{domEvent:e.domEvent.getState(),pendingFormatState:e.pendingFormatState.getState(),edit:e.edit.getState(),lifecycle:e.lifecycle.getState(),undo:e.undo.getState(),entity:e.entity.getState(),copyPaste:e.copyPaste.getState()}}},2544:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.forEachSelectedCell=void 0,t.forEachSelectedCell=function(e,t){var n;if(e.selection)for(var r=e.selection,o=r.lastCell,i=r.firstCell,a=i.y;a<=o.y;a++)for(var l=i.x;l<=o.x;l++)e.cells&&(null===(n=e.cells[a][l])||void 0===n?void 0:n.td)&&t(e.cells[a][l])}},4195:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeDelimitersInEditor=t.inlineEntityOnPluginEvent=void 0;var r=n(6344),o=".entityDelimiterAfter,.entityDelimiterBefore",i="​",a="span"+(0,r.getEntitySelector)();function l(e){var t,n,o,a;e.normalize();var l,s=e.firstChild,u=null!==(n=null===(t=s.nodeValue)||void 0===t?void 0:t.indexOf(i))&&void 0!==n?n:-1;if(u>=0&&((0,r.splitTextNode)(s,0==u?1:u,!1),e.childNodes.forEach((function(e){e.nodeValue!==i&&(l=e)})),l)){null===(o=e.parentElement)||void 0===o||o.insertBefore(l,"entityDelimiterBefore"==e.className?e:e.nextSibling);var d=null===(a=l.ownerDocument)||void 0===a?void 0:a.getSelection();d&&d.setPosition(l,new r.Position(l,-1).offset)}}function s(e){e.queryElements(o).forEach((function(e){if((0,r.getDelimiterFromElement)(e)){var t=e.classList.contains("entityDelimiterBefore")?e.nextElementSibling:e.previousElementSibling;(0,r.safeInstanceOf)(t,"HTMLElement")&&(0,r.getEntityFromElement)(t)||c(e)}else f(e)})),u(e.queryElements(a))}function u(e){e.forEach((function(e){d(e)&&(0,r.addDelimiters)(e)}))}function d(e){return!!(e&&(0,r.safeInstanceOf)(e,"HTMLElement")&&(t=(0,r.getEntityFromElement)(e),(null==t?void 0:t.isReadonly)&&!(0,r.isBlockElement)(t.wrapper)&&(0,r.safeInstanceOf)(t.wrapper,"HTMLElement")));var t}function c(e){var t;null===(t=null==e?void 0:e.parentElement)||void 0===t||t.removeChild(e)}function f(e,t){if(void 0===t&&(t=!0),e){var n=e.classList.contains("entityDelimiterAfter")?e.previousElementSibling:e.nextElementSibling;t&&n&&d(n)||(e.classList.remove("entityDelimiterAfter","entityDelimiterBefore"),e.normalize(),e.childNodes.forEach((function(e){var t,n,o,a=null!==(n=null===(t=e.textContent)||void 0===t?void 0:t.indexOf(i))&&void 0!==n?n:-1;a>=0&&(null===(o=(0,r.createRange)(e,a,e,a+1))||void 0===o||o.deleteContents())})))}}t.inlineEntityOnPluginEvent=function(e,t){switch(e.eventType){case 7:"SetContent"===e.source&&s(t);break;case 11:s(t);break;case 10:var n=e.fragment,i=e.sanitizingOption;u(n.querySelectorAll(a)),i.additionalAllowedCssClasses&&(0,r.arrayPush)(i.additionalAllowedCssClasses,["entityDelimiterAfter","entityDelimiterBefore"]);break;case 8:case 9:e.clonedRoot.querySelectorAll(o).forEach((function(e){(0,r.getDelimiterFromElement)(e)?c(e):f(e)}));break;case 0:!function(e,t){var n,i,a=e.getSelectionRangeEx(),s=t.rawEvent;if(0==a.type)if(a.areAllCollapsed&&((0,r.isCharacterValue)(s)||13===s.which)){var u=null===(n=e.getFocusedPosition())||void 0===n?void 0:n.normalize();if(!u)return;var c=u.element,v=c==u.node?c.childNodes.item(u.offset):c,h=e.getElementAtCursor(o,v);if(!h)return;13===s.which?function(e,t){var n=t.classList.contains("entityDelimiterAfter"),i=n?t.previousSibling:t.nextSibling,a=function(e,t){var n;if(t){for(var o=null===(n=e.getBlockElementAtNode(t))||void 0===n?void 0:n.getStartNode();o&&!(0,r.isBlockElement)(o);)o=e.contains(o.parentElement)?o.parentElement:void 0;return o}}(e,t);e.runAsync((function(){if(a){var e=n?a.nextSibling:a.previousSibling;if(e&&(0,r.safeInstanceOf)(e,"HTMLElement")){var t=e.querySelectorAll(o);f(t.item(n?0:t.length-1))}d(i)&&([i.nextElementSibling,i.previousElementSibling].forEach((function(e){e&&(0,r.matchesSelector)(e,o)&&!(0,r.getDelimiterFromElement)(e)&&f(e,!1)})),(0,r.addDelimiters)(i))}}))}(e,h):3==(null===(i=h.firstChild)||void 0===i?void 0:i.nodeType)&&e.runAsync((function(){return l(h)}))}else if(!a.areAllCollapsed&&!s.shiftKey&&16!=s.which){var g=a.ranges[0];if(!g)return;!function(e,t,n){var i=t.startContainer,a=t.endContainer,s=t.startOffset,u=t.endOffset,d=e.getElementAtCursor(o,i),c=e.getElementAtCursor(o,a),v=p(d),h=p(c);(v||h)&&e.select(null!=v?v:new r.Position(i,s),null!=h?h:new r.Position(a,u)),e.runAsync((function(e){var t=e.getElementAtCursor(o);t&&(l(t),13===n.which&&f(t))}))}(e,g,s)}}(t,e)}},t.normalizeDelimitersInEditor=s;var p=function(e){if(e&&(0,r.getDelimiterFromElement)(e)){var t=e.classList.contains("entityDelimiterAfter");return new r.Position(e,t?-3:-2)}}},4082:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeCellsOutsideSelection=void 0;var r=n(6344);t.removeCellsOutsideSelection=function(e){if(e.selection){if((0,r.isWholeTableSelected)(e,e.selection))return;e.table.style.removeProperty("width"),e.table.style.removeProperty("height");var t=e.selection,n=t.firstCell,o=t.lastCell,i=[],a=n.x,l=n.y,s=o.x,u=o.y;e.cells&&(e.cells.forEach((function(e,t){(e=e.filter((function(e,n){return t>=l&&t<=u&&n>=a&&n<=s}))).length>0&&i.push(e)})),e.cells=i)}}},2842:(e,t,n)=>{"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0});var i,a=n(6344),l=/^\s*var\(\s*(\-\-[a-zA-Z0-9\-_]+)\s*(?:,\s*(.*))?\)\s*$/;!function(e){e[e.CssColor=0]="CssColor",e[e.HtmlColor=1]="HtmlColor"}(i||(i={}));var s=[(r={},r[0]="color",r[1]="color",r),(o={},o[0]="background-color",o[1]="bgcolor",o)],u=function(){function e(e,t){this.contentDiv=e,this.getDarkColor=t,this.knownColors={}}return e.prototype.getKnownColorsCopy=function(){return Object.values(this.knownColors)},e.prototype.registerColor=function(e,t,n){var r,o=this.parseColorValue(e);return o&&(e=o.lightModeColor,n=o.darkModeColor||n,r=o.key),t&&e?(r=r||"--darkColor_"+e.replace(/[^\d\w]/g,"_"),this.knownColors[r]||(n=n||this.getDarkColor(e),this.knownColors[r]={lightModeColor:e,darkModeColor:n},this.contentDiv.style.setProperty(r,n)),"var("+r+", "+e+")"):e},e.prototype.reset=function(){var e=this;(0,a.getObjectKeys)(this.knownColors).forEach((function(t){return e.contentDiv.style.removeProperty(t)})),this.knownColors={}},e.prototype.parseColorValue=function(e,t){var n,r,o,i="";if(e){var a=e.startsWith("var(")?l.exec(e):null;a?a[2]?(r=a[1],i=a[2],o=null===(n=this.knownColors[r])||void 0===n?void 0:n.darkModeColor):i="":t?(i=this.findLightColorFromDarkColor(e)||"")&&(o=e):i=e}return{key:r,lightModeColor:i,darkModeColor:o}},e.prototype.findLightColorFromDarkColor=function(e){var t=this,n=(0,a.parseColor)(e);if(n){var r=(0,a.getObjectKeys)(this.knownColors).find((function(e){var r=(0,a.parseColor)(t.knownColors[e].darkModeColor);return r&&r[0]==n[0]&&r[1]==n[1]&&r[2]==n[2]}));if(r)return this.knownColors[r].lightModeColor}return null},e.prototype.transformElementColor=function(e,t,n){var r=this;s.forEach((function(o,i){var l=r.parseColorValue(e.style.getPropertyValue(o[0])||e.getAttribute(o[1]),!!t).lightModeColor;e.style.setProperty(o[0],null),e.removeAttribute(o[1]),l&&"inherit"!=l&&(0,a.setColor)(e,l,0!=i,n,!1,r)}))},e}();t.default=u},3386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(9602),i=function(e){function t(t,n){return void 0===n&&(n={}),e.call(this,t,n,o.createEditorCore)||this}return(0,r.__extends)(t,e),t}(n(5075).EditorBase);t.default=i},5075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EditorBase=void 0;var r=n(7582),o=n(3441),i=n(6344),a=function(){function e(e,t,n){var r=this;if(this.core=null,"DIV"!=(0,i.getTagOfNode)(e))throw new Error("contentDiv must be an HTML DIV element");this.core=n(e,t),this.core.plugins.forEach((function(e){return e.initialize(r)})),this.ensureTypeInContainer(new i.Position(this.core.contentDiv,0).normalize())}return e.prototype.dispose=function(){for(var e=this.getCore(),t=e.plugins.length-1;t>=0;t--)e.plugins[t].dispose();e.darkColorHandler.reset(),this.core=null},e.prototype.isDisposed=function(){return!this.core},e.prototype.insertNode=function(e,t){var n=this.getCore();return!!e&&n.api.insertNode(n,e,null!=t?t:null)},e.prototype.deleteNode=function(e){return!!(e&&this.contains(e)&&e.parentNode)&&(e.parentNode.removeChild(e),!0)},e.prototype.replaceNode=function(e,t,n){var r=this.getCore();return!(!this.contains(e)||!t||(r.api.transformColor(r,n?t:null,!0,(function(){var n;return null===(n=e.parentNode)||void 0===n?void 0:n.replaceChild(t,e)}),0),0))},e.prototype.getBlockElementAtNode=function(e){return(0,i.getBlockElementAtNode)(this.getCore().contentDiv,e)},e.prototype.contains=function(e){return!!e&&(0,i.contains)(this.getCore().contentDiv,e)},e.prototype.queryElements=function(e,t,n){void 0===t&&(t=0);var o=this.getCore(),a=[],l=t instanceof Function?0:t;n=t instanceof Function?t:n;var s=0==l?null:this.getSelectionRangeEx();return s?(s.ranges.forEach((function(t){a.push.apply(a,(0,r.__spreadArray)([],(0,r.__read)((0,i.queryElements)(o.contentDiv,e,n,l,t)),!1))})),a):(0,i.queryElements)(o.contentDiv,e,n,l,void 0)},e.prototype.collapseNodes=function(e,t,n){return(0,i.collapseNodes)(this.getCore().contentDiv,e,t,n)},e.prototype.isEmpty=function(e){return(0,i.isNodeEmpty)(this.getCore().contentDiv,e)},e.prototype.getContent=function(e){void 0===e&&(e=0);var t=this.getCore();return t.api.getContent(t,e)},e.prototype.setContent=function(e,t){void 0===t&&(t=!0);var n=this.getCore();n.api.setContent(n,e,t)},e.prototype.insertContent=function(e,t){var n;if(e){var r=this.getDocument(),o=null===(n=(new DOMParser).parseFromString(this.getCore().trustedHTMLHandler(e),"text/html"))||void 0===n?void 0:n.body,a=(null==o?void 0:o.childNodes)?(0,i.toArray)(o.childNodes):[];t&&t.insertOnNewLine&&a.length>1&&(a=[(0,i.wrap)(a)]);var l=r.createDocumentFragment();a.forEach((function(e){return l.appendChild(e)})),this.insertNode(l,t)}},e.prototype.deleteSelectedContent=function(){var e=this.getSelectionRange();return e&&!e.collapsed?(0,i.deleteSelectedContent)(this.getCore().contentDiv,e):null},e.prototype.paste=function(e,t,n,r){var o=this;void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=this.getCore();if(e){e.snapshotBeforePaste?this.setContent(e.snapshotBeforePaste):e.snapshotBeforePaste=this.getContent(2);var l=this.getSelectionRange(),s=l&&i.Position.getStart(l),u=a.api.createPasteFragment(a,e,s,t,n,r);u&&this.addUndoSnapshot((function(){return o.insertNode(u),e}),"Paste")}},e.prototype.getSelectionRange=function(e){void 0===e&&(e=!0);var t=this.getCore();return t.api.getSelectionRange(t,e)},e.prototype.getSelectionRangeEx=function(){var e=this.getCore();return e.api.getSelectionRangeEx(e)},e.prototype.getSelectionPath=function(){var e=this.getSelectionRange();return e&&(0,i.getSelectionPath)(this.getCore().contentDiv,e)},e.prototype.hasFocus=function(){var e=this.getCore();return e.api.hasFocus(e)},e.prototype.focus=function(){var e=this.getCore();e.api.focus(e)},e.prototype.select=function(e,t,n,r){var o=this.getCore();return o.api.select(o,e,t,n,r)},e.prototype.getFocusedPosition=function(){var e,t=null===(e=this.getDocument().defaultView)||void 0===e?void 0:e.getSelection();if((null==t?void 0:t.focusNode)&&this.contains(t.focusNode))return new i.Position(t.focusNode,t.focusOffset);var n=this.getSelectionRange();return n?i.Position.getStart(n):null},e.prototype.getElementAtCursor=function(e,t,n){var r,o=this;return n=t?void 0:n,null!==(r=(0,i.cacheGetEventData)(null!=n?n:null,"GET_ELEMENT_AT_CURSOR_"+e,(function(){if(!t){var n=o.getFocusedPosition();t=null==n?void 0:n.node}return t&&(0,i.findClosestElementAncestor)(t,o.getCore().contentDiv,e)})))&&void 0!==r?r:null},e.prototype.isPositionAtBeginning=function(e){return(0,i.isPositionAtBeginningOf)(e,this.getCore().contentDiv)},e.prototype.getSelectedRegions=function(e){void 0===e&&(e=0);var t=this.getSelectionRangeEx(),n=[],o=this.getCore().contentDiv;return t.ranges.forEach((function(t){n.push.apply(n,(0,r.__spreadArray)([],(0,r.__read)(t?(0,i.getRegionsFromRange)(o,t,e):[]),!1))})),n.filter((function(e,t,n){return n.indexOf(e)===t}))},e.prototype.addDomEventHandler=function(e,t){var n,r="string"==typeof e?((n={})[e]=t,n):e,o=this.getCore();return o.api.attachDomEvent(o,r)},e.prototype.triggerPluginEvent=function(e,t,n){void 0===n&&(n=!1);var o=this.getCore(),i=(0,r.__assign)({eventType:e},t);return o.api.triggerEvent(o,i,n),i},e.prototype.triggerContentChangedEvent=function(e,t){void 0===e&&(e="SetContent"),this.triggerPluginEvent(7,{source:e,data:t})},e.prototype.undo=function(){this.focus();var e=this.getCore();e.api.restoreUndoSnapshot(e,-1)},e.prototype.redo=function(){this.focus();var e=this.getCore();e.api.restoreUndoSnapshot(e,1)},e.prototype.addUndoSnapshot=function(e,t,n,r){var o=this.getCore();o.api.addUndoSnapshot(o,null!=e?e:null,null!=t?t:null,null!=n&&n,r)},e.prototype.getUndoState=function(){var e=this.getCore().undo,t=e.hasNewContent,n=e.snapshotsService;return{canUndo:t||n.canMove(-1),canRedo:n.canMove(1)}},e.prototype.getDocument=function(){return this.getCore().contentDiv.ownerDocument},e.prototype.getScrollContainer=function(){return this.getCore().domEvent.scrollContainer},e.prototype.getCustomData=function(e,t,n){var r=this.getCore();return(r.lifecycle.customData[e]=r.lifecycle.customData[e]||{value:t?t():void 0,disposer:n}).value},e.prototype.isInIME=function(){return this.getCore().domEvent.isInIME},e.prototype.getDefaultFormat=function(){var e;return null!==(e=this.getCore().lifecycle.defaultFormat)&&void 0!==e?e:{}},e.prototype.getBodyTraverser=function(e){return i.ContentTraverser.createBodyTraverser(this.getCore().contentDiv,e)},e.prototype.getSelectionTraverser=function(e){var t;return(e=null!==(t=null!=e?e:this.getSelectionRange())&&void 0!==t?t:void 0)?i.ContentTraverser.createSelectionTraverser(this.getCore().contentDiv,e):null},e.prototype.getBlockTraverser=function(e){void 0===e&&(e=3);var t=this.getSelectionRange();return t?i.ContentTraverser.createBlockTraverser(this.getCore().contentDiv,t,e):null},e.prototype.getContentSearcherOfCursor=function(e){var t=this;return(0,i.cacheGetEventData)(null!=e?e:null,"ContentSearcher",(function(){var e=t.getSelectionRange();return e&&new i.PositionContentSearcher(t.getCore().contentDiv,i.Position.getStart(e))}))},e.prototype.runAsync=function(e){var t=this,n=this.getCore().contentDiv.ownerDocument.defaultView||window,r=n.requestAnimationFrame((function(){!t.isDisposed()&&e&&e(t)}));return function(){n.cancelAnimationFrame(r)}},e.prototype.setEditorDomAttribute=function(e,t){null===t?this.getCore().contentDiv.removeAttribute(e):this.getCore().contentDiv.setAttribute(e,t)},e.prototype.getEditorDomAttribute=function(e){return this.getCore().contentDiv.getAttribute(e)},e.prototype.getRelativeDistanceToEditor=function(e,t){if(this.contains(e)){var n=this.getCore().contentDiv,r=n.getBoundingClientRect(),o=e.getBoundingClientRect();if(r&&o){var i=o.left-(null==r?void 0:r.left),a=o.top-(null==r?void 0:r.top);return t&&(i+=n.scrollLeft,a+=n.scrollTop),[i,a]}}return null},e.prototype.addContentEditFeature=function(e){var t=this.getCore();null==e||e.keys.forEach((function(n){var r=t.edit.features[n]||[];r.push(e),t.edit.features[n]=r}))},e.prototype.removeContentEditFeature=function(e){var t=this.getCore();null==e||e.keys.forEach((function(n){var r,o=t.edit.features[n],i=null!==(r=null==o?void 0:o.indexOf(e))&&void 0!==r?r:-1;i>=0&&(t.edit.features[n].splice(i,1),t.edit.features[n].length<1&&delete t.edit.features[n])}))},e.prototype.getStyleBasedFormatState=function(e){var t;if(!e){var n=this.getSelectionRange();e=null!==(t=n&&i.Position.getStart(n).normalize().node)&&void 0!==t?t:void 0}var r=this.getCore();return r.api.getStyleBasedFormatState(r,null!=e?e:null)},e.prototype.getPendableFormatState=function(e){void 0===e&&(e=!1);var t=this.getCore();return t.api.getPendableFormatState(t,e)},e.prototype.ensureTypeInContainer=function(e,t){var n=this.getCore();n.api.ensureTypeInContainer(n,e,t)},e.prototype.setDarkModeState=function(e){var t=this.isDarkMode();if(t!=!!e){var n=this.getCore();n.api.transformColor(n,n.contentDiv,!1,null,e?0:1,!0,t),this.triggerContentChangedEvent(e?"SwitchToDarkMode":"SwitchToLightMode")}},e.prototype.isDarkMode=function(){return this.getCore().lifecycle.isDarkMode},e.prototype.transformToDarkColor=function(e){var t=this.getCore();t.api.transformColor(t,e,!0,null,0)},e.prototype.getDarkColorHandler=function(){return this.getCore().darkColorHandler},e.prototype.startShadowEdit=function(){var e=this.getCore();e.api.switchShadowEdit(e,!0)},e.prototype.stopShadowEdit=function(){var e=this.getCore();e.api.switchShadowEdit(e,!1)},e.prototype.isInShadowEdit=function(){return!!this.getCore().lifecycle.shadowEditFragment},e.prototype.isFeatureEnabled=function(e){return(0,o.isFeatureEnabled)(this.getCore().lifecycle.experimentalFeatures,e)},e.prototype.getTrustedHTMLHandler=function(){return this.getCore().trustedHTMLHandler},e.prototype.getSizeTransformer=function(){return this.getCore().sizeTransformer},e.prototype.getZoomScale=function(){return this.getCore().zoomScale},e.prototype.setZoomScale=function(e){var t=this.getCore();if(e>0&&e<=10){var n=t.zoomScale;t.zoomScale=e,n!=e&&this.triggerPluginEvent(21,{oldZoomScale:n,newZoomScale:e},!0)}},e.prototype.getVisibleViewport=function(){return this.getCore().getVisibleViewport()},e.prototype.getCore=function(){if(!this.core)throw new Error("Editor is already disposed");return this.core},e}();t.EditorBase=a},9602:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorCore=void 0;var r=n(7582),o=n(8376),i=n(2842),a=n(6344),l=n(6447);t.createEditorCore=function(e,t){var n,s=(0,o.default)(e,t),u=[];(0,a.getObjectKeys)(s).forEach((function(e){"_placeholder"==e?t.plugins&&(0,a.arrayPush)(u,t.plugins):u.push(s[e])}));var d=(0,o.getPluginState)(s),c=(null!==(n=t.zoomScale)&&void 0!==n?n:-1)>0?t.zoomScale:1,f=t.getVisibleViewport||function(){var e=d.domEvent.scrollContainer;return(0,a.getIntersectedRect)(e==p.contentDiv?[e]:[e,p.contentDiv])},p=(0,r.__assign)((0,r.__assign)({contentDiv:e,api:(0,r.__assign)((0,r.__assign)({},l.coreApiMap),t.coreApiOverride||{}),originalApi:l.coreApiMap,plugins:u.filter((function(e){return!!e}))},d),{trustedHTMLHandler:t.trustedHTMLHandler||function(e){return e},zoomScale:c,sizeTransformer:t.sizeTransformer||function(e){return e/c},getVisibleViewport:f,imageSelectionBorderColor:t.imageSelectionBorderColor,darkColorHandler:new i.default(e,d.lifecycle.getDarkColor)});return p}},3441:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFeatureEnabled=void 0,t.isFeatureEnabled=function(e,t){return(e||[]).indexOf(t)>=0}},6630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorCore=t.isFeatureEnabled=t.EditorBase=t.Editor=void 0;var r=n(3386);Object.defineProperty(t,"Editor",{enumerable:!0,get:function(){return r.default}});var o=n(5075);Object.defineProperty(t,"EditorBase",{enumerable:!0,get:function(){return o.EditorBase}});var i=n(3441);Object.defineProperty(t,"isFeatureEnabled",{enumerable:!0,get:function(){return i.isFeatureEnabled}});var a=n(9602);Object.defineProperty(t,"createEditorCore",{enumerable:!0,get:function(){return a.createEditorCore}})},8715:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(6997),i=function(){function e(e){this.element=e}return e.prototype.collapseToSingleElement=function(){return this.element},e.prototype.getStartNode=function(){return this.element},e.prototype.getEndNode=function(){return this.element},e.prototype.equals=function(e){return this.element==e.getStartNode()},e.prototype.isAfter=function(e){return(0,o.default)(this.element,e.getEndNode())},e.prototype.contains=function(e){return(0,r.default)(this.element,e,!0)},e.prototype.getTextContent=function(){var e;return(null===(e=this.element)||void 0===e?void 0:e.textContent)||""},e}();t.default=i},461:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(8655),i=n(8831),a=n(3408),l=n(5499),s=n(6997),u=n(4251),d=n(9381),c=["TD","TH","LI","BLOCKQUOTE"],f=function(){function e(e,t,n){this.rootNode=e,this.startNode=t,this.endNode=n}return e.getBlockContext=function(e){for(var t=e;t&&!(0,l.default)(t);)t=t.parentNode;return t},e.prototype.collapseToSingleElement=function(){for(var t=e.getBlockContext(this.startNode),n=t?(0,r.default)(t,this.startNode,this.endNode,!0):[],o=e.getBlockContext(this.startNode);n[0]&&n[0]!=o&&n[0].parentNode!=this.rootNode&&c.indexOf((0,a.default)(n[0].parentNode))<0;){var i=(0,d.splitBalancedNodeRange)(n);if(!i)break;n=[i]}return 1==n.length&&(0,l.default)(n[0])?n[0]:(0,u.default)(n)},e.prototype.getStartNode=function(){return this.startNode},e.prototype.getEndNode=function(){return this.endNode},e.prototype.equals=function(e){return this.startNode==e.getStartNode()&&this.endNode==e.getEndNode()},e.prototype.isAfter=function(e){return(0,s.default)(this.getStartNode(),e.getEndNode())},e.prototype.contains=function(e){return(0,o.default)(this.startNode,e,!0)||(0,o.default)(this.endNode,e,!0)||(0,s.default)(e,this.startNode)&&(0,s.default)(this.endNode,e)},e.prototype.getTextContent=function(){var e=(0,i.default)(this.getStartNode(),this.getEndNode());return e?e.toString():""},e}();t.default=f},7070:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(8655),i=n(3408),a=n(5499),l=n(8715),s=n(461);function u(e,t,n){var r=e;if("BR"==(0,i.default)(r)&&n)return r;for(;r;){for(var o=e;e.parentNode&&!(o=n?e.nextSibling:e.previousSibling);)if((e=e.parentNode)==t)return r;for(;o;){if((0,a.default)(o))return r;if("BR"==(0,i.default)(o))return n?o:r;e=o,o=n?e.firstChild:e.lastChild}r=e}return r}t.default=function(e,t){if(!(0,o.default)(e,t))return null;var n=s.default.getBlockContext(t);if(!n)return null;if(n==t)return new l.default(n);var i=u(t,n,!1),d=u(t,n,!0);if(!i||!d)return null;var c=(0,r.default)(e,i,d,!1);if(0===c.length)return null;if(i=c[0],d=c[c.length-1],i.parentNode!=d.parentNode)return new s.default(e,i,d);for(;!i.previousSibling&&!d.nextSibling;){var f=i.parentNode;if(f==n){n!=e&&(i=d=f);break}if(!f||f==e)break;i=d=f}return i==d&&(0,a.default)(i)?new l.default(i):new s.default(e,i,d)}},1306:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070);t.default=function(e,t){var n=e;do{n=n&&(t?n.firstChild:n.lastChild)}while(n&&n.firstChild);return n&&(0,r.default)(e,n)||null}},1545:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3877),o=n(6960),i=n(8375),a=n(246);t.default=function(e,t,n,l){var s,u=e.clipboardData||(null===(s=e.target.ownerDocument)||void 0===s?void 0:s.defaultView).clipboardData;u.items?(e.preventDefault(),(0,r.default)((0,i.default)(u.items),n,!0).then((function(e){var n;n=l,a.Browser.isAndroid&&n&&n.deleteContents(),t(e)}))):(0,o.default)(u,t,n)}},3877:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o=n(3126),i=n(246),a=/^Version:[0-9\.]+\s+StartHTML:\s*([0-9]+)\s+EndHTML:\s*([0-9]+)\s+/i,l="text/*",s="link-preview",u=((r={})["text/html"]=function(e,t){return e.rawHtml=i.Browser.isEdge?function(e){var t=a.exec(e);if(3==(null==t?void 0:t.length)){var n=parseInt(t[1]),r=parseInt(t[2]);n>0&&r>n&&(e=e.substring(n,r))}return e}(t):t},r["text/plain"]=function(e,t){return e.text=t},r[l]=function(e,t,n){return!!n&&(e.customValues[n]=t)},r["text/"+s]=function(e,t){try{e.customValues[s]=t,e.linkPreview=JSON.parse(t)}catch(e){}},r);t.default=function(e,t,n){var r={types:[],text:"",image:null,files:[],rawHtml:null,customValues:{},pasteNativeEvent:n};return Promise.all((e||[]).map((function(e){var n=e.type;if(0!=n.indexOf("image/")||r.image||"file"!=e.kind){if("file"==e.kind)return new Promise((function(t){var o=e.getAsFile();o&&(r.types.push(n),r.files.push(o)),t()}));var i=function(e,t){var n=0==e.indexOf("text/")?e.substring(5):null,r=t&&n?t.indexOf(n):-1;return n&&r>=0?n:void 0}(n,null==t?void 0:t.allowedCustomPasteType),a=u[n]||(i?u[l]:null);return new Promise((function(t){return a?e.getAsString((function(e){r.types.push(n),a(r,e,i),t()})):t()}))}return r.types.push(n),r.image=e.getAsFile(),new Promise((function(e){r.image?(0,o.default)(r.image,(function(t){r.imageDataUri=t,e()})):e()}))}))).then((function(){return r}))}},6960:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3126),o=n(8375);t.default=function(e,t,n){for(var i,a,l,s={types:e.types?(0,o.default)(e.types):[],text:e.getData("text"),image:null,files:[],rawHtml:null,customValues:{},pasteNativeEvent:!0},u=0;u<(e.files?e.files.length:0);u++){var d=e.files.item(u);if(0==(null===(i=null==d?void 0:d.type)||void 0===i?void 0:i.indexOf("image/"))){s.image=d;break}}var c=function(){s.image?(0,r.default)(s.image,(function(e){s.imageDataUri=e,t(s)})):t(s)};if((null==n?void 0:n.getTempDiv)&&(null==n?void 0:n.removeTempDiv)){var f=n.getTempDiv();f.contentEditable="true",f.innerHTML="",f.focus(),null===(l=null===(a=f.ownerDocument)||void 0===a?void 0:a.defaultView)||void 0===l||l.setTimeout((function(){var e;s.rawHtml=f.innerHTML,null===(e=n.removeTempDiv)||void 0===e||e.call(n,f),c()}),0)}else s.rawHtml=void 0,c()}},351:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){return e?1:t?2:n?3:0}},8736:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.ownerDocument.createElement("img");n.style.maxWidth="100%",n.src=e,t.appendChild(n)}},2543:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transformTabCharacters=void 0;var r=n(4251);function o(e,t){void 0===t&&(t=0);for(var n,r=e;-1!=(n=r.indexOf("\t"));){var o=r.slice(0,n),i=r.slice(n+1),a=6-(o.length+t)%6;r=o+Array(a).fill(" ").join("")+i}return r}t.default=function(e,t,n){var i=n.ownerDocument;e.split("\n").forEach((function(e,a,l){(e=e.replace(/^ /g," ").replace(/\r/g,"").replace(/ {2}/g,"  ")).includes("\t")&&(e=o(e,0===a?null==t?void 0:t.offset:0));var s=i.createTextNode(e);2==l.length&&0==a?(n.appendChild(s),n.appendChild(i.createElement("br"))):a>0&&a{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(8375);function i(e,t){(0,o.default)(e.querySelectorAll("style")).forEach(t)}t.default=function(e,t,n){var a,l,s=t.clipboardData,u=t.sanitizingOption,d=s.rawHtml;if(d&&(null==e?void 0:e.body)){var c=null===(a=e.querySelector("html"))||void 0===a?void 0:a.attributes;(c?(0,o.default)(c):[]).reduce((function(e,t){return e[t.name]=t.value,e}),t.htmlAttributes),(0,o.default)(e.querySelectorAll("meta")).reduce((function(e,t){return e[t.name]=t.content,e}),t.htmlAttributes),s.htmlFirstLevelChildTags=[],null==e||e.body.normalize();for(var f=0;f<(null==e?void 0:e.body.childNodes.length);f++){var p=null==e?void 0:e.body.childNodes.item(f);if(p.nodeType!=Node.TEXT_NODE||(null===(l=p.nodeValue)||void 0===l?void 0:l.replace(/(\r\n|\r|\n)/gm,"").trim())){var v=(0,r.default)(p);p.nodeType!=Node.COMMENT_NODE&&s.htmlFirstLevelChildTags.push(v)}}i(e,(function(t){null==e||e.head.appendChild(t),u.additionalGlobalStyleNodes.push(t)}));var h=d.indexOf("\x3c!--StartFragment--\x3e"),g=d.lastIndexOf("\x3c!--EndFragment--\x3e");h>=0&&g>=h+20&&(t.htmlBefore=d.substr(0,h),t.htmlAfter=d.substr(g+18),s.html=d.substring(h+20,g),e.body.innerHTML=n(s.html),i(e.body,(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)})))}}},5216:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(623),o=n(8488);t.default=function(e,t){var n=e.fragment,i=new o.default(e.sanitizingOption);i.convertGlobalCssToInlineCss(n),i.sanitize(n,t?(0,r.default)(t.element):void 0)}},7676:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(7070),i=n(1306),a=n(8153),l=n(7229),s=function(){function e(e,t){this.rootNode=e,this.startNode=(0,r.default)(e,t)?t:null}return e.prototype.getStartBlockElement=function(){return this.startNode?(0,o.default)(this.rootNode,this.startNode):(0,i.default)(this.rootNode,!0)},e.prototype.getStartInlineElement=function(){return this.startNode?(0,a.default)(this.rootNode,this.startNode):(0,l.getFirstInlineElement)(this.rootNode)},e.prototype.isBlockInScope=function(e){return(0,r.default)(this.rootNode,e.getStartNode())},e.prototype.trimInlineElement=function(e){return e},e}();t.default=s},6754:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7676),o=n(8251),i=n(7070),a=n(8153),l=n(5269),s=n(9984),u=n(3526),d=n(2571),c=n(2513),f=function(){function e(e,t){this.scoper=e,this.skipTags=t,this.currentInline=null,this.currentBlock=null}return e.createBodyTraverser=function(t,n,o){return new e(new r.default(t,n))},e.createSelectionTraverser=function(t,n,r){return new e(new u.default(t,n),r)},e.createBlockTraverser=function(t,n,r,o){return void 0===r&&(r=3),new e(new s.default(t,n,r))},Object.defineProperty(e.prototype,"currentBlockElement",{get:function(){return this.currentBlock||(this.currentBlock=this.scoper.getStartBlockElement()),this.currentBlock},enumerable:!1,configurable:!0}),e.prototype.getNextBlockElement=function(){return this.getPreviousNextBlockElement(!0)},e.prototype.getPreviousBlockElement=function(){return this.getPreviousNextBlockElement(!1)},e.prototype.getPreviousNextBlockElement=function(e){var t=this.currentBlockElement;if(!t)return null;var n=(0,c.getLeafSibling)(this.scoper.rootNode,e?t.getEndNode():t.getStartNode(),e,this.skipTags),r=n?(0,i.default)(this.scoper.rootNode,n):null;return r&&this.scoper.isBlockInScope(r)&&(e&&r.isAfter(t)||!e&&t.isAfter(r))?(this.currentBlock=r,this.currentBlock):null},Object.defineProperty(e.prototype,"currentInlineElement",{get:function(){return this.currentInline||(this.currentInline=this.scoper.getStartInlineElement()),this.currentInline instanceof o.default?null:this.currentInline},enumerable:!1,configurable:!0}),e.prototype.getNextInlineElement=function(){return this.getPreviousNextInlineElement(!0)},e.prototype.getPreviousInlineElement=function(){return this.getPreviousNextInlineElement(!1)},e.prototype.getPreviousNextInlineElement=function(e){var t,n=this.currentInlineElement||this.currentInline;return n?(n instanceof o.default?(t=(0,d.getInlineElementBeforeAfter)(this.scoper.rootNode,n.getStartPosition(),e))&&!n.getParentBlock().contains(t.getContainerNode())&&(t=null):(t=function(e,t,n){if(!t)return null;if(t instanceof l.default){var r=n?t.nextInlineElement:t.previousInlineElement;if(r)return r}var o=t.getContainerNode();return o=(0,c.getLeafSibling)(e,o,n),(0,a.default)(e,o)}(this.scoper.rootNode,n,e),t=t&&n&&(e&&t.isAfter(n)||!e&&n.isAfter(t))?t:null),t&&(t=this.scoper.trimInlineElement(t))?(this.currentInline=t,this.currentInline):null):null},e}();t.default=f},6091:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(8831),i=/[\s\u00A0\u200B\u3000]+([^\s\u00A0\u200B\u3000]*)$/i,a=function(){function e(e,t){this.rootNode=e,this.position=t,this.text="",this.word="",this.inlineBefore=null,this.inlineAfter=null,this.traverser=null,this.traversingComplete=!1,this.inlineElements=[],this.nearestNonTextInlineElement=null}return e.prototype.getWordBefore=function(){var e=this;return this.word||this.traverse((function(){return e.word})),this.word||""},e.prototype.getInlineElementBefore=function(){return this.inlineBefore||this.traverse(null),this.inlineBefore},e.prototype.getInlineElementAfter=function(){return this.inlineAfter||(this.inlineAfter=r.default.createBlockTraverser(this.rootNode,this.position).currentInlineElement),this.inlineAfter},e.prototype.getSubStringBefore=function(e){var t=this;return this.text.length=e})),this.text.substr(Math.max(0,this.text.length-e))},e.prototype.getRangeFromText=function(e,t){if(!e)return null;var n=null,r=null,i=e.length-1;return this.forEachTextInlineElement((function(o){for(var a=o.getTextContent()||"",l=a.length-1;l>=0&&i>=0;l--)if(e.charCodeAt(i)==a.charCodeAt(l))i--,r||(r=o.getStartPosition().move(l+1));else if(t||r)return!0;return-1==i&&(n=o.getStartPosition().move(l+1),!0)})),n&&r&&(0,o.default)(n,r)},e.prototype.forEachTextInlineElement=function(e){this.inlineElements.some(e)||this.traverse(e)},e.prototype.getNearestNonTextInlineElement=function(){var e=this;return this.nearestNonTextInlineElement||this.traverse((function(){return e.nearestNonTextInlineElement})),this.nearestNonTextInlineElement},e.prototype.traverse=function(e){if(this.traverser=this.traverser||r.default.createBlockTraverser(this.rootNode,this.position),this.traverser&&!this.traversingComplete)for(var t=this.traverser.getPreviousInlineElement();!this.traversingComplete;){if(this.inlineBefore=this.inlineBefore||t,!t||!t.isTextualInlineElement()){this.nearestNonTextInlineElement=t,this.traversingComplete=!0,this.word||(this.word=this.text);break}var n=t.getTextContent();if(!this.word){var o=i.exec(n);o&&2==o.length&&(this.word=o[1]+this.text)}if(this.text=n+this.text,this.inlineElements.push(t),e&&e(t))break;t=this.traverser.getPreviousInlineElement()}},e}();t.default=a},9984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8251),o=n(7070),i=n(8153),a=n(8715),l=n(4630),s=n(5924),u=n(2571),d=n(7229),c=function(){function e(e,t,n){this.rootNode=e,this.startFrom=n,(0,s.default)(t,"Range")&&(t=l.default.getStart(t)),this.position=t.normalize(),this.block=(0,o.default)(this.rootNode,this.position.node)}return e.prototype.getStartBlockElement=function(){return this.block},e.prototype.getStartInlineElement=function(){if(this.block)switch(this.startFrom){case 0:case 1:case 2:return function(e,t){if(e instanceof a.default){var n=e.getStartNode();return t?(0,d.getFirstInlineElement)(n):(0,d.getLastInlineElement)(n)}return(0,i.default)(e,t?e.getStartNode():e.getEndNode())}(this.block,0==this.startFrom);case 3:var e=(0,u.getInlineElementAfter)(this.rootNode,this.position);return e&&this.block.contains(e.getContainerNode())?e:new r.default(this.position,this.block)}return null},e.prototype.isBlockInScope=function(e){return!(!this.block||!e)&&this.block.equals(e)},e.prototype.trimInlineElement=function(e){return this.block&&e&&this.block.contains(e.getContainerNode())?e:null},e}();t.default=c},3526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070),o=n(5269),i=n(4630),a=n(2571),l=function(){function e(e,t){this.rootNode=e,this.startBlock=null,this.startInline=null,this.start=i.default.getStart(t).normalize(),this.end=i.default.getEnd(t).normalize()}return e.prototype.getStartBlockElement=function(){return this.startBlock||(this.startBlock=(0,r.default)(this.rootNode,this.start.node)),this.startBlock},e.prototype.getStartInlineElement=function(){return this.startInline||(this.startInline=this.trimInlineElement((0,a.getInlineElementAfter)(this.rootNode,this.start))),this.startInline},e.prototype.isBlockInScope=function(e){if(!e)return!1;var t=!1,n=this.getStartBlockElement();if(this.start.equalTo(this.end))t=!!n&&n.equals(e);else{var o=(0,r.default)(this.rootNode,this.end.node);t=!!n&&!!o&&(e.equals(n)||e.equals(o)||e.isAfter(n)&&o.isAfter(e))}return t},e.prototype.trimInlineElement=function(e){if(!e||this.start.equalTo(this.end))return null;var t=e.getStartPosition(),n=e.getEndPosition();if(t.isAfter(this.end)||this.start.isAfter(n))return null;var r=!1,i=!1;return this.start.isAfter(t)&&(t=this.start,r=!0),n.isAfter(this.end)&&(n=this.end,i=!0),t.isAfter(n)||t.equalTo(n)?null:r||i?new o.default(e,r?t:void 0,i?n:void 0):e},e}();t.default=l},8937:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addDelimiterBefore=t.addDelimiterAfter=void 0;var r=n(7582),o=n(6935),i=n(3765),a="​";function l(e){return d(e,"entityDelimiterAfter")}function s(e){return d(e,"entityDelimiterBefore")}function u(e,t){return e&&(0,i.default)(e)&&e.classList.contains(t)?e:void 0}function d(e,t){var n=(0,o.default)({tag:"span",className:t,children:[a]},e.ownerDocument);if(n){var r="entityDelimiterAfter"==t?"afterend":"beforebegin";e.insertAdjacentElement(r,n)}return n}t.default=function(e){var t,n,o,i,a=(0,r.__read)((n=[],o=(t=e).nextElementSibling,i=t.previousElementSibling,n.push(u(o,"entityDelimiterAfter"),u(i,"entityDelimiterBefore")),n),2),d=a[0],c=a[1];return d||(d=l(e)),c||(c=s(e)),[d,c]},t.addDelimiterAfter=l,t.addDelimiterBefore=s},3765:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e){return e&&(0,r.default)(e,"HTMLSpanElement")&&(e.classList.contains("entityDelimiterAfter")||e.classList.contains("entityDelimiterBefore"))&&"​"===e.textContent?e:null}},2738:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4984),o=n(8655),i=n(6754),a=n(8831),l=n(3598),s=n(7070),u=n(3408),d=n(1657),c=n(1431),f=n(8235),p=n(5672),v=n(1473),h=n(4731),g=n(4630),m=n(6091),y=n(8471),b=n(7409),E=n(8375),C=n(82),S=n(4251),T=n(9381),P="[contenteditable=false]",_=[function(e,t,n,r){var i,l,u=(0,s.default)(e,n.node);if(u){var c=(0,y.default)(e,"a[href]",null,1,(0,a.default)(n)).filter((function(e){return u.contains(e)}))[0];if(c&&(0,d.default)(c)&&(n=new g.default(c,-2),w(c),c=null),c&&(null===(i=t)||void 0===i?void 0:i.querySelector)&&(null===(l=t)||void 0===l?void 0:l.querySelector("a[href]"))){var f=n.normalize(),p=f.node.parentNode,v=3==f.node.nodeType?(0,b.default)(f.node,f.offset,!1):f.isAtEnd?f.node.nextSibling:f.node,h=e.ownerDocument.createTextNode("");for(p.insertBefore(h,v);h&&(0,o.default)(c,h);)h=(0,T.splitBalancedNodeRange)(h);h&&(n=new g.default(h,-2),w(h))}}return n},function(e,t,n,r){var o=t,i=!1;if(11==o.nodeType){i=!0;var a=(0,E.default)(o.childNodes).filter((function(e){return"BR"!=(0,u.default)(e)}));o=1==a.length?a[0]:null}var s=(0,u.default)(o),d=s&&o&&"BR"==(0,u.default)(o.nextSibling),f=(0,l.default)(n.node,e,"LI"),p=f&&(0,l.default)(f,e,"OL,UL"),m=(0,l.default)(n.node,e,"TD,TH");if("LI"==s&&(s=p?(0,u.default)(p):"UL",o=(0,S.default)(o,s)),("OL"==s||"UL"==s)&&o&&"LI"==(0,u.default)(o.firstChild)){var y=!o.firstChild.nextSibling&&!d;d&&o.parentNode&&w(o.nextSibling),y?((0,C.default)(o.firstChild),(0,C.default)(o)):(0,u.default)(p)==s&&((0,C.default)(o),n=new g.default(f,(0,c.default)(n,f)?-2:-3))}return i&&"TABLE"==s&&m&&((0,h.default)(m,o,n,r),n=new g.default(o,0),(0,v.default)(t)),n},function(e,t,n,o){if("P"==(0,u.default)(n.node)){var i=n.normalize(),a=(0,r.default)(n.node,"div");i.node!=a&&(n=i)}return n},function(e,t,n,r){return(0,f.default)(n.node)&&(n=new g.default(n.node,n.isAtEnd?-3:-2)),n},function(e,t,n,r){if(r&&r.collapsed){var o=new m.default(e,g.default.getStart(r)),i=o.getInlineElementBefore(),a=o.getInlineElementAfter();i instanceof p.default?n=new g.default(i.getContainerNode(),-3):a instanceof p.default&&(n=new g.default(a.getContainerNode(),-2))}return n},function e(t,n,r,o){var i;if(!(null===(i=r.element)||void 0===i?void 0:i.isContentEditable)){for(var a=void 0,s=(0,l.default)(r.node,t,P);s;)s=(null==(a=s)?void 0:a.parentElement)?(0,l.default)(a.parentElement,t,P):null;if(a)return e(t,n,r=new g.default(a,-3),o)}return r},function(e,t,n,r){if(1==t.childNodes.length&&"TABLE"==(0,u.default)(t.childNodes[0])||"TABLE"==(0,u.default)(t)){var o=n.element,s=new g.default(o,-2),d=(0,a.default)(s,n),c=i.default.createSelectionTraverser(e,d),f=c&&c.currentBlockElement;if(f){for(var p=f;!p;)(p=c.getNextBlockElement())&&(f=p);var v=null==f?void 0:f.getEndNode();if(v&&(0,l.default)(v,e,"TABLE")){var h=(0,a.default)(n);h.collapse(!1);var m=e.ownerDocument.createElement("br");h.insertNode(m),h=(0,a.default)(m),n=g.default.getEnd(h)}}}return n}];function w(e){var t;null===(t=null==e?void 0:e.parentNode)||void 0===t||t.removeChild(e)}t.default=function(e,t,n,r){return _.forEach((function(o){n=o(e,t,n,r)})),n}},3030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(8605),i=n(6688),a=n(8394),l=n(4539),s=n(2799),u=n(4630),d=n(8471),c=n(5924),f=n(7409);function p(e,t,n){var r,o;if((0,c.default)(e,"Text")){var i=(0,f.default)(e,t,n);return n?[i,e]:[e,i]}var a=e.childNodes[t-1],l=e.childNodes[t];if(a||l||(n?a=(l=e).previousSibling:l=(a=e).nextSibling),(a||l)&&(!a||!l)){var s=e.ownerDocument.createTextNode("");null===(o=null===(r=a||l)||void 0===r?void 0:r.parentNode)||void 0===o||o.insertBefore(s,l),a?l=s:a=s}return[a,l]}t.default=function(e,t){var n=null,f=(0,d.default)(e,"table,tr",null,2,t),v=(0,a.default)(e,t,0).map((function(e){var t=(0,l.default)(e);if(!t)return null;var a=t.startContainer,s=t.endContainer,u=t.startOffset,d=t.endOffset,v=t.commonAncestorContainer;if((0,c.default)(v,"HTMLElement")&&!v.isContentEditable)return null;var h=(0,r.__read)(p(s,d,!1),2),g=h[0],m=h[1],y=(0,r.__read)(p(a,u,!0),2),b=y[0],E=y[1];n=n||b;var C=(0,i.default)(e,[E,g]);return(0,o.default)(f,C),{region:e,beforeStart:b,afterEnd:m}})).filter((function(e){return!!e}));return f.forEach((function(e){var t;return(null===(t=e.parentElement)||void 0===t?void 0:t.isContentEditable)&&e.parentElement.removeChild(e)})),v.forEach((function(e){e&&(0,s.default)(e.region,e.beforeStart,e.afterEnd)})),n&&new u.default(n,-1)}},8606:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754);t.default=function(e){for(var t=r.default.createBodyTraverser(e),n=t&&t.currentBlockElement,o=[];n;)o.push(n.getTextContent()),n=t.getNextBlockElement();return o.join("\n")}},8839:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="contenteditable";t.default=function(e,t,r,o){e&&(e.className="_Entity _EType_"+t+" "+(o?"_EId_"+o+" ":"")+"_EReadonly_"+(r?"1":"0"),r?e.contentEditable="false":e.getAttribute(n)&&e.removeAttribute(n))}},3032:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreContentWithEntityPlaceholder=t.moveContentWithEntityPlaceholders=t.createEntityPlaceholder=void 0;var r=n(3726),o=n(4965),i=n(5924);function a(e,t){for(var n;e&&(!t||e!=t);){var r=e;e=e.nextSibling,null===(n=r.parentNode)||void 0===n||n.removeChild(r)}return e}function l(e,t){var n,o=(0,i.default)(t,"HTMLElement")&&t.classList.contains("_Entity")&&(null===(n=(0,r.default)(t))||void 0===n?void 0:n.id),a=o?null==e?void 0:e[o]:null;return a?(0,i.default)(a,"HTMLElement")?a:(null==a?void 0:a.canPersist)?a.element:null:null}function s(e,t){return t[e.id]=e.wrapper,e.wrapper.cloneNode(!0)}t.createEntityPlaceholder=function(e){var t=e.wrapper.ownerDocument.createElement("ENTITY-PLACEHOLDER");return t.id=e.id,t},t.moveContentWithEntityPlaceholders=function(e,t){for(var n=(0,o.default)(),a=e.ownerDocument.createDocumentFragment(),l=null,u=function(e){var o,u=e;l=e.nextSibling,(0,i.default)(e,"HTMLElement")&&((o=(0,r.default)(e))?u=s(o,t):e.querySelectorAll(n).forEach((function(e){var n;if(o=(0,r.default)(e)){var i=s(o,t);null===(n=e.parentNode)||void 0===n||n.replaceChild(i,e)}}))),a.appendChild(u)},d=e.firstChild;d;d=l)u(d);return a.normalize(),a},t.restoreContentWithEntityPlaceholder=function(e,t,n,r){for(var s=t.firstChild,u=(0,o.default)(),d=e.firstChild;d;){var c=d.nextSibling,f=l(n,d);if(f)(s=a(s,f))?s=s.nextSibling:t.appendChild(f);else{var p=r?d.cloneNode(!0):d;t.insertBefore(p,s),(0,i.default)(p,"HTMLElement")&&p.querySelectorAll(u).forEach((function(e){var t,r=l(n,e);r&&(null===(t=e.parentNode)||void 0===t||t.replaceChild(r,e))}))}d=c}a(s)}},3726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,n=!1,r="",o="",i=!1;return null===(t=null==e?void 0:e.className)||void 0===t||t.split(" ").forEach((function(e){"_Entity"==e?n=!0:0==e.indexOf("_EType_")?r=e.substr(7):0==e.indexOf("_EId_")?o=e.substr(5):0==e.indexOf("_EReadonly_")&&(i="1"==e.substr(11))})),n?{wrapper:e,id:o,type:r,isReadonly:i}:null}},4965:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return"._Entity"+(e?"._EType_"+e:"")+(t?"._EId_"+t:"")}},996:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=e&&e.eventDataCache&&e.eventDataCache.hasOwnProperty(t)?e.eventDataCache[t]:n();return e&&(e.eventDataCache=e.eventDataCache||{},e.eventDataCache[t]=r),r}},2924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){e&&e.eventDataCache&&(t&&e.eventDataCache.hasOwnProperty(t)?delete e.eventDataCache[t]:t||(e.eventDataCache={}))}},7254:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1045);t.default=function(e){return!(0,r.default)(e)&&!!e.key&&1==e.key.length}},5188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(246).Browser.isMac?function(e){return e.metaKey}:function(e){return e.ctrlKey};t.default=function(e){return r(e)}},1045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.ctrlKey||"Control"===e.key,n=e.altKey||"Alt"===e.key,r=e.metaKey||"Meta"===e.key;return t||n||r}},8488:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(623),a=n(4709),l=n(4869),s=n(359),u=n(3408),d=n(5924),c=n(6092),f=n(8375),p=n(9420),v=n(5097),h=n(2374),g=function(){function e(e){e=e||{},this.elementCallbacks=(0,p.cloneObject)(e.elementCallbacks),this.styleCallbacks=(0,h.getStyleCallbacks)(e.cssStyleCallbacks),this.attributeCallbacks=(0,p.cloneObject)(e.attributeCallbacks),this.tagReplacements=(0,h.getTagReplacement)(e.additionalTagReplacements),this.allowedAttributes=(0,h.getAllowedAttributes)(e.additionalAllowedAttributes),this.allowedCssClassesRegex=(0,h.getAllowedCssClassesRegex)(e.additionalAllowedCssClasses),this.defaultStyleValues=(0,h.getDefaultStyleValues)(e.additionalDefaultStyleValues),this.additionalPredefinedCssForElement=e.additionalPredefinedCssForElement||null,this.additionalGlobalStyleNodes=e.additionalGlobalStyleNodes||[],this.preserveHtmlComments=e.preserveHtmlComments||!1,this.unknownTagReplacement=e.unknownTagReplacement||null}return e.convertInlineCss=function(t,n){return new e({additionalGlobalStyleNodes:n}).exec(t,!0)},e.sanitizeHtml=function(t,n){var r=new e(n=n||{}),o=(0,d.default)(n.currentElementOrStyle,"HTMLElement")?(0,i.default)(n.currentElementOrStyle):n.currentElementOrStyle;return r.exec(t,n.convertCssOnly,o)},e.prototype.exec=function(e,t,n){var r=(new DOMParser).parseFromString(e||"","text/html");return r&&r.body&&r.body.firstChild&&(this.convertGlobalCssToInlineCss(r),t||this.sanitize(r.body,n)),r&&r.body&&r.body.innerHTML||""},e.prototype.sanitize=function(e,t){if(!e)return"";t=(0,p.cloneObject)(t,(0,i.default)(null)),this.processNode(e,t,{})},e.prototype.convertGlobalCssToInlineCss=function(e){var t,n,o=(0,f.default)(e.querySelectorAll("style")),i=this.additionalGlobalStyleNodes.reverse().map((function(e){return e.sheet})).concat(o.map((function(e){return e.sheet})).reverse()).filter((function(e){return e}));try{for(var a=(0,r.__values)(i),l=a.next();!l.done;l=a.next())for(var s=l.value,u=function(t){var n,o,i=s.cssRules[t],a=i&&i.style?i.style.cssText:null;if(i.type!=CSSRule.STYLE_RULE||!a||!i.selectorText)return"continue";try{for(var l=(n=void 0,(0,r.__values)(i.selectorText.split(","))),u=l.next();!u.done;u=l.next()){var d=u.value;!d||!d.trim()||d.indexOf(":")>=0||(0,f.default)(e.querySelectorAll(d)).forEach((function(e){return e.setAttribute("style",a+(e.getAttribute("style")||""))}))}}catch(e){n={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(n)throw n.error}}},d=s.cssRules.length-1;d>=0;d--)u(d)}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}o.forEach((function(e){e.parentNode&&e.parentNode.removeChild(e)}))},e.prototype.processNode=function(e,t,n){var r,i=e.nodeType,a=1==i,l=3==i,s=11==i,d=8==i,c=!1;if(a){var f=(0,u.default)(e),v=this.elementCallbacks[f],h=this.tagReplacements[f.toLowerCase()];void 0===h&&(h=this.unknownTagReplacement),v?c=v(e,n):f.indexOf(":")>0||f==h||"*"==h?c=!0:h&&/^[a-zA-Z][\w\-]*$/.test(h)&&(e=(0,o.default)(e,h),c=!0)}else if(l){var g=t["white-space"];c="pre"==g||"pre-line"==g||"pre-wrap"==g||!/^[\r\n]*$/g.test(e.nodeValue||"")}else c=!!s||!!d&&this.preserveHtmlComments;if(c)if(!l||"pre"!=t["white-space"]&&"pre-wrap"!=t["white-space"]){if(a||s){var m=(0,p.cloneObject)(t),y=e;a&&(this.processAttributes(y,n),this.preprocessCss(y,m),this.processCss(y,m,n));for(var b=y.firstChild,E=void 0;b;b=E)E=b.nextSibling,this.processNode(b,m,n)}}else e.nodeValue=(e.nodeValue||"").replace(/^ /gm," ").replace(/ {2}/g,"  ");else null===(r=e.parentNode)||void 0===r||r.removeChild(e)},e.prototype.preprocessCss=function(e,t){var n=(0,l.default)(e,this.additionalPredefinedCssForElement);n&&(0,a.default)(n).forEach((function(e){t[e]=n[e]}))},e.prototype.processCss=function(e,t,n){var r=this,o=(0,s.default)(e);(0,a.default)(o).forEach((function(i){var a=o[i],l=r.styleCallbacks[i],s=null!=t[i],u=!0;u&&l&&(u=l(a,e,t,n)),u&&(0,v.isCssVariable)(a)&&(u=!!(a=(0,v.processCssVariable)(a))),(u=u&&"inherit"!=a&&a.indexOf("expression")<0&&"-"!=i.substr(0,1)&&r.defaultStyleValues[i]!=a&&(s&&a!=t[i]||!s&&"initial"!=a&&"normal"!=a))&&s&&(t[i]=a),u?o[i]=a:delete o[i]})),(0,c.default)(e,o)},e.prototype.processAttributes=function(e,t){for(var n=e.attributes.length-1;n>=0;n--){var r=e.attributes[n],o=r.name.toLowerCase().trim(),i=r.value,a=this.attributeCallbacks[o],l=a?a(i,e,t):this.allowedAttributes.indexOf(o)>=0||0==o.indexOf("data-")?i:null;"class"==o&&this.allowedCssClassesRegex&&(l=this.processCssClass(i,l)),null==l||l.match(/s\n*c\n*r\n*i\n*p\n*t\n*:/i)?e.removeAttribute(o):r.value=l}},e.prototype.processCssClass=function(e,t){var n=this,r=e?e.split(" "):[],o=t?t.split(" "):[];return r.forEach((function(e){var t;(null===(t=n.allowedCssClassesRegex)||void 0===t?void 0:t.test(e))&&o.indexOf(e)<0&&o.push(e)})),(null==o?void 0:o.length)>0?o.join(" "):null},e}();t.default=g},585:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);t.default=function(e,t,n){if(e[t]){var o=e[t];e[t]=function(){for(var e=[],t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.cloneObject=void 0;var r=n(7582),o=n(4709),i=Object.assign?function(e,t){return Object.assign(t||{},e)}:function(e,t){var n,i,a=t||{};if(e)try{for(var l=(0,r.__values)((0,o.default)(e)),s=l.next();!s.done;s=l.next()){var u=s.value;a[u]=e[u]}}catch(e){n={error:e}}finally{try{s&&!s.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}return a};t.cloneObject=function(e,t){return i(e,t)}},4834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return{elementCallbacks:{},attributeCallbacks:{},cssStyleCallbacks:{},additionalTagReplacements:{},additionalAllowedAttributes:[],additionalAllowedCssClasses:[],additionalDefaultStyleValues:{},additionalGlobalStyleNodes:[],additionalPredefinedCssForElement:{},preserveHtmlComments:!1,unknownTagReplacement:null}}},2374:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getStyleCallbacks=t.getDefaultStyleValues=t.getAllowedCssClassesRegex=t.getAllowedAttributes=t.getTagReplacement=void 0;var r=n(7582),o=n(4709),i=n(9420),a={a:"*",abbr:"*",address:"*",area:"*",article:"*",aside:"*",b:"*",bdi:"*",bdo:"*",blockquote:"*",body:"*",br:"*",button:"*",canvas:"*",caption:"*",center:"*",cite:"*",code:"*",col:"*",colgroup:"*",data:"*",datalist:"*",dd:"*",del:"*",details:"*",dfn:"*",dialog:"*",dir:"*",div:"*",dl:"*",dt:"*",em:"*",fieldset:"*",figcaption:"*",figure:"*",font:"*",footer:"*",h1:"*",h2:"*",h3:"*",h4:"*",h5:"*",h6:"*",head:"*",header:"*",hgroup:"*",hr:"*",html:"*",i:"*",img:"*",input:"*",ins:"*",kbd:"*",label:"*",legend:"*",li:"*",main:"*",map:"*",mark:"*",menu:"*",menuitem:"*",meter:"*",nav:"*",ol:"*",optgroup:"*",option:"*",output:"*",p:"*",picture:"*",pre:"*",progress:"*",q:"*",rp:"*",rt:"*",ruby:"*",s:"*",samp:"*",section:"*",select:"*",small:"*",span:"*",strike:"*",strong:"*",sub:"*",summary:"*",sup:"*",table:"*",tbody:"*",td:"*",textarea:"*",tfoot:"*",th:"*",thead:"*",time:"*",tr:"*",tt:"*",u:"*",ul:"*",var:"*",wbr:"*",xmp:"*",form:"SPAN",applet:null,audio:null,base:null,basefont:null,embed:null,frame:null,frameset:null,iframe:null,link:null,meta:null,noscript:null,object:null,param:null,script:null,slot:null,source:null,style:null,template:null,title:null,track:null,video:null},l="accept,align,alt,checked,cite,color,cols,colspan,contextmenu,coords,datetime,default,dir,dirname,disabled,download,face,headers,height,hidden,high,href,hreflang,ismap,kind,label,lang,list,low,max,maxlength,media,min,multiple,open,optimum,pattern,placeholder,readonly,rel,required,reversed,rows,rowspan,scope,selected,shape,size,sizes,span,spellcheck,src,srclang,srcset,start,step,style,tabindex,target,title,translate,type,usemap,valign,value,width,wrap,bgColor".split(","),s={"background-color":"transparent","border-bottom-color":"rgb(0, 0, 0)","border-bottom-style":"none","border-bottom-width":"0px","border-image-outset":"0","border-image-repeat":"stretch","border-image-slice":"100%","border-image-source":"none","border-image-width":"1","border-left-color":"rgb(0, 0, 0)","border-left-style":"none","border-left-width":"0px","border-right-color":"rgb(0, 0, 0)","border-right-style":"none","border-right-width":"0px","border-top-color":"rgb(0, 0, 0)","border-top-style":"none","border-top-width":"0px","outline-color":"transparent","outline-style":"none","outline-width":"0px",overflow:"visible","-webkit-text-stroke-width":"0px","word-wrap":"break-word","margin-left":"0px","margin-right":"0px",padding:"0px","padding-top":"0px","padding-left":"0px","padding-right":"0px","padding-bottom":"0px",border:"0px","border-top":"0px","border-left":"0px","border-right":"0px","border-bottom":"0px","vertical-align":"baseline",float:"none"},u=[];function d(){return null}function c(e,t){var n=t.tagName;return!("LI"==n||"DIV"==n)}t.getTagReplacement=function(e){var t=(0,r.__assign)({},a),n=e||{};return(0,o.default)(n).forEach((function(e){e&&(t[e.toLowerCase()]=n[e])})),t},t.getAllowedAttributes=function(e){return(t=l.concat(e||[]),t.filter((function(e,t,n){return n.indexOf(e)==t}))).map((function(e){return e.toLocaleLowerCase()}));var t},t.getAllowedCssClassesRegex=function(e){var t=u.concat(e||[]);return t.length>0?new RegExp(t.join("|")):null},t.getDefaultStyleValues=function(e){var t=(0,i.cloneObject)(s);return e&&Object.keys(e).forEach((function(n){var r=e[n];null!=r?t[n]=r:delete t[n]})),t},t.getStyleCallbacks=function(e){var t=(0,i.cloneObject)(e);return t.position=t.position||d,t.width=t.width||c,t}},623:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="border-spacing,caption-side,color,cursor,direction,empty-cells,font-family,font-size,font-style,font-variant,font-weight,font,letter-spacing,line-height,list-style-image,list-style-position,list-style-type,list-style,orphans,quotes,text-align,text-indent,text-transform,visibility,white-space,widows,word-spacing".split(",");t.default=function(e){var t=e&&e.ownerDocument&&e.ownerDocument.defaultView,r=t&&e&&t.getComputedStyle(e),o={};return n.forEach((function(e){return o[e]=r&&r.getPropertyValue(e)||""})),o}},4869:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o={B:{"font-weight":"bold"},EM:{"font-style":"italic"},I:{"font-style":"italic"},U:{"text-decoration":"underline"},P:{"margin-top":"1em","margin-bottom":"1em"},PRE:{"white-space":"pre"},S:{"text-decoration":"line-through"},STRIKE:{"text-decoration":"line-through"},SUB:{"vertical-align":"sub","font-size":"smaller"},SUP:{"vertical-align":"super","font-size":"smaller"}};t.default=function(e,t){var n=(0,r.default)(e);return o[n]||(t||{})[n]}},5097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isCssVariable=t.processCssVariable=void 0;var n=/^\s*var\(\s*[a-zA-Z0-9-_]+\s*(,\s*(.*))?\)\s*$/;t.processCssVariable=function(e){var t=n.exec(e);return(null==t?void 0:t[2])||""},t.isCssVariable=function(e){return 0==e.indexOf("var(")}},6344:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeRect=t.splitTextNode=t.getLastLeafNode=t.getFirstLeafNode=t.getPreviousLeafSibling=t.getNextLeafSibling=t.wrap=t.unwrap=t.splitBalancedNodeRange=t.splitParentNode=t.queryElements=t.matchLink=t.isVoidHtmlElement=t.isNodeEmpty=t.isBlockElement=t.getTagOfNode=t.PendableFormatCommandMap=t.getPendableFormatState=t.getComputedStyle=t.getComputedStyles=t.fromHtml=t.findClosestElementAncestor=t.contains=t.collapseNodes=t.changeElementTag=t.applyFormat=t.getBrowserInfo=t.Browser=t.getPasteType=t.sanitizePasteContent=t.retrieveMetadataFromClipboard=t.handleTextPaste=t.handleImagePaste=t.extractClipboardItemsForIE=t.extractClipboardItems=t.extractClipboardEvent=t.applyTextStyle=t.PartialInlineElement=t.NodeInlineElement=t.LinkInlineElement=t.ImageInlineElement=t.getInlineElementAtNode=t.getDelimiterFromElement=t.addDelimiterBefore=t.addDelimiterAfter=t.addDelimiters=t.PositionContentSearcher=t.ContentTraverser=t.getFirstLastBlockElement=t.getBlockElementAtNode=void 0,t.chainSanitizerCallback=t.createDefaultHtmlSanitizerOptions=t.getInheritableStyles=t.HtmlSanitizer=t.canUndoAutoComplete=t.createSnapshots=t.moveCurrentSnapsnot=t.moveCurrentSnapshot=t.clearProceedingSnapshotsV2=t.clearProceedingSnapshots=t.canMoveCurrentSnapshot=t.addSnapshotV2=t.addSnapshot=t.addRangeToSelection=t.extractContentMetadata=t.setHtmlWithMetadata=t.setHtmlWithSelectionPath=t.getHtmlWithSelectionPath=t.getSelectionPath=t.isPositionAtBeginningOf=t.getPositionRect=t.createRange=t.Position=t.mergeBlocksInRegion=t.getSelectionRangeInRegion=t.isNodeInRegion=t.collapseNodesInRegion=t.getSelectedBlockElementsInRegion=t.getRegionsFromRange=t.getTableCellMetadata=t.saveTableCellMetadata=t.getTableFormatInfo=t.setListItemStyle=t.VListChain=t.createVListFromRegion=t.VListItem=t.VList=t.isWholeTableSelected=t.VTable=t.parseColor=t.isNodeAfter=t.getIntersectedRect=t.moveChildNodes=t.KnownCreateElementData=t.createElement=t.matchesSelector=t.setColor=t.getInnerHTML=t.readFile=t.safeInstanceOf=void 0,t.getPasteSource=t.toArray=t.getObjectKeys=t.arrayPush=t.removeMetadata=t.setMetadata=t.getMetadata=t.createObjectDefinition=t.createArrayDefinition=t.createStringDefinition=t.createBooleanDefinition=t.createNumberDefinition=t.validate=t.getTextContent=t.deleteSelectedContent=t.adjustInsertPosition=t.removeGlobalCssStyle=t.setGlobalCssStyles=t.removeImportantStyleRule=t.setStyles=t.getStyles=t.isCtrlOrMetaPressed=t.isCharacterValue=t.isModifierKey=t.clearEventDataCache=t.cacheGetEventData=t.restoreContentWithEntityPlaceholder=t.moveContentWithEntityPlaceholders=t.createEntityPlaceholder=t.getEntitySelector=t.getEntityFromElement=t.commitEntity=void 0;var r=n(7070);Object.defineProperty(t,"getBlockElementAtNode",{enumerable:!0,get:function(){return r.default}});var o=n(1306);Object.defineProperty(t,"getFirstLastBlockElement",{enumerable:!0,get:function(){return o.default}});var i=n(6754);Object.defineProperty(t,"ContentTraverser",{enumerable:!0,get:function(){return i.default}});var a=n(6091);Object.defineProperty(t,"PositionContentSearcher",{enumerable:!0,get:function(){return a.default}});var l=n(8937);Object.defineProperty(t,"addDelimiters",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"addDelimiterAfter",{enumerable:!0,get:function(){return l.addDelimiterAfter}}),Object.defineProperty(t,"addDelimiterBefore",{enumerable:!0,get:function(){return l.addDelimiterBefore}});var s=n(3765);Object.defineProperty(t,"getDelimiterFromElement",{enumerable:!0,get:function(){return s.default}});var u=n(8153);Object.defineProperty(t,"getInlineElementAtNode",{enumerable:!0,get:function(){return u.default}});var d=n(271);Object.defineProperty(t,"ImageInlineElement",{enumerable:!0,get:function(){return d.default}});var c=n(5672);Object.defineProperty(t,"LinkInlineElement",{enumerable:!0,get:function(){return c.default}});var f=n(8797);Object.defineProperty(t,"NodeInlineElement",{enumerable:!0,get:function(){return f.default}});var p=n(5269);Object.defineProperty(t,"PartialInlineElement",{enumerable:!0,get:function(){return p.default}});var v=n(140);Object.defineProperty(t,"applyTextStyle",{enumerable:!0,get:function(){return v.default}});var h=n(1545);Object.defineProperty(t,"extractClipboardEvent",{enumerable:!0,get:function(){return h.default}});var g=n(3877);Object.defineProperty(t,"extractClipboardItems",{enumerable:!0,get:function(){return g.default}});var m=n(6960);Object.defineProperty(t,"extractClipboardItemsForIE",{enumerable:!0,get:function(){return m.default}});var y=n(8736);Object.defineProperty(t,"handleImagePaste",{enumerable:!0,get:function(){return y.default}});var b=n(2543);Object.defineProperty(t,"handleTextPaste",{enumerable:!0,get:function(){return b.default}});var E=n(5673);Object.defineProperty(t,"retrieveMetadataFromClipboard",{enumerable:!0,get:function(){return E.default}});var C=n(5216);Object.defineProperty(t,"sanitizePasteContent",{enumerable:!0,get:function(){return C.default}});var S=n(351);Object.defineProperty(t,"getPasteType",{enumerable:!0,get:function(){return S.default}});var T=n(246);Object.defineProperty(t,"Browser",{enumerable:!0,get:function(){return T.Browser}}),Object.defineProperty(t,"getBrowserInfo",{enumerable:!0,get:function(){return T.getBrowserInfo}});var P=n(5400);Object.defineProperty(t,"applyFormat",{enumerable:!0,get:function(){return P.default}});var _=n(4984);Object.defineProperty(t,"changeElementTag",{enumerable:!0,get:function(){return _.default}});var w=n(8053);Object.defineProperty(t,"collapseNodes",{enumerable:!0,get:function(){return w.default}});var O=n(8655);Object.defineProperty(t,"contains",{enumerable:!0,get:function(){return O.default}});var D=n(3598);Object.defineProperty(t,"findClosestElementAncestor",{enumerable:!0,get:function(){return D.default}});var M=n(5023);Object.defineProperty(t,"fromHtml",{enumerable:!0,get:function(){return M.default}});var A=n(7695);Object.defineProperty(t,"getComputedStyles",{enumerable:!0,get:function(){return A.default}}),Object.defineProperty(t,"getComputedStyle",{enumerable:!0,get:function(){return A.getComputedStyle}});var R=n(3764);Object.defineProperty(t,"getPendableFormatState",{enumerable:!0,get:function(){return R.default}}),Object.defineProperty(t,"PendableFormatCommandMap",{enumerable:!0,get:function(){return R.PendableFormatCommandMap}});var I=n(3408);Object.defineProperty(t,"getTagOfNode",{enumerable:!0,get:function(){return I.default}});var L=n(5499);Object.defineProperty(t,"isBlockElement",{enumerable:!0,get:function(){return L.default}});var N=n(1657);Object.defineProperty(t,"isNodeEmpty",{enumerable:!0,get:function(){return N.default}});var x=n(8235);Object.defineProperty(t,"isVoidHtmlElement",{enumerable:!0,get:function(){return x.default}});var k=n(844);Object.defineProperty(t,"matchLink",{enumerable:!0,get:function(){return k.default}});var j=n(8471);Object.defineProperty(t,"queryElements",{enumerable:!0,get:function(){return j.default}});var B=n(9381);Object.defineProperty(t,"splitParentNode",{enumerable:!0,get:function(){return B.default}}),Object.defineProperty(t,"splitBalancedNodeRange",{enumerable:!0,get:function(){return B.splitBalancedNodeRange}});var F=n(82);Object.defineProperty(t,"unwrap",{enumerable:!0,get:function(){return F.default}});var H=n(4251);Object.defineProperty(t,"wrap",{enumerable:!0,get:function(){return H.default}});var z=n(2513);Object.defineProperty(t,"getNextLeafSibling",{enumerable:!0,get:function(){return z.getNextLeafSibling}}),Object.defineProperty(t,"getPreviousLeafSibling",{enumerable:!0,get:function(){return z.getPreviousLeafSibling}});var U=n(4061);Object.defineProperty(t,"getFirstLeafNode",{enumerable:!0,get:function(){return U.getFirstLeafNode}}),Object.defineProperty(t,"getLastLeafNode",{enumerable:!0,get:function(){return U.getLastLeafNode}});var K=n(7409);Object.defineProperty(t,"splitTextNode",{enumerable:!0,get:function(){return K.default}});var W=n(5203);Object.defineProperty(t,"normalizeRect",{enumerable:!0,get:function(){return W.default}});var V=n(5924);Object.defineProperty(t,"safeInstanceOf",{enumerable:!0,get:function(){return V.default}});var q=n(3126);Object.defineProperty(t,"readFile",{enumerable:!0,get:function(){return q.default}});var G=n(4746);Object.defineProperty(t,"getInnerHTML",{enumerable:!0,get:function(){return G.default}});var Z=n(7727);Object.defineProperty(t,"setColor",{enumerable:!0,get:function(){return Z.default}});var Y=n(5010);Object.defineProperty(t,"matchesSelector",{enumerable:!0,get:function(){return Y.default}});var X=n(6935);Object.defineProperty(t,"createElement",{enumerable:!0,get:function(){return X.default}}),Object.defineProperty(t,"KnownCreateElementData",{enumerable:!0,get:function(){return X.KnownCreateElementData}});var $=n(1473);Object.defineProperty(t,"moveChildNodes",{enumerable:!0,get:function(){return $.default}});var Q=n(3798);Object.defineProperty(t,"getIntersectedRect",{enumerable:!0,get:function(){return Q.default}});var J=n(6997);Object.defineProperty(t,"isNodeAfter",{enumerable:!0,get:function(){return J.default}});var ee=n(8121);Object.defineProperty(t,"parseColor",{enumerable:!0,get:function(){return ee.default}});var te=n(8094);Object.defineProperty(t,"VTable",{enumerable:!0,get:function(){return te.default}});var ne=n(8570);Object.defineProperty(t,"isWholeTableSelected",{enumerable:!0,get:function(){return ne.default}});var re=n(64);Object.defineProperty(t,"VList",{enumerable:!0,get:function(){return re.default}});var oe=n(711);Object.defineProperty(t,"VListItem",{enumerable:!0,get:function(){return oe.default}});var ie=n(7909);Object.defineProperty(t,"createVListFromRegion",{enumerable:!0,get:function(){return ie.default}});var ae=n(4327);Object.defineProperty(t,"VListChain",{enumerable:!0,get:function(){return ae.default}});var le=n(3339);Object.defineProperty(t,"setListItemStyle",{enumerable:!0,get:function(){return le.default}});var se=n(4711);Object.defineProperty(t,"getTableFormatInfo",{enumerable:!0,get:function(){return se.getTableFormatInfo}});var ue=n(3606);Object.defineProperty(t,"saveTableCellMetadata",{enumerable:!0,get:function(){return ue.saveTableCellMetadata}});var de=n(3606);Object.defineProperty(t,"getTableCellMetadata",{enumerable:!0,get:function(){return de.getTableCellMetadata}});var ce=n(8394);Object.defineProperty(t,"getRegionsFromRange",{enumerable:!0,get:function(){return ce.default}});var fe=n(531);Object.defineProperty(t,"getSelectedBlockElementsInRegion",{enumerable:!0,get:function(){return fe.default}});var pe=n(6688);Object.defineProperty(t,"collapseNodesInRegion",{enumerable:!0,get:function(){return pe.default}});var ve=n(4794);Object.defineProperty(t,"isNodeInRegion",{enumerable:!0,get:function(){return ve.default}});var he=n(4539);Object.defineProperty(t,"getSelectionRangeInRegion",{enumerable:!0,get:function(){return he.default}});var ge=n(2799);Object.defineProperty(t,"mergeBlocksInRegion",{enumerable:!0,get:function(){return ge.default}});var me=n(4630);Object.defineProperty(t,"Position",{enumerable:!0,get:function(){return me.default}});var ye=n(8831);Object.defineProperty(t,"createRange",{enumerable:!0,get:function(){return ye.default}});var be=n(5473);Object.defineProperty(t,"getPositionRect",{enumerable:!0,get:function(){return be.default}});var Ee=n(1431);Object.defineProperty(t,"isPositionAtBeginningOf",{enumerable:!0,get:function(){return Ee.default}});var Ce=n(8805);Object.defineProperty(t,"getSelectionPath",{enumerable:!0,get:function(){return Ce.default}});var Se=n(9372);Object.defineProperty(t,"getHtmlWithSelectionPath",{enumerable:!0,get:function(){return Se.default}});var Te=n(4477);Object.defineProperty(t,"setHtmlWithSelectionPath",{enumerable:!0,get:function(){return Te.default}}),Object.defineProperty(t,"setHtmlWithMetadata",{enumerable:!0,get:function(){return Te.setHtmlWithMetadata}}),Object.defineProperty(t,"extractContentMetadata",{enumerable:!0,get:function(){return Te.extractContentMetadata}});var Pe=n(5537);Object.defineProperty(t,"addRangeToSelection",{enumerable:!0,get:function(){return Pe.default}});var _e=n(3680);Object.defineProperty(t,"addSnapshot",{enumerable:!0,get:function(){return _e.default}}),Object.defineProperty(t,"addSnapshotV2",{enumerable:!0,get:function(){return _e.addSnapshotV2}});var we=n(3205);Object.defineProperty(t,"canMoveCurrentSnapshot",{enumerable:!0,get:function(){return we.default}});var Oe=n(5892);Object.defineProperty(t,"clearProceedingSnapshots",{enumerable:!0,get:function(){return Oe.default}}),Object.defineProperty(t,"clearProceedingSnapshotsV2",{enumerable:!0,get:function(){return Oe.clearProceedingSnapshotsV2}});var De=n(5105);Object.defineProperty(t,"moveCurrentSnapshot",{enumerable:!0,get:function(){return De.default}}),Object.defineProperty(t,"moveCurrentSnapsnot",{enumerable:!0,get:function(){return De.moveCurrentSnapsnot}});var Me=n(7424);Object.defineProperty(t,"createSnapshots",{enumerable:!0,get:function(){return Me.default}});var Ae=n(6687);Object.defineProperty(t,"canUndoAutoComplete",{enumerable:!0,get:function(){return Ae.default}});var Re=n(8488);Object.defineProperty(t,"HtmlSanitizer",{enumerable:!0,get:function(){return Re.default}});var Ie=n(623);Object.defineProperty(t,"getInheritableStyles",{enumerable:!0,get:function(){return Ie.default}});var Le=n(4834);Object.defineProperty(t,"createDefaultHtmlSanitizerOptions",{enumerable:!0,get:function(){return Le.default}});var Ne=n(585);Object.defineProperty(t,"chainSanitizerCallback",{enumerable:!0,get:function(){return Ne.default}});var xe=n(8839);Object.defineProperty(t,"commitEntity",{enumerable:!0,get:function(){return xe.default}});var ke=n(3726);Object.defineProperty(t,"getEntityFromElement",{enumerable:!0,get:function(){return ke.default}});var je=n(4965);Object.defineProperty(t,"getEntitySelector",{enumerable:!0,get:function(){return je.default}});var Be=n(3032);Object.defineProperty(t,"createEntityPlaceholder",{enumerable:!0,get:function(){return Be.createEntityPlaceholder}}),Object.defineProperty(t,"moveContentWithEntityPlaceholders",{enumerable:!0,get:function(){return Be.moveContentWithEntityPlaceholders}}),Object.defineProperty(t,"restoreContentWithEntityPlaceholder",{enumerable:!0,get:function(){return Be.restoreContentWithEntityPlaceholder}});var Fe=n(996);Object.defineProperty(t,"cacheGetEventData",{enumerable:!0,get:function(){return Fe.default}});var He=n(2924);Object.defineProperty(t,"clearEventDataCache",{enumerable:!0,get:function(){return He.default}});var ze=n(1045);Object.defineProperty(t,"isModifierKey",{enumerable:!0,get:function(){return ze.default}});var Ue=n(7254);Object.defineProperty(t,"isCharacterValue",{enumerable:!0,get:function(){return Ue.default}});var Ke=n(5188);Object.defineProperty(t,"isCtrlOrMetaPressed",{enumerable:!0,get:function(){return Ke.default}});var We=n(359);Object.defineProperty(t,"getStyles",{enumerable:!0,get:function(){return We.default}});var Ve=n(6092);Object.defineProperty(t,"setStyles",{enumerable:!0,get:function(){return Ve.default}});var qe=n(9130);Object.defineProperty(t,"removeImportantStyleRule",{enumerable:!0,get:function(){return qe.default}});var Ge=n(8182);Object.defineProperty(t,"setGlobalCssStyles",{enumerable:!0,get:function(){return Ge.default}});var Ze=n(4136);Object.defineProperty(t,"removeGlobalCssStyle",{enumerable:!0,get:function(){return Ze.default}});var Ye=n(2738);Object.defineProperty(t,"adjustInsertPosition",{enumerable:!0,get:function(){return Ye.default}});var Xe=n(3030);Object.defineProperty(t,"deleteSelectedContent",{enumerable:!0,get:function(){return Xe.default}});var $e=n(8606);Object.defineProperty(t,"getTextContent",{enumerable:!0,get:function(){return $e.default}});var Qe=n(2373);Object.defineProperty(t,"validate",{enumerable:!0,get:function(){return Qe.default}});var Je=n(681);Object.defineProperty(t,"createNumberDefinition",{enumerable:!0,get:function(){return Je.createNumberDefinition}}),Object.defineProperty(t,"createBooleanDefinition",{enumerable:!0,get:function(){return Je.createBooleanDefinition}}),Object.defineProperty(t,"createStringDefinition",{enumerable:!0,get:function(){return Je.createStringDefinition}}),Object.defineProperty(t,"createArrayDefinition",{enumerable:!0,get:function(){return Je.createArrayDefinition}}),Object.defineProperty(t,"createObjectDefinition",{enumerable:!0,get:function(){return Je.createObjectDefinition}});var et=n(7570);Object.defineProperty(t,"getMetadata",{enumerable:!0,get:function(){return et.getMetadata}}),Object.defineProperty(t,"setMetadata",{enumerable:!0,get:function(){return et.setMetadata}}),Object.defineProperty(t,"removeMetadata",{enumerable:!0,get:function(){return et.removeMetadata}});var tt=n(8605);Object.defineProperty(t,"arrayPush",{enumerable:!0,get:function(){return tt.default}});var nt=n(4709);Object.defineProperty(t,"getObjectKeys",{enumerable:!0,get:function(){return nt.default}});var rt=n(8375);Object.defineProperty(t,"toArray",{enumerable:!0,get:function(){return rt.default}});var ot=n(6433);Object.defineProperty(t,"getPasteSource",{enumerable:!0,get:function(){return ot.default}})},8251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){this.position=e,this.parentBlock=t}return e.prototype.getTextContent=function(){return""},e.prototype.getContainerNode=function(){return this.position.node},e.prototype.getParentBlock=function(){return this.parentBlock},e.prototype.getStartPosition=function(){return this.position},e.prototype.getEndPosition=function(){return this.position},e.prototype.isAfter=function(e){return e&&this.position.isAfter(e.getEndPosition())},e.prototype.isTextualInlineElement=function(){return!1},e.prototype.contains=function(e){return!1},e.prototype.applyStyle=function(e){},e}();t.default=n},271:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n){return e.call(this,t,n)||this}return(0,r.__extends)(t,e),t}(n(8797).default);t.default=o},5672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n){return e.call(this,t,n)||this}return(0,r.__extends)(t,e),t}(n(8797).default);t.default=o},8797:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(140),o=n(6997),i=n(4630),a=function(){function e(e,t){this.containerNode=e,this.parentBlock=t}return e.prototype.getTextContent=function(){return(3==this.containerNode.nodeType?this.containerNode.nodeValue:this.containerNode.textContent)||""},e.prototype.getContainerNode=function(){return this.containerNode},e.prototype.getParentBlock=function(){return this.parentBlock},e.prototype.getStartPosition=function(){return new i.default(this.containerNode,0).normalize()},e.prototype.getEndPosition=function(){return new i.default(this.containerNode,-1).normalize()},e.prototype.isTextualInlineElement=function(){return this.containerNode&&3==this.containerNode.nodeType},e.prototype.isAfter=function(e){return e&&(0,o.default)(this.containerNode,e.getContainerNode())},e.prototype.contains=function(e){var t=this.getStartPosition(),n=this.getEndPosition();return e&&e.isAfter(t)&&n.isAfter(e)},e.prototype.applyStyle=function(e){(0,r.default)(this.containerNode,e)},e}();t.default=a},5269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(140),o=n(8831),i=n(4630),a=n(2513),l=function(){function e(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),this.inlineElement=e,this.start=t,this.end=n}return e.prototype.getDecoratedInline=function(){return this.inlineElement},e.prototype.getContainerNode=function(){return this.inlineElement.getContainerNode()},e.prototype.getParentBlock=function(){return this.inlineElement.getParentBlock()},e.prototype.getTextContent=function(){return(0,o.default)(this.getStartPosition(),this.getEndPosition()).toString()},e.prototype.getStartPosition=function(){return this.start||this.inlineElement.getStartPosition()},e.prototype.getEndPosition=function(){return this.end||this.inlineElement.getEndPosition()},Object.defineProperty(e.prototype,"nextInlineElement",{get:function(){return this.end?new e(this.inlineElement,this.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"previousInlineElement",{get:function(){return this.start?new e(this.inlineElement,void 0,this.start):null},enumerable:!1,configurable:!0}),e.prototype.contains=function(e){return e&&e.isAfter(this.getStartPosition())&&this.getEndPosition().isAfter(e)},e.prototype.isTextualInlineElement=function(){return this.inlineElement&&this.inlineElement.isTextualInlineElement()},e.prototype.isAfter=function(e){var t=this.getStartPosition(),n=e&&e.getEndPosition();return n&&(t.isAfter(n)||t.equalTo(n))},e.prototype.applyStyle=function(e){var t=this.getStartPosition().normalize(),n=this.getEndPosition().normalize(),o=this.getContainerNode();if(t.isAtEnd){var l=(0,a.getNextLeafSibling)(o,t.node);t=l?new i.default(l,0):null}if(0==n.offset){var s=(0,a.getPreviousLeafSibling)(o,n.node);n=s?new i.default(s,-1):null}(0,r.default)(o,e,t||void 0,n||void 0)},e}();t.default=l},140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(4630),i=n(7409),a=n(4251),l=n(2513),s=n(9381),u=n(5924),d="SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL,SUP,SUB".split(",");function c(e,t){e&&1==e.nodeType&&t(e,!0)}t.default=function(e,t,n,f){void 0===n&&(n=new o.default(e,0).normalize()),void 0===f&&(f=new o.default(e,-1).normalize());for(var p=[],v=n,h=f;v&&h&&h.isAfter(v);){var g=v.node,m=(0,r.default)(g.parentNode),y=(0,l.getNextLeafSibling)(e,g);3==g.nodeType&&["TR","TABLE"].indexOf(m)<0&&(g!=h.node||h.isAtEnd||(g=(0,i.default)(g,h.offset,!0)),v.offset>0&&(g=(0,i.default)(g,v.offset,!1)),p.push(g)),v=y&&new o.default(y,0)}if(p.length>0){if(p.every((function(e){return e.parentNode==p[0].parentNode}))){var b=p.shift();p.forEach((function(e){var t,n=(b.nodeValue||"")+(e.nodeValue||"");b.nodeValue=n,null===(t=e.parentNode)||void 0===t||t.removeChild(e)})),p=[b]}p.forEach((function(e){for(var n=e;n&&"SPAN"!=(0,r.default)(n)&&d.indexOf((0,r.default)(n.parentNode))>=0;)c(n,t),n=(0,s.splitBalancedNodeRange)(n);n&&"SPAN"!=(0,r.default)(n)&&(c(n,t),n=(0,a.default)(n,"SPAN")),(0,u.default)(n,"HTMLElement")&&t(n)}))}}},7229:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLastInlineElement=t.getFirstInlineElement=void 0;var r=n(8153),o=n(4061);t.getFirstInlineElement=function(e){var t=(0,o.getFirstLeafNode)(e);return t?(0,r.default)(e,t):null},t.getLastInlineElement=function(e){var t=(0,o.getLastLeafNode)(e);return t?(0,r.default)(e,t):null}},8153:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070),o=n(3408),i=n(271),a=n(5672),l=n(8797),s=n(5924);t.default=function(e,t){var n=(0,s.default)(e,"Node")?(0,r.default)(e,t):e;return t&&n&&function(e,t){for(var n,r=[e],s=e.parentNode;s&&t.contains(s);s=s.parentNode)r.push(s);for(var u=r.length-1;u>=0&&!n;u--){var d=r[u],c=(0,o.default)(d);"A"==c?n=new a.default(d,t):"IMG"==c&&(n=new i.default(d,t))}return n||new l.default(e,t)}(t,n)}},2571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getInlineElementBeforeAfter=t.getInlineElementAfter=t.getInlineElementBefore=void 0;var r=n(8153),o=n(5269),i=n(1630),a=n(2513);function l(e,t,n){if(!e||!t||!t.node)return null;var l=(t=t.normalize()).offset,s=t.isAtEnd,u=t.node,d=!1;!n&&0==l&&!s||n&&s?u=(0,a.getLeafSibling)(e,u,n):3==u.nodeType&&(!n&&!s||n&&l>0)&&(d=!0),u&&(0,i.default)(u)&&(u=(0,a.getLeafSibling)(e,u,n));var c=(0,r.default)(e,u);return c&&(d||c.contains(t))&&(c=n?new o.default(c,t,void 0):new o.default(c,void 0,t)),c}t.getInlineElementBefore=function(e,t){return l(e,t,!1)},t.getInlineElementAfter=function(e,t){return l(e,t,!0)},t.getInlineElementBeforeAfter=l},8605:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){Array.prototype.push.apply(e,t)}},4709:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Object.keys(e)}},8375:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return[].slice.call(e)}},64:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(2042),a=n(3408),l=n(5499),s=n(1657),u=n(4630),d=n(8471),c=n(5924),f=n(9381),p=n(8375),v=n(82),h=n(711),g=n(4251),m=n(7570),y=function(){function e(e){if(this.rootList=e,this.items=[],!e)throw new Error("rootList must not be null");b(this.rootList),(0,d.default)(this.rootList,"ol,ul",b),(0,d.default)(this.rootList,"li",E),this.populateItems(this.rootList)}return e.prototype.contains=function(e){return this.items.some((function(t){return t.contains(e)}))},e.prototype.getLastItemNumber=function(){var e=this.getStart();return void 0===e?e:e-1+this.items.filter((function(e){return 1==e.getListType()&&1==e.getLevel()&&!e.isDummy()})).length},e.prototype.writeBack=function(e,t){var n=this;if(!this.rootList)throw new Error("rootList must not be null");var r,o=this.rootList.ownerDocument,i=[o.createDocumentFragment()],a=o.createTextNode(""),l=this.getStart()||1;this.rootList.parentNode.replaceChild(a,this.rootList),this.items.forEach((function(o){var a=o.getNewListStart();a&&a!=l&&(i.splice(1,i.length-1),l=a),o.writeBack(i,n.rootList,e);var s=i[1];o.applyListStyle(n.rootList,l),(0,c.default)(s,"HTMLOListElement")&&(r!=s&&(1==l?s.removeAttribute("start"):s.start=l),1!=o.getLevel()||o.isDummy()||t||l++),r=s})),a.parentNode.replaceChild(i[0],a)},e.prototype.split=function(e,t){if(!this.rootList)throw new Error("rootList must not be null");for(var n=0;n=0?Math.min(this.items.length-1,a):a;var l=i<=a?this.items.slice(i,a+1):[];return n&&l.forEach(n),l},e.prototype.populateItems=function(e,t){var n=this;void 0===t&&(t=[]);var o=(0,i.default)(e);(0,p.default)(e.childNodes).forEach((function(e){var a=(0,r.__spreadArray)((0,r.__spreadArray)([],(0,r.__read)(t),!1),[o],!1);(0,i.isListElement)(e)?n.populateItems(e,a):3==e.nodeType&&""==(e.nodeValue||"").trim()||n.items.push(new(h.default.bind.apply(h.default,(0,r.__spreadArray)([void 0,e],(0,r.__read)(a),!1))))}))},e}();function b(e){var t=null;(0,p.default)(e.childNodes).forEach((function(e){"LI"==(0,a.default)(e)?t=e:(0,i.isListElement)(e)?t=null:t&&!(0,s.default)(e,!0)&&t.appendChild((0,l.default)(e)?e:(0,g.default)(e))}))}function E(e){for(;!(0,i.isListElement)(e.parentNode);){(0,f.default)(e,!0);var t=(0,p.default)(e.parentNode.childNodes).slice(1);t.length>0&&((0,l.default)(t[0])||(t=[(0,g.default)(t)]),t.forEach((function(t){return e.appendChild(t)}))),(0,v.default)(e.parentNode)}}function C(){for(var e=[],t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8605),o=n(6133),i=n(6997),a=n(4794),l=n(8471),s=n(64),u="listchain",d="listchainafter",c=0,f=function(){function e(e,t){this.region=e,this.name=t,this.lastNumber=0,this.lastNumberBeforeCursor=0}return e.createListChains=function(t,n,a){var s=Array.isArray(t)?t:t?[t]:[],u=[];return s.forEach((function(t){var s,d=[];(0,l.default)(t.rootNode,"ol",(function(r){var l=(0,o.default)(t,"ol",r);if(s!=l){var u=d.filter((function(e){return e.canAppendToTail(l)}))[0]||new e(t,(a||p)()),c=d.indexOf(u),f=!!n&&(0,i.default)(l,n);f?c<0&&d.push(u):(c>=0&&d.splice(c,1),d.unshift(u)),u.append(l,f),s=l}})),(0,r.default)(u,d)})),u},e.prototype.canAppendAtCursor=function(e){return e>1&&this.lastNumberBeforeCursor+1==e},e.prototype.createVListAtBlock=function(e,t){if(e&&e.parentNode){var n=e.ownerDocument.createElement("ol");n.start=t,this.applyChainName(n),e.parentNode.insertBefore(n,e);var r=new s.default(n);return r.appendItem(e,0),r}return null},e.prototype.commit=function(e,t){for(var n=this.getLists(),r=0,o=0;o1?i.start=i.start===r?r+1:i.start:i.start=r+1);var a=new s.default(i);r=a.getLastItemNumber()||0,delete i.dataset[u],delete i.dataset[d],a.writeBack(e)}},e.prototype.canAppendToTail=function(e){return this.lastNumber+1==e.start},e.prototype.append=function(e,t){this.applyChainName(e),this.lastNumber=new s.default(e).getLastItemNumber()||0,t?e.dataset[d]="true":this.lastNumberBeforeCursor=this.lastNumber},e.prototype.applyChainName=function(e){e.dataset[u]=this.name},e.prototype.getLists=function(){var e=this;return(0,l.default)(this.region.rootNode,"ol[data-"+u+"="+this.name+"]").filter((function(t){return(0,a.default)(e.region,t)}))},e}();function p(){return"__List_Chain_"+c++}t.default=f},711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListStyleDefinitionMetadata=void 0;var r=n(7582),o=n(8655),i=n(2042),a=n(359),l=n(3408),s=n(5499),u=n(1473),d=n(5924),c=n(3848),f=n(3339),p=n(8275),v=n(6092),h=n(8375),g=n(82),m=n(4251),y=n(681),b=n(7570),E=[null,"lower-alpha","lower-roman"],C=["disc","circle","square"],S="-.25in",T=["font-size","font-family","color"],P=["data-ogsc","data-ogsb","data-ogac","data-ogab"];t.ListStyleDefinitionMetadata=(0,y.createObjectDefinition)({orderedStyleType:(0,y.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,y.createNumberDefinition)(!0,void 0,1,9)},!0,!0);var _=function(){function e(e){for(var t=[],n=1;nt&&this.listTypes.pop()},e.prototype.addNegativeMargins=function(){this.node.style.margin="0in 0in 0in 0.5in",this.node.style.marginLeft=S},e.prototype.changeListType=function(e){0==e?this.listTypes=[e]:(this.outdent(),this.listTypes.push(e))},e.prototype.setIsDummy=function(e){this.dummy=e},e.prototype.setNewListStart=function(e){this.newListStart=e},e.prototype.applyListStyle=function(e,n){var r=(0,b.getMetadata)(e,t.ListStyleDefinitionMetadata),o=this.listTypes.length<3;r&&(o&&2===this.listTypes[1]&&r.unorderedStyleType?(0,c.default)(this.node,r.unorderedStyleType):o&&1===this.listTypes[1]&&r.orderedStyleType?(0,p.default)(this.node,r.orderedStyleType,n):this.node.style.removeProperty("list-style-type"))},e.prototype.writeBack=function(e,t,n){var o,s=this;void 0===n&&(n=!1);var u,c,p=1;if(n){e.length>this.listTypes.length&&e.splice(this.listTypes.length);var y=e.length-1;y===this.listTypes.length-1&&(0,i.default)(e[y])!==this.listTypes[y]&&e.splice(y),p=e.length}else for(;p1&&((0,f.default)(this.node,T,!0),(0,f.default)(this.node,P,!1)),this.listTypes.length<=1){var S="LI"==(0,l.default)(this.node),_=S?{"font-family":this.node.style.fontFamily,"font-size":this.node.style.fontSize,color:this.node.style.color}:void 0,D=S?(u=this.node,c=(0,h.default)(u.childNodes),(0,g.default)(u),c):[this.node];if(_)for(var M=function(e){(0,d.default)(D[e],"Text")&&(D[e]=(0,m.default)(D[e],"span"));var t=D[e];if((0,d.default)(t,"HTMLElement")){var n=(0,r.__assign)((0,r.__assign)({},_),(0,a.default)(t));(0,v.default)(t,n),P.forEach((function(e){var n=s.node.getAttribute(e);n&&t.setAttribute(e,n)}))}},A=0;A1&&l.style.setProperty("list-style-type",E[(r-1)%E.length]),2==n&&r>1&&l.style.setProperty("list-style-type",C[(r-1)%C.length]),l}function O(e,t,n){return!(e.length>0)||t&&(0,s.default)(e[0])||n&&(0,s.default)(e[e.length])||(e=[(0,m.default)(e)]),e}t.default=_},6692:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={0:"A",1:"B",2:"C",3:"D",4:"E",5:"F",6:"G",7:"H",8:"I",9:"J",10:"K",11:"L",12:"M",13:"N",14:"O",15:"P",16:"Q",17:"R",18:"S",19:"T",20:"U",21:"V",22:"W",23:"X",24:"Y",25:"Z"};t.default=function(e,t){for(var r="";e>=0;)r=n[e%26]+r,e=Math.floor(e/26)-1;return t?r.toLowerCase():r}},4321:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4709),i={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};t.default=function(e,t){var n,a,l="";try{for(var s=(0,r.__values)((0,o.default)(i)),u=s.next();!u.done;u=s.next()){var d=u.value,c=Math.floor(e/i[d]);e-=c*i[d],l+=d.repeat(c)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(a=s.return)&&a.call(s)}finally{if(n)throw n.error}}return t?l.toLocaleLowerCase():l}},7909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6935),o=n(6133),i=n(531),a=n(4794),l=n(4630),s=n(5924),u=n(1630),d=n(8375),c=n(64),f=n(4251),p=n(2513),v=n(2042),h="ol,ul";function g(e,t,n){var r=t[n?t.length-1:0];r=(0,p.getLeafSibling)(e.rootNode,r,n,e.skipTags,!0),r=(0,o.default)(e,h,r),(0,a.default)(e,r)&&(0,v.isListElement)(r)&&(n?(0,s.default)(r,"HTMLOListElement")&&1!=r.start||t.push(r):t.unshift(r))}t.default=function(e,t,n){if(!e)return null;var a=[];if(n){var p=(0,o.default)(e,h,n);p&&a.push(p)}else{if((0,i.default)(e,void 0,!0).forEach((function(n){var r=(0,o.default)(e,h,n.getStartNode());r?(a[a.length-1]!=r&&a.push(r),1==a.length&&(0,s.default)(r,"HTMLOListElement")&&r.start>1&&(t=!1)):a.push(n.collapseToSingleElement())})),0==a.length&&!e.rootNode.firstChild){var m=(0,r.default)(1,e.rootNode.ownerDocument);e.rootNode.appendChild(m),a.push(m),e.fullSelectionStart=new l.default(m,0),e.fullSelectionEnd=new l.default(m,-1)}t&&(g(e,a,!1),g(e,a,!0)),a=a.filter((function(e){return!(0,u.default)(e,!0)}))}var y=null;if(a.length>0){var b=a.shift()||null;(y=(0,v.isListElement)(b)?new c.default(b):b?function(e){var t=(0,d.default)(e.childNodes),n=1==t.length?t[0]:(0,f.default)(t,"SPAN"),r=e.ownerDocument.createElement("ol");e.appendChild(r);var o=new c.default(r);return o.appendItem(n,0),o}(b):null)&&a.forEach((function(e){(0,v.isListElement)(e)?y.mergeVList(new c.default(e)):y.appendItem(e,0)}))}return y}},2042:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isListElement=void 0;var r=n(3408);function o(e){switch((0,r.default)(e)){case"OL":return 1;case"UL":return 2;default:return 0}}t.default=o,t.isListElement=function(e){return 0!=o(e)}},6133:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3598);t.default=function(e,t,n){var o=e&&(0,r.default)(n,e.rootNode,t);if(o)for(var i=void 0;i=(0,r.default)(o.parentNode,e.rootNode,t);)o=i;return o}},3848:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=r[t],o=1===t;e.style.listStyleType=o?n:'"'+n+'"'};var r=((n={})[1]="disc",n[3]="∎ ",n[2]="- ",n[5]="➔ ",n[8]="➔ ",n[4]="➢ ",n[6]="➪ ",n[7]="— ",n)},3339:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(3598),i=n(5924);t.default=function(e,t,n){void 0===n&&(n=!0);var a=function(e,t,n){for(var a,l,s=[],u=r.default.createBodyTraverser(e),d=null,c=function(){var r=(null==(d=u.currentInlineElement)?void 0:d.getContainerNode())||null,c=null;r=r?(0,o.default)(r):null;for(var f=function(){var e=r;t.forEach((function(t){var r=n?e.style.getPropertyValue(t):e.getAttribute(t);c||(c={}),r&&!c[t]&&(c[t]=r)})),r=1===(null===(l=null==r?void 0:r.parentNode)||void 0===l?void 0:l.childNodes.length)?r.parentNode:null};r&&r!==e&&(0,i.default)(r,"HTMLElement")&&(0==s.length||((null===(a=r.textContent)||void 0===a?void 0:a.trim().length)||0)>0);)f();c&&s.push(c),u.getNextInlineElement()};u.currentInlineElement!=d;)c();return s}(e,t,n);t.forEach((function(t){var r=a.map((function(e){return void 0!==e[t]?e[t]:""}));r&&(1==r.length||1==new Set(r).size)&&r[0]&&(n?e.style.setProperty(t,r[0]):e.setAttribute(t,r[0]))}))}},8275:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o,i=n(6692),a=n(4321);!function(e){e[e.Decimal=0]="Decimal",e[e.Roman=1]="Roman",e[e.Alpha=2]="Alpha"}(o||(o={})),t.default=function(e,t,n){var r=l[t],s=r.markerSeparator,u=r.markerSecondSeparator,d=r.markerType,c=r.lowerCase,f=n.toString();d===o.Roman?f=(0,a.default)(n,c):d===o.Alpha&&(f=(0,i.default)(n-1,c));var p=u?u+f+s:f+s;e.style.listStyleType='"'+p+'"'};var l=((r={})[1]={markerType:o.Decimal,markerSeparator:". "},r[2]={markerType:o.Decimal,markerSeparator:"- "},r[3]={markerType:o.Decimal,markerSeparator:") "},r[4]={markerType:o.Decimal,markerSeparator:") ",markerSecondSeparator:"("},r[5]={markerType:o.Alpha,markerSeparator:". ",lowerCase:!0},r[8]={markerType:o.Alpha,markerSeparator:"- ",lowerCase:!0},r[6]={markerType:o.Alpha,markerSeparator:") ",lowerCase:!0},r[7]={markerType:o.Alpha,markerSeparator:") ",markerSecondSeparator:"(",lowerCase:!0},r[9]={markerType:o.Alpha,markerSeparator:". "},r[12]={markerType:o.Alpha,markerSeparator:"- "},r[10]={markerType:o.Alpha,markerSeparator:") "},r[11]={markerType:o.Alpha,markerSeparator:") ",markerSecondSeparator:"("},r[13]={markerType:o.Roman,markerSeparator:". ",lowerCase:!0},r[16]={markerType:o.Roman,markerSeparator:"- ",lowerCase:!0},r[14]={markerType:o.Roman,markerSeparator:") ",lowerCase:!0},r[15]={markerType:o.Roman,markerSeparator:") ",markerSecondSeparator:"(",lowerCase:!0},r[17]={markerType:o.Roman,markerSeparator:". "},r[20]={markerType:o.Roman,markerSeparator:"- "},r[18]={markerType:o.Roman,markerSeparator:") "},r[19]={markerType:o.Roman,markerSeparator:") ",markerSecondSeparator:"("},r)},681:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createObjectDefinition=t.createArrayDefinition=t.createStringDefinition=t.createBooleanDefinition=t.createNumberDefinition=void 0,t.createNumberDefinition=function(e,t,n,r,o){return{type:1,isOptional:e,value:t,maxValue:r,minValue:n,allowNull:o}},t.createBooleanDefinition=function(e,t,n){return{type:0,isOptional:e,value:t,allowNull:n}},t.createStringDefinition=function(e,t,n){return{type:2,isOptional:e,value:t,allowNull:n}},t.createArrayDefinition=function(e,t,n,r,o){return{type:3,isOptional:t,itemDef:e,minLength:n,maxLength:r,allowNull:o}},t.createObjectDefinition=function(e,t,n){return{type:4,isOptional:t,propertyDef:e,allowNull:n}}},7570:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeMetadata=t.setMetadata=t.getMetadata=void 0;var r=n(2373),o="editingInfo";function i(e,t,n){var i,a=e.dataset[o];try{i=a?JSON.parse(a):null}catch(e){}if(void 0!==i){if(!t)return i;if((0,r.default)(i,t))return i}return n||null}t.getMetadata=i,t.setMetadata=function(e,t,n){return!(n&&!(0,r.default)(t,n)||(e.dataset[o]=JSON.stringify(t),0))},t.removeMetadata=function(e,t){if(t){var n=i(e);n&&(delete n[t],e.dataset[o]=JSON.stringify(n))}else delete e.dataset[o]}},2373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4709);t.default=function e(t,n){var o,i,a=!1;if(n.isOptional&&void 0===t||n.allowNull&&null===t)a=!0;else{if(!n.isOptional&&void 0===t||!n.allowNull&&null===t)return!1;switch(n.type){case 2:a="string"==typeof t&&(void 0===n.value||t===n.value);break;case 1:a="number"==typeof t&&(void 0===n.value||(o=n.value,i=t,Math.abs(o-i)<.001))&&(void 0===n.minValue||t>=n.minValue)&&(void 0===n.maxValue||t<=n.maxValue);break;case 0:a="boolean"==typeof t&&(void 0===n.value||t===n.value);break;case 3:a=Array.isArray(t)&&(void 0===n.minLength||t.length>=n.minLength)&&(void 0===n.maxLength||t.length<=n.maxLength)&&t.every((function(t){return e(t,n.itemDef)}));break;case 4:a="object"==typeof t&&(0,r.default)(n.propertyDef).every((function(r){return e(t[r],n.propertyDef[r])}));break;case 5:a=n.validator(t)}}return a}},2881:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EXCEL_DESKTOP_ATTRIBUTE_NAME=t.PROG_ID_NAME=t.GOOGLE_SHEET_NODE_NAME=void 0,t.GOOGLE_SHEET_NODE_NAME="google-sheets-html-origin",t.PROG_ID_NAME="ProgId",t.EXCEL_DESKTOP_ATTRIBUTE_NAME="xmlns:x"},7477:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n='ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer,'+["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle"].map((function(e){return'table div[class^="'+e+'"]'})).join(",");t.default=function(e){return!!e.fragment.querySelector(n)}},6433:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7477),o=n(2586),i=n(4675),a=n(3810),l=n(7050),s=n(8064),u=n(8773),d=new Map([[0,s.default],[1,o.default],[2,i.default],[3,l.default],[5,r.default],[4,a.default],[7,u.default]]);t.default=function(e,t){var n=e.htmlAttributes,r=e.clipboardData,o=e.fragment,i=null,a={htmlAttributes:n,fragment:o,shouldConvertSingleImage:t,clipboardData:r};return d.forEach((function(e,t){!i&&e(a)&&(i=t)})),null!=i?i:6}},2586:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return"urn:schemas-microsoft-com:office:excel"==e.htmlAttributes[r.EXCEL_DESKTOP_ATTRIBUTE_NAME]}},4675:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){var t=e.htmlAttributes;return"Excel.Sheet"==t[r.PROG_ID_NAME]&&null==t[r.EXCEL_DESKTOP_ATTRIBUTE_NAME]}},3810:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return!!e.fragment.querySelector(r.GOOGLE_SHEET_NODE_NAME)}},7050:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return"PowerPoint.Slide"==e.htmlAttributes[r.PROG_ID_NAME]}},8064:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){var t=e.htmlAttributes;return"urn:schemas-microsoft-com:office:word"==t["xmlns:w"]||"Word.Document"==t[r.PROG_ID_NAME]}},8773:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,n=e.shouldConvertSingleImage,r=e.clipboardData;return n&&1==(null===(t=r.htmlFirstLevelChildTags)||void 0===t?void 0:t.length)&&"IMG"==r.htmlFirstLevelChildTags[0]}},6688:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(4794),i=n(5924);t.default=function(e,t){if(!t||0==t.length)return[];var n=(0,i.default)(t[0],"Node")?t:[t[0].getStartNode(),t[t.length-1].getEndNode()],a=(n=n&&n.filter((function(t){return(0,o.default)(e,t)})))[0],l=n[n.length-1];return(0,o.default)(e,a)&&(0,o.default)(e,l)?(0,r.default)(e.rootNode,a,l,!0):[]}},8394:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.getRegionCreator=void 0;var o=n(7582),i=n(8655),a=n(3598),l=n(4630),s=n(8471),u=n(2513),d=((r={})[0]={skipTags:["TABLE"],outerSelector:"table",innerSelector:"td,th"},r);function c(e,t){var n=l.default.getStart(e).normalize(),r=l.default.getEnd(e).normalize();return function(e,o,a){return function(e,t,n,r){if(e){var o=t&&(0,u.getNextLeafSibling)(e,t,r),a=n&&(0,u.getPreviousLeafSibling)(e,n,r),l=!t||(0,i.default)(e,t)&&(0,i.default)(e,o),s=!n||(0,i.default)(e,n)&&(0,i.default)(e,a),d=!(t&&n&&((0,i.default)(t,n,!0)||(0,i.default)(t,a,!0)||(0,i.default)(n,t,!0)||(0,i.default)(n,o,!0)));return l&&s&&d}return!1}(e,o,a,t)?{rootNode:e,nodeBefore:o,nodeAfter:a,skipTags:t,fullSelectionStart:n,fullSelectionEnd:r}:null}}function f(e,t,n,r,i){var a;i=i||t.innerNode==n;var l=!1,s=t.children,u=t.innerNode,d=[];if(0==s.length)(p=e(u))&&d.push(p);else for(var c=0;c<=s.length&&!l;c++){var p,v=s[c]||{},h=v.outerNode,g=v.boundaries,m=null===(a=s[c-1])||void 0===a?void 0:a.outerNode;i&&(p=e(u,m,h))&&d.push(p),null==g||g.forEach((function(t){var a,s;s=(a=(0,o.__read)(f(e,t,n,r,i),3))[0],i=a[1],l=a[2],d=d.concat(s)}))}return[d,i,l||u==r]}t.default=function(e,t,n){var r=[];if(e&&t){var l=d[n],u=l.innerSelector,p=l.skipTags,v=function(e,t,n){var r=[{innerNode:e,children:[]}],o=d[n],l=o.outerSelector,u=o.innerSelector,c=(0,s.default)(e,l,null,2,t);return(0,s.default)(e,u,(function(t){var n=(0,a.default)(t,e,l);if(n&&c.indexOf(n)<0){for(var o={innerNode:t,children:[]},s=r.length-1;s>=0;s--){var u=r[s],d=u.innerNode,f=u.children;if((0,i.default)(d,n)){var p=f.filter((function(e){return e.outerNode==n}))[0];p||(p={outerNode:n,boundaries:[]},f.push(p)),p.boundaries.push(o);break}}r.push(o)}}),1,t),r[0]}(e,t,n),h=(0,a.default)(t.startContainer,e,u)||e,g=(0,a.default)(t.endContainer,e,u)||e,m=c(t,p);r=(0,o.__read)(f(m,v,h,g),1)[0]}return r.filter((function(e){return!!e}))},t.getRegionCreator=c},531:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(6935),i=n(7070),a=n(4539),l=n(1630);t.default=function(e,t,n){var s=(0,a.default)(e),u=[];if(s){for(var d=e.rootNode,c=e.skipTags,f=r.default.createSelectionTraverser(d,s,c),p=null==f?void 0:f.currentBlockElement;p;p=f.getNextBlockElement())u.push(p);u=u.filter((function(e){var t,n=e.getStartNode();return n!=e.getEndNode()||!(0,l.default)(n,!0)||(null===(t=n.parentNode)||void 0===t||t.removeChild(n),!1)}))}if(0==u.length&&e&&!e.rootNode.firstChild&&t){var v=(0,o.default)(1,e.rootNode.ownerDocument);e.rootNode.appendChild(v),(p=(0,i.default)(e.rootNode,v))&&u.push(p)}return u}},4539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8831),o=n(4630),i=n(2513);t.default=function(e){if(!e)return null;var t=e.nodeBefore,n=e.nodeAfter,a=e.rootNode,l=e.skipTags,s=t?(0,i.getNextLeafSibling)(e.rootNode,t,e.skipTags):a.firstChild,u=n?(0,i.getPreviousLeafSibling)(a,n,l):a.lastChild,d=s&&u&&(0,r.default)(s,u);if(!function(e){var t=e;return!!t.fullSelectionEnd&&!!t.fullSelectionStart}(e))return d;if(d){var c=o.default.getStart(d).normalize(),f=o.default.getEnd(d).normalize(),p=e.fullSelectionEnd,v=e.fullSelectionStart;if(!v.isAfter(f)&&!c.isAfter(p)){var h=v.isAfter(c)?v:c,g=p.isAfter(f)?f:p;return(0,r.default)(h,g)}}return null}},4794:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655);t.default=function(e,t){return!(!e||!(0,r.default)(e.rootNode,t)||e.nodeBefore&&4!=e.nodeBefore.compareDocumentPosition(t)||e.nodeAfter&&2!=e.nodeAfter.compareDocumentPosition(t))}},2799:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(8655),a=n(7070),l=n(4869),s=n(359),u=n(4794),d=n(5924),c=n(6092),f=n(8053);t.default=function(e,t,n){var p,v,h,g;if((0,u.default)(e,t)&&(0,u.default)(e,n)&&(g=(0,a.default)(e.rootNode,n))&&!g.contains(t)){for(var m=g.collapseToSingleElement(),y=(0,f.collapse)(e.rootNode,m,t,!1,!0),b=m;(0,i.default)(y,b);){var E=b.parentNode;if((0,d.default)(E,"HTMLElement")){var C=(0,r.__assign)((0,r.__assign)((0,r.__assign)({},(0,l.default)(E)||{}),(0,s.default)(E)),(0,s.default)(m));(0,c.default)(m,C)}b=E}var S=null,T=1==m.childNodes.length&&0==m.attributes.length?m.firstChild:(0,o.default)(m,"SPAN");for(b=T;(0,i.default)(y,b)&&1==(null===(p=b.parentNode)||void 0===p?void 0:p.childNodes.length);b=b.parentNode)S=b.parentNode;null===(v=t.parentNode)||void 0===v||v.insertBefore(T,t.nextSibling),null===(h=null==S?void 0:S.parentNode)||void 0===h||h.removeChild(S)}}},4630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3598),o=n(6997),i=function(){function e(e,t,n){switch(void 0===t&&(t=0),this.isFromEndOfRange=n,e.node?(this.node=e.node,t=e.offset):this.node=e,t){case-2:this.offset=a(this.node),this.node=this.node.parentNode,this.isAtEnd=!1;break;case-3:this.offset=a(this.node)+1,this.isAtEnd=!this.node.nextSibling,this.node=this.node.parentNode;break;case-1:this.offset=l(this.node),this.isAtEnd=!0;break;default:var o=l(this.node);this.offset=Math.max(0,Math.min(t,o)),this.isAtEnd=t>0&&t>=o}this.element=(0,r.default)(this.node)}return e.prototype.normalize=function(){if(3==this.node.nodeType||!this.node.firstChild)return this;for(var t=this.node,n=this.isAtEnd?-1:this.offset;1==t.nodeType||11==t.nodeType;){var r=this.isFromEndOfRange?-1==n?t.lastChild:t.childNodes[n-1]:0==n?t.firstChild:-1==n?t.lastChild:t.childNodes[n];if(!r)break;t=r,n=this.isAtEnd||this.isFromEndOfRange?-1:0}return new e(t,n,this.isFromEndOfRange)},e.prototype.equalTo=function(e){return e&&(this==e||this.node==e.node&&this.offset==e.offset&&this.isAtEnd==e.isAtEnd)},e.prototype.isAfter=function(e){return this.node==e.node?this.isAtEnd&&!e.isAtEnd||this.offset>e.offset:(0,o.default)(this.node,e.node)},e.prototype.move=function(t){return new e(this.node,Math.max(this.offset+t,0))},e.getStart=function(t){return new e(t.startContainer,t.startOffset)},e.getEnd=function(t){return t.collapsed?e.getStart(t):new e(t.endContainer,t.endOffset,!0)},e}();function a(e){for(var t=0;e=(null==e?void 0:e.previousSibling)||null;)t++;return t}function l(e){var t;return 3==e.nodeType?(null===(t=e.nodeValue)||void 0===t?void 0:t.length)||0:1==e.nodeType||11==e.nodeType?e.childNodes.length:1}t.default=i},5537:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(246);t.default=function(e,t){var n,o,i,a=null===(i=null===(o=null===(n=null==e?void 0:e.commonAncestorContainer)||void 0===n?void 0:n.ownerDocument)||void 0===o?void 0:o.defaultView)||void 0===i?void 0:i.getSelection();if(a){var l=!0;if(a.rangeCount>0)try{var s=null;(t||r.Browser.isEdge)&&(s=1==a.rangeCount?a.getRangeAt(0):null)&&s.startContainer==e.startContainer&&s.startOffset==e.startOffset&&s.endContainer==e.endContainer&&s.endOffset==e.endOffset?l=!1:a.removeAllRanges()}catch(e){}l&&a.addRange(e)}}},8831:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8235),o=n(4630),i=n(5924);function a(e){return 1==e.node.nodeType&&(0,r.default)(e.node)?new o.default(e.node,e.isAtEnd?-3:-2):e}function l(e){return e&&e.node}function s(e,t){if(!e||!t)return null;for(var n=0,r=0;rn);r++)e=e.childNodes[n];return new o.default(e,n)}t.default=function(e,t,n,r){var u,d=null,c=null;if(l(e)?(d=e,c=l(t)?t:null):(0,i.default)(e,"Node")&&(Array.isArray(t)?(d=s(e,t),c=Array.isArray(n)?s(e,n):null):"number"==typeof t?(d=new o.default(e,t),c=(0,i.default)(n,"Node")?new o.default(n,r):null):!(0,i.default)(t,"Node")&&t||(d=new o.default(e,-2),c=new o.default(t||e,-3))),null===(u=null==d?void 0:d.node)||void 0===u?void 0:u.ownerDocument){var f=d.node.ownerDocument.createRange();return d=a(d),c=a(c||d),f.setStart(d.node,d.offset),f.setEnd(c.node,c.offset),f}return null}},9372:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4746),o=n(8805);t.default=function(e,t){if(!e)return"";var n=(0,r.default)(e),i=t&&(0,o.default)(e,t);return i?n+"\x3c!--"+JSON.stringify(i)+"--\x3e":n}},5473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6935),o=n(8831),i=n(5203);t.default=function(e){var t;if(!e)return null;var n=(0,o.default)(e),a=n.getBoundingClientRect&&(0,i.default)(n.getBoundingClientRect());if(a)return a;e=e.normalize();var l=n.getClientRects&&n.getClientRects();if(a=l&&1==l.length?(0,i.default)(l[0]):null)return a;if(3==e.node.nodeType&&e.node.ownerDocument){var s=(0,r.default)({tag:"span",children:["​"]},e.node.ownerDocument);if((n=(0,o.default)(e)).insertNode(s),a=s.getBoundingClientRect&&(0,i.default)(s.getBoundingClientRect()),null===(t=s.parentNode)||void 0===t||t.removeChild(s),a)return a}var u=e.element;return u&&u.getBoundingClientRect&&(a=(0,i.default)(u.getBoundingClientRect()))?a:null}},8805:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(4630);function i(e,t){var n,o;if(!e||!t)return[];var i,a=e.node,l=e.offset,s=[];if(!(0,r.default)(t,a,!0))return[];if(3==a.nodeType){for(i=a.parentNode;a.previousSibling&&3==a.previousSibling.nodeType;)l+=(null===(n=a.previousSibling.nodeValue)||void 0===n?void 0:n.length)||0,a=a.previousSibling;s.unshift(l)}else i=a,a=a.childNodes[l];do{l=0;for(var u=!1,d=(null==i?void 0:i.firstChild)||null;d&&d!=a;d=d.nextSibling){if(3==d.nodeType){if(0===(null===(o=d.nodeValue)||void 0===o?void 0:o.length)||u)continue;u=!0}else u=!1;l++}s.unshift(l),a=i,i=(null==i?void 0:i.parentNode)||null}while(a&&a!=t);return s}t.default=function(e,t){return t?{start:i(o.default.getStart(t),e),end:i(o.default.getEnd(t),e)}:null}},1431:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(3408),i=n(1657);function a(e){for(;e.previousSibling;)if(e=e.previousSibling,"BR"==(0,o.default)(e)||!(0,i.default)(e))return!1;return!0}t.default=function(e,t){if(e){var n=(e=e.normalize()).node;if(0==e.offset){for(;n&&(0,r.default)(t,n)&&a(n);)n=(null==n?void 0:n.parentNode)||null;return n==t}}return!1}},4477:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extractContentMetadata=t.setHtmlWithMetadata=void 0;var r=n(8831),o=n(5924),i=n(2373),a=n(681),l=(0,a.createArrayDefinition)((0,a.createNumberDefinition)()),s=(0,a.createObjectDefinition)({x:(0,a.createNumberDefinition)(),y:(0,a.createNumberDefinition)()}),u=(0,a.createBooleanDefinition)(!0),d=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!0,0),isDarkMode:u,start:l,end:l}),c=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!1,1),isDarkMode:u,tableId:(0,a.createStringDefinition)(),firstCell:s,lastCell:s}),f=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!1,2),isDarkMode:u,imageId:(0,a.createStringDefinition)()});function p(e,t,n){if(e)return t=t||"",e.innerHTML=(null==n?void 0:n(t))||t,v(e)}function v(e){var t=e.lastChild;if((0,o.default)(t,"Comment"))try{var n=JSON.parse(t.nodeValue||"");if((0,i.default)(n,d)||(0,i.default)(n,c)||(0,i.default)(n,f))return e.removeChild(t),n.type=void 0===n.type?0:n.type,n.isDarkMode=n.isDarkMode||!1,n}catch(e){}}t.default=function(e,t,n){var o=p(e,t,n);return 0==(null==o?void 0:o.type)?(0,r.default)(e,o.start,o.end):null},t.setHtmlWithMetadata=p,t.extractContentMetadata=v},3680:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addSnapshotV2=void 0;var r=n(5892);function o(e,t,n,o,i){o=o||function(e){var t;return(null===(t=e)||void 0===t?void 0:t.length)||0},i=i||a;var l=e.snapshots[e.currentIndex],s=l&&i(l,t);if(e.currentIndex<0||!l||!s){(0,r.default)(e,o),e.snapshots.push(t),e.currentIndex++,e.totalSize+=o(t);for(var u=0;ue.maxSize;)e.totalSize-=o(e.snapshots[u]),u++;u>0&&(e.snapshots.splice(0,u),e.currentIndex-=u,e.autoCompleteIndex-=u),n&&(e.autoCompleteIndex=e.currentIndex)}else s&&e.snapshots.splice(e.currentIndex,1,t)}function i(e,t){return e.html==t.html&&!e.entityStates&&!t.entityStates}function a(e,t){return e==t}t.default=o,t.addSnapshotV2=function(e,t,n){o(e,t,n,(function(e){var t;return(null===(t=e.html)||void 0===t?void 0:t.length)||0}),i)}},3205:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.currentIndex+t;return n>=0&&n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e.autoCompleteIndex>=0&&e.currentIndex-e.autoCompleteIndex==1}},5892:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearProceedingSnapshotsV2=void 0;var r=n(3205);function o(e,t){if(t=t||function(e){var t;return(null===(t=e)||void 0===t?void 0:t.length)||0},(0,r.default)(e,1)){for(var n=0,o=e.currentIndex+1;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return{snapshots:[],totalSize:0,currentIndex:-1,autoCompleteIndex:-1,maxSize:e}}},5105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.moveCurrentSnapsnot=void 0;var r=n(3205);function o(e,t){return(0,r.default)(e,t)?(e.currentIndex+=t,e.autoCompleteIndex=-1,e.snapshots[e.currentIndex]):null}t.default=o,t.moveCurrentSnapsnot=o},359:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t={};return((null==e?void 0:e.getAttribute("style"))||"").split(";").forEach((function(e){var n=e.indexOf(":"),r=e.slice(0,n),o=e.slice(n+1);r&&o&&(t[r.trim()]=o.trim())})),t}},4136:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n,r=e.getElementById(t);r&&(null===(n=r.parentNode)||void 0===n||n.removeChild(r))}},9130:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(359),o=n(6092);t.default=function(e,t){var n=(0,r.default)(e),i=0;t.forEach((function(e){var t;if((null===(t=n[e])||void 0===t?void 0:t.indexOf("!important"))>-1){var r=n[e].indexOf("!");n[e]=n[e].substring(0,r),i++}})),i>0&&(0,o.default)(e,n)}},8182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;if(t){var o=e.getElementById(n);o||((o=e.createElement("style")).id=n,e.head.appendChild(o)),null===(r=o.sheet)||void 0===r||r.insertRule(t)}}},6092:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4709);t.default=function(e,t){if(e){var n=(0,r.default)(t||{}).map((function(e){var n=t[e],r=e?e.trim():null,o=n?n.trim():null;return r&&o?r+":"+o:null})).filter((function(e){return e})).join(";");n?e.setAttribute("style",n):e.removeAttribute("style")}}},8094:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6160),i=n(3408),a=n(1473),l=n(5203),s=n(5924),u=n(8375),d=n(3606),c=n(4711),f=n(7570),p={topBorderColor:"#ABABAB",bottomBorderColor:"#ABABAB",verticalBorderColor:"#ABABAB",hasHeaderRow:!1,hasFirstColumn:!1,hasBandedRows:!1,hasBandedColumns:!1,bgColorEven:null,bgColorOdd:"#ABABAB20",headerRowColor:"#ABABAB",tableBorderFormat:0,keepCellShade:!1,verticalAlign:null},v=function(){function e(e,t,n){var r=this;if(this.cells=null,this.formatInfo=null,this.trs=[],this.tableSelection=null,this.table=(0,s.default)(e,"HTMLTableElement")?e:function(e){for(var t=e;t&&"TABLE"!=t.tagName;t=t.parentElement);return t}(e),this.table){var o=(0,s.default)(e,"HTMLTableElement")?null:e,i=(0,u.default)(this.table.rows);this.cells=i.map((function(e){return[]})),i.forEach((function(e,t){var n;r.trs[t%2]=e;for(var i=0,a=0;i0,spanAbove:u>0,width:d?c.width:void 0,height:d?c.height:void 0})}}for(var f=0;f1)for(var t=1;t1&&o.spanAbove&&(o.td=t.td)}))},E=this,C=a;C<=l;C++)b(C);var S=this.selection?this.selection.lastCell.y-this.selection.firstCell.y:0;this.cells.splice(a,S+1),0===this.cells.length&&(this.cells=null);break;case 5:for(var T=0,P=function(e){_.forEachCellOfColumn(e,(function(t,n,o){var i=r.getCell(o,e+1);t.td&&t.td.colSpan>1&&i.spanLeft&&(i.td=t.td);var a=r.selection?e-T:r.col;n.splice(a,1)})),T++},_=this,w=s;w<=u;w++)P(w);(0===(null===(t=this.cells)||void 0===t?void 0:t.length)||(null===(n=this.cells)||void 0===n?void 0:n.every((function(e){return 0===e.length}))))&&(this.cells=null);break;case 7:case 8:var O=7==e?-1:1;for(C=this.row+O;C>=0&&C=0&&w1)this.getCell(this.row+1,this.col).td=m(i.td);else{var k=o.map((function(e){return{td:e==i?m(e.td):null,spanAbove:e!=i,spanLeft:e.spanLeft}}));this.cells.splice(this.row+1,0,k)}break;case 12:i.td&&i.td.colSpan>1?this.getCell(this.row,this.col+1).td=m(i.td):this.forEachCellOfCurrentColumn((function(e,t){t.splice(r.col+1,0,{td:t==o?m(e.td):null,spanAbove:e.spanAbove,spanLeft:t!=o})}));break;case 14:this.table.style.marginLeft="auto",this.table.style.marginRight="auto";break;case 15:this.table.style.marginLeft="",this.table.style.marginRight="auto";break;case 16:this.table.style.marginLeft="auto",this.table.style.marginRight="";break;case 18:this.setAlignmentToSelectedCells(a,l,s,u,"center");break;case 17:this.setAlignmentToSelectedCells(a,l,s,u,"left");break;case 19:this.setAlignmentToSelectedCells(a,l,s,u,"right");break;case 20:this.setAlignmentToSelectedCells(a,l,s,u,"top",!0);break;case 21:this.setAlignmentToSelectedCells(a,l,s,u,"middle",!0);break;case 22:this.setAlignmentToSelectedCells(a,l,s,u,"bottom",!0)}}},e.prototype.setAlignmentToSelectedCells=function(e,t,n,o,i,a){for(var l,s,u=e;u<=t;u++)for(var c=n;c<=o;c++)if(this.cells){var f=this.cells[u][c].td;if(a&&f){null===(l=f.style)||void 0===l||l.setProperty("vertical-align",i);var p=(0,d.getTableCellMetadata)(f);(0,d.saveTableCellMetadata)(f,(0,r.__assign)((0,r.__assign)({},p),{vAlignOverride:!0}))}else f&&(null===(s=f.style)||void 0===s||s.setProperty("text-align",i))}},e.prototype.mergeCells=function(e,t,n){var r,o,i,a,l=n?(null===(r=e.td)||void 0===r?void 0:r.rowSpan)===(null===(o=t.td)||void 0===o?void 0:o.rowSpan)&&!e.spanLeft:(null===(i=e.td)||void 0===i?void 0:i.colSpan)===(null===(a=t.td)||void 0===a?void 0:a.colSpan)&&!e.spanAbove;e.td&&t.td&&l&&(this.mergeCellContents(e.td,t.td),t.td=null,n?t.spanLeft=!0:t.spanAbove=!0)},e.prototype.isEmptyCell=function(e){return 1===e.childElementCount&&"BR"===(0,i.default)(e.firstChild)},e.prototype.mergeCellContents=function(e,t){if(this.isEmptyCell(t))(0,a.default)(e,t,!1);else{var n=document.createElement("br");e.appendChild(n),(0,a.default)(e,t,!0)}},e.prototype.forEachCellOfCurrentColumn=function(e){this.forEachCellOfColumn(this.col,e)},e.prototype.getCellsWithBorder=function(e,t){for(var n=[],r=0;this.cells&&r=0&&t>=0;){var n=this.getCell(e,t);if(n.td)return n.td;if(n.spanLeft)t--;else{if(!n.spanAbove)break;e--}}return null},e.prototype.forEachCellOfColumn=function(e,t){if(void 0!==e)for(var n=0;this.cells&&n{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4984),o=n(7727),i=n(3606),a="transparent";function l(e){var t;return!!e.td&&!!(null===(t=(0,i.getTableCellMetadata)(e.td))||void 0===t?void 0:t.bgColorOverride)}function s(e){return"solid 1px "+(e||"transparent")}t.default=function(e,t,n,u){n&&(e.style.borderCollapse="collapse",function(e,t){e.forEach((function(n,r){n.forEach((function(o,i){o.td&&function(e,t,n,r,o,i){switch(function(e,t){e.style.borderTop=s(t.topBorderColor),e.style.borderLeft=s(t.verticalBorderColor),e.style.borderRight=s(t.verticalBorderColor),e.style.borderBottom=s(t.bottomBorderColor)}(t,e),e.tableBorderFormat){case 0:return;case 1:o||(t.style.borderLeftColor=a),i||(t.style.borderRightColor=a);break;case 4:n||(t.style.borderTopColor=a),r||n||(t.style.borderBottomColor=a),o||(t.style.borderLeftColor=a),i||o||(t.style.borderRightColor=a),o&&n&&(t.style.borderRightColor=a);break;case 2:n&&(t.style.borderTopColor=a,t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderLeftColor=a),i&&(t.style.borderRightColor=a);break;case 3:o&&(t.style.borderLeftColor=a),i&&(t.style.borderRightColor=a);break;case 5:n&&(t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderBottomColor=a,t.style.borderTopColor=a),n&&o&&(t.style.borderLeftColor=e.verticalBorderColor||a,t.style.borderBottomColor=e.bottomBorderColor||a,t.style.borderTopColor=e.topBorderColor||a);break;case 6:n&&(t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderBottomColor=a,t.style.borderTopColor=a),n&&o&&(t.style.borderLeftColor=e.verticalBorderColor||a,t.style.borderBottomColor=e.bottomBorderColor||a,t.style.borderTopColor=e.topBorderColor||a),n||o||(t.style.borderLeftColor=a,t.style.borderBottomColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a);break;case 7:n&&(t.style.borderLeftColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a),o&&(t.style.borderLeftColor=a,t.style.borderTopColor=a,t.style.borderBottomColor=a),n||o||(t.style.borderLeftColor=a,t.style.borderBottomColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a),n&&o&&(t.style.borderBottomColor=e.bottomBorderColor||a)}}(t,o.td,0===r,r===e.length-1,0===i,i===n.length-1)}))}))}(t,n),function(e,t,n){var r=function(e){return e%2==0?t.bgColorEven:t.bgColorOdd},s=t.hasBandedRows,u=t.hasBandedColumns,d=t.bgColorOdd,c=t.bgColorEven,f=!s&&d===c;e.forEach((function(e,u){e.forEach((function(e){if(e.td){if(!l(e))if(s){var d=r(u);(0,o.default)(e.td,d||a,!0,void 0,!0,n)}else f?(0,o.default)(e.td,t.bgColorOdd||a,!0,void 0,!0,n):(0,o.default)(e.td,a,!0,void 0,!0,n);t.verticalAlign&&!function(e){var t;return!!e.td&&!!(null===(t=(0,i.getTableCellMetadata)(e.td))||void 0===t?void 0:t.vAlignOverride)}(e)&&(e.td.style.verticalAlign=t.verticalAlign)}}))})),u&&e.forEach((function(e){e.forEach((function(e,t){var i=r(t);e.td&&i&&!l(e)&&(0,o.default)(e.td,i,!0,void 0,!0,n)}))}))}(t,n,u),function(e,t){t.hasFirstColumn?e.forEach((function(t,n){t.forEach((function(t,i){t.td&&0===i&&(0===n||l(t)||(t.td.style.borderTopColor=a,(0,o.default)(t.td,a,!0,void 0,!0)),n!==e.length-1&&0!==n&&(t.td.style.borderBottomColor=a),t.td=(0,r.default)(t.td,"TH"),t.td.scope="col")}))})):e.forEach((function(e){e.forEach((function(e,t){e.td&&0===t&&(e.td=(0,r.default)(e.td,"TD"),e.td.scope="")}))}))}(t,n),function(e,t,n){var i,a;t.hasHeaderRow?null===(a=e[0])||void 0===a||a.forEach((function(e){e.td&&t.headerRowColor&&(l(e)||(0,o.default)(e.td,t.headerRowColor,!0,void 0,!0,n),e.td.style.borderRightColor=t.headerRowColor,e.td.style.borderLeftColor=t.headerRowColor,e.td.style.borderTopColor=t.headerRowColor,e.td=(0,r.default)(e.td,"TH"),e.td.scope="row")})):null===(i=e[0])||void 0===i||i.forEach((function(e){e.td&&(e.td=(0,r.default)(e.td,"TD"),e.td.scope="")}))}(t,n,u))}},7146:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(3606);t.default=function(e,t){var n=t.getAttribute("style");if(n){e.setAttribute("style",n);var i=(0,o.getTableCellMetadata)(t);i&&(0,o.saveTableCellMetadata)(e,(0,r.__assign)({},i))}}},8570:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!t||!e.cells)return!1;var n=t.firstCell,r=t.lastCell,o=e.cells.length-1,i=e.cells[o];if(!i)return!1;var a=i.length-1,l=n.x,s=n.y,u=r.x,d=r.y;return 0==l&&0==s&&u==a&&d==o}},4731:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7146),o=n(1473),i=n(8094);t.default=function(e,t,n,a){var l,s,u,d,c=new i.default(t),f=new i.default(e),p=f.row,v=f.col,h=null!==(s=p+(null===(l=c.cells)||void 0===l?void 0:l.length))&&void 0!==s?s:0,g=null!==(d=v+(null===(u=c.cells)||void 0===u?void 0:u[0].length))&&void 0!==d?d:0;for(f.row=f.cells.length-1;f.cells.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.saveTableCellMetadata=t.getTableCellMetadata=void 0;var r=n(681),o=n(7570),i=(0,r.createBooleanDefinition)(!0,void 0,!0),a=(0,r.createObjectDefinition)({bgColorOverride:i,vAlignOverride:i},!1,!0);t.getTableCellMetadata=function(e){return(0,o.getMetadata)(e,a)},t.saveTableCellMetadata=function(e,t){e&&t&&(0,o.setMetadata)(e,t,a)}},4711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.saveTableInfo=t.getTableFormatInfo=void 0;var r=n(7570),o=n(681),i=(0,o.createStringDefinition)(!1,void 0,!0),a=(0,o.createBooleanDefinition)(!1),l=(0,o.createObjectDefinition)({topBorderColor:i,bottomBorderColor:i,verticalBorderColor:i,hasHeaderRow:a,headerRowColor:i,hasFirstColumn:a,hasBandedColumns:a,hasBandedRows:a,bgColorEven:i,bgColorOdd:i,tableBorderFormat:(0,o.createNumberDefinition)(!1,void 0,0,8),keepCellShade:(0,o.createBooleanDefinition)(!0),verticalAlign:i},!1,!0);t.getTableFormatInfo=function(e){return(0,r.getMetadata)(e,l)},t.saveTableInfo=function(e,t){e&&t&&(0,r.setMetadata)(e,t,l)}},246:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Browser=t.getBrowserInfo=void 0;var n=/android/i;function r(e,t,r){var o,i=-1!=e.indexOf("rv:")&&-1!=e.indexOf("Trident"),a=-1!=e.indexOf("MSIE")||i,l=!1,s=!1,u=!1,d=!1,c=-1!=e.indexOf("WebKit"),f=!1;return(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(o=e||r||"")||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(o.substr(0,4)))&&(f=!0),a||(l=-1!=e.indexOf("Chrome"),s=-1!=e.indexOf("Firefox"),-1!=e.indexOf("Safari")&&(u=-1==e.indexOf("Chrome")&&-1==e.indexOf("Android")),(d=-1!=e.indexOf("Edge"))&&(c=l=s=!1)),{isMac:-1!=t.indexOf("Mac"),isWin:-1!=t.indexOf("Win")||-1!=t.indexOf("NT"),isWebKit:c,isIE:a,isIE11OrGreater:i,isSafari:u,isChrome:l,isFirefox:s,isEdge:d,isIEOrEdge:a||d,isAndroid:n.test(e),isMobileOrTablet:f}}t.getBrowserInfo=r,t.Browser="undefined"!=typeof window&&window?r(window.navigator.userAgent,window.navigator.appVersion,window.navigator.vendor):{}},5400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7727);t.default=function(e,t,n,o){if(t){var i=e.style,a=t.fontFamily,l=t.fontSize,s=t.textColor,u=t.textColors,d=t.backgroundColor,c=t.backgroundColors,f=t.bold,p=t.italic,v=t.underline;a&&(i.fontFamily=a),l&&(i.fontSize=l),u?(0,r.default)(e,u,!1,n,!1,o):s&&(0,r.default)(e,s,!1,n,!1,o),c?(0,r.default)(e,c,!0,n,!1,o):d&&(0,r.default)(e,d,!0,n,!1,o),f&&(i.fontWeight="bold"),p&&(i.fontStyle="italic"),v&&(i.textDecoration="underline")}}},4984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(7695),i=n(3408),a=n(1473);t.default=function(e,t){var n;if(!e||!t)return null;var l=(0,i.default)(e);if(l==t.toUpperCase())return e;for(var s=e.ownerDocument.createElement(t),u=0;u{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.collapse=void 0;var r=n(8655),o=n(9381),i=n(8375);function a(e,t,n,i,a){for(;t.parentNode!=e&&!(0,r.default)(t.parentNode,n);){if(i&&t.previousSibling||!i&&t.nextSibling){if(!a)break;(0,o.default)(t,i)}if(!t.parentNode)break;t=t.parentNode}return t}t.default=function(e,t,n,o){var l;if(!(0,r.default)(e,t)||!(0,r.default)(e,n))return[];if(t=a(e,t,n,!0,o),n=a(e,n,t,!1,o),(0,r.default)(t,n,!0))return[t];if((0,r.default)(n,t))return[n];if(t.parentNode==n.parentNode){var s=t.parentNode?(0,i.default)(null===(l=t.parentNode)||void 0===l?void 0:l.childNodes):[],u=s.indexOf(t),d=s.indexOf(n);return s.slice(u,d+1)}return[t,n]},t.collapse=a},8655:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e,t,n){return!(!e||!t)&&(!(!n||e!=t)||((0,r.default)(t,"Range")&&(t=t&&t.commonAncestorContainer,n=!0),t&&3==t.nodeType&&(t=t.parentNode,n=!0),1!=e.nodeType&&11!=e.nodeType?!!n&&e==t:!(!n&&e==t)&&function(e,t){if(e.contains)return e.contains(t);for(;t;){if(t==e)return!0;t=t.parentNode}return!1}(e,t)))}},6935:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownCreateElementData=void 0;var o=n(4709),i=n(5924),a=n(246);t.KnownCreateElementData=((r={})[0]={tag:""},r[1]=a.Browser.isEdge?{tag:"div",children:[{tag:"span",children:[{tag:"br"}]}]}:{tag:"div",children:[{tag:"br"}]},r[2]={tag:"blockquote",style:"margin-top:0;margin-bottom:0"},r[3]={tag:"div",style:"width: 600px; height: 1px; overflow: hidden; position: fixed; top: 0; left; 0; -webkit-user-select: text",attributes:{contenteditable:"true"}},r[4]={tag:"li",style:"display:block"},r[5]={tag:"div",style:"position: fixed; width: 0; height: 0"},r[6]={tag:"span",style:"max-width:100%;position:relative",children:[{tag:"div",style:"width:100%;height:100%;position:relative;overflow:hidden"}]},r[7]={tag:"div",style:"position: fixed; cursor: row-resize; user-select: none"},r[8]={tag:"div",style:"position: fixed; cursor: col-resize; user-select: none"},r[9]={tag:"div",style:"position: fixed; cursor: nw-resize; user-select: none; border: 1px solid #808080"},r[10]={tag:"div",style:"position: fixed; cursor: ne-resize; user-select: none; border: 1px solid #808080"},r[11]={tag:"div",style:"position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080"},r[12]={tag:"div",children:[{tag:"span",children:[{tag:"br"}]}]},r),t.default=function e(n,r){if("number"==typeof n&&(n=t.KnownCreateElementData[n]),!n||!n.tag)return null;var a=n.tag,l=n.namespace,s=n.className,u=n.style,d=n.dataset,c=n.attributes,f=n.children,p=l?r.createElementNS(l,a):r.createElement(a);return u&&p.setAttribute("style",u),s&&(p.className=s),d&&(0,i.default)(p,"HTMLElement")&&(0,o.default)(d).forEach((function(e){p.dataset[e]=d[e]})),c&&(0,o.default)(c).forEach((function(e){p.setAttribute(e,c[e])})),f&&f.forEach((function(t){if("string"==typeof t)p.appendChild(r.createTextNode(t));else if(t){var n=e(t,r);n&&p.appendChild(n)}})),p}},3598:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(5010);t.default=function(e,t,n){var i=(e=e?1==e.nodeType?e:e.parentNode:null)&&1==e.nodeType?e:null;if(i&&n)if(i.closest)i=i.closest(n);else for(;i&&i!=t&&!(0,o.default)(i,n);)i=i.parentElement;return!t||(0,r.default)(t,i)?i:null}},5023:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8375);t.default=function(e,t){var n=t.createElement("DIV");return n.innerHTML=e,(0,r.default)(n.childNodes)}},7695:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getComputedStyle=void 0;var r=n(7582),o=n(3598);function i(e,t){var n,i;void 0===t&&(t=["font-family","font-size","color","background-color"]);var a,l=(0,o.default)(e),s=[];if(t=Array.isArray(t)?t:[t],l){var u=(l.ownerDocument.defaultView||window).getComputedStyle(l);if(u)try{for(var d=(0,r.__values)(t),c=d.next();!c.done;c=d.next()){var f=c.value,p=u.getPropertyValue(f)||"";p="font-family"!=f?p.toLowerCase():p,p="font-size"==f?(a=p)&&a.indexOf("px")==a.length-2?Math.round(75*parseFloat(a)+.05)/100+"pt":a:p,s.push(p)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}}return s}t.default=i,t.getComputedStyle=function(e,t){return i(e,t)[0]||""}},4746:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e){if((0,r.default)(e,"HTMLElement"))return e.innerHTML;if(e){var t=e.ownerDocument.createElement("span");return t.appendChild(e.cloneNode(!0)),t.innerHTML}return""}},3798:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(5203);t.default=function(e,t){void 0===t&&(t=[]);var n=e.map((function(e){return(0,o.default)(e.getBoundingClientRect())})).concat(t).filter((function(e){return!!e})),i={top:Math.max.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.top}))),!1)),bottom:Math.min.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.bottom}))),!1)),left:Math.max.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.left}))),!1)),right:Math.min.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.right}))),!1))};return i.top{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLastLeafNode=t.getFirstLeafNode=void 0;var r=n(1630),o=n(2513);function i(e,t){for(var n=function(e){return t?e.firstChild:e.lastChild},i=n(e);i&&n(i);)i=n(i);return i&&(0,r.default)(i)&&(i=(0,o.getLeafSibling)(e,i,t)),i}t.getFirstLeafNode=function(e){return i(e,!0)},t.getLastLeafNode=function(e){return i(e,!1)}},2513:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPreviousLeafSibling=t.getNextLeafSibling=t.getLeafSibling=void 0;var r=n(8655),o=n(3408),i=n(1630);function a(e,t,n,a,l){var s=null,u=n?function(e){return(null==e?void 0:e.nextSibling)||null}:function(e){return(null==e?void 0:e.previousSibling)||null},d=n?function(e){return e.firstChild}:function(e){return e.lastChild};if((0,r.default)(e,t))for(var c=t,f=!0;f;){var p=(null==c?void 0:c.parentNode)||null;for(c=u(c);!c&&p!=e;)c=u(p),p=(null==p?void 0:p.parentNode)||null;for(;c&&(!a||a.indexOf((0,o.default)(c))<0)&&d(c);)c=d(c);if(!(f=!!c&&(0,i.default)(c,l))){s=c;break}}return s}t.getLeafSibling=a,t.getNextLeafSibling=function(e,t,n){return a(e,t,!0,n)},t.getPreviousLeafSibling=function(e,t,n){return a(e,t,!1,n)}},3764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PendableFormatCommandMap=void 0;var r=n(4709);t.PendableFormatCommandMap={isBold:"bold",isItalic:"italic",isUnderline:"underline",isStrikeThrough:"strikeThrough",isSubscript:"subscript",isSuperscript:"superscript"},t.default=function(e){return(0,r.default)(t.PendableFormatCommandMap).reduce((function(n,r){return n[r]=e.queryCommandState(t.PendableFormatCommandMap[r]),n}),{})}},3408:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e&&1==e.nodeType?e.tagName.toUpperCase():""}},5499:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o="ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CANVAS,DD,DIV,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HR,LI,MAIN,NAV,NOSCRIPT,OL,OUTPUT,P,PRE,SECTION,TABLE,TD,TH,TFOOT,UL,VIDEO".split(","),i=["block","list-item","table-cell"];t.default=function(e){var t=(0,r.default)(e);return!(!t||!(i.indexOf(e.style.display)>=0||o.indexOf(t)>=0))}},6997:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return!(!e||!t||4!=(4&t.compareDocumentPosition(e)))}},1657:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=["IMG"],i=["TABLE","IMG","LI"].join(","),a=/\u200b/g;function l(e,t){return e=e.replace(a,""),t?e.trim():e}t.default=function(e,t,n){if(!e)return!1;if(3==e.nodeType)return""==l(e.nodeValue||"",t);if(1==e.nodeType){var a=e,s=l(a.textContent||"",t),u=n?i+",BR":i;if(""!=s||o.indexOf((0,r.default)(a))>=0||a.querySelectorAll(u)[0])return!1}return!0}},8235:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o="AREA,BASE,BR,COL,COMMAND,EMBED,HR,IMG,INPUT,KEYGEN,LINK,META,PARAM,SOURCE,TRACK,WBR".split(",");t.default=function(e){return!!e&&o.indexOf((0,r.default)(e))>=0}},844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4709),i=/^[^?]+%[^0-9a-f]+|^[^?]+%[0-9a-f][^0-9a-f]+|^[^?]+%00|^[^?]+%$|^https?:\/\/[^?\/]+@|^www\.[^?\/]+@/i,a="[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",l="(?:"+a+"\\.)*"+a+"(?:\\:[0-9]+)?(?:[\\/\\?]\\S*)?",s={http:{match:new RegExp("^(?:microsoft-edge:)?http:\\/\\/"+l+"|www\\."+l,"i"),except:i,normalizeUrl:function(e){return new RegExp("^(?:microsoft-edge:)?http:\\/\\/","i").test(e)?e:"http://"+e}},https:{match:new RegExp("^(?:microsoft-edge:)?https:\\/\\/"+l,"i"),except:i},mailto:{match:new RegExp("^mailto:\\S+@\\S+\\.\\S+","i")},notes:{match:new RegExp("^notes:\\/\\/\\S+","i")},file:{match:new RegExp("^file:\\/\\/\\/?\\S+","i")},unc:{match:new RegExp("^\\\\\\\\\\S+","i")},ftp:{match:new RegExp("^ftp:\\/\\/"+l+"|ftp\\."+l,"i"),normalizeUrl:function(e){return new RegExp("^ftp:\\/\\/","i").test(e)?e:"ftp://"+e}},news:{match:new RegExp("^news:(\\/\\/)?"+l,"i")},telnet:{match:new RegExp("^telnet:(\\/\\/)?"+l,"i")},gopher:{match:new RegExp("^gopher:\\/\\/"+l,"i")},wais:{match:new RegExp("^wais:(\\/\\/)?"+l,"i")}};t.default=function(e){var t,n;if(e)try{for(var i=(0,r.__values)((0,o.default)(s)),a=i.next();!a.done;a=i.next()){var l=a.value,u=s[l],d=e.match(u.match);if(d&&d[0]==e&&(!u.except||!u.except.test(e)))return{scheme:l,originalUrl:e,normalizedUrl:u.normalizeUrl?u.normalizeUrl(e):e}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return null}},5010:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e,t){return(0,r.default)(e,"HTMLElement")&&(e.matches||e.msMatchesSelector).call(e,t)}},1473:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){if(e){for(;!n&&e.firstChild;)e.removeChild(e.firstChild);for(;null==t?void 0:t.firstChild;)e.appendChild(t.firstChild)}}},5203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e||{left:0,right:0,top:0,bottom:0},n=t.left,r=t.right,o=t.top,i=t.bottom;return 0===n&&0===r&&0===o&&0===i?null:{left:Math.round(n),right:Math.round(r),top:Math.round(o),bottom:Math.round(i)}}},8121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=/^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,r=/^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,o=/^rgb\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*\)$/,i=/^rgba\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*\)$/;t.default=function(e){var t;return(t=(e=(e||"").trim()).match(n))?[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]:(t=e.match(r))?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:(t=e.match(o)||e.match(i))?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}},8471:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8375);function o(e,t){return t.some((function(t){return 0==t?0==e:(e&t)==t}))}t.default=function(e,t,n,i,a){if(void 0===i&&(i=0),!e||!t)return[];var l=(0,r.default)(e.querySelectorAll(t));if(0!=i&&a){var s=a.startContainer,u=a.startOffset,d=a.endContainer,c=a.endOffset;if(1==s.nodeType&&s.firstChild){var f=s.childNodes[u];s=f||s.lastChild}d=1==d.nodeType&&d.firstChild&&c>0?d.childNodes[c-1]:d,l=l.filter((function(e){return n=s,r=d,a=2==i,l=(t=e).compareDocumentPosition(n),u=t.compareDocumentPosition(r),c=[0,8],a||c.push(16),o(l,c)||o(u,c)||o(l,[2])&&o(u,[4])&&!o(u,[16]);var t,n,r,a,l,u,c}))}return n&&l.forEach(n),l}},3126:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e){var n=new FileReader;n.onload=function(){t(n.result)},n.onerror=function(){t(null)},n.readAsDataURL(e)}}},5924:(e,t)=>{"use strict";function n(e){var t=e&&(e.ownerDocument||("[object HTMLDocument]"==Object.prototype.toString.apply(e)?e:null));return t&&(t.defaultView||window)}Object.defineProperty(t,"__esModule",{value:!0}),t.getTargetWindow=void 0,t.getTargetWindow=n,t.default=function(e,t){var r;if("Range"==t)return"[object Range]"==Object.prototype.toString.apply(e)&&!!(null===(r=e)||void 0===r?void 0:r.commonAncestorContainer);var o=n(e),i=o&&o[t],a=window,l=a&&a[t];return l&&e instanceof l||i&&e instanceof i}},7727:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(8121),i="#ffffff";!function(e){e[e.BRIGHT=0]="BRIGHT",e[e.DARK=1]="DARK",e[e.NONE=2]="NONE"}(r||(r={}));t.default=function e(t,n,r,a,l,s){var u="string"==typeof n?n.trim():"",d="string"==typeof n?null:n,c=r?"background-color":"color";if(u||d){if(s){var f=s.registerColor((null==d?void 0:d.lightModeColor)||u,!!a,null==d?void 0:d.darkModeColor);t.style.setProperty(c,f)}r&&l&&function(t,n,r,a){if(n&&"transparent"!==n)switch(function(e){var t=function(e){var t=(0,o.default)(e);if(t){var n=t[0]/255,r=t[1]/255,i=t[2]/255;return 50*(Math.max(n,r,i)+Math.min(n,r,i))}return 255}(e);return t<20?1:t>80?0:2}(n)){case 1:e(t,{lightModeColor:i,darkModeColor:"#333333"},!1,r,!1,a);break;case 0:e(t,{lightModeColor:"#000000",darkModeColor:i},!1,r,!1,a)}}(t,(null==d?void 0:d.lightModeColor)||u,a,s)}}},1630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(7695),i=/^[\r\n]+$/g,a=/[\t\r\n\u0020\u200B]/gm;t.default=function e(t,n){if(3==t.nodeType)return!(t.nodeValue&&""!=t.textContent&&!i.test(t.nodeValue)&&(!n||""!=t.nodeValue.replace(a,"")));if(1==t.nodeType){if("none"==(0,o.getComputedStyle)(t,"display"))return!0;var l=(0,r.default)(t);if("DIV"==l||"SPAN"==l){for(var s=t.firstChild;s;s=s.nextSibling)if(!e(s,n))return!1;return!0}return!1}return!0}},9381:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.splitBalancedNodeRange=void 0;var r=n(6997);function o(e,t){var n;if(!e||!e.parentNode)return null;var r=e.parentNode,o=r.cloneNode(!1);if(o.removeAttribute("id"),t)for(;r.firstChild&&r.firstChild!=e;)o.appendChild(r.firstChild);else for(;e.nextSibling;)o.appendChild(e.nextSibling);return o.firstChild&&""!=o.innerHTML?null===(n=r.parentNode)||void 0===n||n.insertBefore(o,t?r:r.nextSibling):o=null,o}t.default=o,t.splitBalancedNodeRange=function(e){var t=Array.isArray(e)?e[0]:e,n=Array.isArray(e)?e[e.length-1]:e,i=t&&n&&t.parentNode==n.parentNode?t.parentNode:null;if(i){if((0,r.default)(t,n)){var a=n;n=t,t=a}o(t,!0),o(n,!1)}return i}},7409:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r,o,i,a=(null===(r=e.nodeValue)||void 0===r?void 0:r.substring(0,t))||"",l=(null===(o=e.nodeValue)||void 0===o?void 0:o.substring(t))||"",s=e.ownerDocument.createTextNode(n?a:l);return e.nodeValue=n?l:a,null===(i=e.parentNode)||void 0===i||i.insertBefore(s,n?e:e.nextSibling),s}},82:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e?e.parentNode:null;if(!t)return null;for(;e.firstChild;)t.insertBefore(e.firstChild,e);return t.removeChild(e),t}},4251:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6935),i=n(5023),a=n(5924);t.default=function(e,t){var n,l;if(0==(e=e?(0,a.default)(e,"Node")?[e]:e:[]).length||!e[0]||!e[0].ownerDocument)return null;if(t||(t="div"),!(0,a.default)(t,"HTMLElement")){var s=e[0].ownerDocument;t="string"==typeof t?/^\w+$/.test(t)?s.createElement(t):(0,i.default)(t,s)[0]:(0,o.default)(t,s)}var u=e[0].parentNode;u&&u.insertBefore(t,e[0]);try{for(var d=(0,r.__values)(e),c=d.next();!c.done;c=d.next()){var f=c.value;t.appendChild(f)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(l=d.return)&&l.call(d)}finally{if(n)throw n.error}}return t}},4730:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(3381),t)},1184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9025),t)},8801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(936),t)},4165:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7030),t)},3106:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(8854),t)},7099:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(5061),t)},9082:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(872),t)},2151:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9835),t)},3775:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(2184),t)},941:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(8833),t)},7037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7311),t)},2125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9963),t)},7019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(2939),t)},4739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(1184),t),(0,r.__exportStar)(n(8801),t),(0,r.__exportStar)(n(4165),t),(0,r.__exportStar)(n(3106),t),(0,r.__exportStar)(n(7099),t),(0,r.__exportStar)(n(9082),t),(0,r.__exportStar)(n(2151),t),(0,r.__exportStar)(n(3775),t),(0,r.__exportStar)(n(941),t),(0,r.__exportStar)(n(2125),t),(0,r.__exportStar)(n(7019),t),(0,r.__exportStar)(n(7037),t),(0,r.__exportStar)(n(4730),t)},4296:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6344),i={MOUSEDOWN:"mousedown",MOUSEMOVE:"mousemove",MOUSEUP:"mouseup",getPageXY:function(e){return[e.pageX,e.pageY]}},a={MOUSEDOWN:"touchstart",MOUSEMOVE:"touchmove",MOUSEUP:"touchend",getPageXY:function(e){var t=0,n=0;if(e.targetTouches&&e.targetTouches.length>0){var r=e.targetTouches[0];t=r.pageX,n=r.pageY}return[t,n]}};var l=function(){function e(e,t,n,l,s,u){var d=this;this.trigger=e,this.context=t,this.onSubmit=n,this.handler=l,this.zoomScale=s,this.initX=0,this.initY=0,this.initValue=void 0,this.onMouseDown=function(e){var t,n,o;e.preventDefault(),e.stopPropagation(),d.addDocumentEvents(),t=(0,r.__read)(d.dndMouse.getPageXY(e),2),d.initX=t[0],d.initY=t[1],d.initValue=null===(o=(n=d.handler).onDragStart)||void 0===o?void 0:o.call(n,d.context,e)},this.onMouseMove=function(e){var t,n,o;e.preventDefault();var i=(0,r.__read)(d.dndMouse.getPageXY(e),2),a=i[0],l=i[1],s=(a-d.initX)/d.zoomScale,u=(l-d.initY)/d.zoomScale;d.initValue&&(null===(n=(t=d.handler).onDragging)||void 0===n?void 0:n.call(t,d.context,e,d.initValue,s,u))&&(null===(o=d.onSubmit)||void 0===o||o.call(d,d.context,d.trigger))},this.onMouseUp=function(e){var t,n,r;e.preventDefault(),d.removeDocumentEvents(),(null===(n=(t=d.handler).onDragEnd)||void 0===n?void 0:n.call(t,d.context,e,d.initValue))&&(null===(r=d.onSubmit)||void 0===r||r.call(d,d.context,d.trigger))},this.dndMouse=u||o.Browser.isMobileOrTablet?a:i,e.addEventListener(this.dndMouse.MOUSEDOWN,this.onMouseDown)}return e.prototype.dispose=function(){this.trigger.removeEventListener(this.dndMouse.MOUSEDOWN,this.onMouseDown),this.removeDocumentEvents()},Object.defineProperty(e.prototype,"mouseType",{get:function(){return this.dndMouse==a?"touch":"mouse"},enumerable:!1,configurable:!0}),e.prototype.addDocumentEvents=function(){var e=this.trigger.ownerDocument;e.addEventListener(this.dndMouse.MOUSEMOVE,this.onMouseMove,!0),e.addEventListener(this.dndMouse.MOUSEUP,this.onMouseUp,!0)},e.prototype.removeDocumentEvents=function(){var e=this.trigger.ownerDocument;e.removeEventListener(this.dndMouse.MOUSEMOVE,this.onMouseMove,!0),e.removeEventListener(this.dndMouse.MOUSEUP,this.onMouseUp,!0)},e}();t.default=l},3904:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=/[`!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?~]/,r=function(){function e(){this.editor=null,this.lastKeyTyped=null}return e.prototype.getName=function(){return"AutoFormat"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.lastKeyTyped=null},e.prototype.onPluginEvent=function(e){var t=this;if(this.editor&&(7!==e.eventType&&5!==e.eventType&&6!==e.eventType||(this.lastKeyTyped=""),1===e.eventType)){var r=e.rawEvent.key;if(r&&r.length>1&&(this.lastKeyTyped=""),"-"!==this.lastKeyTyped||n.test(r)||" "===r||"-"===r)this.lastKeyTyped=r;else{var o=this.editor.getContentSearcherOfCursor(e),i=null==o?void 0:o.getSubStringBefore(3),a=null==o?void 0:o.getSubStringBefore(2),l="-"===(null==i?void 0:i[0]),s=" "===(null==i?void 0:i[0]);if(l||s||"string"==typeof i&&n.test(i[0])||"--"!==a)return;var u=null==o?void 0:o.getRangeFromText(a,!0),d=document.createTextNode("—");this.editor.addUndoSnapshot((function(){u&&(u.deleteContents(),u.insertNode(d),t.editor.select(d,-1))}),"Format",!0,{formatApiName:"autoHyphen"}),this.lastKeyTyped=null}}},e}();t.default=r},3381:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoFormat=void 0;var r=n(3904);Object.defineProperty(t,"AutoFormat",{enumerable:!0,get:function(){return r.default}})},678:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(692),o=n(6344),i=function(){function e(e,t){this.settingsOverride=e,this.additionalFeatures=t,this.editor=void 0,this.features=[]}return e.prototype.getName=function(){return"ContentEdit"},e.prototype.initialize=function(e){var t=this;this.editor=e;var n=(0,r.default)();(0,o.getObjectKeys)(n).forEach((function(e){var r,o=n[e],i=t.settingsOverride&&void 0!==t.settingsOverride[e];(i&&(null===(r=t.settingsOverride)||void 0===r?void 0:r[e])||!i&&!o.defaultDisabled)&&t.features.push(o)})),this.features=this.features.concat(this.additionalFeatures||[]),this.features.forEach((function(e){var n;return null===(n=t.editor)||void 0===n?void 0:n.addContentEditFeature(e)}))},e.prototype.disposeFeatures=function(){var e=this;this.editor&&this.features.forEach((function(t){return e.editor.removeContentEditFeature(t)})),this.features=[]},e.prototype.dispose=function(){this.disposeFeatures(),this.editor=void 0},e}();t.default=i},7539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoLinkFeatures=void 0;var r=n(4548),o=n(6344),i=/[.+=\s:;"',>]+$/i,a={keys:[13,32,257],shouldHandleEvent:s,handleEvent:function(e,t){var n=s(e,t);if(n){var i=t.getDocument().createElement("a"),a=t.getContentSearcherOfCursor();i.textContent=n.originalUrl,i.href=n.normalizedUrl,t.runAsync((function(t){t.addUndoSnapshot((function(){return(0,r.replaceWithNode)(t,n.originalUrl,i,!1,null!=a?a:void 0),(0,o.clearEventDataCache)(e),i}),"AutoLink",!0)}))}}},l={keys:[8],shouldHandleEvent:function(e,t){var n=t.getContentSearcherOfCursor(e);return(null==n?void 0:n.getInlineElementBefore())instanceof o.LinkInlineElement},handleEvent:function(e,t){e.rawEvent.preventDefault(),(0,r.removeLink)(t)},defaultDisabled:!0};function s(e,t){return 0==e.eventType||7==e.eventType&&"Paste"==e.source?(0,o.cacheGetEventData)(e,"LINK_DATA",(function(){var n=7==e.eventType&&"Paste"==e.source&&e.data||null,r=(0,o.matchLink)(((null==n?void 0:n.text)||"").trim()),a=t.getContentSearcherOfCursor(e);if(r&&(null==a?void 0:a.getRangeFromText(r.originalUrl,!1)))return r;var l=a&&a.getWordBefore();if(l&&l.length>5){var s=(l.match(i)||[])[0]||"",u=l.substring(0,l.length-s.length);return["()","{}","[]"].forEach((function(e){u[u.length-1]==e[1]&&u.indexOf(e[0])<0&&(u=u.substr(0,u.length-1))})),(0,o.matchLink)(u)}return null})):null}t.AutoLinkFeatures={autoLink:a,unlinkWhenBackspaceAfterLink:l}},2056:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeFeatures=void 0;var r=n(6344),o={keys:[13],shouldHandleEvent:function(e,t){var n=a(e,t);return n&&(0,r.isNodeEmpty)(n)},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){l(e,t)}),void 0,!0)}},i={keys:[8],shouldHandleEvent:function(e,t){var n=a(e,t);return n&&(0,r.isNodeEmpty)(n)&&!n.previousSibling},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){return l(e,t)}))}};function a(e,t){return(0,r.cacheGetEventData)(e,"CODE_CHILD",(function(){var e,n=null!==(e=t.getElementAtCursor("code"))&&void 0!==e?e:t.queryElements("code",1)[0];if(n){var o=t.getFocusedPosition(),i=o&&t.getBlockElementAtNode(o.normalize().node);if(i){var a=i.getStartNode()==n.parentNode?i.getStartNode():i.collapseToSingleElement();return(0,r.isNodeEmpty)(a)?a:null}}return null}))}function l(e,t){var n=a(e,t);if((0,r.safeInstanceOf)(n,"HTMLElement")){var o=n.querySelector("code");if(o)(0,r.unwrap)(o);else{var i=(0,r.splitBalancedNodeRange)(n);if(i&&(0,r.unwrap)(i),(0,r.safeInstanceOf)(n.parentElement,"HTMLPreElement")){var l=(0,r.splitBalancedNodeRange)(n);l&&(0,r.unwrap)(l)}}t.select(n,0)}}t.CodeFeatures={removeCodeWhenEnterOnEmptyLine:o,removeCodeWhenBackspaceOnEmptyFirstLine:i}},7167:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CursorFeatures=void 0;var r=n(6344),o={keys:[37,39],allowFunctionKeys:!0,shouldHandleEvent:function(e,t,n){var o,i=null;if(!(n&&(i=t.getSelectionRange())&&i.collapsed&&(o=r.Position.getStart(i))&&t.isPositionAtBeginning(o)))return!1;var a="rtl"==(0,r.getComputedStyle)(o.element,"direction"),l=e.rawEvent;return!a&&37==l.which||a&&39==l.which},handleEvent:function(e){e.rawEvent.preventDefault()},defaultDisabled:!r.Browser.isChrome};t.CursorFeatures={noCycleCursorMove:o}},4397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntityFeatures=void 0;var r=n(7582),o=n(6344),i=n(6344),a={keys:[13],shouldHandleEvent:function(e,t){return s(e,t)},handleEvent:function(e,t){s(e,t,1)}},l={keys:[27],shouldHandleEvent:function(e,t){return s(e,t)},handleEvent:function(e,t){s(e,t,3)}};function s(e,t,n){var r=(0,i.cacheGetEventData)(e,"READONLY_ENTITY_ELEMENT",(function(){var n=e.rawEvent.target,r=n&&t.getElementAtCursor((0,i.getEntitySelector)(),n);return r&&!r.isContentEditable?r:null}));if(r&&void 0!==n){var o=(0,i.getEntityFromElement)(r);o&&t.triggerPluginEvent(15,{operation:n,rawEvent:e.rawEvent,entity:o})}return r}var u={keys:[13],shouldHandleEvent:function(e,t){return f(e,t,!0,!1)},handleEvent:function(e,t){var n,r,o;e.rawEvent.preventDefault();var a=t.getSelectionRange();if(a){var l=i.Position.getEnd(a).normalize().node,s=t.getDocument().createElement("BR");null===(n=l.parentNode)||void 0===n||n.insertBefore(s,l.nextSibling);var u,d=t.getBlockElementAtNode(l);d&&(u=d.collapseToSingleElement(),null===(r=s.parentNode)||void 0===r||r.removeChild(s)),null===(o=t.getSelectionRange())||void 0===o||o.deleteContents(),(null==u?void 0:u.nextSibling)&&t.select(u.nextSibling,0)}}},d={keys:[8],shouldHandleEvent:function(e,t){return f(e,t,!1,!0)},handleEvent:function(e,t){f(e,t,!1,!0,5)}},c={keys:[46],shouldHandleEvent:function(e,t){return f(e,t,!0,!0)},handleEvent:function(e,t){f(e,t,!0,!0,4)}};function f(e,t,n,r,a){var l=(0,i.cacheGetEventData)(e,"NEIGHBOR_ENTITY_ELEMENT_"+n+"_"+r,(function(){var e,a=t.getSelectionRange();if(!a||r&&!a.collapsed)return null;var l=null===(e=t.getSelectedRegions()[0])||void 0===e?void 0:e.rootNode;a.commonAncestorContainer.normalize();var s=i.Position.getEnd(a).normalize(),u=null;if((0==s.offset||s.isAtEnd)&&l){var d=o.ContentTraverser.createBodyTraverser(l,s.node),c=n?0==s.offset?d.currentInlineElement:d.getNextInlineElement():s.isAtEnd?d.currentInlineElement:d.getPreviousInlineElement(),f=c&&c.getContainerNode();if(!r){var p=t.getBlockElementAtNode(s.node);(!p||f&&!p.contains(f))&&(f=null)}u=f&&t.getElementAtCursor((0,i.getEntitySelector)(),f)}return u}));if(l&&void 0!==a){var s=(0,i.getEntityFromElement)(l);s&&b(s,t,a,e)}return l}var p={keys:[39,37],allowFunctionKeys:!0,shouldHandleEvent:function(e,t){if(e.rawEvent.altKey||!t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))return!1;var n=t.getElementAtCursor();return!!n&&h(e,t,"rtl"===(0,i.getComputedStyle)(n,"direction")==(37===e.rawEvent.which))},handleEvent:function(e,t){var n=E(e),r=m(e,n);if(r){var o=C(r,n,t),a=o.delimiterPair,l=o.entity;a&&l&&(0,i.matchesSelector)(l,(0,i.getEntitySelector)())&&(e.rawEvent.preventDefault(),t.runAsync((function(){var r=n?e.rawEvent.shiftKey?-3:-1:-2,o=new i.Position(a,r);if(e.rawEvent.shiftKey){var l=a.ownerDocument.getSelection();null==l||l.extend(o.node,o.offset)}else t.select(o)})))}}},v={keys:[8,46],shouldHandleEvent:function(e,t){if(!t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))return!1;var n=t.getSelectionRange();if(!(null==n?void 0:n.collapsed))return!1;var r=46===e.rawEvent.which;if(h(e,t,r)){var o=m(e,r);return!!y(e,t,r,r?null==o?void 0:o.nextElementSibling:null==o?void 0:o.previousElementSibling)}return!1},handleEvent:function(e,t){var n=46===e.rawEvent.which;y(e,t,n,null,n?4:5)}};function h(e,t,n){var r,o=null===(r=t.getFocusedPosition())||void 0===r?void 0:r.normalize();if(E(e,n),!o)return!1;var i=3==o.node.nodeType?o.node:o.node==o.element?o.element.childNodes.item(o.offset):o.element,a=n?{class:"entityDelimiterBefore",pairClass:"entityDelimiterAfter",isAtEndOrBeginning:o.isAtEnd}:{class:"entityDelimiterAfter",pairClass:"entityDelimiterBefore",isAtEndOrBeginning:0==o.offset},l=function(e,t,n){var r=g(e,t);if(r){for(var o,i=r.currentInlineElement;i&&i.getContainerNode()===t;)o=r,i=n?o.getNextInlineElement():o.getPreviousInlineElement();return null==i?void 0:i.getContainerNode()}}(t,i,n);if(a.isAtEndOrBeginning&&l){var s=t.getElementAtCursor("."+a.class,l);if(s&&u(s))return!0}return!!u(i&&t.getElementAtCursor("."+a.class,i));function u(r){if(!r)return!1;var o=C(r,n,t).delimiterPair;return o&&(o.className||"").indexOf(a.pairClass)>-1&&m(e,n,r)}}function g(e,t){var n;if(t){var r=null===(n=e.getBlockElementAtNode(t))||void 0===n?void 0:n.getStartNode();if(r&&(0,i.isBlockElement)(r))return o.ContentTraverser.createBodyTraverser(r,t)}}function m(e,t,n){return(0,i.cacheGetEventData)(e,"delimiter_cache_key_"+t,(function(){return n}))}function y(e,t,n,r,o){var a=(0,i.cacheGetEventData)(e,"entity_delimiter_cache_key_"+n,(function(){return r&&t.getElementAtCursor((0,i.getEntitySelector)(),r)}));if(a&&void 0!==o){var l=(0,i.getEntityFromElement)(a);l&&b(l,t,o,e)}return a}function b(e,t,n,o){var a=e.wrapper,l=a.nextElementSibling,s=a.previousElementSibling;t.triggerPluginEvent(15,{operation:n,rawEvent:o.rawEvent,entity:e}),e.isReadonly&&!(0,i.isBlockElement)(e.wrapper)&&t.isFeatureEnabled("InlineEntityReadOnlyDelimiters")&&(o.rawEvent.defaultPrevented?t.runAsync((function(){if(t.contains(e.wrapper)){var n=(0,r.__read)((0,i.addDelimiters)(e.wrapper),1)[0];n&&t.select(n,-3)}else!function(e,t){[e,t].forEach((function(e){var t;(0,i.getDelimiterFromElement)(e)&&(null===(t=null==e?void 0:e.parentElement)||void 0===t||t.removeChild(e))}))}(l,s)})):(0,i.getDelimiterFromElement)(l)&&(0,i.getDelimiterFromElement)(s)&&t.select((0,i.createRange)(s,l)))}function E(e,t){return!!(0,i.cacheGetEventData)(e,"Check_Before",(function(){return t}))}function C(e,t,n){var r=null,o=null,a=g(n,e);if(!a)return{delimiterPair:o,entity:r};for(var l,s="."+(t?"entityDelimiterAfter":"entityDelimiterBefore"),u=function(e,t){var r,o=null==e?void 0:e.getContainerNode();return null!==(r=o&&n.getElementAtCursor(t,o))&&void 0!==r?r:null},d=(0,i.getEntitySelector)(),c=a.currentInlineElement;c&&(!r||!o);){if(r=r||u(c,d),o=o||u(c,s),r&&!o&&!u(c,d)){o=null;break}l=a,c=t?l.getNextInlineElement():l.getPreviousInlineElement()}return{entity:r,delimiterPair:o}}t.EntityFeatures={clickOnEntity:a,escapeFromEntity:l,enterBeforeReadonlyEntity:u,backspaceAfterEntity:d,deleteBeforeEntity:c,moveBetweenDelimitersFeature:p,removeEntityBetweenDelimiters:v}},7018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListFeatures=void 0;var r=n(3279),o=n(1892),i=n(4548),a=n(6344),l="previousBlock",s="nextBlock",u=(0,a.createObjectDefinition)({orderedStyleType:(0,a.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,a.createNumberDefinition)(!0,void 0,1,9)},!0,!0),d=function(e){return function(t,n){var r=t.rawEvent,o=r.keyCode,i=r.altKey,a=r.shiftKey,l=r.ctrlKey,s=r.metaKey;return!l&&!s&&(9===o?!i&&a===!e:a&&i&&o===(e?39:37))&&R(t,n)}},c=function(e){return function(t,n){var r=null,o=9!==t.rawEvent.keyCode&&(r=n.getElementAtCursor())&&"rtl"==(0,a.getComputedStyle)(r,"direction");(0,i.setIndentation)(n,o==e?1:0),t.rawEvent.preventDefault()}},f={keys:[9],shouldHandleEvent:d(!0),handleEvent:c(!0)},p={keys:[9],shouldHandleEvent:d(!1),handleEvent:c(!1),allowFunctionKeys:!0},v={keys:[39],shouldHandleEvent:d(!0),handleEvent:c(!0),allowFunctionKeys:!0,defaultDisabled:a.Browser.isMac},h={keys:[37],shouldHandleEvent:d(!1),handleEvent:c(!1),allowFunctionKeys:!0,defaultDisabled:a.Browser.isMac},g={keys:[8],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e),r=t.getSelectionRange();return n&&(null==r?void 0:r.collapsed)&&(0,a.isPositionAtBeginningOf)(a.Position.getStart(r),n)},handleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);(null==n?void 0:n.previousSibling)?(0,i.blockFormat)(t,(function(r,o,i){var l=(0,a.createVListFromRegion)(r,!1,null!=n?n:void 0);l&&o&&i&&(l.setIndentation(o,i,1,!0),l.writeBack(t.isFeatureEnabled("ReuseAllAncestorListElements"),t.isFeatureEnabled("DisableListChain")),e.rawEvent.preventDefault())})):A(e,t)},defaultDisabled:!0},m={keys:[8],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);return n&&(0,a.isNodeEmpty)(n)&&!n.previousSibling&&!n.getElementsByTagName("blockquote").length},handleEvent:A},y={keys:[46],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e),r=t.getSelectionRange();if(n||!r)return!1;var o=a.Position.getEnd(r).isAtEnd?function(e,t){var n=(0,a.cacheGetEventData)(e,"nextSibling",(function(){var e,n=t.getSelectionRange(),r=n&&a.Position.getEnd(n).normalize(),o=r&&t.getBodyTraverser(r.node);return null===(e=null==o?void 0:o.getNextBlockElement())||void 0===e?void 0:e.getStartNode()}));return n}(e,t):void 0;return t.getElementAtCursor("LI",o,e)},handleEvent:function(e,t){var n=D(t);t.runAsync((function(e){return(0,i.commitListChains)(e,n)}))}},b={keys:[13],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);return!e.rawEvent.shiftKey&&n&&(0,a.isNodeEmpty)(n)},handleEvent:function(e,t){t.addUndoSnapshot((function(){return A(e,t,!1)}),void 0,!0)},defaultDisabled:!a.Browser.isIE&&!a.Browser.isChrome};function E(e){return/^(\*|-|[0-9]{1,2}\.|[0-9]{1,2}\>|[0-9]{1,2}\)|[0-9]{1,2}\-|\([0-9]{1,2}\))$/.test(e)}var C={keys:[32],shouldHandleEvent:function(e,t){var n;return!(R(e,t)||t.isFeatureEnabled("AutoFormatList")||!(n=t.getContentSearcherOfCursor(e)))&&E(n.getSubStringBefore(4))&&!n.getNearestNonTextInlineElement()},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n,r=t.getContentSearcherOfCursor();if(r){var o=r.getSubStringBefore(4),a=r.getRangeFromText(o,!0);if(a)if(0==o.indexOf("*")||0==o.indexOf("-"))M(t,a),(0,i.toggleBullet)(t);else if(E(o))M(t,a),(0,i.toggleNumbering)(t);else if((n=t.getSelectedRegions())&&1==n.length){var l=parseInt(o);M(t,a),(0,i.toggleNumbering)(t,l)}null===(e=r.getRangeFromText(o,!0))||void 0===e||e.deleteContents()}}),void 0,!0)}},S={keys:[32],shouldHandleEvent:function(e,t){return!(R(e,t)||!t.isFeatureEnabled("AutoFormatList"))&&I(e,t,r.default,2)},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n=t.getContentSearcherOfCursor();if(n){var o=n.getSubStringBefore(5),a=n.getRangeFromText(o,!0),l=(0,r.default)(o);a&&(M(t,a),(0,i.toggleBullet)(t,null!=l?l:void 0,"autoToggleList")),null===(e=n.getRangeFromText(o,!0))||void 0===e||e.deleteContents()}}),void 0,!0)}},T={keys:[32],shouldHandleEvent:function(e,t){return!(R(e,t)||!t.isFeatureEnabled("AutoFormatList"))&&I(e,t,o.default,1)},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n,r=t.getContentSearcherOfCursor();if(r){var a=r.getSubStringBefore(5),l=r.getRangeFromText(a,!0);if(l){var s=w(a)?1:parseInt(a),u=P(t,l),d=null!==(e=(0,o.default)(a))&&void 0!==e?e:void 0;M(t,l),(0,i.toggleNumbering)(t,u&&1!==s?void 0:s,d,"autoToggleList")}null===(n=r.getRangeFromText(a,!0))||void 0===n||n.deleteContents()}}),void 0,!0)}},P=function(e,t){var n,r=e.getBodyTraverser(null==t?void 0:t.startContainer).getPreviousBlockElement(),o=null!==(n=null==r?void 0:r.getEndNode())&&void 0!==n?n:null;return"LI"===(0,a.getTagOfNode)(o)?o:void 0},_=function(e,t,n){var r=1===n?"orderedStyleType":"unorderedStyleType",o=P(e,t),i=o?(0,a.findClosestElementAncestor)(o,void 0,1===n?"ol":"ul"):null,l=i?(0,a.getMetadata)(i,u):null;return l?l[r]:null},w=function(e){var t=parseInt(e);if(t&&1===t)return 1;var n=e.replace(/\(|\)|\-|\./g,"").trim();return 1===n.length&&["i","a","I","A"].indexOf(n)>-1?1:void 0},O={keys:[13,9,46,8,258],shouldHandleEvent:function(e,t){return t.queryElements("li",1).filter((function(e){return!e.getElementsByTagName("blockquote").length})).length>0},handleEvent:function(e,t){var n=D(t);t.runAsync((function(e){return(0,i.commitListChains)(e,n)}))}};function D(e){return a.VListChain.createListChains(e.getSelectedRegions())}function M(e,t){var n,r=e.getBlockElementAtNode(t.startContainer),o=null==r?void 0:r.getEndNode();if(o&&"BR"!=(0,a.getTagOfNode)(o)){var i=e.getDocument().createElement("BR");(0,a.isBlockElement)(o)?o.appendChild(i):null===(n=o.parentNode)||void 0===n||n.insertBefore(i,o.nextSibling),e.select(t.startContainer,t.startOffset)}}function A(e,t,n){void 0===n&&(n=!0);var r=R(e,t);if(r){var o=r[0],l=(0,a.getTagOfNode)(o);"UL"!=l&&"OL"!=l||(0,i.toggleListType)(t,"UL"==l?2:1,void 0,n),t.focus(),e.rawEvent.preventDefault()}}function R(e,t){var n=t.getElementAtCursor("LI,TABLE",void 0,e),r=n&&"LI"==(0,a.getTagOfNode)(n)&&t.getElementAtCursor("UL,OL",n);return r?[r,n]:null}function I(e,t,n,r){var o=t.getContentSearcherOfCursor(e);if(!o)return!1;var i=o.getSubStringBefore(4),a=t.getBlockTraverser(),l=a&&a.currentBlockElement?a.currentBlockElement.getTextContent().slice(0,i.length):null,s=l&&l===i,u=D(t),d=o.getRangeFromText(i,!0),c=d&&_(t,d,r),f=w(i),p=n(i,u,null!=c?c:void 0),v=f||!c||c===p||2===r;return s&&!o.getNearestNonTextInlineElement()&&p&&v}var L={keys:[8],shouldHandleEvent:function(e,t){var n,r,o=t.getElementAtCursor();if(o){var i=null===(n=t.getBlockElementAtNode(o))||void 0===n?void 0:n.getStartNode(),u=null!==(r=null==i?void 0:i.previousElementSibling)&&void 0!==r?r:null;if(N(u)){var d=t.getSelectionRange(),c=t.getContentSearcherOfCursor(e),f=null==c?void 0:c.getSubStringBefore(4),p=null==c?void 0:c.getNearestNonTextInlineElement();if(d&&d.collapsed&&""===f&&!p){var v=null==i?void 0:i.nextElementSibling,h=N(v)?v:null==v?void 0:v.firstChild;if(N(h)&&(0,a.getTagOfNode)(u)==(0,a.getTagOfNode)(h)){var g=(0,a.cacheGetEventData)(e,l,(function(){return u})),m=(0,a.cacheGetEventData)(e,s,(function(){return h}));return!!g&&!!m}}}}return!1},handleEvent:function(e,t){t.runAsync((function(t){var n=(0,a.cacheGetEventData)(e,l,(function(){return null})),r=(0,a.cacheGetEventData)(e,s,(function(){return null})),o=t.getSelectionRange();if(n&&r&&o){var i=new a.VList(n);i.mergeVList(new a.VList(r));var u=t.getDocument().createElement("span");u.id="restoreRange",o.insertNode(u),i.writeBack(),(u=t.queryElements("#restoreRange")[0]).parentElement&&(t.select(new a.Position(u,-3)),u.parentElement.removeChild(u))}}))}};function N(e){return!!e&&((0,a.safeInstanceOf)(e,"HTMLOListElement")||(0,a.safeInstanceOf)(e,"HTMLUListElement"))}t.ListFeatures={autoBullet:C,indentWhenTab:f,outdentWhenShiftTab:p,outdentWhenBackspaceOnEmptyFirstLine:m,outdentWhenEnterOnEmptyLine:b,mergeInNewLineWhenBackspaceOnFirstChar:g,maintainListChain:O,maintainListChainWhenDelete:y,autoNumberingList:T,autoBulletList:S,mergeListOnBackspaceAfterList:L,outdentWhenAltShiftLeft:h,indentWhenAltShiftRight:v}},57:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MarkdownFeatures=void 0;var r=n(6344);function o(e,t,n,o){return{keys:[e],shouldHandleEvent:function(e,n){return e.rawEvent.shiftKey===o&&!!i(e,n,t)},handleEvent:function(e,o){o.runAsync((function(o){!function(e,t,n,o){t.addUndoSnapshot((function(){var a=i(e,t,n);if(a){var l=new r.Position(a.endContainer,-1),s=a.endOffset+1<=l.offset;if(a&&s){var u=a.cloneRange();u.setStart(u.startContainer,u.startOffset+1);var d=u.extractContents().textContent,c=t.getDocument().createTextNode(null!=d?d:""),f=(0,r.wrap)(c,o);a.setEnd(a.endContainer,a.endOffset+1),a.deleteContents();var p=t.getDocument().createTextNode("​");a.insertNode(p),a.insertNode(f),t.select(p,-1)}}}),"Format",!0)}(e,o,t,n)}))}}}function i(e,t,n){return(0,r.cacheGetEventData)(e,"MARKDOWN_RANGE",(function(){var o=t.getContentSearcherOfCursor(e),i=null,a=null;return null==o||o.forEachTextInlineElement((function(e){if(a&&i)return!0;var t=e.getTextContent();if(0==t[t.length-1].trim().length)return!1;var r=e.getParentBlock().getTextContent();if(r[r.length-1].trim()===n)return!1;if(a||(a=e.getStartPosition().move(t.length)),t[0]==n)i=e.getStartPosition();else for(var o=t.length-1;o>0;o--){if(i)return!0;if(t[o]==n&&0==t[o-1].trim().length)return i=e.getStartPosition().move(o),!0}})),i&&a&&(0,r.createRange)(i,a)}))}var a=o(56,"*","b",!0),l=o(189,"_","i",!0),s=o(192,"~","s",!0),u=o(192,"`","code",!1);t.MarkdownFeatures={markdownBold:a,markdownItalic:l,markdownStrikethru:s,markdownInlineCode:u}},1495:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteFeatures=void 0;var r=n(4548),o=n(6344),i="BLOCKQUOTE",a=[i,"LI","TD","TH"].join(","),l={keys:[8],shouldHandleEvent:function(e,t){var n=u(e,t);return n&&(0,o.isNodeEmpty)(n)&&!n.previousSibling},handleEvent:d},s={keys:[13],shouldHandleEvent:function(e,t){var n=u(e,t);return!e.rawEvent.shiftKey&&n&&(0,o.isNodeEmpty)(n)},handleEvent:function(e,t){return t.addUndoSnapshot((function(){return d(e,t)}),void 0,!0)}};function u(e,t){return(0,o.cacheGetEventData)(e,"QUOTE_CHILD",(function(){var e=t.getElementAtCursor(a);if(e&&(0,o.getTagOfNode)(e)==i){var n=t.getFocusedPosition(),r=n&&t.getBlockElementAtNode(n.normalize().node);if(r){var l=r.getStartNode()==e?r.getStartNode():r.collapseToSingleElement();return(0,o.isNodeEmpty)(l)?l:null}}return null}))}function d(e,t){t.addUndoSnapshot((function(){var n=u(e,t);if(n){(0,o.getTagOfNode)(n)==i&&(n=(0,o.wrap)((0,o.toArray)(n.childNodes)));var a=(0,o.splitBalancedNodeRange)(n),l=!!a&&c(a),s=a&&(0,o.unwrap)(a);t.select(n,0),l&&((0,o.safeInstanceOf)(s,"HTMLLIElement")&&s.style.removeProperty("color"),(0,r.clearFormat)(t))}})),e.rawEvent.preventDefault()}var c=function(e){return!!(e&&(0,o.safeInstanceOf)(e,"HTMLQuoteElement")&&e.style.borderLeft&&e.style.borderColor&&e.style.paddingLeft&&e.style.color)};t.QuoteFeatures={unquoteWhenBackspaceOnEmptyFirstLine:l,unquoteWhenEnterOnEmptyLine:s}},9187:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShortcutFeatures=void 0;var r=n(6344),o=n(4548);function i(e,t,n,r){return void 0===r&&(r=!1),r?null:{winKey:e,macKey:t,action:n}}var a=[i(4162,8258,o.toggleBold),i(4169,8265,o.toggleItalic),i(4181,8277,o.toggleUnderline),i(4128,8224,o.clearFormat),i(4186,8282,(function(e){return e.undo()})),i(26,26,(function(e){return e.undo()}),r.Browser.isMac),i(4185,24666,(function(e){return e.redo()})),i(4286,8382,o.toggleBullet),i(4287,8383,o.toggleNumbering),i(20670,24766,(function(e){return(0,o.changeFontSize)(e,0)})),i(20668,24764,(function(e){return(0,o.changeFontSize)(e,1)}))].filter((function(e){return!!e})),l={allowFunctionKeys:!0,keys:[66,73,85,89,90,188,190,191,32,8],shouldHandleEvent:s,handleEvent:function(e,t){var n=s(e);n&&(n.action(t),e.rawEvent.preventDefault(),e.rawEvent.stopPropagation())}};function s(e){return(0,r.cacheGetEventData)(e,"DEFAULT_SHORT_COMMAND",(function(){var t=e.rawEvent,n=0!=e.eventType||t.getModifierState("AltGraph")?0:t.which|(t.metaKey&&8192)|(t.shiftKey&&16384)|(t.ctrlKey&&4096)|(t.altKey&&18);return n&&a.filter((function(e){return(r.Browser.isMac?e.macKey:e.winKey)==n}))[0]}))}t.ShortcutFeatures={defaultShortcut:l}},2828:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StructuredNodeFeatures=void 0;var r=n(6344),o={TD:"TABLE",TH:"TABLE",LI:"OL,UL"},i=(0,r.getObjectKeys)(o).join(","),a={keys:[13],shouldHandleEvent:l,handleEvent:function(e,t){var n=l(e,t),o=(0,r.createElement)(1,t.getDocument());t.addUndoSnapshot((function(){var e;null===(e=null==n?void 0:n.parentNode)||void 0===e||e.insertBefore(o,n),"TABLE"==(0,r.getTagOfNode)(n)&&t.select(new r.Position(o,0).normalize())})),e.rawEvent.preventDefault()},defaultDisabled:!0};function l(e,t){return(0,r.cacheGetEventData)(e,"FIRST_STRUCTURE",(function(){var n=e.rawEvent.shiftKey?null:t.getElementAtCursor(i);if(n){var a=t.getSelectionRange();if(a&&a.collapsed&&(0,r.isPositionAtBeginningOf)(r.Position.getStart(a),n)&&!t.getBodyTraverser(n).getPreviousBlockElement())return t.getElementAtCursor(o[(0,r.getTagOfNode)(n)])}return null}))}t.StructuredNodeFeatures={insertLineBeforeStructuredNodeFeature:a}},4683:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableFeatures=void 0;var r=n(4548),o=n(6344),i={keys:[9],shouldHandleEvent:function(e,t){return u(e,t)&&!d(e,t)},handleEvent:function(e,t){var n,i,a,l=e.rawEvent.shiftKey,s=u(e,t);if(s){for(var d=c(e,s),f=l?-1:1,p=null!==(n=d.row)&&void 0!==n?n:0,v=(null!==(i=d.col)&&void 0!==i?i:0)+f;;v+=f){var h=null!==(a=d.cells)&&void 0!==a?a:[];if(v<0||v>=h[p].length){if((p+=f)<0){t.select(d.table,-2);break}if(p>=h.length){(0,r.editTable)(t,1);break}v=l?h[p].length-1:0}var g=d.getCell(p,v);if(g.td){var m=new o.Position(g.td,0).normalize();t.select(m);break}}e.rawEvent.preventDefault()}}},a={keys:[9],shouldHandleEvent:function(e,t){return u(e,t)&&d(e,t)},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var n=e.rawEvent.shiftKey,o=t.getSelectionRangeEx(),i=u(e,t);if(i){var a=c(e,i);n&&t.getElementAtCursor("blockquote",a.table,e)?(0,r.setIndentation)(t,1):n||(0,r.setIndentation)(t,0),o.coordinates&&t.select(o.table,o.coordinates)}}))}},l={keys:[38,40],shouldHandleEvent:function(e,t){return u(e,t)&&!d(e,t)},handleEvent:function(e,t){var n,r,i,a=u(e,t);if(a){var l=new o.VTable(a),s=38==e.rawEvent.which,d=s?-1:1,c=e.rawEvent.shiftKey,f=null===(n=t.getDocument().defaultView)||void 0===n?void 0:n.getSelection(),p=null;if(f){for(var v=f.anchorNode,h=f.anchorOffset,g=null!==(r=l.row)&&void 0!==r?r:0;g>=0&&l.cells&&g{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextFeatures=void 0;var r=n(4548),o=n(6344),i={keys:[9],shouldHandleEvent:function(e,t){if(t.isFeatureEnabled("TabKeyTextFeatures")&&!e.rawEvent.shiftKey){var n=t.getDocument().activeElement,r=t.getElementAtCursor("LI,TABLE",void 0,e),i=t.getElementAtCursor((0,o.getEntitySelector)(),void 0,e);return!r&&(i?i.isContentEditable:n.isContentEditable)}return!1},handleEvent:function(e,t){var n=t.getSelectionRangeEx();0==n.type&&(t.addUndoSnapshot((function(){if(n.areAllCollapsed)u(t,e);else{var i=n.ranges,a=i[0];if(l(t,a))(0,r.setIndentation)(t,0);else{var s=(0,o.createRange)(a.startContainer,a.startOffset);i.forEach((function(e){return e.deleteContents()})),t.select(s),u(t,e)}}})),e.rawEvent.preventDefault())}},a={keys:[9],shouldHandleEvent:function(e,t){if(e.rawEvent.shiftKey&&t.isFeatureEnabled("TabKeyTextFeatures")){var n=t.getSelectionRangeEx();return 0==n.type&&!n.areAllCollapsed&&t.getElementAtCursor("blockquote",void 0,e)&&!t.getElementAtCursor("LI,TABLE",void 0,e)&&l(t,n.ranges[0])}return!1},handleEvent:function(e,t){t.addUndoSnapshot((function(){return(0,r.setIndentation)(t,1)})),e.rawEvent.preventDefault()}};function l(e,t){var n=!1,r=o.Position.getStart(t),i=o.Position.getEnd(t),a=e.getBlockElementAtNode(r.node),l=e.getBlockElementAtNode(i.node);if(!a||!l)return!1;if(a.equals(l)){var u=new o.Position(a.getStartNode(),0),d=new o.Position(a.getEndNode(),-1),c=(0,o.createRange)(u,o.Position.getStart(t)),f=(0,o.createRange)(o.Position.getEnd(t),d);return!n&&s(c)&&s(f)&&(n=!0),n}return!0}function s(e){return""==e.toString()&&0==(0,o.queryElements)(e.commonAncestorContainer,"img,table,ul,ol",null,2,e).length}function u(e,t){var n=e.getDocument().createElement("span"),r=e.getContentSearcherOfCursor(t);if(r){for(var i=6-r.getSubStringBefore(Number.MAX_SAFE_INTEGER).length%6,a=null,l="",s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(7539),i=n(7167),a=n(4397),l=n(7018),s=n(57),u=n(1495),d=n(9187),c=n(2828),f=n(4683),p=n(3171),v=n(2056),h=(0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)({},l.ListFeatures),u.QuoteFeatures),f.TableFeatures),c.StructuredNodeFeatures),o.AutoLinkFeatures),d.ShortcutFeatures),i.CursorFeatures),s.MarkdownFeatures),a.EntityFeatures),p.TextFeatures),v.CodeFeatures);t.default=function(){return h}},9025:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAllFeatures=t.ContentEdit=void 0;var r=n(678);Object.defineProperty(t,"ContentEdit",{enumerable:!0,get:function(){return r.default}});var o=n(692);Object.defineProperty(t,"getAllFeatures",{enumerable:!0,get:function(){return o.default}})},4239:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.toLocaleLowerCase();if(t){var n=t.length-1;return 26*n+t.charCodeAt(n)-96}return null}},3279:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={"*":1,"-":2,"--":3,"->":5,"--\x3e":8,"=>":6,">":4,"—":7};t.default=function(e){var t=e.trim();return n[t]||null}},1892:(e,t,n)=>{"use strict";var r,o,i,a,l,s;Object.defineProperty(t,"__esModule",{value:!0});var u,d,c=n(4239);!function(e){e[e.Decimal=1]="Decimal",e[e.LowerAlpha=2]="LowerAlpha",e[e.UpperAlpha=3]="UpperAlpha",e[e.LowerRoman=4]="LowerRoman",e[e.UpperRoman=5]="UpperRoman"}(u||(u={})),function(e){e[e.Dot=1]="Dot",e[e.Dash=2]="Dash",e[e.Parenthesis=3]="Parenthesis",e[e.DoubleParenthesis=4]="DoubleParenthesis"}(d||(d={}));var f={".":1,"-":2,")":3},p=[13,16,15,14],v=[17,20,19,18],h=["1","a","A","I","i"],g=["i","v","x","l","c","d","m"],m=["I","V","X","L","C","D","M"],y=((r={})[1]=function(e){return T[e]||null},r[2]=function(e){return S[e]||null},r[3]=function(e){return C[e]||null},r[4]=function(e){return E[e]||null},r[5]=function(e){return b[e]||null},r),b=((o={})[1]=17,o[2]=20,o[3]=18,o[4]=19,o),E=((i={})[1]=13,i[2]=16,i[3]=14,i[4]=15,i),C=((a={})[1]=9,a[2]=12,a[3]=10,a[4]=11,a),S=((l={})[1]=5,l[2]=8,l[3]=6,l[4]=7,l),T=((s={})[1]=1,s[2]=2,s[3]=3,s[4]=4,s);t.default=function(e,t,n){var r,o=e.trim(),i="("===o[0]&&")"===o[o.length-1],a=i?o.slice(1,-1):o.slice(0,-1),l=parseInt(a),s=isNaN(l)?(0,c.default)(a):l;return!s||s<1||t&&s>1&&(t.length<1&&h.indexOf(a)<0||(null==t?void 0:t.length)>0&&!(null===(r=t[t.length-1])||void 0===r?void 0:r.canAppendAtCursor(s)))?null:function(e){return Number(e)||/^[A-Za-z\s]*$/.test(e)}(a)?function(e,t,n){var r=t?4:f[e[e.length-1]];if(r){var o=function(e,t){if(!isNaN(parseInt(e)))return 1;if(/[a-z]+/g.test(e)){if(null!=t&&p.indexOf(t)>-1&&g.indexOf(e[0])>-1||!t&&"i"===e)return 4;if(t||!t&&"a"===e)return 2}else if(/[A-Z]+/g.test(e)){if(null!=t&&v.indexOf(t)>-1&&m.indexOf(e[0])>-1||!t&&"I"===e)return 5;if(t||!t&&"A"===e)return 3}}(t?e.slice(1,-1):e.slice(0,-1),n);return o?y[o](r):null}return null}(o,i,n):null}},5713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e){var t=this;this.options=e,this.container=null,this.editor=null,this.isMenuShowing=!1,this.onDismiss=function(){var e,n;t.container&&t.isMenuShowing&&(null===(n=(e=t.options).dismiss)||void 0===n||n.call(e,t.container),t.isMenuShowing=!1)}}return e.prototype.getName=function(){return"ContextMenu"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){var e;this.onDismiss(),(null===(e=this.container)||void 0===e?void 0:e.parentNode)&&(this.container.parentNode.removeChild(this.container),this.container=null),this.editor=null},e.prototype.onPluginEvent=function(e){if(16==e.eventType&&e.items.length>0){var t=e.rawEvent,n=e.items;this.onDismiss(),this.options.allowDefaultMenu||t.preventDefault(),this.initContainer(t.pageX,t.pageY)&&(this.options.render(this.container,n,this.onDismiss),this.isMenuShowing=!0)}},e.prototype.initContainer=function(e,t){var n,o;return!this.container&&this.editor&&(this.container=(0,r.createElement)(5,this.editor.getDocument()),this.editor.getDocument().body.appendChild(this.container)),null===(n=this.container)||void 0===n||n.style.setProperty("left",e+"px"),null===(o=this.container)||void 0===o||o.style.setProperty("top",t+"px"),!!this.container},e}();t.default=o},936:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextMenu=void 0;var r=n(5713);Object.defineProperty(t,"ContextMenu",{enumerable:!0,get:function(){return r.default}})},2522:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e,t,n,r){return{sourceString:e,replacementHTML:t,matchSourceCaseSensitive:n,shouldReplace:r}},i=[o(":)","🙂",!0),o(";)","😉",!0),o(":O","😲",!0),o(":o","😯",!0),o("<3","❤️",!0)],a=function(){function e(e){void 0===e&&(e=i),this.longestReplacementLength=null,this.editor=null,this.replacements=null,this.replacementEndCharacters=null,this.updateReplacements(e)}return e.prototype.updateReplacements=function(e){var t;this.replacements=e,this.longestReplacementLength=(t=this.replacements,Math.max.apply(null,t.map((function(e){return e.sourceString.length})))),this.replacementEndCharacters=function(e){var t,n,o=new Set;try{for(var i=(0,r.__values)(e),a=i.next();!a.done;a=i.next()){var l=a.value,s=l.sourceString;if(0!=s.length){var u=s[s.length-1];l.matchSourceCaseSensitive?o.add(u):(o.add(u.toLocaleLowerCase()),o.add(u.toLocaleUpperCase()))}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return o}(this.replacements)},e.prototype.getName=function(){return"CustomReplace"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){var t,n=this;if(3==e.eventType&&this.editor&&!this.editor.isInIME()&&e.rawEvent.data&&(null===(t=this.replacementEndCharacters)||void 0===t?void 0:t.has(e.rawEvent.data))){var r=this.editor.getContentSearcherOfCursor(e);if(r&&null!=this.longestReplacementLength){var o=r.getSubStringBefore(this.longestReplacementLength),i=this.getMatchingReplacement(o);if(i&&(!i.shouldReplace||!r||i.shouldReplace(i,r.getWordBefore(),this.editor))){var a=r.getSubStringBefore(i.sourceString.length),l=r.getRangeFromText(a,!0),s=this.editor.getDocument().createElement("span");s.innerHTML=this.editor.getTrustedHTMLHandler()(i.replacementHTML);var u=1==s.childNodes.length?s.childNodes[0]:s;l&&this.editor.addUndoSnapshot((function(){var e;l.deleteContents(),l.insertNode(u),null===(e=n.editor)||void 0===e||e.select(u,-1)}),void 0,!0)}}}},e.prototype.getMatchingReplacement=function(e){var t,n;if(0==e.length||!this.replacements)return null;var o=e.replace(/\s/g," "),i=o.toLocaleLowerCase();try{for(var a=(0,r.__values)(this.replacements),l=a.next();!l.done;l=a.next()){var s=l.value,u=(0,r.__read)(s.matchSourceCaseSensitive?[o,s.sourceString]:[i,s.sourceString.toLocaleLowerCase()],2),d=u[0],c=u[1];if(d.substring(d.length-c.length)==c)return s}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return null},e}();t.default=a},7030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CustomReplace=void 0;var r=n(2522);Object.defineProperty(t,"CustomReplace",{enumerable:!0,get:function(){return r.default}})},7578:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4548),o=n(6344),i=function(){function e(){var e=this;this.chains=null,this.expectedChangeSource=null,this.editor=null,this.disposer=null,this.onDrop=function(){e.cacheListChains("Drop")}}return e.prototype.getName=function(){return"CutPasteListChain"},e.prototype.initialize=function(e){this.editor=e,this.disposer=this.editor.addDomEventHandler("drop",this.onDrop)},e.prototype.dispose=function(){var e;null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 9:e.isCut&&this.cacheListChains("Cut");break;case 10:this.cacheListChains("Paste");break;case 7:this.chains&&this.chains.length>0&&this.expectedChangeSource==e.source&&this.editor&&((0,r.commitListChains)(this.editor,this.chains),this.chains=null,this.expectedChangeSource=null)}},e.prototype.cacheListChains=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getSelectedRegions();n&&(this.chains=o.VListChain.createListChains(n),this.expectedChangeSource=e)},e}();t.default=i},8854:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CutPasteListChain=void 0;var r=n(7578);Object.defineProperty(t,"CutPasteListChain",{enumerable:!0,get:function(){return r.default}})},4039:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e,t,n){var r=this;void 0===e&&(e=function(e){return e}),this.getTooltipCallback=e,this.target=t,this.onLinkClick=n,this.originalHref=null,this.trackedLink=null,this.editor=null,this.disposer=null,this.onMouse=function(e){var t,n,o=null===(t=r.editor)||void 0===t?void 0:t.getElementAtCursor("a[href]",e.target),i=o&&r.tryGetHref(o);i&&(null===(n=r.editor)||void 0===n||n.setEditorDomAttribute("title","mouseover"==e.type?r.getTooltipCallback(i,o):null))},this.onBlur=function(e){r.trackedLink&&r.updateLinkHrefIfShouldUpdate(),r.resetLinkTracking()}}return e.prototype.getName=function(){return"Hyperlink"},e.prototype.initialize=function(e){this.editor=e,this.disposer=e.addDomEventHandler({mouseover:this.onMouse,mouseout:this.onMouse,blur:this.onBlur})},e.prototype.dispose=function(){this.disposer&&(this.disposer(),this.disposer=null),this.editor=null},e.prototype.onPluginEvent=function(e){var t,n,o;if(6==e.eventType||2==e.eventType&&(!this.isContentEditValue(e.rawEvent)||32==e.rawEvent.which)||7==e.eventType){var i,a=(i=null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor("A[href]",void 0,e))&&i!==this.trackedLink||2==e.eventType||7==e.eventType;7==e.eventType&&"Keyboard"==e.source&&this.trackedLink!=i&&i&&(this.trackedLink=i),this.trackedLink&&(a||this.tryGetHref(this.trackedLink)!==this.originalHref)&&(a&&this.updateLinkHrefIfShouldUpdate(),this.resetLinkTracking()),!this.trackedLink&&i&&this.doesLinkDisplayMatchHref(i)&&(this.trackedLink=i,this.originalHref=this.tryGetHref(i))}if(6==e.eventType&&(i=null===(n=this.editor)||void 0===n?void 0:n.getElementAtCursor("A",e.rawEvent.srcElement))){if(this.onLinkClick&&!1!==this.onLinkClick(i,e.rawEvent))return;var l;if((l=this.tryGetHref(i))&&(0,r.isCtrlOrMetaPressed)(e.rawEvent)&&0===e.rawEvent.button){e.rawEvent.preventDefault();try{var s=this.target||"_blank",u=null===(o=this.editor)||void 0===o?void 0:o.getDocument().defaultView;null==u||u.open(l,s)}catch(e){}}}},e.prototype.tryGetHref=function(e){try{return e?e.href:null}catch(e){return null}},e.prototype.isContentEditValue=function(e){return(0,r.isCharacterValue)(e)||8==e.which||46==e.which},e.prototype.updateLinkHrefIfShouldUpdate=function(){this.trackedLink&&!this.doesLinkDisplayMatchHref(this.trackedLink)&&this.updateLinkHref()},e.prototype.resetLinkTracking=function(){this.trackedLink=null,this.originalHref=""},e.prototype.doesLinkDisplayMatchHref=function(e){if(e){var t=e.innerText.trim().replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("^(?:https?:\\/\\/)?"+t+"\\/?","i"),r=this.tryGetHref(e);if(null!==r)return n.test(r)}return!1},e.prototype.updateLinkHref=function(){var e,t=this;if(this.trackedLink){var n=(0,r.matchLink)(this.trackedLink.innerText.trim());null!==n&&(null===(e=this.editor)||void 0===e||e.addUndoSnapshot((function(){t.trackedLink.href=n.normalizedUrl})))}},e}();t.default=o},5061:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HyperLink=void 0;var r=n(4039);Object.defineProperty(t,"HyperLink",{enumerable:!0,get:function(){return r.default}})},9770:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o=n(7582),i=n(7058),a=n(971),l=n(4296),s=n(2448),u=n(2627),d=n(8755),c=n(330),f=n(2110),p=n(6147),v=n(6344),h=n(1400),g=Math.PI,m=8,y=2*g/m,b=["nw","n","ne","e","se","s","sw","w"],E={borderColor:"#DB626C",minWidth:10,minHeight:10,preserveRatio:!1,minRotateDeg:5,imageSelector:"img",rotateIconHTML:"",disableCrop:!1,disableRotate:!1,disableSideResize:!1,onSelectState:7},C=((r={})[1]=h.getCornerResizeHTML,r[2]=h.getSideResizeHTML,r[4]=c.getRotateHTML,r[8]=u.getCropHTML,r),S=function(){function e(e,t){var n=this;this.onShowResizeHandle=t,this.editor=null,this.disposer=null,this.image=null,this.clonedImage=null,this.wrapper=null,this.editInfo=null,this.lastSrc=null,this.dndHelpers=[],this.wasResized=!1,this.shadowSpan=null,this.isCropping=!1,this.pngSource=null,this.onBlur=function(){n.setEditingImage(null,!1)},this.removeWrapper=function(){n.shadowSpan&&(0,v.unwrap)(n.shadowSpan),n.wrapper=null,n.shadowSpan=null},this.updateWrapper=function(e){var t,r,o,i=n.wrapper;if(i&&n.editInfo&&n.image&&n.clonedImage&&n.options&&(null===(t=n.shadowSpan)||void 0===t?void 0:t.parentElement)){var a=_(i,"r_cropC"),l=_(i,"r_cropO"),u=_(i,"r_resizeH"),d=_(i,"r_rotateC")[0],f=_(i,"r_rotateH")[0],p=_(i,"r_cropH");n.isCropping=1==a.length&&4==l.length;var g=n.editInfo,m=g.angleRad,y=g.bottomPercent,b=g.leftPercent,E=g.rightPercent,C=g.topPercent,S=g.flippedHorizontal,O=g.flippedVertical,M=(0,s.default)(n.editInfo,n.isCropping),A=M.targetWidth,R=M.targetHeight,I=M.originalWidth,L=M.originalHeight,N=M.visibleWidth,x=M.visibleHeight,k=(A-N)/2,j=(R-x)/2,B=I*b,F=I*E,H=L*C,z=L*y;if(i.style.margin=j+"px "+k+"px",i.style.transform="rotate("+m+"rad)",function(e,t,n,r){if(t.style.borderStyle){var o=t.style.borderWidth?2*parseInt(t.style.borderWidth):2;return e.style.width=P(n+o),void(e.style.height=P(r+o))}e.style.width=P(n),e.style.height=P(r)}(i,n.image,N,x),i.style.textAlign=(o=n.shadowSpan.parentElement,(0,v.safeInstanceOf)(o,"HTMLElement")&&"rtl"==(0,v.getComputedStyle)(o,"direction")?"right":"left"),n.clonedImage.style.width=P(I),n.clonedImage.style.height=P(L),function(e,t,n){e&&(e.style.transform="scale("+(t?-1:1)+", "+(n?-1:1)+")")}(n.clonedImage.parentElement,S,O),n.isCropping)T(a[0],B,H,F,z,void 0,void 0),T(l[0],0,0,F,void 0,void 0,H),T(l[1],void 0,0,0,z,F,void 0),T(l[2],B,void 0,0,0,void 0,z),T(l[3],0,H,void 0,0,B,void 0),w(p,m);else{if(n.clonedImage.style.margin=-H+"px 0 0 "+-B+"px","r_resizeH"==(null==e?void 0:e.elementClass)){var U=i.clientWidth,K=i.clientHeight;n.wasResized=!0,(0,h.doubleCheckResize)(n.editInfo,n.options.preserveRatio||!1,U,K),n.updateWrapper()}var W=null===(r=n.editor)||void 0===r?void 0:r.getVisibleViewport(),V=D(A,R);f&&d&&W&&(0,c.updateRotateHandleState)(W,m,i,d,f,V),function(e,t){e.forEach((function(e){var n=e.dataset,r=n.y,o=n.x,i=["n","s","e","w"].indexOf((null!=r?r:"")+(null!=o?o:""))>-1;e.style.display=i&&t?"none":""}))}(u,V),w(u,m)}}},this.options=(0,o.__assign)((0,o.__assign)({},E),e||{}),this.allowedOperations=1|(this.options.disableCrop?0:8)|(this.options.disableRotate?0:4)|(this.options.disableSideResize?0:2)}return e.prototype.getName=function(){return"ImageEdit"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=e.addDomEventHandler({blur:function(){return t.onBlur()},dragstart:function(e){t.image&&e.preventDefault()}})},e.prototype.dispose=function(){var e;this.clearDndHelpers(),null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){var t,n;switch(e.eventType){case 22:e.selectionRangeEx&&2===e.selectionRangeEx.type&&this.options&&void 0!==this.options.onSelectState&&this.setEditingImage(e.selectionRangeEx.image,this.options.onSelectState);break;case 5:var r=e.rawEvent.target,o=e.rawEvent.button;(this.shadowSpan!==r||this.shadowSpan===r&&0!==o||this.isCropping)&&this.setEditingImage(null);break;case 6:this.image&&this.shadowSpan&&(null===(t=this.editor)||void 0===t||t.select(this.image));break;case 0:this.setEditingImage(null);break;case 7:case 12:this.removeWrapper();break;case 8:(null===(n=this.options)||void 0===n?void 0:n.imageSelector)&&(0,v.toArray)(e.clonedRoot.querySelectorAll(this.options.imageSelector)).forEach((function(e){(0,d.deleteEditInfo)(e)}))}},e.prototype.isOperationAllowed=function(e){return!!(this.allowedOperations&e)},e.prototype.setEditingImage=function(e,t){var n=this,r="number"==typeof t?t:0,l="number"!=typeof t&&!!t;!e&&this.image&&this.editor&&this.editInfo&&this.lastSrc&&this.clonedImage&&(this.clearDndHelpers(),this.pngSource&&(this.clonedImage.src=this.editInfo.src),(0,i.default)(this.editor,this.image,this.editInfo,this.lastSrc,this.wasResized||this.isCropping,this.clonedImage),this.removeWrapper(),this.editor.addUndoSnapshot((function(){return n.image}),"ImageResize"),l&&this.editor.select(this.image),this.pngSource=null,this.image=null,this.editInfo=null,this.lastSrc=null,this.clonedImage=null,this.isCropping=!1),!this.image&&(null==e?void 0:e.isContentEditable)&&this.editor&&(this.editor.addUndoSnapshot(),this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e),this.pngSource=(0,p.tryToConvertGifToPng)(this.editInfo),this.wasResized=function(e){var t=e.width,n=e.height,r=e.style;return!(""!==r.maxWidth&&"initial"!==r.maxWidth&&"auto"!==r.maxWidth||!(O(r.height)||O(r.width)||O(t)||O(n)))}(this.image),r=((0,a.default)(e)?r:3)&this.allowedOperations,this.createWrapper(r),this.updateWrapper(),this.dndHelpers=(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(this.createDndHelpers("r_resizeH",h.Resizer)),!1),(0,o.__read)(this.createDndHelpers("r_rotateH",c.Rotator)),!1),(0,o.__read)(this.createDndHelpers("r_cropH",u.Cropper)),!1),(0,o.__read)(this.createDndHelpers("r_cropC",u.Cropper)),!1),this.editor.select(this.image))},e.prototype.flipImage=function(e,t){var n;this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e);var r=this.editInfo.angleRad;r>=Math.PI/2&&r<3*Math.PI/4||r<=-Math.PI/2&&r>-3*Math.PI/4?"horizontal"===t?this.editInfo.flippedVertical=!this.editInfo.flippedVertical:this.editInfo.flippedHorizontal=!this.editInfo.flippedHorizontal:"vertical"===t?this.editInfo.flippedVertical=!this.editInfo.flippedVertical:this.editInfo.flippedHorizontal=!this.editInfo.flippedHorizontal,this.createWrapper(4),this.updateWrapper(),this.setEditingImage(null),null===(n=this.editor)||void 0===n||n.select(e)},e.prototype.rotateImage=function(e,t){var n;this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e),this.editInfo.angleRad=this.editInfo.angleRad+t,this.createWrapper(4),this.updateWrapper(),this.setEditingImage(null),null===(n=this.editor)||void 0===n||n.select(e)},e.prototype.createWrapper=function(e){var t,n,r,o,i,a=this;if(this.image&&this.editor&&this.options&&this.editInfo){this.clonedImage=this.image.cloneNode(!0),this.clonedImage.removeAttribute("id"),this.clonedImage.style.removeProperty("max-width"),this.clonedImage.style.width=this.editInfo.widthPx+"px",this.clonedImage.style.height=this.editInfo.heightPx+"px",this.wrapper=(0,v.createElement)(6,this.image.ownerDocument),null===(n=null===(t=this.wrapper)||void 0===t?void 0:t.firstChild)||void 0===n||n.appendChild(this.clonedImage),this.wrapper.style.display=v.Browser.isSafari?"inline-block":"inline-flex",this.lastSrc=this.image.getAttribute("src"),this.clonedImage&&(this.clonedImage.src=null!==(r=this.pngSource)&&void 0!==r?r:this.editInfo.src,this.clonedImage.style.position="absolute");var l={borderColor:(o=this.options.borderColor,i=this.editor.isDarkMode(),"string"==typeof o?o.trim():i?o.darkModeColor.trim():o.lightModeColor.trim()),rotateIconHTML:this.options.rotateIconHTML,rotateHandleBackColor:this.editor.isDarkMode()?"#333":"white",isSmallImage:D(this.editInfo.widthPx,this.editInfo.heightPx)},s=[(0,h.getResizeBordersHTML)(l)];(0,v.getObjectKeys)(C).forEach((function(t){var n=C[t](l,a.onShowResizeHandle);(e&t)==t&&n&&(0,v.arrayPush)(s,n)})),s.forEach((function(e){var t=(0,v.createElement)(e,a.image.ownerDocument);t&&a.wrapper&&a.wrapper.appendChild(t)})),this.insertImageWrapper(this.wrapper)}},e.prototype.insertImageWrapper=function(e){if(this.image&&(this.shadowSpan=(0,v.wrap)(this.image,"span"),this.shadowSpan)){var t=this.shadowSpan.attachShadow({mode:"open"});this.shadowSpan.style.verticalAlign="bottom",this.shadowSpan.style.fontSize="24px",t.appendChild(e)}},e.prototype.createDndHelpers=function(e,t){var n=this,r=this.wrapper;return r&&this.editInfo?_(r,e).map((function(r){return new l.default(r,{editInfo:n.editInfo,options:n.options,elementClass:e,x:r.dataset.x,y:r.dataset.y},n.updateWrapper,t,n.editor?n.editor.getZoomScale():1)})):[]},e.prototype.clearDndHelpers=function(){var e;null===(e=this.dndHelpers)||void 0===e||e.forEach((function(e){return e.dispose()})),this.dndHelpers=[]},e}();function T(e,t,n,r,o,i,a){e.style.left=void 0!==t?P(t):e.style.left,e.style.top=void 0!==n?P(n):e.style.top,e.style.right=void 0!==r?P(r):e.style.right,e.style.bottom=void 0!==o?P(o):e.style.bottom,e.style.width=void 0!==i?P(i):e.style.width,e.style.height=void 0!==a?P(a):e.style.height}function P(e){return e+"px"}function _(e,t){return(0,v.toArray)(e.querySelectorAll("."+t))}function w(e,t){e.forEach((function(e){var n=e.dataset,r=n.y,o=n.x;e.style.cursor=function(e,t,n){void 0===t&&(t=""),void 0===n&&(n="");var r=function(e){var t=Math.round(e/y)%m;return t<0?t+m:t}(e),o=t+n,i=b.indexOf(o),a=i>=0&&i+r;return a?b[a%m]:""}(t,r,o)+"-resize"}))}function O(e){var t="string"==typeof e?parseInt(e):e;return!isNaN(t)}function D(e,t){return!!(e&&t&&(e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!e)return!1;try{var t=e.ownerDocument.createElement("canvas");t.width=10,t.height=10;var n=t.getContext("2d");return!!n&&(n.drawImage(e,0,0),n.getImageData(0,0,1,1),!0)}catch(e){return!1}}},8318:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2463),o=n(8755);t.default=function(e,t){var n=(0,o.getEditInfoFromImage)(e);if(n){var i=(0,r.default)(n,t),a=i.width,l=i.height;return Math.round(a)==Math.round(n.widthPx)&&Math.round(l)==Math.round(n.heightPx)}return!1}},5801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8755);t.default=function(e,t){e.addUndoSnapshot((function(){t.style.width="",t.style.height="",t.style.maxWidth="100%",t.removeAttribute("width"),t.removeAttribute("height"),(0,r.deleteEditInfo)(t)}),"ImageResize")}},470:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7058),o=n(2463),i=n(8318),a=n(8755);t.default=function(e,t,n,l,s){var u,d,c,f=(0,a.getEditInfoFromImage)(t);(0,i.default)(t,n)||(u=t,d=t.src,c=function(){if(!e.isDisposed()&&e.contains(t)&&f){var i=t.getAttribute("src"),a=(0,o.default)(f,n),u=a.width,d=a.height;f.widthPx=Math.max(u,l),f.heightPx=Math.max(d,s),e.addUndoSnapshot((function(){(0,r.default)(e,t,f,i||"",!0)}),"ImageResize"),e.select(t)}},u.onload=function(){u.onload=null,u.onerror=null,c()},u.onerror=function(){u.onload=null,u.onerror=null,c()},u.src=d)}},2110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MIN_HEIGHT_WIDTH=t.YS_CROP=t.XS_CROP=t.CROP_HANDLE_WIDTH=t.CROP_HANDLE_SIZE=t.ROTATE_HANDLE_TOP=t.ROTATE_WIDTH=t.Ys=t.Xs=t.ROTATION=t.ROTATE_ICON_MARGIN=t.DEFAULT_ROTATE_HANDLE_HEIGHT=t.DEG_PER_RAD=t.ROTATE_GAP=t.ROTATE_SIZE=t.RESIZE_HANDLE_MARGIN=t.RESIZE_HANDLE_SIZE=void 0,t.RESIZE_HANDLE_SIZE=10,t.RESIZE_HANDLE_MARGIN=6,t.ROTATE_SIZE=32,t.ROTATE_GAP=15,t.DEG_PER_RAD=180/Math.PI,t.DEFAULT_ROTATE_HANDLE_HEIGHT=t.ROTATE_SIZE/2+t.ROTATE_GAP,t.ROTATE_ICON_MARGIN=8,t.ROTATION={sw:0,nw:90,ne:180,se:270},t.Xs=["w","","e"],t.Ys=["s","","n"],t.ROTATE_WIDTH=1,t.ROTATE_HANDLE_TOP=t.ROTATE_GAP+t.RESIZE_HANDLE_MARGIN,t.CROP_HANDLE_SIZE=22,t.CROP_HANDLE_WIDTH=7,t.XS_CROP=["w","e"],t.YS_CROP=["s","n"],t.MIN_HEIGHT_WIDTH=3*t.RESIZE_HANDLE_SIZE+2*t.RESIZE_HANDLE_MARGIN},7058:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6249),o=n(4081),i=n(2448),a=n(8755);t.default=function(e,t,n,l,s,u){var d="",c=(0,a.getEditInfoFromImage)(null!=u?u:t),f=(0,r.default)(n,c);switch(f){case 1:d=n.src;break;case 2:d=l;break;case 3:d=(0,o.default)(null!=u?u:t,n)}d!=l&&(d=e.triggerPluginEvent(19,{image:t,originalSrc:n.src,previousSrc:l,newSrc:d}).newSrc),d==n.src?(0,a.deleteEditInfo)(t):(0,a.saveEditInfo)(t,n);var p=(0,i.default)(n),v=p.targetWidth,h=p.targetHeight;t.src=d,(s||3==f)&&(t.width=v,t.height=h,t.style.removeProperty("width"),t.style.removeProperty("height"),t.style.removeProperty("max-width"))}},6249:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageEditInfoState=void 0;var r,o=n(7582),i=["angleRad"],a=["leftPercent","rightPercent","topPercent","bottomPercent"],l=(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(i),!1),(0,o.__read)(a),!1),s=(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(l),!1),(0,o.__read)(["widthPx","heightPx"]),!1);function u(e,t){return Math.abs(e-t)<.001}(r=t.ImageEditInfoState||(t.ImageEditInfoState={}))[r.Invalid=0]="Invalid",r[r.ResizeOnly=1]="ResizeOnly",r[r.SameWithLast=2]="SameWithLast",r[r.FullyChanged=3]="FullyChanged",t.default=function(e,t){return e&&e.src&&!s.some((function(t){return!("number"==typeof e[t])}))?!l.every((function(t){return u(e[t],0)}))||e.flippedHorizontal||e.flippedVertical||t&&(!t||e.angleRad!==t.angleRad)?t&&i.every((function(t){return u(e[t],0)}))&&i.every((function(e){return u(t[e],0)}))&&a.every((function(n){return u(e[n],t[n])}))&&t.flippedHorizontal===e.flippedHorizontal&&t.flippedVertical===e.flippedVertical?2:3:1:0}},8755:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getEditInfoFromImage=t.deleteEditInfo=t.saveEditInfo=void 0;var r=n(6249),o=n(6344);t.saveEditInfo=function(e,t){e&&(0,o.setMetadata)(e,t)},t.deleteEditInfo=function(e){e&&(0,o.removeMetadata)(e)},t.getEditInfoFromImage=function(e){var t=(0,o.getMetadata)(e);return t&&0!=(0,r.default)(t)?t:function(e){return{src:e.getAttribute("src")||"",widthPx:e.clientWidth,heightPx:e.clientHeight,naturalWidth:e.naturalWidth,naturalHeight:e.naturalHeight,leftPercent:0,rightPercent:0,topPercent:0,bottomPercent:0,angleRad:0}}(e)}},4081:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2448);t.default=function(e,t){var n=t.angleRad,o=t.widthPx,i=t.heightPx,a=t.bottomPercent,l=t.leftPercent,s=t.rightPercent,u=t.topPercent,d=t.naturalWidth,c=t.naturalHeight,f=d*(1-l-s),p=c*(1-u-a),v=window.devicePixelRatio||1,h=document.createElement("canvas"),g=(0,r.default)(t),m=g.targetWidth,y=g.targetHeight;h.width=m*v,h.height=y*v;var b=h.getContext("2d");return b&&(b.scale(v,v),b.translate(m/2,y/2),b.rotate(n),b.scale(t.flippedHorizontal?-1:1,t.flippedVertical?-1:1),b.drawImage(e,d*l,c*u,f,p,-o/2,-i/2,o,i)),h.toDataURL("image/png",1)}},2448:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.widthPx,r=e.heightPx,o=e.angleRad,i=n/(1-e.leftPercent-e.rightPercent),a=r/(1-e.topPercent-e.bottomPercent),l=t?i:n,s=t?a:r;return{targetWidth:Math.abs(l*Math.cos(o))+Math.abs(s*Math.sin(o)),targetHeight:Math.abs(l*Math.sin(o))+Math.abs(s*Math.cos(o)),originalWidth:i,originalHeight:a,visibleWidth:l,visibleHeight:s}}},2463:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.naturalWidth,r=e.naturalHeight,o=e.leftPercent,i=e.topPercent;return{width:n*(1-o-e.rightPercent)*t,height:r*(1-i-e.bottomPercent)*t}}},6147:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tryToConvertGifToPng=void 0;var r=n(4081);t.tryToConvertGifToPng=function(e){var t=e.src,n=e.widthPx,o=e.heightPx,i=e.naturalHeight,a=e.naturalWidth;if(t.indexOf(".gif")>-1||t.indexOf("image/gif")>-1)try{var l=document.createElement("img");l.src=t;var s={src:t,widthPx:n,heightPx:o,naturalWidth:a,naturalHeight:i,leftPercent:0,rightPercent:0,topPercent:0,bottomPercent:0,angleRad:0};return(0,r.default)(l,s)}catch(e){return null}return null}},2627:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCropHTML=t.Cropper=void 0;var r=n(7582),o=n(1400),i=n(2110);function a(e,t,n,r,o){var i=n*(1-r)-o,a=n*e+t;return Math.max(Math.min(a,i),0)/n}t.Cropper={onDragStart:function(e){var t=e.editInfo;return(0,r.__assign)({},t)},onDragging:function(e,t,n,i,l){var s,u=e.editInfo,d=e.x,c=e.y,f=e.options;i=(s=(0,r.__read)((0,o.rotateCoordinate)(i,l,u.angleRad),2))[0],l=s[1];var p=u.widthPx,v=u.heightPx,h=u.leftPercent,g=u.rightPercent,m=u.topPercent,y=u.bottomPercent,b=f.minWidth,E=f.minHeight,C=1-h-g,S=1-m-y;if(C>0&&S>0&&void 0!==b&&void 0!==E){var T=p/C,P=v/S,_="e"!=d?a(n.leftPercent,i,T,g,b):h,w="w"!=d?a(n.rightPercent,-i,T,h,b):g,O="s"!=c?a(n.topPercent,l,P,y,E):m,D="n"!=c?a(n.bottomPercent,-l,P,m,E):y;return u.leftPercent=_,u.rightPercent=w,u.topPercent=O,u.bottomPercent=D,u.widthPx=T*(1-_-w),u.heightPx=P*(1-O-D),!0}return!1}},t.getCropHTML=function(){var e={tag:"div",style:"position:absolute;background-color:rgb(0,0,0,0.5);pointer-events:none",className:"r_cropO"},t={tag:"div",style:"position:absolute;overflow:hidden",className:"r_cropC",children:[]};return t&&i.XS_CROP.forEach((function(e){return i.YS_CROP.forEach((function(n){var r;return null===(r=t.children)||void 0===r?void 0:r.push(function(e,t){var n,r="w"==e?"left":"right",o="n"==t?"top":"bottom",a=i.ROTATION[t+e];return{tag:"div",className:"r_cropH",style:"position:absolute;pointer-events:auto;cursor:"+t+e+"-resize;"+r+":0;"+o+":0;width:"+i.CROP_HANDLE_SIZE+"px;height:"+i.CROP_HANDLE_SIZE+"px;transform:rotate("+a+"deg)",dataset:{x:e,y:t},children:(n=[],[0,1].forEach((function(e){return[0,1].forEach((function(t){n.push(function(e,t){return{tag:"div",style:"position:absolute;left:"+e+"px;bottom:"+e+"px;"+(0==t?"right:"+e+"px;height:"+(i.CROP_HANDLE_WIDTH-2*e)+"px;":"top:"+e+"px;width:"+(i.CROP_HANDLE_WIDTH-2*e)+"px;")+";background-color:"+(0==e?"white":"black")}}(e,t))}))})),n)}}(e,n))}))})),[t,e,e,e,e]}},1400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getResizeBordersHTML=t.getSideResizeHTML=t.getCornerResizeHTML=t.doubleCheckResize=t.rotateCoordinate=t.Resizer=void 0;var r,o=n(7582),i=n(2110);function a(e,t,n){if(0==e&&0==t)return[0,0];var r=Math.sqrt(e*e+t*t);return n=Math.atan2(t,e)-n,[r*Math.cos(n),r*Math.sin(n)]}function l(e,t,n,r){var o="w"==e?"left":"right",i="n"==t?"top":"bottom",a=t+e;return""==e&&""==t?null:{tag:"div",style:"position:absolute;"+o+":"+(""==e?"50%":"0px")+";"+i+":"+(""==t?"50%":"0px"),children:[{tag:"div",style:s[r](a,i,o,n),className:"r_resizeH",dataset:{x:e,y:t}}]}}!function(e){e[e.SquareHandles=0]="SquareHandles",e[e.CircularHandlesCorner=1]="CircularHandlesCorner"}(r||(r={})),t.Resizer={onDragStart:function(e){var t=e.editInfo;return(0,o.__assign)({},t)},onDragging:function(e,t,n,r,i){var l,s=e.x,u=e.y,d=e.editInfo,c=e.options,f=n.widthPx>0&&n.heightPx>0?1*n.widthPx/n.heightPx:0;if(r=(l=(0,o.__read)(a(r,i,d.angleRad),2))[0],i=l[1],void 0!==c.minWidth&&void 0!==c.minHeight){var p=""==s,v=""==u,h=!(p||v)&&(c.preserveRatio||t.shiftKey),g=p?n.widthPx:Math.max(n.widthPx+r*("w"==s?-1:1),c.minWidth),m=v?n.heightPx:Math.max(n.heightPx+i*("n"==u?-1:1),c.minHeight);return h&&f>0&&(f>1?(g=m*f)0?o/i:0;n=Math.floor(n),r=Math.floor(r),o=Math.floor(o),i=Math.floor(i),e.widthPx=n,e.heightPx=r,t&&a>0&&(o!==n||i!==r)&&(n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRotateHTML=t.updateRotateHandleState=t.Rotator=void 0;var r=n(7582),o=n(2110);function i(e){var t;return{tag:"svg",namespace:"http://www.w3.org/2000/svg",style:"width:16px;height:16px;margin: "+o.ROTATE_ICON_MARGIN+"px "+o.ROTATE_ICON_MARGIN+"px",children:[{tag:"path",namespace:"http://www.w3.org/2000/svg",attributes:(t={d:"M 10.5,10.0 A 3.8,3.8 0 1 1 6.7,6.3",transform:"matrix(1.1 1.1 -1.1 1.1 11.6 -10.8)"},t["fill-opacity"]="0",t.stroke=e,t)},{tag:"path",namespace:"http://www.w3.org/2000/svg",attributes:{d:"M12.0 3.648l.884-.884.53 2.298-2.298-.53z",stroke:e}}]}}t.Rotator={onDragStart:function(e){var t=e.editInfo;return(0,r.__assign)({},t)},onDragging:function(e,t,n,r,i){var a=e.editInfo,l=e.options,s=a.heightPx/2+o.DEFAULT_ROTATE_HANDLE_HEIGHT,u=s*Math.sin(n.angleRad)+r,d=s*Math.cos(n.angleRad)-i,c=Math.atan2(u,d);if(!t.altKey&&l&&void 0!==l.minRotateDeg){var f=c*o.DEG_PER_RAD;c=Math.round(f/l.minRotateDeg)*l.minRotateDeg/o.DEG_PER_RAD}return a.angleRad!=c&&(a.angleRad=c,!0)}},t.updateRotateHandleState=function(e,t,n,r,i,a){if(a)return r.style.display="none",void(i.style.display="none");r.style.display="",i.style.display="";var l=i.getBoundingClientRect(),s=n.getBoundingClientRect();if(l&&s){var u=Number.MAX_SAFE_INTEGER,d=t*o.DEG_PER_RAD;if(d<45&&d>-45&&s.top-e.top=-100&&s.left-e.left=80&&d<=100&&e.right-s.right=160)&&e.bottom-s.bottom{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resetImage=t.isResizedTo=t.resizeByPercentage=t.canRegenerateImage=t.ImageEdit=void 0;var r=n(9770);Object.defineProperty(t,"ImageEdit",{enumerable:!0,get:function(){return r.default}});var o=n(971);Object.defineProperty(t,"canRegenerateImage",{enumerable:!0,get:function(){return o.default}});var i=n(470);Object.defineProperty(t,"resizeByPercentage",{enumerable:!0,get:function(){return i.default}});var a=n(8318);Object.defineProperty(t,"isResizedTo",{enumerable:!0,get:function(){return a.default}});var l=n(5801);Object.defineProperty(t,"resetImage",{enumerable:!0,get:function(){return l.default}})},8099:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n,r,o,i){return void 0===t&&(t=10),void 0===n&&(n=10),void 0===r&&(r="#DB626C"),void 0===o&&(o=!1),void 0===i&&(i="img"),e.call(this,{minHeight:n,minWidth:t,borderColor:r,preserveRatio:o,imageSelector:i})||this}return(0,r.__extends)(t,e),t.prototype.showResizeHandle=function(e){this.setEditingImage(e,3)},t.prototype.hideResizeHandle=function(e){this.setEditingImage(null,e)},t}(n(9770).default);t.default=o},9835:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageResize=void 0;var r=n(8099);Object.defineProperty(t,"ImageResize",{enumerable:!0,get:function(){return r.default}})},3835:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7401),o=n(9474),i=n(8373),a=n(1820),l=n(2621),s=n(8149),u=n(5155),d=n(9053),c=n(5323),f=n(6344),p=function(){function e(e,t){void 0===e&&(e="SPAN"),void 0===t&&(t=!1),this.unknownTagReplacement=e,this.convertSingleImageBody=t,this.editor=null}return e.prototype.getName=function(){return"Paste"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&10==e.eventType){var t=e.fragment,n=e.sanitizingOption,p=this.editor.getTrustedHTMLHandler();switch((0,f.getPasteSource)(e,this.convertSingleImageBody)){case 0:(0,s.default)(e);break;case 1:case 2:0!==e.pasteType&&2!==e.pasteType||(0,i.default)(e,p);break;case 3:(0,l.default)(e,p);break;case 5:(0,a.default)(t,n);break;case 4:n.additionalTagReplacements["google-sheets-html-origin"]="*";break;case 7:(0,r.default)(e,p);break;case 6:(0,o.default)(t),(0,u.default)(t)}(0,c.default)(n),(0,d.default)(n),function(e){(0,f.chainSanitizerCallback)(e.cssStyleCallbacks,"display",(function(e){return"flex"!=e}))}(n),n.unknownTagReplacement=this.unknownTagReplacement}},e}();t.default=p},9474:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){if(e&&!e.nextSibling&&["OL","UL","MENU"].indexOf((0,r.getTagOfNode)(e))<0){var t=!1;if((0,r.toArray)(e.childNodes).every((function(e){var n;return!(!(0,r.safeInstanceOf)(e,"Text")||(null===(n=e.nodeValue)||void 0===n?void 0:n.trim()))||"LI"==(0,r.getTagOfNode)(e)&&(t=!0,!0)}))&&t)return!0}return!1}t.default=function(e){o(e)?(0,r.wrap)((0,r.toArray)(e.childNodes),"UL"):(0,r.safeInstanceOf)(e.firstChild,"HTMLElement")&&o(e.firstChild)&&(0,r.changeElementTag)(e.firstChild,"UL")}},8373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.excelHandler=void 0;var r=n(6344),o=/<\/\s*td\s*>((?!<\/\s*tr\s*>)[\s\S])*$/i,i=/<\/\s*tr\s*>((?!<\/\s*table\s*>)[\s\S])*$/i,a=/]*>[^<]*/i,l=/]*>[^<]*/i;function s(e,t){if(e.match(o)){var n=t.match(a);e=(n?n[0]:"")+e+""}if(e.match(i)){var r=t.match(l);e=(r?r[0]:"")+e+"
                "}return e}t.default=function(e,t){var n=e.fragment,o=e.sanitizingOption,i=e.htmlBefore,a=e.clipboardData,l=a.html?s(a.html,i):void 0;if(l&&a.html!=l){var u=(new DOMParser).parseFromString(t(l),"text/html");(0,r.moveChildNodes)(n,null==u?void 0:u.body)}var d=n.firstChild;d&&d.childNodes.length>0&&"DIV"==(0,r.getTagOfNode)(d)&&Array.from(d.childNodes).every((function(e){return"META"==(0,r.getTagOfNode)(e)||"TABLE"==(0,r.getTagOfNode)(e)&&e==d.lastChild}))&&d.lastChild&&e.fragment.replaceChildren(d.lastChild),(0,r.chainSanitizerCallback)(o.elementCallbacks,"TD",(function(e){return"none"==e.style.borderStyle&&(e.style.border="solid 1px #d4d4d4"),!0}))},t.excelHandler=s},7401:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){var n=e.fragment,o=e.clipboardData,i=o.html,a=o.image;if(i&&a){var l=(new DOMParser).parseFromString(t(i),"text/html");(0,r.moveChildNodes)(n,null==l?void 0:l.body)}}},2184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Paste=void 0;var r=n(3835);Object.defineProperty(t,"Paste",{enumerable:!0,get:function(){return r.default}})},5155:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){var t,n,o,i=e.start,a=e.end;if(i==a&&"DIV"==(0,r.getTagOfNode)(i)){var l=(0,r.changeElementTag)(i,"SPAN");e.start=l,e.end=l,l&&l.lastChild&&"BR"==(0,r.getTagOfNode)(l.lastChild)&&l.removeChild(l.lastChild)}else"BR"==(0,r.getTagOfNode)(a)&&(l=null===(t=a.ownerDocument)||void 0===t?void 0:t.createTextNode(""))&&(null===(n=a.parentNode)||void 0===n||n.insertBefore(l,a),e.end=l,null===(o=a.parentNode)||void 0===o||o.removeChild(a))}function i(e,t,n,o){var i,a,l,s,u=(0,r.getBlockElementAtNode)(e,t.start),d=n?(0,r.getNextLeafSibling)(e,t.end):(0,r.getPreviousLeafSibling)(e,t.start);if(d)if(null==u?void 0:u.contains(d))(c=null===(i=t.start.ownerDocument)||void 0===i?void 0:i.createElement("br"))&&(null===(a=(n?t.end:t.start).parentNode)||void 0===a||a.insertBefore(c,n?t.end.nextSibling:t.start));else if(o&&o.end==o.start&&"SPAN"==(0,r.getTagOfNode)(o.end)){var c,f=(0,r.getPreviousLeafSibling)(e,t.start);o.end.contains(f)&&!(0,r.findClosestElementAncestor)(t.start,e,"li")&&(c=null===(l=t.start.ownerDocument)||void 0===l?void 0:l.createElement("br"))&&(null===(s=t.start.parentNode)||void 0===s||s.insertBefore(c,t.start))}}t.default=function(e){for(var t=r.ContentTraverser.createBodyTraverser(e),n=[],a=null==t?void 0:t.currentBlockElement;a;a=t.getNextBlockElement())n.push({start:a.getStartNode(),end:a.getEndNode()});if(n.length>0){var l=n.length-1;o(n[0]),o(n[l]),i(e,n[0],!0),i(e,n[l],!1,n[0])}}},6728:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createListItemBlock=void 0,t.createListItemBlock=function(e){return void 0===e&&(e=null),{startElement:e,endElement:e,insertPositionNode:null,listItemContainers:e?[e]:[]}}},1820:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(8979),i=["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle"].map((function(e){return"."+e})).join(",");t.default=function(e,t){e.querySelectorAll('ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer').forEach((function(e){var t=e;t.style.removeProperty("display"),t.style.removeProperty("margin")})),(0,o.isWordOnlineWithList)(e)&&(0,o.default)(e),(0,r.chainSanitizerCallback)(t.cssStyleCallbacks,"border",(function(e,t){return"IMG"!=t.tagName||"none"!=e})),e.querySelectorAll(i).forEach((function(e){var t;return null===(t=e.parentElement)||void 0===t?void 0:t.removeChild(e)}))}},8979:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isWordOnlineWithList=void 0;var r=n(6728),o=n(6344),i='div.ListContainerWrapper>ul[class^="BulletListStyle"],div.ListContainerWrapper>ol[class^="NumberListStyle"],span.WACImageContainer > img',a="ListContainerWrapper",l=["111","9643","9830"];function s(e,t,n){var r,o=t.createElement(n),i=null===(r=e.firstElementChild)||void 0===r?void 0:r.getAttribute("start");return i&&o.setAttribute("start",i),o}function u(e,t,n){var r;if(e){var o,i=n.insertPositionNode;i?(o=i.parentNode)&&o.insertBefore(e,i):(o=null===(r=n.startElement)||void 0===r?void 0:r.parentNode)?o.appendChild(e):t.appendChild(e)}}t.isWordOnlineWithList=function(e){return!(!e||!e.querySelector(i))},t.default=function(e){!function(e){(0,o.toArray)(e.querySelectorAll(i)).forEach((function(e){var t=new RegExp("\\b"+a+"\\b","g");if(e.previousSibling){var n=(0,o.splitParentNode)(e,!0);n.className=n.className.replace(t,"")}if(e.nextSibling){var r=(0,o.splitParentNode)(e,!1);r.className=r.className.replace(t,"")}}))}(e),function(e){for(var t=e.querySelectorAll("."+a),n=[],i=null,l=0;l0&&n.push(i),n}(e).forEach((function(t){var n,r,i;!function(e,t){t.startElement&&t.endElement&&(0,o.collapseNodes)(e,t.startElement,t.endElement,!0).forEach((function(e){"DIV"==(0,o.getTagOfNode)(e.firstChild)&&(0,o.unwrap)(e)}))}(e,t),t.insertPositionNode=null!==(r=null===(n=t.endElement)||void 0===n?void 0:n.nextSibling)&&void 0!==r?r:null;var a=void 0,d=e.ownerDocument;t.listItemContainers.forEach((function(n){var r=function(e){var t=(0,o.getTagOfNode)(e.firstChild);return"UL"==t||"OL"==t?t:null}(n);r&&(a||(a=s(n,d,r)),(0,o.toArray)(n.querySelectorAll("li")).forEach((function(i){var c,f=parseInt(null!==(c=i.getAttribute("data-aria-level"))&&void 0!==c?c:"");a&&(0,o.getTagOfNode)(a)!=r&&1==f&&r&&(u(a,e,t),a=s(n,d,r)),a&&r&&function(e,t,n,r){var i;if(n){var a=parseInt(null!==(i=t.getAttribute("data-aria-level"))&&void 0!==i?i:""),s=t.getAttribute("data-leveltext");"UL"==n&&s&&l.indexOf(s.charCodeAt(0).toString())>-1&&(t.style.listStyleType='"'+s+' "');for(var u=e;a>1;){if(u.firstChild){var d=u.lastElementChild,c=(0,o.getTagOfNode)(d);!d||"UL"!=c&&"OL"!=c?(u.appendChild(r.createElement(n)),u.lastElementChild&&(u=u.lastElementChild)):u=d}else u.appendChild(r.createElement(n)),u.firstElementChild&&(u=u.firstElementChild);a--}u.appendChild(t)}}(a,i,r,d)})))})),a&&u(a,e,t);var c=null===(i=t.startElement)||void 0===i?void 0:i.parentNode;c&&t.listItemContainers.forEach((function(e){c.removeChild(e)}))})),function(e){return e.querySelectorAll(".WACImageContainer")}(e).forEach((function(e){(0,o.safeInstanceOf)(e,"HTMLSpanElement")&&e.childNodes.forEach((function(e){var t;"IMG"!=(0,o.getTagOfNode)(e)&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e))}))}))}},2621:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){var n=e.fragment,o=e.clipboardData;if(o.html&&!o.text&&o.image){var i=(new DOMParser).parseFromString(t(o.html),"text/html");(0,r.moveChildNodes)(n,null==i?void 0:i.body)}}},4726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecatedColorList=void 0,t.DeprecatedColorList=["activeborder","activecaption","appworkspace","background","buttonhighlight","buttonshadow","captiontext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedfhadow","window","windowframe","windowtext"]},9053:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(4726);t.default=function(e){["color","background-color"].forEach((function(t){(0,r.chainSanitizerCallback)(e.cssStyleCallbacks,t,(function(e){return o.DeprecatedColorList.indexOf(e)<0}))}))}},5323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=["http:","https:","notes:","mailto:","onenote:"];t.default=function(e){(0,r.chainSanitizerCallback)(e.attributeCallbacks,"href",(function(e,t){return function(e,t){var n;try{n=new URL(e)}catch(e){n=void 0}return n&&o.indexOf(n.protocol)>-1?e:(t.removeAttribute("href"),"")}(e,t)}))}},3825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLevelLists=void 0,t.createLevelLists=function(){return{listsMetadata:{},currentUniqueListId:-1}}},6482:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createWordConverterArguments=void 0;var r=n(3825);t.createWordConverterArguments=function(e){return{nodes:e,currentIndex:0,lists:{},listItems:[],currentListIdsByLevels:[(0,r.createLevelLists)()],lastProcessedItem:null}}},9873:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getObject=t.setObject=t.createCustomData=void 0;var n="NodeId";function r(e,t){var r=t.getAttribute(n);return r||(r=e.nextNodeId.toString(),e.nextNodeId++,t.setAttribute(n,r)),r}t.createCustomData=function(){return{dict:{},nextNodeId:1}},t.setObject=function(e,t,n,o){if(1==t.nodeType){var i=r(e,t);""!=i&&(e.dict[i]||(e.dict[i]={}),e.dict[i][n]=o)}},t.getObject=function(e,t,n){if(1==t.nodeType){var o=r(e,t);if(""!=o)return e.dict[o]&&e.dict[o][n]}return null}},7921:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o="mso-comment-parent",i="mso-comment-reference",a="mso-comment-date",l=/#_msocom_/,s="mso-comment-continuation",u="mso-comment-done";t.default=function(e,t){(0,r.chainSanitizerCallback)(e,"SPAN",(function(e){var t;return"comment"==(0,r.getStyles)(e)["mso-special-character"]&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e)),!0})),(0,r.chainSanitizerCallback)(e,"A",(function(e){var t;return(0,r.safeInstanceOf)(e,"HTMLAnchorElement")&&l.test(e.href)&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e)),!0})),(0,r.chainSanitizerCallback)(e,"DIV",(function(e){return"comment-list"==(0,r.getStyles)(e)["mso-element"]&&(0,r.moveChildNodes)(e),!0})),[i,a,o,s,u].forEach((function(e){return(0,r.chainSanitizerCallback)(t,e,(function(){return!1}))}))}},8149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7921),o=n(6344),i=n(4704),a=n(6482),l=n(1101),s=/%/;t.default=function(e){var t=e.sanitizingOption,n=e.fragment;(0,o.chainSanitizerCallback)(t.elementCallbacks,"O:P",(function(e){return(0,o.moveChildNodes)(e),e.appendChild(e.ownerDocument.createTextNode(" ")),!0}));var u=(0,i.createWordConverter)(),d=n.querySelectorAll("p,h1,h2,h3,h4,h5,h6");d.length>0&&(u.wordConverterArgs=(0,a.createWordConverterArguments)(d),(0,l.processNodesDiscovery)(u)&&(0,l.processNodeConvert)(u)),["OL","UL"].forEach((function(e){(0,o.chainSanitizerCallback)(t.elementCallbacks,e,(function(e){return"0in"==e.style.marginBottom&&(e.style.marginBottom=""),!0}))})),(0,o.chainSanitizerCallback)(t.cssStyleCallbacks,"line-height",(function(e){var t;return!(s.test(e)&&!isNaN(t=parseInt(e))&&t<120)})),(0,r.default)(t.elementCallbacks,t.cssStyleCallbacks)}},1101:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.processNodeConvert=t.processNodesDiscovery=void 0;var r=n(3825),o=n(9873),i=n(6344),a="UniqueListId",l="mso-list",s=/[\n|\r]/gi;function u(e,t,n,r){var l,s=d(t,n.level,r),u=(0,o.getObject)(e.wordCustomData,s,a);if(u&&u!=n.uniqueListId||!u&&s.firstChild){var c=t.ownerDocument.createElement(r.tagName);null===(l=s.parentNode)||void 0===l||l.insertBefore(c,s.nextSibling),s=c}return(0,o.setObject)(e.wordCustomData,s,a,n.uniqueListId),function(e,t,n){var r,l,s;if(n.tagName!=(0,i.getTagOfNode)(t)){var u=null===(r=t.ownerDocument)||void 0===r?void 0:r.createElement(n.tagName);u&&((0,o.setObject)(e.wordCustomData,u,a,(0,o.getObject)(e.wordCustomData,t,a)),(0,i.moveChildNodes)(u,t),null===(l=t.parentNode)||void 0===l||l.insertBefore(u,t),null===(s=t.parentNode)||void 0===s||s.removeChild(t),t=u)}return t}(e,s,r)}function d(e,t,n){var r,o,a=null,l=null;if(1==t?l=g(e):(a=d(e,t-1,null)).lastChild&&(l=a.lastChild),l&&1==l.nodeType){var s=(0,i.getTagOfNode)(l);if("UL"==s||"OL"==s)return l}var u=null===(r=e.ownerDocument)||void 0===r?void 0:r.createElement(n?n.tagName:"UL");return 1==t?null===(o=e.parentNode)||void 0===o||o.insertBefore(u,e):null==a||a.appendChild(u),u}function c(e,t){for(var n=[],r=e.firstChild;r;r=r.nextSibling)r&&(r&&1==r.nodeType&&t>1&&c(r,t-1),(b(r=h(r,!0))||y(r))&&n.push(r));n.forEach((function(t){return e.removeChild(t)}))}function f(e){if(1==e.nodeType){var t=E(e,l);if(t&&t.length>0)try{var n=t.split(" ");if(3==n.length)return{level:parseInt(n[1].substr(5)),wordListId:t,originalNode:e,uniqueListId:0}}catch(e){}}return null}function p(e){return["o","·","§","-"].indexOf(e)>=0}function v(e,t){for(var n,r,o="",i=e.firstChild;!o&&i;)y(i=h(i,!0))?0==(o=null!==(r=null===(n=i.textContent)||void 0===n?void 0:n.trim())&&void 0!==r?r:"").length&&(o="o"):1==i.nodeType&&t>1&&(o=v(i,t-1)),i=i.nextSibling;return o}function h(e,t){var n,r,o,i;if(8==e.nodeType){var a=e.data;if(a&&"[if !supportlists]"==a.trim().toLowerCase()){for(var l=e,s=null,u=0;u<4&&(l=m(l));u++)if(8==l.nodeType&&(a=l.data)&&"[endif]"==a.trim().toLowerCase()){s=l;break}if(s){var d=null===(n=e.ownerDocument)||void 0===n?void 0:n.createElement("span");for(null==d||d.setAttribute("style","mso-list: ignore"),l=m(e);l!=s;)(l=null==l?void 0:l.nextSibling).previousSibling&&(null==d||d.appendChild(l.previousSibling));d&&(null===(r=s.parentNode)||void 0===r||r.insertBefore(d,s)),t&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e),null===(i=s.parentNode)||void 0===i||i.removeChild(s)),d&&(e=d)}}}return e}function g(e){var t=e;do{t=t.previousSibling}while(t&&C(t));return t}function m(e){var t=e;do{t=t.nextSibling}while(t&&C(t));return t}function y(e){if(1==e.nodeType){var t=E(e,l);if(t&&t.length>0&&"ignore"==t.trim().toLowerCase())return!0}return!1}function b(e){return"SPAN"==(0,i.getTagOfNode)(e)&&!e.firstChild}function E(e,t){return(0,i.getStyles)(e)[t]||null}function C(e){var t;if(!e)return!0;if(3==e.nodeType){var n=e.nodeValue;return 0==(null==(n=null!==(t=null==n?void 0:n.replace(s,""))&&void 0!==t?t:"")?void 0:n.trim().length)}var r=(0,i.getTagOfNode)(e);return!(!e.firstChild||e.firstChild!=e.lastChild||"SPAN"!=r&&"FONT"!=r)&&C(e.firstChild)}function S(e){for(var t=0;t0&&s.currentUniqueListId!=l.uniqueListId?(u.ignore=!0,o.currentListIdsByLevels[0].currentUniqueListId=-1,o.currentListIdsByLevels=o.currentListIdsByLevels.slice(0,1)):(o.currentListIdsByLevels.length>l.level&&(o.currentListIdsByLevels=o.currentListIdsByLevels.slice(0,l.level)),s.currentUniqueListId=l.uniqueListId,o.listItems.push(l),u.numberOfItems++),o.lastProcessedItem=a}else{var h=o.lastProcessedItem;h&&g(a)==h&&a.tagName==h.tagName&&a.className==h.className&&(h.appendChild(h.ownerDocument.createElement("br")),h.appendChild(h.ownerDocument.createElement("br")),(0,i.moveChildNodes)(h,a,!0),null===(t=a.parentNode)||void 0===t||t.removeChild(a))}o.currentIndex++}return o.listItems.length>0},t.processNodeConvert=function(e){var t,n=e.wordConverterArgs;if(n)for(n.currentIndex=0;n.currentIndex0||e.numNumberedConverted>0}},4704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createWordConverter=void 0;var r=n(9873);t.createWordConverter=function(){return{nextUniqueId:1,numBulletsConverted:0,numNumberedConverted:0,wordConverterArgs:null,wordCustomData:(0,r.createCustomData)()}}},6575:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4548),o=n(6344),i="Backspace",a=o.Browser.isIE?"Esc":"Escape",l=o.Browser.isIE?"Left":"ArrowLeft",s=o.Browser.isIE?"Up":"ArrowUp",u=o.Browser.isIE?"Right":"ArrowRight",d=o.Browser.isIE?"Down":"ArrowDown",c=o.Browser.isIE?"Del":"Delete",f=[0,229],p=function(){function e(e,t){this.dataProvider=e,this.pickerOptions=t,this.editor=null,this.eventHandledOnKeyDown=!1,this.blockSuggestions=!1,this.isSuggesting=!1,this.lastKnownRange=null,this.isPendingInputEventHandling=!1,this.currentInputLength=0,this.newInputLength=0}return e.prototype.getName=function(){return"Picker"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.dataProvider.onInitalize((function(e){if(t.editor){t.editor.focus();var n=t.getWord(null);n&&0!=n.length||!t.lastKnownRange||(t.editor.select(t.lastKnownRange),n=t.getWord(null)),t.editor.addUndoSnapshot((function(){var o;n&&t.editor?(0,r.replaceWithNode)(t.editor,n,e,!0):null===(o=t.editor)||void 0===o||o.insertNode(e),t.setIsSuggesting(!1)}),t.pickerOptions.changeSource,t.pickerOptions.handleAutoComplete)}}),(function(e){t.setIsSuggesting(e)}),e)},e.prototype.dispose=function(){this.editor=null,this.isSuggesting=!1,this.blockSuggestions=!1,this.eventHandledOnKeyDown=!1,this.lastKnownRange=null,this.isPendingInputEventHandling=!1,this.currentInputLength=0,this.newInputLength=0,this.dataProvider.onDispose()},e.prototype.willHandleEventExclusively=function(e){return this.isSuggesting&&(0==e.eventType||2==e.eventType||3==e.eventType)},e.prototype.onPluginEvent=function(e){var t;switch(e.eventType){case 7:if("SetContent"==e.source&&this.dataProvider.onContentChanged){this.isSuggesting&&this.setIsSuggesting(!1);var n=[];null===(t=this.editor)||void 0===t||t.queryElements("[id^='"+this.pickerOptions.elementIdPrefix+"']",(function(e){e.id&&n.push(e.id)})),this.dataProvider.onContentChanged(n)}break;case 0:this.eventHandledOnKeyDown=!1,this.isAndroidKeyboardEvent(e)?(this.currentInputLength=this.calcInputLength(e),this.isPendingInputEventHandling=!0):(this.onKeyDownEvent(e),this.isPendingInputEventHandling=!1);break;case 3:this.isPendingInputEventHandling&&this.onAndroidInputEvent(e);break;case 2:!this.eventHandledOnKeyDown&&this.shouldHandleKeyUpEvent(e)&&(this.onKeyUpDomEvent(e),this.isPendingInputEventHandling=!1);break;case 6:this.isSuggesting&&this.setIsSuggesting(!1);break;case 14:this.dataProvider.onScroll&&this.dataProvider.onScroll(e.scrollContainer)}},e.prototype.setLastKnownRange=function(e){this.lastKnownRange=e},e.prototype.setIsSuggesting=function(e){this.isSuggesting=e,e||this.setLastKnownRange(null),this.dataProvider.onIsSuggestingChanged(e),this.setAriaOwns(e),this.setAriaActiveDescendant(e?0:null)},e.prototype.cancelDefaultKeyDownEvent=function(e){this.eventHandledOnKeyDown=!0,e.rawEvent.preventDefault(),e.rawEvent.stopImmediatePropagation()},e.prototype.getIdValue=function(e){if((0,o.safeInstanceOf)(e,"HTMLElement")){var t=e.attributes.getNamedItem("id");return t?t.value:null}return null},e.prototype.getWordBeforeCursor=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e);return n?n.getWordBefore():null},e.prototype.replaceNode=function(e,t){var n,r;e&&(null===(n=this.editor)||void 0===n||n.deleteNode(e)),t&&(null===(r=this.editor)||void 0===r||r.insertNode(t))},e.prototype.getRangeUntilAt=function(e){var t,n,r,i=this,a=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e),l=void 0,s=void 0;return null==a||a.forEachTextInlineElement((function(e){for(var t=!1,n=e.getTextContent(),r=n?n.length:-1;r>=0;){if(n[r]==i.pickerOptions.triggerCharacter){l=e.getStartPosition().move(r),t=!0;break}r--}return t&&(s=e.getEndPosition()),t})),l?(0,o.createRange)(l,s):null!==(r=null===(n=this.editor)||void 0===n?void 0:n.getDocument().createRange())&&void 0!==r?r:null},e.prototype.shouldHandleKeyUpEvent=function(e){return this.isAndroidKeyboardEvent(e)||(0,o.isCharacterValue)(e.rawEvent)||this.isSuggesting&&!(0,o.isModifierKey)(e.rawEvent)},e.prototype.onKeyUpDomEvent=function(e){var t,n,r,o,i;if(this.editor)if(this.isSuggesting){if(null!==(l=this.getWord(e))){var a=(s=l.substring(1)).trim();l==this.pickerOptions.triggerCharacter||a&&a.length>0&&a.split(" ").length<=4?(this.dataProvider.queryStringUpdated(a,s==a),this.setLastKnownRange(null!==(t=this.editor.getSelectionRange())&&void 0!==t?t:null)):this.setIsSuggesting(!1)}}else{var l=this.getWordBeforeCursor(e);if(this.blockSuggestions)null!=l&&l[0]!=this.pickerOptions.triggerCharacter&&(this.blockSuggestions=!1);else if(null!=l&&l.split(" ").length<=4&&l[0]==this.pickerOptions.triggerCharacter){var s;if(this.setIsSuggesting(!0),a=(s=l.substring(1)).trim(),this.dataProvider.queryStringUpdated(a,s==a),this.setLastKnownRange(null!==(n=this.editor.getSelectionRange())&&void 0!==n?n:null),this.dataProvider.setCursorPoint){var u=this.editor.getContentSearcherOfCursor(e),d=this.editor.getDocument().createRange();if(d){var c=null!==(o=null===(r=null==u?void 0:u.getInlineElementBefore())||void 0===r?void 0:r.getContainerNode())&&void 0!==o?o:null;if(!this.setRangeStart(d,c,l)){var f=null!==(i=null==c?void 0:c.previousSibling)&&void 0!==i?i:null;this.setRangeStart(d,f,this.pickerOptions.triggerCharacter)}var p=d.getBoundingClientRect();if(0==p.left&&0==p.bottom&&0==p.top&&(p=d.getClientRects()[0]),p){d.detach();var v={x:p.left,y:(p.bottom+p.top)/2},h=(p.bottom-p.top)/2;this.dataProvider.setCursorPoint(v,h)}}}}}},e.prototype.onKeyDownEvent=function(e){var t,n,r=e.rawEvent;if(this.isSuggesting)r.key==a?(this.setIsSuggesting(!1),this.blockSuggestions=!0,this.cancelDefaultKeyDownEvent(e)):r.key==i?this.getWord(e)==this.pickerOptions.triggerCharacter&&this.setIsSuggesting(!1):this.dataProvider.shiftHighlight&&(this.pickerOptions.isHorizontal?r.key==l||r.key==u:r.key==s||r.key==d)?(this.dataProvider.shiftHighlight(this.pickerOptions.isHorizontal?r.key==u:r.key==d),this.dataProvider.getSelectedIndex&&this.setAriaActiveDescendant(this.dataProvider.getSelectedIndex()),this.cancelDefaultKeyDownEvent(e)):!this.dataProvider.selectOption||"Enter"!=r.key&&"Tab"!=r.key||(this.dataProvider.selectOption(),this.cancelDefaultKeyDownEvent(e));else if(r.key==i)this.tryRemoveNode(e)&&this.cancelDefaultKeyDownEvent(e);else if(r.key==c){var o=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e);if(o){var f=o.getInlineElementAfter()?null===(n=o.getInlineElementAfter())||void 0===n?void 0:n.getContainerNode():null,p=f?this.getIdValue(f):null;if(p&&0==p.indexOf(this.pickerOptions.elementIdPrefix)&&f){var v=this.dataProvider.onRemove(f,!1);this.replaceNode(f,v),this.cancelDefaultKeyDownEvent(e)}}}},e.prototype.onAndroidInputEvent=function(e){this.newInputLength=this.calcInputLength(e),(this.newInputLength-1)&&(e.setStart(t,r),!0)},e.prototype.setAriaOwns=function(e){var t;null===(t=this.editor)||void 0===t||t.setEditorDomAttribute("aria-owns",e&&this.pickerOptions.suggestionsLabel?this.pickerOptions.suggestionsLabel:null)},e.prototype.setAriaActiveDescendant=function(e){var t;null===(t=this.editor)||void 0===t||t.setEditorDomAttribute("aria-activedescendant",null!=e&&this.pickerOptions.suggestionLabelPrefix?this.pickerOptions.suggestionLabelPrefix+e.toString():null)},e.prototype.getInlineElementBeforeCursor=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e),r=n?n.getInlineElementBefore():null;return r?r.getTextContent():null},e.prototype.isAndroidKeyboardEvent=function(e){return"Unidentified"==e.rawEvent.key||null==e.rawEvent.key&&f.indexOf(e.rawEvent.charCode)>-1},e}();t.default=p},8833:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PickerPlugin=void 0;var r=n(6575);Object.defineProperty(t,"PickerPlugin",{enumerable:!0,get:function(){return r.default}})},9467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7905),o=n(191),i=n(4199),a=n(6817),l=n(9905),s=n(1679),u=function(){function e(){this.editor=null,this.shadowEditCoordinatesBackup=null,this.state={firstTable:null,lastTarget:null,firstTarget:null,preventKeyUp:!1,startedSelection:!1,tableSelection:!1,targetTable:null,vTable:null,mouseMoveDisposer:null}}return e.prototype.getName=function(){return"TableCellSelection"},e.prototype.initialize=function(e){this.editor=e,this.editor.addContentEditFeature(o.DeleteTableContents)},e.prototype.dispose=function(){(0,r.clearState)(this.state,this.editor),this.state=null,this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&this.state)switch(e.eventType){case 17:this.handleEnteredShadowEdit(this.state,this.editor);break;case 18:this.handleLeavingShadowEdit(this.state,this.editor);break;case 5:this.state.startedSelection||(0,l.handleMouseDownEvent)(e,this.state,this.editor);break;case 0:this.state.startedSelection?e.rawEvent.preventDefault():(0,i.handleKeyDownEvent)(e,this.state,this.editor);break;case 2:this.state.startedSelection?e.rawEvent.preventDefault():(0,a.handleKeyUpEvent)(e,this.state,this.editor);break;case 14:this.state.startedSelection&&(0,s.handleScrollEvent)(this.state,this.editor);break;case 20:this.state.firstTable=null,this.state.tableSelection=!1,this.editor.select(null)}},e.prototype.handleLeavingShadowEdit=function(e,t){if(e.firstTable&&e.tableSelection&&e.firstTable){var n=t.queryElements("#"+e.firstTable.id);1==n.length&&(e.firstTable=n[0],t.select(e.firstTable,this.shadowEditCoordinatesBackup),this.shadowEditCoordinatesBackup=null)}},e.prototype.handleEnteredShadowEdit=function(e,t){var n,r=t.getSelectionRangeEx();1==r.type&&(this.shadowEditCoordinatesBackup=null!==(n=r.coordinates)&&void 0!==n?n:null,e.firstTable=r.table,e.tableSelection=!0,t.select(r.table,null))},e}();t.default=u},4332:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TABLE_CELL_SELECTOR=void 0,t.TABLE_CELL_SELECTOR="td,th"},191:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteTableContents=void 0;var r=n(6344),o=n(4332);function i(e,t){if((0,r.safeInstanceOf)(e,"HTMLTableCellElement")){var n=new Range;n.selectNodeContents(e),n.deleteContents(),e.appendChild(t.getDocument().createElement("br"))}}t.DeleteTableContents={keys:[46,8],shouldHandleEvent:function(e,t){return 1==t.getSelectionRangeEx().type},handleEvent:function(e,t){var n=t.getSelectionRangeEx();1==n.type&&t.addUndoSnapshot((function(){n.isWholeTableSelected?n.table.querySelectorAll(o.TABLE_CELL_SELECTOR).forEach((function(e){return i(e,t)})):t.getSelectedRegions().forEach((function(e){return i(e.rootNode,t)}))}))}}},7311:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableCellSelection=void 0;var r=n(9467);Object.defineProperty(t,"TableCellSelection",{enumerable:!0,get:function(){return r.default}})},4199:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleKeyDownEvent=void 0;var r=n(4192),o=n(8098),i=n(4846),a=n(8533),l=n(4550),s=n(7463),u=n(4332),d=n(1648),c=n(6344);t.handleKeyDownEvent=function(e,t,n){var f=e.rawEvent,p=f.shiftKey,v=f.ctrlKey,h=f.metaKey,g=f.which,m=f.defaultPrevented;if(p&&(v||h)||16==g||m)t.preventKeyUp=m;else{var y=n.getSelectionRangeEx();if(p){if(!t.firstTarget){var b=n.getFocusedPosition(),E=b&&(0,r.getCellAtCursor)(n,b.node);t.firstTarget=E}if(!(0,c.safeInstanceOf)(t.firstTarget,"HTMLTableCellElement"))return;n.runAsync((function(n){var f=n.getFocusedPosition(),p=t.tableSelection?t.lastTarget:null==f?void 0:f.node;if(p&&(0,s.setData)(p,t,n),t.firstTable==t.targetTable){if(!function(e,t){if(!e.firstTable||!t)return!1;var n=t.getSelectedRegions();if(1==n.length)return!1;var r=!0;return n.forEach((function(t){(0,c.contains)(e.firstTable,t.rootNode)||(r=!1)})),r}(t,n)&&!t.tableSelection)return;!function(e,t,n){var s,f;t.firstTarget=(0,r.getCellAtCursor)(n,t.firstTarget),t.lastTarget=(0,r.getCellAtCursor)(n,t.lastTarget),(0,d.updateSelection)(n,t.firstTarget,0),t.vTable=t.vTable||new c.VTable(t.firstTable);var p=(0,o.getCellCoordinates)(t.vTable,t.firstTarget),v=function(e,t,n){var r;if(n.lastTarget=n.lastTarget&&t.getElementAtCursor(u.TABLE_CELL_SELECTOR,n.lastTarget),(0,c.safeInstanceOf)(n.lastTarget,"HTMLTableCellElement")&&(null===(r=n.vTable)||void 0===r?void 0:r.cells)){var i=(0,o.getCellCoordinates)(n.vTable,n.lastTarget);if(n.tableSelection&&i)switch(e.rawEvent.which){case 39:i.x+=n.lastTarget.colSpan,null==n.vTable.cells[i.y][i.x]&&(i.x=n.vTable.cells[i.y].length-1,i.y++);break;case 37:0==i.x?i.y--:i.x--;break;case 38:i.y--;break;case 40:i.y++}return i&&i.y>=0&&i.x>=0&&(n.lastTarget=n.vTable.getTd(i.y,i.x)),i}}(e,n,t);if(p&&v){t.vTable.selection={firstCell:p,lastCell:v};var h=t.vTable.selection;if(!h.lastCell||t.vTable.cells&&h.lastCell.y>t.vTable.cells.length-1||-1==h.lastCell.y)if(t.lastTarget=n.getElementAtCursor(u.TABLE_CELL_SELECTOR+",div",null!==(s=t.firstTable)&&void 0!==s?s:void 0),(0,c.safeInstanceOf)(t.lastTarget,"HTMLTableCellElement"))(0,a.prepareSelection)(t,n);else{var g=t.targetTable&&new c.Position(t.targetTable,null==h.lastCell.y||-1==h.lastCell.y?-2:-3),m=null===(f=n.getDocument().defaultView)||void 0===f?void 0:f.getSelection(),y=m||{},b=y.anchorNode,E=y.anchorOffset;if(m&&b&&null!=E&&null!=E&&g)return n.select(m.getRangeAt(0)),m.setBaseAndExtent(b,E,g.node,g.offset),t.lastTarget=g.node,void e.rawEvent.preventDefault()}(0,l.selectTable)(n,t);var C=(0,i.isAfter)(t.firstTarget,t.lastTarget);if(t.lastTarget){var S=new c.Position(t.lastTarget,C?0:-1);(0,d.updateSelection)(n,S.node,S.offset)}t.tableSelection=!0,e.rawEvent.preventDefault()}}(e,t,n)}else t.tableSelection&&(t.firstTable&&n.select(t.firstTable,null),t.tableSelection=!1)}))}else if(1==(null==y?void 0:y.type)&&(!(0,c.isCtrlOrMetaPressed)(e.rawEvent)||36==g||35==g)){var C=y.ranges[0],S=C.startContainer.childNodes[C.startOffset].childNodes,T=(0,c.createRange)(S[0],S[S.length-1]);n.select(T)}}}},6817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleKeyUpEvent=void 0;var r=n(7905),o=n(6344),i=[16,18,91,17,44];t.handleKeyUpEvent=function(e,t,n){var a=e.rawEvent,l=a.shiftKey,s=a.which,u=a.ctrlKey;l||u||!t.firstTarget||t.preventKeyUp||-1!=i.indexOf(s)||((0,o.isCharacterValue)(e.rawEvent)&&n.addUndoSnapshot(),(0,r.clearState)(t,n)),t.preventKeyUp=!1}},9905:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectionInsideTableMouseMove=t.handleMouseDownEvent=void 0;var r=n(8616),o=n(7905),i=n(6344),a=n(4192),l=n(8098),s=n(9878),u=n(8533),d=n(9991),c=n(4550),f=n(7463),p=n(4332),v=n(1648);function h(e,t,n){var r;if(t.firstTarget&&t.firstTable&&t.lastTarget!=t.firstTarget&&t.lastTarget){if((0,v.updateSelection)(n,t.firstTarget,0),t.firstTable!=t.targetTable&&(null===(r=t.targetTable)||void 0===r?void 0:r.contains(t.firstTable))&&(t.firstTarget=n.getElementAtCursor(p.TABLE_CELL_SELECTOR,t.lastTarget)),t.firstTable&&t.firstTarget){t.tableSelection=!0,t.vTable=t.vTable||new i.VTable(t.firstTable);var o=(0,l.getCellCoordinates)(t.vTable,t.firstTarget),a=(0,l.getCellCoordinates)(t.vTable,t.lastTarget);if(!o||!a)return;t.vTable.selection={firstCell:o,lastCell:a},(0,c.selectTable)(n,t)}e.preventDefault()}else if(t.lastTarget==t.firstTarget&&t.tableSelection&&t.firstTable&&t.firstTarget){t.vTable=new i.VTable(t.firstTable);var s=(0,l.getCellCoordinates)(t.vTable,t.firstTarget);s&&(t.vTable.selection={firstCell:s,lastCell:s}),(0,c.selectTable)(n,t)}}t.handleMouseDownEvent=function(e,t,n){var g,m=e.rawEvent,y=m.which,b=m.shiftKey,E=m.target,C=m.detail,S=n.getElementAtCursor("table",E,e),T=C>=3;if(!S||S.isContentEditable){var P=n.getElementAtCursor(p.TABLE_CELL_SELECTOR);if(3==y&&t.tableSelection&&t.vTable&&P){var _=(0,l.getCellCoordinates)(t.vTable,P);if(_){var w=(0,r.default)(t.vTable)||{},O=w.firstCell,D=w.lastCell;if(O&&D&&_.y>=O.y&&_.y<=D.y&&_.x>=O.x&&_.x<=D.x){if(t.firstTarget=t.vTable.getCell(O.y,O.x).td,t.lastTarget=t.vTable.getCell(D.y,D.x).td,t.firstTarget&&t.lastTarget){var M=null===(g=n.getDocument().defaultView)||void 0===g?void 0:g.getSelection();null==M||M.setBaseAndExtent(t.firstTarget,0,t.lastTarget,0),(0,c.selectTable)(n,t)}return}}}if(1==y){if(!b&&!T&&((0,o.clearState)(t,n),(0,s.getTableAtCursor)(n,e.rawEvent.target))){var A=n.getDocument()||document,R=function(e){return function(){!function(e){var t;e.startedSelection&&(e.startedSelection=!1,null===(t=e.mouseMoveDisposer)||void 0===t||t.call(e))}(e)}}(t),I=function(e,t){return function(n){if(t.contains(n.target)){if(e.tableSelection&&e.firstTarget&&(0,i.contains)(e.lastTarget,n.target,!0))return(0,v.updateSelection)(t,e.firstTarget,0),void n.preventDefault();if("TABLE"!=(0,i.getTagOfNode)(n.target)){if((0,f.setData)(n.target,e,t),!e.firstTarget||e.firstTable)if(!e.lastTarget||(e.lastTarget.lastChild!=e.lastTarget.firstChild||"TABLE"!=(0,i.getTagOfNode)(e.lastTarget.lastChild)||"DIV"!=(0,i.getTagOfNode)(e.lastTarget))&&t.contains(e.lastTarget)){(0,u.prepareSelection)(e,t);var r=!!(0,i.safeInstanceOf)(e.lastTarget,"HTMLTableCellElement")&&(0,i.contains)(e.lastTarget,e.firstTable);e.firstTable&&e.firstTable==e.targetTable||r?h(n,e,t):e.tableSelection&&(0,d.restoreSelection)(e,t),e.tableSelection&&e.firstTarget&&((0,v.updateSelection)(t,e.firstTarget,0),n.preventDefault())}else n.preventDefault()}else n.preventDefault()}}}(t,n);A.addEventListener("mouseup",R,!0),A.addEventListener("mousemove",I,!0),t.mouseMoveDisposer=function(){A.removeEventListener("mouseup",R,!0),A.removeEventListener("mousemove",I,!0)},t.startedSelection=!0}(b||T)&&n.runAsync((function(e){var n,r=null===(n=e.getDocument().defaultView)||void 0===n?void 0:n.getSelection(),o=(0,a.getCellAtCursor)(e,null==r?void 0:r.anchorNode),u=T?o:(0,a.getCellAtCursor)(e,null==r?void 0:r.focusNode),d=(0,s.getTableAtCursor)(e,o);if(d&&(0,i.safeInstanceOf)(o,"HTMLTableCellElement")&&(0,i.safeInstanceOf)(u,"HTMLTableCellElement")){t.vTable=new i.VTable(o);var f=(0,l.getCellCoordinates)(t.vTable,o),p=(0,l.getCellCoordinates)(t.vTable,u);if(!f||!p)return;t.vTable.selection={firstCell:f,lastCell:p},t.firstTarget=o,t.lastTarget=u,(0,c.selectTable)(e,t),t.tableSelection=!0,t.firstTable=d,t.targetTable=d,(0,v.updateSelection)(e,o,0)}}))}}},t.selectionInsideTableMouseMove=h},1679:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleScrollEvent=void 0;var r=n(8098),o=n(9991),i=n(4550),a=n(7463),l=n(1648);t.handleScrollEvent=function(e,t){var n,s=t.getElementAtCursor();if(s)if((0,a.setData)(s,e,t),e.firstTable==e.targetTable&&e.firstTarget&&(null===(n=e.vTable)||void 0===n?void 0:n.selection)&&e.lastTarget&&e.tableSelection){var u=(0,r.getCellCoordinates)(e.vTable,e.lastTarget);u&&(e.vTable.selection.lastCell=u,(0,i.selectTable)(t,e),(0,l.updateSelection)(t,e.firstTarget,0))}else e.tableSelection&&(0,o.restoreSelection)(e,t)}},7905:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearState=void 0,t.clearState=function(e,t){var n;null==t||t.select(null),e&&(e.vTable=null,e.firstTarget=null,e.lastTarget=null,e.tableSelection=!1,e.firstTable=null,e.targetTable=null,null===(n=e.mouseMoveDisposer)||void 0===n||n.call(e),e.mouseMoveDisposer=null)}},4192:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCellAtCursor=void 0;var r=n(4332);t.getCellAtCursor=function(e,t){return e&&e.getElementAtCursor(r.TABLE_CELL_SELECTOR,null!=t?t:void 0)||t}},8098:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCellCoordinates=void 0,t.getCellCoordinates=function(e,t){var n;if(null==e?void 0:e.cells)for(var r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getTableAtCursor=void 0,t.getTableAtCursor=function(e,t){return e?e.getElementAtCursor("table",t):null}},4846:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAfter=void 0;var r=n(6344);t.isAfter=function(e,t){var n,o,i,a;if(e&&t){if(t.contains(e)){var l=null===(o=(n=e).getBoundingClientRect)||void 0===o?void 0:o.call(n),s=null===(a=(i=t).getBoundingClientRect)||void 0===a?void 0:a.call(i);if(l&&s)return l.top>s.top&&l.bottom{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=(null==e?void 0:e.selection)||{},n=t.firstCell,r=t.lastCell;if(!((null==e?void 0:e.cells)&&e.selection&&n&&r))return null;var o=e.cells,i={x:Math.min(n.x,r.x),y:Math.min(n.y,r.y)},a={x:Math.max(n.x,r.x),y:Math.max(n.y,r.y)},l=function(e){e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.y>=o.length&&(e.y=o.length-1);var t=o[e.y].length;e.x>=t&&(e.x=t-1)};return l(i),l(a),{firstCell:i,lastCell:a}}},8533:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prepareSelection=void 0;var r=n(6344),o=n(9878),i=n(4332);t.prepareSelection=function(e,t){var n,a,l,s;if(e.firstTable&&e.targetTable){var u=e.lastTarget!=e.firstTarget&&(null===(n=e.firstTable)||void 0===n?void 0:n.contains((0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR)));if(u&&e.tableSelection)for(;u;)e.lastTarget=(0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR),e.targetTable=(0,o.getTableAtCursor)(t,e.lastTarget),u=e.lastTarget!=e.firstTarget&&(null===(a=e.firstTable)||void 0===a?void 0:a.contains((0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR)));var d=e.lastTarget!=e.firstTarget&&(null===(l=e.targetTable)||void 0===l?void 0:l.contains((0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR)));if(d&&e.tableSelection&&e.targetTable)for(;d;){if(e.firstTarget=(0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR),!e.firstTarget)return;e.firstTable=(0,o.getTableAtCursor)(t,e.firstTarget),d=e.lastTarget!=e.firstTarget&&(null===(s=e.targetTable)||void 0===s?void 0:s.contains((0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR)))}}}},9991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreSelection=void 0;var r=n(4846),o=n(6344),i=n(1648);t.restoreSelection=function(e,t){if(e.lastTarget&&e.firstTarget){e.firstTable&&t.select(e.firstTable,null),e.tableSelection=!1;var n=(0,r.isAfter)(e.firstTarget,e.lastTarget),a=new o.Position(e.lastTarget,n?-1:0),l=new Range;e.firstTarget&&l.selectNodeContents(e.firstTarget),(0,i.updateSelection)(t,e.firstTarget,n?o.Position.getEnd(l).offset:o.Position.getStart(l).offset,a.element,a.offset)}}},4550:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectTable=void 0;var r=n(8616);t.selectTable=function(e,t){e&&t.vTable&&(null==e||e.select(t.vTable.table,(0,r.default)(t.vTable)))}},7463:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setData=void 0;var r=n(4192),o=n(9878),i=n(4332);t.setData=function(e,t,n){var a=n.getFocusedPosition();a&&(t.firstTarget=t.firstTarget||(0,r.getCellAtCursor)(n,a.node),t.firstTarget.nodeType==Node.TEXT_NODE&&(t.firstTarget=n.getElementAtCursor(i.TABLE_CELL_SELECTOR,t.firstTarget)),!n.contains(t.firstTarget)&&t.lastTarget&&(t.firstTarget=t.lastTarget)),t.firstTable=(0,o.getTableAtCursor)(n,t.firstTarget),t.lastTarget=(0,r.getCellAtCursor)(n,e),t.targetTable=(0,o.getTableAtCursor)(n,t.lastTarget)}},1648:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateSelection=void 0,t.updateSelection=function(e,t,n,r,o){var i,a=null===(i=e.getDocument().defaultView)||void 0===i?void 0:i.getSelection();a&&(r=r||t,o=o||n,a.setBaseAndExtent(t,n,r,o))}},12:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3087),o=n(6344),i=function(){function e(e,t){var n=this;this.onShowHelperElement=e,this.anchorContainerSelector=t,this.editor=null,this.onMouseMoveDisposer=null,this.tableRectMap=null,this.tableEditor=null,this.onMouseOut=function(e){var t;e.pageX&&(0,o.safeInstanceOf)(e.relatedTarget,"HTMLElement")&&n.tableEditor&&!n.tableEditor.isOwnedElement(e.relatedTarget)&&!(null===(t=n.editor)||void 0===t?void 0:t.contains(e.relatedTarget))&&n.setTableEditor(null)},this.onMouseMove=function(e){var t,r=e;if(!(r.buttons>0)&&n.editor){n.ensureTableRects();var o=n.editor.getDocument().defaultView||window,i=r.pageX-o.scrollX,a=r.pageY-o.scrollY,l=null;if(n.tableRectMap)for(var s=n.tableRectMap.length-1;s>=0;s--){var u=n.tableRectMap[s],d=u.table,c=u.rect;if(i>=c.left-12&&i<=c.right+12&&a>=c.top-12&&a<=c.bottom+12){l=d;break}}n.setTableEditor(l,r),null===(t=n.tableEditor)||void 0===t||t.onMouseMove(i,a)}},this.invalidateTableRects=function(){n.tableRectMap=null}}return e.prototype.getName=function(){return"TableResize"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.onMouseMoveDisposer=this.editor.addDomEventHandler({mousemove:this.onMouseMove,mouseout:function(e){return t.onMouseOut(e)}})},e.prototype.dispose=function(){var e;null===(e=this.onMouseMoveDisposer)||void 0===e||e.call(this),this.invalidateTableRects(),this.disposeTableEditor(),this.editor=null,this.onMouseMoveDisposer=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 3:case 7:case 14:case 21:this.setTableEditor(null),this.invalidateTableRects()}},e.prototype.setTableEditor=function(e,t){if(this.tableEditor&&!this.tableEditor.isEditing()&&e!=this.tableEditor.table&&this.disposeTableEditor(),!this.tableEditor&&e&&this.editor&&e.rows.length>0){var n=this.anchorContainerSelector?this.editor.getDocument().querySelector(this.anchorContainerSelector):void 0;this.tableEditor=new r.default(this.editor,e,this.invalidateTableRects,this.onShowHelperElement,(0,o.safeInstanceOf)(n,"HTMLElement")?n:void 0,null==t?void 0:t.currentTarget)}},e.prototype.disposeTableEditor=function(){var e;null===(e=this.tableEditor)||void 0===e||e.dispose(),this.tableEditor=null},e.prototype.ensureTableRects=function(){var e=this;!this.tableRectMap&&this.editor&&(this.tableRectMap=[],this.editor.queryElements("table",(function(t){if(t.isContentEditable){var n=(0,o.normalizeRect)(t.getBoundingClientRect());n&&e.tableRectMap&&e.tableRectMap.push({table:t,rect:n})}})))},e}();t.default=i},1565:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4296),o=n(6344);function i(e,t){var n=e.td,r=e.isRTL,i=e.zoomScale,a=e.onStart,l=new o.VTable(n,!0,i),s=(0,o.normalizeRect)(n.getBoundingClientRect());if(s){a();var u=l.getCellsWithBorder(r?s.left:s.right,!r),d=l.getCellsWithBorder(r?s.left:s.right,r);return{vTable:l,currentCells:u,nextCells:d,initialX:t.pageX}}return{vTable:l,currentCells:[],nextCells:[],initialX:0}}function a(e,t,n,r,o){var i=e.td,a=e.zoomScale,l=n.vTable;return l.table.removeAttribute("height"),l.table.style.setProperty("height",null),l.forEachCellOfCurrentRow((function(e){var t;e.td&&e.td.style.setProperty("height",e.td==i?(null!==(t=e.height)&&void 0!==t?t:0)/a+o+"px":null)})),l.writeBack(!0),!0}function l(e,t,n,r){var i=e.isRTL,a=e.zoomScale,l=n.vTable,u=n.nextCells,d=n.currentCells,c=n.initialX;if(!function(e,t,n,r,i){for(var a=0;a1?0:e.getBoundingClientRect().right-c;e.style.wordBreak="break-word",e.style.whiteSpace="normal",e.style.boxSizing="border-box",e.style.width=e.rowSpan>1?"":t/a-r+"px"})),l.writeBack(!0),!0}function s(e,t,n){return n?t-e.left:e.right-t}function u(e,t){var n=e.td,r=(0,o.normalizeRect)(n.getBoundingClientRect());r&&(t.style.top=r.bottom-4+"px",t.style.left=r.left+"px",t.style.width=r.right-r.left+"px",t.style.height="4px")}function d(e,t){var n=e.td,r=e.isRTL,i=(0,o.normalizeRect)(n.getBoundingClientRect());i&&(t.style.top=i.top+"px",t.style.left=(r?i.left:i.right)-4+1+"px",t.style.width="4px",t.style.height=i.bottom-i.top+"px")}t.default=function(e,t,n,s,c,f,p,v){var h=e.ownerDocument,g={tag:"div",style:"position: fixed; cursor: "+(s?"row":"col")+"-resize; user-select: none"};null==p||p(g,"CellResizer");var m=(0,o.createElement)(g,h);(v||h.body).appendChild(m);var y={td:e,isRTL:n,zoomScale:t,onStart:c},b=s?u:d;b(y,m);var E={onDragStart:i,onDragging:s?a:l,onDragEnd:f};return{node:e,div:m,featureHandler:new r.default(m,y,b,E,t)}}},3087:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(1565),i=n(669),a=n(255),l=n(6034),s=n(6080),u=n(6344);!function(e){e[e.top=0]="top",e[e.side=1]="side"}(r||(r={}));var d=function(){function e(e,t,n,r,o,i){var a=this;this.editor=e,this.table=t,this.onChanged=n,this.onShowHelperElement=r,this.anchorContainer=o,this.contentDiv=i,this.horizontalInserter=null,this.verticalInserter=null,this.horizontalResizer=null,this.verticalResizer=null,this.tableResizer=null,this.tableSelector=null,this.start=null,this.end=null,this.onFinishEditing=function(){return a.editor.focus(),a.start&&a.end&&a.editor.select(a.start,a.end),a.editor.addUndoSnapshot((function(){}),"Format"),a.onChanged(),a.isCurrentlyEditing=!1,!1},this.onStartTableResize=function(){a.isCurrentlyEditing=!0,a.onStartResize()},this.onStartCellResize=function(){a.isCurrentlyEditing=!0,a.disposeTableResizer(),a.onStartResize()},this.onInserted=function(e){a.editor.transformToDarkColor(e),a.disposeTableResizer(),a.onFinishEditing()},this.onSelect=function(e){if(a.editor.focus(),e){var t=new u.VTable(e);if(t.cells){var n=t.cells.length-1,r=0;t.cells[n].forEach((function(e,t){r=t}));var o={firstCell:{x:0,y:0},lastCell:{y:n,x:r}};a.editor.select(e,o)}}},this.getOnMouseOut=function(e){return function(t){e&&t.relatedTarget!=e&&(0,u.safeInstanceOf)(a.contentDiv,"HTMLElement")&&(0,u.safeInstanceOf)(t.relatedTarget,"HTMLElement")&&!(0,u.contains)(a.contentDiv,t.relatedTarget,!0)&&a.dispose()}},this.isRTL="rtl"==(0,u.getComputedStyle)(t,"direction"),this.setEditorFeatures(),this.isCurrentlyEditing=!1}return e.prototype.dispose=function(){this.disposeTableResizer(),this.disposeCellResizers(),this.disposeTableInserter(),this.disposeTableSelector()},e.prototype.isEditing=function(){return this.isCurrentlyEditing},e.prototype.isOwnedElement=function(e){return[this.tableResizer,this.tableSelector,this.horizontalInserter,this.verticalInserter,this.horizontalResizer,this.verticalResizer].filter((function(e){return!!(null==e?void 0:e.div)})).some((function(t){return(0,u.contains)(null==t?void 0:t.div,e,!0)}))},e.prototype.onMouseMove=function(e,t){var n,r,o=null===(n=this.table.rows[0])||void 0===n?void 0:n.cells[0];if(o){var i=(0,u.normalizeRect)(o.getBoundingClientRect());if(i){for(var a=t<=i.top+6?0:this.isRTL?e>=i.right-6?1:void 0:e<=i.left+6?1:void 0,l=a?1:0,s=(0,u.normalizeRect)(this.table.getBoundingClientRect()),d=0;d=v.left:e>=v.left-6*l;if(h&&g&&m){var y=this.isRTL?v.right<=s.right&&v.right>=s.right-1:v.left>=s.left&&v.left<=s.left+1;if(0===d&&0==a){var b=(v.left+v.right)/2,E=this.isRTL?eb;this.setInserterTd(E?p:c.cells[f-1],!1)}else if(0===f&&1==a&&y){var C=null===(r=this.table.rows[d-1])||void 0===r?void 0:r.cells[0],S=C?(0,u.normalizeRect)(C.getBoundingClientRect()):null,T=S?this.isRTL?S.right===v.right:S.left===v.left:null;this.setInserterTd(t<(v.top+v.bottom)/2&&T?C:p,!0)}else this.setInserterTd(null);this.setResizingTd(p);break}}}if(f{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.disposeTableEditFeature=void 0,t.disposeTableEditFeature=function(e){var t,n,r;e&&(null===(n=null===(t=e.div)||void 0===t?void 0:t.parentNode)||void 0===n||n.removeChild(e.div),e.div=null,null===(r=e.featureHandler)||void 0===r||r.dispose(),e.featureHandler=null)}},669:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t,n,i,a,l,s,u){var d=e.getElementAtCursor("table",t),c=(0,r.normalizeRect)(t.getBoundingClientRect()),f=e.getVisibleViewport(),p=d&&f?(0,r.getIntersectedRect)([d],[f]):null;if(c&&p){var v=t.ownerDocument,h=function(e,t,n,r){var o=t?"white":"#4A4A4A";return{tag:"div",style:"position: fixed; width: 12px; height: 12px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid 1px "+o+"; border-radius: 50%; background-color: "+r,children:[{tag:"div",style:"position: absolute; box-sizing: border-box; background-color: "+r+";"+(e?(n?"right":"left")+": 12px; top: 5px; height: 3px; border-top: 1px solid "+o+"; border-bottom: 1px solid "+o+"; border-right: 1px solid "+o+"; border-left: 0px;":"left: 5px; top: 12px; width: 3px; border-left: 1px solid "+o+"; border-right: 1px solid "+o+"; border-bottom: 1px solid "+o+"; border-top: 0px;")},"+"]}}(i,e.isDarkMode(),n,e.getDefaultFormat().backgroundColor||"white");null==s||s(h,"TableInserter");var g=(0,r.createElement)(h,v);return i?(g.style.left=(n?p.right:p.left-13)+"px",g.style.top=c.bottom-8+"px",g.firstChild.style.width=p.right-p.left+"px"):(g.style.left=(n?c.left-8:c.right-8)+"px",g.style.top=p.top-13+"px",g.firstChild.style.height=p.bottom-p.top+"px"),(u||v.body).appendChild(g),{div:g,featureHandler:new o(g,t,i,e,a,l),node:t}}return null};var o=function(){function e(e,t,n,o,i,a){var l=this;this.div=e,this.td=t,this.isHorizontal=n,this.editor=o,this.onInsert=i,this.insertTd=function(){var e=new r.VTable(l.td);l.isHorizontal||(e.normalizeTableCellSize(l.editor.getZoomScale()),e.table.removeAttribute("width"),e.table.style.setProperty("width",null)),e.edit(l.isHorizontal?1:3),e.writeBack(),l.onInsert(e.table)},this.div.addEventListener("click",this.insertTd),this.onMouseOutEvent=a(e),this.div.addEventListener("mouseout",this.onMouseOutEvent)}return e.prototype.dispose=function(){this.div.removeEventListener("click",this.insertTd),this.onMouseOutEvent&&this.div.removeEventListener("mouseout",this.onMouseOutEvent),this.onMouseOutEvent=null},e}()},255:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4296),o=n(6344),i=12;function a(e){return e.onStart(),{originalRect:e.table.getBoundingClientRect(),vTable:new o.VTable(e.table,!0,e.zoomScale)}}function l(e,t,n,r,o){var i,a,l=e.isRTL,s=e.zoomScale,u=n.originalRect,d=n.vTable,c=1+r/u.width*s*(l?-1:1),f=1+o/u.height*s,p=Math.abs(c-1)>.001,v=Math.abs(f-1)>.001;if(d.cells&&(p||v)){for(var h=0;h=30&&(m.td.style.wordBreak="break-word",m.td.style.whiteSpace="normal",m.td.style.width=y+"px")}if(v)if(d.table.style.setProperty("height",null),0==g){var b=(null!==(a=m.height)&&void 0!==a?a:0)*f/s;b>=20&&(m.td.style.height=b+"px")}else m.td.style.setProperty("height",null)}}return d.writeBack(!0),!0}return!1}function s(e,t,n){return c(e.editor,(0,o.normalizeRect)(e.table.getBoundingClientRect()),e.contentDiv)&&(e.div.style.visibility="visible",u(e,e.div)),e.onEnd(),!1}function u(e,t){var n=e.table,r=e.isRTL,a=(0,o.normalizeRect)(n.getBoundingClientRect());a&&(t.style.top=a.bottom+"px",t.style.left=r?a.left-i-2+"px":a.right+"px")}function d(e,t){t.style.visibility="hidden"}function c(e,t,n){var r=e.getVisibleViewport();if(n&&(0,o.safeInstanceOf)(n,"HTMLElement")&&r&&t){var i=(0,o.normalizeRect)(n.getBoundingClientRect());return!!i&&i.bottom>=t.bottom&&r.bottom>=t.bottom}return!0}t.default=function(e,t,n,f,p,v,h){if(!c(t,(0,o.normalizeRect)(e.getBoundingClientRect()),v))return null;var g=e.ownerDocument,m="rtl"==(0,o.getComputedStyle)(e,"direction"),y=t.getZoomScale(),b={tag:"div",style:"position: fixed; cursor: "+(m?"ne":"nw")+"-resize; user-select: none; border: 1px solid #808080"};null==p||p(b,"TableResizer");var E=(0,o.createElement)(b,g);E.style.width=i+"px",E.style.height=i+"px",(h||g.body).appendChild(E);var C={isRTL:m,table:e,zoomScale:y,onStart:n,onEnd:f,div:E,editor:t,contentDiv:v};return u(C,E),{node:e,div:E,featureHandler:new r.default(E,C,d,{onDragStart:a,onDragging:l,onDragEnd:s},y)}}},6034:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4296),i=n(6344);t.default=function(e,t,n,r,o,s,u){var d=(0,i.normalizeRect)(e.getBoundingClientRect());if(!function(e,t,n){var r=e.getVisibleViewport();if(n&&(0,i.safeInstanceOf)(n,"HTMLElement")&&r&&t){var o=(0,i.normalizeRect)(n.getBoundingClientRect());return!!o&&o.top<=t.top&&r.top<=t.top}return!0}(t,d,s))return null;var c=t.getZoomScale(),f=e.ownerDocument,p={tag:"div",style:"position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080"};null==o||o(p,"TableSelector");var v=(0,i.createElement)(p,f);v.id="_Table_Selector",v.style.width="12px",v.style.height="12px",(u||f.body).appendChild(v);var h={table:e,zoomScale:c,rect:d,isRTL:"rtl"==(0,i.getComputedStyle)(e,"direction")};l(h,v);var g=new a(v,h,l,{onDragEnd:function(e,t){return t.target==v&&n(e.table),!1}},h.zoomScale,r);return{div:v,featureHandler:g,node:e}};var a=function(e){function t(t,n,r,o,i,a,l,s){var u=e.call(this,t,n,r,o,i,l)||this;return u.div=t,u.onMouseOut=a(t),t.addEventListener("mouseout",u.onMouseOut),u}return(0,r.__extends)(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this.onMouseOut&&this.div.removeEventListener("mouseout",this.onMouseOut),this.onMouseOut=null},t}(o.default);function l(e,t){var n=e.rect;n&&(t.style.top=n.top-12+"px",t.style.left=n.left-12-2+"px")}},9963:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableResize=void 0;var r=n(12);Object.defineProperty(t,"TableResize",{enumerable:!0,get:function(){return r.default}})},909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(4548),i="WATERMARK_WRAPPER",a=function(){function e(e,t,n){var a=this;this.watermark=e,this.customClass=n,this.editor=null,this.disposer=null,this.showHideWatermark=function(){if(a.editor){var e=a.editor.hasFocus(),t=a.editor.queryElements((0,r.getEntitySelector)(i)),n=t.length>0;if(e&&n)t.forEach(a.removeWatermark),a.editor.focus();else if(!e&&!n&&a.editor.isEmpty()){var l=(0,o.insertEntity)(a.editor,i,a.editor.getDocument().createTextNode(a.watermark),!1,!1,0);a.customClass&&l.wrapper.classList.add(a.customClass)}}},this.removeWatermark=function(e){var t,n=e.parentNode;null==n||n.removeChild(e),n&&(null===(t=a.editor)||void 0===t?void 0:t.contains(n))&&"DIV"==(0,r.getTagOfNode)(n)&&!n.firstChild&&n.appendChild(a.editor.getDocument().createElement("BR"))},this.format=t||{fontSize:"14px",textColors:{lightModeColor:"#AAAAAA",darkModeColor:"#6B6B6B"}}}return e.prototype.getName=function(){return"Watermark"},e.prototype.initialize=function(e){this.editor=e,this.disposer=this.editor.addDomEventHandler({focus:this.showHideWatermark,blur:this.showHideWatermark})},e.prototype.dispose=function(){var e;null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){var t;if(11==e.eventType||7==e.eventType&&(null===(t=e.data)||void 0===t?void 0:t.type)!=i)this.showHideWatermark();else if(15==e.eventType&&e.entity.type==i&&this.editor){var n=e.operation,o=e.entity.wrapper;8==n?this.removeWatermark(o):0==e.operation&&((0,r.applyFormat)(o,this.format,this.editor.isDarkMode(),this.editor.getDarkColorHandler()),o.spellcheck=!1)}},e}();t.default=a},2939:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Watermark=void 0;var r=n(909);Object.defineProperty(t,"Watermark",{enumerable:!0,get:function(){return r.default}})},1286:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7246),t)},2091:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5160:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleAlignment=void 0,(n=t.CompatibleAlignment||(t.CompatibleAlignment={}))[n.Left=0]="Left",n[n.Center=1]="Center",n[n.Right=2]="Right"},8411:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleBulletListType=void 0,(n=t.CompatibleBulletListType||(t.CompatibleBulletListType={}))[n.Min=1]="Min",n[n.Disc=1]="Disc",n[n.Dash=2]="Dash",n[n.Square=3]="Square",n[n.ShortArrow=4]="ShortArrow",n[n.LongArrow=5]="LongArrow",n[n.UnfilledArrow=6]="UnfilledArrow",n[n.Hyphen=7]="Hyphen",n[n.DoubleLongArrow=8]="DoubleLongArrow",n[n.Circle=9]="Circle",n[n.Max=9]="Max"},5412:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleCapitalization=void 0,(n=t.CompatibleCapitalization||(t.CompatibleCapitalization={})).Sentence="sentence",n.Lowercase="lowercase",n.Uppercase="uppercase",n.CapitalizeEachWord="capitalize"},5588:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleChangeSource=void 0,(n=t.CompatibleChangeSource||(t.CompatibleChangeSource={})).AutoLink="AutoLink",n.CreateLink="CreateLink",n.Format="Format",n.ImageResize="ImageResize",n.Paste="Paste",n.SetContent="SetContent",n.Cut="Cut",n.Drop="Drop",n.InsertEntity="InsertEntity",n.SwitchToDarkMode="SwitchToDarkMode",n.SwitchToLightMode="SwitchToLightMode",n.ListChain="ListChain",n.Keyboard="Keyboard"},6627:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleClearFormatMode=void 0,(n=t.CompatibleClearFormatMode||(t.CompatibleClearFormatMode={}))[n.Inline=0]="Inline",n[n.Block=1]="Block",n[n.AutoDetect=2]="AutoDetect"},2874:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleColorTransformDirection=void 0,(n=t.CompatibleColorTransformDirection||(t.CompatibleColorTransformDirection={}))[n.LightToDark=0]="LightToDark",n[n.DarkToLight=1]="DarkToLight"},1109:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleContentPosition=void 0,(n=t.CompatibleContentPosition||(t.CompatibleContentPosition={}))[n.Begin=0]="Begin",n[n.End=1]="End",n[n.DomEnd=2]="DomEnd",n[n.SelectionStart=3]="SelectionStart",n[n.Outside=4]="Outside",n[n.Range=5]="Range"},695:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleContentType=t.CompatibleContentTypePrefix=void 0,(r=t.CompatibleContentTypePrefix||(t.CompatibleContentTypePrefix={})).Text="text/",r.Image="image/",(n=t.CompatibleContentType||(t.CompatibleContentType={})).PlainText="text/plain",n.HTML="text/html"},7838:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDarkModeDatasetNames=void 0,(n=t.CompatibleDarkModeDatasetNames||(t.CompatibleDarkModeDatasetNames={})).OriginalStyleColor="ogsc",n.OriginalStyleBackgroundColor="ogsb",n.OriginalAttributeColor="ogac",n.OriginalAttributeBackgroundColor="ogab"},35:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDefinitionType=void 0,(n=t.CompatibleDefinitionType||(t.CompatibleDefinitionType={}))[n.Boolean=0]="Boolean",n[n.Number=1]="Number",n[n.String=2]="String",n[n.Array=3]="Array",n[n.Object=4]="Object",n[n.Customize=5]="Customize"},7028:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDelimiterClasses=void 0,(n=t.CompatibleDelimiterClasses||(t.CompatibleDelimiterClasses={})).DELIMITER_BEFORE="entityDelimiterBefore",n.DELIMITER_AFTER="entityDelimiterAfter"},6234:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDirection=void 0,(n=t.CompatibleDirection||(t.CompatibleDirection={}))[n.LeftToRight=0]="LeftToRight",n[n.RightToLeft=1]="RightToLeft"},2805:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDocumentCommand=void 0,(n=t.CompatibleDocumentCommand||(t.CompatibleDocumentCommand={})).AutoUrlDetect="AutoUrlDetect",n.BackColor="backColor",n.Bold="bold",n.ClearAuthenticationCache="ClearAuthenticationCache",n.ContentReadOnly="contentReadOnly",n.Copy="copy",n.CreateLink="createLink",n.Cut="cut",n.DecreaseFontSize="decreaseFontSize",n.DefaultParagraphSeparator="defaultParagraphSeparator",n.Delete="delete",n.EnableInlineTableEditing="enableInlineTableEditing",n.EnableObjectResizing="enableObjectResizing",n.FontName="fontName",n.FontSize="fontSize",n.ForeColor="foreColor",n.FormatBlock="formatBlock",n.ForwardDelete="forwardDelete",n.Heading="heading",n.HiliteColor="hiliteColor",n.IncreaseFontSize="increaseFontSize",n.Indent="indent",n.InsertBrOnReturn="insertBrOnReturn",n.InsertHorizontalRule="insertHorizontalRule",n.InsertHTML="insertHTML",n.InsertImage="insertImage",n.InsertOrderedList="insertOrderedList",n.InsertUnorderedList="insertUnorderedList",n.InsertParagraph="insertParagraph",n.InsertText="insertText",n.Italic="italic",n.JustifyCenter="justifyCenter",n.JustifyFull="justifyFull",n.JustifyLeft="justifyLeft",n.JustifyRight="justifyRight",n.Outdent="outdent",n.Paste="paste",n.Redo="redo",n.RemoveFormat="removeFormat",n.SelectAll="selectAll",n.StrikeThrough="strikeThrough",n.Subscript="subscript",n.Superscript="superscript",n.Underline="underline",n.Undo="undo",n.Unlink="unlink",n.StyleWithCSS="styleWithCSS"},6550:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDocumentPosition=void 0,(n=t.CompatibleDocumentPosition||(t.CompatibleDocumentPosition={}))[n.Same=0]="Same",n[n.Disconnected=1]="Disconnected",n[n.Preceding=2]="Preceding",n[n.Following=4]="Following",n[n.Contains=8]="Contains",n[n.ContainedBy=16]="ContainedBy"},3779:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleEntityClasses=void 0,(n=t.CompatibleEntityClasses||(t.CompatibleEntityClasses={})).ENTITY_INFO_NAME="_Entity",n.ENTITY_TYPE_PREFIX="_EType_",n.ENTITY_ID_PREFIX="_EId_",n.ENTITY_READONLY_PREFIX="_EReadonly_"},8206:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleEntityOperation=void 0,(n=t.CompatibleEntityOperation||(t.CompatibleEntityOperation={}))[n.NewEntity=0]="NewEntity",n[n.Click=1]="Click",n[n.ContextMenu=2]="ContextMenu",n[n.Escape=3]="Escape",n[n.RemoveFromStart=4]="RemoveFromStart",n[n.RemoveFromEnd=5]="RemoveFromEnd",n[n.Overwrite=6]="Overwrite",n[n.PartialOverwrite=7]="PartialOverwrite",n[n.ReplaceTemporaryContent=8]="ReplaceTemporaryContent",n[n.AddShadowRoot=9]="AddShadowRoot",n[n.RemoveShadowRoot=10]="RemoveShadowRoot",n[n.UpdateEntityState=11]="UpdateEntityState"},2322:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleExperimentalFeatures=void 0,(n=t.CompatibleExperimentalFeatures||(t.CompatibleExperimentalFeatures={})).NewIndentation="NewIndentation",n.NewBullet="NewBullet",n.NewNumbering="NewNumbering",n.ListChain="ListChain",n.MergePastedLine="MergePastedLine",n.SingleDirectionResize="SingleDirectionResize",n.PasteWithLinkPreview="PasteWithLinkPreview",n.ImageRotate="ImageRotate",n.ImageCrop="ImageCrop",n.AlwaysApplyDefaultFormat="AlwaysApplyDefaultFormat",n.ConvertSingleImageBody="ConvertSingleImageBody",n.TableAlignment="TableAlignment",n.AdaptiveHandlesResizer="AdaptiveHandlesResizer",n.AutoHyphen="AutoHyphen",n.PendingStyleBasedFormat="PendingStyleBasedFormat",n.NormalizeList="NormalizeList",n.ImageSelection="ImageSelection",n.VariableBasedDarkColor="VariableBasedDarkColor",n.ListItemAlignment="ListItemAlignment",n.DefaultFormatInSpan="DefaultFormatInSpan",n.DefaultFormatOnContainer="DefaultFormatOnContainer",n.ReusableContentModel="ReusableContentModel",n.EditWithContentModel="EditWithContentModel",n.TabKeyTextFeatures="TabKeyTextFeatures",n.AutoFormatList="AutoFormatList",n.ReuseAllAncestorListElements="ReuseAllAncestorListElements",n.DeleteTableWithBackspace="DeleteTableWithBackspace",n.InlineEntityReadOnlyDelimiters="InlineEntityReadOnlyDelimiters",n.ContentModelPaste="ContentModelPaste",n.DisableListChain="DisableListChain"},3271:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleFontSizeChange=void 0,(n=t.CompatibleFontSizeChange||(t.CompatibleFontSizeChange={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},2776:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleGetContentMode=void 0,(n=t.CompatibleGetContentMode||(t.CompatibleGetContentMode={}))[n.CleanHTML=0]="CleanHTML",n[n.RawHTMLOnly=1]="RawHTMLOnly",n[n.RawHTMLWithSelection=2]="RawHTMLWithSelection",n[n.PlainText=3]="PlainText",n[n.PlainTextFast=4]="PlainTextFast"},7705:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleImageEditOperation=void 0,(n=t.CompatibleImageEditOperation||(t.CompatibleImageEditOperation={}))[n.None=0]="None",n[n.CornerResize=1]="CornerResize",n[n.SideResize=2]="SideResize",n[n.Resize=3]="Resize",n[n.Rotate=4]="Rotate",n[n.ResizeAndRotate=7]="ResizeAndRotate",n[n.Crop=8]="Crop",n[n.All=15]="All"},6020:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleIndentation=void 0,(n=t.CompatibleIndentation||(t.CompatibleIndentation={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},2693:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKeys=void 0,(n=t.CompatibleKeys||(t.CompatibleKeys={}))[n.NULL=0]="NULL",n[n.BACKSPACE=8]="BACKSPACE",n[n.TAB=9]="TAB",n[n.ENTER=13]="ENTER",n[n.SHIFT=16]="SHIFT",n[n.CTRL_LEFT=17]="CTRL_LEFT",n[n.ALT=18]="ALT",n[n.ESCAPE=27]="ESCAPE",n[n.SPACE=32]="SPACE",n[n.PAGEUP=33]="PAGEUP",n[n.END=35]="END",n[n.HOME=36]="HOME",n[n.LEFT=37]="LEFT",n[n.UP=38]="UP",n[n.RIGHT=39]="RIGHT",n[n.DOWN=40]="DOWN",n[n.PRINT_SCREEN=44]="PRINT_SCREEN",n[n.DELETE=46]="DELETE",n[n.EIGHT_ASTIRISK=56]="EIGHT_ASTIRISK",n[n.EIGHT_ASTERISK=56]="EIGHT_ASTERISK",n[n.B=66]="B",n[n.I=73]="I",n[n.U=85]="U",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.META_LEFT=91]="META_LEFT",n[n.COMMA=188]="COMMA",n[n.DASH_UNDERSCORE=189]="DASH_UNDERSCORE",n[n.PERIOD=190]="PERIOD",n[n.FORWARDSLASH=191]="FORWARDSLASH",n[n.FORWARD_SLASH=191]="FORWARD_SLASH",n[n.GRAVE_TILDE=192]="GRAVE_TILDE",n[n.CONTENTCHANGED=257]="CONTENTCHANGED",n[n.RANGE=258]="RANGE",n[n.Ctrl=4096]="Ctrl",n[n.Meta=8192]="Meta",n[n.Shift=16384]="Shift"},4845:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKnownCreateElementDataIndex=void 0,(n=t.CompatibleKnownCreateElementDataIndex||(t.CompatibleKnownCreateElementDataIndex={}))[n.None=0]="None",n[n.EmptyLine=1]="EmptyLine",n[n.BlockquoteWrapper=2]="BlockquoteWrapper",n[n.CopyPasteTempDiv=3]="CopyPasteTempDiv",n[n.BlockListItem=4]="BlockListItem",n[n.ContextMenuWrapper=5]="ContextMenuWrapper",n[n.ImageEditWrapper=6]="ImageEditWrapper",n[n.TableHorizontalResizer=7]="TableHorizontalResizer",n[n.TableVerticalResizer=8]="TableVerticalResizer",n[n.TableResizerLTR=9]="TableResizerLTR",n[n.TableResizerRTL=10]="TableResizerRTL",n[n.TableSelector=11]="TableSelector",n[n.EmptyLineFormatInSpan=12]="EmptyLineFormatInSpan"},9603:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKnownPasteSourceType=void 0,(n=t.CompatibleKnownPasteSourceType||(t.CompatibleKnownPasteSourceType={}))[n.WordDesktop=0]="WordDesktop",n[n.ExcelDesktop=1]="ExcelDesktop",n[n.ExcelOnline=2]="ExcelOnline",n[n.PowerPointDesktop=3]="PowerPointDesktop",n[n.GoogleSheets=4]="GoogleSheets",n[n.WacComponents=5]="WacComponents",n[n.Default=6]="Default",n[n.SingleImage=7]="SingleImage"},3115:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleListType=void 0,(n=t.CompatibleListType||(t.CompatibleListType={}))[n.None=0]="None",n[n.Ordered=1]="Ordered",n[n.Unordered=2]="Unordered"},6993:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleNodeType=void 0,(n=t.CompatibleNodeType||(t.CompatibleNodeType={}))[n.Element=1]="Element",n[n.Attribute=2]="Attribute",n[n.Text=3]="Text",n[n.ProcessingInstruction=7]="ProcessingInstruction",n[n.Comment=8]="Comment",n[n.Document=9]="Document",n[n.DocumentType=10]="DocumentType",n[n.DocumentFragment=11]="DocumentFragment"},1040:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleNumberingListType=void 0,(n=t.CompatibleNumberingListType||(t.CompatibleNumberingListType={}))[n.Min=1]="Min",n[n.Decimal=1]="Decimal",n[n.DecimalDash=2]="DecimalDash",n[n.DecimalParenthesis=3]="DecimalParenthesis",n[n.DecimalDoubleParenthesis=4]="DecimalDoubleParenthesis",n[n.LowerAlpha=5]="LowerAlpha",n[n.LowerAlphaParenthesis=6]="LowerAlphaParenthesis",n[n.LowerAlphaDoubleParenthesis=7]="LowerAlphaDoubleParenthesis",n[n.LowerAlphaDash=8]="LowerAlphaDash",n[n.UpperAlpha=9]="UpperAlpha",n[n.UpperAlphaParenthesis=10]="UpperAlphaParenthesis",n[n.UpperAlphaDoubleParenthesis=11]="UpperAlphaDoubleParenthesis",n[n.UpperAlphaDash=12]="UpperAlphaDash",n[n.LowerRoman=13]="LowerRoman",n[n.LowerRomanParenthesis=14]="LowerRomanParenthesis",n[n.LowerRomanDoubleParenthesis=15]="LowerRomanDoubleParenthesis",n[n.LowerRomanDash=16]="LowerRomanDash",n[n.UpperRoman=17]="UpperRoman",n[n.UpperRomanParenthesis=18]="UpperRomanParenthesis",n[n.UpperRomanDoubleParenthesis=19]="UpperRomanDoubleParenthesis",n[n.UpperRomanDash=20]="UpperRomanDash",n[n.Max=20]="Max"},610:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePasteType=void 0,(n=t.CompatiblePasteType||(t.CompatiblePasteType={}))[n.Normal=0]="Normal",n[n.AsPlainText=1]="AsPlainText",n[n.MergeFormat=2]="MergeFormat",n[n.AsImage=3]="AsImage"},5912:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePluginEventType=void 0,(n=t.CompatiblePluginEventType||(t.CompatiblePluginEventType={}))[n.KeyDown=0]="KeyDown",n[n.KeyPress=1]="KeyPress",n[n.KeyUp=2]="KeyUp",n[n.Input=3]="Input",n[n.CompositionEnd=4]="CompositionEnd",n[n.MouseDown=5]="MouseDown",n[n.MouseUp=6]="MouseUp",n[n.ContentChanged=7]="ContentChanged",n[n.ExtractContentWithDom=8]="ExtractContentWithDom",n[n.BeforeCutCopy=9]="BeforeCutCopy",n[n.BeforePaste=10]="BeforePaste",n[n.EditorReady=11]="EditorReady",n[n.BeforeDispose=12]="BeforeDispose",n[n.PendingFormatStateChanged=13]="PendingFormatStateChanged",n[n.Scroll=14]="Scroll",n[n.EntityOperation=15]="EntityOperation",n[n.ContextMenu=16]="ContextMenu",n[n.EnteredShadowEdit=17]="EnteredShadowEdit",n[n.LeavingShadowEdit=18]="LeavingShadowEdit",n[n.EditImage=19]="EditImage",n[n.BeforeSetContent=20]="BeforeSetContent",n[n.ZoomChanged=21]="ZoomChanged",n[n.SelectionChanged=22]="SelectionChanged",n[n.BeforeKeyboardEditing=23]="BeforeKeyboardEditing"},685:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePositionType=void 0,(n=t.CompatiblePositionType||(t.CompatiblePositionType={}))[n.Begin=0]="Begin",n[n.End=-1]="End",n[n.Before=-2]="Before",n[n.After=-3]="After"},8465:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleQueryScope=void 0,(n=t.CompatibleQueryScope||(t.CompatibleQueryScope={}))[n.Body=0]="Body",n[n.OnSelection=1]="OnSelection",n[n.InSelection=2]="InSelection"},2906:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleRegionType=void 0,(n=t.CompatibleRegionType||(t.CompatibleRegionType={}))[n.Table=0]="Table"},895:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleSelectionRangeTypes=void 0,(n=t.CompatibleSelectionRangeTypes||(t.CompatibleSelectionRangeTypes={}))[n.Normal=0]="Normal",n[n.TableSelection=1]="TableSelection",n[n.ImageSelection=2]="ImageSelection"},3088:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableBorderFormat=void 0,(n=t.CompatibleTableBorderFormat||(t.CompatibleTableBorderFormat={}))[n.DEFAULT=0]="DEFAULT",n[n.LIST_WITH_SIDE_BORDERS=1]="LIST_WITH_SIDE_BORDERS",n[n.NO_HEADER_BORDERS=2]="NO_HEADER_BORDERS",n[n.NO_SIDE_BORDERS=3]="NO_SIDE_BORDERS",n[n.FIRST_COLUMN_HEADER_EXTERNAL=4]="FIRST_COLUMN_HEADER_EXTERNAL",n[n.ESPECIAL_TYPE_1=5]="ESPECIAL_TYPE_1",n[n.ESPECIAL_TYPE_2=6]="ESPECIAL_TYPE_2",n[n.ESPECIAL_TYPE_3=7]="ESPECIAL_TYPE_3",n[n.CLEAR=8]="CLEAR"},6011:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableOperation=void 0,(n=t.CompatibleTableOperation||(t.CompatibleTableOperation={}))[n.InsertAbove=0]="InsertAbove",n[n.InsertBelow=1]="InsertBelow",n[n.InsertLeft=2]="InsertLeft",n[n.InsertRight=3]="InsertRight",n[n.DeleteTable=4]="DeleteTable",n[n.DeleteColumn=5]="DeleteColumn",n[n.DeleteRow=6]="DeleteRow",n[n.MergeAbove=7]="MergeAbove",n[n.MergeBelow=8]="MergeBelow",n[n.MergeLeft=9]="MergeLeft",n[n.MergeRight=10]="MergeRight",n[n.MergeCells=11]="MergeCells",n[n.SplitHorizontally=12]="SplitHorizontally",n[n.SplitVertically=13]="SplitVertically",n[n.AlignCenter=14]="AlignCenter",n[n.AlignLeft=15]="AlignLeft",n[n.AlignRight=16]="AlignRight",n[n.AlignCellLeft=17]="AlignCellLeft",n[n.AlignCellCenter=18]="AlignCellCenter",n[n.AlignCellRight=19]="AlignCellRight",n[n.AlignCellTop=20]="AlignCellTop",n[n.AlignCellMiddle=21]="AlignCellMiddle",n[n.AlignCellBottom=22]="AlignCellBottom"},5414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableOperation=t.CompatibleTableBorderFormat=t.CompatibleSelectionRangeTypes=t.CompatibleRegionType=t.CompatibleQueryScope=t.CompatiblePositionType=t.CompatiblePluginEventType=t.CompatiblePasteType=t.CompatibleNumberingListType=t.CompatibleNodeType=t.CompatibleListType=t.CompatibleKnownPasteSourceType=t.CompatibleKnownCreateElementDataIndex=t.CompatibleKeys=t.CompatibleIndentation=t.CompatibleImageEditOperation=t.CompatibleGetContentMode=t.CompatibleFontSizeChange=t.CompatibleExperimentalFeatures=t.CompatibleEntityOperation=t.CompatibleEntityClasses=t.CompatibleDocumentPosition=t.CompatibleDocumentCommand=t.CompatibleDirection=t.CompatibleDelimiterClasses=t.CompatibleDefinitionType=t.CompatibleDarkModeDatasetNames=t.CompatibleContentType=t.CompatibleContentTypePrefix=t.CompatibleContentPosition=t.CompatibleColorTransformDirection=t.CompatibleClearFormatMode=t.CompatibleChangeSource=t.CompatibleCapitalization=t.CompatibleBulletListType=t.CompatibleAlignment=void 0;var r=n(5160);Object.defineProperty(t,"CompatibleAlignment",{enumerable:!0,get:function(){return r.CompatibleAlignment}});var o=n(8411);Object.defineProperty(t,"CompatibleBulletListType",{enumerable:!0,get:function(){return o.CompatibleBulletListType}});var i=n(5412);Object.defineProperty(t,"CompatibleCapitalization",{enumerable:!0,get:function(){return i.CompatibleCapitalization}});var a=n(5588);Object.defineProperty(t,"CompatibleChangeSource",{enumerable:!0,get:function(){return a.CompatibleChangeSource}});var l=n(6627);Object.defineProperty(t,"CompatibleClearFormatMode",{enumerable:!0,get:function(){return l.CompatibleClearFormatMode}});var s=n(2874);Object.defineProperty(t,"CompatibleColorTransformDirection",{enumerable:!0,get:function(){return s.CompatibleColorTransformDirection}});var u=n(1109);Object.defineProperty(t,"CompatibleContentPosition",{enumerable:!0,get:function(){return u.CompatibleContentPosition}});var d=n(695);Object.defineProperty(t,"CompatibleContentTypePrefix",{enumerable:!0,get:function(){return d.CompatibleContentTypePrefix}}),Object.defineProperty(t,"CompatibleContentType",{enumerable:!0,get:function(){return d.CompatibleContentType}});var c=n(7838);Object.defineProperty(t,"CompatibleDarkModeDatasetNames",{enumerable:!0,get:function(){return c.CompatibleDarkModeDatasetNames}});var f=n(35);Object.defineProperty(t,"CompatibleDefinitionType",{enumerable:!0,get:function(){return f.CompatibleDefinitionType}});var p=n(7028);Object.defineProperty(t,"CompatibleDelimiterClasses",{enumerable:!0,get:function(){return p.CompatibleDelimiterClasses}});var v=n(6234);Object.defineProperty(t,"CompatibleDirection",{enumerable:!0,get:function(){return v.CompatibleDirection}});var h=n(2805);Object.defineProperty(t,"CompatibleDocumentCommand",{enumerable:!0,get:function(){return h.CompatibleDocumentCommand}});var g=n(6550);Object.defineProperty(t,"CompatibleDocumentPosition",{enumerable:!0,get:function(){return g.CompatibleDocumentPosition}});var m=n(3779);Object.defineProperty(t,"CompatibleEntityClasses",{enumerable:!0,get:function(){return m.CompatibleEntityClasses}});var y=n(8206);Object.defineProperty(t,"CompatibleEntityOperation",{enumerable:!0,get:function(){return y.CompatibleEntityOperation}});var b=n(2322);Object.defineProperty(t,"CompatibleExperimentalFeatures",{enumerable:!0,get:function(){return b.CompatibleExperimentalFeatures}});var E=n(3271);Object.defineProperty(t,"CompatibleFontSizeChange",{enumerable:!0,get:function(){return E.CompatibleFontSizeChange}});var C=n(2776);Object.defineProperty(t,"CompatibleGetContentMode",{enumerable:!0,get:function(){return C.CompatibleGetContentMode}});var S=n(7705);Object.defineProperty(t,"CompatibleImageEditOperation",{enumerable:!0,get:function(){return S.CompatibleImageEditOperation}});var T=n(6020);Object.defineProperty(t,"CompatibleIndentation",{enumerable:!0,get:function(){return T.CompatibleIndentation}});var P=n(2693);Object.defineProperty(t,"CompatibleKeys",{enumerable:!0,get:function(){return P.CompatibleKeys}});var _=n(4845);Object.defineProperty(t,"CompatibleKnownCreateElementDataIndex",{enumerable:!0,get:function(){return _.CompatibleKnownCreateElementDataIndex}});var w=n(9603);Object.defineProperty(t,"CompatibleKnownPasteSourceType",{enumerable:!0,get:function(){return w.CompatibleKnownPasteSourceType}});var O=n(3115);Object.defineProperty(t,"CompatibleListType",{enumerable:!0,get:function(){return O.CompatibleListType}});var D=n(6993);Object.defineProperty(t,"CompatibleNodeType",{enumerable:!0,get:function(){return D.CompatibleNodeType}});var M=n(1040);Object.defineProperty(t,"CompatibleNumberingListType",{enumerable:!0,get:function(){return M.CompatibleNumberingListType}});var A=n(610);Object.defineProperty(t,"CompatiblePasteType",{enumerable:!0,get:function(){return A.CompatiblePasteType}});var R=n(5912);Object.defineProperty(t,"CompatiblePluginEventType",{enumerable:!0,get:function(){return R.CompatiblePluginEventType}});var I=n(685);Object.defineProperty(t,"CompatiblePositionType",{enumerable:!0,get:function(){return I.CompatiblePositionType}});var L=n(8465);Object.defineProperty(t,"CompatibleQueryScope",{enumerable:!0,get:function(){return L.CompatibleQueryScope}});var N=n(2906);Object.defineProperty(t,"CompatibleRegionType",{enumerable:!0,get:function(){return N.CompatibleRegionType}});var x=n(895);Object.defineProperty(t,"CompatibleSelectionRangeTypes",{enumerable:!0,get:function(){return x.CompatibleSelectionRangeTypes}});var k=n(3088);Object.defineProperty(t,"CompatibleTableBorderFormat",{enumerable:!0,get:function(){return k.CompatibleTableBorderFormat}});var j=n(6011);Object.defineProperty(t,"CompatibleTableOperation",{enumerable:!0,get:function(){return j.CompatibleTableOperation}})},7246:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(2091),t),(0,r.__exportStar)(n(3424),t),(0,r.__exportStar)(n(5414),t),(0,r.__exportStar)(n(796),t),(0,r.__exportStar)(n(7882),t),(0,r.__exportStar)(n(8568),t)},3424:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4625:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Alignment=void 0,(n=t.Alignment||(t.Alignment={}))[n.Left=0]="Left",n[n.Center=1]="Center",n[n.Right=2]="Right"},8982:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.BulletListType=void 0,(n=t.BulletListType||(t.BulletListType={}))[n.Min=1]="Min",n[n.Disc=1]="Disc",n[n.Dash=2]="Dash",n[n.Square=3]="Square",n[n.ShortArrow=4]="ShortArrow",n[n.LongArrow=5]="LongArrow",n[n.UnfilledArrow=6]="UnfilledArrow",n[n.Hyphen=7]="Hyphen",n[n.DoubleLongArrow=8]="DoubleLongArrow",n[n.Circle=9]="Circle",n[n.Max=9]="Max"},9003:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Capitalization=void 0,(n=t.Capitalization||(t.Capitalization={})).Sentence="sentence",n.Lowercase="lowercase",n.Uppercase="uppercase",n.CapitalizeEachWord="capitalize"},8591:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeSource=void 0,(n=t.ChangeSource||(t.ChangeSource={})).AutoLink="AutoLink",n.CreateLink="CreateLink",n.Format="Format",n.ImageResize="ImageResize",n.Paste="Paste",n.SetContent="SetContent",n.Cut="Cut",n.Drop="Drop",n.InsertEntity="InsertEntity",n.SwitchToDarkMode="SwitchToDarkMode",n.SwitchToLightMode="SwitchToLightMode",n.ListChain="ListChain",n.Keyboard="Keyboard"},2101:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClearFormatMode=void 0,(n=t.ClearFormatMode||(t.ClearFormatMode={}))[n.Inline=0]="Inline",n[n.Block=1]="Block",n[n.AutoDetect=2]="AutoDetect"},4471:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ColorTransformDirection=void 0,(n=t.ColorTransformDirection||(t.ColorTransformDirection={}))[n.LightToDark=0]="LightToDark",n[n.DarkToLight=1]="DarkToLight"},8983:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ContentPosition=void 0,(n=t.ContentPosition||(t.ContentPosition={}))[n.Begin=0]="Begin",n[n.End=1]="End",n[n.DomEnd=2]="DomEnd",n[n.SelectionStart=3]="SelectionStart",n[n.Outside=4]="Outside",n[n.Range=5]="Range"},7157:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.ContentType=t.ContentTypePrefix=void 0,(r=t.ContentTypePrefix||(t.ContentTypePrefix={})).Text="text/",r.Image="image/",(n=t.ContentType||(t.ContentType={})).PlainText="text/plain",n.HTML="text/html"},4490:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DarkModeDatasetNames=void 0,(n=t.DarkModeDatasetNames||(t.DarkModeDatasetNames={})).OriginalStyleColor="ogsc",n.OriginalStyleBackgroundColor="ogsb",n.OriginalAttributeColor="ogac",n.OriginalAttributeBackgroundColor="ogab"},9097:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DefinitionType=void 0,(n=t.DefinitionType||(t.DefinitionType={}))[n.Boolean=0]="Boolean",n[n.Number=1]="Number",n[n.String=2]="String",n[n.Array=3]="Array",n[n.Object=4]="Object",n[n.Customize=5]="Customize"},2910:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DelimiterClasses=void 0,(n=t.DelimiterClasses||(t.DelimiterClasses={})).DELIMITER_BEFORE="entityDelimiterBefore",n.DELIMITER_AFTER="entityDelimiterAfter"},265:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Direction=void 0,(n=t.Direction||(t.Direction={}))[n.LeftToRight=0]="LeftToRight",n[n.RightToLeft=1]="RightToLeft"},6386:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentCommand=void 0,(n=t.DocumentCommand||(t.DocumentCommand={})).AutoUrlDetect="AutoUrlDetect",n.BackColor="backColor",n.Bold="bold",n.ClearAuthenticationCache="ClearAuthenticationCache",n.ContentReadOnly="contentReadOnly",n.Copy="copy",n.CreateLink="createLink",n.Cut="cut",n.DecreaseFontSize="decreaseFontSize",n.DefaultParagraphSeparator="defaultParagraphSeparator",n.Delete="delete",n.EnableInlineTableEditing="enableInlineTableEditing",n.EnableObjectResizing="enableObjectResizing",n.FontName="fontName",n.FontSize="fontSize",n.ForeColor="foreColor",n.FormatBlock="formatBlock",n.ForwardDelete="forwardDelete",n.Heading="heading",n.HiliteColor="hiliteColor",n.IncreaseFontSize="increaseFontSize",n.Indent="indent",n.InsertBrOnReturn="insertBrOnReturn",n.InsertHorizontalRule="insertHorizontalRule",n.InsertHTML="insertHTML",n.InsertImage="insertImage",n.InsertOrderedList="insertOrderedList",n.InsertUnorderedList="insertUnorderedList",n.InsertParagraph="insertParagraph",n.InsertText="insertText",n.Italic="italic",n.JustifyCenter="justifyCenter",n.JustifyFull="justifyFull",n.JustifyLeft="justifyLeft",n.JustifyRight="justifyRight",n.Outdent="outdent",n.Paste="paste",n.Redo="redo",n.RemoveFormat="removeFormat",n.SelectAll="selectAll",n.StrikeThrough="strikeThrough",n.Subscript="subscript",n.Superscript="superscript",n.Underline="underline",n.Undo="undo",n.Unlink="unlink",n.StyleWithCSS="styleWithCSS"},565:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentPosition=void 0,(n=t.DocumentPosition||(t.DocumentPosition={}))[n.Same=0]="Same",n[n.Disconnected=1]="Disconnected",n[n.Preceding=2]="Preceding",n[n.Following=4]="Following",n[n.Contains=8]="Contains",n[n.ContainedBy=16]="ContainedBy"},2372:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.EntityClasses=void 0,(n=t.EntityClasses||(t.EntityClasses={})).ENTITY_INFO_NAME="_Entity",n.ENTITY_TYPE_PREFIX="_EType_",n.ENTITY_ID_PREFIX="_EId_",n.ENTITY_READONLY_PREFIX="_EReadonly_"},9468:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.EntityOperation=void 0,(n=t.EntityOperation||(t.EntityOperation={}))[n.NewEntity=0]="NewEntity",n[n.Click=1]="Click",n[n.ContextMenu=2]="ContextMenu",n[n.Escape=3]="Escape",n[n.RemoveFromStart=4]="RemoveFromStart",n[n.RemoveFromEnd=5]="RemoveFromEnd",n[n.Overwrite=6]="Overwrite",n[n.PartialOverwrite=7]="PartialOverwrite",n[n.ReplaceTemporaryContent=8]="ReplaceTemporaryContent",n[n.AddShadowRoot=9]="AddShadowRoot",n[n.RemoveShadowRoot=10]="RemoveShadowRoot",n[n.UpdateEntityState=11]="UpdateEntityState"},9084:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ExperimentalFeatures=void 0,(n=t.ExperimentalFeatures||(t.ExperimentalFeatures={})).NewIndentation="NewIndentation",n.NewBullet="NewBullet",n.NewNumbering="NewNumbering",n.ListChain="ListChain",n.MergePastedLine="MergePastedLine",n.SingleDirectionResize="SingleDirectionResize",n.PasteWithLinkPreview="PasteWithLinkPreview",n.ImageRotate="ImageRotate",n.ImageCrop="ImageCrop",n.AlwaysApplyDefaultFormat="AlwaysApplyDefaultFormat",n.ConvertSingleImageBody="ConvertSingleImageBody",n.TableAlignment="TableAlignment",n.AdaptiveHandlesResizer="AdaptiveHandlesResizer",n.AutoHyphen="AutoHyphen",n.PendingStyleBasedFormat="PendingStyleBasedFormat",n.NormalizeList="NormalizeList",n.ImageSelection="ImageSelection",n.VariableBasedDarkColor="VariableBasedDarkColor",n.ListItemAlignment="ListItemAlignment",n.DefaultFormatInSpan="DefaultFormatInSpan",n.DefaultFormatOnContainer="DefaultFormatOnContainer",n.ReusableContentModel="ReusableContentModel",n.EditWithContentModel="EditWithContentModel",n.TabKeyTextFeatures="TabKeyTextFeatures",n.AutoFormatList="AutoFormatList",n.ReuseAllAncestorListElements="ReuseAllAncestorListElements",n.DeleteTableWithBackspace="DeleteTableWithBackspace",n.InlineEntityReadOnlyDelimiters="InlineEntityReadOnlyDelimiters",n.ContentModelPaste="ContentModelPaste",n.DisableListChain="DisableListChain"},5397:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.FontSizeChange=void 0,(n=t.FontSizeChange||(t.FontSizeChange={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},4051:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.GetContentMode=void 0,(n=t.GetContentMode||(t.GetContentMode={}))[n.CleanHTML=0]="CleanHTML",n[n.RawHTMLOnly=1]="RawHTMLOnly",n[n.RawHTMLWithSelection=2]="RawHTMLWithSelection",n[n.PlainText=3]="PlainText",n[n.PlainTextFast=4]="PlainTextFast"},2681:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ImageEditOperation=void 0,(n=t.ImageEditOperation||(t.ImageEditOperation={}))[n.None=0]="None",n[n.CornerResize=1]="CornerResize",n[n.SideResize=2]="SideResize",n[n.Resize=3]="Resize",n[n.Rotate=4]="Rotate",n[n.ResizeAndRotate=7]="ResizeAndRotate",n[n.Crop=8]="Crop",n[n.All=15]="All"},6039:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Indentation=void 0,(n=t.Indentation||(t.Indentation={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},3692:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Keys=void 0,(n=t.Keys||(t.Keys={}))[n.NULL=0]="NULL",n[n.BACKSPACE=8]="BACKSPACE",n[n.TAB=9]="TAB",n[n.ENTER=13]="ENTER",n[n.SHIFT=16]="SHIFT",n[n.CTRL_LEFT=17]="CTRL_LEFT",n[n.ALT=18]="ALT",n[n.ESCAPE=27]="ESCAPE",n[n.SPACE=32]="SPACE",n[n.PAGEUP=33]="PAGEUP",n[n.END=35]="END",n[n.HOME=36]="HOME",n[n.LEFT=37]="LEFT",n[n.UP=38]="UP",n[n.RIGHT=39]="RIGHT",n[n.DOWN=40]="DOWN",n[n.PRINT_SCREEN=44]="PRINT_SCREEN",n[n.DELETE=46]="DELETE",n[n.EIGHT_ASTIRISK=56]="EIGHT_ASTIRISK",n[n.EIGHT_ASTERISK=56]="EIGHT_ASTERISK",n[n.B=66]="B",n[n.I=73]="I",n[n.U=85]="U",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.META_LEFT=91]="META_LEFT",n[n.COMMA=188]="COMMA",n[n.DASH_UNDERSCORE=189]="DASH_UNDERSCORE",n[n.PERIOD=190]="PERIOD",n[n.FORWARDSLASH=191]="FORWARDSLASH",n[n.FORWARD_SLASH=191]="FORWARD_SLASH",n[n.GRAVE_TILDE=192]="GRAVE_TILDE",n[n.CONTENTCHANGED=257]="CONTENTCHANGED",n[n.RANGE=258]="RANGE",n[n.Ctrl=4096]="Ctrl",n[n.Meta=8192]="Meta",n[n.Shift=16384]="Shift"},9278:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownCreateElementDataIndex=void 0,(n=t.KnownCreateElementDataIndex||(t.KnownCreateElementDataIndex={}))[n.None=0]="None",n[n.EmptyLine=1]="EmptyLine",n[n.BlockquoteWrapper=2]="BlockquoteWrapper",n[n.CopyPasteTempDiv=3]="CopyPasteTempDiv",n[n.BlockListItem=4]="BlockListItem",n[n.ContextMenuWrapper=5]="ContextMenuWrapper",n[n.ImageEditWrapper=6]="ImageEditWrapper",n[n.TableHorizontalResizer=7]="TableHorizontalResizer",n[n.TableVerticalResizer=8]="TableVerticalResizer",n[n.TableResizerLTR=9]="TableResizerLTR",n[n.TableResizerRTL=10]="TableResizerRTL",n[n.TableSelector=11]="TableSelector",n[n.EmptyLineFormatInSpan=12]="EmptyLineFormatInSpan"},2342:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownPasteSourceType=void 0,(n=t.KnownPasteSourceType||(t.KnownPasteSourceType={}))[n.WordDesktop=0]="WordDesktop",n[n.ExcelDesktop=1]="ExcelDesktop",n[n.ExcelOnline=2]="ExcelOnline",n[n.PowerPointDesktop=3]="PowerPointDesktop",n[n.GoogleSheets=4]="GoogleSheets",n[n.WacComponents=5]="WacComponents",n[n.Default=6]="Default",n[n.SingleImage=7]="SingleImage"},8185:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ListType=void 0,(n=t.ListType||(t.ListType={}))[n.None=0]="None",n[n.Ordered=1]="Ordered",n[n.Unordered=2]="Unordered"},9883:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.NodeType=void 0,(n=t.NodeType||(t.NodeType={}))[n.Element=1]="Element",n[n.Attribute=2]="Attribute",n[n.Text=3]="Text",n[n.ProcessingInstruction=7]="ProcessingInstruction",n[n.Comment=8]="Comment",n[n.Document=9]="Document",n[n.DocumentType=10]="DocumentType",n[n.DocumentFragment=11]="DocumentFragment"},7821:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.NumberingListType=void 0,(n=t.NumberingListType||(t.NumberingListType={}))[n.Min=1]="Min",n[n.Decimal=1]="Decimal",n[n.DecimalDash=2]="DecimalDash",n[n.DecimalParenthesis=3]="DecimalParenthesis",n[n.DecimalDoubleParenthesis=4]="DecimalDoubleParenthesis",n[n.LowerAlpha=5]="LowerAlpha",n[n.LowerAlphaParenthesis=6]="LowerAlphaParenthesis",n[n.LowerAlphaDoubleParenthesis=7]="LowerAlphaDoubleParenthesis",n[n.LowerAlphaDash=8]="LowerAlphaDash",n[n.UpperAlpha=9]="UpperAlpha",n[n.UpperAlphaParenthesis=10]="UpperAlphaParenthesis",n[n.UpperAlphaDoubleParenthesis=11]="UpperAlphaDoubleParenthesis",n[n.UpperAlphaDash=12]="UpperAlphaDash",n[n.LowerRoman=13]="LowerRoman",n[n.LowerRomanParenthesis=14]="LowerRomanParenthesis",n[n.LowerRomanDoubleParenthesis=15]="LowerRomanDoubleParenthesis",n[n.LowerRomanDash=16]="LowerRomanDash",n[n.UpperRoman=17]="UpperRoman",n[n.UpperRomanParenthesis=18]="UpperRomanParenthesis",n[n.UpperRomanDoubleParenthesis=19]="UpperRomanDoubleParenthesis",n[n.UpperRomanDash=20]="UpperRomanDash",n[n.Max=20]="Max"},2368:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PasteType=void 0,(n=t.PasteType||(t.PasteType={}))[n.Normal=0]="Normal",n[n.AsPlainText=1]="AsPlainText",n[n.MergeFormat=2]="MergeFormat",n[n.AsImage=3]="AsImage"},2688:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PluginEventType=void 0,(n=t.PluginEventType||(t.PluginEventType={}))[n.KeyDown=0]="KeyDown",n[n.KeyPress=1]="KeyPress",n[n.KeyUp=2]="KeyUp",n[n.Input=3]="Input",n[n.CompositionEnd=4]="CompositionEnd",n[n.MouseDown=5]="MouseDown",n[n.MouseUp=6]="MouseUp",n[n.ContentChanged=7]="ContentChanged",n[n.ExtractContentWithDom=8]="ExtractContentWithDom",n[n.BeforeCutCopy=9]="BeforeCutCopy",n[n.BeforePaste=10]="BeforePaste",n[n.EditorReady=11]="EditorReady",n[n.BeforeDispose=12]="BeforeDispose",n[n.PendingFormatStateChanged=13]="PendingFormatStateChanged",n[n.Scroll=14]="Scroll",n[n.EntityOperation=15]="EntityOperation",n[n.ContextMenu=16]="ContextMenu",n[n.EnteredShadowEdit=17]="EnteredShadowEdit",n[n.LeavingShadowEdit=18]="LeavingShadowEdit",n[n.EditImage=19]="EditImage",n[n.BeforeSetContent=20]="BeforeSetContent",n[n.ZoomChanged=21]="ZoomChanged",n[n.SelectionChanged=22]="SelectionChanged",n[n.BeforeKeyboardEditing=23]="BeforeKeyboardEditing"},758:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PositionType=void 0,(n=t.PositionType||(t.PositionType={}))[n.Begin=0]="Begin",n[n.End=-1]="End",n[n.Before=-2]="Before",n[n.After=-3]="After"},8827:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.QueryScope=void 0,(n=t.QueryScope||(t.QueryScope={}))[n.Body=0]="Body",n[n.OnSelection=1]="OnSelection",n[n.InSelection=2]="InSelection"},2025:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.RegionType=void 0,(n=t.RegionType||(t.RegionType={}))[n.Table=0]="Table"},3852:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRangeTypes=void 0,(n=t.SelectionRangeTypes||(t.SelectionRangeTypes={}))[n.Normal=0]="Normal",n[n.TableSelection=1]="TableSelection",n[n.ImageSelection=2]="ImageSelection"},372:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TableBorderFormat=void 0,(n=t.TableBorderFormat||(t.TableBorderFormat={}))[n.DEFAULT=0]="DEFAULT",n[n.LIST_WITH_SIDE_BORDERS=1]="LIST_WITH_SIDE_BORDERS",n[n.NO_HEADER_BORDERS=2]="NO_HEADER_BORDERS",n[n.NO_SIDE_BORDERS=3]="NO_SIDE_BORDERS",n[n.FIRST_COLUMN_HEADER_EXTERNAL=4]="FIRST_COLUMN_HEADER_EXTERNAL",n[n.ESPECIAL_TYPE_1=5]="ESPECIAL_TYPE_1",n[n.ESPECIAL_TYPE_2=6]="ESPECIAL_TYPE_2",n[n.ESPECIAL_TYPE_3=7]="ESPECIAL_TYPE_3",n[n.CLEAR=8]="CLEAR"},6841:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TableOperation=void 0,(n=t.TableOperation||(t.TableOperation={}))[n.InsertAbove=0]="InsertAbove",n[n.InsertBelow=1]="InsertBelow",n[n.InsertLeft=2]="InsertLeft",n[n.InsertRight=3]="InsertRight",n[n.DeleteTable=4]="DeleteTable",n[n.DeleteColumn=5]="DeleteColumn",n[n.DeleteRow=6]="DeleteRow",n[n.MergeAbove=7]="MergeAbove",n[n.MergeBelow=8]="MergeBelow",n[n.MergeLeft=9]="MergeLeft",n[n.MergeRight=10]="MergeRight",n[n.MergeCells=11]="MergeCells",n[n.SplitHorizontally=12]="SplitHorizontally",n[n.SplitVertically=13]="SplitVertically",n[n.AlignCenter=14]="AlignCenter",n[n.AlignLeft=15]="AlignLeft",n[n.AlignRight=16]="AlignRight",n[n.AlignCellLeft=17]="AlignCellLeft",n[n.AlignCellCenter=18]="AlignCellCenter",n[n.AlignCellRight=19]="AlignCellRight",n[n.AlignCellTop=20]="AlignCellTop",n[n.AlignCellMiddle=21]="AlignCellMiddle",n[n.AlignCellBottom=22]="AlignCellBottom"},6395:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasteType=t.DefinitionType=t.BulletListType=t.NumberingListType=t.SelectionRangeTypes=t.PluginEventType=t.TableBorderFormat=t.KnownPasteSourceType=t.KnownCreateElementDataIndex=t.ClearFormatMode=t.ImageEditOperation=t.TableOperation=t.RegionType=t.QueryScope=t.PositionType=t.ListType=t.Capitalization=t.Indentation=t.GetContentMode=t.FontSizeChange=t.ExperimentalFeatures=t.EntityOperation=t.EntityClasses=t.Direction=t.DelimiterClasses=t.DarkModeDatasetNames=t.ContentPosition=t.ColorTransformDirection=t.ChangeSource=t.Alignment=t.ContentType=t.ContentTypePrefix=t.NodeType=t.Keys=t.DocumentPosition=t.DocumentCommand=void 0;var r=n(6386);Object.defineProperty(t,"DocumentCommand",{enumerable:!0,get:function(){return r.DocumentCommand}});var o=n(565);Object.defineProperty(t,"DocumentPosition",{enumerable:!0,get:function(){return o.DocumentPosition}});var i=n(3692);Object.defineProperty(t,"Keys",{enumerable:!0,get:function(){return i.Keys}});var a=n(9883);Object.defineProperty(t,"NodeType",{enumerable:!0,get:function(){return a.NodeType}});var l=n(7157);Object.defineProperty(t,"ContentTypePrefix",{enumerable:!0,get:function(){return l.ContentTypePrefix}}),Object.defineProperty(t,"ContentType",{enumerable:!0,get:function(){return l.ContentType}});var s=n(4625);Object.defineProperty(t,"Alignment",{enumerable:!0,get:function(){return s.Alignment}});var u=n(8591);Object.defineProperty(t,"ChangeSource",{enumerable:!0,get:function(){return u.ChangeSource}});var d=n(4471);Object.defineProperty(t,"ColorTransformDirection",{enumerable:!0,get:function(){return d.ColorTransformDirection}});var c=n(8983);Object.defineProperty(t,"ContentPosition",{enumerable:!0,get:function(){return c.ContentPosition}});var f=n(4490);Object.defineProperty(t,"DarkModeDatasetNames",{enumerable:!0,get:function(){return f.DarkModeDatasetNames}});var p=n(2910);Object.defineProperty(t,"DelimiterClasses",{enumerable:!0,get:function(){return p.DelimiterClasses}});var v=n(265);Object.defineProperty(t,"Direction",{enumerable:!0,get:function(){return v.Direction}});var h=n(2372);Object.defineProperty(t,"EntityClasses",{enumerable:!0,get:function(){return h.EntityClasses}});var g=n(9468);Object.defineProperty(t,"EntityOperation",{enumerable:!0,get:function(){return g.EntityOperation}});var m=n(9084);Object.defineProperty(t,"ExperimentalFeatures",{enumerable:!0,get:function(){return m.ExperimentalFeatures}});var y=n(5397);Object.defineProperty(t,"FontSizeChange",{enumerable:!0,get:function(){return y.FontSizeChange}});var b=n(4051);Object.defineProperty(t,"GetContentMode",{enumerable:!0,get:function(){return b.GetContentMode}});var E=n(6039);Object.defineProperty(t,"Indentation",{enumerable:!0,get:function(){return E.Indentation}});var C=n(9003);Object.defineProperty(t,"Capitalization",{enumerable:!0,get:function(){return C.Capitalization}});var S=n(8185);Object.defineProperty(t,"ListType",{enumerable:!0,get:function(){return S.ListType}});var T=n(758);Object.defineProperty(t,"PositionType",{enumerable:!0,get:function(){return T.PositionType}});var P=n(8827);Object.defineProperty(t,"QueryScope",{enumerable:!0,get:function(){return P.QueryScope}});var _=n(2025);Object.defineProperty(t,"RegionType",{enumerable:!0,get:function(){return _.RegionType}});var w=n(6841);Object.defineProperty(t,"TableOperation",{enumerable:!0,get:function(){return w.TableOperation}});var O=n(2681);Object.defineProperty(t,"ImageEditOperation",{enumerable:!0,get:function(){return O.ImageEditOperation}});var D=n(2101);Object.defineProperty(t,"ClearFormatMode",{enumerable:!0,get:function(){return D.ClearFormatMode}});var M=n(9278);Object.defineProperty(t,"KnownCreateElementDataIndex",{enumerable:!0,get:function(){return M.KnownCreateElementDataIndex}});var A=n(2342);Object.defineProperty(t,"KnownPasteSourceType",{enumerable:!0,get:function(){return A.KnownPasteSourceType}});var R=n(372);Object.defineProperty(t,"TableBorderFormat",{enumerable:!0,get:function(){return R.TableBorderFormat}});var I=n(2688);Object.defineProperty(t,"PluginEventType",{enumerable:!0,get:function(){return I.PluginEventType}});var L=n(3852);Object.defineProperty(t,"SelectionRangeTypes",{enumerable:!0,get:function(){return L.SelectionRangeTypes}});var N=n(7821);Object.defineProperty(t,"NumberingListType",{enumerable:!0,get:function(){return N.NumberingListType}});var x=n(8982);Object.defineProperty(t,"BulletListType",{enumerable:!0,get:function(){return x.BulletListType}});var k=n(9097);Object.defineProperty(t,"DefinitionType",{enumerable:!0,get:function(){return k.DefinitionType}});var j=n(2368);Object.defineProperty(t,"PasteType",{enumerable:!0,get:function(){return j.PasteType}})},796:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(2091),t),(0,r.__exportStar)(n(3424),t),(0,r.__exportStar)(n(6395),t),(0,r.__exportStar)(n(796),t),(0,r.__exportStar)(n(7882),t),(0,r.__exportStar)(n(8568),t)},7882:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8568:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5115:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6630),o=n(1660),i=n(4739);t.default=function(e,t,n){var a=[new i.HyperLink,new i.Paste,new i.ContentEdit];t&&(a=a.concat(t));var l={plugins:a,initialContent:n,getDarkColor:o.getDarkColor,defaultFormat:{fontFamily:"Calibri,Arial,Helvetica,sans-serif",fontSize:"11pt",textColor:"#000000"}};return new r.Editor(e,l)}},8608:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditor=void 0;var r=n(7582),o=n(5115);Object.defineProperty(t,"createEditor",{enumerable:!0,get:function(){return o.default}}),(0,r.__exportStar)(n(8075),t),(0,r.__exportStar)(n(1286),t),(0,r.__exportStar)(n(6344),t),(0,r.__exportStar)(n(6630),t),(0,r.__exportStar)(n(4548),t),(0,r.__exportStar)(n(4739),t),(0,r.__exportStar)(n(1660),t)},7582:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>i,__asyncDelegator:()=>_,__asyncGenerator:()=>P,__asyncValues:()=>w,__await:()=>T,__awaiter:()=>v,__classPrivateFieldGet:()=>R,__classPrivateFieldIn:()=>L,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>m,__extends:()=>o,__generator:()=>h,__importDefault:()=>A,__importStar:()=>M,__makeTemplateObject:()=>O,__metadata:()=>p,__param:()=>s,__propKey:()=>c,__read:()=>b,__rest:()=>a,__runInitializers:()=>d,__setFunctionName:()=>f,__spread:()=>E,__spreadArray:()=>S,__spreadArrays:()=>C,__values:()=>y,default:()=>N});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(o=e[l])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,o,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",d=!t&&e?r.static?e:e.prototype:null,c=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var v={};for(var h in r)v[h]="access"===h?{}:r[h];for(var h in r.access)v.access[h]=r.access[h];v.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var g=(0,n[p])("accessor"===s?{get:c.get,set:c.set}:c[u],v);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=a(g.get))&&(c.get=l),(l=a(g.set))&&(c.set=l),(l=a(g.init))&&o.unshift(l)}else(l=a(g))&&("field"===s?o.unshift(l):c[u]=l)}d&&Object.defineProperty(d,r.name,c),f=!0}function d(e,t,n){for(var r=arguments.length>2,o=0;o0&&o[o.length-1])||6!==l[0]&&2!==l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function b(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function E(){for(var e=[],t=0;t1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof T?Promise.resolve(n.value.v).then(s,u):d(i[0][2],n)}catch(e){d(i[0][3],e)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function d(e,t){e(t),i.shift(),i.length&&l(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:T(e[r](t)),done:!1}:o?o(t):t}:o}}function w(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=y(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var D=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function M(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return D(t,e),t}function A(e){return e&&e.__esModule?e:{default:e}}function R(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function L(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}const N={__extends:o,__assign:i,__rest:a,__decorate:l,__param:s,__metadata:p,__awaiter:v,__generator:h,__createBinding:g,__exportStar:m,__values:y,__read:b,__spread:E,__spreadArrays:C,__spreadArray:S,__await:T,__asyncGenerator:P,__asyncDelegator:_,__asyncValues:w,__makeTemplateObject:O,__importStar:M,__importDefault:A,__classPrivateFieldGet:R,__classPrivateFieldSet:I,__classPrivateFieldIn:L}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=n(8608);roosterjs=r})(); +var roosterjs;(()=>{var e={8168:(e,t,n)=>{var r=n(8874),o={};for(var i in r)r.hasOwnProperty(i)&&(o[r[i]]=i);var a=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 a)if(a.hasOwnProperty(l)){if(!("channels"in a[l]))throw new Error("missing channels property: "+l);if(!("labels"in a[l]))throw new Error("missing channel labels property: "+l);if(a[l].labels.length!==a[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=a[l].channels,u=a[l].labels;delete a[l].channels,delete a[l].labels,Object.defineProperty(a[l],"channels",{value:s}),Object.defineProperty(a[l],"labels",{value:u})}a.rgb.hsl=function(e){var t,n,r=e[0]/255,o=e[1]/255,i=e[2]/255,a=Math.min(r,o,i),l=Math.max(r,o,i),s=l-a;return l===a?t=0:r===l?t=(o-i)/s:o===l?t=2+(i-r)/s:i===l&&(t=4+(r-o)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+l)/2,[t,100*(l===a?0:n<=.5?s/(l+a):s/(2-l-a)),100*n]},a.rgb.hsv=function(e){var t,n,r,o,i,a=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(a,l,s),d=u-Math.min(a,l,s),c=function(e){return(u-e)/6/d+.5};return 0===d?o=i=0:(i=d/u,t=c(a),n=c(l),r=c(s),a===u?o=r-n:l===u?o=1/3+t-r:s===u&&(o=2/3+n-t),o<0?o+=1:o>1&&(o-=1)),[360*o,100*i,100*u]},a.rgb.hwb=function(e){var t=e[0],n=e[1],r=e[2];return[a.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(n,r))*100,100*(r=1-1/255*Math.max(t,Math.max(n,r)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,r=e[1]/255,o=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-r,1-o)))/(1-t)||0),100*((1-r-t)/(1-t)||0),100*((1-o-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=o[e];if(t)return t;var n,i,a,l=1/0;for(var s in r)if(r.hasOwnProperty(s)){var u=(i=e,a=r[s],Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)+Math.pow(i[2]-a[2],2));u.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],r=t[1],o=t[2];return r/=100,o/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(n-r),200*(r-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.hsl.rgb=function(e){var t,n,r,o,i,a=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[i=255*s,i,i];t=2*s-(n=s<.5?s*(1+l):s+l-s*l),o=[0,0,0];for(var u=0;u<3;u++)(r=a+1/3*-(u-1))<0&&r++,r>1&&r--,i=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,o[u]=255*i;return o},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,r=e[2]/100,o=n,i=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,o*=i<=1?i:2-i,[t,100*(0===r?2*o/(i+o):2*n/(r+n)),(r+n)/2*100]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,r=e[2]/100,o=Math.floor(t)%6,i=t-Math.floor(t),a=255*r*(1-n),l=255*r*(1-n*i),s=255*r*(1-n*(1-i));switch(r*=255,o){case 0:return[r,s,a];case 1:return[l,r,a];case 2:return[a,r,s];case 3:return[a,l,r];case 4:return[s,a,r];case 5:return[r,a,l]}},a.hsv.hsl=function(e){var t,n,r,o=e[0],i=e[1]/100,a=e[2]/100,l=Math.max(a,.01);return r=(2-i)*a,n=i*l,[o,100*(n=(n/=(t=(2-i)*l)<=1?t:2-t)||0),100*(r/=2)]},a.hwb.rgb=function(e){var t,n,r,o,i,a,l,s=e[0]/360,u=e[1]/100,d=e[2]/100,c=u+d;switch(c>1&&(u/=c,d/=c),r=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(r=1-r),o=u+r*((n=1-d)-u),t){default:case 6:case 0:i=n,a=o,l=u;break;case 1:i=o,a=n,l=u;break;case 2:i=u,a=n,l=o;break;case 3:i=u,a=o,l=n;break;case 4:i=o,a=u,l=n;break;case 5:i=n,a=u,l=o}return[255*i,255*a,255*l]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,r=e[2]/100,o=e[3]/100;return[255*(1-Math.min(1,t*(1-o)+o)),255*(1-Math.min(1,n*(1-o)+o)),255*(1-Math.min(1,r*(1-o)+o))]},a.xyz.rgb=function(e){var t,n,r,o=e[0]/100,i=e[1]/100,a=e[2]/100;return n=-.9689*o+1.8758*i+.0415*a,r=.0557*o+-.204*i+1.057*a,t=(t=3.2406*o+-1.5372*i+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],r=e[2];return n/=100,r/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.lab.xyz=function(e){var t,n,r,o=e[0];t=e[1]/500+(n=(o+16)/116),r=n-e[2]/200;var i=Math.pow(n,3),a=Math.pow(t,3),l=Math.pow(r,3);return n=i>.008856?i:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,r=l>.008856?l:(r-16/116)/7.787,[t*=95.047,n*=100,r*=108.883]},a.lab.lch=function(e){var t,n=e[0],r=e[1],o=e[2];return(t=360*Math.atan2(o,r)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(r*r+o*o),t]},a.lch.lab=function(e){var t,n=e[0],r=e[1];return t=e[2]/360*2*Math.PI,[n,r*Math.cos(t),r*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],r=e[2],o=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(o=Math.round(o/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===o&&(i+=60),i},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},a.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 n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.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},a.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 n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},a.rgb.hcg=function(e){var t,n=e[0]/255,r=e[1]/255,o=e[2]/255,i=Math.max(Math.max(n,r),o),a=Math.min(Math.min(n,r),o),l=i-a;return t=l<=0?0:i===n?(r-o)/l%6:i===r?2+(o-n)/l:4+(n-r)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?a/(1-l):0)]},a.hsl.hcg=function(e){var t,n=e[1]/100,r=e[2]/100,o=0;return(t=r<.5?2*n*r:2*n*(1-r))<1&&(o=(r-.5*t)/(1-t)),[e[0],100*t,100*o]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=t*n,o=0;return r<1&&(o=(n-r)/(1-r)),[e[0],100*r,100*o]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];var o,i=[0,0,0],a=t%1*6,l=a%1,s=1-l;switch(Math.floor(a)){case 0:i[0]=1,i[1]=l,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=l;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=l,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return o=(1-n)*r,[255*(n*i[0]+o),255*(n*i[1]+o),255*(n*i[2]+o)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,r=n-t,o=0;return r<1&&(o=(n-r)/(1-r)),[e[0],100*r,100*o]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2085:(e,t,n)=>{var r=n(8168),o=n(4111),i={};Object.keys(r).forEach((function(e){i[e]={},Object.defineProperty(i[e],"channels",{value:r[e].channels}),Object.defineProperty(i[e],"labels",{value:r[e].labels});var t=o(e);Object.keys(t).forEach((function(n){var r=t[n];i[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var r=n.length,o=0;o1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)}))})),e.exports=i},4111:(e,t,n)=>{var r=n(8168);function o(e,t){return function(n){return t(e(n))}}function i(e,t){for(var n=[t[e].parent,e],i=r[t[e].parent][e],a=t[e].parent;t[a].parent;)n.unshift(t[a].parent),i=o(r[t[a].parent][a],i),a=t[a].parent;return i.conversion=n,i}e.exports=function(e){for(var t=function(e){var t=function(){for(var e={},t=Object.keys(r),n=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,n)=>{var r=n(8874),o=n(6851),i={};for(var a in r)r.hasOwnProperty(a)&&(i[r[a]]=a);var l=e.exports={to:{},get:{}};function s(e,t,n){return Math.min(Math.max(t,e),n)}function u(e){var t=e.toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),n="hsl";break;case"hwb":t=l.get.hwb(e),n="hwb";break;default:t=l.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,n,o,i=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=t[2],t=t[1],n=0;n<3;n++){var a=2*n;i[n]=parseInt(t.slice(a,a+2),16)}o&&(i[3]=parseInt(o,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(o=(t=t[1])[3],n=0;n<3;n++)i[n]=parseInt(t[n]+t[n],16);o&&(i[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(n=0;n<3;n++)i[n]=parseInt(t[n+1],0);t[4]&&(i[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]:(i=r[t[1]])?(i[3]=1,i):null:null;for(n=0;n<3;n++)i[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(i[3]=parseFloat(t[4]))}for(n=0;n<3;n++)i[n]=s(i[n],0,255);return i[3]=s(i[3],0,1),i},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 n=parseFloat(t[4]);return[(parseFloat(t[1])+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,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 n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,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),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+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 i[e.slice(0,3)]}},6767:(e,t,n)=>{"use strict";var r=n(9818),o=n(2085),i=[].slice,a=["keyword","gray","hex"],l={};Object.keys(o).forEach((function(e){l[i.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 a&&(t=null),t&&!(t in o))throw new Error("Unknown model: "+t);var n,d;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 c=r.get(e);if(null===c)throw new Error("Unable to parse color from string: "+e);this.model=c.model,d=o[this.model].channels,this.color=c.value.slice(0,d),this.valpha="number"==typeof c.value[d]?c.value[d]:1}else if(e.length){this.model=t||"rgb",d=o[this.model].channels;var p=i.call(e,0,d);this.color=f(p,d),this.valpha="number"==typeof e[d]?e[d]: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 v=Object.keys(e);"alpha"in e&&(v.splice(v.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var h=v.sort().join("");if(!(h in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[h];var g=o[this.model].labels,m=[];for(n=0;nn?(t+.05)/(n+.05):(n+.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(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,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 n=e.rgb(),r=this.rgb(),o=void 0===t?.5:t,i=2*o-1,a=n.alpha()-r.alpha(),l=((i*a==-1?i:(i+a)/(1+i*a))+1)/2,s=1-l;return u.rgb(l*n.red()+s*r.red(),l*n.green()+s*r.green(),l*n.blue()+s*r.blue(),n.alpha()*o+r.alpha()*(1-o))}},Object.keys(o).forEach((function(e){if(-1===a.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 n,r="number"==typeof arguments[t]?t:this.valpha;return new u((n=o[this.model][e].raw(this.color),Array.isArray(n)?n:[n]).concat(r),e)},u[e]=function(n){return"number"==typeof n&&(n=f(i.call(arguments),t)),new u(n,e)}}})),e.exports=u},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,n)=>{"use strict";var r=n(5171),o=Array.prototype.concat,i=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDarkColor=void 0;var r=n(6134);Object.defineProperty(t,"getDarkColor",{enumerable:!0,get:function(){return r.default}})},6134:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6767);t.default=function(e,t){void 0===t&&(t=21.247);try{var n=r(e||void 0),o=n.lab().array(),i=(100-o[0])*((100-t)/100)+t;e=r.lab(i,o[1],o[2]).rgb().alpha(n.alpha()).toString()}catch(e){}return e}},8106:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t,n){function i(e,n){if(null===e)return e;switch(t){case"lowercase":return e.toLocaleLowerCase(n);case"uppercase":return e.toLocaleUpperCase(n);case"capitalize":for(var r=e.toLocaleLowerCase(n).split(" "),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getNewFontSize=t.FONT_SIZES=void 0;var r=n(9069),o=n(6344);t.FONT_SIZES=[8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72];function i(e,t,n){e=1==t?Math.floor(e):Math.ceil(e);var r=n[n.length-1];if(e<=n[0])e=Math.max(e+t,1);else if(e>r||e==r&&1==t)e/=10,e=1==t?Math.floor(e):Math.ceil(e),e=Math.min(Math.max(10*(e+t),r),1e3);else if(1==t){for(var o=0;o=0;o--)if(e>n[o]){e=n[o];break}return e}t.default=function(e,n,a){void 0===a&&(a=t.FONT_SIZES);var l=0==n?1:-1;(0,r.default)(e,(function(e){var t=parseFloat((0,o.getComputedStyle)(e,"font-size")||e.style.fontSize);e.style.fontSize=i(t,l,a)+"pt";var n=(0,o.getComputedStyle)(e,"line-height");n&&"normal"!=n&&(e.style.lineHeight="normal")}),"changeFontSize")},t.getNewFontSize=i},4234:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4040);t.default=function(e){(0,r.default)(e,1)}},4040:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4485),i=n(9703),a=n(9733),l=n(4077),s=n(6304),u=n(690),d=n(9339),c=n(8683),f=n(6823),p=n(926),v=n(3275),h=n(6344),g=["font","text-decoration","color","background"],m="B,I,U,STRONG,EM,SUB,SUP,STRIKE,FONT,CENTER,H1,H2,H3,H4,H5,H6,UL,OL,LI,SPAN,P,BLOCKQUOTE,CODE,S,PRE".split(","),y=["href","src","cellpadding","cellspacing"],b=["TD","TH","TR","TABLE","TBODY","THEAD"];function E(e){var t=(0,h.toArray)(e.childNodes).map(E).every((function(e){return e})),n=(0,h.isBlockElement)(e),o=(0,h.getTagOfNode)(e);return o&&(m.indexOf(o)>=0||t&&!(0,h.isVoidHtmlElement)(e)&&b.indexOf(o)<0?(n&&!t&&(0,h.wrap)(e),(0,h.unwrap)(e)):function(e){var t,n,o=(0,h.safeInstanceOf)(e,"HTMLTableCellElement"),i=(0,h.safeInstanceOf)(e,"HTMLTableElement");try{for(var a=(0,r.__values)((0,h.toArray)(e.attributes)),l=a.next();!l.done;l=a.next()){var s=l.value;o&&"style"==s.name?S(e):i&&"style"==s.name?T(e):y.indexOf(s.name.toLowerCase())<0&&0!=s.name.indexOf("data-")&&e.removeAttribute(s.name)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}}(e)),n}function C(e,t){var n=(0,h.getStyles)(e),r={};return(0,h.getObjectKeys)(n).forEach((function(e){return t(e,n,r)})),(0,h.setStyles)(e,n),r}function S(e){return C(e,(function(e,t,n){e.indexOf("border")<0&&(n[e]=t[e],delete t[e])}))}function T(e){return C(e,(function(e,t,n){"border-collapse"!=e&&(n[e]=t[e],delete t[e])}))}function P(e){(0,l.default)(e,(function(){(0,i.default)(e,(function(t){var n=(0,h.getSelectedBlockElementsInRegion)(t),r=(0,h.collapseNodesInRegion)(t,n);if(e.contains(t.rootNode)){var o=S(t.rootNode);if((0,h.getObjectKeys)(o).length>0){var i=(0,h.wrap)((0,h.toArray)(t.rootNode.childNodes));(0,h.setStyles)(i,o)}}for(;r.length>0&&r[0].parentNode&&(0,h.isNodeInRegion)(t,r[0].parentNode);){var a=(0,h.splitBalancedNodeRange)(r);r=a?[a]:[]}r.forEach(E)})),_(e)}),"clearBlockFormat")}function _(e){var t=e.getDefaultFormat(),n=0===(0,h.getObjectKeys)(t).length;if(e.queryElements("[style]",2,(function(e){var t=(0,h.getTagOfNode)(e);-1==b.indexOf(t)?w(t,e,n):e.childNodes.forEach((function(e){e.childNodes.forEach((function(e){var t=(0,h.getTagOfNode)(e);(0,h.safeInstanceOf)(e,"HTMLElement")&&w(t,e,n)}))}))})),!n){if(t.fontFamily&&(0,u.default)(e,t.fontFamily),t.fontSize&&(0,d.default)(e,t.fontSize),t.textColor){var r=e.queryElements("a *, a",1),i=r.length>0?function(e){return-1==r.indexOf(e)}:void 0;t.textColors?(0,c.default)(e,t.textColors,i):(0,c.default)(e,t.textColor,i)}t.backgroundColor&&(t.backgroundColors?(0,s.default)(e,t.backgroundColors):(0,s.default)(e,t.backgroundColor)),t.bold?(0,f.default)(e):function(e,t){void 0===t&&(t="400"),(0,o.default)(e,"font-weight",(function(e){return e.style.fontWeight=t}),"setDefaultFontWeight")}(e),t.italic&&(0,p.default)(e),t.underline&&(0,v.default)(e)}}function w(e,t,n){-1==b.indexOf(e)&&(g.forEach((function(e){return t.style.removeProperty(e)})),n&&""===t.getAttribute("style")&&t.removeAttribute("style"))}function O(e,t){switch(void 0===t&&(t=0),t){case 0:!function(e){e.focus(),e.addUndoSnapshot((function(){return(0,a.default)(e,"removeFormat"),e.queryElements("[class]",1,(function(e){return e.removeAttribute("class")})),_(e),"clearInlineFormat"}),"Format")}(e);break;case 1:P(e);break;default:!function(e){var t=function(e){var t=e.getSelectionTraverser();return!!(null==t?void 0:t.currentBlockElement)&&!!(null==t?void 0:t.getNextBlockElement())}(e);if(!t){var n=e.getSelectionTraverser(),r=null==n?void 0:n.currentInlineElement,o=r instanceof h.PartialInlineElement||r instanceof h.NodeInlineElement&&!function(e,t){for(var n,r=e,o=function(){if(r.nextSibling||r.previousSibling){if((0,h.safeInstanceOf)(r,"HTMLLIElement"))return{value:!0};var e=!0;return null===(n=r.parentNode)||void 0===n||n.childNodes.forEach((function(t){var n;t!=r&&(null===(n=t.textContent)||void 0===n?void 0:n.length)&&(e=!1)})),{value:e}}r=r.parentNode};r&&t.contains(r.parentNode);){var i=o();if("object"==typeof i)return i.value}return!0}(r.getContainerNode(),e);if(o)return void O(e)}P(e)}(e)}}t.default=O},2149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=/^[a-zA-Z]+:/i,i=/^[\w.%+-]+@/i,a=/^ftp\./i;function l(e){return e.queryElements("a[href]",1)[0]}function s(e,t){t&&e.textContent!=t&&(e.textContent=t)}t.default=function(e,t,n,u,d){e.focus();var c=(function(e){var t=new r.HtmlSanitizer,n=document.createElement("a");return n.href=e||"",t.sanitize(n),n.getAttribute("href")}(t)||"").trim();if(c){var f=(0,r.matchLink)(c),p=f?f.normalizedUrl:function(e){if(!e)return e;var t="";return e.search(o)<0&&(t=0==e.search(i)?"mailto:":0==e.search(a)?"ftp://":"http://"),t+e}(c),v=f?f.originalUrl:c;e.addUndoSnapshot((function(){var t=e.getSelectionRangeEx(),o=null;if(0===t.type){var i=t.ranges[0];if(i&&i.collapsed)(o=l(e))?(o.href=p,s(o,u)):((o=e.getDocument().createElement("A")).textContent=u||v,o.href=p,e.insertNode(o));else{e.getDocument().execCommand("createLink",!1,p);for(var a=e.getSelectionTraverser(),c=null==a?void 0:a.getNextInlineElement(),f=[];c;)f.push(c.getContainerNode()),c=null==a?void 0:a.getNextInlineElement();f.forEach((function(t){return e.deleteNode(t)})),s(o=l(e),u)}}else 2===t.type&&((o=(0,r.wrap)(t.image,"A")).href=p);return n&&o&&(o.title=n),o&&function(e,t){t?e.target=t:!t&&e.getAttribute("target")&&e.removeAttribute("target")}(o,d),o}),"CreateLink")}}},3956:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementBasedFormatState=void 0;var r=n(7582),o=n(6344);function i(e,t){var n=(0,o.getTagOfNode)(e.getElementAtCursor("OL,UL",void 0,t)),r=e.getSelectionRange(),i=!1;if(r&&!r.collapsed){var l=e.getBlockElementAtNode(r.startContainer),s=e.getBlockElementAtNode(r.endContainer);i=!(!s||!l||s.equals(l))}var u=(0,o.getTagOfNode)(e.getElementAtCursor("H1,H2,H3,H4,H5,H6",void 0,t)),d=e.queryElements("table",1)[0],c=d?(0,o.getTableFormatInfo)(d):void 0,f=(null==d?void 0:d.rows[0])?(0,o.toArray)(d.rows[0].cells).every((function(e){return"TH"==(0,o.getTagOfNode)(e)})):void 0,p=u&&parseInt(u[1])||0;return{isBullet:"UL"==n,isNumbering:"OL"==n,isMultilineSelection:i,headingLevel:p,headerLevel:p,canUnlink:!!e.queryElements("a[href]",1)[0],canAddImageAltText:!!e.queryElements("img",1)[0],isBlockQuote:!!e.queryElements("blockquote",1)[0],isCodeInline:!!e.queryElements("code",1)[0],isCodeBlock:!!e.queryElements("pre>code",1)[0],isInTable:!!d,tableFormat:c||{},tableHasHeader:f,canMergeTableCell:a(e)}}t.getElementBasedFormatState=i,t.default=function(e,t){return(0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)({},e.getPendableFormatState(!1)),i(e,t)),e.getStyleBasedFormatState()),e.getUndoState()),{isDarkMode:e.isDarkMode(),zoomScale:e.getZoomScale()})};var a=function(e){var t=e.getSelectionRangeEx();if(t&&1===t.type&&t.coordinates){var n=t.coordinates,r=n.firstCell,o=n.lastCell;return r.x!==o.x||r.y!==o.y}return!1}},9540:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(6344);t.default=function(e,t,n,i,a,l,s,u){var d,c=(0,o.wrap)(n,i?"div":"span");if(!i&&a&&(c.style.display="inline-block"),(0,o.commitEntity)(c,t,a),!e.contains(c)){var f=null,p=void 0;if("number"==typeof l)p=l;else if(l){f=e.getSelectionRange();var v=l.normalize().node,h=v&&e.getElementAtCursor((0,o.getEntitySelector)(),v);h&&(l=new o.Position(h,-3)),e.select(l),p=3}else e.focus(),p=3;var g=s&&e.getSelectedRegions(),m=g&&o.VListChain.createListChains(g);e.insertNode(c,{updateCursor:!1,insertOnNewLine:i,replaceSelection:!0,position:p,insertToRegionRoot:s}),m&&(0,r.default)(e,m),3==p&&(f?e.select(f):i||e.select(c,-3))}var y=(0,o.getEntityFromElement)(c);if(i){var b=(0,o.createElement)(1,e.getDocument());if(null===(d=c.parentNode)||void 0===d||d.insertBefore(b,c.nextSibling),b&&(0,o.applyFormat)(b,e.getDefaultFormat(),e.isDarkMode(),e.getDarkColorHandler()),u){var E=null==b?void 0:b.querySelector("br"),C=E&&new o.Position(E,-2);C&&e.select(C)}}else a&&e.isFeatureEnabled("InlineEntityReadOnlyDelimiters")&&((0,o.addDelimiters)(y.wrapper),y.wrapper.nextElementSibling&&e.select(new o.Position(y.wrapper.nextElementSibling,-3)));return e.triggerContentChangedEvent("InsertEntity",y),y}},7239:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);function i(e,t,n){(0,r.default)(e,(function(){var r=e.getDocument().createElement("img");r.src=t,n&&(0,o.getObjectKeys)(n).forEach((function(e){return r.setAttribute(e,n[e])})),e.insertNode(r)}),"insertImage")}t.default=function(e,t,n){"string"==typeof t?i(e,t,n):(0,o.readFile)(t,(function(t){t&&!e.isDisposed()&&i(e,t,n)}))}},2633:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e){e.focus(),(0,r.default)(e,(function(t,n){e.queryElements("a[href]",1,o.unwrap),t&&n&&e.select(t,n)}),"removeLink")}},7758:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r,o){var i,a,l;if(!t||!n)return!1;if(l="string"==typeof t?null!==(a=null==(o=null!==(i=o||e.getContentSearcherOfCursor())&&void 0!==i?i:void 0)?void 0:o.getRangeFromText(t,r))&&void 0!==a?a:null:t){var s=e.getSelectionRange();return(null==s?void 0:s.collapsed)&&l.endContainer==s.startContainer&&l.endOffset==s.startOffset&&(r=!0),e.insertNode(n,{position:5,updateCursor:r,replaceSelection:!0,insertOnNewLine:!1,range:l}),!0}return!1}},6827:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077);t.default=function(e,t,n){t&&(0,r.default)(e,(function(){t.style.transform="rotate("+n+"deg)"}),"rotateElement")}},2391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(9733),i=n(4077),a=n(6577),l=n(6344);t.default=function(e,t){(0,i.default)(e,(function(){var n,i=e.getSelectionRangeEx(),s=i&&1===i.type,u=e.getElementAtCursor();s&&i.coordinates&&(0,l.isWholeTableSelected)(new l.VTable(i.table),i.coordinates)?function(e,t){var n=e.table;1==t?(n.style.marginLeft="auto",n.style.marginRight="auto"):2==t?(n.style.marginLeft="auto",n.style.marginRight=""):(n.style.marginLeft="",n.style.marginRight="auto")}(i,t):u&&(n=u,(0,l.findClosestElementAncestor)(n,void 0,"LI"))?function(e,t){(0,r.default)(e,(function(e,n,r){var o=(0,l.getSelectedBlockElementsInRegion)(e)[0].getStartNode(),i=(0,l.createVListFromRegion)(e,!0,o);n&&r&&(null==i||i.setAlignment(n,r,t))}),void 0,"alignList")}(e,t):function(e,t){var n="left",r="justifyLeft";1==t?(r="justifyCenter",n="center"):2==t&&(r="justifyRight",n="right"),(0,o.default)(e,r);var i=e.queryElements("[align]",1,(function(e){e.style.textAlign=n,(0,a.default)(e)}));if(0==i.length){var l=e.getElementAtCursor();l&&(0,a.default)(l)}}(e,t)}),"setAlignment")}},6304:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t){(0,r.default)(e,(function(n,r){(0,o.setColor)(n,r?"":t,!0,e.isDarkMode(),!1,e.getDarkColorHandler())}),"setBackgroundColor")}},9741:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5483),o=n(4077);t.default=function(e,t){e.focus(),(0,o.default)(e,(function(n,o){(0,r.default)(e,(function(e){e.setAttribute("dir",0==t?"ltr":"rtl"),e.style.textAlign=0==t?"left":"right"})),n&&o&&e.select(n,o)}),"setDirection")}},690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485);t.default=function(e,t){(0,r.default)(e,"font-family",(function(e,n){e.style.fontFamily=n?"":t}),"setFontName")}},9339:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485),o=n(6344);t.default=function(e,t){(0,r.default)(e,"font-size",(function(e,n){e.style.fontSize=n?"":t;var r=(0,o.getComputedStyle)(e,"line-height");r&&"normal"!=r&&(e.style.lineHeight="normal")}),"setFontSize")}},8298:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toggleHeader=void 0;var r=n(4077),o=n(6344);function i(e,t){t=Math.min(Math.max(Math.round(t),0),6),(0,r.default)(e,(function(){e.focus();var n=!1;if(e.queryElements("H1,H2,H3,H4,H5,H6",1,(function(t){n||(e.getDocument().execCommand("formatBlock",!1,"
                "),n=!0);var r=e.getDocument().createElement("div");(0,o.moveChildNodes)(r,t),e.replaceNode(t,r)})),t>0){for(var r=e.getSelectionTraverser(),i=null==r?void 0:r.currentBlockElement,a=new o.HtmlSanitizer({cssStyleCallbacks:{"font-size":function(){return!1}}});i;){var l=i.collapseToSingleElement();a.sanitize(l),i=null==r?void 0:r.getNextBlockElement()}e.getDocument().execCommand("formatBlock",!1,"")}}),"toggleHeader")}t.default=i,t.toggleHeader=i},620:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077);t.default=function(e,t){e.focus(),(0,r.default)(e,(function(){e.queryElements("img",1,(function(e){return e.setAttribute("alt",t)}))}),"setImageAltText")}},1696:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6577),i=n(6344);function a(e,t){t.forEach((function(t){var n=t.collapseToSingleElement(),r=(0,i.findClosestElementAncestor)(n,e.rootNode,"blockquote");if(r){for(n==r&&(n=(0,i.wrap)((0,i.toArray)(n.childNodes)));n&&(0,i.isNodeInRegion)(e,n)&&"BLOCKQUOTE"!=(0,i.getTagOfNode)(n);)n=(0,i.splitBalancedNodeRange)(n);n&&(0,i.isNodeInRegion)(e,n)&&(0,i.unwrap)(n)}}))}function l(e,t){var n;return(null===(n=e.items[0])||void 0===n?void 0:n.getNode())==t&&e.getListItemIndex(t)==(e.getStart()||1)}function s(e,t,n){return 0==e||t.getElementAtCursor("blockquote",n)}t.default=function(e,t){var n=0==t?function(e,t){var n=(0,i.collapseNodesInRegion)(e,t);(0,i.wrap)(n,2);var r=[];n.forEach((function(e){return(0,o.default)(e,r)}))}:a;(0,r.default)(e,(function(r,o,a){for(var u=(0,i.getSelectedBlockElementsInRegion)(r,!0),d=[[]],c=0;c{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){void 0===n&&(n=1),(0,r.default)(e,(function(){e.focus();var r=e.getSelectedRegions();if(r[0]){var i=(0,o.createVListFromRegion)(r[0],!1,t);i&&(i.split(t,n),i.writeBack(e.isFeatureEnabled("ReuseAllAncestorListElements"),e.isFeatureEnabled("DisableListChain")))}}),"setOrderedListNumbering")}},8683:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4485),o=n(6344);t.default=function(e,t,n){(0,r.default)(e,"color",(function(r,i){n&&!n(r)||(0,o.setColor)(r,i?"":t,!1,e.isDarkMode(),!1,e.getDarkColorHandler())}),"setTextColor")}},5936:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(949),o=n(6344),i=function(e){e.style.borderLeft="3px solid",e.style.borderColor="#C8C8C8",e.style.paddingLeft="10px",e.style.color="#666666"};t.default=function(e,t){(0,r.default)(e,(function(e){var n=(0,o.wrap)(e,"blockquote");(t||i)(n)}),(function(){return 0==e.queryElements("blockquote",1,o.unwrap).length}),"toggleBlockQuote")}},6823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"bold","toggleBold")}},2473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5367);t.default=function(e,t,n){(0,r.default)(e,2,void 0,!1,void 0,t,n)}},8761:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(949),o=n(6344),i="code",a="pre>"+i;t.default=function(e,t){(0,r.default)(e,(function(e){var n=(0,o.wrap)(e,i),r=(0,o.wrap)(n,"pre");null==t||t(r)}),(function(){return 0==e.queryElements(a,1,(function(e){if(!e.previousSibling&&!e.nextSibling){var t=e.parentNode;(0,o.unwrap)(e),t&&(0,o.unwrap)(t)}})).length}),"toggleCodeBlock")}},926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"italic","toggleItalic")}},5485:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5367);t.default=function(e,t,n,o){(0,r.default)(e,1,t,void 0,n,void 0,o)}},2809:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"strikeThrough","toggleStrikethrough")}},9752:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"subscript","toggleSubscript")}},9282:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"superscript","toggleSuperscript")}},3275:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9733);t.default=function(e){(0,r.default)(e,"underline","toggleUnderline")}},4548:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.experimentCommitListChains=t.commitListChains=t.blockFormat=t.toggleListType=t.applyCellShading=t.toggleHeader=t.setHeadingLevel=t.toggleUnderline=t.toggleSuperscript=t.toggleSubscript=t.toggleStrikethrough=t.toggleCodeBlock=t.toggleBlockQuote=t.setOrderedListNumbering=t.toggleNumbering=t.toggleItalic=t.toggleBullet=t.toggleBold=t.changeCapitalization=t.setIndentation=t.setImageAltText=t.setFontSize=t.setFontName=t.setDirection=t.setTextColor=t.setBackgroundColor=t.setAlignment=t.rotateElement=t.replaceWithNode=t.removeLink=t.formatTable=t.editTable=t.insertTable=t.insertImage=t.insertEntity=t.getElementBasedFormatState=t.getFormatState=t.createLink=t.clearFormat=t.clearBlockFormat=t.FONT_SIZES=t.changeFontSize=void 0;var r=n(5177);Object.defineProperty(t,"changeFontSize",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"FONT_SIZES",{enumerable:!0,get:function(){return r.FONT_SIZES}});var o=n(4234);Object.defineProperty(t,"clearBlockFormat",{enumerable:!0,get:function(){return o.default}});var i=n(4040);Object.defineProperty(t,"clearFormat",{enumerable:!0,get:function(){return i.default}});var a=n(2149);Object.defineProperty(t,"createLink",{enumerable:!0,get:function(){return a.default}});var l=n(3956);Object.defineProperty(t,"getFormatState",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"getElementBasedFormatState",{enumerable:!0,get:function(){return l.getElementBasedFormatState}});var s=n(9540);Object.defineProperty(t,"insertEntity",{enumerable:!0,get:function(){return s.default}});var u=n(7239);Object.defineProperty(t,"insertImage",{enumerable:!0,get:function(){return u.default}});var d=n(6725);Object.defineProperty(t,"insertTable",{enumerable:!0,get:function(){return d.default}});var c=n(5443);Object.defineProperty(t,"editTable",{enumerable:!0,get:function(){return c.default}});var f=n(3242);Object.defineProperty(t,"formatTable",{enumerable:!0,get:function(){return f.default}});var p=n(2633);Object.defineProperty(t,"removeLink",{enumerable:!0,get:function(){return p.default}});var v=n(7758);Object.defineProperty(t,"replaceWithNode",{enumerable:!0,get:function(){return v.default}});var h=n(6827);Object.defineProperty(t,"rotateElement",{enumerable:!0,get:function(){return h.default}});var g=n(2391);Object.defineProperty(t,"setAlignment",{enumerable:!0,get:function(){return g.default}});var m=n(6304);Object.defineProperty(t,"setBackgroundColor",{enumerable:!0,get:function(){return m.default}});var y=n(8683);Object.defineProperty(t,"setTextColor",{enumerable:!0,get:function(){return y.default}});var b=n(9741);Object.defineProperty(t,"setDirection",{enumerable:!0,get:function(){return b.default}});var E=n(690);Object.defineProperty(t,"setFontName",{enumerable:!0,get:function(){return E.default}});var C=n(9339);Object.defineProperty(t,"setFontSize",{enumerable:!0,get:function(){return C.default}});var S=n(620);Object.defineProperty(t,"setImageAltText",{enumerable:!0,get:function(){return S.default}});var T=n(1696);Object.defineProperty(t,"setIndentation",{enumerable:!0,get:function(){return T.default}});var P=n(8106);Object.defineProperty(t,"changeCapitalization",{enumerable:!0,get:function(){return P.default}});var _=n(6823);Object.defineProperty(t,"toggleBold",{enumerable:!0,get:function(){return _.default}});var w=n(2473);Object.defineProperty(t,"toggleBullet",{enumerable:!0,get:function(){return w.default}});var O=n(926);Object.defineProperty(t,"toggleItalic",{enumerable:!0,get:function(){return O.default}});var D=n(5485);Object.defineProperty(t,"toggleNumbering",{enumerable:!0,get:function(){return D.default}});var M=n(8073);Object.defineProperty(t,"setOrderedListNumbering",{enumerable:!0,get:function(){return M.default}});var A=n(5936);Object.defineProperty(t,"toggleBlockQuote",{enumerable:!0,get:function(){return A.default}});var R=n(8761);Object.defineProperty(t,"toggleCodeBlock",{enumerable:!0,get:function(){return R.default}});var I=n(2809);Object.defineProperty(t,"toggleStrikethrough",{enumerable:!0,get:function(){return I.default}});var L=n(9752);Object.defineProperty(t,"toggleSubscript",{enumerable:!0,get:function(){return L.default}});var N=n(9282);Object.defineProperty(t,"toggleSuperscript",{enumerable:!0,get:function(){return N.default}});var x=n(3275);Object.defineProperty(t,"toggleUnderline",{enumerable:!0,get:function(){return x.default}});var k=n(8298);Object.defineProperty(t,"setHeadingLevel",{enumerable:!0,get:function(){return k.default}}),Object.defineProperty(t,"toggleHeader",{enumerable:!0,get:function(){return k.toggleHeader}});var j=n(7622);Object.defineProperty(t,"applyCellShading",{enumerable:!0,get:function(){return j.default}});var B=n(5367);Object.defineProperty(t,"toggleListType",{enumerable:!0,get:function(){return B.default}});var F=n(9703);Object.defineProperty(t,"blockFormat",{enumerable:!0,get:function(){return F.default}});var H=n(19);Object.defineProperty(t,"commitListChains",{enumerable:!0,get:function(){return H.default}}),Object.defineProperty(t,"experimentCommitListChains",{enumerable:!0,get:function(){return H.experimentCommitListChains}})},7622:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4077),i=n(6344);t.default=function(e,t){e.focus(),(0,o.default)(e,(function(){e.getSelectedRegions().forEach((function(n){if((0,i.safeInstanceOf)(n.rootNode,"HTMLTableCellElement")){(0,i.setColor)(n.rootNode,t,!0,e.isDarkMode(),!0,e.getDarkColorHandler());var o=(0,i.getTableCellMetadata)(n.rootNode);(0,i.saveTableCellMetadata)(n.rootNode,(0,r.__assign)((0,r.__assign)({},o),{bgColorOverride:!0}))}}))}),"applyCellShading")}},5443:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);function i(e){return null==e}t.default=function(e,t){var n=e.getElementAtCursor("TD,TH");n&&(0,r.default)(e,(function(){var r=new o.VTable(n);if(function(e,t){var n,r=e.getSelectionRangeEx();r&&1===r.type&&(t.selection=null!==(n=r.coordinates)&&void 0!==n?n:null)}(e,r),r.edit(t),r.writeBack(!1,e.getDarkColorHandler()),e.transformToDarkColor(r.table),e.focus(),!i(r.row)&&!i(r.col)){var a=function(e,t,n){var r=t,o=n;switch(e){case 0:o=0;break;case 1:r+=1,o=0;break;case 2:r=0;break;case 3:r=0,o+=1}return{newRow:r,newCol:o}}(t,r.row,r.col),l=a.newCol,s=a.newRow,u=r.getCell(s,l).td;u&&e.select(u,0)}}),"editTable")}},3242:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){(n=n||e.getElementAtCursor("TABLE"))&&(0,r.default)(e,(function(r,i){if(n){var a=new o.VTable(n);a.applyFormat(t),a.writeBack(!1,e.getDarkColorHandler()),e.transformToDarkColor(a.table),e.focus(),r&&i&&e.select(r,i)}}),"formatTable")}},6725:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6304),i=n(6344);function a(e){return e<=4?"120px":e<=6?"100px":"70px"}t.default=function(e,t,n,l){var s=e.getDocument(),u=s.createElement("table");u.cellSpacing="0",u.cellPadding="1";for(var d=0;d{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){e.focus();var i=e.getSelectionRangeEx(),a=function(e,n){return e.isContentEditable&&t(e,n)};if(i&&i.areAllCollapsed){var l=i.ranges[0].startContainer;"SPAN"!=(0,o.getTagOfNode)(l)||l.firstChild&&("BR"!=(0,o.getTagOfNode)(l.firstChild)||l.firstChild.nextSibling)?(e.triggerPluginEvent(13,{formatState:{},formatCallback:t}),e.triggerContentChangedEvent("Format")):(e.addUndoSnapshot(),a(l))}else(0,r.default)(e,(function(){var t,n;i.ranges.forEach((function(r){var o=e.getSelectionTraverser(r);if(o)for(var i=o&&o.currentInlineElement;i;){var l=o.getNextInlineElement();i.applyStyle((function(e,r){a(e,r),t=t||e,n=e})),i=l}})),t&&n&&0==i.type&&e.select(t,-2,n,-3)}),n)}},4485:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9069),o=n(6344);t.default=function(e,t,n,i){var a=[];(0,r.default)(e,(function(t,r){n(t,r);var o=e.getElementAtCursor("LI",t);o&&-1===a.indexOf(o)&&a.push(o)}),i),function(e,t){e.forEach((function(e){(0,o.safeInstanceOf)(e,"HTMLLIElement")&&(0,o.setListItemStyle)(e,t)}))}(a,[t])}},9703:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(4077),i=n(6344);t.default=function(e,t,n,a){e.focus();var l=e.getSelectionRangeEx();(0,o.default)(e,(function(o,a){if(!n||n()){var s=e.getSelectedRegions();if(s.length>0){var u=i.VListChain.createListChains(s,null==o?void 0:o.node);s.forEach((function(e){return t(e,o,a,u)})),(0,r.default)(e,u)}}0==l.type&&o&&a?e.select(o,a):e.select(l)}),a)}},949:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6344);t.default=function(e,t,n,i){(0,r.default)(e,(function(e){var n=(0,o.getSelectedBlockElementsInRegion)(e,!0),r=(0,o.collapseNodesInRegion)(e,n);if(r.length>0){if(1==r.length){var i=(0,o.getTagOfNode)(r[0]);"BR"==i?r=[(0,o.wrap)(r[0])]:"LI"!=i&&"TD"!=i||(r=(0,o.toArray)(r[0].childNodes))}for(;r[0]&&r[0].parentNode&&(0,o.isNodeInRegion)(e,r[0].parentNode)&&r.some((function(e){return"LI"==(0,o.getTagOfNode)(e)}));){var a=(0,o.splitBalancedNodeRange)(r);r=a?[a]:[]}t(r)}}),n,i)}},5483:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){var t=e.getStartNode();return t==e.getEndNode()&&3==t.nodeType&&["TR","TABLE"].indexOf((0,r.getTagOfNode)(t.parentNode))>=0}t.default=function(e,t){var n=e.getSelectionTraverser();if(n){for(var r=n.currentBlockElement,i=[];r;)o(r)||i.push(r),r=n.getNextBlockElement();i.forEach((function(e){var n=e.collapseToSingleElement();t(n)}))}}},19:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.experimentCommitListChains=void 0;var r=n(6344);function o(e,t){if((null==t?void 0:t.length)>0){var n=e.getSelectionRange(),o=n&&r.Position.getStart(n),i=n&&r.Position.getEnd(n),a=e.isFeatureEnabled("ReuseAllAncestorListElements"),l=e.isFeatureEnabled("DisableListChain");t.forEach((function(e){return e.commit(a,l)})),o&&i&&e.select(o,i)}}t.default=o,t.experimentCommitListChains=o},9733:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4077),o=n(6344);t.default=function(e,t,n){e.focus();var i=function(){return e.getDocument().execCommand(t,!1,void 0)},a=e.getSelectionRangeEx();if(a&&a.areAllCollapsed){e.addUndoSnapshot();var l=e.getPendableFormatState(!1);i();var s=(0,o.getObjectKeys)(o.PendableFormatCommandMap).filter((function(e){return o.PendableFormatCommandMap[e]==t}))[0];s&&(l[s]=!l[s],e.triggerPluginEvent(13,{formatState:l}))}else(0,r.default)(e,(function(){var t=0!=a.type;a.ranges.forEach((function(n){t&&e.select(n),i()})),t&&e.select(a)}),n)}},4077:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){e.addUndoSnapshot(t,"Format",void 0,n&&""!=n?{formatApiName:n}:void 0)}},6577:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){if((0,r.safeInstanceOf)(e,"HTMLElement")){var n=e.style.textAlign,o=(0,r.findClosestElementAncestor)(e,void 0,"blockquote");if(!o)return;var i=(a=e,"rtl"==(0,r.getComputedStyle)(a,"direction")||"rtl"==a.getAttribute("dir"));if(t){if(t.indexOf(o)>-1)return;t.push(o)}for(;o;)"center"==n?i?(o.style.removeProperty("marginInlineEnd"),o.style.marginInlineStart="auto"):(o.style.removeProperty("marginInlineStart"),o.style.marginInlineEnd="auto"):(o.style.removeProperty("marginInlineEnd"),o.style.removeProperty("marginInlineStart")),o=(0,r.findClosestElementAncestor)(o.parentElement,void 0,"blockquote")}var a}},5367:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9703),o=n(6344);t.default=function(e,t,n,i,a,l,s){void 0===n&&(n=0),void 0===i&&(i=!0),(0,r.default)(e,(function(r,s,u,d){var c,f,p=n>0&&d.filter((function(e){return e.canAppendAtCursor(n)}))[0],v=null===(f=(0,o.getBlockElementAtNode)(r.rootNode,null!==(c=null==s?void 0:s.node)&&void 0!==c?c:null))||void 0===f?void 0:f.collapseToSingleElement();if(v){var h=p&&u&&(null==s?void 0:s.equalTo(u))?p.createVListAtBlock(v,n):(0,o.createVListFromRegion)(r,1!==n&&i);h&&s&&u&&(h.changeListType(s,u,t),e.isFeatureEnabled("AutoFormatList")&&h.setListStyleType(a,l),h.writeBack(e.isFeatureEnabled("ReuseAllAncestorListElements"),e.isFeatureEnabled("DisableListChain")))}}),void 0,s||"toggleListType")}},9484:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addUndoSnapshot=void 0;var r=n(7582),o=n(6344);function i(e,t,n){var i;if(!e.lifecycle.shadowEditFragment){var a=e.api.getSelectionRangeEx(e),l=e.lifecycle.isDarkMode,s=function(e,t,n){switch(null==t?void 0:t.type){case 1:return(0,r.__assign)({type:1,tableId:t.table.id,isDarkMode:!!n},t.coordinates);case 2:return{type:2,imageId:t.image.id,isDarkMode:!!n};case 0:return(0,r.__assign)({type:0,isDarkMode:!!n,start:[],end:[]},(0,o.getSelectionPath)(e,t.ranges[0])||{})}}(e.contentDiv,a,l)||null;e.undo.snapshotsService.addSnapshot({html:e.contentDiv.innerHTML,metadata:s,knownColors:(null===(i=e.darkColorHandler)||void 0===i?void 0:i.getKnownColorsCopy())||[],entityStates:n},t),e.undo.hasNewContent=!1}}t.addUndoSnapshot=function(e,t,n,r,a){var l,s,u,d=e.undo,c=d.isNested;c||(d.isNested=!0,!e.undo.hasNewContent&&(null==a?void 0:a.getEntityState)&&t||i(e,r,null===(l=null==a?void 0:a.getEntityState)||void 0===l?void 0:l.call(a)));try{var f;t&&(u=t((f=e.api.getSelectionRange(e,!0))&&o.Position.getStart(f).normalize(),f&&o.Position.getEnd(f).normalize()),c||i(e,!1,null===(s=null==a?void 0:a.getEntityState)||void 0===s?void 0:s.call(a)))}finally{c||(d.isNested=!1)}if(t&&n){var p={eventType:7,source:n,data:u,additionalData:a};e.api.triggerEvent(e,p,!0)}r&&(f=e.api.getSelectionRange(e,!1))&&(e.undo.hasNewContent=!1,e.undo.autoCompletePosition=o.Position.getStart(f))}},9457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attachDomEvent=void 0;var r=n(6344);t.attachDomEvent=function(e,t){var n=(0,r.getObjectKeys)(t||{}).map((function(n){var r,o,i=(r=t[n],o={pluginEventType:null,beforeDispatch:null},"number"==typeof r?o.pluginEventType=r:"function"==typeof r?o.beforeDispatch=r:"object"==typeof r&&(o=r),o),a=i.pluginEventType,l=i.beforeDispatch,s=n,u=function(t){l&&l(t),null!=a&&e.api.triggerEvent(e,{eventType:a,rawEvent:t},!1)};return e.contentDiv.addEventListener(s,u),function(){e.contentDiv.removeEventListener(s,u)}}));return function(){return n.forEach((function(e){return e()}))}}},6447:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.coreApiMap=void 0;var r=n(9484),o=n(9457),i=n(3942),a=n(9943),l=n(3221),s=n(5049),u=n(5719),d=n(1467),c=n(2634),f=n(2628),p=n(5149),v=n(1844),h=n(6651),g=n(674),m=n(4830),y=n(7243),b=n(1036),E=n(1282),C=n(6233),S=n(5764),T=n(857);t.coreApiMap={attachDomEvent:o.attachDomEvent,addUndoSnapshot:r.addUndoSnapshot,createPasteFragment:i.createPasteFragment,ensureTypeInContainer:a.ensureTypeInContainer,focus:l.focus,getContent:s.getContent,getSelectionRange:d.getSelectionRange,getSelectionRangeEx:c.getSelectionRangeEx,getStyleBasedFormatState:f.getStyleBasedFormatState,getPendableFormatState:u.getPendableFormatState,hasFocus:p.hasFocus,insertNode:v.insertNode,restoreUndoSnapshot:h.restoreUndoSnapshot,select:g.select,selectRange:y.selectRange,setContent:E.setContent,switchShadowEdit:C.switchShadowEdit,transformColor:S.transformColor,triggerEvent:T.triggerEvent,selectTable:b.selectTable,selectImage:m.selectImage}},3942:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPasteFragment=void 0;var r=n(6344);t.createPasteFragment=function(e,t,n,o,i,a){if(void 0===a&&(a=!1),!t)return null;var l=function(e,t,n){var o=(0,r.createDefaultHtmlSanitizerOptions)();return o.cssStyleCallbacks["caret-color"]=function(){return!1},{eventType:10,clipboardData:t,fragment:e.contentDiv.ownerDocument.createDocumentFragment(),sanitizingOption:o,htmlBefore:"",htmlAfter:"",htmlAttributes:{},pasteType:n}}(e,t,(0,r.getPasteType)(o,i,a));return function(e,t,n,o,i,a,l){var s=l.fragment,u=t.rawHtml,d=t.text,c=t.imageDataUri,f=u?(new DOMParser).parseFromString(e.trustedHTMLHandler(u),"text/html"):void 0;if((0,r.retrieveMetadataFromClipboard)(f,l,e.trustedHTMLHandler),a&&c||!o&&!d&&c)(0,r.handleImagePaste)(c,s);else if(!o&&u&&f&&f.body){if((0,r.moveChildNodes)(s,null==f?void 0:f.body),i&&n){var p=function(e,t){var n=e.api.getPendableFormatState(e,!0),r=e.api.getStyleBasedFormatState(e,t);return{fontFamily:r.fontName,fontSize:r.fontSize,textColor:r.textColor,backgroundColor:r.backgroundColor,textColors:r.textColors,backgroundColors:r.backgroundColors,bold:n.isBold,italic:n.isItalic,underline:n.isUnderline}}(e,n.node);(0,r.applyTextStyle)(s,(function(e){return(0,r.applyFormat)(e,p)}))}}else d&&(0,r.handleTextPaste)(d,n,s);return 1!==l.pasteType&&e.api.triggerEvent(e,l,!0),(0,r.sanitizePasteContent)(l,n),s}(e,t,n,o,i,a,l)}},9943:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ensureTypeInContainer=void 0;var r=n(6344);t.ensureTypeInContainer=function(e,t,n){var o,i=(0,r.findClosestElementAncestor)(t.node,e.contentDiv,"table");i&&(o=i.querySelector("td,th"))&&(t=new r.Position(o,0)),t=t.normalize();var a,l=(0,r.getBlockElementAtNode)(e.contentDiv,t.node);if(l){if(a=l.collapseToSingleElement(),(0,r.isNodeEmpty)(a,!1,!0)){var s=a.ownerDocument.createElement("br");a.append(s)}var u=(0,r.isNodeEmpty)(a)||n&&function(e,t){return(0,r.safeInstanceOf)(e.target,"Node")&&e.target.contains(t)&&e.key===t.innerText}(n,a);a=a&&u?a:null}else a=(0,r.createElement)(1,e.contentDiv.ownerDocument),e.api.insertNode(e,a,{position:1,updateCursor:!1,replaceSelection:!1,insertOnNewLine:!1}),t=new r.Position(a,0);a&&e.lifecycle.defaultFormat&&(0,r.applyFormat)(a,e.lifecycle.defaultFormat,e.lifecycle.isDarkMode,e.darkColorHandler),n&&e.api.selectRange(e,(0,r.createRange)(new r.Position(t)))}},3221:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.focus=void 0;var r=n(6344);t.focus=function(e){if(!e.lifecycle.shadowEditFragment){if(!(e.api.hasFocus(e)&&e.api.getSelectionRange(e,!1)||e.domEvent.selectionRange&&e.api.selectRange(e,e.domEvent.selectionRange,!0))){var t=(0,r.getFirstLeafNode)(e.contentDiv)||e.contentDiv;e.api.selectRange(e,(0,r.createRange)(t,0),!0)}e.domEvent.selectionRange=null,e.api.hasFocus(e)||e.contentDiv.focus()}}},5049:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getContent=void 0;var r=n(6344);t.getContent=function(e,t){var n,o,i="",a=0==t,l=2==t,s=e.lifecycle.shadowEditFragment||e.contentDiv;if(4==t)i=s.textContent;else if(3==t)i=(0,r.getTextContent)(s);else{var u=(n=s,(0,r.safeInstanceOf)(n,"DocumentFragment")?(o=n.ownerDocument.createElement("div")).appendChild(n.cloneNode(!0)):o=n.cloneNode(!0),o);u.normalize();var d=e.api.getSelectionRange(e,!0),c=l?e.lifecycle.shadowEditFragment?e.lifecycle.shadowEditSelectionPath:d?(0,r.getSelectionPath)(e.contentDiv,d):null:null,f=c&&(0,r.createRange)(u,c.start,c.end);e.api.transformColor(e,u,!1,null,1,!0,e.lifecycle.isDarkMode),a?(e.api.triggerEvent(e,{eventType:8,clonedRoot:u},!0),i=u.innerHTML):i=f?(0,r.getHtmlWithSelectionPath)(u,f):u.innerHTML}return null!=i?i:""}},5719:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPendableFormatState=void 0;var r=n(6344);t.getPendableFormatState=function(e,t){var n,a=e.api.getSelectionRange(e,!0),l=e.pendingFormatState.pendableFormatState,s=null===(n=e.pendingFormatState.pendableFormatPosition)||void 0===n?void 0:n.normalize(),u=a&&r.Position.getStart(a).normalize(),d=u&&s&&a.collapsed&&u.equalTo(s);return a&&l&&d&&!t?l:u?function(e,t){for(var n=t.node,a={},l=[],s=function(){var e=(0,r.getTagOfNode)(n),t=1==n.nodeType&&n.style;e&&t&&(0,r.getObjectKeys)(o).forEach((function(n){l.indexOf(n)>=0||(a[n]=a[n]||o[n](e,t),i[n](t)&&l.push(n))})),n=n.parentNode};n&&(0,r.contains)(e.contentDiv,n);)s();return a}(e,u):{}};var o={isBold:function(e,t){return"B"==e||"STRONG"==e||"H1"==e||"H2"==e||"H3"==e||"H4"==e||"H5"==e||"H6"==e||parseInt(t.fontWeight)>=700||["bold","bolder"].indexOf(t.fontWeight)>=0},isUnderline:function(e,t){return"U"==e||t.textDecoration.indexOf("underline")>=0},isItalic:function(e,t){return"I"==e||"EM"==e||"italic"===t.fontStyle},isSubscript:function(e,t){return"SUB"==e||"sub"===t.verticalAlign},isSuperscript:function(e,t){return"SUP"==e||"super"===t.verticalAlign},isStrikeThrough:function(e,t){return"S"==e||"STRIKE"==e||t.textDecoration.indexOf("line-through")>=0}},i={isBold:function(e){return""!==e.fontWeight&&parseInt(e.fontWeight)<700||"normal"===e.fontWeight},isUnderline:function(e){return""!==e.textDecoration&&e.textDecoration.indexOf("underline")<0},isItalic:function(e){return""!==e.fontStyle&&"italic"!==e.fontStyle},isSubscript:function(e){return""!==e.verticalAlign&&"sub"!==e.verticalAlign},isSuperscript:function(e){return""!==e.verticalAlign&&"super"!==e.verticalAlign},isStrikeThrough:function(e){return""!==e.textDecoration&&e.textDecoration.indexOf("line-through")<0}}},1467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRange=void 0;var r=n(6344);t.getSelectionRange=function(e,t){var n,o=null;if(e.lifecycle.shadowEditFragment)return e.lifecycle.shadowEditSelectionPath&&(0,r.createRange)(e.contentDiv,e.lifecycle.shadowEditSelectionPath.start,e.lifecycle.shadowEditSelectionPath.end);if(!t||e.api.hasFocus(e)){var i=null===(n=e.contentDiv.ownerDocument.defaultView)||void 0===n?void 0:n.getSelection();if(i&&i.rangeCount>0){var a=i.getRangeAt(0);(0,r.contains)(e.contentDiv,a)&&(o=a)}}return!o&&t&&(o=e.domEvent.selectionRange),o}},2634:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionRangeEx=void 0;var r=n(6344);function o(e){return{type:0,ranges:e,areAllCollapsed:i(e)}}function i(e){return e.filter((function(e){return null==e?void 0:e.collapsed})).length==e.length}t.getSelectionRangeEx=function(e){var t,n,a;if(e.lifecycle.shadowEditFragment){var l,s=e.lifecycle,u=s.shadowEditTableSelectionPath,d=s.shadowEditSelectionPath,c=s.shadowEditImageSelectionPath;if(((null==u?void 0:u.length)||0)>0)return{type:1,ranges:l=e.lifecycle.shadowEditTableSelectionPath.map((function(t){return(0,r.createRange)(e.contentDiv,t.start,t.end)})),areAllCollapsed:i(l),table:(0,r.findClosestElementAncestor)(l[0].startContainer,e.contentDiv,"table"),coordinates:void 0};if(((null==c?void 0:c.length)||0)>0)return{type:2,ranges:l=e.lifecycle.shadowEditImageSelectionPath.map((function(t){return(0,r.createRange)(e.contentDiv,t.start,t.end)})),areAllCollapsed:i(l),image:(0,r.findClosestElementAncestor)(l[0].startContainer,e.contentDiv,"img"),imageId:void 0};var f=d&&(0,r.createRange)(e.contentDiv,d.start,d.end);return o(f?[f]:[])}if(e.api.hasFocus(e)){if(e.domEvent.tableSelectionRange)return e.domEvent.tableSelectionRange;if(e.domEvent.imageSelectionRange)return e.domEvent.imageSelectionRange;var p=null===(t=e.contentDiv.ownerDocument.defaultView)||void 0===t?void 0:t.getSelection();if(p&&p.rangeCount>0){var v=p.getRangeAt(0);if((0,r.contains)(e.contentDiv,v))return o([v])}}return null!==(a=null!==(n=e.domEvent.tableSelectionRange)&&void 0!==n?n:e.domEvent.imageSelectionRange)&&void 0!==a?a:o(e.domEvent.selectionRange?[e.domEvent.selectionRange]:[])}},2628:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getStyleBasedFormatState=void 0;var r=n(6344);t.getStyleBasedFormatState=function(e,t){if(!t)return{};var n=[],o=e.pendingFormatState.pendableFormatSpan;o&&(n=[o.style.fontFamily,o.style.fontSize,o.style.color,o.style.backgroundColor]);for(var i,a,l=t?(0,r.getComputedStyles)(t,["font-family","font-size","color","background-color","line-height","margin-top","margin-bottom","text-align","direction"]):[],s=e.contentDiv,u=e.darkColorHandler;t&&(0,r.contains)(s,t,!0)&&(!i||!a);){if(1==t.nodeType){var d=t;i=i||d.style.getPropertyValue("color"),a=a||d.style.getPropertyValue("background-color")}t=t.parentNode}e.lifecycle.isDarkMode||t!=e.contentDiv||(i=i||l[2],a=a||l[3]);var c=u.parseColorValue(n[2]||i),f=u.parseColorValue(n[3]||a);return{fontName:n[0]||l[0],fontSize:n[1]||l[1],textColor:c.lightModeColor,backgroundColor:f.lightModeColor,textColors:c.darkModeColor?{lightModeColor:c.lightModeColor,darkModeColor:c.darkModeColor}:void 0,backgroundColors:f.darkModeColor?{lightModeColor:f.lightModeColor,darkModeColor:f.darkModeColor}:void 0,lineHeight:l[4],marginTop:l[5],marginBottom:l[6],textAlign:l[7],direction:l[8]}}},5149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasFocus=void 0;var r=n(6344);t.hasFocus=function(e){var t=e.contentDiv.ownerDocument.activeElement;return!(!t||!(0,r.contains)(e.contentDiv,t,!0))}},1844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.insertNode=void 0;var r=n(6344);t.insertNode=function(e,t,n){var o;n=n||{position:3,insertOnNewLine:!1,updateCursor:!0,replaceSelection:!0,insertToRegionRoot:!1};var i=e.contentDiv;return n.updateCursor&&e.api.focus(e),4==n.position?(null===(o=i.parentNode)||void 0===o||o.insertBefore(t,i.nextSibling),!0):(e.api.transformColor(e,t,!0,(function(){var o,a;if(n)switch(n.position){case 0:case 1:var l,s=0==n.position,u=(0,r.getFirstLastBlockElement)(i,s);if(u){var d=s?u.getStartNode():u.getEndNode();n.insertOnNewLine||3==d.nodeType||(0,r.isVoidHtmlElement)(d)?(0,r.safeInstanceOf)(t,"DocumentFragment")?(l=(0,r.toArray)(t.childNodes),null===(o=d.parentNode)||void 0===o||o.insertBefore(t,s?d:d.nextSibling)):l=null===(a=d.parentNode)||void 0===a?void 0:a.insertBefore(t,s?d:d.nextSibling):l=d.insertBefore(t,s?d.firstChild:null)}else l=i.appendChild(t);if(l&&n.insertOnNewLine){var c=Array.isArray(l)?l:[l];(0,r.isBlockElement)(c[0])&&(0,r.isBlockElement)(c[c.length-1])||(0,r.wrap)(c)}break;case 2:var f=i.appendChild(t);f&&n.insertOnNewLine&&!(0,r.isBlockElement)(f)&&(0,r.wrap)(f);break;case 5:case 3:var p=function(e,t){var n=e.api.getSelectionRange(e,!0),r=null;return 5==t.position?(r=n,n=t.range):n&&(r=n.cloneRange()),{range:n,rangeToRestore:r}}(e,n),v=p.range,h=p.rangeToRestore;if(!v)return;n.replaceSelection&&!v.collapsed&&v.deleteContents();var g=r.Position.getStart(v),m=void 0;g=n.insertOnNewLine&&n.insertToRegionRoot?function(e,t,n){var o=(0,r.getRegionsFromRange)(e.contentDiv,t,0)[0],i=n.node;if(o){if(3!=i.nodeType||n.isAtEnd||(i=(0,r.splitTextNode)(i,n.offset,!0)),i!=o.rootNode)for(;i&&i.parentNode!=o.rootNode;)(0,r.splitParentNode)(i,!1),i=i.parentNode;i&&(n=new r.Position(i,-3))}return n}(e,v,g):n.insertOnNewLine&&(m=(0,r.getBlockElementAtNode)(i,g.normalize().node))?function(e,t,n){var o=new r.Position(e.getEndNode(),-3);if((0,r.safeInstanceOf)(o.node,"HTMLTableRowElement")){var i=t.contentDiv.ownerDocument.createElement("div");(0,r.createRange)(n).insertNode(i),o=new r.Position(i,0)}return o}(m,e,g):(0,r.adjustInsertPosition)(i,t,g,v);var y=11==t.nodeType?t.lastChild:t;(v=(0,r.createRange)(g)).insertNode(t),n.updateCursor&&y&&(h=(0,r.createRange)(new r.Position(y,-3).normalize())),h&&e.api.selectRange(e,h)}}),0),!0)}},6651:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreUndoSnapshot=void 0;var r=n(6344);t.restoreUndoSnapshot=function(e,t){var n,o;e.undo.hasNewContent&&t<0&&e.api.addUndoSnapshot(e,null,null,!1);var i=e.undo.snapshotsService.move(t);if(i&&null!=i.html)try{e.undo.isRestoring=!0,e.api.setContent(e,i.html,!0,null!==(n=i.metadata)&&void 0!==n?n:void 0);var a=e.darkColorHandler,l=e.lifecycle.isDarkMode;i.knownColors.forEach((function(e){a.registerColor(e.lightModeColor,l,e.darkModeColor)})),null===(o=i.entityStates)||void 0===o||o.forEach((function(t){var n=t.type,o=t.id,i=t.state,a=(0,r.queryElements)(e.contentDiv,(0,r.getEntitySelector)(n,o))[0],l=a&&(0,r.getEntityFromElement)(a);l&&e.api.triggerEvent(e,{eventType:15,operation:11,entity:l,state:i},!1)}))}finally{e.undo.isRestoring=!1}}},674:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.select=void 0;var r=n(6344);t.select=function(e,t,n,o,i){var a,l,s=null;if(function(e){var t=e;return t&&"object"==typeof t&&"number"==typeof t.type&&Array.isArray(t.ranges)}(t))s=t;else if((0,r.safeInstanceOf)(t,"HTMLTableElement")&&(null===(a=n)||a&&"object"==typeof a&&"object"==typeof a.firstCell&&"object"==typeof a.lastCell))s={type:1,ranges:[],areAllCollapsed:!1,table:t,coordinates:null!=n?n:void 0};else if((0,r.safeInstanceOf)(t,"HTMLImageElement")&&void 0===n)s={type:2,ranges:[],areAllCollapsed:!1,image:t};else{var u=t?(0,r.safeInstanceOf)(t,"Range")?t:(l=t)&&"object"==typeof l&&Array.isArray(l.start)&&Array.isArray(l.end)?(0,r.createRange)(e.contentDiv,t.start,t.end):function(e){var t=e;return t&&"object"==typeof t&&"object"==typeof t.node&&"number"==typeof t.offset}(t)||(0,r.safeInstanceOf)(t,"Node")?(0,r.createRange)(t,n,o,i):null:null;s=u?{type:0,ranges:[u],areAllCollapsed:u.collapsed}:null}if(s){switch(s.type){case 1:(0,r.contains)(e.contentDiv,s.table)&&(e.domEvent.imageSelectionRange=e.api.selectImage(e,null),e.domEvent.tableSelectionRange=e.api.selectTable(e,s.table,s.coordinates),s=e.domEvent.tableSelectionRange);break;case 2:(0,r.contains)(e.contentDiv,s.image)&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,s.image),s=e.domEvent.imageSelectionRange);break;case 0:e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,null),(0,r.contains)(e.contentDiv,s.ranges[0])?e.api.selectRange(e,s.ranges[0]):s=null}e.api.triggerEvent(e,{eventType:22,selectionRangeEx:s},!0)}else e.domEvent.tableSelectionRange=e.api.selectTable(e,null),e.domEvent.imageSelectionRange=e.api.selectImage(e,null);return!!s}},4830:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectImage=void 0;var r=n(3505),o=n(6344),i="imageStyle";t.selectImage=function(e,t){s(e);var n=null;if(t){var i=(0,o.createRange)(t);(0,r.default)(t,"imageSelected"),(0,r.default)(e.contentDiv,"contentDiv_"),e.api.selectRange(e,(0,o.createRange)(new o.Position(t,-3))),a(e,t),n={type:2,ranges:[i],image:t,areAllCollapsed:i.collapsed}}return n};var a=function(e,t){(0,o.removeImportantStyleRule)(t,["border","margin"]);var n=l(e,t.id);(0,o.setGlobalCssStyles)(e.contentDiv.ownerDocument,n,i+e.contentDiv.id)},l=function(e,t){return"#"+e.contentDiv.id+" #"+t+" {outline-style: auto!important;outline-color: "+(e.imageSelectionBorderColor||"#DB626C")+"!important;caret-color: transparent!important;}"},s=function(e){var t=e.contentDiv.ownerDocument;(0,o.removeGlobalCssStyle)(t,i+e.contentDiv.id)}},7243:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectRange=void 0;var r=n(5149),o=n(6344);t.selectRange=function(e,t,n){return!(e.lifecycle.shadowEditSelectionPath||!(0,o.contains)(e.contentDiv,t)||((0,o.addRangeToSelection)(t,n),(0,r.hasFocus)(e)||(e.domEvent.selectionRange=t),t.collapsed&&function(e){var t=e.contentDiv,n=e.pendingFormatState,r=e.api.getSelectionRange;if(n.pendableFormatState){var i=t.ownerDocument,a=(0,o.getPendableFormatState)(i);(0,o.getObjectKeys)(o.PendableFormatCommandMap).forEach((function(e){var t;!!(null===(t=n.pendableFormatState)||void 0===t?void 0:t[e])!=a[e]&&i.execCommand(o.PendableFormatCommandMap[e],!1,void 0)}));var l=r(e,!0),s=l&&o.Position.getStart(l);s&&(n.pendableFormatPosition=s)}}(e),0))}},1036:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectTable=void 0;var r=n(3505),o=n(6344),i="tableStyle";t.selectTable=function(e,t,n){var d;if(a(e),function(e){if(e){var t=e||{},n=t.firstCell,r=t.lastCell;if(n&&r){var o=function(e){return u(e.x)&&u(e.y)};return o(n)&&o(r)}}return!1}(n)&&t){(0,r.default)(t,"tableSelected"),(0,r.default)(e.contentDiv,"contentDiv_");var c=function(e,t,n){var r=function(e,t,n){var r,i=[],a=[],u=new o.VTable(e),d=(0,o.isWholeTableSelected)(u,t);d?function(e,t,n,r){var o=t.table,i=e+" #"+o.id;n.push(i,i+" *");var a=new Range;a.selectNode(o),r.push(a)}(n,u,a,i):function(e,t,n,r,i){var a,u=e.firstCell.y,d=e.firstCell.x,c=e.lastCell.y,f=e.lastCell.x,p=t.table,v=null,h=null,g=(0,o.toArray)(p.childNodes).filter((function(e){return["THEAD","TBODY","TFOOT"].indexOf((0,o.getTagOfNode)(e))>-1})),m=0,y=g.map((function(e){var t={el:(0,o.getTagOfNode)(e),start:m,end:e.childNodes.length+m};return m=t.end,t}));null===(a=t.cells)||void 0===a||a.forEach((function(e,t){var a=0;v=null,h=null;for(var g=y.filter((function(e){return e.start<=t&&e.end>t}))[0],m=g?">"+g.el+">":">",b=g&&t+1>=g.start?t+1-g.start:t+1,E=0;E=u&&t<=c&&E>=d&&E<=f)){s(C);var S=l(n,p.id,m,b,(0,o.getTagOfNode)(C),a),T=S+" *";r.push(S,T),v=v||p.querySelector(S),h=p.querySelector(S)}}if(v&&h){var P=new Range;P.setStartBefore(v),P.setEndAfter(h),i.push(P)}}))}(t,u,n,a,i);for(var c=[],f="";a.length>0;)((f+=(f.length>0?",":"")+a.shift()||"").length+((null===(r=a[0])||void 0===r?void 0:r.length)||0)>9e3||0==a.length)&&(c.push(f+" {background-color: rgb(198,198,198) !important; caret-color: transparent}"),f="");return{cssRules:c,ranges:i,isWholeTableSelected:d}}(t,n,"#"+e.contentDiv.id),a=r.cssRules,u=r.ranges,d=r.isWholeTableSelected;return a.forEach((function(t){return(0,o.setGlobalCssStyles)(e.contentDiv.ownerDocument,t,i+e.contentDiv.id)})),{ranges:u,isWholeTableSelected:d}}(e,t,n),f=c.ranges,p=c.isWholeTableSelected;if(!function(e,t){var n,r=t.firstCell;return!(e.rows.item(r.y)&&(null===(n=e.rows.item(r.y))||void 0===n?void 0:n.cells.item(r.x)))}(t,n)){var v=null===(d=t.rows.item(n.firstCell.y))||void 0===d?void 0:d.cells.item(n.firstCell.x);v&&e.api.selectRange(e,(0,o.createRange)(new o.Position(v,0)))}return{type:1,ranges:f,table:t,areAllCollapsed:f.filter((function(e){return null==e?void 0:e.collapsed})).length==f.length,coordinates:n,isWholeTableSelected:p}}return null};var a=function(e){var t=e.contentDiv.ownerDocument;(0,o.removeGlobalCssStyle)(t,i+e.contentDiv.id)};function l(e,t,n,r,o,i){return e+" #"+t+n+" tr:nth-child("+r+")>"+o+":nth-child("+i+")"}function s(e){e&&(0,o.removeImportantStyleRule)(e,["background-color","background"])}function u(e){return(!!e||0==e)&&e>-1}},1282:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setContent=void 0;var r=n(6344);t.setContent=function(e,t,n,o){var i,a,l=!1;if(e.contentDiv.innerHTML!=t){e.api.triggerEvent(e,{eventType:20,newContent:t},!0);var s=e.entity.entityMap,u=t||"",d=(new DOMParser).parseFromString(null!==(a=null===(i=e.trustedHTMLHandler)||void 0===i?void 0:i.call(e,u))&&void 0!==a?a:u,"text/html").body;(0,r.restoreContentWithEntityPlaceholder)(d,e.contentDiv,s);var c=(0,r.extractContentMetadata)(e.contentDiv);(function(e,t){if(!e.lifecycle.shadowEditSelectionPath&&t)switch(e.domEvent.tableSelectionRange=null,e.domEvent.imageSelectionRange=null,e.domEvent.selectionRange=null,t.type){case 0:e.api.selectTable(e,null),e.api.selectImage(e,null);var n=(0,r.createRange)(e.contentDiv,t.start,t.end);e.api.selectRange(e,n);break;case 1:var o=(0,r.queryElements)(e.contentDiv,"#"+t.tableId)[0];o&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,o,t));break;case 2:var i=(0,r.queryElements)(e.contentDiv,"#"+t.imageId)[0];i&&(e.domEvent.imageSelectionRange=e.api.selectImage(e,i))}})(e,o=o||c),l=!0}var f=e.lifecycle.isDarkMode;(!o&&f||o&&!!o.isDarkMode!=!!f)&&(e.api.transformColor(e,e.contentDiv,!1,null,f?0:1,!0,null==o?void 0:o.isDarkMode),l=!0),n&&l&&e.api.triggerEvent(e,{eventType:7,source:"SetContent"},!1)}},6233:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchShadowEdit=void 0;var r=n(6344);t.switchShadowEdit=function(e,t){var n=e.lifecycle,o=e.contentDiv,i=n.shadowEditEntities,a=n.shadowEditFragment,l=n.shadowEditSelectionPath,s=n.shadowEditTableSelectionPath,u=n.shadowEditImageSelectionPath,d=!!a,c=function(e,t){return(null==t?void 0:t.type)==e&&t.ranges.map((function(e){return(0,r.getSelectionPath)(o,e)})).map((function(e){return e}))||null};if(t){if(!d){var f=e.api.getSelectionRangeEx(e),p=e.api.getSelectionRange(e,!0);l=p&&(0,r.getSelectionPath)(o,p),s=c(1,f),u=c(2,f),i={},a=(0,r.moveContentWithEntityPlaceholders)(o,i),e.api.triggerEvent(e,{eventType:17,fragment:a,selectionPath:l},!1),n.shadowEditFragment=a,n.shadowEditSelectionPath=l,n.shadowEditTableSelectionPath=s,n.shadowEditImageSelectionPath=u,n.shadowEditEntities=i}n.shadowEditFragment&&(0,r.restoreContentWithEntityPlaceholder)(n.shadowEditFragment,o,n.shadowEditEntities,!0)}else if(n.shadowEditFragment=null,n.shadowEditSelectionPath=null,n.shadowEditEntities=null,d){if(e.api.triggerEvent(e,{eventType:18},!1),a&&(0,r.restoreContentWithEntityPlaceholder)(a,o,i),e.api.focus(e),l&&e.api.selectRange(e,(0,r.createRange)(o,l.start,l.end)),e.domEvent.imageSelectionRange){var v=e.domEvent.imageSelectionRange.image;e.contentDiv.querySelector("#"+v.id)&&e.api.selectImage(e,v)}if(e.domEvent.tableSelectionRange){var h=e.domEvent.tableSelectionRange,g=h.table,m=h.coordinates,y=g.id,b=e.contentDiv.querySelector("#"+y);g&&(e.domEvent.tableSelectionRange=e.api.selectTable(e,b,m))}}}},5764:(e,t)=>{"use strict";function n(e,t,o){o&&r(e)&&t(e);for(var i=e.firstChild;i;i=i.nextSibling)r(i)&&t(i),n(i,t)}function r(e){var t=e;return e.nodeType==Node.ELEMENT_NODE&&!!t.style}Object.defineProperty(t,"__esModule",{value:!0}),t.transformColor=void 0,t.transformColor=function(e,t,r,o,i,a,l){void 0===l&&(l=!1);var s=e.darkColorHandler,u=e.lifecycle.onExternalContentTransform,d=0==i;t&&(a||e.lifecycle.isDarkMode)&&n(t,u?function(e){u(e,l,d,s)}:function(e){s.transformElementColor(e,l,d)},r),null==o||o()}},857:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.triggerEvent=void 0;var n=[11,12,8,21];t.triggerEvent=function(e,t,r){e.lifecycle.shadowEditFragment&&!(n.indexOf(t.eventType)>=0)||!r&&e.plugins.some((function(e){return function(e,t){var n;return!(!t.onPluginEvent||!(null===(n=t.willHandleEventExclusively)||void 0===n?void 0:n.call(t,e)))&&(t.onPluginEvent(e),!0)}(t,e)}))||e.plugins.forEach((function(e){e.onPluginEvent&&e.onPluginEvent(t)}))}},3505:(e,t)=>{"use strict";function n(e,t,n){for(var r=0,o=function(){return n.getElementById(t+r)},i=o();i;)r++,i=o();e.id=t+r}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=e.ownerDocument;e.id?r.querySelectorAll("#"+e.id).length>1&&(e.removeAttribute("id"),n(e,t,r)):n(e,t,r)}},4142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2544),o=n(4082),i=n(6344),a=function(){function e(e){var t=this;this.editor=null,this.disposer=null,this.onPaste=function(e){var n,r=null;if(t.editor){var o=t.editor;(0,i.extractClipboardEvent)(e,(function(e){o&&!o.isDisposed()&&o.paste(e)}),{allowedCustomPasteType:t.state.allowedCustomPasteType,getTempDiv:function(){var e;return r=null!==(e=o.getSelectionRange())&&void 0!==e?e:null,t.getTempDiv(o)},removeTempDiv:function(e){r&&t.cleanUpAndRestoreSelection(e,r,!1)}},null!==(n=t.editor.getSelectionRange())&&void 0!==n?n:void 0)}},this.state={allowedCustomPasteType:e.allowedCustomPasteType||[]}}return e.prototype.getName=function(){return"CopyPaste"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=this.editor.addDomEventHandler({paste:function(e){return t.onPaste(e)},copy:function(e){return t.onCutCopy(e,!1)},cut:function(e){return t.onCutCopy(e,!0)}})},e.prototype.dispose=function(){this.disposer&&this.disposer(),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onCutCopy=function(e,t){var n=this;if(this.editor){var r=this.editor.getSelectionRangeEx();if(r&&!r.areAllCollapsed){var o=this.editor.getContent(2),a=this.getTempDiv(this.editor,!0),l=(0,i.setHtmlWithMetadata)(a,o,this.editor.getTrustedHTMLHandler()),s=null;if(1===r.type&&r.coordinates){var u=a.querySelector("#"+r.table.id);s=this.createTableRange(u,r.coordinates),t&&this.deleteTableContent(this.editor,r.table,r.coordinates)}else if(2===r.type){var d=a.querySelector("#"+r.image.id);d&&(s=(0,i.createRange)(d),t&&this.deleteImage(this.editor,r.image.id))}else s=0===(null==l?void 0:l.type)?(0,i.createRange)(a,l.start,l.end):null;s&&(this.editor.triggerPluginEvent(9,{clonedRoot:a,range:s,rawEvent:e,isCut:t}).range&&(0,i.addRangeToSelection)(s),this.editor.runAsync((function(e){n.cleanUpAndRestoreSelection(a,r,!t),t&&e.addUndoSnapshot((function(){var t=e.deleteSelectedContent();e.focus(),e.select(t)}),"Cut")})))}}},e.prototype.getTempDiv=function(e,t){var n=e.getCustomData("CopyPasteTempDiv",(function(){var t=(0,i.createElement)(3,e.getDocument());return e.getDocument().body.appendChild(t),t}),(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)}));return t&&(n.style.backgroundColor="white",n.style.color="black"),n.style.display="",n.focus(),n},e.prototype.cleanUpAndRestoreSelection=function(e,t,n){var r,o,a;if((null===(r=t)||void 0===r?void 0:r.type)||0==t.type){var l=t;switch(l.type){case 1:case 2:null===(o=this.editor)||void 0===o||o.select(l);break;case 0:var s=null===(a=l.ranges)||void 0===a?void 0:a[0];this.restoreRange(s,n)}}else this.restoreRange(t,n);e.style.backgroundColor="",e.style.color="",e.style.display="none",(0,i.moveChildNodes)(e)},e.prototype.restoreRange=function(e,t){e&&this.editor&&(t&&i.Browser.isAndroid&&e.collapse(),this.editor.select(e))},e.prototype.createTableRange=function(e,t){var n=new i.VTable(e);return n.selection=t,(0,o.removeCellsOutsideSelection)(n),n.writeBack(),(0,i.createRange)(n.table)},e.prototype.deleteTableContent=function(e,t,n){var o=new i.VTable(t);o.selection=n,(0,r.forEachSelectedCell)(o,(function(t){(null==t?void 0:t.td)&&(t.td.innerHTML=e.getTrustedHTMLHandler()("
                "))}));var a=(0,i.isWholeTableSelected)(o,n),l=t.rows.length-1===n.lastCell.y&&0===n.firstCell.y;a?(o.edit(4),o.writeBack()):l&&(o.edit(5),o.writeBack()),(a||l)&&(t.style.removeProperty("width"),t.style.removeProperty("height"))},e.prototype.deleteImage=function(e,t){e.queryElements("#"+t,(function(t){e.deleteNode(t)}))},e}();t.default=a},7039:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e,t){var n,o=this;this.editor=null,this.disposer=null,this.onDragStart=function(e){var t,n=e,r=null===(t=o.editor)||void 0===t?void 0:t.getElementAtCursor("*",n.target);r&&!r.isContentEditable&&n.preventDefault()},this.onDrop=function(){var e;null===(e=o.editor)||void 0===e||e.runAsync((function(e){e.addUndoSnapshot((function(){}),"Drop")}))},this.onFocus=function(){var e,t,n,r=o.state.tableSelectionRange||{},i=r.table,a=r.coordinates,l=(o.state.imageSelectionRange||{}).image;i&&a?null===(e=o.editor)||void 0===e||e.select(i,a):l?null===(t=o.editor)||void 0===t||t.select(l):o.state.selectionRange&&(null===(n=o.editor)||void 0===n||n.select(o.state.selectionRange)),o.state.selectionRange=null},this.onKeyDownDocument=function(e){9!=e.which||e.defaultPrevented||o.cacheSelection()},this.onMouseDownDocument=function(e){!o.editor||o.state.selectionRange||o.editor.contains(e.target)||o.cacheSelection()},this.cacheSelection=function(){!o.state.selectionRange&&o.editor&&(o.state.selectionRange=o.editor.getSelectionRange(!1))},this.onScroll=function(e){var t;null===(t=o.editor)||void 0===t||t.triggerPluginEvent(14,{rawEvent:e,scrollContainer:o.state.scrollContainer})},this.onKeyboardEvent=function(e){((0,r.isCharacterValue)(e)||e.which>=33&&e.which<=40)&&e.stopPropagation()},this.onInputEvent=function(e){e.stopPropagation()},this.onContextMenuEvent=function(e){var t,n,i=[],a=null===(t=o.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(),l=null==a?void 0:a.getInlineElementBefore(),s=e.target;2!=e.button&&l&&(s=l.getContainerNode()),o.state.contextMenuProviders.forEach((function(e){var t,n=null!==(t=e.getContextMenuItems(s))&&void 0!==t?t:[];(null==n?void 0:n.length)>0&&(i.length>0&&i.push(null),(0,r.arrayPush)(i,n))})),null===(n=o.editor)||void 0===n||n.triggerPluginEvent(16,{rawEvent:e,items:i})},this.state={isInIME:!1,scrollContainer:e.scrollContainer||t,selectionRange:null,stopPrintableKeyboardEventPropagation:!e.allowKeyboardEventPropagation,contextMenuProviders:(null===(n=e.plugins)||void 0===n?void 0:n.filter(i))||[],tableSelectionRange:null,imageSelectionRange:null}}return e.prototype.getName=function(){return"DOMEvent"},e.prototype.initialize=function(e){var t,n,o,i,a=this;this.editor=e;var l=this.editor.getDocument(),s=((t={keypress:this.getEventHandler(1),keydown:this.getEventHandler(0),keyup:this.getEventHandler(2),mousedown:5,contextmenu:this.onContextMenuEvent,compositionstart:function(){return a.state.isInIME=!0},compositionend:function(t){a.state.isInIME=!1,e.triggerPluginEvent(4,{rawEvent:t})},dragstart:this.onDragStart,drop:this.onDrop,focus:this.onFocus})[r.Browser.isIE?"textinput":"input"]=this.getEventHandler(3),t);r.Browser.isSafari?(l.addEventListener("mousedown",this.onMouseDownDocument,!0),l.addEventListener("keydown",this.onKeyDownDocument),null===(n=l.defaultView)||void 0===n||n.addEventListener("blur",this.cacheSelection)):r.Browser.isIEOrEdge?s.beforedeactivate=this.cacheSelection:s.blur=this.cacheSelection,this.disposer=e.addDomEventHandler(s),this.state.scrollContainer.addEventListener("scroll",this.onScroll),null===(o=l.defaultView)||void 0===o||o.addEventListener("scroll",this.onScroll),null===(i=l.defaultView)||void 0===i||i.addEventListener("resize",this.onScroll)},e.prototype.dispose=function(){var e,t,n,o,i,a=null===(e=this.editor)||void 0===e?void 0:e.getDocument();a&&r.Browser.isSafari&&(a.removeEventListener("mousedown",this.onMouseDownDocument,!0),a.removeEventListener("keydown",this.onKeyDownDocument),null===(t=a.defaultView)||void 0===t||t.removeEventListener("blur",this.cacheSelection)),null===(n=null==a?void 0:a.defaultView)||void 0===n||n.removeEventListener("resize",this.onScroll),null===(o=null==a?void 0:a.defaultView)||void 0===o||o.removeEventListener("scroll",this.onScroll),this.state.scrollContainer.removeEventListener("scroll",this.onScroll),null===(i=this.disposer)||void 0===i||i.call(this),this.disposer=null,this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.getEventHandler=function(e){var t=this;return this.state.stopPrintableKeyboardEventPropagation?{pluginEventType:e,beforeDispatch:function(n){return 3==e?t.onInputEvent(n):t.onKeyboardEvent(n)}}:e},e}();function i(e){var t;return!!(null===(t=e)||void 0===t?void 0:t.getContextMenuItems)}t.default=o},6262:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null,this.state={features:{}}}return e.prototype.getName=function(){return"Edit"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){var t,n=!1,o=null,i=!1,a=0==e.eventType;if(a){var l=e.rawEvent,s=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n=(i=(0,r.isCtrlOrMetaPressed)(l))||l.altKey,o=this.state.features[l.which]||s&&!s.collapsed&&this.state.features[258]}else 7==e.eventType&&(o=this.state.features[257]);for(var u=0;o&&u<(null==o?void 0:o.length);u++){var d=o[u];if((d.allowFunctionKeys||!n)&&this.editor&&d.shouldHandleEvent(e,this.editor,i)){d.handleEvent(e,this.editor),a&&(e.handledByEditFeature=!0);break}}},e}();t.default=o},3346:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4195),o=n(6344),i=/_(\d{1,8})$/,a=["^_Entity$","^_EId_","^_EType_","^_EReadonly_"],l=[6,7,4,5],s=function(){function e(){var e=this;this.editor=null,this.handleCutEvent=function(t){var n,r=null===(n=e.editor)||void 0===n?void 0:n.getSelectionRange();r&&!r.collapsed&&e.checkRemoveEntityForRange(t)},this.state={entityMap:{}}}return e.prototype.getName=function(){return"Entity"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.state.entityMap={}},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){var t;switch(e.eventType){case 6:this.handleMouseUpEvent(e);break;case 0:this.handleKeyDownEvent(e.rawEvent);break;case 9:e.isCut&&this.handleCutEvent(e.rawEvent);break;case 10:this.handleBeforePasteEvent(e.sanitizingOption);break;case 7:this.handleContentChangedEvent(e);break;case 11:this.handleContentChangedEvent();break;case 8:this.handleExtractContentWithDomEvent(e.clonedRoot);break;case 16:this.handleContextMenuEvent(e.rawEvent);break;case 15:this.handleEntityOperationEvent(e)}(null===(t=this.editor)||void 0===t?void 0:t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))&&(0,r.inlineEntityOnPluginEvent)(e,this.editor)},e.prototype.handleContextMenuEvent=function(e){var t,n=e.target,r=n&&(null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor((0,o.getEntitySelector)(),n));r&&(e.preventDefault(),this.triggerEvent(r,2,e))},e.prototype.handleMouseUpEvent=function(e){var t,n=e.rawEvent,r=e.isClicking,i=n.target;this.editor&&r&&i&&(t=this.editor.getElementAtCursor((0,o.getEntitySelector)(),i))&&(this.triggerEvent(t,1,n),u(this.editor))},e.prototype.handleKeyDownEvent=function(e){var t;if((0,o.isCharacterValue)(e)||8==e.which||46==e.which||13==e.which){var n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed&&this.checkRemoveEntityForRange(e)}},e.prototype.handleBeforePasteEvent=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed&&this.checkRemoveEntityForRange(null),e.additionalAllowedCssClasses&&(0,o.arrayPush)(e.additionalAllowedCssClasses,a)},e.prototype.handleContentChangedEvent=function(e){var t,n=this,i=!1;(0,o.getObjectKeys)(this.state.entityMap).forEach((function(e){var t=n.state.entityMap[e],r=t.element;!n.editor||t.isDeleted||n.editor.contains(r)||(t.isDeleted=!0,n.triggerEvent(r,6),i||r.isContentEditable||(0,o.isBlockElement)(r)||(i=!0))})),("InsertEntity"==(null==e?void 0:e.source)&&e.data?[e.data]:this.getExistingEntities().filter((function(e){var t=n.state.entityMap[e.id];return!t||t.element!=e.wrapper||t.isDeleted}))).forEach((function(e){var t=e.wrapper,r=e.type,i=e.id,a=e.isReadonly;e.id=n.ensureUniqueId(r,i,t),(0,o.commitEntity)(t,r,a,e.id),n.handleNewEntity(e)})),i&&(null===(t=this.editor)||void 0===t?void 0:t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))&&(0,r.normalizeDelimitersInEditor)(this.editor)},e.prototype.handleEntityOperationEvent=function(e){if(this.editor&&l.indexOf(e.operation)>=0){var t=this.state.entityMap[e.entity.id];t&&(t.isDeleted=!0)}},e.prototype.handleExtractContentWithDomEvent=function(e){var t=this;(0,o.toArray)(e.querySelectorAll((0,o.getEntitySelector)())).forEach((function(e){e.removeAttribute("contentEditable"),t.triggerEvent(e,8)}))},e.prototype.checkRemoveEntityForRange=function(e){var t,n=this,r=[],i=(0,o.getEntitySelector)();if(null===(t=this.editor)||void 0===t||t.queryElements(i,1,(function(t){t.isContentEditable?r.push(t):n.triggerEvent(t,6,e)})),this.editor&&r.length>0){var a=this.editor.queryElements(i,2);r.forEach((function(t){var r=a.indexOf(t)>=0;n.triggerEvent(t,r?6:7,e)}))}},e.prototype.triggerEvent=function(e,t,n){var r,i=e&&(0,o.getEntityFromElement)(e);return i?null===(r=this.editor)||void 0===r?void 0:r.triggerPluginEvent(15,{operation:t,rawEvent:n,entity:i}):null},e.prototype.handleNewEntity=function(e){var t=e.wrapper,n=this.triggerEvent(t,0),r={element:e.wrapper};(null==n?void 0:n.shouldPersist)&&(r.canPersist=!0),this.state.entityMap[e.id]=r},e.prototype.getExistingEntities=function(){var e,t;return null!==(t=null===(e=this.editor)||void 0===e?void 0:e.queryElements((0,o.getEntitySelector)()).map(o.getEntityFromElement).filter((function(e){return!!e})))&&void 0!==t?t:[]},e.prototype.ensureUniqueId=function(e,t,n){for(var r=i.exec(t),o=(r?t.substr(0,t.length-r[0].length):t)||e,a="",l=r&&parseInt(r[1])||0;;l++){a=l>0?o+"_"+l:o;var s=this.state.entityMap[a];if(!s||s.element==n)break}return a},e}();t.default=s;var u=o.Browser.isIE?function(e){e.runAsync((function(e){var t=e.getCustomData("ENTITY_IE_FOCUS_BUTTON",(function(){var t=(0,o.createElement)({tag:"button",style:"overflow:hidden;position:fixed;width:0;height:0;top:-1000px"},e.getDocument());return t.onblur=function(){t.style.display="none"},e.insertNode(t,{position:4}),t}));t.style.display="",(0,o.addRangeToSelection)((0,o.createRange)(t,0))}))}:function(){}},6194:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"ImageSelection"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){var e;null===(e=this.editor)||void 0===e||e.select(null),this.editor=null},e.prototype.onPluginEvent=function(e){var t;if(this.editor)switch(e.eventType){case 17:case 18:var n=this.editor.getSelectionRangeEx();2==n.type&&this.editor.select(n.image);break;case 6:var o=e.rawEvent.target;(0,r.safeInstanceOf)(o,"HTMLImageElement")&&o.isContentEditable&&0===e.rawEvent.button&&this.editor.select(o);break;case 5:var i=e.rawEvent.target,a=this.editor.getSelectionRangeEx();a&&2===a.type&&a.image!==i&&this.editor.select(null);break;case 2:var l=e.rawEvent.key,s=this.editor.getSelectionRangeEx();2===s.type&&("Escape"===l?(this.editor.select(s.image,-2),null===(t=this.editor.getSelectionRange())||void 0===t||t.collapse(),e.rawEvent.stopPropagation()):"Delete"===l?(this.editor.deleteNode(s.image),e.rawEvent.preventDefault()):this.editor.select(s.ranges[0]));break;case 16:var u=e.rawEvent.target,d=this.editor.getSelectionRangeEx();!(0,r.safeInstanceOf)(u,"HTMLImageElement")||2===d.type&&d.image===u||this.editor.select(u)}},e}();t.default=o},6121:(e,t,n)=>{"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0});var i=n(7582),a=n(6344),l="contenteditable",s=a.Browser.isFirefox?((r={}).enableObjectResizing=!1,r.enableInlineTableEditing=!1,r):a.Browser.isIE?((o={}).defaultParagraphSeparator="div",o.AutoUrlDetect=!1,o):{},u={darkModeColor:"rgb(51,51,51)",lightModeColor:"rgb(255,255,255)"},d={darkModeColor:"rgb(255,255,255)",lightModeColor:"rgb(0,0,0)"},c=function(){function e(e,t){var n,r,o=this;this.editor=null,this.initializer=null,this.disposer=null,this.initialContent=e.initialContent||t.innerHTML||"",null===t.getAttribute(l)&&(this.initializer=function(){t.contentEditable="true",t.style.userSelect="text",t.style.webkitUserSelect="text"},this.disposer=function(){t.style.userSelect="",t.style.webkitUserSelect="",t.removeAttribute(l)}),this.adjustColor=e.doNotAdjustEditorColor?function(){}:function(){var e,n=d,r=u,i=o.state.isDarkMode,l=null===(e=o.editor)||void 0===e?void 0:e.getDarkColorHandler();(0,a.setColor)(t,n,!1,i,!1,l),(0,a.setColor)(t,r,!0,i,!1,l)};var s=null!==(n=e.getDarkColor)&&void 0!==n?n:function(e){return e},c=e.defaultFormat?(0,i.__assign)({},e.defaultFormat):null;c&&(c.textColor&&!c.textColors&&(c.textColors={lightModeColor:c.textColor,darkModeColor:s(c.textColor)},delete c.textColor),c.backgroundColor&&!c.backgroundColors&&(c.backgroundColors={lightModeColor:c.backgroundColor,darkModeColor:s(c.backgroundColor)},delete c.backgroundColor)),this.state={customData:{},defaultFormat:c,isDarkMode:!!e.inDarkMode,getDarkColor:s,onExternalContentTransform:null!==(r=e.onExternalContentTransform)&&void 0!==r?r:null,experimentalFeatures:e.experimentalFeatures||[],shadowEditFragment:null,shadowEditEntities:null,shadowEditSelectionPath:null,shadowEditTableSelectionPath:null,shadowEditImageSelectionPath:null}}return e.prototype.getName=function(){return"Lifecycle"},e.prototype.initialize=function(e){var t;this.editor=e,this.editor.setContent(this.initialContent,!1),null===(t=this.initializer)||void 0===t||t.call(this),this.adjustColor(),this.adjustBrowserBehavior(),this.editor.triggerPluginEvent(11,{},!0)},e.prototype.dispose=function(){var e,t=this;null===(e=this.editor)||void 0===e||e.triggerPluginEvent(12,{},!0),(0,a.getObjectKeys)(this.state.customData).forEach((function(e){var n=t.state.customData[e];n&&n.disposer&&n.disposer(n.value),delete t.state.customData[e]})),this.disposer&&(this.disposer(),this.disposer=null,this.initializer=null),this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){7!=e.eventType||"SwitchToDarkMode"!=e.source&&"SwitchToLightMode"!=e.source||(this.state.isDarkMode="SwitchToDarkMode"==e.source,this.adjustColor())},e.prototype.adjustBrowserBehavior=function(){var e=this;(0,a.getObjectKeys)(s).forEach((function(t){var n;try{null===(n=e.editor)||void 0===n||n.getDocument().execCommand(t,!1,s[t])}catch(e){}}))},e}();t.default=c},5896:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){var e=this;this.editor=null,this.mouseUpEventListerAdded=!1,this.mouseDownX=null,this.mouseDownY=null,this.onMouseUp=function(t){e.editor&&(e.removeMouseUpEventListener(),e.editor.triggerPluginEvent(6,{rawEvent:t,isClicking:e.mouseDownX==t.pageX&&e.mouseDownY==t.pageY}))}}return e.prototype.getName=function(){return"MouseUp"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.removeMouseUpEventListener(),this.editor=null},e.prototype.onPluginEvent=function(e){this.editor&&5==e.eventType&&!this.mouseUpEventListerAdded&&(this.editor.getDocument().addEventListener("mouseup",this.onMouseUp,!0),this.mouseUpEventListerAdded=!0,this.mouseDownX=e.rawEvent.pageX,this.mouseDownY=e.rawEvent.pageY)},e.prototype.removeMouseUpEventListener=function(){this.editor&&this.mouseUpEventListerAdded&&(this.mouseUpEventListerAdded=!1,this.editor.getDocument().removeEventListener("mouseup",this.onMouseUp,!0))},e}();t.default=n},3433:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"NormalizeTable"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 11:case 7:this.editor&&this.normalizeTables(this.editor.queryElements("table"));break;case 10:this.normalizeTables((0,r.toArray)(e.fragment.querySelectorAll("table")));break;case 5:this.normalizeTableFromEvent(e.rawEvent);break;case 0:e.rawEvent.shiftKey&&this.normalizeTableFromEvent(e.rawEvent);break;case 8:t=e.clonedRoot,(0,r.toArray)(t.querySelectorAll("li")).forEach((function(e){var t=e.previousSibling;"block"==e.style.display&&(0,r.safeInstanceOf)(t,"HTMLLIElement")&&(e.style.removeProperty("display"),t.appendChild((0,r.changeElementTag)(e,"div")))}))}var t},e.prototype.normalizeTableFromEvent=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor("table",e.target);n&&this.normalizeTables([n])},e.prototype.normalizeTables=function(e){if(this.editor&&e.length>0){var t=this.editor.getSelectionRangeEx(),n=0==(null==t?void 0:t.type)&&t.ranges[0]||{},o=n.startContainer,i=n.endContainer,a=n.startOffset,l=n.endOffset,s=function(e){var t=!1;return e.forEach((function(e){for(var n,o=null,i=e.firstChild;i;i=i.nextSibling)switch((0,r.getTagOfNode)(i)){case"TR":o||(o=e.ownerDocument.createElement("tbody"),e.insertBefore(o,i)),o.appendChild(i),i=o,t=!0;break;case"TBODY":o?((0,r.moveChildNodes)(o,i,!0),null===(n=i.parentNode)||void 0===n||n.removeChild(i),i=o,t=!0):o=i;break;default:o=null}var a=e.querySelectorAll("colgroup"),l=e.querySelector("thead");l&&a.forEach((function(e){l.contains(e)||l.appendChild(e)}))})),t}(e);s&&(o&&i&&"number"==typeof a&&"number"==typeof l?this.editor.select(o,a,i,l):1==(null==t?void 0:t.type)&&t.coordinates&&this.editor.select(t.table,t.coordinates))}},e}();t.default=o},4465:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null,this.state={pendableFormatPosition:null,pendableFormatState:null,pendableFormatSpan:null}}return e.prototype.getName=function(){return"PendingFormatState"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.clear()},e.prototype.getState=function(){return this.state},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 13:e.formatState?(this.state.pendableFormatPosition=this.getCurrentPosition(),this.state.pendableFormatState=e.formatState,this.state.pendableFormatSpan=e.formatCallback?this.createPendingFormatSpan(e.formatCallback):null):this.clear();break;case 0:case 5:case 7:var t=null;this.editor&&0==e.eventType&&(0,r.isCharacterValue)(e.rawEvent)&&this.state.pendableFormatSpan?(this.state.pendableFormatSpan.removeAttribute("contentEditable"),this.editor.insertNode(this.state.pendableFormatSpan),this.editor.select(this.state.pendableFormatSpan,0,this.state.pendableFormatSpan,-1),this.clear()):(0==e.eventType&&e.rawEvent.which>=33&&e.rawEvent.which<=40||this.state.pendableFormatPosition&&(t=this.getCurrentPosition())&&!this.state.pendableFormatPosition.equalTo(t)||7==e.eventType&&("SwitchToDarkMode"==e.source||"SwitchToLightMode"==e.source))&&this.clear()}},e.prototype.clear=function(){this.state.pendableFormatPosition=null,this.state.pendableFormatState=null,this.state.pendableFormatSpan=null},e.prototype.getCurrentPosition=function(){var e,t,n=null===(e=this.editor)||void 0===e?void 0:e.getSelectionRange();return null!==(t=n&&r.Position.getStart(n).normalize())&&void 0!==t?t:null},e.prototype.createPendingFormatSpan=function(e){var t,n,o=this.state.pendableFormatSpan;if(!o&&this.editor){var i=this.editor.getStyleBasedFormatState(),a=this.editor.getDocument(),l=this.editor.isDarkMode();(o=a.createElement("span")).contentEditable="true",o.appendChild(a.createTextNode("​")),o.style.setProperty("font-family",null!==(t=i.fontName)&&void 0!==t?t:null),o.style.setProperty("font-size",null!==(n=i.fontSize)&&void 0!==n?n:null);var s=this.editor.getDarkColorHandler();(i.textColors||i.textColor)&&(0,r.setColor)(o,i.textColors||i.textColor,!1,l,!1,s),(i.backgroundColors||i.backgroundColor)&&(0,r.setColor)(o,i.backgroundColors||i.backgroundColor,!0,l,!1,s)}return o&&e(o),o},e}();t.default=o},4269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(){this.editor=null}return e.prototype.getName=function(){return"TypeInContainer"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.isRangeEmpty=function(e){return!(!e.collapsed||e.startContainer.nodeType!==Node.ELEMENT_NODE||"DIV"!=(0,r.getTagOfNode)(e.startContainer)||e.startContainer.firstChild)},e.prototype.onPluginEvent=function(e){var t,n=this;if(1==e.eventType&&this.editor&&(!e.rawEvent||!(0,r.isCtrlOrMetaPressed)(e.rawEvent))){var o=this.editor.getSelectionRange(),i=o&&(0,r.findClosestElementAncestor)(o.startContainer,void 0,"[style]");if(!o||!this.isRangeEmpty(o)&&this.editor.contains(i))return;if(o.collapsed)this.editor.ensureTypeInContainer(r.Position.getStart(o),e.rawEvent);else{var a=function(){var t,r,o=null===(t=n.editor)||void 0===t?void 0:t.getFocusedPosition();o&&(null===(r=n.editor)||void 0===r||r.ensureTypeInContainer(o,e.rawEvent))};r.Browser.isMobileOrTablet?null===(t=this.editor.getDocument().defaultView)||void 0===t||t.setTimeout(a,100):this.editor.runAsync(a)}}},e}();t.default=o},6469:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e){var t,n,o;this.editor=null,this.lastKeyPress=null,this.state={snapshotsService:e.undoMetadataSnapshotService||(n=e.undoSnapshotService,n?{canMove:function(e){return n.canMove(e)},move:function(e){return(o=n.move(e))?{html:o,metadata:null,knownColors:[]}:null},addSnapshot:function(e,t){return n.addSnapshot(e.html+(e.metadata?"\x3c!--"+JSON.stringify(e.metadata)+"--\x3e":""),t)},clearRedo:function(){return n.clearRedo()},canUndoAutoComplete:function(){return n.canUndoAutoComplete()}}:void 0)||(t=(0,r.createSnapshots)(1e7),{canMove:function(e){return(0,r.canMoveCurrentSnapshot)(t,e)},move:function(e){return(0,r.moveCurrentSnapshot)(t,e)},addSnapshot:function(e,n){return(0,r.addSnapshotV2)(t,e,n)},clearRedo:function(){return(0,r.clearProceedingSnapshotsV2)(t)},canUndoAutoComplete:function(){return(0,r.canUndoAutoComplete)(t)}}),isRestoring:!1,hasNewContent:!1,isNested:!1,autoCompletePosition:null}}return e.prototype.getName=function(){return"Undo"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.getState=function(){return this.state},e.prototype.willHandleEventExclusively=function(e){return 0==e.eventType&&8==e.rawEvent.which&&!e.rawEvent.ctrlKey&&this.canUndoAutoComplete()},e.prototype.onPluginEvent=function(e){if(this.editor&&!this.editor.isInIME())switch(e.eventType){case 11:var t=this.editor.getUndoState();t.canUndo||t.canRedo||this.addUndoSnapshot();break;case 0:this.onKeyDown(e.rawEvent);break;case 1:this.onKeyPress(e.rawEvent);break;case 4:this.clearRedoForInput(),this.addUndoSnapshot();break;case 7:this.onContentChanged(e);break;case 23:this.onBeforeKeyboardEditing(e.rawEvent)}},e.prototype.onKeyDown=function(e){var t,n;if(8==e.which&&!e.altKey||46==e.which){if(8==e.which&&!e.ctrlKey&&this.canUndoAutoComplete())e.preventDefault(),null===(t=this.editor)||void 0===t||t.undo(),this.state.autoCompletePosition=null,this.lastKeyPress=e.which;else if(!e.defaultPrevented){var o=null===(n=this.editor)||void 0===n?void 0:n.getSelectionRange();!o||o.collapsed&&this.lastKeyPress==e.which&&!(0,r.isCtrlOrMetaPressed)(e)||this.addUndoSnapshot(),this.state.hasNewContent=!0,this.lastKeyPress=e.which}}else e.which>=33&&e.which<=40?(this.state.hasNewContent&&this.addUndoSnapshot(),this.lastKeyPress=0):8!=this.lastKeyPress&&46!=this.lastKeyPress||this.state.hasNewContent&&this.addUndoSnapshot()},e.prototype.onKeyPress=function(e){var t;if(!e.metaKey){var n=null===(t=this.editor)||void 0===t?void 0:t.getSelectionRange();n&&!n.collapsed||32==e.which&&32!=this.lastKeyPress||13==e.which?(this.addUndoSnapshot(),13==e.which&&(this.state.hasNewContent=!0)):this.clearRedoForInput(),this.lastKeyPress=e.which}},e.prototype.onBeforeKeyboardEditing=function(e){e.which!=this.lastKeyPress&&this.addUndoSnapshot(),this.lastKeyPress=e.which,this.state.hasNewContent=!0},e.prototype.onContentChanged=function(e){this.state.isRestoring||"SwitchToDarkMode"==e.source||"SwitchToLightMode"==e.source||"Keyboard"==e.source||this.clearRedoForInput()},e.prototype.clearRedoForInput=function(){this.state.snapshotsService.clearRedo(),this.lastKeyPress=0,this.state.hasNewContent=!0},e.prototype.canUndoAutoComplete=function(){var e,t,n=null===(e=this.editor)||void 0===e?void 0:e.getFocusedPosition();return this.state.snapshotsService.canUndoAutoComplete()&&!!n&&!!(null===(t=this.state.autoCompletePosition)||void 0===t?void 0:t.equalTo(n))},e.prototype.addUndoSnapshot=function(){var e;null===(e=this.editor)||void 0===e||e.addUndoSnapshot(),this.state.autoCompletePosition=null},e}();t.default=o},8376:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPluginState=void 0;var r=n(4142),o=n(7039),i=n(6262),a=n(3346),l=n(6194),s=n(6121),u=n(5896),d=n(3433),c=n(4465),f=n(4269),p=n(6469);t.default=function(e,t){var n=t.corePluginOverride||{};return{typeInContainer:n.typeInContainer||new f.default,edit:n.edit||new i.default,pendingFormatState:n.pendingFormatState||new c.default,_placeholder:null,typeAfterLink:null,undo:n.undo||new p.default(t),domEvent:n.domEvent||new o.default(t,e),mouseUp:n.mouseUp||new u.default,copyPaste:n.copyPaste||new r.default(t),entity:n.entity||new a.default,imageSelection:n.imageSelection||new l.default,normalizeTable:n.normalizeTable||new d.default,lifecycle:n.lifecycle||new s.default(t,e)}},t.getPluginState=function(e){return{domEvent:e.domEvent.getState(),pendingFormatState:e.pendingFormatState.getState(),edit:e.edit.getState(),lifecycle:e.lifecycle.getState(),undo:e.undo.getState(),entity:e.entity.getState(),copyPaste:e.copyPaste.getState()}}},2544:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.forEachSelectedCell=void 0,t.forEachSelectedCell=function(e,t){var n;if(e.selection)for(var r=e.selection,o=r.lastCell,i=r.firstCell,a=i.y;a<=o.y;a++)for(var l=i.x;l<=o.x;l++)e.cells&&(null===(n=e.cells[a][l])||void 0===n?void 0:n.td)&&t(e.cells[a][l])}},4195:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeDelimitersInEditor=t.inlineEntityOnPluginEvent=void 0;var r=n(6344),o=".entityDelimiterAfter,.entityDelimiterBefore",i="​",a="span"+(0,r.getEntitySelector)();function l(e){var t,n,o,a;e.normalize();var l,s=e.firstChild,u=null!==(n=null===(t=s.nodeValue)||void 0===t?void 0:t.indexOf(i))&&void 0!==n?n:-1;if(u>=0&&((0,r.splitTextNode)(s,0==u?1:u,!1),e.childNodes.forEach((function(e){e.nodeValue!==i&&(l=e)})),l)){null===(o=e.parentElement)||void 0===o||o.insertBefore(l,"entityDelimiterBefore"==e.className?e:e.nextSibling);var d=null===(a=l.ownerDocument)||void 0===a?void 0:a.getSelection();d&&d.setPosition(l,new r.Position(l,-1).offset)}}function s(e){e.queryElements(o).forEach((function(e){if((0,r.getDelimiterFromElement)(e)){var t=e.classList.contains("entityDelimiterBefore")?e.nextElementSibling:e.previousElementSibling;(0,r.safeInstanceOf)(t,"HTMLElement")&&(0,r.getEntityFromElement)(t)||c(e)}else f(e)})),u(e.queryElements(a))}function u(e){e.forEach((function(e){d(e)&&(0,r.addDelimiters)(e)}))}function d(e){return!!(e&&(0,r.safeInstanceOf)(e,"HTMLElement")&&(t=(0,r.getEntityFromElement)(e),(null==t?void 0:t.isReadonly)&&!(0,r.isBlockElement)(t.wrapper)&&(0,r.safeInstanceOf)(t.wrapper,"HTMLElement")));var t}function c(e){var t;null===(t=null==e?void 0:e.parentElement)||void 0===t||t.removeChild(e)}function f(e,t){if(void 0===t&&(t=!0),e){var n=e.classList.contains("entityDelimiterAfter")?e.previousElementSibling:e.nextElementSibling;t&&n&&d(n)||(e.classList.remove("entityDelimiterAfter","entityDelimiterBefore"),e.normalize(),e.childNodes.forEach((function(e){var t,n,o,a=null!==(n=null===(t=e.textContent)||void 0===t?void 0:t.indexOf(i))&&void 0!==n?n:-1;a>=0&&(null===(o=(0,r.createRange)(e,a,e,a+1))||void 0===o||o.deleteContents())})))}}t.inlineEntityOnPluginEvent=function(e,t){switch(e.eventType){case 7:"SetContent"===e.source&&s(t);break;case 11:s(t);break;case 10:var n=e.fragment,i=e.sanitizingOption;u(n.querySelectorAll(a)),i.additionalAllowedCssClasses&&(0,r.arrayPush)(i.additionalAllowedCssClasses,["entityDelimiterAfter","entityDelimiterBefore"]);break;case 8:case 9:e.clonedRoot.querySelectorAll(o).forEach((function(e){(0,r.getDelimiterFromElement)(e)?c(e):f(e)}));break;case 0:!function(e,t){var n,i,a=e.getSelectionRangeEx(),s=t.rawEvent;if(0==a.type)if(a.areAllCollapsed&&((0,r.isCharacterValue)(s)||13===s.which)){var u=null===(n=e.getFocusedPosition())||void 0===n?void 0:n.normalize();if(!u)return;var c=u.element,v=c==u.node?c.childNodes.item(u.offset):c,h=e.getElementAtCursor(o,v);if(!h)return;13===s.which?function(e,t){var n=t.classList.contains("entityDelimiterAfter"),i=n?t.previousSibling:t.nextSibling,a=function(e,t){var n;if(t){for(var o=null===(n=e.getBlockElementAtNode(t))||void 0===n?void 0:n.getStartNode();o&&!(0,r.isBlockElement)(o);)o=e.contains(o.parentElement)?o.parentElement:void 0;return o}}(e,t);e.runAsync((function(){if(a){var e=n?a.nextSibling:a.previousSibling;if(e&&(0,r.safeInstanceOf)(e,"HTMLElement")){var t=e.querySelectorAll(o);f(t.item(n?0:t.length-1))}d(i)&&([i.nextElementSibling,i.previousElementSibling].forEach((function(e){e&&(0,r.matchesSelector)(e,o)&&!(0,r.getDelimiterFromElement)(e)&&f(e,!1)})),(0,r.addDelimiters)(i))}}))}(e,h):3==(null===(i=h.firstChild)||void 0===i?void 0:i.nodeType)&&e.runAsync((function(){return l(h)}))}else if(!a.areAllCollapsed&&!s.shiftKey&&16!=s.which){var g=a.ranges[0];if(!g)return;!function(e,t,n){var i=t.startContainer,a=t.endContainer,s=t.startOffset,u=t.endOffset,d=e.getElementAtCursor(o,i),c=e.getElementAtCursor(o,a),v=p(d),h=p(c);(v||h)&&e.select(null!=v?v:new r.Position(i,s),null!=h?h:new r.Position(a,u)),e.runAsync((function(e){var t=e.getElementAtCursor(o);t&&(l(t),13===n.which&&f(t))}))}(e,g,s)}}(t,e)}},t.normalizeDelimitersInEditor=s;var p=function(e){if(e&&(0,r.getDelimiterFromElement)(e)){var t=e.classList.contains("entityDelimiterAfter");return new r.Position(e,t?-3:-2)}}},4082:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeCellsOutsideSelection=void 0;var r=n(6344);t.removeCellsOutsideSelection=function(e){if(e.selection){if((0,r.isWholeTableSelected)(e,e.selection))return;e.table.style.removeProperty("width"),e.table.style.removeProperty("height");var t=e.selection,n=t.firstCell,o=t.lastCell,i=[],a=n.x,l=n.y,s=o.x,u=o.y;e.cells&&(e.cells.forEach((function(e,t){(e=e.filter((function(e,n){return t>=l&&t<=u&&n>=a&&n<=s}))).length>0&&i.push(e)})),e.cells=i)}}},2842:(e,t,n)=>{"use strict";var r,o;Object.defineProperty(t,"__esModule",{value:!0});var i,a=n(6344),l=/^\s*var\(\s*(\-\-[a-zA-Z0-9\-_]+)\s*(?:,\s*(.*))?\)\s*$/;!function(e){e[e.CssColor=0]="CssColor",e[e.HtmlColor=1]="HtmlColor"}(i||(i={}));var s=[(r={},r[0]="color",r[1]="color",r),(o={},o[0]="background-color",o[1]="bgcolor",o)],u=function(){function e(e,t){this.contentDiv=e,this.getDarkColor=t,this.knownColors={}}return e.prototype.getKnownColorsCopy=function(){return Object.values(this.knownColors)},e.prototype.registerColor=function(e,t,n){var r,o=this.parseColorValue(e);return o&&(e=o.lightModeColor,n=o.darkModeColor||n,r=o.key),t&&e?(r=r||"--darkColor_"+e.replace(/[^\d\w]/g,"_"),this.knownColors[r]||(n=n||this.getDarkColor(e),this.knownColors[r]={lightModeColor:e,darkModeColor:n},this.contentDiv.style.setProperty(r,n)),"var("+r+", "+e+")"):e},e.prototype.reset=function(){var e=this;(0,a.getObjectKeys)(this.knownColors).forEach((function(t){return e.contentDiv.style.removeProperty(t)})),this.knownColors={}},e.prototype.parseColorValue=function(e,t){var n,r,o,i="";if(e){var a=e.startsWith("var(")?l.exec(e):null;a?a[2]?(r=a[1],i=a[2],o=null===(n=this.knownColors[r])||void 0===n?void 0:n.darkModeColor):i="":t?(i=this.findLightColorFromDarkColor(e)||"")&&(o=e):i=e}return{key:r,lightModeColor:i,darkModeColor:o}},e.prototype.findLightColorFromDarkColor=function(e){var t=this,n=(0,a.parseColor)(e);if(n){var r=(0,a.getObjectKeys)(this.knownColors).find((function(e){var r=(0,a.parseColor)(t.knownColors[e].darkModeColor);return r&&r[0]==n[0]&&r[1]==n[1]&&r[2]==n[2]}));if(r)return this.knownColors[r].lightModeColor}return null},e.prototype.transformElementColor=function(e,t,n){var r=this;s.forEach((function(o,i){var l=r.parseColorValue(e.style.getPropertyValue(o[0])||e.getAttribute(o[1]),!!t).lightModeColor;e.style.setProperty(o[0],null),e.removeAttribute(o[1]),l&&"inherit"!=l&&(0,a.setColor)(e,l,0!=i,n,!1,r)}))},e}();t.default=u},3386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(9602),i=function(e){function t(t,n){return void 0===n&&(n={}),e.call(this,t,n,o.createEditorCore)||this}return(0,r.__extends)(t,e),t}(n(5075).EditorBase);t.default=i},5075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EditorBase=void 0;var r=n(7582),o=n(3441),i=n(6344),a=function(){function e(e,t,n){var r=this;if(this.core=null,"DIV"!=(0,i.getTagOfNode)(e))throw new Error("contentDiv must be an HTML DIV element");this.core=n(e,t),this.core.plugins.forEach((function(e){return e.initialize(r)})),this.ensureTypeInContainer(new i.Position(this.core.contentDiv,0).normalize())}return e.prototype.dispose=function(){for(var e=this.getCore(),t=e.plugins.length-1;t>=0;t--)e.plugins[t].dispose();e.darkColorHandler.reset(),this.core=null},e.prototype.isDisposed=function(){return!this.core},e.prototype.insertNode=function(e,t){var n=this.getCore();return!!e&&n.api.insertNode(n,e,null!=t?t:null)},e.prototype.deleteNode=function(e){return!!(e&&this.contains(e)&&e.parentNode)&&(e.parentNode.removeChild(e),!0)},e.prototype.replaceNode=function(e,t,n){var r=this.getCore();return!(!this.contains(e)||!t||(r.api.transformColor(r,n?t:null,!0,(function(){var n;return null===(n=e.parentNode)||void 0===n?void 0:n.replaceChild(t,e)}),0),0))},e.prototype.getBlockElementAtNode=function(e){return(0,i.getBlockElementAtNode)(this.getCore().contentDiv,e)},e.prototype.contains=function(e){return!!e&&(0,i.contains)(this.getCore().contentDiv,e)},e.prototype.queryElements=function(e,t,n){void 0===t&&(t=0);var o=this.getCore(),a=[],l=t instanceof Function?0:t;n=t instanceof Function?t:n;var s=0==l?null:this.getSelectionRangeEx();return s?(s.ranges.forEach((function(t){a.push.apply(a,(0,r.__spreadArray)([],(0,r.__read)((0,i.queryElements)(o.contentDiv,e,n,l,t)),!1))})),a):(0,i.queryElements)(o.contentDiv,e,n,l,void 0)},e.prototype.collapseNodes=function(e,t,n){return(0,i.collapseNodes)(this.getCore().contentDiv,e,t,n)},e.prototype.isEmpty=function(e){return(0,i.isNodeEmpty)(this.getCore().contentDiv,e)},e.prototype.getContent=function(e){void 0===e&&(e=0);var t=this.getCore();return t.api.getContent(t,e)},e.prototype.setContent=function(e,t){void 0===t&&(t=!0);var n=this.getCore();n.api.setContent(n,e,t)},e.prototype.insertContent=function(e,t){var n;if(e){var r=this.getDocument(),o=null===(n=(new DOMParser).parseFromString(this.getCore().trustedHTMLHandler(e),"text/html"))||void 0===n?void 0:n.body,a=(null==o?void 0:o.childNodes)?(0,i.toArray)(o.childNodes):[];t&&t.insertOnNewLine&&a.length>1&&(a=[(0,i.wrap)(a)]);var l=r.createDocumentFragment();a.forEach((function(e){return l.appendChild(e)})),this.insertNode(l,t)}},e.prototype.deleteSelectedContent=function(){var e=this.getSelectionRange();return e&&!e.collapsed?(0,i.deleteSelectedContent)(this.getCore().contentDiv,e):null},e.prototype.paste=function(e,t,n,r){var o=this;void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=this.getCore();if(e){e.snapshotBeforePaste?this.setContent(e.snapshotBeforePaste):e.snapshotBeforePaste=this.getContent(2);var l=this.getSelectionRange(),s=l&&i.Position.getStart(l),u=a.api.createPasteFragment(a,e,s,t,n,r);u&&this.addUndoSnapshot((function(){return o.insertNode(u),e}),"Paste")}},e.prototype.getSelectionRange=function(e){void 0===e&&(e=!0);var t=this.getCore();return t.api.getSelectionRange(t,e)},e.prototype.getSelectionRangeEx=function(){var e=this.getCore();return e.api.getSelectionRangeEx(e)},e.prototype.getSelectionPath=function(){var e=this.getSelectionRange();return e&&(0,i.getSelectionPath)(this.getCore().contentDiv,e)},e.prototype.hasFocus=function(){var e=this.getCore();return e.api.hasFocus(e)},e.prototype.focus=function(){var e=this.getCore();e.api.focus(e)},e.prototype.select=function(e,t,n,r){var o=this.getCore();return o.api.select(o,e,t,n,r)},e.prototype.getFocusedPosition=function(){var e,t=null===(e=this.getDocument().defaultView)||void 0===e?void 0:e.getSelection();if((null==t?void 0:t.focusNode)&&this.contains(t.focusNode))return new i.Position(t.focusNode,t.focusOffset);var n=this.getSelectionRange();return n?i.Position.getStart(n):null},e.prototype.getElementAtCursor=function(e,t,n){var r,o=this;return n=t?void 0:n,null!==(r=(0,i.cacheGetEventData)(null!=n?n:null,"GET_ELEMENT_AT_CURSOR_"+e,(function(){if(!t){var n=o.getFocusedPosition();t=null==n?void 0:n.node}return t&&(0,i.findClosestElementAncestor)(t,o.getCore().contentDiv,e)})))&&void 0!==r?r:null},e.prototype.isPositionAtBeginning=function(e){return(0,i.isPositionAtBeginningOf)(e,this.getCore().contentDiv)},e.prototype.getSelectedRegions=function(e){void 0===e&&(e=0);var t=this.getSelectionRangeEx(),n=[],o=this.getCore().contentDiv;return t.ranges.forEach((function(t){n.push.apply(n,(0,r.__spreadArray)([],(0,r.__read)(t?(0,i.getRegionsFromRange)(o,t,e):[]),!1))})),n.filter((function(e,t,n){return n.indexOf(e)===t}))},e.prototype.addDomEventHandler=function(e,t){var n,r="string"==typeof e?((n={})[e]=t,n):e,o=this.getCore();return o.api.attachDomEvent(o,r)},e.prototype.triggerPluginEvent=function(e,t,n){void 0===n&&(n=!1);var o=this.getCore(),i=(0,r.__assign)({eventType:e},t);return o.api.triggerEvent(o,i,n),i},e.prototype.triggerContentChangedEvent=function(e,t){void 0===e&&(e="SetContent"),this.triggerPluginEvent(7,{source:e,data:t})},e.prototype.undo=function(){this.focus();var e=this.getCore();e.api.restoreUndoSnapshot(e,-1)},e.prototype.redo=function(){this.focus();var e=this.getCore();e.api.restoreUndoSnapshot(e,1)},e.prototype.addUndoSnapshot=function(e,t,n,r){var o=this.getCore();o.api.addUndoSnapshot(o,null!=e?e:null,null!=t?t:null,null!=n&&n,r)},e.prototype.getUndoState=function(){var e=this.getCore().undo,t=e.hasNewContent,n=e.snapshotsService;return{canUndo:t||n.canMove(-1),canRedo:n.canMove(1)}},e.prototype.getDocument=function(){return this.getCore().contentDiv.ownerDocument},e.prototype.getScrollContainer=function(){return this.getCore().domEvent.scrollContainer},e.prototype.getCustomData=function(e,t,n){var r=this.getCore();return(r.lifecycle.customData[e]=r.lifecycle.customData[e]||{value:t?t():void 0,disposer:n}).value},e.prototype.isInIME=function(){return this.getCore().domEvent.isInIME},e.prototype.getDefaultFormat=function(){var e;return null!==(e=this.getCore().lifecycle.defaultFormat)&&void 0!==e?e:{}},e.prototype.getBodyTraverser=function(e){return i.ContentTraverser.createBodyTraverser(this.getCore().contentDiv,e)},e.prototype.getSelectionTraverser=function(e){var t;return(e=null!==(t=null!=e?e:this.getSelectionRange())&&void 0!==t?t:void 0)?i.ContentTraverser.createSelectionTraverser(this.getCore().contentDiv,e):null},e.prototype.getBlockTraverser=function(e){void 0===e&&(e=3);var t=this.getSelectionRange();return t?i.ContentTraverser.createBlockTraverser(this.getCore().contentDiv,t,e):null},e.prototype.getContentSearcherOfCursor=function(e){var t=this;return(0,i.cacheGetEventData)(null!=e?e:null,"ContentSearcher",(function(){var e=t.getSelectionRange();return e&&new i.PositionContentSearcher(t.getCore().contentDiv,i.Position.getStart(e))}))},e.prototype.runAsync=function(e){var t=this,n=this.getCore().contentDiv.ownerDocument.defaultView||window,r=n.requestAnimationFrame((function(){!t.isDisposed()&&e&&e(t)}));return function(){n.cancelAnimationFrame(r)}},e.prototype.setEditorDomAttribute=function(e,t){null===t?this.getCore().contentDiv.removeAttribute(e):this.getCore().contentDiv.setAttribute(e,t)},e.prototype.getEditorDomAttribute=function(e){return this.getCore().contentDiv.getAttribute(e)},e.prototype.getRelativeDistanceToEditor=function(e,t){if(this.contains(e)){var n=this.getCore().contentDiv,r=n.getBoundingClientRect(),o=e.getBoundingClientRect();if(r&&o){var i=o.left-(null==r?void 0:r.left),a=o.top-(null==r?void 0:r.top);return t&&(i+=n.scrollLeft,a+=n.scrollTop),[i,a]}}return null},e.prototype.addContentEditFeature=function(e){var t=this.getCore();null==e||e.keys.forEach((function(n){var r=t.edit.features[n]||[];r.push(e),t.edit.features[n]=r}))},e.prototype.removeContentEditFeature=function(e){var t=this.getCore();null==e||e.keys.forEach((function(n){var r,o=t.edit.features[n],i=null!==(r=null==o?void 0:o.indexOf(e))&&void 0!==r?r:-1;i>=0&&(t.edit.features[n].splice(i,1),t.edit.features[n].length<1&&delete t.edit.features[n])}))},e.prototype.getStyleBasedFormatState=function(e){var t;if(!e){var n=this.getSelectionRange();e=null!==(t=n&&i.Position.getStart(n).normalize().node)&&void 0!==t?t:void 0}var r=this.getCore();return r.api.getStyleBasedFormatState(r,null!=e?e:null)},e.prototype.getPendableFormatState=function(e){void 0===e&&(e=!1);var t=this.getCore();return t.api.getPendableFormatState(t,e)},e.prototype.ensureTypeInContainer=function(e,t){var n=this.getCore();n.api.ensureTypeInContainer(n,e,t)},e.prototype.setDarkModeState=function(e){var t=this.isDarkMode();if(t!=!!e){var n=this.getCore();n.api.transformColor(n,n.contentDiv,!1,null,e?0:1,!0,t),this.triggerContentChangedEvent(e?"SwitchToDarkMode":"SwitchToLightMode")}},e.prototype.isDarkMode=function(){return this.getCore().lifecycle.isDarkMode},e.prototype.transformToDarkColor=function(e,t){void 0===t&&(t=0);var n=this.getCore();n.api.transformColor(n,e,!0,null,t)},e.prototype.getDarkColorHandler=function(){return this.getCore().darkColorHandler},e.prototype.startShadowEdit=function(){var e=this.getCore();e.api.switchShadowEdit(e,!0)},e.prototype.stopShadowEdit=function(){var e=this.getCore();e.api.switchShadowEdit(e,!1)},e.prototype.isInShadowEdit=function(){return!!this.getCore().lifecycle.shadowEditFragment},e.prototype.isFeatureEnabled=function(e){return(0,o.isFeatureEnabled)(this.getCore().lifecycle.experimentalFeatures,e)},e.prototype.getTrustedHTMLHandler=function(){return this.getCore().trustedHTMLHandler},e.prototype.getSizeTransformer=function(){return this.getCore().sizeTransformer},e.prototype.getZoomScale=function(){return this.getCore().zoomScale},e.prototype.setZoomScale=function(e){var t=this.getCore();if(e>0&&e<=10){var n=t.zoomScale;t.zoomScale=e,n!=e&&this.triggerPluginEvent(21,{oldZoomScale:n,newZoomScale:e},!0)}},e.prototype.getVisibleViewport=function(){return this.getCore().getVisibleViewport()},e.prototype.getCore=function(){if(!this.core)throw new Error("Editor is already disposed");return this.core},e}();t.EditorBase=a},9602:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorCore=void 0;var r=n(7582),o=n(8376),i=n(2842),a=n(6344),l=n(6447);t.createEditorCore=function(e,t){var n,s=(0,o.default)(e,t),u=[];(0,a.getObjectKeys)(s).forEach((function(e){"_placeholder"==e?t.plugins&&(0,a.arrayPush)(u,t.plugins):u.push(s[e])}));var d=(0,o.getPluginState)(s),c=(null!==(n=t.zoomScale)&&void 0!==n?n:-1)>0?t.zoomScale:1,f=t.getVisibleViewport||function(){var e=d.domEvent.scrollContainer;return(0,a.getIntersectedRect)(e==p.contentDiv?[e]:[e,p.contentDiv])},p=(0,r.__assign)((0,r.__assign)({contentDiv:e,api:(0,r.__assign)((0,r.__assign)({},l.coreApiMap),t.coreApiOverride||{}),originalApi:l.coreApiMap,plugins:u.filter((function(e){return!!e}))},d),{trustedHTMLHandler:t.trustedHTMLHandler||function(e){return e},zoomScale:c,sizeTransformer:t.sizeTransformer||function(e){return e/c},getVisibleViewport:f,imageSelectionBorderColor:t.imageSelectionBorderColor,darkColorHandler:new i.default(e,d.lifecycle.getDarkColor)});return p}},3441:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFeatureEnabled=void 0,t.isFeatureEnabled=function(e,t){return(e||[]).indexOf(t)>=0}},6630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditorCore=t.isFeatureEnabled=t.EditorBase=t.Editor=void 0;var r=n(3386);Object.defineProperty(t,"Editor",{enumerable:!0,get:function(){return r.default}});var o=n(5075);Object.defineProperty(t,"EditorBase",{enumerable:!0,get:function(){return o.EditorBase}});var i=n(3441);Object.defineProperty(t,"isFeatureEnabled",{enumerable:!0,get:function(){return i.isFeatureEnabled}});var a=n(9602);Object.defineProperty(t,"createEditorCore",{enumerable:!0,get:function(){return a.createEditorCore}})},8715:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(6997),i=function(){function e(e){this.element=e}return e.prototype.collapseToSingleElement=function(){return this.element},e.prototype.getStartNode=function(){return this.element},e.prototype.getEndNode=function(){return this.element},e.prototype.equals=function(e){return this.element==e.getStartNode()},e.prototype.isAfter=function(e){return(0,o.default)(this.element,e.getEndNode())},e.prototype.contains=function(e){return(0,r.default)(this.element,e,!0)},e.prototype.getTextContent=function(){var e;return(null===(e=this.element)||void 0===e?void 0:e.textContent)||""},e}();t.default=i},461:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(8655),i=n(8831),a=n(3408),l=n(5499),s=n(6997),u=n(4251),d=n(9381),c=["TD","TH","LI","BLOCKQUOTE"],f=function(){function e(e,t,n){this.rootNode=e,this.startNode=t,this.endNode=n}return e.getBlockContext=function(e){for(var t=e;t&&!(0,l.default)(t);)t=t.parentNode;return t},e.prototype.collapseToSingleElement=function(){for(var t=e.getBlockContext(this.startNode),n=t?(0,r.default)(t,this.startNode,this.endNode,!0):[],o=e.getBlockContext(this.startNode);n[0]&&n[0]!=o&&n[0].parentNode!=this.rootNode&&c.indexOf((0,a.default)(n[0].parentNode))<0;){var i=(0,d.splitBalancedNodeRange)(n);if(!i)break;n=[i]}return 1==n.length&&(0,l.default)(n[0])?n[0]:(0,u.default)(n)},e.prototype.getStartNode=function(){return this.startNode},e.prototype.getEndNode=function(){return this.endNode},e.prototype.equals=function(e){return this.startNode==e.getStartNode()&&this.endNode==e.getEndNode()},e.prototype.isAfter=function(e){return(0,s.default)(this.getStartNode(),e.getEndNode())},e.prototype.contains=function(e){return(0,o.default)(this.startNode,e,!0)||(0,o.default)(this.endNode,e,!0)||(0,s.default)(e,this.startNode)&&(0,s.default)(this.endNode,e)},e.prototype.getTextContent=function(){var e=(0,i.default)(this.getStartNode(),this.getEndNode());return e?e.toString():""},e}();t.default=f},7070:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(8655),i=n(3408),a=n(5499),l=n(8715),s=n(461);function u(e,t,n){var r=e;if("BR"==(0,i.default)(r)&&n)return r;for(;r;){for(var o=e;e.parentNode&&!(o=n?e.nextSibling:e.previousSibling);)if((e=e.parentNode)==t)return r;for(;o;){if((0,a.default)(o))return r;if("BR"==(0,i.default)(o))return n?o:r;e=o,o=n?e.firstChild:e.lastChild}r=e}return r}t.default=function(e,t){if(!(0,o.default)(e,t))return null;var n=s.default.getBlockContext(t);if(!n)return null;if(n==t)return new l.default(n);var i=u(t,n,!1),d=u(t,n,!0);if(!i||!d)return null;var c=(0,r.default)(e,i,d,!1);if(0===c.length)return null;if(i=c[0],d=c[c.length-1],i.parentNode!=d.parentNode)return new s.default(e,i,d);for(;!i.previousSibling&&!d.nextSibling;){var f=i.parentNode;if(f==n){n!=e&&(i=d=f);break}if(!f||f==e)break;i=d=f}return i==d&&(0,a.default)(i)?new l.default(i):new s.default(e,i,d)}},1306:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070);t.default=function(e,t){var n=e;do{n=n&&(t?n.firstChild:n.lastChild)}while(n&&n.firstChild);return n&&(0,r.default)(e,n)||null}},1545:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3877),o=n(6960),i=n(8375),a=n(246);t.default=function(e,t,n,l){var s,u=e.clipboardData||(null===(s=e.target.ownerDocument)||void 0===s?void 0:s.defaultView).clipboardData;u.items?(e.preventDefault(),(0,r.default)((0,i.default)(u.items),n,!0).then((function(e){var n;n=l,a.Browser.isAndroid&&n&&n.deleteContents(),t(e)}))):(0,o.default)(u,t,n)}},3877:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o=n(3126),i=n(246),a=/^Version:[0-9\.]+\s+StartHTML:\s*([0-9]+)\s+EndHTML:\s*([0-9]+)\s+/i,l="text/*",s="link-preview",u=((r={})["text/html"]=function(e,t){return e.rawHtml=i.Browser.isEdge?function(e){var t=a.exec(e);if(3==(null==t?void 0:t.length)){var n=parseInt(t[1]),r=parseInt(t[2]);n>0&&r>n&&(e=e.substring(n,r))}return e}(t):t},r["text/plain"]=function(e,t){return e.text=t},r[l]=function(e,t,n){return!!n&&(e.customValues[n]=t)},r["text/"+s]=function(e,t){try{e.customValues[s]=t,e.linkPreview=JSON.parse(t)}catch(e){}},r);t.default=function(e,t,n){var r={types:[],text:"",image:null,files:[],rawHtml:null,customValues:{},pasteNativeEvent:n};return Promise.all((e||[]).map((function(e){var n=e.type;if(0!=n.indexOf("image/")||r.image||"file"!=e.kind){if("file"==e.kind)return new Promise((function(t){var o=e.getAsFile();o&&(r.types.push(n),r.files.push(o)),t()}));var i=function(e,t){var n=0==e.indexOf("text/")?e.substring(5):null,r=t&&n?t.indexOf(n):-1;return n&&r>=0?n:void 0}(n,null==t?void 0:t.allowedCustomPasteType),a=u[n]||(i?u[l]:null);return new Promise((function(t){return a?e.getAsString((function(e){r.types.push(n),a(r,e,i),t()})):t()}))}return r.types.push(n),r.image=e.getAsFile(),new Promise((function(e){r.image?(0,o.default)(r.image,(function(t){r.imageDataUri=t,e()})):e()}))}))).then((function(){return r}))}},6960:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3126),o=n(8375);t.default=function(e,t,n){for(var i,a,l,s={types:e.types?(0,o.default)(e.types):[],text:e.getData("text"),image:null,files:[],rawHtml:null,customValues:{},pasteNativeEvent:!0},u=0;u<(e.files?e.files.length:0);u++){var d=e.files.item(u);if(0==(null===(i=null==d?void 0:d.type)||void 0===i?void 0:i.indexOf("image/"))){s.image=d;break}}var c=function(){s.image?(0,r.default)(s.image,(function(e){s.imageDataUri=e,t(s)})):t(s)};if((null==n?void 0:n.getTempDiv)&&(null==n?void 0:n.removeTempDiv)){var f=n.getTempDiv();f.contentEditable="true",f.innerHTML="",f.focus(),null===(l=null===(a=f.ownerDocument)||void 0===a?void 0:a.defaultView)||void 0===l||l.setTimeout((function(){var e;s.rawHtml=f.innerHTML,null===(e=n.removeTempDiv)||void 0===e||e.call(n,f),c()}),0)}else s.rawHtml=void 0,c()}},351:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){return e?1:t?2:n?3:0}},8736:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.ownerDocument.createElement("img");n.style.maxWidth="100%",n.src=e,t.appendChild(n)}},2543:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transformTabCharacters=void 0;var r=n(4251);function o(e,t){void 0===t&&(t=0);for(var n,r=e;-1!=(n=r.indexOf("\t"));){var o=r.slice(0,n),i=r.slice(n+1),a=6-(o.length+t)%6;r=o+Array(a).fill(" ").join("")+i}return r}t.default=function(e,t,n){var i=n.ownerDocument;e.split("\n").forEach((function(e,a,l){(e=e.replace(/^ /g," ").replace(/\r/g,"").replace(/ {2}/g,"  ")).includes("\t")&&(e=o(e,0===a?null==t?void 0:t.offset:0));var s=i.createTextNode(e);2==l.length&&0==a?(n.appendChild(s),n.appendChild(i.createElement("br"))):a>0&&a{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(8375);function i(e,t){(0,o.default)(e.querySelectorAll("style")).forEach(t)}t.default=function(e,t,n){var a,l,s=t.clipboardData,u=t.sanitizingOption,d=s.rawHtml;if(d&&(null==e?void 0:e.body)){var c=null===(a=e.querySelector("html"))||void 0===a?void 0:a.attributes;(c?(0,o.default)(c):[]).reduce((function(e,t){return e[t.name]=t.value,e}),t.htmlAttributes),(0,o.default)(e.querySelectorAll("meta")).reduce((function(e,t){return e[t.name]=t.content,e}),t.htmlAttributes),s.htmlFirstLevelChildTags=[],null==e||e.body.normalize();for(var f=0;f<(null==e?void 0:e.body.childNodes.length);f++){var p=null==e?void 0:e.body.childNodes.item(f);if(p.nodeType!=Node.TEXT_NODE||(null===(l=p.nodeValue)||void 0===l?void 0:l.replace(/(\r\n|\r|\n)/gm,"").trim())){var v=(0,r.default)(p);p.nodeType!=Node.COMMENT_NODE&&s.htmlFirstLevelChildTags.push(v)}}i(e,(function(t){null==e||e.head.appendChild(t),u.additionalGlobalStyleNodes.push(t)}));var h=d.indexOf("\x3c!--StartFragment--\x3e"),g=d.lastIndexOf("\x3c!--EndFragment--\x3e");h>=0&&g>=h+20&&(t.htmlBefore=d.substr(0,h),t.htmlAfter=d.substr(g+18),s.html=d.substring(h+20,g),e.body.innerHTML=n(s.html),i(e.body,(function(e){var t;return null===(t=e.parentNode)||void 0===t?void 0:t.removeChild(e)})))}}},5216:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(623),o=n(8488);t.default=function(e,t){var n=e.fragment,i=new o.default(e.sanitizingOption);i.convertGlobalCssToInlineCss(n),i.sanitize(n,t?(0,r.default)(t.element):void 0)}},7676:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(7070),i=n(1306),a=n(8153),l=n(7229),s=function(){function e(e,t){this.rootNode=e,this.startNode=(0,r.default)(e,t)?t:null}return e.prototype.getStartBlockElement=function(){return this.startNode?(0,o.default)(this.rootNode,this.startNode):(0,i.default)(this.rootNode,!0)},e.prototype.getStartInlineElement=function(){return this.startNode?(0,a.default)(this.rootNode,this.startNode):(0,l.getFirstInlineElement)(this.rootNode)},e.prototype.isBlockInScope=function(e){return(0,r.default)(this.rootNode,e.getStartNode())},e.prototype.trimInlineElement=function(e){return e},e}();t.default=s},6754:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7676),o=n(8251),i=n(7070),a=n(8153),l=n(5269),s=n(9984),u=n(3526),d=n(2571),c=n(2513),f=function(){function e(e,t){this.scoper=e,this.skipTags=t,this.currentInline=null,this.currentBlock=null}return e.createBodyTraverser=function(t,n,o){return new e(new r.default(t,n))},e.createSelectionTraverser=function(t,n,r){return new e(new u.default(t,n),r)},e.createBlockTraverser=function(t,n,r,o){return void 0===r&&(r=3),new e(new s.default(t,n,r))},Object.defineProperty(e.prototype,"currentBlockElement",{get:function(){return this.currentBlock||(this.currentBlock=this.scoper.getStartBlockElement()),this.currentBlock},enumerable:!1,configurable:!0}),e.prototype.getNextBlockElement=function(){return this.getPreviousNextBlockElement(!0)},e.prototype.getPreviousBlockElement=function(){return this.getPreviousNextBlockElement(!1)},e.prototype.getPreviousNextBlockElement=function(e){var t=this.currentBlockElement;if(!t)return null;var n=(0,c.getLeafSibling)(this.scoper.rootNode,e?t.getEndNode():t.getStartNode(),e,this.skipTags),r=n?(0,i.default)(this.scoper.rootNode,n):null;return r&&this.scoper.isBlockInScope(r)&&(e&&r.isAfter(t)||!e&&t.isAfter(r))?(this.currentBlock=r,this.currentBlock):null},Object.defineProperty(e.prototype,"currentInlineElement",{get:function(){return this.currentInline||(this.currentInline=this.scoper.getStartInlineElement()),this.currentInline instanceof o.default?null:this.currentInline},enumerable:!1,configurable:!0}),e.prototype.getNextInlineElement=function(){return this.getPreviousNextInlineElement(!0)},e.prototype.getPreviousInlineElement=function(){return this.getPreviousNextInlineElement(!1)},e.prototype.getPreviousNextInlineElement=function(e){var t,n=this.currentInlineElement||this.currentInline;return n?(n instanceof o.default?(t=(0,d.getInlineElementBeforeAfter)(this.scoper.rootNode,n.getStartPosition(),e))&&!n.getParentBlock().contains(t.getContainerNode())&&(t=null):(t=function(e,t,n){if(!t)return null;if(t instanceof l.default){var r=n?t.nextInlineElement:t.previousInlineElement;if(r)return r}var o=t.getContainerNode();return o=(0,c.getLeafSibling)(e,o,n),(0,a.default)(e,o)}(this.scoper.rootNode,n,e),t=t&&n&&(e&&t.isAfter(n)||!e&&n.isAfter(t))?t:null),t&&(t=this.scoper.trimInlineElement(t))?(this.currentInline=t,this.currentInline):null):null},e}();t.default=f},6091:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(8831),i=/[\s\u00A0\u200B\u3000]+([^\s\u00A0\u200B\u3000]*)$/i,a=function(){function e(e,t){this.rootNode=e,this.position=t,this.text="",this.word="",this.inlineBefore=null,this.inlineAfter=null,this.traverser=null,this.traversingComplete=!1,this.inlineElements=[],this.nearestNonTextInlineElement=null}return e.prototype.getWordBefore=function(){var e=this;return this.word||this.traverse((function(){return e.word})),this.word||""},e.prototype.getInlineElementBefore=function(){return this.inlineBefore||this.traverse(null),this.inlineBefore},e.prototype.getInlineElementAfter=function(){return this.inlineAfter||(this.inlineAfter=r.default.createBlockTraverser(this.rootNode,this.position).currentInlineElement),this.inlineAfter},e.prototype.getSubStringBefore=function(e){var t=this;return this.text.length=e})),this.text.substr(Math.max(0,this.text.length-e))},e.prototype.getRangeFromText=function(e,t){if(!e)return null;var n=null,r=null,i=e.length-1;return this.forEachTextInlineElement((function(o){for(var a=o.getTextContent()||"",l=a.length-1;l>=0&&i>=0;l--)if(e.charCodeAt(i)==a.charCodeAt(l))i--,r||(r=o.getStartPosition().move(l+1));else if(t||r)return!0;return-1==i&&(n=o.getStartPosition().move(l+1),!0)})),n&&r&&(0,o.default)(n,r)},e.prototype.forEachTextInlineElement=function(e){this.inlineElements.some(e)||this.traverse(e)},e.prototype.getNearestNonTextInlineElement=function(){var e=this;return this.nearestNonTextInlineElement||this.traverse((function(){return e.nearestNonTextInlineElement})),this.nearestNonTextInlineElement},e.prototype.traverse=function(e){if(this.traverser=this.traverser||r.default.createBlockTraverser(this.rootNode,this.position),this.traverser&&!this.traversingComplete)for(var t=this.traverser.getPreviousInlineElement();!this.traversingComplete;){if(this.inlineBefore=this.inlineBefore||t,!t||!t.isTextualInlineElement()){this.nearestNonTextInlineElement=t,this.traversingComplete=!0,this.word||(this.word=this.text);break}var n=t.getTextContent();if(!this.word){var o=i.exec(n);o&&2==o.length&&(this.word=o[1]+this.text)}if(this.text=n+this.text,this.inlineElements.push(t),e&&e(t))break;t=this.traverser.getPreviousInlineElement()}},e}();t.default=a},9984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8251),o=n(7070),i=n(8153),a=n(8715),l=n(4630),s=n(5924),u=n(2571),d=n(7229),c=function(){function e(e,t,n){this.rootNode=e,this.startFrom=n,(0,s.default)(t,"Range")&&(t=l.default.getStart(t)),this.position=t.normalize(),this.block=(0,o.default)(this.rootNode,this.position.node)}return e.prototype.getStartBlockElement=function(){return this.block},e.prototype.getStartInlineElement=function(){if(this.block)switch(this.startFrom){case 0:case 1:case 2:return function(e,t){if(e instanceof a.default){var n=e.getStartNode();return t?(0,d.getFirstInlineElement)(n):(0,d.getLastInlineElement)(n)}return(0,i.default)(e,t?e.getStartNode():e.getEndNode())}(this.block,0==this.startFrom);case 3:var e=(0,u.getInlineElementAfter)(this.rootNode,this.position);return e&&this.block.contains(e.getContainerNode())?e:new r.default(this.position,this.block)}return null},e.prototype.isBlockInScope=function(e){return!(!this.block||!e)&&this.block.equals(e)},e.prototype.trimInlineElement=function(e){return this.block&&e&&this.block.contains(e.getContainerNode())?e:null},e}();t.default=c},3526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070),o=n(5269),i=n(4630),a=n(2571),l=function(){function e(e,t){this.rootNode=e,this.startBlock=null,this.startInline=null,this.start=i.default.getStart(t).normalize(),this.end=i.default.getEnd(t).normalize()}return e.prototype.getStartBlockElement=function(){return this.startBlock||(this.startBlock=(0,r.default)(this.rootNode,this.start.node)),this.startBlock},e.prototype.getStartInlineElement=function(){return this.startInline||(this.startInline=this.trimInlineElement((0,a.getInlineElementAfter)(this.rootNode,this.start))),this.startInline},e.prototype.isBlockInScope=function(e){if(!e)return!1;var t=!1,n=this.getStartBlockElement();if(this.start.equalTo(this.end))t=!!n&&n.equals(e);else{var o=(0,r.default)(this.rootNode,this.end.node);t=!!n&&!!o&&(e.equals(n)||e.equals(o)||e.isAfter(n)&&o.isAfter(e))}return t},e.prototype.trimInlineElement=function(e){if(!e||this.start.equalTo(this.end))return null;var t=e.getStartPosition(),n=e.getEndPosition();if(t.isAfter(this.end)||this.start.isAfter(n))return null;var r=!1,i=!1;return this.start.isAfter(t)&&(t=this.start,r=!0),n.isAfter(this.end)&&(n=this.end,i=!0),t.isAfter(n)||t.equalTo(n)?null:r||i?new o.default(e,r?t:void 0,i?n:void 0):e},e}();t.default=l},8937:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addDelimiterBefore=t.addDelimiterAfter=void 0;var r=n(7582),o=n(6935),i=n(3765),a="​";function l(e){return d(e,"entityDelimiterAfter")}function s(e){return d(e,"entityDelimiterBefore")}function u(e,t){return e&&(0,i.default)(e)&&e.classList.contains(t)?e:void 0}function d(e,t){var n=(0,o.default)({tag:"span",className:t,children:[a]},e.ownerDocument);if(n){var r="entityDelimiterAfter"==t?"afterend":"beforebegin";e.insertAdjacentElement(r,n)}return n}t.default=function(e){var t,n,o,i,a=(0,r.__read)((n=[],o=(t=e).nextElementSibling,i=t.previousElementSibling,n.push(u(o,"entityDelimiterAfter"),u(i,"entityDelimiterBefore")),n),2),d=a[0],c=a[1];return d||(d=l(e)),c||(c=s(e)),[d,c]},t.addDelimiterAfter=l,t.addDelimiterBefore=s},3765:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e){return e&&(0,r.default)(e,"HTMLSpanElement")&&(e.classList.contains("entityDelimiterAfter")||e.classList.contains("entityDelimiterBefore"))&&"​"===e.textContent?e:null}},2738:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4984),o=n(8655),i=n(6754),a=n(8831),l=n(3598),s=n(7070),u=n(3408),d=n(1657),c=n(1431),f=n(8235),p=n(5672),v=n(1473),h=n(4731),g=n(4630),m=n(6091),y=n(8471),b=n(7409),E=n(8375),C=n(82),S=n(4251),T=n(9381),P="[contenteditable=false]",_=[function(e,t,n,r){var i,l,u=(0,s.default)(e,n.node);if(u){var c=(0,y.default)(e,"a[href]",null,1,(0,a.default)(n)).filter((function(e){return u.contains(e)}))[0];if(c&&(0,d.default)(c)&&(n=new g.default(c,-2),w(c),c=null),c&&(null===(i=t)||void 0===i?void 0:i.querySelector)&&(null===(l=t)||void 0===l?void 0:l.querySelector("a[href]"))){var f=n.normalize(),p=f.node.parentNode,v=3==f.node.nodeType?(0,b.default)(f.node,f.offset,!1):f.isAtEnd?f.node.nextSibling:f.node,h=e.ownerDocument.createTextNode("");for(p.insertBefore(h,v);h&&(0,o.default)(c,h);)h=(0,T.splitBalancedNodeRange)(h);h&&(n=new g.default(h,-2),w(h))}}return n},function(e,t,n,r){var o=t,i=!1;if(11==o.nodeType){i=!0;var a=(0,E.default)(o.childNodes).filter((function(e){return"BR"!=(0,u.default)(e)}));o=1==a.length?a[0]:null}var s=(0,u.default)(o),d=s&&o&&"BR"==(0,u.default)(o.nextSibling),f=(0,l.default)(n.node,e,"LI"),p=f&&(0,l.default)(f,e,"OL,UL"),m=(0,l.default)(n.node,e,"TD,TH");if("LI"==s&&(s=p?(0,u.default)(p):"UL",o=(0,S.default)(o,s)),("OL"==s||"UL"==s)&&o&&"LI"==(0,u.default)(o.firstChild)){var y=!o.firstChild.nextSibling&&!d;d&&o.parentNode&&w(o.nextSibling),y?((0,C.default)(o.firstChild),(0,C.default)(o)):(0,u.default)(p)==s&&((0,C.default)(o),n=new g.default(f,(0,c.default)(n,f)?-2:-3))}return i&&"TABLE"==s&&m&&((0,h.default)(m,o,n,r),n=new g.default(o,0),(0,v.default)(t)),n},function(e,t,n,o){if("P"==(0,u.default)(n.node)){var i=n.normalize(),a=(0,r.default)(n.node,"div");i.node!=a&&(n=i)}return n},function(e,t,n,r){return(0,f.default)(n.node)&&(n=new g.default(n.node,n.isAtEnd?-3:-2)),n},function(e,t,n,r){if(r&&r.collapsed){var o=new m.default(e,g.default.getStart(r)),i=o.getInlineElementBefore(),a=o.getInlineElementAfter();i instanceof p.default?n=new g.default(i.getContainerNode(),-3):a instanceof p.default&&(n=new g.default(a.getContainerNode(),-2))}return n},function e(t,n,r,o){var i;if(!(null===(i=r.element)||void 0===i?void 0:i.isContentEditable)){for(var a=void 0,s=(0,l.default)(r.node,t,P);s;)s=(null==(a=s)?void 0:a.parentElement)?(0,l.default)(a.parentElement,t,P):null;if(a)return e(t,n,r=new g.default(a,-3),o)}return r},function(e,t,n,r){if(1==t.childNodes.length&&"TABLE"==(0,u.default)(t.childNodes[0])||"TABLE"==(0,u.default)(t)){var o=n.element,s=new g.default(o,-2),d=(0,a.default)(s,n),c=i.default.createSelectionTraverser(e,d),f=c&&c.currentBlockElement;if(f){for(var p=f;!p;)(p=c.getNextBlockElement())&&(f=p);var v=null==f?void 0:f.getEndNode();if(v&&(0,l.default)(v,e,"TABLE")){var h=(0,a.default)(n);h.collapse(!1);var m=e.ownerDocument.createElement("br");h.insertNode(m),h=(0,a.default)(m),n=g.default.getEnd(h)}}}return n}];function w(e){var t;null===(t=null==e?void 0:e.parentNode)||void 0===t||t.removeChild(e)}t.default=function(e,t,n,r){return _.forEach((function(o){n=o(e,t,n,r)})),n}},3030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(8605),i=n(6688),a=n(8394),l=n(4539),s=n(2799),u=n(4630),d=n(8471),c=n(5924),f=n(7409);function p(e,t,n){var r,o;if((0,c.default)(e,"Text")){var i=(0,f.default)(e,t,n);return n?[i,e]:[e,i]}var a=e.childNodes[t-1],l=e.childNodes[t];if(a||l||(n?a=(l=e).previousSibling:l=(a=e).nextSibling),(a||l)&&(!a||!l)){var s=e.ownerDocument.createTextNode("");null===(o=null===(r=a||l)||void 0===r?void 0:r.parentNode)||void 0===o||o.insertBefore(s,l),a?l=s:a=s}return[a,l]}t.default=function(e,t){var n=null,f=(0,d.default)(e,"table,tr",null,2,t),v=(0,a.default)(e,t,0).map((function(e){var t=(0,l.default)(e);if(!t)return null;var a=t.startContainer,s=t.endContainer,u=t.startOffset,d=t.endOffset,v=t.commonAncestorContainer;if((0,c.default)(v,"HTMLElement")&&!v.isContentEditable)return null;var h=(0,r.__read)(p(s,d,!1),2),g=h[0],m=h[1],y=(0,r.__read)(p(a,u,!0),2),b=y[0],E=y[1];n=n||b;var C=(0,i.default)(e,[E,g]);return(0,o.default)(f,C),{region:e,beforeStart:b,afterEnd:m}})).filter((function(e){return!!e}));return f.forEach((function(e){var t;return(null===(t=e.parentElement)||void 0===t?void 0:t.isContentEditable)&&e.parentElement.removeChild(e)})),v.forEach((function(e){e&&(0,s.default)(e.region,e.beforeStart,e.afterEnd)})),n&&new u.default(n,-1)}},8606:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754);t.default=function(e){for(var t=r.default.createBodyTraverser(e),n=t&&t.currentBlockElement,o=[];n;)o.push(n.getTextContent()),n=t.getNextBlockElement();return o.join("\n")}},8839:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="contenteditable";t.default=function(e,t,r,o){e&&(e.className="_Entity _EType_"+t+" "+(o?"_EId_"+o+" ":"")+"_EReadonly_"+(r?"1":"0"),r?e.contentEditable="false":e.getAttribute(n)&&e.removeAttribute(n))}},3032:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreContentWithEntityPlaceholder=t.moveContentWithEntityPlaceholders=t.createEntityPlaceholder=void 0;var r=n(3726),o=n(4965),i=n(5924);function a(e,t){for(var n;e&&(!t||e!=t);){var r=e;e=e.nextSibling,null===(n=r.parentNode)||void 0===n||n.removeChild(r)}return e}function l(e,t){var n,o=(0,i.default)(t,"HTMLElement")&&t.classList.contains("_Entity")&&(null===(n=(0,r.default)(t))||void 0===n?void 0:n.id),a=o?null==e?void 0:e[o]:null;return a?(0,i.default)(a,"HTMLElement")?a:(null==a?void 0:a.canPersist)?a.element:null:null}function s(e,t){return t[e.id]=e.wrapper,e.wrapper.cloneNode(!0)}t.createEntityPlaceholder=function(e){var t=e.wrapper.ownerDocument.createElement("ENTITY-PLACEHOLDER");return t.id=e.id,t},t.moveContentWithEntityPlaceholders=function(e,t){for(var n=(0,o.default)(),a=e.ownerDocument.createDocumentFragment(),l=null,u=function(e){var o,u=e;l=e.nextSibling,(0,i.default)(e,"HTMLElement")&&((o=(0,r.default)(e))?u=s(o,t):e.querySelectorAll(n).forEach((function(e){var n;if(o=(0,r.default)(e)){var i=s(o,t);null===(n=e.parentNode)||void 0===n||n.replaceChild(i,e)}}))),a.appendChild(u)},d=e.firstChild;d;d=l)u(d);return a.normalize(),a},t.restoreContentWithEntityPlaceholder=function(e,t,n,r){for(var s=t.firstChild,u=(0,o.default)(),d=e.firstChild;d;){var c=d.nextSibling,f=l(n,d);if(f)(s=a(s,f))?s=s.nextSibling:t.appendChild(f);else{var p=r?d.cloneNode(!0):d;t.insertBefore(p,s),(0,i.default)(p,"HTMLElement")&&p.querySelectorAll(u).forEach((function(e){var t,r=l(n,e);r&&(null===(t=e.parentNode)||void 0===t||t.replaceChild(r,e))}))}d=c}a(s)}},3726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,n=!1,r="",o="",i=!1;return null===(t=null==e?void 0:e.className)||void 0===t||t.split(" ").forEach((function(e){"_Entity"==e?n=!0:0==e.indexOf("_EType_")?r=e.substr(7):0==e.indexOf("_EId_")?o=e.substr(5):0==e.indexOf("_EReadonly_")&&(i="1"==e.substr(11))})),n?{wrapper:e,id:o,type:r,isReadonly:i}:null}},4965:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return"._Entity"+(e?"._EType_"+e:"")+(t?"._EId_"+t:"")}},996:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r=e&&e.eventDataCache&&e.eventDataCache.hasOwnProperty(t)?e.eventDataCache[t]:n();return e&&(e.eventDataCache=e.eventDataCache||{},e.eventDataCache[t]=r),r}},2924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){e&&e.eventDataCache&&(t&&e.eventDataCache.hasOwnProperty(t)?delete e.eventDataCache[t]:t||(e.eventDataCache={}))}},7254:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1045);t.default=function(e){return!(0,r.default)(e)&&!!e.key&&1==e.key.length}},5188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(246).Browser.isMac?function(e){return e.metaKey}:function(e){return e.ctrlKey};t.default=function(e){return r(e)}},1045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.ctrlKey||"Control"===e.key,n=e.altKey||"Alt"===e.key,r=e.metaKey||"Meta"===e.key;return t||n||r}},8488:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(623),a=n(4709),l=n(4869),s=n(359),u=n(3408),d=n(5924),c=n(6092),f=n(8375),p=n(9420),v=n(5097),h=n(2374),g=function(){function e(e){e=e||{},this.elementCallbacks=(0,p.cloneObject)(e.elementCallbacks),this.styleCallbacks=(0,h.getStyleCallbacks)(e.cssStyleCallbacks),this.attributeCallbacks=(0,p.cloneObject)(e.attributeCallbacks),this.tagReplacements=(0,h.getTagReplacement)(e.additionalTagReplacements),this.allowedAttributes=(0,h.getAllowedAttributes)(e.additionalAllowedAttributes),this.allowedCssClassesRegex=(0,h.getAllowedCssClassesRegex)(e.additionalAllowedCssClasses),this.defaultStyleValues=(0,h.getDefaultStyleValues)(e.additionalDefaultStyleValues),this.additionalPredefinedCssForElement=e.additionalPredefinedCssForElement||null,this.additionalGlobalStyleNodes=e.additionalGlobalStyleNodes||[],this.preserveHtmlComments=e.preserveHtmlComments||!1,this.unknownTagReplacement=e.unknownTagReplacement||null}return e.convertInlineCss=function(t,n){return new e({additionalGlobalStyleNodes:n}).exec(t,!0)},e.sanitizeHtml=function(t,n){var r=new e(n=n||{}),o=(0,d.default)(n.currentElementOrStyle,"HTMLElement")?(0,i.default)(n.currentElementOrStyle):n.currentElementOrStyle;return r.exec(t,n.convertCssOnly,o)},e.prototype.exec=function(e,t,n){var r=(new DOMParser).parseFromString(e||"","text/html");return r&&r.body&&r.body.firstChild&&(this.convertGlobalCssToInlineCss(r),t||this.sanitize(r.body,n)),r&&r.body&&r.body.innerHTML||""},e.prototype.sanitize=function(e,t){if(!e)return"";t=(0,p.cloneObject)(t,(0,i.default)(null)),this.processNode(e,t,{})},e.prototype.convertGlobalCssToInlineCss=function(e){var t,n,o=(0,f.default)(e.querySelectorAll("style")),i=this.additionalGlobalStyleNodes.reverse().map((function(e){return e.sheet})).concat(o.map((function(e){return e.sheet})).reverse()).filter((function(e){return e}));try{for(var a=(0,r.__values)(i),l=a.next();!l.done;l=a.next())for(var s=l.value,u=function(t){var n,o,i=s.cssRules[t],a=i&&i.style?i.style.cssText:null;if(i.type!=CSSRule.STYLE_RULE||!a||!i.selectorText)return"continue";try{for(var l=(n=void 0,(0,r.__values)(i.selectorText.split(","))),u=l.next();!u.done;u=l.next()){var d=u.value;!d||!d.trim()||d.indexOf(":")>=0||(0,f.default)(e.querySelectorAll(d)).forEach((function(e){return e.setAttribute("style",a+(e.getAttribute("style")||""))}))}}catch(e){n={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(n)throw n.error}}},d=s.cssRules.length-1;d>=0;d--)u(d)}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}o.forEach((function(e){e.parentNode&&e.parentNode.removeChild(e)}))},e.prototype.processNode=function(e,t,n){var r,i=e.nodeType,a=1==i,l=3==i,s=11==i,d=8==i,c=!1;if(a){var f=(0,u.default)(e),v=this.elementCallbacks[f],h=this.tagReplacements[f.toLowerCase()];void 0===h&&(h=this.unknownTagReplacement),v?c=v(e,n):f.indexOf(":")>0||f==h||"*"==h?c=!0:h&&/^[a-zA-Z][\w\-]*$/.test(h)&&(e=(0,o.default)(e,h),c=!0)}else if(l){var g=t["white-space"];c="pre"==g||"pre-line"==g||"pre-wrap"==g||!/^[\r\n]*$/g.test(e.nodeValue||"")}else c=!!s||!!d&&this.preserveHtmlComments;if(c)if(!l||"pre"!=t["white-space"]&&"pre-wrap"!=t["white-space"]){if(a||s){var m=(0,p.cloneObject)(t),y=e;a&&(this.processAttributes(y,n),this.preprocessCss(y,m),this.processCss(y,m,n));for(var b=y.firstChild,E=void 0;b;b=E)E=b.nextSibling,this.processNode(b,m,n)}}else e.nodeValue=(e.nodeValue||"").replace(/^ /gm," ").replace(/ {2}/g,"  ");else null===(r=e.parentNode)||void 0===r||r.removeChild(e)},e.prototype.preprocessCss=function(e,t){var n=(0,l.default)(e,this.additionalPredefinedCssForElement);n&&(0,a.default)(n).forEach((function(e){t[e]=n[e]}))},e.prototype.processCss=function(e,t,n){var r=this,o=(0,s.default)(e);(0,a.default)(o).forEach((function(i){var a=o[i],l=r.styleCallbacks[i],s=null!=t[i],u=!0;u&&l&&(u=l(a,e,t,n)),u&&(0,v.isCssVariable)(a)&&(u=!!(a=(0,v.processCssVariable)(a))),(u=u&&"inherit"!=a&&a.indexOf("expression")<0&&"-"!=i.substr(0,1)&&r.defaultStyleValues[i]!=a&&(s&&a!=t[i]||!s&&"initial"!=a&&"normal"!=a))&&s&&(t[i]=a),u?o[i]=a:delete o[i]})),(0,c.default)(e,o)},e.prototype.processAttributes=function(e,t){for(var n=e.attributes.length-1;n>=0;n--){var r=e.attributes[n],o=r.name.toLowerCase().trim(),i=r.value,a=this.attributeCallbacks[o],l=a?a(i,e,t):this.allowedAttributes.indexOf(o)>=0||0==o.indexOf("data-")?i:null;"class"==o&&this.allowedCssClassesRegex&&(l=this.processCssClass(i,l)),null==l||l.match(/s\n*c\n*r\n*i\n*p\n*t\n*:/i)?e.removeAttribute(o):r.value=l}},e.prototype.processCssClass=function(e,t){var n=this,r=e?e.split(" "):[],o=t?t.split(" "):[];return r.forEach((function(e){var t;(null===(t=n.allowedCssClassesRegex)||void 0===t?void 0:t.test(e))&&o.indexOf(e)<0&&o.push(e)})),(null==o?void 0:o.length)>0?o.join(" "):null},e}();t.default=g},585:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);t.default=function(e,t,n){if(e[t]){var o=e[t];e[t]=function(){for(var e=[],t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.cloneObject=void 0;var r=n(7582),o=n(4709),i=Object.assign?function(e,t){return Object.assign(t||{},e)}:function(e,t){var n,i,a=t||{};if(e)try{for(var l=(0,r.__values)((0,o.default)(e)),s=l.next();!s.done;s=l.next()){var u=s.value;a[u]=e[u]}}catch(e){n={error:e}}finally{try{s&&!s.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}return a};t.cloneObject=function(e,t){return i(e,t)}},4834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return{elementCallbacks:{},attributeCallbacks:{},cssStyleCallbacks:{},additionalTagReplacements:{},additionalAllowedAttributes:[],additionalAllowedCssClasses:[],additionalDefaultStyleValues:{},additionalGlobalStyleNodes:[],additionalPredefinedCssForElement:{},preserveHtmlComments:!1,unknownTagReplacement:null}}},2374:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getStyleCallbacks=t.getDefaultStyleValues=t.getAllowedCssClassesRegex=t.getAllowedAttributes=t.getTagReplacement=void 0;var r=n(7582),o=n(4709),i=n(9420),a={a:"*",abbr:"*",address:"*",area:"*",article:"*",aside:"*",b:"*",bdi:"*",bdo:"*",blockquote:"*",body:"*",br:"*",button:"*",canvas:"*",caption:"*",center:"*",cite:"*",code:"*",col:"*",colgroup:"*",data:"*",datalist:"*",dd:"*",del:"*",details:"*",dfn:"*",dialog:"*",dir:"*",div:"*",dl:"*",dt:"*",em:"*",fieldset:"*",figcaption:"*",figure:"*",font:"*",footer:"*",h1:"*",h2:"*",h3:"*",h4:"*",h5:"*",h6:"*",head:"*",header:"*",hgroup:"*",hr:"*",html:"*",i:"*",img:"*",input:"*",ins:"*",kbd:"*",label:"*",legend:"*",li:"*",main:"*",map:"*",mark:"*",menu:"*",menuitem:"*",meter:"*",nav:"*",ol:"*",optgroup:"*",option:"*",output:"*",p:"*",picture:"*",pre:"*",progress:"*",q:"*",rp:"*",rt:"*",ruby:"*",s:"*",samp:"*",section:"*",select:"*",small:"*",span:"*",strike:"*",strong:"*",sub:"*",summary:"*",sup:"*",table:"*",tbody:"*",td:"*",textarea:"*",tfoot:"*",th:"*",thead:"*",time:"*",tr:"*",tt:"*",u:"*",ul:"*",var:"*",wbr:"*",xmp:"*",form:"SPAN",applet:null,audio:null,base:null,basefont:null,embed:null,frame:null,frameset:null,iframe:null,link:null,meta:null,noscript:null,object:null,param:null,script:null,slot:null,source:null,style:null,template:null,title:null,track:null,video:null},l="accept,align,alt,checked,cite,color,cols,colspan,contextmenu,coords,datetime,default,dir,dirname,disabled,download,face,headers,height,hidden,high,href,hreflang,ismap,kind,label,lang,list,low,max,maxlength,media,min,multiple,open,optimum,pattern,placeholder,readonly,rel,required,reversed,rows,rowspan,scope,selected,shape,size,sizes,span,spellcheck,src,srclang,srcset,start,step,style,tabindex,target,title,translate,type,usemap,valign,value,width,wrap,bgColor".split(","),s={"background-color":"transparent","border-bottom-color":"rgb(0, 0, 0)","border-bottom-style":"none","border-bottom-width":"0px","border-image-outset":"0","border-image-repeat":"stretch","border-image-slice":"100%","border-image-source":"none","border-image-width":"1","border-left-color":"rgb(0, 0, 0)","border-left-style":"none","border-left-width":"0px","border-right-color":"rgb(0, 0, 0)","border-right-style":"none","border-right-width":"0px","border-top-color":"rgb(0, 0, 0)","border-top-style":"none","border-top-width":"0px","outline-color":"transparent","outline-style":"none","outline-width":"0px",overflow:"visible","-webkit-text-stroke-width":"0px","word-wrap":"break-word","margin-left":"0px","margin-right":"0px",padding:"0px","padding-top":"0px","padding-left":"0px","padding-right":"0px","padding-bottom":"0px",border:"0px","border-top":"0px","border-left":"0px","border-right":"0px","border-bottom":"0px","vertical-align":"baseline",float:"none"},u=[];function d(){return null}function c(e,t){var n=t.tagName;return!("LI"==n||"DIV"==n)}t.getTagReplacement=function(e){var t=(0,r.__assign)({},a),n=e||{};return(0,o.default)(n).forEach((function(e){e&&(t[e.toLowerCase()]=n[e])})),t},t.getAllowedAttributes=function(e){return(t=l.concat(e||[]),t.filter((function(e,t,n){return n.indexOf(e)==t}))).map((function(e){return e.toLocaleLowerCase()}));var t},t.getAllowedCssClassesRegex=function(e){var t=u.concat(e||[]);return t.length>0?new RegExp(t.join("|")):null},t.getDefaultStyleValues=function(e){var t=(0,i.cloneObject)(s);return e&&Object.keys(e).forEach((function(n){var r=e[n];null!=r?t[n]=r:delete t[n]})),t},t.getStyleCallbacks=function(e){var t=(0,i.cloneObject)(e);return t.position=t.position||d,t.width=t.width||c,t}},623:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="border-spacing,caption-side,color,cursor,direction,empty-cells,font-family,font-size,font-style,font-variant,font-weight,font,letter-spacing,line-height,list-style-image,list-style-position,list-style-type,list-style,orphans,quotes,text-align,text-indent,text-transform,visibility,white-space,widows,word-spacing".split(",");t.default=function(e){var t=e&&e.ownerDocument&&e.ownerDocument.defaultView,r=t&&e&&t.getComputedStyle(e),o={};return n.forEach((function(e){return o[e]=r&&r.getPropertyValue(e)||""})),o}},4869:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o={B:{"font-weight":"bold"},EM:{"font-style":"italic"},I:{"font-style":"italic"},U:{"text-decoration":"underline"},P:{"margin-top":"1em","margin-bottom":"1em"},PRE:{"white-space":"pre"},S:{"text-decoration":"line-through"},STRIKE:{"text-decoration":"line-through"},SUB:{"vertical-align":"sub","font-size":"smaller"},SUP:{"vertical-align":"super","font-size":"smaller"}};t.default=function(e,t){var n=(0,r.default)(e);return o[n]||(t||{})[n]}},5097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isCssVariable=t.processCssVariable=void 0;var n=/^\s*var\(\s*[a-zA-Z0-9-_]+\s*(,\s*(.*))?\)\s*$/;t.processCssVariable=function(e){var t=n.exec(e);return(null==t?void 0:t[2])||""},t.isCssVariable=function(e){return 0==e.indexOf("var(")}},6344:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeRect=t.splitTextNode=t.getLastLeafNode=t.getFirstLeafNode=t.getPreviousLeafSibling=t.getNextLeafSibling=t.wrap=t.unwrap=t.splitBalancedNodeRange=t.splitParentNode=t.queryElements=t.matchLink=t.isVoidHtmlElement=t.isNodeEmpty=t.isBlockElement=t.getTagOfNode=t.PendableFormatCommandMap=t.getPendableFormatState=t.getComputedStyle=t.getComputedStyles=t.fromHtml=t.findClosestElementAncestor=t.contains=t.collapseNodes=t.changeElementTag=t.applyFormat=t.getBrowserInfo=t.Browser=t.getPasteType=t.sanitizePasteContent=t.retrieveMetadataFromClipboard=t.handleTextPaste=t.handleImagePaste=t.extractClipboardItemsForIE=t.extractClipboardItems=t.extractClipboardEvent=t.applyTextStyle=t.PartialInlineElement=t.NodeInlineElement=t.LinkInlineElement=t.ImageInlineElement=t.getInlineElementAtNode=t.getDelimiterFromElement=t.addDelimiterBefore=t.addDelimiterAfter=t.addDelimiters=t.PositionContentSearcher=t.ContentTraverser=t.getFirstLastBlockElement=t.getBlockElementAtNode=void 0,t.chainSanitizerCallback=t.createDefaultHtmlSanitizerOptions=t.getInheritableStyles=t.HtmlSanitizer=t.canUndoAutoComplete=t.createSnapshots=t.moveCurrentSnapsnot=t.moveCurrentSnapshot=t.clearProceedingSnapshotsV2=t.clearProceedingSnapshots=t.canMoveCurrentSnapshot=t.addSnapshotV2=t.addSnapshot=t.addRangeToSelection=t.extractContentMetadata=t.setHtmlWithMetadata=t.setHtmlWithSelectionPath=t.getHtmlWithSelectionPath=t.getSelectionPath=t.isPositionAtBeginningOf=t.getPositionRect=t.createRange=t.Position=t.mergeBlocksInRegion=t.getSelectionRangeInRegion=t.isNodeInRegion=t.collapseNodesInRegion=t.getSelectedBlockElementsInRegion=t.getRegionsFromRange=t.getTableCellMetadata=t.saveTableCellMetadata=t.getTableFormatInfo=t.setListItemStyle=t.VListChain=t.createVListFromRegion=t.VListItem=t.VList=t.isWholeTableSelected=t.VTable=t.parseColor=t.isNodeAfter=t.getIntersectedRect=t.moveChildNodes=t.KnownCreateElementData=t.createElement=t.matchesSelector=t.setColor=t.getInnerHTML=t.readFile=t.safeInstanceOf=void 0,t.getPasteSource=t.toArray=t.getObjectKeys=t.arrayPush=t.removeMetadata=t.setMetadata=t.getMetadata=t.createObjectDefinition=t.createArrayDefinition=t.createStringDefinition=t.createBooleanDefinition=t.createNumberDefinition=t.validate=t.getTextContent=t.deleteSelectedContent=t.adjustInsertPosition=t.removeGlobalCssStyle=t.setGlobalCssStyles=t.removeImportantStyleRule=t.setStyles=t.getStyles=t.isCtrlOrMetaPressed=t.isCharacterValue=t.isModifierKey=t.clearEventDataCache=t.cacheGetEventData=t.restoreContentWithEntityPlaceholder=t.moveContentWithEntityPlaceholders=t.createEntityPlaceholder=t.getEntitySelector=t.getEntityFromElement=t.commitEntity=void 0;var r=n(7070);Object.defineProperty(t,"getBlockElementAtNode",{enumerable:!0,get:function(){return r.default}});var o=n(1306);Object.defineProperty(t,"getFirstLastBlockElement",{enumerable:!0,get:function(){return o.default}});var i=n(6754);Object.defineProperty(t,"ContentTraverser",{enumerable:!0,get:function(){return i.default}});var a=n(6091);Object.defineProperty(t,"PositionContentSearcher",{enumerable:!0,get:function(){return a.default}});var l=n(8937);Object.defineProperty(t,"addDelimiters",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"addDelimiterAfter",{enumerable:!0,get:function(){return l.addDelimiterAfter}}),Object.defineProperty(t,"addDelimiterBefore",{enumerable:!0,get:function(){return l.addDelimiterBefore}});var s=n(3765);Object.defineProperty(t,"getDelimiterFromElement",{enumerable:!0,get:function(){return s.default}});var u=n(8153);Object.defineProperty(t,"getInlineElementAtNode",{enumerable:!0,get:function(){return u.default}});var d=n(271);Object.defineProperty(t,"ImageInlineElement",{enumerable:!0,get:function(){return d.default}});var c=n(5672);Object.defineProperty(t,"LinkInlineElement",{enumerable:!0,get:function(){return c.default}});var f=n(8797);Object.defineProperty(t,"NodeInlineElement",{enumerable:!0,get:function(){return f.default}});var p=n(5269);Object.defineProperty(t,"PartialInlineElement",{enumerable:!0,get:function(){return p.default}});var v=n(140);Object.defineProperty(t,"applyTextStyle",{enumerable:!0,get:function(){return v.default}});var h=n(1545);Object.defineProperty(t,"extractClipboardEvent",{enumerable:!0,get:function(){return h.default}});var g=n(3877);Object.defineProperty(t,"extractClipboardItems",{enumerable:!0,get:function(){return g.default}});var m=n(6960);Object.defineProperty(t,"extractClipboardItemsForIE",{enumerable:!0,get:function(){return m.default}});var y=n(8736);Object.defineProperty(t,"handleImagePaste",{enumerable:!0,get:function(){return y.default}});var b=n(2543);Object.defineProperty(t,"handleTextPaste",{enumerable:!0,get:function(){return b.default}});var E=n(5673);Object.defineProperty(t,"retrieveMetadataFromClipboard",{enumerable:!0,get:function(){return E.default}});var C=n(5216);Object.defineProperty(t,"sanitizePasteContent",{enumerable:!0,get:function(){return C.default}});var S=n(351);Object.defineProperty(t,"getPasteType",{enumerable:!0,get:function(){return S.default}});var T=n(246);Object.defineProperty(t,"Browser",{enumerable:!0,get:function(){return T.Browser}}),Object.defineProperty(t,"getBrowserInfo",{enumerable:!0,get:function(){return T.getBrowserInfo}});var P=n(5400);Object.defineProperty(t,"applyFormat",{enumerable:!0,get:function(){return P.default}});var _=n(4984);Object.defineProperty(t,"changeElementTag",{enumerable:!0,get:function(){return _.default}});var w=n(8053);Object.defineProperty(t,"collapseNodes",{enumerable:!0,get:function(){return w.default}});var O=n(8655);Object.defineProperty(t,"contains",{enumerable:!0,get:function(){return O.default}});var D=n(3598);Object.defineProperty(t,"findClosestElementAncestor",{enumerable:!0,get:function(){return D.default}});var M=n(5023);Object.defineProperty(t,"fromHtml",{enumerable:!0,get:function(){return M.default}});var A=n(7695);Object.defineProperty(t,"getComputedStyles",{enumerable:!0,get:function(){return A.default}}),Object.defineProperty(t,"getComputedStyle",{enumerable:!0,get:function(){return A.getComputedStyle}});var R=n(3764);Object.defineProperty(t,"getPendableFormatState",{enumerable:!0,get:function(){return R.default}}),Object.defineProperty(t,"PendableFormatCommandMap",{enumerable:!0,get:function(){return R.PendableFormatCommandMap}});var I=n(3408);Object.defineProperty(t,"getTagOfNode",{enumerable:!0,get:function(){return I.default}});var L=n(5499);Object.defineProperty(t,"isBlockElement",{enumerable:!0,get:function(){return L.default}});var N=n(1657);Object.defineProperty(t,"isNodeEmpty",{enumerable:!0,get:function(){return N.default}});var x=n(8235);Object.defineProperty(t,"isVoidHtmlElement",{enumerable:!0,get:function(){return x.default}});var k=n(844);Object.defineProperty(t,"matchLink",{enumerable:!0,get:function(){return k.default}});var j=n(8471);Object.defineProperty(t,"queryElements",{enumerable:!0,get:function(){return j.default}});var B=n(9381);Object.defineProperty(t,"splitParentNode",{enumerable:!0,get:function(){return B.default}}),Object.defineProperty(t,"splitBalancedNodeRange",{enumerable:!0,get:function(){return B.splitBalancedNodeRange}});var F=n(82);Object.defineProperty(t,"unwrap",{enumerable:!0,get:function(){return F.default}});var H=n(4251);Object.defineProperty(t,"wrap",{enumerable:!0,get:function(){return H.default}});var z=n(2513);Object.defineProperty(t,"getNextLeafSibling",{enumerable:!0,get:function(){return z.getNextLeafSibling}}),Object.defineProperty(t,"getPreviousLeafSibling",{enumerable:!0,get:function(){return z.getPreviousLeafSibling}});var U=n(4061);Object.defineProperty(t,"getFirstLeafNode",{enumerable:!0,get:function(){return U.getFirstLeafNode}}),Object.defineProperty(t,"getLastLeafNode",{enumerable:!0,get:function(){return U.getLastLeafNode}});var K=n(7409);Object.defineProperty(t,"splitTextNode",{enumerable:!0,get:function(){return K.default}});var W=n(5203);Object.defineProperty(t,"normalizeRect",{enumerable:!0,get:function(){return W.default}});var V=n(5924);Object.defineProperty(t,"safeInstanceOf",{enumerable:!0,get:function(){return V.default}});var q=n(3126);Object.defineProperty(t,"readFile",{enumerable:!0,get:function(){return q.default}});var G=n(4746);Object.defineProperty(t,"getInnerHTML",{enumerable:!0,get:function(){return G.default}});var Z=n(7727);Object.defineProperty(t,"setColor",{enumerable:!0,get:function(){return Z.default}});var Y=n(5010);Object.defineProperty(t,"matchesSelector",{enumerable:!0,get:function(){return Y.default}});var X=n(6935);Object.defineProperty(t,"createElement",{enumerable:!0,get:function(){return X.default}}),Object.defineProperty(t,"KnownCreateElementData",{enumerable:!0,get:function(){return X.KnownCreateElementData}});var $=n(1473);Object.defineProperty(t,"moveChildNodes",{enumerable:!0,get:function(){return $.default}});var Q=n(3798);Object.defineProperty(t,"getIntersectedRect",{enumerable:!0,get:function(){return Q.default}});var J=n(6997);Object.defineProperty(t,"isNodeAfter",{enumerable:!0,get:function(){return J.default}});var ee=n(8121);Object.defineProperty(t,"parseColor",{enumerable:!0,get:function(){return ee.default}});var te=n(8094);Object.defineProperty(t,"VTable",{enumerable:!0,get:function(){return te.default}});var ne=n(8570);Object.defineProperty(t,"isWholeTableSelected",{enumerable:!0,get:function(){return ne.default}});var re=n(64);Object.defineProperty(t,"VList",{enumerable:!0,get:function(){return re.default}});var oe=n(711);Object.defineProperty(t,"VListItem",{enumerable:!0,get:function(){return oe.default}});var ie=n(7909);Object.defineProperty(t,"createVListFromRegion",{enumerable:!0,get:function(){return ie.default}});var ae=n(4327);Object.defineProperty(t,"VListChain",{enumerable:!0,get:function(){return ae.default}});var le=n(3339);Object.defineProperty(t,"setListItemStyle",{enumerable:!0,get:function(){return le.default}});var se=n(4711);Object.defineProperty(t,"getTableFormatInfo",{enumerable:!0,get:function(){return se.getTableFormatInfo}});var ue=n(3606);Object.defineProperty(t,"saveTableCellMetadata",{enumerable:!0,get:function(){return ue.saveTableCellMetadata}});var de=n(3606);Object.defineProperty(t,"getTableCellMetadata",{enumerable:!0,get:function(){return de.getTableCellMetadata}});var ce=n(8394);Object.defineProperty(t,"getRegionsFromRange",{enumerable:!0,get:function(){return ce.default}});var fe=n(531);Object.defineProperty(t,"getSelectedBlockElementsInRegion",{enumerable:!0,get:function(){return fe.default}});var pe=n(6688);Object.defineProperty(t,"collapseNodesInRegion",{enumerable:!0,get:function(){return pe.default}});var ve=n(4794);Object.defineProperty(t,"isNodeInRegion",{enumerable:!0,get:function(){return ve.default}});var he=n(4539);Object.defineProperty(t,"getSelectionRangeInRegion",{enumerable:!0,get:function(){return he.default}});var ge=n(2799);Object.defineProperty(t,"mergeBlocksInRegion",{enumerable:!0,get:function(){return ge.default}});var me=n(4630);Object.defineProperty(t,"Position",{enumerable:!0,get:function(){return me.default}});var ye=n(8831);Object.defineProperty(t,"createRange",{enumerable:!0,get:function(){return ye.default}});var be=n(5473);Object.defineProperty(t,"getPositionRect",{enumerable:!0,get:function(){return be.default}});var Ee=n(1431);Object.defineProperty(t,"isPositionAtBeginningOf",{enumerable:!0,get:function(){return Ee.default}});var Ce=n(8805);Object.defineProperty(t,"getSelectionPath",{enumerable:!0,get:function(){return Ce.default}});var Se=n(9372);Object.defineProperty(t,"getHtmlWithSelectionPath",{enumerable:!0,get:function(){return Se.default}});var Te=n(4477);Object.defineProperty(t,"setHtmlWithSelectionPath",{enumerable:!0,get:function(){return Te.default}}),Object.defineProperty(t,"setHtmlWithMetadata",{enumerable:!0,get:function(){return Te.setHtmlWithMetadata}}),Object.defineProperty(t,"extractContentMetadata",{enumerable:!0,get:function(){return Te.extractContentMetadata}});var Pe=n(5537);Object.defineProperty(t,"addRangeToSelection",{enumerable:!0,get:function(){return Pe.default}});var _e=n(3680);Object.defineProperty(t,"addSnapshot",{enumerable:!0,get:function(){return _e.default}}),Object.defineProperty(t,"addSnapshotV2",{enumerable:!0,get:function(){return _e.addSnapshotV2}});var we=n(3205);Object.defineProperty(t,"canMoveCurrentSnapshot",{enumerable:!0,get:function(){return we.default}});var Oe=n(5892);Object.defineProperty(t,"clearProceedingSnapshots",{enumerable:!0,get:function(){return Oe.default}}),Object.defineProperty(t,"clearProceedingSnapshotsV2",{enumerable:!0,get:function(){return Oe.clearProceedingSnapshotsV2}});var De=n(5105);Object.defineProperty(t,"moveCurrentSnapshot",{enumerable:!0,get:function(){return De.default}}),Object.defineProperty(t,"moveCurrentSnapsnot",{enumerable:!0,get:function(){return De.moveCurrentSnapsnot}});var Me=n(7424);Object.defineProperty(t,"createSnapshots",{enumerable:!0,get:function(){return Me.default}});var Ae=n(6687);Object.defineProperty(t,"canUndoAutoComplete",{enumerable:!0,get:function(){return Ae.default}});var Re=n(8488);Object.defineProperty(t,"HtmlSanitizer",{enumerable:!0,get:function(){return Re.default}});var Ie=n(623);Object.defineProperty(t,"getInheritableStyles",{enumerable:!0,get:function(){return Ie.default}});var Le=n(4834);Object.defineProperty(t,"createDefaultHtmlSanitizerOptions",{enumerable:!0,get:function(){return Le.default}});var Ne=n(585);Object.defineProperty(t,"chainSanitizerCallback",{enumerable:!0,get:function(){return Ne.default}});var xe=n(8839);Object.defineProperty(t,"commitEntity",{enumerable:!0,get:function(){return xe.default}});var ke=n(3726);Object.defineProperty(t,"getEntityFromElement",{enumerable:!0,get:function(){return ke.default}});var je=n(4965);Object.defineProperty(t,"getEntitySelector",{enumerable:!0,get:function(){return je.default}});var Be=n(3032);Object.defineProperty(t,"createEntityPlaceholder",{enumerable:!0,get:function(){return Be.createEntityPlaceholder}}),Object.defineProperty(t,"moveContentWithEntityPlaceholders",{enumerable:!0,get:function(){return Be.moveContentWithEntityPlaceholders}}),Object.defineProperty(t,"restoreContentWithEntityPlaceholder",{enumerable:!0,get:function(){return Be.restoreContentWithEntityPlaceholder}});var Fe=n(996);Object.defineProperty(t,"cacheGetEventData",{enumerable:!0,get:function(){return Fe.default}});var He=n(2924);Object.defineProperty(t,"clearEventDataCache",{enumerable:!0,get:function(){return He.default}});var ze=n(1045);Object.defineProperty(t,"isModifierKey",{enumerable:!0,get:function(){return ze.default}});var Ue=n(7254);Object.defineProperty(t,"isCharacterValue",{enumerable:!0,get:function(){return Ue.default}});var Ke=n(5188);Object.defineProperty(t,"isCtrlOrMetaPressed",{enumerable:!0,get:function(){return Ke.default}});var We=n(359);Object.defineProperty(t,"getStyles",{enumerable:!0,get:function(){return We.default}});var Ve=n(6092);Object.defineProperty(t,"setStyles",{enumerable:!0,get:function(){return Ve.default}});var qe=n(9130);Object.defineProperty(t,"removeImportantStyleRule",{enumerable:!0,get:function(){return qe.default}});var Ge=n(8182);Object.defineProperty(t,"setGlobalCssStyles",{enumerable:!0,get:function(){return Ge.default}});var Ze=n(4136);Object.defineProperty(t,"removeGlobalCssStyle",{enumerable:!0,get:function(){return Ze.default}});var Ye=n(2738);Object.defineProperty(t,"adjustInsertPosition",{enumerable:!0,get:function(){return Ye.default}});var Xe=n(3030);Object.defineProperty(t,"deleteSelectedContent",{enumerable:!0,get:function(){return Xe.default}});var $e=n(8606);Object.defineProperty(t,"getTextContent",{enumerable:!0,get:function(){return $e.default}});var Qe=n(2373);Object.defineProperty(t,"validate",{enumerable:!0,get:function(){return Qe.default}});var Je=n(681);Object.defineProperty(t,"createNumberDefinition",{enumerable:!0,get:function(){return Je.createNumberDefinition}}),Object.defineProperty(t,"createBooleanDefinition",{enumerable:!0,get:function(){return Je.createBooleanDefinition}}),Object.defineProperty(t,"createStringDefinition",{enumerable:!0,get:function(){return Je.createStringDefinition}}),Object.defineProperty(t,"createArrayDefinition",{enumerable:!0,get:function(){return Je.createArrayDefinition}}),Object.defineProperty(t,"createObjectDefinition",{enumerable:!0,get:function(){return Je.createObjectDefinition}});var et=n(7570);Object.defineProperty(t,"getMetadata",{enumerable:!0,get:function(){return et.getMetadata}}),Object.defineProperty(t,"setMetadata",{enumerable:!0,get:function(){return et.setMetadata}}),Object.defineProperty(t,"removeMetadata",{enumerable:!0,get:function(){return et.removeMetadata}});var tt=n(8605);Object.defineProperty(t,"arrayPush",{enumerable:!0,get:function(){return tt.default}});var nt=n(4709);Object.defineProperty(t,"getObjectKeys",{enumerable:!0,get:function(){return nt.default}});var rt=n(8375);Object.defineProperty(t,"toArray",{enumerable:!0,get:function(){return rt.default}});var ot=n(6433);Object.defineProperty(t,"getPasteSource",{enumerable:!0,get:function(){return ot.default}})},8251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){this.position=e,this.parentBlock=t}return e.prototype.getTextContent=function(){return""},e.prototype.getContainerNode=function(){return this.position.node},e.prototype.getParentBlock=function(){return this.parentBlock},e.prototype.getStartPosition=function(){return this.position},e.prototype.getEndPosition=function(){return this.position},e.prototype.isAfter=function(e){return e&&this.position.isAfter(e.getEndPosition())},e.prototype.isTextualInlineElement=function(){return!1},e.prototype.contains=function(e){return!1},e.prototype.applyStyle=function(e){},e}();t.default=n},271:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n){return e.call(this,t,n)||this}return(0,r.__extends)(t,e),t}(n(8797).default);t.default=o},5672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n){return e.call(this,t,n)||this}return(0,r.__extends)(t,e),t}(n(8797).default);t.default=o},8797:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(140),o=n(6997),i=n(4630),a=function(){function e(e,t){this.containerNode=e,this.parentBlock=t}return e.prototype.getTextContent=function(){return(3==this.containerNode.nodeType?this.containerNode.nodeValue:this.containerNode.textContent)||""},e.prototype.getContainerNode=function(){return this.containerNode},e.prototype.getParentBlock=function(){return this.parentBlock},e.prototype.getStartPosition=function(){return new i.default(this.containerNode,0).normalize()},e.prototype.getEndPosition=function(){return new i.default(this.containerNode,-1).normalize()},e.prototype.isTextualInlineElement=function(){return this.containerNode&&3==this.containerNode.nodeType},e.prototype.isAfter=function(e){return e&&(0,o.default)(this.containerNode,e.getContainerNode())},e.prototype.contains=function(e){var t=this.getStartPosition(),n=this.getEndPosition();return e&&e.isAfter(t)&&n.isAfter(e)},e.prototype.applyStyle=function(e){(0,r.default)(this.containerNode,e)},e}();t.default=a},5269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(140),o=n(8831),i=n(4630),a=n(2513),l=function(){function e(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null),this.inlineElement=e,this.start=t,this.end=n}return e.prototype.getDecoratedInline=function(){return this.inlineElement},e.prototype.getContainerNode=function(){return this.inlineElement.getContainerNode()},e.prototype.getParentBlock=function(){return this.inlineElement.getParentBlock()},e.prototype.getTextContent=function(){return(0,o.default)(this.getStartPosition(),this.getEndPosition()).toString()},e.prototype.getStartPosition=function(){return this.start||this.inlineElement.getStartPosition()},e.prototype.getEndPosition=function(){return this.end||this.inlineElement.getEndPosition()},Object.defineProperty(e.prototype,"nextInlineElement",{get:function(){return this.end?new e(this.inlineElement,this.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"previousInlineElement",{get:function(){return this.start?new e(this.inlineElement,void 0,this.start):null},enumerable:!1,configurable:!0}),e.prototype.contains=function(e){return e&&e.isAfter(this.getStartPosition())&&this.getEndPosition().isAfter(e)},e.prototype.isTextualInlineElement=function(){return this.inlineElement&&this.inlineElement.isTextualInlineElement()},e.prototype.isAfter=function(e){var t=this.getStartPosition(),n=e&&e.getEndPosition();return n&&(t.isAfter(n)||t.equalTo(n))},e.prototype.applyStyle=function(e){var t=this.getStartPosition().normalize(),n=this.getEndPosition().normalize(),o=this.getContainerNode();if(t.isAtEnd){var l=(0,a.getNextLeafSibling)(o,t.node);t=l?new i.default(l,0):null}if(0==n.offset){var s=(0,a.getPreviousLeafSibling)(o,n.node);n=s?new i.default(s,-1):null}(0,r.default)(o,e,t||void 0,n||void 0)},e}();t.default=l},140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(4630),i=n(7409),a=n(4251),l=n(2513),s=n(9381),u=n(5924),d="SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL,SUP,SUB".split(",");function c(e,t){e&&1==e.nodeType&&t(e,!0)}t.default=function(e,t,n,f){void 0===n&&(n=new o.default(e,0).normalize()),void 0===f&&(f=new o.default(e,-1).normalize());for(var p=[],v=n,h=f;v&&h&&h.isAfter(v);){var g=v.node,m=(0,r.default)(g.parentNode),y=(0,l.getNextLeafSibling)(e,g);3==g.nodeType&&["TR","TABLE"].indexOf(m)<0&&(g!=h.node||h.isAtEnd||(g=(0,i.default)(g,h.offset,!0)),v.offset>0&&(g=(0,i.default)(g,v.offset,!1)),p.push(g)),v=y&&new o.default(y,0)}if(p.length>0){if(p.every((function(e){return e.parentNode==p[0].parentNode}))){var b=p.shift();p.forEach((function(e){var t,n=(b.nodeValue||"")+(e.nodeValue||"");b.nodeValue=n,null===(t=e.parentNode)||void 0===t||t.removeChild(e)})),p=[b]}p.forEach((function(e){for(var n=e;n&&"SPAN"!=(0,r.default)(n)&&d.indexOf((0,r.default)(n.parentNode))>=0;)c(n,t),n=(0,s.splitBalancedNodeRange)(n);n&&"SPAN"!=(0,r.default)(n)&&(c(n,t),n=(0,a.default)(n,"SPAN")),(0,u.default)(n,"HTMLElement")&&t(n)}))}}},7229:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLastInlineElement=t.getFirstInlineElement=void 0;var r=n(8153),o=n(4061);t.getFirstInlineElement=function(e){var t=(0,o.getFirstLeafNode)(e);return t?(0,r.default)(e,t):null},t.getLastInlineElement=function(e){var t=(0,o.getLastLeafNode)(e);return t?(0,r.default)(e,t):null}},8153:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7070),o=n(3408),i=n(271),a=n(5672),l=n(8797),s=n(5924);t.default=function(e,t){var n=(0,s.default)(e,"Node")?(0,r.default)(e,t):e;return t&&n&&function(e,t){for(var n,r=[e],s=e.parentNode;s&&t.contains(s);s=s.parentNode)r.push(s);for(var u=r.length-1;u>=0&&!n;u--){var d=r[u],c=(0,o.default)(d);"A"==c?n=new a.default(d,t):"IMG"==c&&(n=new i.default(d,t))}return n||new l.default(e,t)}(t,n)}},2571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getInlineElementBeforeAfter=t.getInlineElementAfter=t.getInlineElementBefore=void 0;var r=n(8153),o=n(5269),i=n(1630),a=n(2513);function l(e,t,n){if(!e||!t||!t.node)return null;var l=(t=t.normalize()).offset,s=t.isAtEnd,u=t.node,d=!1;!n&&0==l&&!s||n&&s?u=(0,a.getLeafSibling)(e,u,n):3==u.nodeType&&(!n&&!s||n&&l>0)&&(d=!0),u&&(0,i.default)(u)&&(u=(0,a.getLeafSibling)(e,u,n));var c=(0,r.default)(e,u);return c&&(d||c.contains(t))&&(c=n?new o.default(c,t,void 0):new o.default(c,void 0,t)),c}t.getInlineElementBefore=function(e,t){return l(e,t,!1)},t.getInlineElementAfter=function(e,t){return l(e,t,!0)},t.getInlineElementBeforeAfter=l},8605:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){Array.prototype.push.apply(e,t)}},4709:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Object.keys(e)}},8375:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return[].slice.call(e)}},64:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(2042),a=n(3408),l=n(5499),s=n(1657),u=n(4630),d=n(8471),c=n(5924),f=n(9381),p=n(8375),v=n(82),h=n(711),g=n(4251),m=n(7570),y=function(){function e(e){if(this.rootList=e,this.items=[],!e)throw new Error("rootList must not be null");b(this.rootList),(0,d.default)(this.rootList,"ol,ul",b),(0,d.default)(this.rootList,"li",E),this.populateItems(this.rootList)}return e.prototype.contains=function(e){return this.items.some((function(t){return t.contains(e)}))},e.prototype.getLastItemNumber=function(){var e=this.getStart();return void 0===e?e:e-1+this.items.filter((function(e){return 1==e.getListType()&&1==e.getLevel()&&!e.isDummy()})).length},e.prototype.writeBack=function(e,t){var n=this;if(!this.rootList)throw new Error("rootList must not be null");var r,o=this.rootList.ownerDocument,i=[o.createDocumentFragment()],a=o.createTextNode(""),l=this.getStart()||1;this.rootList.parentNode.replaceChild(a,this.rootList),this.items.forEach((function(o){var a=o.getNewListStart();a&&a!=l&&(i.splice(1,i.length-1),l=a),o.writeBack(i,n.rootList,e);var s=i[1];o.applyListStyle(n.rootList,l),(0,c.default)(s,"HTMLOListElement")&&(r!=s&&(1==l?s.removeAttribute("start"):s.start=l),1!=o.getLevel()||o.isDummy()||t||l++),r=s})),a.parentNode.replaceChild(i[0],a)},e.prototype.split=function(e,t){if(!this.rootList)throw new Error("rootList must not be null");for(var n=0;n=0?Math.min(this.items.length-1,a):a;var l=i<=a?this.items.slice(i,a+1):[];return n&&l.forEach(n),l},e.prototype.populateItems=function(e,t){var n=this;void 0===t&&(t=[]);var o=(0,i.default)(e);(0,p.default)(e.childNodes).forEach((function(e){var a=(0,r.__spreadArray)((0,r.__spreadArray)([],(0,r.__read)(t),!1),[o],!1);(0,i.isListElement)(e)?n.populateItems(e,a):3==e.nodeType&&""==(e.nodeValue||"").trim()||n.items.push(new(h.default.bind.apply(h.default,(0,r.__spreadArray)([void 0,e],(0,r.__read)(a),!1))))}))},e}();function b(e){var t=null;(0,p.default)(e.childNodes).forEach((function(e){"LI"==(0,a.default)(e)?t=e:(0,i.isListElement)(e)?t=null:t&&!(0,s.default)(e,!0)&&t.appendChild((0,l.default)(e)?e:(0,g.default)(e))}))}function E(e){for(;!(0,i.isListElement)(e.parentNode);){(0,f.default)(e,!0);var t=(0,p.default)(e.parentNode.childNodes).slice(1);t.length>0&&((0,l.default)(t[0])||(t=[(0,g.default)(t)]),t.forEach((function(t){return e.appendChild(t)}))),(0,v.default)(e.parentNode)}}function C(){for(var e=[],t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8605),o=n(6133),i=n(6997),a=n(4794),l=n(8471),s=n(64),u="listchain",d="listchainafter",c=0,f=function(){function e(e,t){this.region=e,this.name=t,this.lastNumber=0,this.lastNumberBeforeCursor=0}return e.createListChains=function(t,n,a){var s=Array.isArray(t)?t:t?[t]:[],u=[];return s.forEach((function(t){var s,d=[];(0,l.default)(t.rootNode,"ol",(function(r){var l=(0,o.default)(t,"ol",r);if(s!=l){var u=d.filter((function(e){return e.canAppendToTail(l)}))[0]||new e(t,(a||p)()),c=d.indexOf(u),f=!!n&&(0,i.default)(l,n);f?c<0&&d.push(u):(c>=0&&d.splice(c,1),d.unshift(u)),u.append(l,f),s=l}})),(0,r.default)(u,d)})),u},e.prototype.canAppendAtCursor=function(e){return e>1&&this.lastNumberBeforeCursor+1==e},e.prototype.createVListAtBlock=function(e,t){if(e&&e.parentNode){var n=e.ownerDocument.createElement("ol");n.start=t,this.applyChainName(n),e.parentNode.insertBefore(n,e);var r=new s.default(n);return r.appendItem(e,0),r}return null},e.prototype.commit=function(e,t){for(var n=this.getLists(),r=0,o=0;o1?i.start=i.start===r?r+1:i.start:i.start=r+1);var a=new s.default(i);r=a.getLastItemNumber()||0,delete i.dataset[u],delete i.dataset[d],a.writeBack(e)}},e.prototype.canAppendToTail=function(e){return this.lastNumber+1==e.start},e.prototype.append=function(e,t){this.applyChainName(e),this.lastNumber=new s.default(e).getLastItemNumber()||0,t?e.dataset[d]="true":this.lastNumberBeforeCursor=this.lastNumber},e.prototype.applyChainName=function(e){e.dataset[u]=this.name},e.prototype.getLists=function(){var e=this;return(0,l.default)(this.region.rootNode,"ol[data-"+u+"="+this.name+"]").filter((function(t){return(0,a.default)(e.region,t)}))},e}();function p(){return"__List_Chain_"+c++}t.default=f},711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListStyleDefinitionMetadata=void 0;var r=n(7582),o=n(8655),i=n(2042),a=n(359),l=n(3408),s=n(5499),u=n(1473),d=n(5924),c=n(3848),f=n(3339),p=n(8275),v=n(6092),h=n(8375),g=n(82),m=n(4251),y=n(681),b=n(7570),E=[null,"lower-alpha","lower-roman"],C=["disc","circle","square"],S="-.25in",T=["font-size","font-family","color"],P=["data-ogsc","data-ogsb","data-ogac","data-ogab"];t.ListStyleDefinitionMetadata=(0,y.createObjectDefinition)({orderedStyleType:(0,y.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,y.createNumberDefinition)(!0,void 0,1,9)},!0,!0);var _=function(){function e(e){for(var t=[],n=1;nt&&this.listTypes.pop()},e.prototype.addNegativeMargins=function(){this.node.style.margin="0in 0in 0in 0.5in",this.node.style.marginLeft=S},e.prototype.changeListType=function(e){0==e?this.listTypes=[e]:(this.outdent(),this.listTypes.push(e))},e.prototype.setIsDummy=function(e){this.dummy=e},e.prototype.setNewListStart=function(e){this.newListStart=e},e.prototype.applyListStyle=function(e,n){var r=(0,b.getMetadata)(e,t.ListStyleDefinitionMetadata),o=this.listTypes.length<3;r&&(o&&2===this.listTypes[1]&&r.unorderedStyleType?(0,c.default)(this.node,r.unorderedStyleType):o&&1===this.listTypes[1]&&r.orderedStyleType?(0,p.default)(this.node,r.orderedStyleType,n):this.node.style.removeProperty("list-style-type"))},e.prototype.writeBack=function(e,t,n){var o,s=this;void 0===n&&(n=!1);var u,c,p=1;if(n){e.length>this.listTypes.length&&e.splice(this.listTypes.length);var y=e.length-1;y===this.listTypes.length-1&&(0,i.default)(e[y])!==this.listTypes[y]&&e.splice(y),p=e.length}else for(;p1&&((0,f.default)(this.node,T,!0),(0,f.default)(this.node,P,!1)),this.listTypes.length<=1){var S="LI"==(0,l.default)(this.node),_=S?{"font-family":this.node.style.fontFamily,"font-size":this.node.style.fontSize,color:this.node.style.color}:void 0,D=S?(u=this.node,c=(0,h.default)(u.childNodes),(0,g.default)(u),c):[this.node];if(_)for(var M=function(e){(0,d.default)(D[e],"Text")&&(D[e]=(0,m.default)(D[e],"span"));var t=D[e];if((0,d.default)(t,"HTMLElement")){var n=(0,r.__assign)((0,r.__assign)({},_),(0,a.default)(t));(0,v.default)(t,n),P.forEach((function(e){var n=s.node.getAttribute(e);n&&t.setAttribute(e,n)}))}},A=0;A1&&l.style.setProperty("list-style-type",E[(r-1)%E.length]),2==n&&r>1&&l.style.setProperty("list-style-type",C[(r-1)%C.length]),l}function O(e,t,n){return!(e.length>0)||t&&(0,s.default)(e[0])||n&&(0,s.default)(e[e.length])||(e=[(0,m.default)(e)]),e}t.default=_},6692:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={0:"A",1:"B",2:"C",3:"D",4:"E",5:"F",6:"G",7:"H",8:"I",9:"J",10:"K",11:"L",12:"M",13:"N",14:"O",15:"P",16:"Q",17:"R",18:"S",19:"T",20:"U",21:"V",22:"W",23:"X",24:"Y",25:"Z"};t.default=function(e,t){for(var r="";e>=0;)r=n[e%26]+r,e=Math.floor(e/26)-1;return t?r.toLowerCase():r}},4321:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4709),i={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};t.default=function(e,t){var n,a,l="";try{for(var s=(0,r.__values)((0,o.default)(i)),u=s.next();!u.done;u=s.next()){var d=u.value,c=Math.floor(e/i[d]);e-=c*i[d],l+=d.repeat(c)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(a=s.return)&&a.call(s)}finally{if(n)throw n.error}}return t?l.toLocaleLowerCase():l}},7909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6935),o=n(6133),i=n(531),a=n(4794),l=n(4630),s=n(5924),u=n(1630),d=n(8375),c=n(64),f=n(4251),p=n(2513),v=n(2042),h="ol,ul";function g(e,t,n){var r=t[n?t.length-1:0];r=(0,p.getLeafSibling)(e.rootNode,r,n,e.skipTags,!0),r=(0,o.default)(e,h,r),(0,a.default)(e,r)&&(0,v.isListElement)(r)&&(n?(0,s.default)(r,"HTMLOListElement")&&1!=r.start||t.push(r):t.unshift(r))}t.default=function(e,t,n){if(!e)return null;var a=[];if(n){var p=(0,o.default)(e,h,n);p&&a.push(p)}else{if((0,i.default)(e,void 0,!0).forEach((function(n){var r=(0,o.default)(e,h,n.getStartNode());r?(a[a.length-1]!=r&&a.push(r),1==a.length&&(0,s.default)(r,"HTMLOListElement")&&r.start>1&&(t=!1)):a.push(n.collapseToSingleElement())})),0==a.length&&!e.rootNode.firstChild){var m=(0,r.default)(1,e.rootNode.ownerDocument);e.rootNode.appendChild(m),a.push(m),e.fullSelectionStart=new l.default(m,0),e.fullSelectionEnd=new l.default(m,-1)}t&&(g(e,a,!1),g(e,a,!0)),a=a.filter((function(e){return!(0,u.default)(e,!0)}))}var y=null;if(a.length>0){var b=a.shift()||null;(y=(0,v.isListElement)(b)?new c.default(b):b?function(e){var t=(0,d.default)(e.childNodes),n=1==t.length?t[0]:(0,f.default)(t,"SPAN"),r=e.ownerDocument.createElement("ol");e.appendChild(r);var o=new c.default(r);return o.appendItem(n,0),o}(b):null)&&a.forEach((function(e){(0,v.isListElement)(e)?y.mergeVList(new c.default(e)):y.appendItem(e,0)}))}return y}},2042:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isListElement=void 0;var r=n(3408);function o(e){switch((0,r.default)(e)){case"OL":return 1;case"UL":return 2;default:return 0}}t.default=o,t.isListElement=function(e){return 0!=o(e)}},6133:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3598);t.default=function(e,t,n){var o=e&&(0,r.default)(n,e.rootNode,t);if(o)for(var i=void 0;i=(0,r.default)(o.parentNode,e.rootNode,t);)o=i;return o}},3848:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=r[t],o=1===t;e.style.listStyleType=o?n:'"'+n+'"'};var r=((n={})[1]="disc",n[3]="∎ ",n[2]="- ",n[5]="➔ ",n[8]="➔ ",n[4]="➢ ",n[6]="➪ ",n[7]="— ",n)},3339:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(3598),i=n(5924);t.default=function(e,t,n){void 0===n&&(n=!0);var a=function(e,t,n){for(var a,l,s=[],u=r.default.createBodyTraverser(e),d=null,c=function(){var r=(null==(d=u.currentInlineElement)?void 0:d.getContainerNode())||null,c=null;r=r?(0,o.default)(r):null;for(var f=function(){var e=r;t.forEach((function(t){var r=n?e.style.getPropertyValue(t):e.getAttribute(t);c||(c={}),r&&!c[t]&&(c[t]=r)})),r=1===(null===(l=null==r?void 0:r.parentNode)||void 0===l?void 0:l.childNodes.length)?r.parentNode:null};r&&r!==e&&(0,i.default)(r,"HTMLElement")&&(0==s.length||((null===(a=r.textContent)||void 0===a?void 0:a.trim().length)||0)>0);)f();c&&s.push(c),u.getNextInlineElement()};u.currentInlineElement!=d;)c();return s}(e,t,n);t.forEach((function(t){var r=a.map((function(e){return void 0!==e[t]?e[t]:""}));r&&(1==r.length||1==new Set(r).size)&&r[0]&&(n?e.style.setProperty(t,r[0]):e.setAttribute(t,r[0]))}))}},8275:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o,i=n(6692),a=n(4321);!function(e){e[e.Decimal=0]="Decimal",e[e.Roman=1]="Roman",e[e.Alpha=2]="Alpha"}(o||(o={})),t.default=function(e,t,n){var r=l[t],s=r.markerSeparator,u=r.markerSecondSeparator,d=r.markerType,c=r.lowerCase,f=n.toString();d===o.Roman?f=(0,a.default)(n,c):d===o.Alpha&&(f=(0,i.default)(n-1,c));var p=u?u+f+s:f+s;e.style.listStyleType='"'+p+'"'};var l=((r={})[1]={markerType:o.Decimal,markerSeparator:". "},r[2]={markerType:o.Decimal,markerSeparator:"- "},r[3]={markerType:o.Decimal,markerSeparator:") "},r[4]={markerType:o.Decimal,markerSeparator:") ",markerSecondSeparator:"("},r[5]={markerType:o.Alpha,markerSeparator:". ",lowerCase:!0},r[8]={markerType:o.Alpha,markerSeparator:"- ",lowerCase:!0},r[6]={markerType:o.Alpha,markerSeparator:") ",lowerCase:!0},r[7]={markerType:o.Alpha,markerSeparator:") ",markerSecondSeparator:"(",lowerCase:!0},r[9]={markerType:o.Alpha,markerSeparator:". "},r[12]={markerType:o.Alpha,markerSeparator:"- "},r[10]={markerType:o.Alpha,markerSeparator:") "},r[11]={markerType:o.Alpha,markerSeparator:") ",markerSecondSeparator:"("},r[13]={markerType:o.Roman,markerSeparator:". ",lowerCase:!0},r[16]={markerType:o.Roman,markerSeparator:"- ",lowerCase:!0},r[14]={markerType:o.Roman,markerSeparator:") ",lowerCase:!0},r[15]={markerType:o.Roman,markerSeparator:") ",markerSecondSeparator:"(",lowerCase:!0},r[17]={markerType:o.Roman,markerSeparator:". "},r[20]={markerType:o.Roman,markerSeparator:"- "},r[18]={markerType:o.Roman,markerSeparator:") "},r[19]={markerType:o.Roman,markerSeparator:") ",markerSecondSeparator:"("},r)},681:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createObjectDefinition=t.createArrayDefinition=t.createStringDefinition=t.createBooleanDefinition=t.createNumberDefinition=void 0,t.createNumberDefinition=function(e,t,n,r,o){return{type:1,isOptional:e,value:t,maxValue:r,minValue:n,allowNull:o}},t.createBooleanDefinition=function(e,t,n){return{type:0,isOptional:e,value:t,allowNull:n}},t.createStringDefinition=function(e,t,n){return{type:2,isOptional:e,value:t,allowNull:n}},t.createArrayDefinition=function(e,t,n,r,o){return{type:3,isOptional:t,itemDef:e,minLength:n,maxLength:r,allowNull:o}},t.createObjectDefinition=function(e,t,n){return{type:4,isOptional:t,propertyDef:e,allowNull:n}}},7570:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeMetadata=t.setMetadata=t.getMetadata=void 0;var r=n(2373),o="editingInfo";function i(e,t,n){var i,a=e.dataset[o];try{i=a?JSON.parse(a):null}catch(e){}if(void 0!==i){if(!t)return i;if((0,r.default)(i,t))return i}return n||null}t.getMetadata=i,t.setMetadata=function(e,t,n){return!(n&&!(0,r.default)(t,n)||(e.dataset[o]=JSON.stringify(t),0))},t.removeMetadata=function(e,t){if(t){var n=i(e);n&&(delete n[t],e.dataset[o]=JSON.stringify(n))}else delete e.dataset[o]}},2373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4709);t.default=function e(t,n){var o,i,a=!1;if(n.isOptional&&void 0===t||n.allowNull&&null===t)a=!0;else{if(!n.isOptional&&void 0===t||!n.allowNull&&null===t)return!1;switch(n.type){case 2:a="string"==typeof t&&(void 0===n.value||t===n.value);break;case 1:a="number"==typeof t&&(void 0===n.value||(o=n.value,i=t,Math.abs(o-i)<.001))&&(void 0===n.minValue||t>=n.minValue)&&(void 0===n.maxValue||t<=n.maxValue);break;case 0:a="boolean"==typeof t&&(void 0===n.value||t===n.value);break;case 3:a=Array.isArray(t)&&(void 0===n.minLength||t.length>=n.minLength)&&(void 0===n.maxLength||t.length<=n.maxLength)&&t.every((function(t){return e(t,n.itemDef)}));break;case 4:a="object"==typeof t&&(0,r.default)(n.propertyDef).every((function(r){return e(t[r],n.propertyDef[r])}));break;case 5:a=n.validator(t)}}return a}},2881:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EXCEL_DESKTOP_ATTRIBUTE_NAME=t.PROG_ID_NAME=t.GOOGLE_SHEET_NODE_NAME=void 0,t.GOOGLE_SHEET_NODE_NAME="google-sheets-html-origin",t.PROG_ID_NAME="ProgId",t.EXCEL_DESKTOP_ATTRIBUTE_NAME="xmlns:x"},7477:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n='ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer,'+["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle"].map((function(e){return'table div[class^="'+e+'"]'})).join(",");t.default=function(e){return!!e.fragment.querySelector(n)}},6433:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7477),o=n(2586),i=n(4675),a=n(3810),l=n(7050),s=n(8064),u=n(8773),d=new Map([[0,s.default],[1,o.default],[2,i.default],[3,l.default],[5,r.default],[4,a.default],[7,u.default]]);t.default=function(e,t){var n=e.htmlAttributes,r=e.clipboardData,o=e.fragment,i=null,a={htmlAttributes:n,fragment:o,shouldConvertSingleImage:t,clipboardData:r};return d.forEach((function(e,t){!i&&e(a)&&(i=t)})),null!=i?i:6}},2586:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return"urn:schemas-microsoft-com:office:excel"==e.htmlAttributes[r.EXCEL_DESKTOP_ATTRIBUTE_NAME]}},4675:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){var t=e.htmlAttributes;return"Excel.Sheet"==t[r.PROG_ID_NAME]&&null==t[r.EXCEL_DESKTOP_ATTRIBUTE_NAME]}},3810:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return!!e.fragment.querySelector(r.GOOGLE_SHEET_NODE_NAME)}},7050:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){return"PowerPoint.Slide"==e.htmlAttributes[r.PROG_ID_NAME]}},8064:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2881);t.default=function(e){var t=e.htmlAttributes;return"urn:schemas-microsoft-com:office:word"==t["xmlns:w"]||"Word.Document"==t[r.PROG_ID_NAME]}},8773:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,n=e.shouldConvertSingleImage,r=e.clipboardData;return n&&1==(null===(t=r.htmlFirstLevelChildTags)||void 0===t?void 0:t.length)&&"IMG"==r.htmlFirstLevelChildTags[0]}},6688:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8053),o=n(4794),i=n(5924);t.default=function(e,t){if(!t||0==t.length)return[];var n=(0,i.default)(t[0],"Node")?t:[t[0].getStartNode(),t[t.length-1].getEndNode()],a=(n=n&&n.filter((function(t){return(0,o.default)(e,t)})))[0],l=n[n.length-1];return(0,o.default)(e,a)&&(0,o.default)(e,l)?(0,r.default)(e.rootNode,a,l,!0):[]}},8394:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.getRegionCreator=void 0;var o=n(7582),i=n(8655),a=n(3598),l=n(4630),s=n(8471),u=n(2513),d=((r={})[0]={skipTags:["TABLE"],outerSelector:"table",innerSelector:"td,th"},r);function c(e,t){var n=l.default.getStart(e).normalize(),r=l.default.getEnd(e).normalize();return function(e,o,a){return function(e,t,n,r){if(e){var o=t&&(0,u.getNextLeafSibling)(e,t,r),a=n&&(0,u.getPreviousLeafSibling)(e,n,r),l=!t||(0,i.default)(e,t)&&(0,i.default)(e,o),s=!n||(0,i.default)(e,n)&&(0,i.default)(e,a),d=!(t&&n&&((0,i.default)(t,n,!0)||(0,i.default)(t,a,!0)||(0,i.default)(n,t,!0)||(0,i.default)(n,o,!0)));return l&&s&&d}return!1}(e,o,a,t)?{rootNode:e,nodeBefore:o,nodeAfter:a,skipTags:t,fullSelectionStart:n,fullSelectionEnd:r}:null}}function f(e,t,n,r,i){var a;i=i||t.innerNode==n;var l=!1,s=t.children,u=t.innerNode,d=[];if(0==s.length)(p=e(u))&&d.push(p);else for(var c=0;c<=s.length&&!l;c++){var p,v=s[c]||{},h=v.outerNode,g=v.boundaries,m=null===(a=s[c-1])||void 0===a?void 0:a.outerNode;i&&(p=e(u,m,h))&&d.push(p),null==g||g.forEach((function(t){var a,s;s=(a=(0,o.__read)(f(e,t,n,r,i),3))[0],i=a[1],l=a[2],d=d.concat(s)}))}return[d,i,l||u==r]}t.default=function(e,t,n){var r=[];if(e&&t){var l=d[n],u=l.innerSelector,p=l.skipTags,v=function(e,t,n){var r=[{innerNode:e,children:[]}],o=d[n],l=o.outerSelector,u=o.innerSelector,c=(0,s.default)(e,l,null,2,t);return(0,s.default)(e,u,(function(t){var n=(0,a.default)(t,e,l);if(n&&c.indexOf(n)<0){for(var o={innerNode:t,children:[]},s=r.length-1;s>=0;s--){var u=r[s],d=u.innerNode,f=u.children;if((0,i.default)(d,n)){var p=f.filter((function(e){return e.outerNode==n}))[0];p||(p={outerNode:n,boundaries:[]},f.push(p)),p.boundaries.push(o);break}}r.push(o)}}),1,t),r[0]}(e,t,n),h=(0,a.default)(t.startContainer,e,u)||e,g=(0,a.default)(t.endContainer,e,u)||e,m=c(t,p);r=(0,o.__read)(f(m,v,h,g),1)[0]}return r.filter((function(e){return!!e}))},t.getRegionCreator=c},531:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6754),o=n(6935),i=n(7070),a=n(4539),l=n(1630);t.default=function(e,t,n){var s=(0,a.default)(e),u=[];if(s){for(var d=e.rootNode,c=e.skipTags,f=r.default.createSelectionTraverser(d,s,c),p=null==f?void 0:f.currentBlockElement;p;p=f.getNextBlockElement())u.push(p);u=u.filter((function(e){var t,n=e.getStartNode();return n!=e.getEndNode()||!(0,l.default)(n,!0)||(null===(t=n.parentNode)||void 0===t||t.removeChild(n),!1)}))}if(0==u.length&&e&&!e.rootNode.firstChild&&t){var v=(0,o.default)(1,e.rootNode.ownerDocument);e.rootNode.appendChild(v),(p=(0,i.default)(e.rootNode,v))&&u.push(p)}return u}},4539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8831),o=n(4630),i=n(2513);t.default=function(e){if(!e)return null;var t=e.nodeBefore,n=e.nodeAfter,a=e.rootNode,l=e.skipTags,s=t?(0,i.getNextLeafSibling)(e.rootNode,t,e.skipTags):a.firstChild,u=n?(0,i.getPreviousLeafSibling)(a,n,l):a.lastChild,d=s&&u&&(0,r.default)(s,u);if(!function(e){var t=e;return!!t.fullSelectionEnd&&!!t.fullSelectionStart}(e))return d;if(d){var c=o.default.getStart(d).normalize(),f=o.default.getEnd(d).normalize(),p=e.fullSelectionEnd,v=e.fullSelectionStart;if(!v.isAfter(f)&&!c.isAfter(p)){var h=v.isAfter(c)?v:c,g=p.isAfter(f)?f:p;return(0,r.default)(h,g)}}return null}},4794:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655);t.default=function(e,t){return!(!e||!(0,r.default)(e.rootNode,t)||e.nodeBefore&&4!=e.nodeBefore.compareDocumentPosition(t)||e.nodeAfter&&2!=e.nodeAfter.compareDocumentPosition(t))}},2799:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4984),i=n(8655),a=n(7070),l=n(4869),s=n(359),u=n(4794),d=n(5924),c=n(6092),f=n(8053);t.default=function(e,t,n){var p,v,h,g;if((0,u.default)(e,t)&&(0,u.default)(e,n)&&(g=(0,a.default)(e.rootNode,n))&&!g.contains(t)){for(var m=g.collapseToSingleElement(),y=(0,f.collapse)(e.rootNode,m,t,!1,!0),b=m;(0,i.default)(y,b);){var E=b.parentNode;if((0,d.default)(E,"HTMLElement")){var C=(0,r.__assign)((0,r.__assign)((0,r.__assign)({},(0,l.default)(E)||{}),(0,s.default)(E)),(0,s.default)(m));(0,c.default)(m,C)}b=E}var S=null,T=1==m.childNodes.length&&0==m.attributes.length?m.firstChild:(0,o.default)(m,"SPAN");for(b=T;(0,i.default)(y,b)&&1==(null===(p=b.parentNode)||void 0===p?void 0:p.childNodes.length);b=b.parentNode)S=b.parentNode;null===(v=t.parentNode)||void 0===v||v.insertBefore(T,t.nextSibling),null===(h=null==S?void 0:S.parentNode)||void 0===h||h.removeChild(S)}}},4630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3598),o=n(6997),i=function(){function e(e,t,n){switch(void 0===t&&(t=0),this.isFromEndOfRange=n,e.node?(this.node=e.node,t=e.offset):this.node=e,t){case-2:this.offset=a(this.node),this.node=this.node.parentNode,this.isAtEnd=!1;break;case-3:this.offset=a(this.node)+1,this.isAtEnd=!this.node.nextSibling,this.node=this.node.parentNode;break;case-1:this.offset=l(this.node),this.isAtEnd=!0;break;default:var o=l(this.node);this.offset=Math.max(0,Math.min(t,o)),this.isAtEnd=t>0&&t>=o}this.element=(0,r.default)(this.node)}return e.prototype.normalize=function(){if(3==this.node.nodeType||!this.node.firstChild)return this;for(var t=this.node,n=this.isAtEnd?-1:this.offset;1==t.nodeType||11==t.nodeType;){var r=this.isFromEndOfRange?-1==n?t.lastChild:t.childNodes[n-1]:0==n?t.firstChild:-1==n?t.lastChild:t.childNodes[n];if(!r)break;t=r,n=this.isAtEnd||this.isFromEndOfRange?-1:0}return new e(t,n,this.isFromEndOfRange)},e.prototype.equalTo=function(e){return e&&(this==e||this.node==e.node&&this.offset==e.offset&&this.isAtEnd==e.isAtEnd)},e.prototype.isAfter=function(e){return this.node==e.node?this.isAtEnd&&!e.isAtEnd||this.offset>e.offset:(0,o.default)(this.node,e.node)},e.prototype.move=function(t){return new e(this.node,Math.max(this.offset+t,0))},e.getStart=function(t){return new e(t.startContainer,t.startOffset)},e.getEnd=function(t){return t.collapsed?e.getStart(t):new e(t.endContainer,t.endOffset,!0)},e}();function a(e){for(var t=0;e=(null==e?void 0:e.previousSibling)||null;)t++;return t}function l(e){var t;return 3==e.nodeType?(null===(t=e.nodeValue)||void 0===t?void 0:t.length)||0:1==e.nodeType||11==e.nodeType?e.childNodes.length:1}t.default=i},5537:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(246);t.default=function(e,t){var n,o,i,a=null===(i=null===(o=null===(n=null==e?void 0:e.commonAncestorContainer)||void 0===n?void 0:n.ownerDocument)||void 0===o?void 0:o.defaultView)||void 0===i?void 0:i.getSelection();if(a){var l=!0;if(a.rangeCount>0)try{var s=null;(t||r.Browser.isEdge)&&(s=1==a.rangeCount?a.getRangeAt(0):null)&&s.startContainer==e.startContainer&&s.startOffset==e.startOffset&&s.endContainer==e.endContainer&&s.endOffset==e.endOffset?l=!1:a.removeAllRanges()}catch(e){}l&&a.addRange(e)}}},8831:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8235),o=n(4630),i=n(5924);function a(e){return 1==e.node.nodeType&&(0,r.default)(e.node)?new o.default(e.node,e.isAtEnd?-3:-2):e}function l(e){return e&&e.node}function s(e,t){if(!e||!t)return null;for(var n=0,r=0;rn);r++)e=e.childNodes[n];return new o.default(e,n)}t.default=function(e,t,n,r){var u,d=null,c=null;if(l(e)?(d=e,c=l(t)?t:null):(0,i.default)(e,"Node")&&(Array.isArray(t)?(d=s(e,t),c=Array.isArray(n)?s(e,n):null):"number"==typeof t?(d=new o.default(e,t),c=(0,i.default)(n,"Node")?new o.default(n,r):null):!(0,i.default)(t,"Node")&&t||(d=new o.default(e,-2),c=new o.default(t||e,-3))),null===(u=null==d?void 0:d.node)||void 0===u?void 0:u.ownerDocument){var f=d.node.ownerDocument.createRange();return d=a(d),c=a(c||d),f.setStart(d.node,d.offset),f.setEnd(c.node,c.offset),f}return null}},9372:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4746),o=n(8805);t.default=function(e,t){if(!e)return"";var n=(0,r.default)(e),i=t&&(0,o.default)(e,t);return i?n+"\x3c!--"+JSON.stringify(i)+"--\x3e":n}},5473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6935),o=n(8831),i=n(5203);t.default=function(e){var t;if(!e)return null;var n=(0,o.default)(e),a=n.getBoundingClientRect&&(0,i.default)(n.getBoundingClientRect());if(a)return a;e=e.normalize();var l=n.getClientRects&&n.getClientRects();if(a=l&&1==l.length?(0,i.default)(l[0]):null)return a;if(3==e.node.nodeType&&e.node.ownerDocument){var s=(0,r.default)({tag:"span",children:["​"]},e.node.ownerDocument);if((n=(0,o.default)(e)).insertNode(s),a=s.getBoundingClientRect&&(0,i.default)(s.getBoundingClientRect()),null===(t=s.parentNode)||void 0===t||t.removeChild(s),a)return a}var u=e.element;return u&&u.getBoundingClientRect&&(a=(0,i.default)(u.getBoundingClientRect()))?a:null}},8805:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(4630);function i(e,t){var n,o;if(!e||!t)return[];var i,a=e.node,l=e.offset,s=[];if(!(0,r.default)(t,a,!0))return[];if(3==a.nodeType){for(i=a.parentNode;a.previousSibling&&3==a.previousSibling.nodeType;)l+=(null===(n=a.previousSibling.nodeValue)||void 0===n?void 0:n.length)||0,a=a.previousSibling;s.unshift(l)}else i=a,a=a.childNodes[l];do{l=0;for(var u=!1,d=(null==i?void 0:i.firstChild)||null;d&&d!=a;d=d.nextSibling){if(3==d.nodeType){if(0===(null===(o=d.nodeValue)||void 0===o?void 0:o.length)||u)continue;u=!0}else u=!1;l++}s.unshift(l),a=i,i=(null==i?void 0:i.parentNode)||null}while(a&&a!=t);return s}t.default=function(e,t){return t?{start:i(o.default.getStart(t),e),end:i(o.default.getEnd(t),e)}:null}},1431:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(3408),i=n(1657);function a(e){for(;e.previousSibling;)if(e=e.previousSibling,"BR"==(0,o.default)(e)||!(0,i.default)(e))return!1;return!0}t.default=function(e,t){if(e){var n=(e=e.normalize()).node;if(0==e.offset){for(;n&&(0,r.default)(t,n)&&a(n);)n=(null==n?void 0:n.parentNode)||null;return n==t}}return!1}},4477:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extractContentMetadata=t.setHtmlWithMetadata=void 0;var r=n(8831),o=n(5924),i=n(2373),a=n(681),l=(0,a.createArrayDefinition)((0,a.createNumberDefinition)()),s=(0,a.createObjectDefinition)({x:(0,a.createNumberDefinition)(),y:(0,a.createNumberDefinition)()}),u=(0,a.createBooleanDefinition)(!0),d=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!0,0),isDarkMode:u,start:l,end:l}),c=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!1,1),isDarkMode:u,tableId:(0,a.createStringDefinition)(),firstCell:s,lastCell:s}),f=(0,a.createObjectDefinition)({type:(0,a.createNumberDefinition)(!1,2),isDarkMode:u,imageId:(0,a.createStringDefinition)()});function p(e,t,n){if(e)return t=t||"",e.innerHTML=(null==n?void 0:n(t))||t,v(e)}function v(e){var t=e.lastChild;if((0,o.default)(t,"Comment"))try{var n=JSON.parse(t.nodeValue||"");if((0,i.default)(n,d)||(0,i.default)(n,c)||(0,i.default)(n,f))return e.removeChild(t),n.type=void 0===n.type?0:n.type,n.isDarkMode=n.isDarkMode||!1,n}catch(e){}}t.default=function(e,t,n){var o=p(e,t,n);return 0==(null==o?void 0:o.type)?(0,r.default)(e,o.start,o.end):null},t.setHtmlWithMetadata=p,t.extractContentMetadata=v},3680:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addSnapshotV2=void 0;var r=n(5892);function o(e,t,n,o,i){o=o||function(e){var t;return(null===(t=e)||void 0===t?void 0:t.length)||0},i=i||a;var l=e.snapshots[e.currentIndex],s=l&&i(l,t);if(e.currentIndex<0||!l||!s){(0,r.default)(e,o),e.snapshots.push(t),e.currentIndex++,e.totalSize+=o(t);for(var u=0;ue.maxSize;)e.totalSize-=o(e.snapshots[u]),u++;u>0&&(e.snapshots.splice(0,u),e.currentIndex-=u,e.autoCompleteIndex-=u),n&&(e.autoCompleteIndex=e.currentIndex)}else s&&e.snapshots.splice(e.currentIndex,1,t)}function i(e,t){return e.html==t.html&&!e.entityStates&&!t.entityStates}function a(e,t){return e==t}t.default=o,t.addSnapshotV2=function(e,t,n){o(e,t,n,(function(e){var t;return(null===(t=e.html)||void 0===t?void 0:t.length)||0}),i)}},3205:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.currentIndex+t;return n>=0&&n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e.autoCompleteIndex>=0&&e.currentIndex-e.autoCompleteIndex==1}},5892:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearProceedingSnapshotsV2=void 0;var r=n(3205);function o(e,t){if(t=t||function(e){var t;return(null===(t=e)||void 0===t?void 0:t.length)||0},(0,r.default)(e,1)){for(var n=0,o=e.currentIndex+1;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return{snapshots:[],totalSize:0,currentIndex:-1,autoCompleteIndex:-1,maxSize:e}}},5105:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.moveCurrentSnapsnot=void 0;var r=n(3205);function o(e,t){return(0,r.default)(e,t)?(e.currentIndex+=t,e.autoCompleteIndex=-1,e.snapshots[e.currentIndex]):null}t.default=o,t.moveCurrentSnapsnot=o},359:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t={};return((null==e?void 0:e.getAttribute("style"))||"").split(";").forEach((function(e){var n=e.indexOf(":"),r=e.slice(0,n),o=e.slice(n+1);r&&o&&(t[r.trim()]=o.trim())})),t}},4136:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n,r=e.getElementById(t);r&&(null===(n=r.parentNode)||void 0===n||n.removeChild(r))}},9130:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(359),o=n(6092);t.default=function(e,t){var n=(0,r.default)(e),i=0;t.forEach((function(e){var t;if((null===(t=n[e])||void 0===t?void 0:t.indexOf("!important"))>-1){var r=n[e].indexOf("!");n[e]=n[e].substring(0,r),i++}})),i>0&&(0,o.default)(e,n)}},8182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;if(t){var o=e.getElementById(n);o||((o=e.createElement("style")).id=n,e.head.appendChild(o)),null===(r=o.sheet)||void 0===r||r.insertRule(t)}}},6092:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4709);t.default=function(e,t){if(e){var n=(0,r.default)(t||{}).map((function(e){var n=t[e],r=e?e.trim():null,o=n?n.trim():null;return r&&o?r+":"+o:null})).filter((function(e){return e})).join(";");n?e.setAttribute("style",n):e.removeAttribute("style")}}},8094:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6160),i=n(3408),a=n(1473),l=n(5203),s=n(5924),u=n(8375),d=n(3606),c=n(4711),f=n(7570),p={topBorderColor:"#ABABAB",bottomBorderColor:"#ABABAB",verticalBorderColor:"#ABABAB",hasHeaderRow:!1,hasFirstColumn:!1,hasBandedRows:!1,hasBandedColumns:!1,bgColorEven:null,bgColorOdd:"#ABABAB20",headerRowColor:"#ABABAB",tableBorderFormat:0,keepCellShade:!1,verticalAlign:null},v=function(){function e(e,t,n){var r=this;if(this.cells=null,this.formatInfo=null,this.trs=[],this.tableSelection=null,this.table=(0,s.default)(e,"HTMLTableElement")?e:function(e){for(var t=e;t&&"TABLE"!=t.tagName;t=t.parentElement);return t}(e),this.table){var o=(0,s.default)(e,"HTMLTableElement")?null:e,i=(0,u.default)(this.table.rows);this.cells=i.map((function(e){return[]})),i.forEach((function(e,t){var n;r.trs[t%2]=e;for(var i=0,a=0;i0,spanAbove:u>0,width:d?c.width:void 0,height:d?c.height:void 0})}}for(var f=0;f1)for(var t=1;t1&&o.spanAbove&&(o.td=t.td)}))},E=this,C=a;C<=l;C++)b(C);var S=this.selection?this.selection.lastCell.y-this.selection.firstCell.y:0;this.cells.splice(a,S+1),0===this.cells.length&&(this.cells=null);break;case 5:for(var T=0,P=function(e){_.forEachCellOfColumn(e,(function(t,n,o){var i=r.getCell(o,e+1);t.td&&t.td.colSpan>1&&i.spanLeft&&(i.td=t.td);var a=r.selection?e-T:r.col;n.splice(a,1)})),T++},_=this,w=s;w<=u;w++)P(w);(0===(null===(t=this.cells)||void 0===t?void 0:t.length)||(null===(n=this.cells)||void 0===n?void 0:n.every((function(e){return 0===e.length}))))&&(this.cells=null);break;case 7:case 8:var O=7==e?-1:1;for(C=this.row+O;C>=0&&C=0&&w1)this.getCell(this.row+1,this.col).td=m(i.td);else{var k=o.map((function(e){return{td:e==i?m(e.td):null,spanAbove:e!=i,spanLeft:e.spanLeft}}));this.cells.splice(this.row+1,0,k)}break;case 12:i.td&&i.td.colSpan>1?this.getCell(this.row,this.col+1).td=m(i.td):this.forEachCellOfCurrentColumn((function(e,t){t.splice(r.col+1,0,{td:t==o?m(e.td):null,spanAbove:e.spanAbove,spanLeft:t!=o})}));break;case 14:this.table.style.marginLeft="auto",this.table.style.marginRight="auto";break;case 15:this.table.style.marginLeft="",this.table.style.marginRight="auto";break;case 16:this.table.style.marginLeft="auto",this.table.style.marginRight="";break;case 18:this.setAlignmentToSelectedCells(a,l,s,u,"center");break;case 17:this.setAlignmentToSelectedCells(a,l,s,u,"left");break;case 19:this.setAlignmentToSelectedCells(a,l,s,u,"right");break;case 20:this.setAlignmentToSelectedCells(a,l,s,u,"top",!0);break;case 21:this.setAlignmentToSelectedCells(a,l,s,u,"middle",!0);break;case 22:this.setAlignmentToSelectedCells(a,l,s,u,"bottom",!0)}}},e.prototype.setAlignmentToSelectedCells=function(e,t,n,o,i,a){for(var l,s,u=e;u<=t;u++)for(var c=n;c<=o;c++)if(this.cells){var f=this.cells[u][c].td;if(a&&f){null===(l=f.style)||void 0===l||l.setProperty("vertical-align",i);var p=(0,d.getTableCellMetadata)(f);(0,d.saveTableCellMetadata)(f,(0,r.__assign)((0,r.__assign)({},p),{vAlignOverride:!0}))}else f&&(null===(s=f.style)||void 0===s||s.setProperty("text-align",i))}},e.prototype.mergeCells=function(e,t,n){var r,o,i,a,l=n?(null===(r=e.td)||void 0===r?void 0:r.rowSpan)===(null===(o=t.td)||void 0===o?void 0:o.rowSpan)&&!e.spanLeft:(null===(i=e.td)||void 0===i?void 0:i.colSpan)===(null===(a=t.td)||void 0===a?void 0:a.colSpan)&&!e.spanAbove;e.td&&t.td&&l&&(this.mergeCellContents(e.td,t.td),t.td=null,n?t.spanLeft=!0:t.spanAbove=!0)},e.prototype.isEmptyCell=function(e){return 1===e.childElementCount&&"BR"===(0,i.default)(e.firstChild)},e.prototype.mergeCellContents=function(e,t){if(this.isEmptyCell(t))(0,a.default)(e,t,!1);else{var n=document.createElement("br");e.appendChild(n),(0,a.default)(e,t,!0)}},e.prototype.forEachCellOfCurrentColumn=function(e){this.forEachCellOfColumn(this.col,e)},e.prototype.getCellsWithBorder=function(e,t){for(var n=[],r=0;this.cells&&r=0&&t>=0;){var n=this.getCell(e,t);if(n.td)return n.td;if(n.spanLeft)t--;else{if(!n.spanAbove)break;e--}}return null},e.prototype.forEachCellOfColumn=function(e,t){if(void 0!==e)for(var n=0;this.cells&&n{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4984),o=n(7727),i=n(3606),a="transparent";function l(e){var t;return!!e.td&&!!(null===(t=(0,i.getTableCellMetadata)(e.td))||void 0===t?void 0:t.bgColorOverride)}function s(e){return"solid 1px "+(e||"transparent")}t.default=function(e,t,n,u){n&&(e.style.borderCollapse="collapse",function(e,t){e.forEach((function(n,r){n.forEach((function(o,i){o.td&&function(e,t,n,r,o,i){switch(function(e,t){e.style.borderTop=s(t.topBorderColor),e.style.borderLeft=s(t.verticalBorderColor),e.style.borderRight=s(t.verticalBorderColor),e.style.borderBottom=s(t.bottomBorderColor)}(t,e),e.tableBorderFormat){case 0:return;case 1:o||(t.style.borderLeftColor=a),i||(t.style.borderRightColor=a);break;case 4:n||(t.style.borderTopColor=a),r||n||(t.style.borderBottomColor=a),o||(t.style.borderLeftColor=a),i||o||(t.style.borderRightColor=a),o&&n&&(t.style.borderRightColor=a);break;case 2:n&&(t.style.borderTopColor=a,t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderLeftColor=a),i&&(t.style.borderRightColor=a);break;case 3:o&&(t.style.borderLeftColor=a),i&&(t.style.borderRightColor=a);break;case 5:n&&(t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderBottomColor=a,t.style.borderTopColor=a),n&&o&&(t.style.borderLeftColor=e.verticalBorderColor||a,t.style.borderBottomColor=e.bottomBorderColor||a,t.style.borderTopColor=e.topBorderColor||a);break;case 6:n&&(t.style.borderRightColor=a,t.style.borderLeftColor=a),o&&(t.style.borderBottomColor=a,t.style.borderTopColor=a),n&&o&&(t.style.borderLeftColor=e.verticalBorderColor||a,t.style.borderBottomColor=e.bottomBorderColor||a,t.style.borderTopColor=e.topBorderColor||a),n||o||(t.style.borderLeftColor=a,t.style.borderBottomColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a);break;case 7:n&&(t.style.borderLeftColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a),o&&(t.style.borderLeftColor=a,t.style.borderTopColor=a,t.style.borderBottomColor=a),n||o||(t.style.borderLeftColor=a,t.style.borderBottomColor=a,t.style.borderTopColor=a,t.style.borderRightColor=a),n&&o&&(t.style.borderBottomColor=e.bottomBorderColor||a)}}(t,o.td,0===r,r===e.length-1,0===i,i===n.length-1)}))}))}(t,n),function(e,t,n){var r=function(e){return e%2==0?t.bgColorEven:t.bgColorOdd},s=t.hasBandedRows,u=t.hasBandedColumns,d=t.bgColorOdd,c=t.bgColorEven,f=!s&&d===c;e.forEach((function(e,u){e.forEach((function(e){if(e.td){if(!l(e))if(s){var d=r(u);(0,o.default)(e.td,d||a,!0,void 0,!0,n)}else f?(0,o.default)(e.td,t.bgColorOdd||a,!0,void 0,!0,n):(0,o.default)(e.td,a,!0,void 0,!0,n);t.verticalAlign&&!function(e){var t;return!!e.td&&!!(null===(t=(0,i.getTableCellMetadata)(e.td))||void 0===t?void 0:t.vAlignOverride)}(e)&&(e.td.style.verticalAlign=t.verticalAlign)}}))})),u&&e.forEach((function(e){e.forEach((function(e,t){var i=r(t);e.td&&i&&!l(e)&&(0,o.default)(e.td,i,!0,void 0,!0,n)}))}))}(t,n,u),function(e,t){t.hasFirstColumn?e.forEach((function(t,n){t.forEach((function(t,i){t.td&&0===i&&(0===n||l(t)||(t.td.style.borderTopColor=a,(0,o.default)(t.td,a,!0,void 0,!0)),n!==e.length-1&&0!==n&&(t.td.style.borderBottomColor=a),t.td=(0,r.default)(t.td,"TH"),t.td.scope="col")}))})):e.forEach((function(e){e.forEach((function(e,t){e.td&&0===t&&(e.td=(0,r.default)(e.td,"TD"),e.td.scope="")}))}))}(t,n),function(e,t,n){var i,a;t.hasHeaderRow?null===(a=e[0])||void 0===a||a.forEach((function(e){e.td&&t.headerRowColor&&(l(e)||(0,o.default)(e.td,t.headerRowColor,!0,void 0,!0,n),e.td.style.borderRightColor=t.headerRowColor,e.td.style.borderLeftColor=t.headerRowColor,e.td.style.borderTopColor=t.headerRowColor,e.td=(0,r.default)(e.td,"TH"),e.td.scope="row")})):null===(i=e[0])||void 0===i||i.forEach((function(e){e.td&&(e.td=(0,r.default)(e.td,"TD"),e.td.scope="")}))}(t,n,u))}},7146:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(3606);t.default=function(e,t){var n=t.getAttribute("style");if(n){e.setAttribute("style",n);var i=(0,o.getTableCellMetadata)(t);i&&(0,o.saveTableCellMetadata)(e,(0,r.__assign)({},i))}}},8570:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!t||!e.cells)return!1;var n=t.firstCell,r=t.lastCell,o=e.cells.length-1,i=e.cells[o];if(!i)return!1;var a=i.length-1,l=n.x,s=n.y,u=r.x,d=r.y;return 0==l&&0==s&&u==a&&d==o}},4731:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7146),o=n(1473),i=n(8094);t.default=function(e,t,n,a){var l,s,u,d,c=new i.default(t),f=new i.default(e),p=f.row,v=f.col,h=null!==(s=p+(null===(l=c.cells)||void 0===l?void 0:l.length))&&void 0!==s?s:0,g=null!==(d=v+(null===(u=c.cells)||void 0===u?void 0:u[0].length))&&void 0!==d?d:0;for(f.row=f.cells.length-1;f.cells.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.saveTableCellMetadata=t.getTableCellMetadata=void 0;var r=n(681),o=n(7570),i=(0,r.createBooleanDefinition)(!0,void 0,!0),a=(0,r.createObjectDefinition)({bgColorOverride:i,vAlignOverride:i},!1,!0);t.getTableCellMetadata=function(e){return(0,o.getMetadata)(e,a)},t.saveTableCellMetadata=function(e,t){e&&t&&(0,o.setMetadata)(e,t,a)}},4711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.saveTableInfo=t.getTableFormatInfo=void 0;var r=n(7570),o=n(681),i=(0,o.createStringDefinition)(!1,void 0,!0),a=(0,o.createBooleanDefinition)(!1),l=(0,o.createObjectDefinition)({topBorderColor:i,bottomBorderColor:i,verticalBorderColor:i,hasHeaderRow:a,headerRowColor:i,hasFirstColumn:a,hasBandedColumns:a,hasBandedRows:a,bgColorEven:i,bgColorOdd:i,tableBorderFormat:(0,o.createNumberDefinition)(!1,void 0,0,8),keepCellShade:(0,o.createBooleanDefinition)(!0),verticalAlign:i},!1,!0);t.getTableFormatInfo=function(e){return(0,r.getMetadata)(e,l)},t.saveTableInfo=function(e,t){e&&t&&(0,r.setMetadata)(e,t,l)}},246:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Browser=t.getBrowserInfo=void 0;var n=/android/i;function r(e,t,r){var o,i=-1!=e.indexOf("rv:")&&-1!=e.indexOf("Trident"),a=-1!=e.indexOf("MSIE")||i,l=!1,s=!1,u=!1,d=!1,c=-1!=e.indexOf("WebKit"),f=!1;return(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(o=e||r||"")||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(o.substr(0,4)))&&(f=!0),a||(l=-1!=e.indexOf("Chrome"),s=-1!=e.indexOf("Firefox"),-1!=e.indexOf("Safari")&&(u=-1==e.indexOf("Chrome")&&-1==e.indexOf("Android")),(d=-1!=e.indexOf("Edge"))&&(c=l=s=!1)),{isMac:-1!=t.indexOf("Mac"),isWin:-1!=t.indexOf("Win")||-1!=t.indexOf("NT"),isWebKit:c,isIE:a,isIE11OrGreater:i,isSafari:u,isChrome:l,isFirefox:s,isEdge:d,isIEOrEdge:a||d,isAndroid:n.test(e),isMobileOrTablet:f}}t.getBrowserInfo=r,t.Browser="undefined"!=typeof window&&window?r(window.navigator.userAgent,window.navigator.appVersion,window.navigator.vendor):{}},5400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7727);t.default=function(e,t,n,o){if(t){var i=e.style,a=t.fontFamily,l=t.fontSize,s=t.textColor,u=t.textColors,d=t.backgroundColor,c=t.backgroundColors,f=t.bold,p=t.italic,v=t.underline;a&&(i.fontFamily=a),l&&(i.fontSize=l),u?(0,r.default)(e,u,!1,n,!1,o):s&&(0,r.default)(e,s,!1,n,!1,o),c?(0,r.default)(e,c,!0,n,!1,o):d&&(0,r.default)(e,d,!0,n,!1,o),f&&(i.fontWeight="bold"),p&&(i.fontStyle="italic"),v&&(i.textDecoration="underline")}}},4984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(7695),i=n(3408),a=n(1473);t.default=function(e,t){var n;if(!e||!t)return null;var l=(0,i.default)(e);if(l==t.toUpperCase())return e;for(var s=e.ownerDocument.createElement(t),u=0;u{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.collapse=void 0;var r=n(8655),o=n(9381),i=n(8375);function a(e,t,n,i,a){for(;t.parentNode!=e&&!(0,r.default)(t.parentNode,n);){if(i&&t.previousSibling||!i&&t.nextSibling){if(!a)break;(0,o.default)(t,i)}if(!t.parentNode)break;t=t.parentNode}return t}t.default=function(e,t,n,o){var l;if(!(0,r.default)(e,t)||!(0,r.default)(e,n))return[];if(t=a(e,t,n,!0,o),n=a(e,n,t,!1,o),(0,r.default)(t,n,!0))return[t];if((0,r.default)(n,t))return[n];if(t.parentNode==n.parentNode){var s=t.parentNode?(0,i.default)(null===(l=t.parentNode)||void 0===l?void 0:l.childNodes):[],u=s.indexOf(t),d=s.indexOf(n);return s.slice(u,d+1)}return[t,n]},t.collapse=a},8655:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e,t,n){return!(!e||!t)&&(!(!n||e!=t)||((0,r.default)(t,"Range")&&(t=t&&t.commonAncestorContainer,n=!0),t&&3==t.nodeType&&(t=t.parentNode,n=!0),1!=e.nodeType&&11!=e.nodeType?!!n&&e==t:!(!n&&e==t)&&function(e,t){if(e.contains)return e.contains(t);for(;t;){if(t==e)return!0;t=t.parentNode}return!1}(e,t)))}},6935:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownCreateElementData=void 0;var o=n(4709),i=n(5924),a=n(246);t.KnownCreateElementData=((r={})[0]={tag:""},r[1]=a.Browser.isEdge?{tag:"div",children:[{tag:"span",children:[{tag:"br"}]}]}:{tag:"div",children:[{tag:"br"}]},r[2]={tag:"blockquote",style:"margin-top:0;margin-bottom:0"},r[3]={tag:"div",style:"width: 600px; height: 1px; overflow: hidden; position: fixed; top: 0; left; 0; -webkit-user-select: text",attributes:{contenteditable:"true"}},r[4]={tag:"li",style:"display:block"},r[5]={tag:"div",style:"position: fixed; width: 0; height: 0"},r[6]={tag:"span",style:"max-width:100%;position:relative",children:[{tag:"div",style:"width:100%;height:100%;position:relative;overflow:hidden"}]},r[7]={tag:"div",style:"position: fixed; cursor: row-resize; user-select: none"},r[8]={tag:"div",style:"position: fixed; cursor: col-resize; user-select: none"},r[9]={tag:"div",style:"position: fixed; cursor: nw-resize; user-select: none; border: 1px solid #808080"},r[10]={tag:"div",style:"position: fixed; cursor: ne-resize; user-select: none; border: 1px solid #808080"},r[11]={tag:"div",style:"position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080"},r[12]={tag:"div",children:[{tag:"span",children:[{tag:"br"}]}]},r),t.default=function e(n,r){if("number"==typeof n&&(n=t.KnownCreateElementData[n]),!n||!n.tag)return null;var a=n.tag,l=n.namespace,s=n.className,u=n.style,d=n.dataset,c=n.attributes,f=n.children,p=l?r.createElementNS(l,a):r.createElement(a);return u&&p.setAttribute("style",u),s&&(p.className=s),d&&(0,i.default)(p,"HTMLElement")&&(0,o.default)(d).forEach((function(e){p.dataset[e]=d[e]})),c&&(0,o.default)(c).forEach((function(e){p.setAttribute(e,c[e])})),f&&f.forEach((function(t){if("string"==typeof t)p.appendChild(r.createTextNode(t));else if(t){var n=e(t,r);n&&p.appendChild(n)}})),p}},3598:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8655),o=n(5010);t.default=function(e,t,n){var i=(e=e?1==e.nodeType?e:e.parentNode:null)&&1==e.nodeType?e:null;if(i&&n)if(i.closest)i=i.closest(n);else for(;i&&i!=t&&!(0,o.default)(i,n);)i=i.parentElement;return!t||(0,r.default)(t,i)?i:null}},5023:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8375);t.default=function(e,t){var n=t.createElement("DIV");return n.innerHTML=e,(0,r.default)(n.childNodes)}},7695:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getComputedStyle=void 0;var r=n(7582),o=n(3598);function i(e,t){var n,i;void 0===t&&(t=["font-family","font-size","color","background-color"]);var a,l=(0,o.default)(e),s=[];if(t=Array.isArray(t)?t:[t],l){var u=(l.ownerDocument.defaultView||window).getComputedStyle(l);if(u)try{for(var d=(0,r.__values)(t),c=d.next();!c.done;c=d.next()){var f=c.value,p=u.getPropertyValue(f)||"";p="font-family"!=f?p.toLowerCase():p,p="font-size"==f?(a=p)&&a.indexOf("px")==a.length-2?Math.round(75*parseFloat(a)+.05)/100+"pt":a:p,s.push(p)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}}return s}t.default=i,t.getComputedStyle=function(e,t){return i(e,t)[0]||""}},4746:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e){if((0,r.default)(e,"HTMLElement"))return e.innerHTML;if(e){var t=e.ownerDocument.createElement("span");return t.appendChild(e.cloneNode(!0)),t.innerHTML}return""}},3798:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(5203);t.default=function(e,t){void 0===t&&(t=[]);var n=e.map((function(e){return(0,o.default)(e.getBoundingClientRect())})).concat(t).filter((function(e){return!!e})),i={top:Math.max.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.top}))),!1)),bottom:Math.min.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.bottom}))),!1)),left:Math.max.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.left}))),!1)),right:Math.min.apply(Math,(0,r.__spreadArray)([],(0,r.__read)(n.map((function(e){return e.right}))),!1))};return i.top{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLastLeafNode=t.getFirstLeafNode=void 0;var r=n(1630),o=n(2513);function i(e,t){for(var n=function(e){return t?e.firstChild:e.lastChild},i=n(e);i&&n(i);)i=n(i);return i&&(0,r.default)(i)&&(i=(0,o.getLeafSibling)(e,i,t)),i}t.getFirstLeafNode=function(e){return i(e,!0)},t.getLastLeafNode=function(e){return i(e,!1)}},2513:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPreviousLeafSibling=t.getNextLeafSibling=t.getLeafSibling=void 0;var r=n(8655),o=n(3408),i=n(1630);function a(e,t,n,a,l){var s=null,u=n?function(e){return(null==e?void 0:e.nextSibling)||null}:function(e){return(null==e?void 0:e.previousSibling)||null},d=n?function(e){return e.firstChild}:function(e){return e.lastChild};if((0,r.default)(e,t))for(var c=t,f=!0;f;){var p=(null==c?void 0:c.parentNode)||null;for(c=u(c);!c&&p!=e;)c=u(p),p=(null==p?void 0:p.parentNode)||null;for(;c&&(!a||a.indexOf((0,o.default)(c))<0)&&d(c);)c=d(c);if(!(f=!!c&&(0,i.default)(c,l))){s=c;break}}return s}t.getLeafSibling=a,t.getNextLeafSibling=function(e,t,n){return a(e,t,!0,n)},t.getPreviousLeafSibling=function(e,t,n){return a(e,t,!1,n)}},3764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PendableFormatCommandMap=void 0;var r=n(4709);t.PendableFormatCommandMap={isBold:"bold",isItalic:"italic",isUnderline:"underline",isStrikeThrough:"strikeThrough",isSubscript:"subscript",isSuperscript:"superscript"},t.default=function(e){return(0,r.default)(t.PendableFormatCommandMap).reduce((function(n,r){return n[r]=e.queryCommandState(t.PendableFormatCommandMap[r]),n}),{})}},3408:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e&&1==e.nodeType?e.tagName.toUpperCase():""}},5499:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o="ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CANVAS,DD,DIV,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HR,LI,MAIN,NAV,NOSCRIPT,OL,OUTPUT,P,PRE,SECTION,TABLE,TD,TH,TFOOT,UL,VIDEO".split(","),i=["block","list-item","table-cell"];t.default=function(e){var t=(0,r.default)(e);return!(!t||!(i.indexOf(e.style.display)>=0||o.indexOf(t)>=0))}},6997:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return!(!e||!t||4!=(4&t.compareDocumentPosition(e)))}},1657:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=["IMG"],i=["TABLE","IMG","LI"].join(","),a=/\u200b/g;function l(e,t){return e=e.replace(a,""),t?e.trim():e}t.default=function(e,t,n){if(!e)return!1;if(3==e.nodeType)return""==l(e.nodeValue||"",t);if(1==e.nodeType){var a=e,s=l(a.textContent||"",t),u=n?i+",BR":i;if(""!=s||o.indexOf((0,r.default)(a))>=0||a.querySelectorAll(u)[0])return!1}return!0}},8235:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o="AREA,BASE,BR,COL,COMMAND,EMBED,HR,IMG,INPUT,KEYGEN,LINK,META,PARAM,SOURCE,TRACK,WBR".split(",");t.default=function(e){return!!e&&o.indexOf((0,r.default)(e))>=0}},844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4709),i=/^[^?]+%[^0-9a-f]+|^[^?]+%[0-9a-f][^0-9a-f]+|^[^?]+%00|^[^?]+%$|^https?:\/\/[^?\/]+@|^www\.[^?\/]+@/i,a="[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",l="(?:"+a+"\\.)*"+a+"(?:\\:[0-9]+)?(?:[\\/\\?]\\S*)?",s={http:{match:new RegExp("^(?:microsoft-edge:)?http:\\/\\/"+l+"|www\\."+l,"i"),except:i,normalizeUrl:function(e){return new RegExp("^(?:microsoft-edge:)?http:\\/\\/","i").test(e)?e:"http://"+e}},https:{match:new RegExp("^(?:microsoft-edge:)?https:\\/\\/"+l,"i"),except:i},mailto:{match:new RegExp("^mailto:\\S+@\\S+\\.\\S+","i")},notes:{match:new RegExp("^notes:\\/\\/\\S+","i")},file:{match:new RegExp("^file:\\/\\/\\/?\\S+","i")},unc:{match:new RegExp("^\\\\\\\\\\S+","i")},ftp:{match:new RegExp("^ftp:\\/\\/"+l+"|ftp\\."+l,"i"),normalizeUrl:function(e){return new RegExp("^ftp:\\/\\/","i").test(e)?e:"ftp://"+e}},news:{match:new RegExp("^news:(\\/\\/)?"+l,"i")},telnet:{match:new RegExp("^telnet:(\\/\\/)?"+l,"i")},gopher:{match:new RegExp("^gopher:\\/\\/"+l,"i")},wais:{match:new RegExp("^wais:(\\/\\/)?"+l,"i")}};t.default=function(e){var t,n;if(e)try{for(var i=(0,r.__values)((0,o.default)(s)),a=i.next();!a.done;a=i.next()){var l=a.value,u=s[l],d=e.match(u.match);if(d&&d[0]==e&&(!u.except||!u.except.test(e)))return{scheme:l,originalUrl:e,normalizedUrl:u.normalizeUrl?u.normalizeUrl(e):e}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return null}},5010:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5924);t.default=function(e,t){return(0,r.default)(e,"HTMLElement")&&(e.matches||e.msMatchesSelector).call(e,t)}},1473:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){if(e){for(;!n&&e.firstChild;)e.removeChild(e.firstChild);for(;null==t?void 0:t.firstChild;)e.appendChild(t.firstChild)}}},5203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e||{left:0,right:0,top:0,bottom:0},n=t.left,r=t.right,o=t.top,i=t.bottom;return 0===n&&0===r&&0===o&&0===i?null:{left:Math.round(n),right:Math.round(r),top:Math.round(o),bottom:Math.round(i)}}},8121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=/^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,r=/^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,o=/^rgb\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*\)$/,i=/^rgba\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*\)$/;t.default=function(e){var t;return(t=(e=(e||"").trim()).match(n))?[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]:(t=e.match(r))?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:(t=e.match(o)||e.match(i))?[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]:null}},8471:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8375);function o(e,t){return t.some((function(t){return 0==t?0==e:(e&t)==t}))}t.default=function(e,t,n,i,a){if(void 0===i&&(i=0),!e||!t)return[];var l=(0,r.default)(e.querySelectorAll(t));if(0!=i&&a){var s=a.startContainer,u=a.startOffset,d=a.endContainer,c=a.endOffset;if(1==s.nodeType&&s.firstChild){var f=s.childNodes[u];s=f||s.lastChild}d=1==d.nodeType&&d.firstChild&&c>0?d.childNodes[c-1]:d,l=l.filter((function(e){return n=s,r=d,a=2==i,l=(t=e).compareDocumentPosition(n),u=t.compareDocumentPosition(r),c=[0,8],a||c.push(16),o(l,c)||o(u,c)||o(l,[2])&&o(u,[4])&&!o(u,[16]);var t,n,r,a,l,u,c}))}return n&&l.forEach(n),l}},3126:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e){var n=new FileReader;n.onload=function(){t(n.result)},n.onerror=function(){t(null)},n.readAsDataURL(e)}}},5924:(e,t)=>{"use strict";function n(e){var t=e&&(e.ownerDocument||("[object HTMLDocument]"==Object.prototype.toString.apply(e)?e:null));return t&&(t.defaultView||window)}Object.defineProperty(t,"__esModule",{value:!0}),t.getTargetWindow=void 0,t.getTargetWindow=n,t.default=function(e,t){var r;if("Range"==t)return"[object Range]"==Object.prototype.toString.apply(e)&&!!(null===(r=e)||void 0===r?void 0:r.commonAncestorContainer);var o=n(e),i=o&&o[t],a=window,l=a&&a[t];return l&&e instanceof l||i&&e instanceof i}},7727:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(8121),i="#ffffff";!function(e){e[e.BRIGHT=0]="BRIGHT",e[e.DARK=1]="DARK",e[e.NONE=2]="NONE"}(r||(r={}));t.default=function e(t,n,r,a,l,s){var u="string"==typeof n?n.trim():"",d="string"==typeof n?null:n,c=r?"background-color":"color";if(u||d){if(s){var f=s.registerColor((null==d?void 0:d.lightModeColor)||u,!!a,null==d?void 0:d.darkModeColor);t.style.setProperty(c,f)}r&&l&&function(t,n,r,a){if(n&&"transparent"!==n)switch(function(e){var t=function(e){var t=(0,o.default)(e);if(t){var n=t[0]/255,r=t[1]/255,i=t[2]/255;return 50*(Math.max(n,r,i)+Math.min(n,r,i))}return 255}(e);return t<20?1:t>80?0:2}(n)){case 1:e(t,{lightModeColor:i,darkModeColor:"#333333"},!1,r,!1,a);break;case 0:e(t,{lightModeColor:"#000000",darkModeColor:i},!1,r,!1,a)}}(t,(null==d?void 0:d.lightModeColor)||u,a,s)}}},1630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3408),o=n(7695),i=/^[\r\n]+$/g,a=/[\t\r\n\u0020\u200B]/gm;t.default=function e(t,n){if(3==t.nodeType)return!(t.nodeValue&&""!=t.textContent&&!i.test(t.nodeValue)&&(!n||""!=t.nodeValue.replace(a,"")));if(1==t.nodeType){if("none"==(0,o.getComputedStyle)(t,"display"))return!0;var l=(0,r.default)(t);if("DIV"==l||"SPAN"==l){for(var s=t.firstChild;s;s=s.nextSibling)if(!e(s,n))return!1;return!0}return!1}return!0}},9381:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.splitBalancedNodeRange=void 0;var r=n(6997);function o(e,t){var n;if(!e||!e.parentNode)return null;var r=e.parentNode,o=r.cloneNode(!1);if(o.removeAttribute("id"),t)for(;r.firstChild&&r.firstChild!=e;)o.appendChild(r.firstChild);else for(;e.nextSibling;)o.appendChild(e.nextSibling);return o.firstChild&&""!=o.innerHTML?null===(n=r.parentNode)||void 0===n||n.insertBefore(o,t?r:r.nextSibling):o=null,o}t.default=o,t.splitBalancedNodeRange=function(e){var t=Array.isArray(e)?e[0]:e,n=Array.isArray(e)?e[e.length-1]:e,i=t&&n&&t.parentNode==n.parentNode?t.parentNode:null;if(i){if((0,r.default)(t,n)){var a=n;n=t,t=a}o(t,!0),o(n,!1)}return i}},7409:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r,o,i,a=(null===(r=e.nodeValue)||void 0===r?void 0:r.substring(0,t))||"",l=(null===(o=e.nodeValue)||void 0===o?void 0:o.substring(t))||"",s=e.ownerDocument.createTextNode(n?a:l);return e.nodeValue=n?l:a,null===(i=e.parentNode)||void 0===i||i.insertBefore(s,n?e:e.nextSibling),s}},82:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e?e.parentNode:null;if(!t)return null;for(;e.firstChild;)t.insertBefore(e.firstChild,e);return t.removeChild(e),t}},4251:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6935),i=n(5023),a=n(5924);t.default=function(e,t){var n,l;if(0==(e=e?(0,a.default)(e,"Node")?[e]:e:[]).length||!e[0]||!e[0].ownerDocument)return null;if(t||(t="div"),!(0,a.default)(t,"HTMLElement")){var s=e[0].ownerDocument;t="string"==typeof t?/^\w+$/.test(t)?s.createElement(t):(0,i.default)(t,s)[0]:(0,o.default)(t,s)}var u=e[0].parentNode;u&&u.insertBefore(t,e[0]);try{for(var d=(0,r.__values)(e),c=d.next();!c.done;c=d.next()){var f=c.value;t.appendChild(f)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(l=d.return)&&l.call(d)}finally{if(n)throw n.error}}return t}},4730:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(3381),t)},1184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9025),t)},8801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(936),t)},4165:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7030),t)},3106:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(8854),t)},7099:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(5061),t)},9082:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(872),t)},2151:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9835),t)},3775:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(2184),t)},941:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(8833),t)},7037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7311),t)},2125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(9963),t)},7019:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(2939),t)},4739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(1184),t),(0,r.__exportStar)(n(8801),t),(0,r.__exportStar)(n(4165),t),(0,r.__exportStar)(n(3106),t),(0,r.__exportStar)(n(7099),t),(0,r.__exportStar)(n(9082),t),(0,r.__exportStar)(n(2151),t),(0,r.__exportStar)(n(3775),t),(0,r.__exportStar)(n(941),t),(0,r.__exportStar)(n(2125),t),(0,r.__exportStar)(n(7019),t),(0,r.__exportStar)(n(7037),t),(0,r.__exportStar)(n(4730),t)},4296:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(6344),i={MOUSEDOWN:"mousedown",MOUSEMOVE:"mousemove",MOUSEUP:"mouseup",getPageXY:function(e){return[e.pageX,e.pageY]}},a={MOUSEDOWN:"touchstart",MOUSEMOVE:"touchmove",MOUSEUP:"touchend",getPageXY:function(e){var t=0,n=0;if(e.targetTouches&&e.targetTouches.length>0){var r=e.targetTouches[0];t=r.pageX,n=r.pageY}return[t,n]}};var l=function(){function e(e,t,n,l,s,u){var d=this;this.trigger=e,this.context=t,this.onSubmit=n,this.handler=l,this.zoomScale=s,this.initX=0,this.initY=0,this.initValue=void 0,this.onMouseDown=function(e){var t,n,o;e.preventDefault(),e.stopPropagation(),d.addDocumentEvents(),t=(0,r.__read)(d.dndMouse.getPageXY(e),2),d.initX=t[0],d.initY=t[1],d.initValue=null===(o=(n=d.handler).onDragStart)||void 0===o?void 0:o.call(n,d.context,e)},this.onMouseMove=function(e){var t,n,o;e.preventDefault();var i=(0,r.__read)(d.dndMouse.getPageXY(e),2),a=i[0],l=i[1],s=(a-d.initX)/d.zoomScale,u=(l-d.initY)/d.zoomScale;d.initValue&&(null===(n=(t=d.handler).onDragging)||void 0===n?void 0:n.call(t,d.context,e,d.initValue,s,u))&&(null===(o=d.onSubmit)||void 0===o||o.call(d,d.context,d.trigger))},this.onMouseUp=function(e){var t,n,r;e.preventDefault(),d.removeDocumentEvents(),(null===(n=(t=d.handler).onDragEnd)||void 0===n?void 0:n.call(t,d.context,e,d.initValue))&&(null===(r=d.onSubmit)||void 0===r||r.call(d,d.context,d.trigger))},this.dndMouse=u||o.Browser.isMobileOrTablet?a:i,e.addEventListener(this.dndMouse.MOUSEDOWN,this.onMouseDown)}return e.prototype.dispose=function(){this.trigger.removeEventListener(this.dndMouse.MOUSEDOWN,this.onMouseDown),this.removeDocumentEvents()},Object.defineProperty(e.prototype,"mouseType",{get:function(){return this.dndMouse==a?"touch":"mouse"},enumerable:!1,configurable:!0}),e.prototype.addDocumentEvents=function(){var e=this.trigger.ownerDocument;e.addEventListener(this.dndMouse.MOUSEMOVE,this.onMouseMove,!0),e.addEventListener(this.dndMouse.MOUSEUP,this.onMouseUp,!0)},e.prototype.removeDocumentEvents=function(){var e=this.trigger.ownerDocument;e.removeEventListener(this.dndMouse.MOUSEMOVE,this.onMouseMove,!0),e.removeEventListener(this.dndMouse.MOUSEUP,this.onMouseUp,!0)},e}();t.default=l},3904:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=/[`!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?~]/,r=function(){function e(){this.editor=null,this.lastKeyTyped=null}return e.prototype.getName=function(){return"AutoFormat"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null,this.lastKeyTyped=null},e.prototype.onPluginEvent=function(e){var t=this;if(this.editor&&(7!==e.eventType&&5!==e.eventType&&6!==e.eventType||(this.lastKeyTyped=""),1===e.eventType)){var r=e.rawEvent.key;if(r&&r.length>1&&(this.lastKeyTyped=""),"-"!==this.lastKeyTyped||n.test(r)||" "===r||"-"===r)this.lastKeyTyped=r;else{var o=this.editor.getContentSearcherOfCursor(e),i=null==o?void 0:o.getSubStringBefore(3),a=null==o?void 0:o.getSubStringBefore(2),l="-"===(null==i?void 0:i[0]),s=" "===(null==i?void 0:i[0]);if(l||s||"string"==typeof i&&n.test(i[0])||"--"!==a)return;var u=null==o?void 0:o.getRangeFromText(a,!0),d=document.createTextNode("—");this.editor.addUndoSnapshot((function(){u&&(u.deleteContents(),u.insertNode(d),t.editor.select(d,-1))}),"Format",!0,{formatApiName:"autoHyphen"}),this.lastKeyTyped=null}}},e}();t.default=r},3381:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoFormat=void 0;var r=n(3904);Object.defineProperty(t,"AutoFormat",{enumerable:!0,get:function(){return r.default}})},678:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(692),o=n(6344),i=function(){function e(e,t){this.settingsOverride=e,this.additionalFeatures=t,this.editor=void 0,this.features=[]}return e.prototype.getName=function(){return"ContentEdit"},e.prototype.initialize=function(e){var t=this;this.editor=e;var n=(0,r.default)();(0,o.getObjectKeys)(n).forEach((function(e){var r,o=n[e],i=t.settingsOverride&&void 0!==t.settingsOverride[e];(i&&(null===(r=t.settingsOverride)||void 0===r?void 0:r[e])||!i&&!o.defaultDisabled)&&t.features.push(o)})),this.features=this.features.concat(this.additionalFeatures||[]),this.features.forEach((function(e){var n;return null===(n=t.editor)||void 0===n?void 0:n.addContentEditFeature(e)}))},e.prototype.disposeFeatures=function(){var e=this;this.editor&&this.features.forEach((function(t){return e.editor.removeContentEditFeature(t)})),this.features=[]},e.prototype.dispose=function(){this.disposeFeatures(),this.editor=void 0},e}();t.default=i},7539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoLinkFeatures=void 0;var r=n(4548),o=n(6344),i=/[.+=\s:;"',>]+$/i,a={keys:[13,32,257],shouldHandleEvent:s,handleEvent:function(e,t){var n=s(e,t);if(n){var i=t.getDocument().createElement("a"),a=t.getContentSearcherOfCursor();i.textContent=n.originalUrl,i.href=n.normalizedUrl,t.runAsync((function(t){t.addUndoSnapshot((function(){return(0,r.replaceWithNode)(t,n.originalUrl,i,!1,null!=a?a:void 0),(0,o.clearEventDataCache)(e),i}),"AutoLink",!0)}))}}},l={keys:[8],shouldHandleEvent:function(e,t){var n=t.getContentSearcherOfCursor(e);return(null==n?void 0:n.getInlineElementBefore())instanceof o.LinkInlineElement},handleEvent:function(e,t){e.rawEvent.preventDefault(),(0,r.removeLink)(t)},defaultDisabled:!0};function s(e,t){return 0==e.eventType||7==e.eventType&&"Paste"==e.source?(0,o.cacheGetEventData)(e,"LINK_DATA",(function(){var n=7==e.eventType&&"Paste"==e.source&&e.data||null,r=(0,o.matchLink)(((null==n?void 0:n.text)||"").trim()),a=t.getContentSearcherOfCursor(e);if(r&&(null==a?void 0:a.getRangeFromText(r.originalUrl,!1)))return r;var l=a&&a.getWordBefore();if(l&&l.length>5){var s=(l.match(i)||[])[0]||"",u=l.substring(0,l.length-s.length);return["()","{}","[]"].forEach((function(e){u[u.length-1]==e[1]&&u.indexOf(e[0])<0&&(u=u.substr(0,u.length-1))})),(0,o.matchLink)(u)}return null})):null}t.AutoLinkFeatures={autoLink:a,unlinkWhenBackspaceAfterLink:l}},2056:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeFeatures=void 0;var r=n(6344),o={keys:[13],shouldHandleEvent:function(e,t){var n=a(e,t);return n&&(0,r.isNodeEmpty)(n)},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){l(e,t)}),void 0,!0)}},i={keys:[8],shouldHandleEvent:function(e,t){var n=a(e,t);return n&&(0,r.isNodeEmpty)(n)&&!n.previousSibling},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){return l(e,t)}))}};function a(e,t){return(0,r.cacheGetEventData)(e,"CODE_CHILD",(function(){var e,n=null!==(e=t.getElementAtCursor("code"))&&void 0!==e?e:t.queryElements("code",1)[0];if(n){var o=t.getFocusedPosition(),i=o&&t.getBlockElementAtNode(o.normalize().node);if(i){var a=i.getStartNode()==n.parentNode?i.getStartNode():i.collapseToSingleElement();return(0,r.isNodeEmpty)(a)?a:null}}return null}))}function l(e,t){var n=a(e,t);if((0,r.safeInstanceOf)(n,"HTMLElement")){var o=n.querySelector("code");if(o)(0,r.unwrap)(o);else{var i=(0,r.splitBalancedNodeRange)(n);if(i&&(0,r.unwrap)(i),(0,r.safeInstanceOf)(n.parentElement,"HTMLPreElement")){var l=(0,r.splitBalancedNodeRange)(n);l&&(0,r.unwrap)(l)}}t.select(n,0)}}t.CodeFeatures={removeCodeWhenEnterOnEmptyLine:o,removeCodeWhenBackspaceOnEmptyFirstLine:i}},7167:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CursorFeatures=void 0;var r=n(6344),o={keys:[37,39],allowFunctionKeys:!0,shouldHandleEvent:function(e,t,n){var o,i=null;if(!(n&&(i=t.getSelectionRange())&&i.collapsed&&(o=r.Position.getStart(i))&&t.isPositionAtBeginning(o)))return!1;var a="rtl"==(0,r.getComputedStyle)(o.element,"direction"),l=e.rawEvent;return!a&&37==l.which||a&&39==l.which},handleEvent:function(e){e.rawEvent.preventDefault()},defaultDisabled:!r.Browser.isChrome};t.CursorFeatures={noCycleCursorMove:o}},4397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EntityFeatures=void 0;var r=n(7582),o=n(6344),i=n(6344),a={keys:[13],shouldHandleEvent:function(e,t){return s(e,t)},handleEvent:function(e,t){s(e,t,1)}},l={keys:[27],shouldHandleEvent:function(e,t){return s(e,t)},handleEvent:function(e,t){s(e,t,3)}};function s(e,t,n){var r=(0,i.cacheGetEventData)(e,"READONLY_ENTITY_ELEMENT",(function(){var n=e.rawEvent.target,r=n&&t.getElementAtCursor((0,i.getEntitySelector)(),n);return r&&!r.isContentEditable?r:null}));if(r&&void 0!==n){var o=(0,i.getEntityFromElement)(r);o&&t.triggerPluginEvent(15,{operation:n,rawEvent:e.rawEvent,entity:o})}return r}var u={keys:[13],shouldHandleEvent:function(e,t){return f(e,t,!0,!1)},handleEvent:function(e,t){var n,r,o;e.rawEvent.preventDefault();var a=t.getSelectionRange();if(a){var l=i.Position.getEnd(a).normalize().node,s=t.getDocument().createElement("BR");null===(n=l.parentNode)||void 0===n||n.insertBefore(s,l.nextSibling);var u,d=t.getBlockElementAtNode(l);d&&(u=d.collapseToSingleElement(),null===(r=s.parentNode)||void 0===r||r.removeChild(s)),null===(o=t.getSelectionRange())||void 0===o||o.deleteContents(),(null==u?void 0:u.nextSibling)&&t.select(u.nextSibling,0)}}},d={keys:[8],shouldHandleEvent:function(e,t){return f(e,t,!1,!0)},handleEvent:function(e,t){f(e,t,!1,!0,5)}},c={keys:[46],shouldHandleEvent:function(e,t){return f(e,t,!0,!0)},handleEvent:function(e,t){f(e,t,!0,!0,4)}};function f(e,t,n,r,a){var l=(0,i.cacheGetEventData)(e,"NEIGHBOR_ENTITY_ELEMENT_"+n+"_"+r,(function(){var e,a=t.getSelectionRange();if(!a||r&&!a.collapsed)return null;var l=null===(e=t.getSelectedRegions()[0])||void 0===e?void 0:e.rootNode;a.commonAncestorContainer.normalize();var s=i.Position.getEnd(a).normalize(),u=null;if((0==s.offset||s.isAtEnd)&&l){var d=o.ContentTraverser.createBodyTraverser(l,s.node),c=n?0==s.offset?d.currentInlineElement:d.getNextInlineElement():s.isAtEnd?d.currentInlineElement:d.getPreviousInlineElement(),f=c&&c.getContainerNode();if(!r){var p=t.getBlockElementAtNode(s.node);(!p||f&&!p.contains(f))&&(f=null)}u=f&&t.getElementAtCursor((0,i.getEntitySelector)(),f)}return u}));if(l&&void 0!==a){var s=(0,i.getEntityFromElement)(l);s&&b(s,t,a,e)}return l}var p={keys:[39,37],allowFunctionKeys:!0,shouldHandleEvent:function(e,t){if(e.rawEvent.altKey||!t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))return!1;var n=t.getElementAtCursor();return!!n&&h(e,t,"rtl"===(0,i.getComputedStyle)(n,"direction")==(37===e.rawEvent.which))},handleEvent:function(e,t){var n=E(e),r=m(e,n);if(r){var o=C(r,n,t),a=o.delimiterPair,l=o.entity;a&&l&&(0,i.matchesSelector)(l,(0,i.getEntitySelector)())&&(e.rawEvent.preventDefault(),t.runAsync((function(){var r=n?e.rawEvent.shiftKey?-3:-1:-2,o=new i.Position(a,r);if(e.rawEvent.shiftKey){var l=a.ownerDocument.getSelection();null==l||l.extend(o.node,o.offset)}else t.select(o)})))}}},v={keys:[8,46],shouldHandleEvent:function(e,t){if(!t.isFeatureEnabled("InlineEntityReadOnlyDelimiters"))return!1;var n=t.getSelectionRange();if(!(null==n?void 0:n.collapsed))return!1;var r=46===e.rawEvent.which;if(h(e,t,r)){var o=m(e,r);return!!y(e,t,r,r?null==o?void 0:o.nextElementSibling:null==o?void 0:o.previousElementSibling)}return!1},handleEvent:function(e,t){var n=46===e.rawEvent.which;y(e,t,n,null,n?4:5)}};function h(e,t,n){var r,o=null===(r=t.getFocusedPosition())||void 0===r?void 0:r.normalize();if(E(e,n),!o)return!1;var i=3==o.node.nodeType?o.node:o.node==o.element?o.element.childNodes.item(o.offset):o.element,a=n?{class:"entityDelimiterBefore",pairClass:"entityDelimiterAfter",isAtEndOrBeginning:o.isAtEnd}:{class:"entityDelimiterAfter",pairClass:"entityDelimiterBefore",isAtEndOrBeginning:0==o.offset},l=function(e,t,n){var r=g(e,t);if(r){for(var o,i=r.currentInlineElement;i&&i.getContainerNode()===t;)o=r,i=n?o.getNextInlineElement():o.getPreviousInlineElement();return null==i?void 0:i.getContainerNode()}}(t,i,n);if(a.isAtEndOrBeginning&&l){var s=t.getElementAtCursor("."+a.class,l);if(s&&u(s))return!0}return!!u(i&&t.getElementAtCursor("."+a.class,i));function u(r){if(!r)return!1;var o=C(r,n,t).delimiterPair;return o&&(o.className||"").indexOf(a.pairClass)>-1&&m(e,n,r)}}function g(e,t){var n;if(t){var r=null===(n=e.getBlockElementAtNode(t))||void 0===n?void 0:n.getStartNode();if(r&&(0,i.isBlockElement)(r))return o.ContentTraverser.createBodyTraverser(r,t)}}function m(e,t,n){return(0,i.cacheGetEventData)(e,"delimiter_cache_key_"+t,(function(){return n}))}function y(e,t,n,r,o){var a=(0,i.cacheGetEventData)(e,"entity_delimiter_cache_key_"+n,(function(){return r&&t.getElementAtCursor((0,i.getEntitySelector)(),r)}));if(a&&void 0!==o){var l=(0,i.getEntityFromElement)(a);l&&b(l,t,o,e)}return a}function b(e,t,n,o){var a=e.wrapper,l=a.nextElementSibling,s=a.previousElementSibling;t.triggerPluginEvent(15,{operation:n,rawEvent:o.rawEvent,entity:e}),e.isReadonly&&!(0,i.isBlockElement)(e.wrapper)&&t.isFeatureEnabled("InlineEntityReadOnlyDelimiters")&&(o.rawEvent.defaultPrevented?t.runAsync((function(){if(t.contains(e.wrapper)){var n=(0,r.__read)((0,i.addDelimiters)(e.wrapper),1)[0];n&&t.select(n,-3)}else!function(e,t){[e,t].forEach((function(e){var t;(0,i.getDelimiterFromElement)(e)&&(null===(t=null==e?void 0:e.parentElement)||void 0===t||t.removeChild(e))}))}(l,s)})):(0,i.getDelimiterFromElement)(l)&&(0,i.getDelimiterFromElement)(s)&&t.select((0,i.createRange)(s,l)))}function E(e,t){return!!(0,i.cacheGetEventData)(e,"Check_Before",(function(){return t}))}function C(e,t,n){var r=null,o=null,a=g(n,e);if(!a)return{delimiterPair:o,entity:r};for(var l,s="."+(t?"entityDelimiterAfter":"entityDelimiterBefore"),u=function(e,t){var r,o=null==e?void 0:e.getContainerNode();return null!==(r=o&&n.getElementAtCursor(t,o))&&void 0!==r?r:null},d=(0,i.getEntitySelector)(),c=a.currentInlineElement;c&&(!r||!o);){if(r=r||u(c,d),o=o||u(c,s),r&&!o&&!u(c,d)){o=null;break}l=a,c=t?l.getNextInlineElement():l.getPreviousInlineElement()}return{entity:r,delimiterPair:o}}t.EntityFeatures={clickOnEntity:a,escapeFromEntity:l,enterBeforeReadonlyEntity:u,backspaceAfterEntity:d,deleteBeforeEntity:c,moveBetweenDelimitersFeature:p,removeEntityBetweenDelimiters:v}},7018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListFeatures=void 0;var r=n(3279),o=n(1892),i=n(4548),a=n(6344),l="previousBlock",s="nextBlock",u=(0,a.createObjectDefinition)({orderedStyleType:(0,a.createNumberDefinition)(!0,void 0,1,20),unorderedStyleType:(0,a.createNumberDefinition)(!0,void 0,1,9)},!0,!0),d=function(e){return function(t,n){var r=t.rawEvent,o=r.keyCode,i=r.altKey,a=r.shiftKey,l=r.ctrlKey,s=r.metaKey;return!l&&!s&&(9===o?!i&&a===!e:a&&i&&o===(e?39:37))&&R(t,n)}},c=function(e){return function(t,n){var r=null,o=9!==t.rawEvent.keyCode&&(r=n.getElementAtCursor())&&"rtl"==(0,a.getComputedStyle)(r,"direction");(0,i.setIndentation)(n,o==e?1:0),t.rawEvent.preventDefault()}},f={keys:[9],shouldHandleEvent:d(!0),handleEvent:c(!0)},p={keys:[9],shouldHandleEvent:d(!1),handleEvent:c(!1),allowFunctionKeys:!0},v={keys:[39],shouldHandleEvent:d(!0),handleEvent:c(!0),allowFunctionKeys:!0,defaultDisabled:a.Browser.isMac},h={keys:[37],shouldHandleEvent:d(!1),handleEvent:c(!1),allowFunctionKeys:!0,defaultDisabled:a.Browser.isMac},g={keys:[8],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e),r=t.getSelectionRange();return n&&(null==r?void 0:r.collapsed)&&(0,a.isPositionAtBeginningOf)(a.Position.getStart(r),n)},handleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);(null==n?void 0:n.previousSibling)?(0,i.blockFormat)(t,(function(r,o,i){var l=(0,a.createVListFromRegion)(r,!1,null!=n?n:void 0);l&&o&&i&&(l.setIndentation(o,i,1,!0),l.writeBack(t.isFeatureEnabled("ReuseAllAncestorListElements"),t.isFeatureEnabled("DisableListChain")),e.rawEvent.preventDefault())})):A(e,t)},defaultDisabled:!0},m={keys:[8],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);return n&&(0,a.isNodeEmpty)(n)&&!n.previousSibling&&!n.getElementsByTagName("blockquote").length},handleEvent:A},y={keys:[46],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e),r=t.getSelectionRange();if(n||!r)return!1;var o=a.Position.getEnd(r).isAtEnd?function(e,t){var n=(0,a.cacheGetEventData)(e,"nextSibling",(function(){var e,n=t.getSelectionRange(),r=n&&a.Position.getEnd(n).normalize(),o=r&&t.getBodyTraverser(r.node);return null===(e=null==o?void 0:o.getNextBlockElement())||void 0===e?void 0:e.getStartNode()}));return n}(e,t):void 0;return t.getElementAtCursor("LI",o,e)},handleEvent:function(e,t){var n=D(t);t.runAsync((function(e){return(0,i.commitListChains)(e,n)}))}},b={keys:[13],shouldHandleEvent:function(e,t){var n=t.getElementAtCursor("LI",void 0,e);return!e.rawEvent.shiftKey&&n&&(0,a.isNodeEmpty)(n)},handleEvent:function(e,t){t.addUndoSnapshot((function(){return A(e,t,!1)}),void 0,!0)},defaultDisabled:!a.Browser.isIE&&!a.Browser.isChrome};function E(e){return/^(\*|-|[0-9]{1,2}\.|[0-9]{1,2}\>|[0-9]{1,2}\)|[0-9]{1,2}\-|\([0-9]{1,2}\))$/.test(e)}var C={keys:[32],shouldHandleEvent:function(e,t){var n;return!(R(e,t)||t.isFeatureEnabled("AutoFormatList")||!(n=t.getContentSearcherOfCursor(e)))&&E(n.getSubStringBefore(4))&&!n.getNearestNonTextInlineElement()},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n,r=t.getContentSearcherOfCursor();if(r){var o=r.getSubStringBefore(4),a=r.getRangeFromText(o,!0);if(a)if(0==o.indexOf("*")||0==o.indexOf("-"))M(t,a),(0,i.toggleBullet)(t);else if(E(o))M(t,a),(0,i.toggleNumbering)(t);else if((n=t.getSelectedRegions())&&1==n.length){var l=parseInt(o);M(t,a),(0,i.toggleNumbering)(t,l)}null===(e=r.getRangeFromText(o,!0))||void 0===e||e.deleteContents()}}),void 0,!0)}},S={keys:[32],shouldHandleEvent:function(e,t){return!(R(e,t)||!t.isFeatureEnabled("AutoFormatList"))&&I(e,t,r.default,2)},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n=t.getContentSearcherOfCursor();if(n){var o=n.getSubStringBefore(5),a=n.getRangeFromText(o,!0),l=(0,r.default)(o);a&&(M(t,a),(0,i.toggleBullet)(t,null!=l?l:void 0,"autoToggleList")),null===(e=n.getRangeFromText(o,!0))||void 0===e||e.deleteContents()}}),void 0,!0)}},T={keys:[32],shouldHandleEvent:function(e,t){return!(R(e,t)||!t.isFeatureEnabled("AutoFormatList"))&&I(e,t,o.default,1)},handleEvent:function(e,t){t.insertContent(" "),e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var e,n,r=t.getContentSearcherOfCursor();if(r){var a=r.getSubStringBefore(5),l=r.getRangeFromText(a,!0);if(l){var s=w(a)?1:parseInt(a),u=P(t,l),d=null!==(e=(0,o.default)(a))&&void 0!==e?e:void 0;M(t,l),(0,i.toggleNumbering)(t,u&&1!==s?void 0:s,d,"autoToggleList")}null===(n=r.getRangeFromText(a,!0))||void 0===n||n.deleteContents()}}),void 0,!0)}},P=function(e,t){var n,r=e.getBodyTraverser(null==t?void 0:t.startContainer).getPreviousBlockElement(),o=null!==(n=null==r?void 0:r.getEndNode())&&void 0!==n?n:null;return"LI"===(0,a.getTagOfNode)(o)?o:void 0},_=function(e,t,n){var r=1===n?"orderedStyleType":"unorderedStyleType",o=P(e,t),i=o?(0,a.findClosestElementAncestor)(o,void 0,1===n?"ol":"ul"):null,l=i?(0,a.getMetadata)(i,u):null;return l?l[r]:null},w=function(e){var t=parseInt(e);if(t&&1===t)return 1;var n=e.replace(/\(|\)|\-|\./g,"").trim();return 1===n.length&&["i","a","I","A"].indexOf(n)>-1?1:void 0},O={keys:[13,9,46,8,258],shouldHandleEvent:function(e,t){return t.queryElements("li",1).filter((function(e){return!e.getElementsByTagName("blockquote").length})).length>0},handleEvent:function(e,t){var n=D(t);t.runAsync((function(e){return(0,i.commitListChains)(e,n)}))}};function D(e){return a.VListChain.createListChains(e.getSelectedRegions())}function M(e,t){var n,r=e.getBlockElementAtNode(t.startContainer),o=null==r?void 0:r.getEndNode();if(o&&"BR"!=(0,a.getTagOfNode)(o)){var i=e.getDocument().createElement("BR");(0,a.isBlockElement)(o)?o.appendChild(i):null===(n=o.parentNode)||void 0===n||n.insertBefore(i,o.nextSibling),e.select(t.startContainer,t.startOffset)}}function A(e,t,n){void 0===n&&(n=!0);var r=R(e,t);if(r){var o=r[0],l=(0,a.getTagOfNode)(o);"UL"!=l&&"OL"!=l||(0,i.toggleListType)(t,"UL"==l?2:1,void 0,n),t.focus(),e.rawEvent.preventDefault()}}function R(e,t){var n=t.getElementAtCursor("LI,TABLE",void 0,e),r=n&&"LI"==(0,a.getTagOfNode)(n)&&t.getElementAtCursor("UL,OL",n);return r?[r,n]:null}function I(e,t,n,r){var o=t.getContentSearcherOfCursor(e);if(!o)return!1;var i=o.getSubStringBefore(4),a=t.getBlockTraverser(),l=a&&a.currentBlockElement?a.currentBlockElement.getTextContent().slice(0,i.length):null,s=l&&l===i,u=D(t),d=o.getRangeFromText(i,!0),c=d&&_(t,d,r),f=w(i),p=n(i,u,null!=c?c:void 0),v=f||!c||c===p||2===r;return s&&!o.getNearestNonTextInlineElement()&&p&&v}var L={keys:[8],shouldHandleEvent:function(e,t){var n,r,o=t.getElementAtCursor();if(o){var i=null===(n=t.getBlockElementAtNode(o))||void 0===n?void 0:n.getStartNode(),u=null!==(r=null==i?void 0:i.previousElementSibling)&&void 0!==r?r:null;if(N(u)){var d=t.getSelectionRange(),c=t.getContentSearcherOfCursor(e),f=null==c?void 0:c.getSubStringBefore(4),p=null==c?void 0:c.getNearestNonTextInlineElement();if(d&&d.collapsed&&""===f&&!p){var v=null==i?void 0:i.nextElementSibling,h=N(v)?v:null==v?void 0:v.firstChild;if(N(h)&&(0,a.getTagOfNode)(u)==(0,a.getTagOfNode)(h)){var g=(0,a.cacheGetEventData)(e,l,(function(){return u})),m=(0,a.cacheGetEventData)(e,s,(function(){return h}));return!!g&&!!m}}}}return!1},handleEvent:function(e,t){t.runAsync((function(t){var n=(0,a.cacheGetEventData)(e,l,(function(){return null})),r=(0,a.cacheGetEventData)(e,s,(function(){return null})),o=t.getSelectionRange();if(n&&r&&o){var i=new a.VList(n);i.mergeVList(new a.VList(r));var u=t.getDocument().createElement("span");u.id="restoreRange",o.insertNode(u),i.writeBack(),(u=t.queryElements("#restoreRange")[0]).parentElement&&(t.select(new a.Position(u,-3)),u.parentElement.removeChild(u))}}))}};function N(e){return!!e&&((0,a.safeInstanceOf)(e,"HTMLOListElement")||(0,a.safeInstanceOf)(e,"HTMLUListElement"))}t.ListFeatures={autoBullet:C,indentWhenTab:f,outdentWhenShiftTab:p,outdentWhenBackspaceOnEmptyFirstLine:m,outdentWhenEnterOnEmptyLine:b,mergeInNewLineWhenBackspaceOnFirstChar:g,maintainListChain:O,maintainListChainWhenDelete:y,autoNumberingList:T,autoBulletList:S,mergeListOnBackspaceAfterList:L,outdentWhenAltShiftLeft:h,indentWhenAltShiftRight:v}},57:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MarkdownFeatures=void 0;var r=n(6344);function o(e,t,n,o){return{keys:[e],shouldHandleEvent:function(e,n){return e.rawEvent.shiftKey===o&&!!i(e,n,t)},handleEvent:function(e,o){o.runAsync((function(o){!function(e,t,n,o){t.addUndoSnapshot((function(){var a=i(e,t,n);if(a){var l=new r.Position(a.endContainer,-1),s=a.endOffset+1<=l.offset;if(a&&s){var u=a.cloneRange();u.setStart(u.startContainer,u.startOffset+1);var d=u.extractContents().textContent,c=t.getDocument().createTextNode(null!=d?d:""),f=(0,r.wrap)(c,o);a.setEnd(a.endContainer,a.endOffset+1),a.deleteContents();var p=t.getDocument().createTextNode("​");a.insertNode(p),a.insertNode(f),t.select(p,-1)}}}),"Format",!0)}(e,o,t,n)}))}}}function i(e,t,n){return(0,r.cacheGetEventData)(e,"MARKDOWN_RANGE",(function(){var o=t.getContentSearcherOfCursor(e),i=null,a=null;return null==o||o.forEachTextInlineElement((function(e){if(a&&i)return!0;var t=e.getTextContent();if(0==t[t.length-1].trim().length)return!1;var r=e.getParentBlock().getTextContent();if(r[r.length-1].trim()===n)return!1;if(a||(a=e.getStartPosition().move(t.length)),t[0]==n)i=e.getStartPosition();else for(var o=t.length-1;o>0;o--){if(i)return!0;if(t[o]==n&&0==t[o-1].trim().length)return i=e.getStartPosition().move(o),!0}})),i&&a&&(0,r.createRange)(i,a)}))}var a=o(56,"*","b",!0),l=o(189,"_","i",!0),s=o(192,"~","s",!0),u=o(192,"`","code",!1);t.MarkdownFeatures={markdownBold:a,markdownItalic:l,markdownStrikethru:s,markdownInlineCode:u}},1495:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.QuoteFeatures=void 0;var r=n(4548),o=n(6344),i="BLOCKQUOTE",a=[i,"LI","TD","TH"].join(","),l={keys:[8],shouldHandleEvent:function(e,t){var n=u(e,t);return n&&(0,o.isNodeEmpty)(n)&&!n.previousSibling},handleEvent:d},s={keys:[13],shouldHandleEvent:function(e,t){var n=u(e,t);return!e.rawEvent.shiftKey&&n&&(0,o.isNodeEmpty)(n)},handleEvent:function(e,t){return t.addUndoSnapshot((function(){return d(e,t)}),void 0,!0)}};function u(e,t){return(0,o.cacheGetEventData)(e,"QUOTE_CHILD",(function(){var e=t.getElementAtCursor(a);if(e&&(0,o.getTagOfNode)(e)==i){var n=t.getFocusedPosition(),r=n&&t.getBlockElementAtNode(n.normalize().node);if(r){var l=r.getStartNode()==e?r.getStartNode():r.collapseToSingleElement();return(0,o.isNodeEmpty)(l)?l:null}}return null}))}function d(e,t){t.addUndoSnapshot((function(){var n=u(e,t);if(n){(0,o.getTagOfNode)(n)==i&&(n=(0,o.wrap)((0,o.toArray)(n.childNodes)));var a=(0,o.splitBalancedNodeRange)(n),l=!!a&&c(a),s=a&&(0,o.unwrap)(a);t.select(n,0),l&&((0,o.safeInstanceOf)(s,"HTMLLIElement")&&s.style.removeProperty("color"),(0,r.clearFormat)(t))}})),e.rawEvent.preventDefault()}var c=function(e){return!!(e&&(0,o.safeInstanceOf)(e,"HTMLQuoteElement")&&e.style.borderLeft&&e.style.borderColor&&e.style.paddingLeft&&e.style.color)};t.QuoteFeatures={unquoteWhenBackspaceOnEmptyFirstLine:l,unquoteWhenEnterOnEmptyLine:s}},9187:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShortcutFeatures=void 0;var r=n(6344),o=n(4548);function i(e,t,n,r){return void 0===r&&(r=!1),r?null:{winKey:e,macKey:t,action:n}}var a=[i(4162,8258,o.toggleBold),i(4169,8265,o.toggleItalic),i(4181,8277,o.toggleUnderline),i(4128,8224,o.clearFormat),i(4186,8282,(function(e){return e.undo()})),i(26,26,(function(e){return e.undo()}),r.Browser.isMac),i(4185,24666,(function(e){return e.redo()})),i(4286,8382,o.toggleBullet),i(4287,8383,o.toggleNumbering),i(20670,24766,(function(e){return(0,o.changeFontSize)(e,0)})),i(20668,24764,(function(e){return(0,o.changeFontSize)(e,1)}))].filter((function(e){return!!e})),l={allowFunctionKeys:!0,keys:[66,73,85,89,90,188,190,191,32,8],shouldHandleEvent:s,handleEvent:function(e,t){var n=s(e);n&&(n.action(t),e.rawEvent.preventDefault(),e.rawEvent.stopPropagation())}};function s(e){return(0,r.cacheGetEventData)(e,"DEFAULT_SHORT_COMMAND",(function(){var t=e.rawEvent,n=0!=e.eventType||t.getModifierState("AltGraph")?0:t.which|(t.metaKey&&8192)|(t.shiftKey&&16384)|(t.ctrlKey&&4096)|(t.altKey&&18);return n&&a.filter((function(e){return(r.Browser.isMac?e.macKey:e.winKey)==n}))[0]}))}t.ShortcutFeatures={defaultShortcut:l}},2828:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StructuredNodeFeatures=void 0;var r=n(6344),o={TD:"TABLE",TH:"TABLE",LI:"OL,UL"},i=(0,r.getObjectKeys)(o).join(","),a={keys:[13],shouldHandleEvent:l,handleEvent:function(e,t){var n=l(e,t),o=(0,r.createElement)(1,t.getDocument());t.addUndoSnapshot((function(){var e;null===(e=null==n?void 0:n.parentNode)||void 0===e||e.insertBefore(o,n),"TABLE"==(0,r.getTagOfNode)(n)&&t.select(new r.Position(o,0).normalize())})),e.rawEvent.preventDefault()},defaultDisabled:!0};function l(e,t){return(0,r.cacheGetEventData)(e,"FIRST_STRUCTURE",(function(){var n=e.rawEvent.shiftKey?null:t.getElementAtCursor(i);if(n){var a=t.getSelectionRange();if(a&&a.collapsed&&(0,r.isPositionAtBeginningOf)(r.Position.getStart(a),n)&&!t.getBodyTraverser(n).getPreviousBlockElement())return t.getElementAtCursor(o[(0,r.getTagOfNode)(n)])}return null}))}t.StructuredNodeFeatures={insertLineBeforeStructuredNodeFeature:a}},4683:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableFeatures=void 0;var r=n(4548),o=n(6344),i={keys:[9],shouldHandleEvent:function(e,t){return u(e,t)&&!d(e,t)},handleEvent:function(e,t){var n,i,a,l=e.rawEvent.shiftKey,s=u(e,t);if(s){for(var d=c(e,s),f=l?-1:1,p=null!==(n=d.row)&&void 0!==n?n:0,v=(null!==(i=d.col)&&void 0!==i?i:0)+f;;v+=f){var h=null!==(a=d.cells)&&void 0!==a?a:[];if(v<0||v>=h[p].length){if((p+=f)<0){t.select(d.table,-2);break}if(p>=h.length){(0,r.editTable)(t,1);break}v=l?h[p].length-1:0}var g=d.getCell(p,v);if(g.td){var m=new o.Position(g.td,0).normalize();t.select(m);break}}e.rawEvent.preventDefault()}}},a={keys:[9],shouldHandleEvent:function(e,t){return u(e,t)&&d(e,t)},handleEvent:function(e,t){e.rawEvent.preventDefault(),t.addUndoSnapshot((function(){var n=e.rawEvent.shiftKey,o=t.getSelectionRangeEx(),i=u(e,t);if(i){var a=c(e,i);n&&t.getElementAtCursor("blockquote",a.table,e)?(0,r.setIndentation)(t,1):n||(0,r.setIndentation)(t,0),o.coordinates&&t.select(o.table,o.coordinates)}}))}},l={keys:[38,40],shouldHandleEvent:function(e,t){return u(e,t)&&!d(e,t)},handleEvent:function(e,t){var n,r,i,a=u(e,t);if(a){var l=new o.VTable(a),s=38==e.rawEvent.which,d=s?-1:1,c=e.rawEvent.shiftKey,f=null===(n=t.getDocument().defaultView)||void 0===n?void 0:n.getSelection(),p=null;if(f){for(var v=f.anchorNode,h=f.anchorOffset,g=null!==(r=l.row)&&void 0!==r?r:0;g>=0&&l.cells&&g{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextFeatures=void 0;var r=n(4548),o=n(6344),i={keys:[9],shouldHandleEvent:function(e,t){if(t.isFeatureEnabled("TabKeyTextFeatures")&&!e.rawEvent.shiftKey){var n=t.getDocument().activeElement,r=t.getElementAtCursor("LI,TABLE",void 0,e),i=t.getElementAtCursor((0,o.getEntitySelector)(),void 0,e);return!r&&(i?i.isContentEditable:n.isContentEditable)}return!1},handleEvent:function(e,t){var n=t.getSelectionRangeEx();0==n.type&&(t.addUndoSnapshot((function(){if(n.areAllCollapsed)u(t,e);else{var i=n.ranges,a=i[0];if(l(t,a))(0,r.setIndentation)(t,0);else{var s=(0,o.createRange)(a.startContainer,a.startOffset);i.forEach((function(e){return e.deleteContents()})),t.select(s),u(t,e)}}})),e.rawEvent.preventDefault())}},a={keys:[9],shouldHandleEvent:function(e,t){if(e.rawEvent.shiftKey&&t.isFeatureEnabled("TabKeyTextFeatures")){var n=t.getSelectionRangeEx();return 0==n.type&&!n.areAllCollapsed&&t.getElementAtCursor("blockquote",void 0,e)&&!t.getElementAtCursor("LI,TABLE",void 0,e)&&l(t,n.ranges[0])}return!1},handleEvent:function(e,t){t.addUndoSnapshot((function(){return(0,r.setIndentation)(t,1)})),e.rawEvent.preventDefault()}};function l(e,t){var n=!1,r=o.Position.getStart(t),i=o.Position.getEnd(t),a=e.getBlockElementAtNode(r.node),l=e.getBlockElementAtNode(i.node);if(!a||!l)return!1;if(a.equals(l)){var u=new o.Position(a.getStartNode(),0),d=new o.Position(a.getEndNode(),-1),c=(0,o.createRange)(u,o.Position.getStart(t)),f=(0,o.createRange)(o.Position.getEnd(t),d);return!n&&s(c)&&s(f)&&(n=!0),n}return!0}function s(e){return""==e.toString()&&0==(0,o.queryElements)(e.commonAncestorContainer,"img,table,ul,ol",null,2,e).length}function u(e,t){var n=e.getDocument().createElement("span"),r=e.getContentSearcherOfCursor(t);if(r){for(var i=6-r.getSubStringBefore(Number.MAX_SAFE_INTEGER).length%6,a=null,l="",s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(7539),i=n(7167),a=n(4397),l=n(7018),s=n(57),u=n(1495),d=n(9187),c=n(2828),f=n(4683),p=n(3171),v=n(2056),h=(0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)((0,r.__assign)({},l.ListFeatures),u.QuoteFeatures),f.TableFeatures),c.StructuredNodeFeatures),o.AutoLinkFeatures),d.ShortcutFeatures),i.CursorFeatures),s.MarkdownFeatures),a.EntityFeatures),p.TextFeatures),v.CodeFeatures);t.default=function(){return h}},9025:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAllFeatures=t.ContentEdit=void 0;var r=n(678);Object.defineProperty(t,"ContentEdit",{enumerable:!0,get:function(){return r.default}});var o=n(692);Object.defineProperty(t,"getAllFeatures",{enumerable:!0,get:function(){return o.default}})},4239:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.toLocaleLowerCase();if(t){var n=t.length-1;return 26*n+t.charCodeAt(n)-96}return null}},3279:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={"*":1,"-":2,"--":3,"->":5,"--\x3e":8,"=>":6,">":4,"—":7};t.default=function(e){var t=e.trim();return n[t]||null}},1892:(e,t,n)=>{"use strict";var r,o,i,a,l,s;Object.defineProperty(t,"__esModule",{value:!0});var u,d,c=n(4239);!function(e){e[e.Decimal=1]="Decimal",e[e.LowerAlpha=2]="LowerAlpha",e[e.UpperAlpha=3]="UpperAlpha",e[e.LowerRoman=4]="LowerRoman",e[e.UpperRoman=5]="UpperRoman"}(u||(u={})),function(e){e[e.Dot=1]="Dot",e[e.Dash=2]="Dash",e[e.Parenthesis=3]="Parenthesis",e[e.DoubleParenthesis=4]="DoubleParenthesis"}(d||(d={}));var f={".":1,"-":2,")":3},p=[13,16,15,14],v=[17,20,19,18],h=["1","a","A","I","i"],g=["i","v","x","l","c","d","m"],m=["I","V","X","L","C","D","M"],y=((r={})[1]=function(e){return T[e]||null},r[2]=function(e){return S[e]||null},r[3]=function(e){return C[e]||null},r[4]=function(e){return E[e]||null},r[5]=function(e){return b[e]||null},r),b=((o={})[1]=17,o[2]=20,o[3]=18,o[4]=19,o),E=((i={})[1]=13,i[2]=16,i[3]=14,i[4]=15,i),C=((a={})[1]=9,a[2]=12,a[3]=10,a[4]=11,a),S=((l={})[1]=5,l[2]=8,l[3]=6,l[4]=7,l),T=((s={})[1]=1,s[2]=2,s[3]=3,s[4]=4,s);t.default=function(e,t,n){var r,o=e.trim(),i="("===o[0]&&")"===o[o.length-1],a=i?o.slice(1,-1):o.slice(0,-1),l=parseInt(a),s=isNaN(l)?(0,c.default)(a):l;return!s||s<1||t&&s>1&&(t.length<1&&h.indexOf(a)<0||(null==t?void 0:t.length)>0&&!(null===(r=t[t.length-1])||void 0===r?void 0:r.canAppendAtCursor(s)))?null:function(e){return Number(e)||/^[A-Za-z\s]*$/.test(e)}(a)?function(e,t,n){var r=t?4:f[e[e.length-1]];if(r){var o=function(e,t){if(!isNaN(parseInt(e)))return 1;if(/[a-z]+/g.test(e)){if(null!=t&&p.indexOf(t)>-1&&g.indexOf(e[0])>-1||!t&&"i"===e)return 4;if(t||!t&&"a"===e)return 2}else if(/[A-Z]+/g.test(e)){if(null!=t&&v.indexOf(t)>-1&&m.indexOf(e[0])>-1||!t&&"I"===e)return 5;if(t||!t&&"A"===e)return 3}}(t?e.slice(1,-1):e.slice(0,-1),n);return o?y[o](r):null}return null}(o,i,n):null}},5713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e){var t=this;this.options=e,this.container=null,this.editor=null,this.isMenuShowing=!1,this.onDismiss=function(){var e,n;t.container&&t.isMenuShowing&&(null===(n=(e=t.options).dismiss)||void 0===n||n.call(e,t.container),t.isMenuShowing=!1)}}return e.prototype.getName=function(){return"ContextMenu"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){var e;this.onDismiss(),(null===(e=this.container)||void 0===e?void 0:e.parentNode)&&(this.container.parentNode.removeChild(this.container),this.container=null),this.editor=null},e.prototype.onPluginEvent=function(e){if(16==e.eventType&&e.items.length>0){var t=e.rawEvent,n=e.items;this.onDismiss(),this.options.allowDefaultMenu||t.preventDefault(),this.initContainer(t.pageX,t.pageY)&&(this.options.render(this.container,n,this.onDismiss),this.isMenuShowing=!0)}},e.prototype.initContainer=function(e,t){var n,o;return!this.container&&this.editor&&(this.container=(0,r.createElement)(5,this.editor.getDocument()),this.editor.getDocument().body.appendChild(this.container)),null===(n=this.container)||void 0===n||n.style.setProperty("left",e+"px"),null===(o=this.container)||void 0===o||o.style.setProperty("top",t+"px"),!!this.container},e}();t.default=o},936:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContextMenu=void 0;var r=n(5713);Object.defineProperty(t,"ContextMenu",{enumerable:!0,get:function(){return r.default}})},2522:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e,t,n,r){return{sourceString:e,replacementHTML:t,matchSourceCaseSensitive:n,shouldReplace:r}},i=[o(":)","🙂",!0),o(";)","😉",!0),o(":O","😲",!0),o(":o","😯",!0),o("<3","❤️",!0)],a=function(){function e(e){void 0===e&&(e=i),this.longestReplacementLength=null,this.editor=null,this.replacements=null,this.replacementEndCharacters=null,this.updateReplacements(e)}return e.prototype.updateReplacements=function(e){var t;this.replacements=e,this.longestReplacementLength=(t=this.replacements,Math.max.apply(null,t.map((function(e){return e.sourceString.length})))),this.replacementEndCharacters=function(e){var t,n,o=new Set;try{for(var i=(0,r.__values)(e),a=i.next();!a.done;a=i.next()){var l=a.value,s=l.sourceString;if(0!=s.length){var u=s[s.length-1];l.matchSourceCaseSensitive?o.add(u):(o.add(u.toLocaleLowerCase()),o.add(u.toLocaleUpperCase()))}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return o}(this.replacements)},e.prototype.getName=function(){return"CustomReplace"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){var t,n=this;if(3==e.eventType&&this.editor&&!this.editor.isInIME()&&e.rawEvent.data&&(null===(t=this.replacementEndCharacters)||void 0===t?void 0:t.has(e.rawEvent.data))){var r=this.editor.getContentSearcherOfCursor(e);if(r&&null!=this.longestReplacementLength){var o=r.getSubStringBefore(this.longestReplacementLength),i=this.getMatchingReplacement(o);if(i&&(!i.shouldReplace||!r||i.shouldReplace(i,r.getWordBefore(),this.editor))){var a=r.getSubStringBefore(i.sourceString.length),l=r.getRangeFromText(a,!0),s=this.editor.getDocument().createElement("span");s.innerHTML=this.editor.getTrustedHTMLHandler()(i.replacementHTML);var u=1==s.childNodes.length?s.childNodes[0]:s;l&&this.editor.addUndoSnapshot((function(){var e;l.deleteContents(),l.insertNode(u),null===(e=n.editor)||void 0===e||e.select(u,-1)}),void 0,!0)}}}},e.prototype.getMatchingReplacement=function(e){var t,n;if(0==e.length||!this.replacements)return null;var o=e.replace(/\s/g," "),i=o.toLocaleLowerCase();try{for(var a=(0,r.__values)(this.replacements),l=a.next();!l.done;l=a.next()){var s=l.value,u=(0,r.__read)(s.matchSourceCaseSensitive?[o,s.sourceString]:[i,s.sourceString.toLocaleLowerCase()],2),d=u[0],c=u[1];if(d.substring(d.length-c.length)==c)return s}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return null},e}();t.default=a},7030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CustomReplace=void 0;var r=n(2522);Object.defineProperty(t,"CustomReplace",{enumerable:!0,get:function(){return r.default}})},7578:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4548),o=n(6344),i=function(){function e(){var e=this;this.chains=null,this.expectedChangeSource=null,this.editor=null,this.disposer=null,this.onDrop=function(){e.cacheListChains("Drop")}}return e.prototype.getName=function(){return"CutPasteListChain"},e.prototype.initialize=function(e){this.editor=e,this.disposer=this.editor.addDomEventHandler("drop",this.onDrop)},e.prototype.dispose=function(){var e;null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 9:e.isCut&&this.cacheListChains("Cut");break;case 10:this.cacheListChains("Paste");break;case 7:this.chains&&this.chains.length>0&&this.expectedChangeSource==e.source&&this.editor&&((0,r.commitListChains)(this.editor,this.chains),this.chains=null,this.expectedChangeSource=null)}},e.prototype.cacheListChains=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getSelectedRegions();n&&(this.chains=o.VListChain.createListChains(n),this.expectedChangeSource=e)},e}();t.default=i},8854:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CutPasteListChain=void 0;var r=n(7578);Object.defineProperty(t,"CutPasteListChain",{enumerable:!0,get:function(){return r.default}})},4039:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=function(){function e(e,t,n){var r=this;void 0===e&&(e=function(e){return e}),this.getTooltipCallback=e,this.target=t,this.onLinkClick=n,this.originalHref=null,this.trackedLink=null,this.editor=null,this.disposer=null,this.onMouse=function(e){var t,n,o=null===(t=r.editor)||void 0===t?void 0:t.getElementAtCursor("a[href]",e.target),i=o&&r.tryGetHref(o);i&&(null===(n=r.editor)||void 0===n||n.setEditorDomAttribute("title","mouseover"==e.type?r.getTooltipCallback(i,o):null))},this.onBlur=function(e){r.trackedLink&&r.updateLinkHrefIfShouldUpdate(),r.resetLinkTracking()}}return e.prototype.getName=function(){return"Hyperlink"},e.prototype.initialize=function(e){this.editor=e,this.disposer=e.addDomEventHandler({mouseover:this.onMouse,mouseout:this.onMouse,blur:this.onBlur})},e.prototype.dispose=function(){this.disposer&&(this.disposer(),this.disposer=null),this.editor=null},e.prototype.onPluginEvent=function(e){var t,n,o;if(6==e.eventType||2==e.eventType&&(!this.isContentEditValue(e.rawEvent)||32==e.rawEvent.which)||7==e.eventType){var i,a=(i=null===(t=this.editor)||void 0===t?void 0:t.getElementAtCursor("A[href]",void 0,e))&&i!==this.trackedLink||2==e.eventType||7==e.eventType;7==e.eventType&&"Keyboard"==e.source&&this.trackedLink!=i&&i&&(this.trackedLink=i),this.trackedLink&&(a||this.tryGetHref(this.trackedLink)!==this.originalHref)&&(a&&this.updateLinkHrefIfShouldUpdate(),this.resetLinkTracking()),!this.trackedLink&&i&&this.doesLinkDisplayMatchHref(i)&&(this.trackedLink=i,this.originalHref=this.tryGetHref(i))}if(6==e.eventType&&(i=null===(n=this.editor)||void 0===n?void 0:n.getElementAtCursor("A",e.rawEvent.srcElement))){if(this.onLinkClick&&!1!==this.onLinkClick(i,e.rawEvent))return;var l;if((l=this.tryGetHref(i))&&(0,r.isCtrlOrMetaPressed)(e.rawEvent)&&0===e.rawEvent.button){e.rawEvent.preventDefault();try{var s=this.target||"_blank",u=null===(o=this.editor)||void 0===o?void 0:o.getDocument().defaultView;null==u||u.open(l,s)}catch(e){}}}},e.prototype.tryGetHref=function(e){try{return e?e.href:null}catch(e){return null}},e.prototype.isContentEditValue=function(e){return(0,r.isCharacterValue)(e)||8==e.which||46==e.which},e.prototype.updateLinkHrefIfShouldUpdate=function(){this.trackedLink&&!this.doesLinkDisplayMatchHref(this.trackedLink)&&this.updateLinkHref()},e.prototype.resetLinkTracking=function(){this.trackedLink=null,this.originalHref=""},e.prototype.doesLinkDisplayMatchHref=function(e){if(e){var t=e.innerText.trim().replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("^(?:https?:\\/\\/)?"+t+"\\/?","i"),r=this.tryGetHref(e);if(null!==r)return n.test(r)}return!1},e.prototype.updateLinkHref=function(){var e,t=this;if(this.trackedLink){var n=(0,r.matchLink)(this.trackedLink.innerText.trim());null!==n&&(null===(e=this.editor)||void 0===e||e.addUndoSnapshot((function(){t.trackedLink.href=n.normalizedUrl})))}},e}();t.default=o},5061:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HyperLink=void 0;var r=n(4039);Object.defineProperty(t,"HyperLink",{enumerable:!0,get:function(){return r.default}})},9770:(e,t,n)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0});var o=n(7582),i=n(7058),a=n(971),l=n(4296),s=n(2448),u=n(2627),d=n(8755),c=n(330),f=n(2110),p=n(6147),v=n(6344),h=n(1400),g=Math.PI,m=8,y=2*g/m,b=["nw","n","ne","e","se","s","sw","w"],E={borderColor:"#DB626C",minWidth:10,minHeight:10,preserveRatio:!1,minRotateDeg:5,imageSelector:"img",rotateIconHTML:"",disableCrop:!1,disableRotate:!1,disableSideResize:!1,onSelectState:7},C=((r={})[1]=h.getCornerResizeHTML,r[2]=h.getSideResizeHTML,r[4]=c.getRotateHTML,r[8]=u.getCropHTML,r),S=function(){function e(e,t){var n=this;this.onShowResizeHandle=t,this.editor=null,this.disposer=null,this.image=null,this.clonedImage=null,this.wrapper=null,this.editInfo=null,this.lastSrc=null,this.dndHelpers=[],this.wasResized=!1,this.shadowSpan=null,this.isCropping=!1,this.pngSource=null,this.onBlur=function(){n.setEditingImage(null,!1)},this.removeWrapper=function(){n.shadowSpan&&(0,v.unwrap)(n.shadowSpan),n.wrapper=null,n.shadowSpan=null},this.updateWrapper=function(e){var t,r,o,i=n.wrapper;if(i&&n.editInfo&&n.image&&n.clonedImage&&n.options&&(null===(t=n.shadowSpan)||void 0===t?void 0:t.parentElement)){var a=_(i,"r_cropC"),l=_(i,"r_cropO"),u=_(i,"r_resizeH"),d=_(i,"r_rotateC")[0],f=_(i,"r_rotateH")[0],p=_(i,"r_cropH");n.isCropping=1==a.length&&4==l.length;var g=n.editInfo,m=g.angleRad,y=g.bottomPercent,b=g.leftPercent,E=g.rightPercent,C=g.topPercent,S=g.flippedHorizontal,O=g.flippedVertical,M=(0,s.default)(n.editInfo,n.isCropping),A=M.targetWidth,R=M.targetHeight,I=M.originalWidth,L=M.originalHeight,N=M.visibleWidth,x=M.visibleHeight,k=(A-N)/2,j=(R-x)/2,B=I*b,F=I*E,H=L*C,z=L*y;if(i.style.margin=j+"px "+k+"px",i.style.transform="rotate("+m+"rad)",function(e,t,n,r){if(t.style.borderStyle){var o=t.style.borderWidth?2*parseInt(t.style.borderWidth):2;return e.style.width=P(n+o),void(e.style.height=P(r+o))}e.style.width=P(n),e.style.height=P(r)}(i,n.image,N,x),i.style.textAlign=(o=n.shadowSpan.parentElement,(0,v.safeInstanceOf)(o,"HTMLElement")&&"rtl"==(0,v.getComputedStyle)(o,"direction")?"right":"left"),n.clonedImage.style.width=P(I),n.clonedImage.style.height=P(L),function(e,t,n){e&&(e.style.transform="scale("+(t?-1:1)+", "+(n?-1:1)+")")}(n.clonedImage.parentElement,S,O),n.isCropping)T(a[0],B,H,F,z,void 0,void 0),T(l[0],0,0,F,void 0,void 0,H),T(l[1],void 0,0,0,z,F,void 0),T(l[2],B,void 0,0,0,void 0,z),T(l[3],0,H,void 0,0,B,void 0),w(p,m);else{if(n.clonedImage.style.margin=-H+"px 0 0 "+-B+"px","r_resizeH"==(null==e?void 0:e.elementClass)){var U=i.clientWidth,K=i.clientHeight;n.wasResized=!0,(0,h.doubleCheckResize)(n.editInfo,n.options.preserveRatio||!1,U,K),n.updateWrapper()}var W=null===(r=n.editor)||void 0===r?void 0:r.getVisibleViewport(),V=D(A,R);f&&d&&W&&(0,c.updateRotateHandleState)(W,m,i,d,f,V),function(e,t){e.forEach((function(e){var n=e.dataset,r=n.y,o=n.x,i=["n","s","e","w"].indexOf((null!=r?r:"")+(null!=o?o:""))>-1;e.style.display=i&&t?"none":""}))}(u,V),w(u,m)}}},this.options=(0,o.__assign)((0,o.__assign)({},E),e||{}),this.allowedOperations=1|(this.options.disableCrop?0:8)|(this.options.disableRotate?0:4)|(this.options.disableSideResize?0:2)}return e.prototype.getName=function(){return"ImageEdit"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.disposer=e.addDomEventHandler({blur:function(){return t.onBlur()},dragstart:function(e){t.image&&e.preventDefault()}})},e.prototype.dispose=function(){var e;this.clearDndHelpers(),null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){var t,n;switch(e.eventType){case 22:e.selectionRangeEx&&2===e.selectionRangeEx.type&&this.options&&void 0!==this.options.onSelectState&&this.setEditingImage(e.selectionRangeEx.image,this.options.onSelectState);break;case 5:var r=e.rawEvent.target,o=e.rawEvent.button;(this.shadowSpan!==r||this.shadowSpan===r&&0!==o||this.isCropping)&&this.setEditingImage(null);break;case 6:this.image&&this.shadowSpan&&(null===(t=this.editor)||void 0===t||t.select(this.image));break;case 0:this.setEditingImage(null);break;case 7:case 12:this.removeWrapper();break;case 8:(null===(n=this.options)||void 0===n?void 0:n.imageSelector)&&(0,v.toArray)(e.clonedRoot.querySelectorAll(this.options.imageSelector)).forEach((function(e){(0,d.deleteEditInfo)(e)}))}},e.prototype.isOperationAllowed=function(e){return!!(this.allowedOperations&e)},e.prototype.setEditingImage=function(e,t){var n=this,r="number"==typeof t?t:0,l="number"!=typeof t&&!!t;!e&&this.image&&this.editor&&this.editInfo&&this.lastSrc&&this.clonedImage&&(this.clearDndHelpers(),this.pngSource&&(this.clonedImage.src=this.editInfo.src),(0,i.default)(this.editor,this.image,this.editInfo,this.lastSrc,this.wasResized||this.isCropping,this.clonedImage),this.removeWrapper(),this.editor.addUndoSnapshot((function(){return n.image}),"ImageResize"),l&&this.editor.select(this.image),this.pngSource=null,this.image=null,this.editInfo=null,this.lastSrc=null,this.clonedImage=null,this.isCropping=!1),!this.image&&(null==e?void 0:e.isContentEditable)&&this.editor&&(this.editor.addUndoSnapshot(),this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e),this.pngSource=(0,p.tryToConvertGifToPng)(this.editInfo),this.wasResized=function(e){var t=e.width,n=e.height,r=e.style;return!(""!==r.maxWidth&&"initial"!==r.maxWidth&&"auto"!==r.maxWidth||!(O(r.height)||O(r.width)||O(t)||O(n)))}(this.image),r=((0,a.default)(e)?r:3)&this.allowedOperations,this.createWrapper(r),this.updateWrapper(),this.dndHelpers=(0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(this.createDndHelpers("r_resizeH",h.Resizer)),!1),(0,o.__read)(this.createDndHelpers("r_rotateH",c.Rotator)),!1),(0,o.__read)(this.createDndHelpers("r_cropH",u.Cropper)),!1),(0,o.__read)(this.createDndHelpers("r_cropC",u.Cropper)),!1),this.editor.select(this.image))},e.prototype.flipImage=function(e,t){var n;this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e);var r=this.editInfo.angleRad;r>=Math.PI/2&&r<3*Math.PI/4||r<=-Math.PI/2&&r>-3*Math.PI/4?"horizontal"===t?this.editInfo.flippedVertical=!this.editInfo.flippedVertical:this.editInfo.flippedHorizontal=!this.editInfo.flippedHorizontal:"vertical"===t?this.editInfo.flippedVertical=!this.editInfo.flippedVertical:this.editInfo.flippedHorizontal=!this.editInfo.flippedHorizontal,this.createWrapper(4),this.updateWrapper(),this.setEditingImage(null),null===(n=this.editor)||void 0===n||n.select(e)},e.prototype.rotateImage=function(e,t){var n;this.image=e,this.editInfo=(0,d.getEditInfoFromImage)(e),this.editInfo.angleRad=this.editInfo.angleRad+t,this.createWrapper(4),this.updateWrapper(),this.setEditingImage(null),null===(n=this.editor)||void 0===n||n.select(e)},e.prototype.createWrapper=function(e){var t,n,r,o,i,a=this;if(this.image&&this.editor&&this.options&&this.editInfo){this.clonedImage=this.image.cloneNode(!0),this.clonedImage.removeAttribute("id"),this.clonedImage.style.removeProperty("max-width"),this.clonedImage.style.width=this.editInfo.widthPx+"px",this.clonedImage.style.height=this.editInfo.heightPx+"px",this.wrapper=(0,v.createElement)(6,this.image.ownerDocument),null===(n=null===(t=this.wrapper)||void 0===t?void 0:t.firstChild)||void 0===n||n.appendChild(this.clonedImage),this.wrapper.style.display=v.Browser.isSafari?"inline-block":"inline-flex",this.lastSrc=this.image.getAttribute("src"),this.clonedImage&&(this.clonedImage.src=null!==(r=this.pngSource)&&void 0!==r?r:this.editInfo.src,this.clonedImage.style.position="absolute");var l={borderColor:(o=this.options.borderColor,i=this.editor.isDarkMode(),"string"==typeof o?o.trim():i?o.darkModeColor.trim():o.lightModeColor.trim()),rotateIconHTML:this.options.rotateIconHTML,rotateHandleBackColor:this.editor.isDarkMode()?"#333":"white",isSmallImage:D(this.editInfo.widthPx,this.editInfo.heightPx)},s=[(0,h.getResizeBordersHTML)(l)];(0,v.getObjectKeys)(C).forEach((function(t){var n=C[t](l,a.onShowResizeHandle);(e&t)==t&&n&&(0,v.arrayPush)(s,n)})),s.forEach((function(e){var t=(0,v.createElement)(e,a.image.ownerDocument);t&&a.wrapper&&a.wrapper.appendChild(t)})),this.insertImageWrapper(this.wrapper)}},e.prototype.insertImageWrapper=function(e){if(this.image&&(this.shadowSpan=(0,v.wrap)(this.image,"span"),this.shadowSpan)){var t=this.shadowSpan.attachShadow({mode:"open"});this.shadowSpan.style.verticalAlign="bottom",this.shadowSpan.style.fontSize="24px",t.appendChild(e)}},e.prototype.createDndHelpers=function(e,t){var n=this,r=this.wrapper;return r&&this.editInfo?_(r,e).map((function(r){return new l.default(r,{editInfo:n.editInfo,options:n.options,elementClass:e,x:r.dataset.x,y:r.dataset.y},n.updateWrapper,t,n.editor?n.editor.getZoomScale():1)})):[]},e.prototype.clearDndHelpers=function(){var e;null===(e=this.dndHelpers)||void 0===e||e.forEach((function(e){return e.dispose()})),this.dndHelpers=[]},e}();function T(e,t,n,r,o,i,a){e.style.left=void 0!==t?P(t):e.style.left,e.style.top=void 0!==n?P(n):e.style.top,e.style.right=void 0!==r?P(r):e.style.right,e.style.bottom=void 0!==o?P(o):e.style.bottom,e.style.width=void 0!==i?P(i):e.style.width,e.style.height=void 0!==a?P(a):e.style.height}function P(e){return e+"px"}function _(e,t){return(0,v.toArray)(e.querySelectorAll("."+t))}function w(e,t){e.forEach((function(e){var n=e.dataset,r=n.y,o=n.x;e.style.cursor=function(e,t,n){void 0===t&&(t=""),void 0===n&&(n="");var r=function(e){var t=Math.round(e/y)%m;return t<0?t+m:t}(e),o=t+n,i=b.indexOf(o),a=i>=0&&i+r;return a?b[a%m]:""}(t,r,o)+"-resize"}))}function O(e){var t="string"==typeof e?parseInt(e):e;return!isNaN(t)}function D(e,t){return!!(e&&t&&(e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!e)return!1;try{var t=e.ownerDocument.createElement("canvas");t.width=10,t.height=10;var n=t.getContext("2d");return!!n&&(n.drawImage(e,0,0),n.getImageData(0,0,1,1),!0)}catch(e){return!1}}},8318:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2463),o=n(8755);t.default=function(e,t){var n=(0,o.getEditInfoFromImage)(e);if(n){var i=(0,r.default)(n,t),a=i.width,l=i.height;return Math.round(a)==Math.round(n.widthPx)&&Math.round(l)==Math.round(n.heightPx)}return!1}},5801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(8755);t.default=function(e,t){e.addUndoSnapshot((function(){t.style.width="",t.style.height="",t.style.maxWidth="100%",t.removeAttribute("width"),t.removeAttribute("height"),(0,r.deleteEditInfo)(t)}),"ImageResize")}},470:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7058),o=n(2463),i=n(8318),a=n(8755);t.default=function(e,t,n,l,s){var u,d,c,f=(0,a.getEditInfoFromImage)(t);(0,i.default)(t,n)||(u=t,d=t.src,c=function(){if(!e.isDisposed()&&e.contains(t)&&f){var i=t.getAttribute("src"),a=(0,o.default)(f,n),u=a.width,d=a.height;f.widthPx=Math.max(u,l),f.heightPx=Math.max(d,s),e.addUndoSnapshot((function(){(0,r.default)(e,t,f,i||"",!0)}),"ImageResize"),e.select(t)}},u.onload=function(){u.onload=null,u.onerror=null,c()},u.onerror=function(){u.onload=null,u.onerror=null,c()},u.src=d)}},2110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MIN_HEIGHT_WIDTH=t.YS_CROP=t.XS_CROP=t.CROP_HANDLE_WIDTH=t.CROP_HANDLE_SIZE=t.ROTATE_HANDLE_TOP=t.ROTATE_WIDTH=t.Ys=t.Xs=t.ROTATION=t.ROTATE_ICON_MARGIN=t.DEFAULT_ROTATE_HANDLE_HEIGHT=t.DEG_PER_RAD=t.ROTATE_GAP=t.ROTATE_SIZE=t.RESIZE_HANDLE_MARGIN=t.RESIZE_HANDLE_SIZE=void 0,t.RESIZE_HANDLE_SIZE=10,t.RESIZE_HANDLE_MARGIN=6,t.ROTATE_SIZE=32,t.ROTATE_GAP=15,t.DEG_PER_RAD=180/Math.PI,t.DEFAULT_ROTATE_HANDLE_HEIGHT=t.ROTATE_SIZE/2+t.ROTATE_GAP,t.ROTATE_ICON_MARGIN=8,t.ROTATION={sw:0,nw:90,ne:180,se:270},t.Xs=["w","","e"],t.Ys=["s","","n"],t.ROTATE_WIDTH=1,t.ROTATE_HANDLE_TOP=t.ROTATE_GAP+t.RESIZE_HANDLE_MARGIN,t.CROP_HANDLE_SIZE=22,t.CROP_HANDLE_WIDTH=7,t.XS_CROP=["w","e"],t.YS_CROP=["s","n"],t.MIN_HEIGHT_WIDTH=3*t.RESIZE_HANDLE_SIZE+2*t.RESIZE_HANDLE_MARGIN},7058:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6249),o=n(4081),i=n(2448),a=n(8755);t.default=function(e,t,n,l,s,u){var d="",c=(0,a.getEditInfoFromImage)(null!=u?u:t),f=(0,r.default)(n,c);switch(f){case 1:d=n.src;break;case 2:d=l;break;case 3:d=(0,o.default)(null!=u?u:t,n)}d!=l&&(d=e.triggerPluginEvent(19,{image:t,originalSrc:n.src,previousSrc:l,newSrc:d}).newSrc),d==n.src?(0,a.deleteEditInfo)(t):(0,a.saveEditInfo)(t,n);var p=(0,i.default)(n),v=p.targetWidth,h=p.targetHeight;t.src=d,(s||3==f)&&(t.width=v,t.height=h,t.style.removeProperty("width"),t.style.removeProperty("height"),t.style.removeProperty("max-width"))}},6249:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageEditInfoState=void 0;var r,o=n(7582),i=["angleRad"],a=["leftPercent","rightPercent","topPercent","bottomPercent"],l=(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(i),!1),(0,o.__read)(a),!1),s=(0,o.__spreadArray)((0,o.__spreadArray)([],(0,o.__read)(l),!1),(0,o.__read)(["widthPx","heightPx"]),!1);function u(e,t){return Math.abs(e-t)<.001}(r=t.ImageEditInfoState||(t.ImageEditInfoState={}))[r.Invalid=0]="Invalid",r[r.ResizeOnly=1]="ResizeOnly",r[r.SameWithLast=2]="SameWithLast",r[r.FullyChanged=3]="FullyChanged",t.default=function(e,t){return e&&e.src&&!s.some((function(t){return!("number"==typeof e[t])}))?!l.every((function(t){return u(e[t],0)}))||e.flippedHorizontal||e.flippedVertical||t&&(!t||e.angleRad!==t.angleRad)?t&&i.every((function(t){return u(e[t],0)}))&&i.every((function(e){return u(t[e],0)}))&&a.every((function(n){return u(e[n],t[n])}))&&t.flippedHorizontal===e.flippedHorizontal&&t.flippedVertical===e.flippedVertical?2:3:1:0}},8755:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getEditInfoFromImage=t.deleteEditInfo=t.saveEditInfo=void 0;var r=n(6249),o=n(6344);t.saveEditInfo=function(e,t){e&&(0,o.setMetadata)(e,t)},t.deleteEditInfo=function(e){e&&(0,o.removeMetadata)(e)},t.getEditInfoFromImage=function(e){var t=(0,o.getMetadata)(e);return t&&0!=(0,r.default)(t)?t:function(e){return{src:e.getAttribute("src")||"",widthPx:e.clientWidth,heightPx:e.clientHeight,naturalWidth:e.naturalWidth,naturalHeight:e.naturalHeight,leftPercent:0,rightPercent:0,topPercent:0,bottomPercent:0,angleRad:0}}(e)}},4081:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2448);t.default=function(e,t){var n=t.angleRad,o=t.widthPx,i=t.heightPx,a=t.bottomPercent,l=t.leftPercent,s=t.rightPercent,u=t.topPercent,d=t.naturalWidth,c=t.naturalHeight,f=d*(1-l-s),p=c*(1-u-a),v=window.devicePixelRatio||1,h=document.createElement("canvas"),g=(0,r.default)(t),m=g.targetWidth,y=g.targetHeight;h.width=m*v,h.height=y*v;var b=h.getContext("2d");return b&&(b.scale(v,v),b.translate(m/2,y/2),b.rotate(n),b.scale(t.flippedHorizontal?-1:1,t.flippedVertical?-1:1),b.drawImage(e,d*l,c*u,f,p,-o/2,-i/2,o,i)),h.toDataURL("image/png",1)}},2448:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.widthPx,r=e.heightPx,o=e.angleRad,i=n/(1-e.leftPercent-e.rightPercent),a=r/(1-e.topPercent-e.bottomPercent),l=t?i:n,s=t?a:r;return{targetWidth:Math.abs(l*Math.cos(o))+Math.abs(s*Math.sin(o)),targetHeight:Math.abs(l*Math.sin(o))+Math.abs(s*Math.cos(o)),originalWidth:i,originalHeight:a,visibleWidth:l,visibleHeight:s}}},2463:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.naturalWidth,r=e.naturalHeight,o=e.leftPercent,i=e.topPercent;return{width:n*(1-o-e.rightPercent)*t,height:r*(1-i-e.bottomPercent)*t}}},6147:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tryToConvertGifToPng=void 0;var r=n(4081);t.tryToConvertGifToPng=function(e){var t=e.src,n=e.widthPx,o=e.heightPx,i=e.naturalHeight,a=e.naturalWidth;if(t.indexOf(".gif")>-1||t.indexOf("image/gif")>-1)try{var l=document.createElement("img");l.src=t;var s={src:t,widthPx:n,heightPx:o,naturalWidth:a,naturalHeight:i,leftPercent:0,rightPercent:0,topPercent:0,bottomPercent:0,angleRad:0};return(0,r.default)(l,s)}catch(e){return null}return null}},2627:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCropHTML=t.Cropper=void 0;var r=n(7582),o=n(1400),i=n(2110);function a(e,t,n,r,o){var i=n*(1-r)-o,a=n*e+t;return Math.max(Math.min(a,i),0)/n}t.Cropper={onDragStart:function(e){var t=e.editInfo;return(0,r.__assign)({},t)},onDragging:function(e,t,n,i,l){var s,u=e.editInfo,d=e.x,c=e.y,f=e.options;i=(s=(0,r.__read)((0,o.rotateCoordinate)(i,l,u.angleRad),2))[0],l=s[1];var p=u.widthPx,v=u.heightPx,h=u.leftPercent,g=u.rightPercent,m=u.topPercent,y=u.bottomPercent,b=f.minWidth,E=f.minHeight,C=1-h-g,S=1-m-y;if(C>0&&S>0&&void 0!==b&&void 0!==E){var T=p/C,P=v/S,_="e"!=d?a(n.leftPercent,i,T,g,b):h,w="w"!=d?a(n.rightPercent,-i,T,h,b):g,O="s"!=c?a(n.topPercent,l,P,y,E):m,D="n"!=c?a(n.bottomPercent,-l,P,m,E):y;return u.leftPercent=_,u.rightPercent=w,u.topPercent=O,u.bottomPercent=D,u.widthPx=T*(1-_-w),u.heightPx=P*(1-O-D),!0}return!1}},t.getCropHTML=function(){var e={tag:"div",style:"position:absolute;background-color:rgb(0,0,0,0.5);pointer-events:none",className:"r_cropO"},t={tag:"div",style:"position:absolute;overflow:hidden",className:"r_cropC",children:[]};return t&&i.XS_CROP.forEach((function(e){return i.YS_CROP.forEach((function(n){var r;return null===(r=t.children)||void 0===r?void 0:r.push(function(e,t){var n,r="w"==e?"left":"right",o="n"==t?"top":"bottom",a=i.ROTATION[t+e];return{tag:"div",className:"r_cropH",style:"position:absolute;pointer-events:auto;cursor:"+t+e+"-resize;"+r+":0;"+o+":0;width:"+i.CROP_HANDLE_SIZE+"px;height:"+i.CROP_HANDLE_SIZE+"px;transform:rotate("+a+"deg)",dataset:{x:e,y:t},children:(n=[],[0,1].forEach((function(e){return[0,1].forEach((function(t){n.push(function(e,t){return{tag:"div",style:"position:absolute;left:"+e+"px;bottom:"+e+"px;"+(0==t?"right:"+e+"px;height:"+(i.CROP_HANDLE_WIDTH-2*e)+"px;":"top:"+e+"px;width:"+(i.CROP_HANDLE_WIDTH-2*e)+"px;")+";background-color:"+(0==e?"white":"black")}}(e,t))}))})),n)}}(e,n))}))})),[t,e,e,e,e]}},1400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getResizeBordersHTML=t.getSideResizeHTML=t.getCornerResizeHTML=t.doubleCheckResize=t.rotateCoordinate=t.Resizer=void 0;var r,o=n(7582),i=n(2110);function a(e,t,n){if(0==e&&0==t)return[0,0];var r=Math.sqrt(e*e+t*t);return n=Math.atan2(t,e)-n,[r*Math.cos(n),r*Math.sin(n)]}function l(e,t,n,r){var o="w"==e?"left":"right",i="n"==t?"top":"bottom",a=t+e;return""==e&&""==t?null:{tag:"div",style:"position:absolute;"+o+":"+(""==e?"50%":"0px")+";"+i+":"+(""==t?"50%":"0px"),children:[{tag:"div",style:s[r](a,i,o,n),className:"r_resizeH",dataset:{x:e,y:t}}]}}!function(e){e[e.SquareHandles=0]="SquareHandles",e[e.CircularHandlesCorner=1]="CircularHandlesCorner"}(r||(r={})),t.Resizer={onDragStart:function(e){var t=e.editInfo;return(0,o.__assign)({},t)},onDragging:function(e,t,n,r,i){var l,s=e.x,u=e.y,d=e.editInfo,c=e.options,f=n.widthPx>0&&n.heightPx>0?1*n.widthPx/n.heightPx:0;if(r=(l=(0,o.__read)(a(r,i,d.angleRad),2))[0],i=l[1],void 0!==c.minWidth&&void 0!==c.minHeight){var p=""==s,v=""==u,h=!(p||v)&&(c.preserveRatio||t.shiftKey),g=p?n.widthPx:Math.max(n.widthPx+r*("w"==s?-1:1),c.minWidth),m=v?n.heightPx:Math.max(n.heightPx+i*("n"==u?-1:1),c.minHeight);return h&&f>0&&(f>1?(g=m*f)0?o/i:0;n=Math.floor(n),r=Math.floor(r),o=Math.floor(o),i=Math.floor(i),e.widthPx=n,e.heightPx=r,t&&a>0&&(o!==n||i!==r)&&(n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRotateHTML=t.updateRotateHandleState=t.Rotator=void 0;var r=n(7582),o=n(2110);function i(e){var t;return{tag:"svg",namespace:"http://www.w3.org/2000/svg",style:"width:16px;height:16px;margin: "+o.ROTATE_ICON_MARGIN+"px "+o.ROTATE_ICON_MARGIN+"px",children:[{tag:"path",namespace:"http://www.w3.org/2000/svg",attributes:(t={d:"M 10.5,10.0 A 3.8,3.8 0 1 1 6.7,6.3",transform:"matrix(1.1 1.1 -1.1 1.1 11.6 -10.8)"},t["fill-opacity"]="0",t.stroke=e,t)},{tag:"path",namespace:"http://www.w3.org/2000/svg",attributes:{d:"M12.0 3.648l.884-.884.53 2.298-2.298-.53z",stroke:e}}]}}t.Rotator={onDragStart:function(e){var t=e.editInfo;return(0,r.__assign)({},t)},onDragging:function(e,t,n,r,i){var a=e.editInfo,l=e.options,s=a.heightPx/2+o.DEFAULT_ROTATE_HANDLE_HEIGHT,u=s*Math.sin(n.angleRad)+r,d=s*Math.cos(n.angleRad)-i,c=Math.atan2(u,d);if(!t.altKey&&l&&void 0!==l.minRotateDeg){var f=c*o.DEG_PER_RAD;c=Math.round(f/l.minRotateDeg)*l.minRotateDeg/o.DEG_PER_RAD}return a.angleRad!=c&&(a.angleRad=c,!0)}},t.updateRotateHandleState=function(e,t,n,r,i,a){if(a)return r.style.display="none",void(i.style.display="none");r.style.display="",i.style.display="";var l=i.getBoundingClientRect(),s=n.getBoundingClientRect();if(l&&s){var u=Number.MAX_SAFE_INTEGER,d=t*o.DEG_PER_RAD;if(d<45&&d>-45&&s.top-e.top=-100&&s.left-e.left=80&&d<=100&&e.right-s.right=160)&&e.bottom-s.bottom{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resetImage=t.isResizedTo=t.resizeByPercentage=t.canRegenerateImage=t.ImageEdit=void 0;var r=n(9770);Object.defineProperty(t,"ImageEdit",{enumerable:!0,get:function(){return r.default}});var o=n(971);Object.defineProperty(t,"canRegenerateImage",{enumerable:!0,get:function(){return o.default}});var i=n(470);Object.defineProperty(t,"resizeByPercentage",{enumerable:!0,get:function(){return i.default}});var a=n(8318);Object.defineProperty(t,"isResizedTo",{enumerable:!0,get:function(){return a.default}});var l=n(5801);Object.defineProperty(t,"resetImage",{enumerable:!0,get:function(){return l.default}})},8099:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=function(e){function t(t,n,r,o,i){return void 0===t&&(t=10),void 0===n&&(n=10),void 0===r&&(r="#DB626C"),void 0===o&&(o=!1),void 0===i&&(i="img"),e.call(this,{minHeight:n,minWidth:t,borderColor:r,preserveRatio:o,imageSelector:i})||this}return(0,r.__extends)(t,e),t.prototype.showResizeHandle=function(e){this.setEditingImage(e,3)},t.prototype.hideResizeHandle=function(e){this.setEditingImage(null,e)},t}(n(9770).default);t.default=o},9835:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageResize=void 0;var r=n(8099);Object.defineProperty(t,"ImageResize",{enumerable:!0,get:function(){return r.default}})},3835:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7401),o=n(9474),i=n(8373),a=n(1820),l=n(2621),s=n(8149),u=n(5155),d=n(9053),c=n(5323),f=n(6344),p=function(){function e(e,t){void 0===e&&(e="SPAN"),void 0===t&&(t=!1),this.unknownTagReplacement=e,this.convertSingleImageBody=t,this.editor=null}return e.prototype.getName=function(){return"Paste"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&10==e.eventType){var t=e.fragment,n=e.sanitizingOption,p=this.editor.getTrustedHTMLHandler();switch((0,f.getPasteSource)(e,this.convertSingleImageBody)){case 0:(0,s.default)(e);break;case 1:case 2:0!==e.pasteType&&2!==e.pasteType||(0,i.default)(e,p);break;case 3:(0,l.default)(e,p);break;case 5:(0,a.default)(t,n);break;case 4:n.additionalTagReplacements["google-sheets-html-origin"]="*";break;case 7:(0,r.default)(e,p);break;case 6:(0,o.default)(t),(0,u.default)(t)}(0,c.default)(n),(0,d.default)(n),function(e){(0,f.chainSanitizerCallback)(e.cssStyleCallbacks,"display",(function(e){return"flex"!=e}))}(n),n.unknownTagReplacement=this.unknownTagReplacement}},e}();t.default=p},9474:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){if(e&&!e.nextSibling&&["OL","UL","MENU"].indexOf((0,r.getTagOfNode)(e))<0){var t=!1;if((0,r.toArray)(e.childNodes).every((function(e){var n;return!(!(0,r.safeInstanceOf)(e,"Text")||(null===(n=e.nodeValue)||void 0===n?void 0:n.trim()))||"LI"==(0,r.getTagOfNode)(e)&&(t=!0,!0)}))&&t)return!0}return!1}t.default=function(e){o(e)?(0,r.wrap)((0,r.toArray)(e.childNodes),"UL"):(0,r.safeInstanceOf)(e.firstChild,"HTMLElement")&&o(e.firstChild)&&(0,r.changeElementTag)(e.firstChild,"UL")}},8373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.excelHandler=void 0;var r=n(6344),o=/<\/\s*td\s*>((?!<\/\s*tr\s*>)[\s\S])*$/i,i=/<\/\s*tr\s*>((?!<\/\s*table\s*>)[\s\S])*$/i,a=/]*>[^<]*/i,l=/]*>[^<]*/i;function s(e,t){if(e.match(o)){var n=t.match(a);e=(n?n[0]:"")+e+""}if(e.match(i)){var r=t.match(l);e=(r?r[0]:"")+e+"
                "}return e}t.default=function(e,t){var n=e.fragment,o=e.sanitizingOption,i=e.htmlBefore,a=e.clipboardData,l=a.html?s(a.html,i):void 0;if(l&&a.html!=l){var u=(new DOMParser).parseFromString(t(l),"text/html");(0,r.moveChildNodes)(n,null==u?void 0:u.body)}var d=n.firstChild;d&&d.childNodes.length>0&&"DIV"==(0,r.getTagOfNode)(d)&&Array.from(d.childNodes).every((function(e){return"META"==(0,r.getTagOfNode)(e)||"TABLE"==(0,r.getTagOfNode)(e)&&e==d.lastChild}))&&d.lastChild&&e.fragment.replaceChildren(d.lastChild),(0,r.chainSanitizerCallback)(o.elementCallbacks,"TD",(function(e){return"none"==e.style.borderStyle&&(e.style.border="solid 1px #d4d4d4"),!0}))},t.excelHandler=s},7401:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){var n=e.fragment,o=e.clipboardData,i=o.html,a=o.image;if(i&&a){var l=(new DOMParser).parseFromString(t(i),"text/html");(0,r.moveChildNodes)(n,null==l?void 0:l.body)}}},2184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Paste=void 0;var r=n(3835);Object.defineProperty(t,"Paste",{enumerable:!0,get:function(){return r.default}})},5155:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);function o(e){var t,n,o,i=e.start,a=e.end;if(i==a&&"DIV"==(0,r.getTagOfNode)(i)){var l=(0,r.changeElementTag)(i,"SPAN");e.start=l,e.end=l,l&&l.lastChild&&"BR"==(0,r.getTagOfNode)(l.lastChild)&&l.removeChild(l.lastChild)}else"BR"==(0,r.getTagOfNode)(a)&&(l=null===(t=a.ownerDocument)||void 0===t?void 0:t.createTextNode(""))&&(null===(n=a.parentNode)||void 0===n||n.insertBefore(l,a),e.end=l,null===(o=a.parentNode)||void 0===o||o.removeChild(a))}function i(e,t,n,o){var i,a,l,s,u=(0,r.getBlockElementAtNode)(e,t.start),d=n?(0,r.getNextLeafSibling)(e,t.end):(0,r.getPreviousLeafSibling)(e,t.start);if(d)if(null==u?void 0:u.contains(d))(c=null===(i=t.start.ownerDocument)||void 0===i?void 0:i.createElement("br"))&&(null===(a=(n?t.end:t.start).parentNode)||void 0===a||a.insertBefore(c,n?t.end.nextSibling:t.start));else if(o&&o.end==o.start&&"SPAN"==(0,r.getTagOfNode)(o.end)){var c,f=(0,r.getPreviousLeafSibling)(e,t.start);o.end.contains(f)&&!(0,r.findClosestElementAncestor)(t.start,e,"li")&&(c=null===(l=t.start.ownerDocument)||void 0===l?void 0:l.createElement("br"))&&(null===(s=t.start.parentNode)||void 0===s||s.insertBefore(c,t.start))}}t.default=function(e){for(var t=r.ContentTraverser.createBodyTraverser(e),n=[],a=null==t?void 0:t.currentBlockElement;a;a=t.getNextBlockElement())n.push({start:a.getStartNode(),end:a.getEndNode()});if(n.length>0){var l=n.length-1;o(n[0]),o(n[l]),i(e,n[0],!0),i(e,n[l],!1,n[0])}}},6728:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createListItemBlock=void 0,t.createListItemBlock=function(e){return void 0===e&&(e=null),{startElement:e,endElement:e,insertPositionNode:null,listItemContainers:e?[e]:[]}}},1820:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(8979),i=["TableInsertRowGapBlank","TableColumnResizeHandle","TableCellTopBorderHandle","TableCellLeftBorderHandle","TableHoverColumnHandle","TableHoverRowHandle"].map((function(e){return"."+e})).join(",");t.default=function(e,t){e.querySelectorAll('ul[class^="BulletListStyle"]>.OutlineElement,ol[class^="NumberListStyle"]>.OutlineElement,span.WACImageContainer').forEach((function(e){var t=e;t.style.removeProperty("display"),t.style.removeProperty("margin")})),(0,o.isWordOnlineWithList)(e)&&(0,o.default)(e),(0,r.chainSanitizerCallback)(t.cssStyleCallbacks,"border",(function(e,t){return"IMG"!=t.tagName||"none"!=e})),e.querySelectorAll(i).forEach((function(e){var t;return null===(t=e.parentElement)||void 0===t?void 0:t.removeChild(e)}))}},8979:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isWordOnlineWithList=void 0;var r=n(6728),o=n(6344),i='div.ListContainerWrapper>ul[class^="BulletListStyle"],div.ListContainerWrapper>ol[class^="NumberListStyle"],span.WACImageContainer > img',a="ListContainerWrapper",l=["111","9643","9830"];function s(e,t,n){var r,o=t.createElement(n),i=null===(r=e.firstElementChild)||void 0===r?void 0:r.getAttribute("start");return i&&o.setAttribute("start",i),o}function u(e,t,n){var r;if(e){var o,i=n.insertPositionNode;i?(o=i.parentNode)&&o.insertBefore(e,i):(o=null===(r=n.startElement)||void 0===r?void 0:r.parentNode)?o.appendChild(e):t.appendChild(e)}}t.isWordOnlineWithList=function(e){return!(!e||!e.querySelector(i))},t.default=function(e){!function(e){(0,o.toArray)(e.querySelectorAll(i)).forEach((function(e){var t=new RegExp("\\b"+a+"\\b","g");if(e.previousSibling){var n=(0,o.splitParentNode)(e,!0);n.className=n.className.replace(t,"")}if(e.nextSibling){var r=(0,o.splitParentNode)(e,!1);r.className=r.className.replace(t,"")}}))}(e),function(e){for(var t=e.querySelectorAll("."+a),n=[],i=null,l=0;l0&&n.push(i),n}(e).forEach((function(t){var n,r,i;!function(e,t){t.startElement&&t.endElement&&(0,o.collapseNodes)(e,t.startElement,t.endElement,!0).forEach((function(e){"DIV"==(0,o.getTagOfNode)(e.firstChild)&&(0,o.unwrap)(e)}))}(e,t),t.insertPositionNode=null!==(r=null===(n=t.endElement)||void 0===n?void 0:n.nextSibling)&&void 0!==r?r:null;var a=void 0,d=e.ownerDocument;t.listItemContainers.forEach((function(n){var r=function(e){var t=(0,o.getTagOfNode)(e.firstChild);return"UL"==t||"OL"==t?t:null}(n);r&&(a||(a=s(n,d,r)),(0,o.toArray)(n.querySelectorAll("li")).forEach((function(i){var c,f=parseInt(null!==(c=i.getAttribute("data-aria-level"))&&void 0!==c?c:"");a&&(0,o.getTagOfNode)(a)!=r&&1==f&&r&&(u(a,e,t),a=s(n,d,r)),a&&r&&function(e,t,n,r){var i;if(n){var a=parseInt(null!==(i=t.getAttribute("data-aria-level"))&&void 0!==i?i:""),s=t.getAttribute("data-leveltext");"UL"==n&&s&&l.indexOf(s.charCodeAt(0).toString())>-1&&(t.style.listStyleType='"'+s+' "');for(var u=e;a>1;){if(u.firstChild){var d=u.lastElementChild,c=(0,o.getTagOfNode)(d);!d||"UL"!=c&&"OL"!=c?(u.appendChild(r.createElement(n)),u.lastElementChild&&(u=u.lastElementChild)):u=d}else u.appendChild(r.createElement(n)),u.firstElementChild&&(u=u.firstElementChild);a--}u.appendChild(t)}}(a,i,r,d)})))})),a&&u(a,e,t);var c=null===(i=t.startElement)||void 0===i?void 0:i.parentNode;c&&t.listItemContainers.forEach((function(e){c.removeChild(e)}))})),function(e){return e.querySelectorAll(".WACImageContainer")}(e).forEach((function(e){(0,o.safeInstanceOf)(e,"HTMLSpanElement")&&e.childNodes.forEach((function(e){var t;"IMG"!=(0,o.getTagOfNode)(e)&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e))}))}))}},2621:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t){var n=e.fragment,o=e.clipboardData;if(o.html&&!o.text&&o.image){var i=(new DOMParser).parseFromString(t(o.html),"text/html");(0,r.moveChildNodes)(n,null==i?void 0:i.body)}}},4726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecatedColorList=void 0,t.DeprecatedColorList=["activeborder","activecaption","appworkspace","background","buttonhighlight","buttonshadow","captiontext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedfhadow","window","windowframe","windowtext"]},9053:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(4726);t.default=function(e){["color","background-color"].forEach((function(t){(0,r.chainSanitizerCallback)(e.cssStyleCallbacks,t,(function(e){return o.DeprecatedColorList.indexOf(e)<0}))}))}},5323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=["http:","https:","notes:","mailto:","onenote:"];t.default=function(e){(0,r.chainSanitizerCallback)(e.attributeCallbacks,"href",(function(e,t){return function(e,t){var n;try{n=new URL(e)}catch(e){n=void 0}return n&&o.indexOf(n.protocol)>-1?e:(t.removeAttribute("href"),"")}(e,t)}))}},3825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLevelLists=void 0,t.createLevelLists=function(){return{listsMetadata:{},currentUniqueListId:-1}}},6482:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createWordConverterArguments=void 0;var r=n(3825);t.createWordConverterArguments=function(e){return{nodes:e,currentIndex:0,lists:{},listItems:[],currentListIdsByLevels:[(0,r.createLevelLists)()],lastProcessedItem:null}}},9873:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getObject=t.setObject=t.createCustomData=void 0;var n="NodeId";function r(e,t){var r=t.getAttribute(n);return r||(r=e.nextNodeId.toString(),e.nextNodeId++,t.setAttribute(n,r)),r}t.createCustomData=function(){return{dict:{},nextNodeId:1}},t.setObject=function(e,t,n,o){if(1==t.nodeType){var i=r(e,t);""!=i&&(e.dict[i]||(e.dict[i]={}),e.dict[i][n]=o)}},t.getObject=function(e,t,n){if(1==t.nodeType){var o=r(e,t);if(""!=o)return e.dict[o]&&e.dict[o][n]}return null}},7921:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o="mso-comment-parent",i="mso-comment-reference",a="mso-comment-date",l=/#_msocom_/,s="mso-comment-continuation",u="mso-comment-done";t.default=function(e,t){(0,r.chainSanitizerCallback)(e,"SPAN",(function(e){var t;return"comment"==(0,r.getStyles)(e)["mso-special-character"]&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e)),!0})),(0,r.chainSanitizerCallback)(e,"A",(function(e){var t;return(0,r.safeInstanceOf)(e,"HTMLAnchorElement")&&l.test(e.href)&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e)),!0})),(0,r.chainSanitizerCallback)(e,"DIV",(function(e){return"comment-list"==(0,r.getStyles)(e)["mso-element"]&&(0,r.moveChildNodes)(e),!0})),[i,a,o,s,u].forEach((function(e){return(0,r.chainSanitizerCallback)(t,e,(function(){return!1}))}))}},8149:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7921),o=n(6344),i=n(4704),a=n(6482),l=n(1101),s=/%/;t.default=function(e){var t=e.sanitizingOption,n=e.fragment;(0,o.chainSanitizerCallback)(t.elementCallbacks,"O:P",(function(e){return(0,o.moveChildNodes)(e),e.appendChild(e.ownerDocument.createTextNode(" ")),!0}));var u=(0,i.createWordConverter)(),d=n.querySelectorAll("p,h1,h2,h3,h4,h5,h6");d.length>0&&(u.wordConverterArgs=(0,a.createWordConverterArguments)(d),(0,l.processNodesDiscovery)(u)&&(0,l.processNodeConvert)(u)),["OL","UL"].forEach((function(e){(0,o.chainSanitizerCallback)(t.elementCallbacks,e,(function(e){return"0in"==e.style.marginBottom&&(e.style.marginBottom=""),!0}))})),(0,o.chainSanitizerCallback)(t.cssStyleCallbacks,"line-height",(function(e){var t;return!(s.test(e)&&!isNaN(t=parseInt(e))&&t<120)})),(0,r.default)(t.elementCallbacks,t.cssStyleCallbacks)}},1101:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.processNodeConvert=t.processNodesDiscovery=void 0;var r=n(3825),o=n(9873),i=n(6344),a="UniqueListId",l="mso-list",s=/[\n|\r]/gi;function u(e,t,n,r){var l,s=d(t,n.level,r),u=(0,o.getObject)(e.wordCustomData,s,a);if(u&&u!=n.uniqueListId||!u&&s.firstChild){var c=t.ownerDocument.createElement(r.tagName);null===(l=s.parentNode)||void 0===l||l.insertBefore(c,s.nextSibling),s=c}return(0,o.setObject)(e.wordCustomData,s,a,n.uniqueListId),function(e,t,n){var r,l,s;if(n.tagName!=(0,i.getTagOfNode)(t)){var u=null===(r=t.ownerDocument)||void 0===r?void 0:r.createElement(n.tagName);u&&((0,o.setObject)(e.wordCustomData,u,a,(0,o.getObject)(e.wordCustomData,t,a)),(0,i.moveChildNodes)(u,t),null===(l=t.parentNode)||void 0===l||l.insertBefore(u,t),null===(s=t.parentNode)||void 0===s||s.removeChild(t),t=u)}return t}(e,s,r)}function d(e,t,n){var r,o,a=null,l=null;if(1==t?l=g(e):(a=d(e,t-1,null)).lastChild&&(l=a.lastChild),l&&1==l.nodeType){var s=(0,i.getTagOfNode)(l);if("UL"==s||"OL"==s)return l}var u=null===(r=e.ownerDocument)||void 0===r?void 0:r.createElement(n?n.tagName:"UL");return 1==t?null===(o=e.parentNode)||void 0===o||o.insertBefore(u,e):null==a||a.appendChild(u),u}function c(e,t){for(var n=[],r=e.firstChild;r;r=r.nextSibling)r&&(r&&1==r.nodeType&&t>1&&c(r,t-1),(b(r=h(r,!0))||y(r))&&n.push(r));n.forEach((function(t){return e.removeChild(t)}))}function f(e){if(1==e.nodeType){var t=E(e,l);if(t&&t.length>0)try{var n=t.split(" ");if(3==n.length)return{level:parseInt(n[1].substr(5)),wordListId:t,originalNode:e,uniqueListId:0}}catch(e){}}return null}function p(e){return["o","·","§","-"].indexOf(e)>=0}function v(e,t){for(var n,r,o="",i=e.firstChild;!o&&i;)y(i=h(i,!0))?0==(o=null!==(r=null===(n=i.textContent)||void 0===n?void 0:n.trim())&&void 0!==r?r:"").length&&(o="o"):1==i.nodeType&&t>1&&(o=v(i,t-1)),i=i.nextSibling;return o}function h(e,t){var n,r,o,i;if(8==e.nodeType){var a=e.data;if(a&&"[if !supportlists]"==a.trim().toLowerCase()){for(var l=e,s=null,u=0;u<4&&(l=m(l));u++)if(8==l.nodeType&&(a=l.data)&&"[endif]"==a.trim().toLowerCase()){s=l;break}if(s){var d=null===(n=e.ownerDocument)||void 0===n?void 0:n.createElement("span");for(null==d||d.setAttribute("style","mso-list: ignore"),l=m(e);l!=s;)(l=null==l?void 0:l.nextSibling).previousSibling&&(null==d||d.appendChild(l.previousSibling));d&&(null===(r=s.parentNode)||void 0===r||r.insertBefore(d,s)),t&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e),null===(i=s.parentNode)||void 0===i||i.removeChild(s)),d&&(e=d)}}}return e}function g(e){var t=e;do{t=t.previousSibling}while(t&&C(t));return t}function m(e){var t=e;do{t=t.nextSibling}while(t&&C(t));return t}function y(e){if(1==e.nodeType){var t=E(e,l);if(t&&t.length>0&&"ignore"==t.trim().toLowerCase())return!0}return!1}function b(e){return"SPAN"==(0,i.getTagOfNode)(e)&&!e.firstChild}function E(e,t){return(0,i.getStyles)(e)[t]||null}function C(e){var t;if(!e)return!0;if(3==e.nodeType){var n=e.nodeValue;return 0==(null==(n=null!==(t=null==n?void 0:n.replace(s,""))&&void 0!==t?t:"")?void 0:n.trim().length)}var r=(0,i.getTagOfNode)(e);return!(!e.firstChild||e.firstChild!=e.lastChild||"SPAN"!=r&&"FONT"!=r)&&C(e.firstChild)}function S(e){for(var t=0;t0&&s.currentUniqueListId!=l.uniqueListId?(u.ignore=!0,o.currentListIdsByLevels[0].currentUniqueListId=-1,o.currentListIdsByLevels=o.currentListIdsByLevels.slice(0,1)):(o.currentListIdsByLevels.length>l.level&&(o.currentListIdsByLevels=o.currentListIdsByLevels.slice(0,l.level)),s.currentUniqueListId=l.uniqueListId,o.listItems.push(l),u.numberOfItems++),o.lastProcessedItem=a}else{var h=o.lastProcessedItem;h&&g(a)==h&&a.tagName==h.tagName&&a.className==h.className&&(h.appendChild(h.ownerDocument.createElement("br")),h.appendChild(h.ownerDocument.createElement("br")),(0,i.moveChildNodes)(h,a,!0),null===(t=a.parentNode)||void 0===t||t.removeChild(a))}o.currentIndex++}return o.listItems.length>0},t.processNodeConvert=function(e){var t,n=e.wordConverterArgs;if(n)for(n.currentIndex=0;n.currentIndex0||e.numNumberedConverted>0}},4704:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createWordConverter=void 0;var r=n(9873);t.createWordConverter=function(){return{nextUniqueId:1,numBulletsConverted:0,numNumberedConverted:0,wordConverterArgs:null,wordCustomData:(0,r.createCustomData)()}}},6575:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4548),o=n(6344),i="Backspace",a=o.Browser.isIE?"Esc":"Escape",l=o.Browser.isIE?"Left":"ArrowLeft",s=o.Browser.isIE?"Up":"ArrowUp",u=o.Browser.isIE?"Right":"ArrowRight",d=o.Browser.isIE?"Down":"ArrowDown",c=o.Browser.isIE?"Del":"Delete",f=[0,229],p=function(){function e(e,t){this.dataProvider=e,this.pickerOptions=t,this.editor=null,this.eventHandledOnKeyDown=!1,this.blockSuggestions=!1,this.isSuggesting=!1,this.lastKnownRange=null,this.isPendingInputEventHandling=!1,this.currentInputLength=0,this.newInputLength=0}return e.prototype.getName=function(){return"Picker"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.dataProvider.onInitalize((function(e){if(t.editor){t.editor.focus();var n=t.getWord(null);n&&0!=n.length||!t.lastKnownRange||(t.editor.select(t.lastKnownRange),n=t.getWord(null)),t.editor.addUndoSnapshot((function(){var o;n&&t.editor?(0,r.replaceWithNode)(t.editor,n,e,!0):null===(o=t.editor)||void 0===o||o.insertNode(e),t.setIsSuggesting(!1)}),t.pickerOptions.changeSource,t.pickerOptions.handleAutoComplete)}}),(function(e){t.setIsSuggesting(e)}),e)},e.prototype.dispose=function(){this.editor=null,this.isSuggesting=!1,this.blockSuggestions=!1,this.eventHandledOnKeyDown=!1,this.lastKnownRange=null,this.isPendingInputEventHandling=!1,this.currentInputLength=0,this.newInputLength=0,this.dataProvider.onDispose()},e.prototype.willHandleEventExclusively=function(e){return this.isSuggesting&&(0==e.eventType||2==e.eventType||3==e.eventType)},e.prototype.onPluginEvent=function(e){var t;switch(e.eventType){case 7:if("SetContent"==e.source&&this.dataProvider.onContentChanged){this.isSuggesting&&this.setIsSuggesting(!1);var n=[];null===(t=this.editor)||void 0===t||t.queryElements("[id^='"+this.pickerOptions.elementIdPrefix+"']",(function(e){e.id&&n.push(e.id)})),this.dataProvider.onContentChanged(n)}break;case 0:this.eventHandledOnKeyDown=!1,this.isAndroidKeyboardEvent(e)?(this.currentInputLength=this.calcInputLength(e),this.isPendingInputEventHandling=!0):(this.onKeyDownEvent(e),this.isPendingInputEventHandling=!1);break;case 3:this.isPendingInputEventHandling&&this.onAndroidInputEvent(e);break;case 2:!this.eventHandledOnKeyDown&&this.shouldHandleKeyUpEvent(e)&&(this.onKeyUpDomEvent(e),this.isPendingInputEventHandling=!1);break;case 6:this.isSuggesting&&this.setIsSuggesting(!1);break;case 14:this.dataProvider.onScroll&&this.dataProvider.onScroll(e.scrollContainer)}},e.prototype.setLastKnownRange=function(e){this.lastKnownRange=e},e.prototype.setIsSuggesting=function(e){this.isSuggesting=e,e||this.setLastKnownRange(null),this.dataProvider.onIsSuggestingChanged(e),this.setAriaOwns(e),this.setAriaActiveDescendant(e?0:null)},e.prototype.cancelDefaultKeyDownEvent=function(e){this.eventHandledOnKeyDown=!0,e.rawEvent.preventDefault(),e.rawEvent.stopImmediatePropagation()},e.prototype.getIdValue=function(e){if((0,o.safeInstanceOf)(e,"HTMLElement")){var t=e.attributes.getNamedItem("id");return t?t.value:null}return null},e.prototype.getWordBeforeCursor=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e);return n?n.getWordBefore():null},e.prototype.replaceNode=function(e,t){var n,r;e&&(null===(n=this.editor)||void 0===n||n.deleteNode(e)),t&&(null===(r=this.editor)||void 0===r||r.insertNode(t))},e.prototype.getRangeUntilAt=function(e){var t,n,r,i=this,a=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e),l=void 0,s=void 0;return null==a||a.forEachTextInlineElement((function(e){for(var t=!1,n=e.getTextContent(),r=n?n.length:-1;r>=0;){if(n[r]==i.pickerOptions.triggerCharacter){l=e.getStartPosition().move(r),t=!0;break}r--}return t&&(s=e.getEndPosition()),t})),l?(0,o.createRange)(l,s):null!==(r=null===(n=this.editor)||void 0===n?void 0:n.getDocument().createRange())&&void 0!==r?r:null},e.prototype.shouldHandleKeyUpEvent=function(e){return this.isAndroidKeyboardEvent(e)||(0,o.isCharacterValue)(e.rawEvent)||this.isSuggesting&&!(0,o.isModifierKey)(e.rawEvent)},e.prototype.onKeyUpDomEvent=function(e){var t,n,r,o,i;if(this.editor)if(this.isSuggesting){if(null!==(l=this.getWord(e))){var a=(s=l.substring(1)).trim();l==this.pickerOptions.triggerCharacter||a&&a.length>0&&a.split(" ").length<=4?(this.dataProvider.queryStringUpdated(a,s==a),this.setLastKnownRange(null!==(t=this.editor.getSelectionRange())&&void 0!==t?t:null)):this.setIsSuggesting(!1)}}else{var l=this.getWordBeforeCursor(e);if(this.blockSuggestions)null!=l&&l[0]!=this.pickerOptions.triggerCharacter&&(this.blockSuggestions=!1);else if(null!=l&&l.split(" ").length<=4&&l[0]==this.pickerOptions.triggerCharacter){var s;if(this.setIsSuggesting(!0),a=(s=l.substring(1)).trim(),this.dataProvider.queryStringUpdated(a,s==a),this.setLastKnownRange(null!==(n=this.editor.getSelectionRange())&&void 0!==n?n:null),this.dataProvider.setCursorPoint){var u=this.editor.getContentSearcherOfCursor(e),d=this.editor.getDocument().createRange();if(d){var c=null!==(o=null===(r=null==u?void 0:u.getInlineElementBefore())||void 0===r?void 0:r.getContainerNode())&&void 0!==o?o:null;if(!this.setRangeStart(d,c,l)){var f=null!==(i=null==c?void 0:c.previousSibling)&&void 0!==i?i:null;this.setRangeStart(d,f,this.pickerOptions.triggerCharacter)}var p=d.getBoundingClientRect();if(0==p.left&&0==p.bottom&&0==p.top&&(p=d.getClientRects()[0]),p){d.detach();var v={x:p.left,y:(p.bottom+p.top)/2},h=(p.bottom-p.top)/2;this.dataProvider.setCursorPoint(v,h)}}}}}},e.prototype.onKeyDownEvent=function(e){var t,n,r=e.rawEvent;if(this.isSuggesting)r.key==a?(this.setIsSuggesting(!1),this.blockSuggestions=!0,this.cancelDefaultKeyDownEvent(e)):r.key==i?this.getWord(e)==this.pickerOptions.triggerCharacter&&this.setIsSuggesting(!1):this.dataProvider.shiftHighlight&&(this.pickerOptions.isHorizontal?r.key==l||r.key==u:r.key==s||r.key==d)?(this.dataProvider.shiftHighlight(this.pickerOptions.isHorizontal?r.key==u:r.key==d),this.dataProvider.getSelectedIndex&&this.setAriaActiveDescendant(this.dataProvider.getSelectedIndex()),this.cancelDefaultKeyDownEvent(e)):!this.dataProvider.selectOption||"Enter"!=r.key&&"Tab"!=r.key||(this.dataProvider.selectOption(),this.cancelDefaultKeyDownEvent(e));else if(r.key==i)this.tryRemoveNode(e)&&this.cancelDefaultKeyDownEvent(e);else if(r.key==c){var o=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e);if(o){var f=o.getInlineElementAfter()?null===(n=o.getInlineElementAfter())||void 0===n?void 0:n.getContainerNode():null,p=f?this.getIdValue(f):null;if(p&&0==p.indexOf(this.pickerOptions.elementIdPrefix)&&f){var v=this.dataProvider.onRemove(f,!1);this.replaceNode(f,v),this.cancelDefaultKeyDownEvent(e)}}}},e.prototype.onAndroidInputEvent=function(e){this.newInputLength=this.calcInputLength(e),(this.newInputLength-1)&&(e.setStart(t,r),!0)},e.prototype.setAriaOwns=function(e){var t;null===(t=this.editor)||void 0===t||t.setEditorDomAttribute("aria-owns",e&&this.pickerOptions.suggestionsLabel?this.pickerOptions.suggestionsLabel:null)},e.prototype.setAriaActiveDescendant=function(e){var t;null===(t=this.editor)||void 0===t||t.setEditorDomAttribute("aria-activedescendant",null!=e&&this.pickerOptions.suggestionLabelPrefix?this.pickerOptions.suggestionLabelPrefix+e.toString():null)},e.prototype.getInlineElementBeforeCursor=function(e){var t,n=null===(t=this.editor)||void 0===t?void 0:t.getContentSearcherOfCursor(e),r=n?n.getInlineElementBefore():null;return r?r.getTextContent():null},e.prototype.isAndroidKeyboardEvent=function(e){return"Unidentified"==e.rawEvent.key||null==e.rawEvent.key&&f.indexOf(e.rawEvent.charCode)>-1},e}();t.default=p},8833:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PickerPlugin=void 0;var r=n(6575);Object.defineProperty(t,"PickerPlugin",{enumerable:!0,get:function(){return r.default}})},9467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7905),o=n(191),i=n(4199),a=n(6817),l=n(9905),s=n(1679),u=function(){function e(){this.editor=null,this.shadowEditCoordinatesBackup=null,this.state={firstTable:null,lastTarget:null,firstTarget:null,preventKeyUp:!1,startedSelection:!1,tableSelection:!1,targetTable:null,vTable:null,mouseMoveDisposer:null}}return e.prototype.getName=function(){return"TableCellSelection"},e.prototype.initialize=function(e){this.editor=e,this.editor.addContentEditFeature(o.DeleteTableContents)},e.prototype.dispose=function(){(0,r.clearState)(this.state,this.editor),this.state=null,this.editor=null},e.prototype.onPluginEvent=function(e){if(this.editor&&this.state)switch(e.eventType){case 17:this.handleEnteredShadowEdit(this.state,this.editor);break;case 18:this.handleLeavingShadowEdit(this.state,this.editor);break;case 5:this.state.startedSelection||(0,l.handleMouseDownEvent)(e,this.state,this.editor);break;case 0:this.state.startedSelection?e.rawEvent.preventDefault():(0,i.handleKeyDownEvent)(e,this.state,this.editor);break;case 2:this.state.startedSelection?e.rawEvent.preventDefault():(0,a.handleKeyUpEvent)(e,this.state,this.editor);break;case 14:this.state.startedSelection&&(0,s.handleScrollEvent)(this.state,this.editor);break;case 20:this.state.firstTable=null,this.state.tableSelection=!1,this.editor.select(null)}},e.prototype.handleLeavingShadowEdit=function(e,t){if(e.firstTable&&e.tableSelection&&e.firstTable){var n=t.queryElements("#"+e.firstTable.id);1==n.length&&(e.firstTable=n[0],t.select(e.firstTable,this.shadowEditCoordinatesBackup),this.shadowEditCoordinatesBackup=null)}},e.prototype.handleEnteredShadowEdit=function(e,t){var n,r=t.getSelectionRangeEx();1==r.type&&(this.shadowEditCoordinatesBackup=null!==(n=r.coordinates)&&void 0!==n?n:null,e.firstTable=r.table,e.tableSelection=!0,t.select(r.table,null))},e}();t.default=u},4332:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TABLE_CELL_SELECTOR=void 0,t.TABLE_CELL_SELECTOR="td,th"},191:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteTableContents=void 0;var r=n(6344),o=n(4332);function i(e,t){if((0,r.safeInstanceOf)(e,"HTMLTableCellElement")){var n=new Range;n.selectNodeContents(e),n.deleteContents(),e.appendChild(t.getDocument().createElement("br"))}}t.DeleteTableContents={keys:[46,8],shouldHandleEvent:function(e,t){return 1==t.getSelectionRangeEx().type},handleEvent:function(e,t){var n=t.getSelectionRangeEx();1==n.type&&t.addUndoSnapshot((function(){n.isWholeTableSelected?n.table.querySelectorAll(o.TABLE_CELL_SELECTOR).forEach((function(e){return i(e,t)})):t.getSelectedRegions().forEach((function(e){return i(e.rootNode,t)}))}))}}},7311:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableCellSelection=void 0;var r=n(9467);Object.defineProperty(t,"TableCellSelection",{enumerable:!0,get:function(){return r.default}})},4199:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleKeyDownEvent=void 0;var r=n(4192),o=n(8098),i=n(4846),a=n(8533),l=n(4550),s=n(7463),u=n(4332),d=n(1648),c=n(6344);t.handleKeyDownEvent=function(e,t,n){var f=e.rawEvent,p=f.shiftKey,v=f.ctrlKey,h=f.metaKey,g=f.which,m=f.defaultPrevented;if(p&&(v||h)||16==g||m)t.preventKeyUp=m;else{var y=n.getSelectionRangeEx();if(p){if(!t.firstTarget){var b=n.getFocusedPosition(),E=b&&(0,r.getCellAtCursor)(n,b.node);t.firstTarget=E}if(!(0,c.safeInstanceOf)(t.firstTarget,"HTMLTableCellElement"))return;n.runAsync((function(n){var f=n.getFocusedPosition(),p=t.tableSelection?t.lastTarget:null==f?void 0:f.node;if(p&&(0,s.setData)(p,t,n),t.firstTable==t.targetTable){if(!function(e,t){if(!e.firstTable||!t)return!1;var n=t.getSelectedRegions();if(1==n.length)return!1;var r=!0;return n.forEach((function(t){(0,c.contains)(e.firstTable,t.rootNode)||(r=!1)})),r}(t,n)&&!t.tableSelection)return;!function(e,t,n){var s,f;t.firstTarget=(0,r.getCellAtCursor)(n,t.firstTarget),t.lastTarget=(0,r.getCellAtCursor)(n,t.lastTarget),(0,d.updateSelection)(n,t.firstTarget,0),t.vTable=t.vTable||new c.VTable(t.firstTable);var p=(0,o.getCellCoordinates)(t.vTable,t.firstTarget),v=function(e,t,n){var r;if(n.lastTarget=n.lastTarget&&t.getElementAtCursor(u.TABLE_CELL_SELECTOR,n.lastTarget),(0,c.safeInstanceOf)(n.lastTarget,"HTMLTableCellElement")&&(null===(r=n.vTable)||void 0===r?void 0:r.cells)){var i=(0,o.getCellCoordinates)(n.vTable,n.lastTarget);if(n.tableSelection&&i)switch(e.rawEvent.which){case 39:i.x+=n.lastTarget.colSpan,null==n.vTable.cells[i.y][i.x]&&(i.x=n.vTable.cells[i.y].length-1,i.y++);break;case 37:0==i.x?i.y--:i.x--;break;case 38:i.y--;break;case 40:i.y++}return i&&i.y>=0&&i.x>=0&&(n.lastTarget=n.vTable.getTd(i.y,i.x)),i}}(e,n,t);if(p&&v){t.vTable.selection={firstCell:p,lastCell:v};var h=t.vTable.selection;if(!h.lastCell||t.vTable.cells&&h.lastCell.y>t.vTable.cells.length-1||-1==h.lastCell.y)if(t.lastTarget=n.getElementAtCursor(u.TABLE_CELL_SELECTOR+",div",null!==(s=t.firstTable)&&void 0!==s?s:void 0),(0,c.safeInstanceOf)(t.lastTarget,"HTMLTableCellElement"))(0,a.prepareSelection)(t,n);else{var g=t.targetTable&&new c.Position(t.targetTable,null==h.lastCell.y||-1==h.lastCell.y?-2:-3),m=null===(f=n.getDocument().defaultView)||void 0===f?void 0:f.getSelection(),y=m||{},b=y.anchorNode,E=y.anchorOffset;if(m&&b&&null!=E&&null!=E&&g)return n.select(m.getRangeAt(0)),m.setBaseAndExtent(b,E,g.node,g.offset),t.lastTarget=g.node,void e.rawEvent.preventDefault()}(0,l.selectTable)(n,t);var C=(0,i.isAfter)(t.firstTarget,t.lastTarget);if(t.lastTarget){var S=new c.Position(t.lastTarget,C?0:-1);(0,d.updateSelection)(n,S.node,S.offset)}t.tableSelection=!0,e.rawEvent.preventDefault()}}(e,t,n)}else t.tableSelection&&(t.firstTable&&n.select(t.firstTable,null),t.tableSelection=!1)}))}else if(1==(null==y?void 0:y.type)&&(!(0,c.isCtrlOrMetaPressed)(e.rawEvent)||36==g||35==g)){var C=y.ranges[0],S=C.startContainer.childNodes[C.startOffset].childNodes,T=(0,c.createRange)(S[0],S[S.length-1]);n.select(T)}}}},6817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleKeyUpEvent=void 0;var r=n(7905),o=n(6344),i=[16,18,91,17,44];t.handleKeyUpEvent=function(e,t,n){var a=e.rawEvent,l=a.shiftKey,s=a.which,u=a.ctrlKey;l||u||!t.firstTarget||t.preventKeyUp||-1!=i.indexOf(s)||((0,o.isCharacterValue)(e.rawEvent)&&n.addUndoSnapshot(),(0,r.clearState)(t,n)),t.preventKeyUp=!1}},9905:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectionInsideTableMouseMove=t.handleMouseDownEvent=void 0;var r=n(8616),o=n(7905),i=n(6344),a=n(4192),l=n(8098),s=n(9878),u=n(8533),d=n(9991),c=n(4550),f=n(7463),p=n(4332),v=n(1648);function h(e,t,n){var r;if(t.firstTarget&&t.firstTable&&t.lastTarget!=t.firstTarget&&t.lastTarget){if((0,v.updateSelection)(n,t.firstTarget,0),t.firstTable!=t.targetTable&&(null===(r=t.targetTable)||void 0===r?void 0:r.contains(t.firstTable))&&(t.firstTarget=n.getElementAtCursor(p.TABLE_CELL_SELECTOR,t.lastTarget)),t.firstTable&&t.firstTarget){t.tableSelection=!0,t.vTable=t.vTable||new i.VTable(t.firstTable);var o=(0,l.getCellCoordinates)(t.vTable,t.firstTarget),a=(0,l.getCellCoordinates)(t.vTable,t.lastTarget);if(!o||!a)return;t.vTable.selection={firstCell:o,lastCell:a},(0,c.selectTable)(n,t)}e.preventDefault()}else if(t.lastTarget==t.firstTarget&&t.tableSelection&&t.firstTable&&t.firstTarget){t.vTable=new i.VTable(t.firstTable);var s=(0,l.getCellCoordinates)(t.vTable,t.firstTarget);s&&(t.vTable.selection={firstCell:s,lastCell:s}),(0,c.selectTable)(n,t)}}t.handleMouseDownEvent=function(e,t,n){var g,m=e.rawEvent,y=m.which,b=m.shiftKey,E=m.target,C=m.detail,S=n.getElementAtCursor("table",E,e),T=C>=3;if(!S||S.isContentEditable){var P=n.getElementAtCursor(p.TABLE_CELL_SELECTOR);if(3==y&&t.tableSelection&&t.vTable&&P){var _=(0,l.getCellCoordinates)(t.vTable,P);if(_){var w=(0,r.default)(t.vTable)||{},O=w.firstCell,D=w.lastCell;if(O&&D&&_.y>=O.y&&_.y<=D.y&&_.x>=O.x&&_.x<=D.x){if(t.firstTarget=t.vTable.getCell(O.y,O.x).td,t.lastTarget=t.vTable.getCell(D.y,D.x).td,t.firstTarget&&t.lastTarget){var M=null===(g=n.getDocument().defaultView)||void 0===g?void 0:g.getSelection();null==M||M.setBaseAndExtent(t.firstTarget,0,t.lastTarget,0),(0,c.selectTable)(n,t)}return}}}if(1==y){if(!b&&!T&&((0,o.clearState)(t,n),(0,s.getTableAtCursor)(n,e.rawEvent.target))){var A=n.getDocument()||document,R=function(e){return function(){!function(e){var t;e.startedSelection&&(e.startedSelection=!1,null===(t=e.mouseMoveDisposer)||void 0===t||t.call(e))}(e)}}(t),I=function(e,t){return function(n){if(t.contains(n.target)){if(e.tableSelection&&e.firstTarget&&(0,i.contains)(e.lastTarget,n.target,!0))return(0,v.updateSelection)(t,e.firstTarget,0),void n.preventDefault();if("TABLE"!=(0,i.getTagOfNode)(n.target)){if((0,f.setData)(n.target,e,t),!e.firstTarget||e.firstTable)if(!e.lastTarget||(e.lastTarget.lastChild!=e.lastTarget.firstChild||"TABLE"!=(0,i.getTagOfNode)(e.lastTarget.lastChild)||"DIV"!=(0,i.getTagOfNode)(e.lastTarget))&&t.contains(e.lastTarget)){(0,u.prepareSelection)(e,t);var r=!!(0,i.safeInstanceOf)(e.lastTarget,"HTMLTableCellElement")&&(0,i.contains)(e.lastTarget,e.firstTable);e.firstTable&&e.firstTable==e.targetTable||r?h(n,e,t):e.tableSelection&&(0,d.restoreSelection)(e,t),e.tableSelection&&e.firstTarget&&((0,v.updateSelection)(t,e.firstTarget,0),n.preventDefault())}else n.preventDefault()}else n.preventDefault()}}}(t,n);A.addEventListener("mouseup",R,!0),A.addEventListener("mousemove",I,!0),t.mouseMoveDisposer=function(){A.removeEventListener("mouseup",R,!0),A.removeEventListener("mousemove",I,!0)},t.startedSelection=!0}(b||T)&&n.runAsync((function(e){var n,r=null===(n=e.getDocument().defaultView)||void 0===n?void 0:n.getSelection(),o=(0,a.getCellAtCursor)(e,null==r?void 0:r.anchorNode),u=T?o:(0,a.getCellAtCursor)(e,null==r?void 0:r.focusNode),d=(0,s.getTableAtCursor)(e,o);if(d&&(0,i.safeInstanceOf)(o,"HTMLTableCellElement")&&(0,i.safeInstanceOf)(u,"HTMLTableCellElement")){t.vTable=new i.VTable(o);var f=(0,l.getCellCoordinates)(t.vTable,o),p=(0,l.getCellCoordinates)(t.vTable,u);if(!f||!p)return;t.vTable.selection={firstCell:f,lastCell:p},t.firstTarget=o,t.lastTarget=u,(0,c.selectTable)(e,t),t.tableSelection=!0,t.firstTable=d,t.targetTable=d,(0,v.updateSelection)(e,o,0)}}))}}},t.selectionInsideTableMouseMove=h},1679:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleScrollEvent=void 0;var r=n(8098),o=n(9991),i=n(4550),a=n(7463),l=n(1648);t.handleScrollEvent=function(e,t){var n,s=t.getElementAtCursor();if(s)if((0,a.setData)(s,e,t),e.firstTable==e.targetTable&&e.firstTarget&&(null===(n=e.vTable)||void 0===n?void 0:n.selection)&&e.lastTarget&&e.tableSelection){var u=(0,r.getCellCoordinates)(e.vTable,e.lastTarget);u&&(e.vTable.selection.lastCell=u,(0,i.selectTable)(t,e),(0,l.updateSelection)(t,e.firstTarget,0))}else e.tableSelection&&(0,o.restoreSelection)(e,t)}},7905:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearState=void 0,t.clearState=function(e,t){var n;null==t||t.select(null),e&&(e.vTable=null,e.firstTarget=null,e.lastTarget=null,e.tableSelection=!1,e.firstTable=null,e.targetTable=null,null===(n=e.mouseMoveDisposer)||void 0===n||n.call(e),e.mouseMoveDisposer=null)}},4192:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCellAtCursor=void 0;var r=n(4332);t.getCellAtCursor=function(e,t){return e&&e.getElementAtCursor(r.TABLE_CELL_SELECTOR,null!=t?t:void 0)||t}},8098:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCellCoordinates=void 0,t.getCellCoordinates=function(e,t){var n;if(null==e?void 0:e.cells)for(var r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getTableAtCursor=void 0,t.getTableAtCursor=function(e,t){return e?e.getElementAtCursor("table",t):null}},4846:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAfter=void 0;var r=n(6344);t.isAfter=function(e,t){var n,o,i,a;if(e&&t){if(t.contains(e)){var l=null===(o=(n=e).getBoundingClientRect)||void 0===o?void 0:o.call(n),s=null===(a=(i=t).getBoundingClientRect)||void 0===a?void 0:a.call(i);if(l&&s)return l.top>s.top&&l.bottom{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=(null==e?void 0:e.selection)||{},n=t.firstCell,r=t.lastCell;if(!((null==e?void 0:e.cells)&&e.selection&&n&&r))return null;var o=e.cells,i={x:Math.min(n.x,r.x),y:Math.min(n.y,r.y)},a={x:Math.max(n.x,r.x),y:Math.max(n.y,r.y)},l=function(e){e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.y>=o.length&&(e.y=o.length-1);var t=o[e.y].length;e.x>=t&&(e.x=t-1)};return l(i),l(a),{firstCell:i,lastCell:a}}},8533:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prepareSelection=void 0;var r=n(6344),o=n(9878),i=n(4332);t.prepareSelection=function(e,t){var n,a,l,s;if(e.firstTable&&e.targetTable){var u=e.lastTarget!=e.firstTarget&&(null===(n=e.firstTable)||void 0===n?void 0:n.contains((0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR)));if(u&&e.tableSelection)for(;u;)e.lastTarget=(0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR),e.targetTable=(0,o.getTableAtCursor)(t,e.lastTarget),u=e.lastTarget!=e.firstTarget&&(null===(a=e.firstTable)||void 0===a?void 0:a.contains((0,r.findClosestElementAncestor)(e.targetTable,e.firstTable,i.TABLE_CELL_SELECTOR)));var d=e.lastTarget!=e.firstTarget&&(null===(l=e.targetTable)||void 0===l?void 0:l.contains((0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR)));if(d&&e.tableSelection&&e.targetTable)for(;d;){if(e.firstTarget=(0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR),!e.firstTarget)return;e.firstTable=(0,o.getTableAtCursor)(t,e.firstTarget),d=e.lastTarget!=e.firstTarget&&(null===(s=e.targetTable)||void 0===s?void 0:s.contains((0,r.findClosestElementAncestor)(e.firstTable,e.targetTable,i.TABLE_CELL_SELECTOR)))}}}},9991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.restoreSelection=void 0;var r=n(4846),o=n(6344),i=n(1648);t.restoreSelection=function(e,t){if(e.lastTarget&&e.firstTarget){e.firstTable&&t.select(e.firstTable,null),e.tableSelection=!1;var n=(0,r.isAfter)(e.firstTarget,e.lastTarget),a=new o.Position(e.lastTarget,n?-1:0),l=new Range;e.firstTarget&&l.selectNodeContents(e.firstTarget),(0,i.updateSelection)(t,e.firstTarget,n?o.Position.getEnd(l).offset:o.Position.getStart(l).offset,a.element,a.offset)}}},4550:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectTable=void 0;var r=n(8616);t.selectTable=function(e,t){e&&t.vTable&&(null==e||e.select(t.vTable.table,(0,r.default)(t.vTable)))}},7463:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setData=void 0;var r=n(4192),o=n(9878),i=n(4332);t.setData=function(e,t,n){var a=n.getFocusedPosition();a&&(t.firstTarget=t.firstTarget||(0,r.getCellAtCursor)(n,a.node),t.firstTarget.nodeType==Node.TEXT_NODE&&(t.firstTarget=n.getElementAtCursor(i.TABLE_CELL_SELECTOR,t.firstTarget)),!n.contains(t.firstTarget)&&t.lastTarget&&(t.firstTarget=t.lastTarget)),t.firstTable=(0,o.getTableAtCursor)(n,t.firstTarget),t.lastTarget=(0,r.getCellAtCursor)(n,e),t.targetTable=(0,o.getTableAtCursor)(n,t.lastTarget)}},1648:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateSelection=void 0,t.updateSelection=function(e,t,n,r,o){var i,a=null===(i=e.getDocument().defaultView)||void 0===i?void 0:i.getSelection();a&&(r=r||t,o=o||n,a.setBaseAndExtent(t,n,r,o))}},12:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3087),o=n(6344),i=function(){function e(e,t){var n=this;this.onShowHelperElement=e,this.anchorContainerSelector=t,this.editor=null,this.onMouseMoveDisposer=null,this.tableRectMap=null,this.tableEditor=null,this.onMouseOut=function(e){var t;e.pageX&&(0,o.safeInstanceOf)(e.relatedTarget,"HTMLElement")&&n.tableEditor&&!n.tableEditor.isOwnedElement(e.relatedTarget)&&!(null===(t=n.editor)||void 0===t?void 0:t.contains(e.relatedTarget))&&n.setTableEditor(null)},this.onMouseMove=function(e){var t,r=e;if(!(r.buttons>0)&&n.editor){n.ensureTableRects();var o=n.editor.getDocument().defaultView||window,i=r.pageX-o.scrollX,a=r.pageY-o.scrollY,l=null;if(n.tableRectMap)for(var s=n.tableRectMap.length-1;s>=0;s--){var u=n.tableRectMap[s],d=u.table,c=u.rect;if(i>=c.left-12&&i<=c.right+12&&a>=c.top-12&&a<=c.bottom+12){l=d;break}}n.setTableEditor(l,r),null===(t=n.tableEditor)||void 0===t||t.onMouseMove(i,a)}},this.invalidateTableRects=function(){n.tableRectMap=null}}return e.prototype.getName=function(){return"TableResize"},e.prototype.initialize=function(e){var t=this;this.editor=e,this.onMouseMoveDisposer=this.editor.addDomEventHandler({mousemove:this.onMouseMove,mouseout:function(e){return t.onMouseOut(e)}})},e.prototype.dispose=function(){var e;null===(e=this.onMouseMoveDisposer)||void 0===e||e.call(this),this.invalidateTableRects(),this.disposeTableEditor(),this.editor=null,this.onMouseMoveDisposer=null},e.prototype.onPluginEvent=function(e){switch(e.eventType){case 3:case 7:case 14:case 21:this.setTableEditor(null),this.invalidateTableRects()}},e.prototype.setTableEditor=function(e,t){if(this.tableEditor&&!this.tableEditor.isEditing()&&e!=this.tableEditor.table&&this.disposeTableEditor(),!this.tableEditor&&e&&this.editor&&e.rows.length>0){var n=this.anchorContainerSelector?this.editor.getDocument().querySelector(this.anchorContainerSelector):void 0;this.tableEditor=new r.default(this.editor,e,this.invalidateTableRects,this.onShowHelperElement,(0,o.safeInstanceOf)(n,"HTMLElement")?n:void 0,null==t?void 0:t.currentTarget)}},e.prototype.disposeTableEditor=function(){var e;null===(e=this.tableEditor)||void 0===e||e.dispose(),this.tableEditor=null},e.prototype.ensureTableRects=function(){var e=this;!this.tableRectMap&&this.editor&&(this.tableRectMap=[],this.editor.queryElements("table",(function(t){if(t.isContentEditable){var n=(0,o.normalizeRect)(t.getBoundingClientRect());n&&e.tableRectMap&&e.tableRectMap.push({table:t,rect:n})}})))},e}();t.default=i},1565:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4296),o=n(6344);function i(e,t){var n=e.td,r=e.isRTL,i=e.zoomScale,a=e.onStart,l=new o.VTable(n,!0,i),s=(0,o.normalizeRect)(n.getBoundingClientRect());if(s){a();var u=l.getCellsWithBorder(r?s.left:s.right,!r),d=l.getCellsWithBorder(r?s.left:s.right,r);return{vTable:l,currentCells:u,nextCells:d,initialX:t.pageX}}return{vTable:l,currentCells:[],nextCells:[],initialX:0}}function a(e,t,n,r,o){var i=e.td,a=e.zoomScale,l=n.vTable;return l.table.removeAttribute("height"),l.table.style.setProperty("height",null),l.forEachCellOfCurrentRow((function(e){var t;e.td&&e.td.style.setProperty("height",e.td==i?(null!==(t=e.height)&&void 0!==t?t:0)/a+o+"px":null)})),l.writeBack(!0),!0}function l(e,t,n,r){var i=e.isRTL,a=e.zoomScale,l=n.vTable,u=n.nextCells,d=n.currentCells,c=n.initialX;if(!function(e,t,n,r,i){for(var a=0;a1?0:e.getBoundingClientRect().right-c;e.style.wordBreak="break-word",e.style.whiteSpace="normal",e.style.boxSizing="border-box",e.style.width=e.rowSpan>1?"":t/a-r+"px"})),l.writeBack(!0),!0}function s(e,t,n){return n?t-e.left:e.right-t}function u(e,t){var n=e.td,r=(0,o.normalizeRect)(n.getBoundingClientRect());r&&(t.style.top=r.bottom-4+"px",t.style.left=r.left+"px",t.style.width=r.right-r.left+"px",t.style.height="4px")}function d(e,t){var n=e.td,r=e.isRTL,i=(0,o.normalizeRect)(n.getBoundingClientRect());i&&(t.style.top=i.top+"px",t.style.left=(r?i.left:i.right)-4+1+"px",t.style.width="4px",t.style.height=i.bottom-i.top+"px")}t.default=function(e,t,n,s,c,f,p,v){var h=e.ownerDocument,g={tag:"div",style:"position: fixed; cursor: "+(s?"row":"col")+"-resize; user-select: none"};null==p||p(g,"CellResizer");var m=(0,o.createElement)(g,h);(v||h.body).appendChild(m);var y={td:e,isRTL:n,zoomScale:t,onStart:c},b=s?u:d;b(y,m);var E={onDragStart:i,onDragging:s?a:l,onDragEnd:f};return{node:e,div:m,featureHandler:new r.default(m,y,b,E,t)}}},3087:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(1565),i=n(669),a=n(255),l=n(6034),s=n(6080),u=n(6344);!function(e){e[e.top=0]="top",e[e.side=1]="side"}(r||(r={}));var d=function(){function e(e,t,n,r,o,i){var a=this;this.editor=e,this.table=t,this.onChanged=n,this.onShowHelperElement=r,this.anchorContainer=o,this.contentDiv=i,this.horizontalInserter=null,this.verticalInserter=null,this.horizontalResizer=null,this.verticalResizer=null,this.tableResizer=null,this.tableSelector=null,this.start=null,this.end=null,this.onFinishEditing=function(){return a.editor.focus(),a.start&&a.end&&a.editor.select(a.start,a.end),a.editor.addUndoSnapshot((function(){}),"Format"),a.onChanged(),a.isCurrentlyEditing=!1,!1},this.onStartTableResize=function(){a.isCurrentlyEditing=!0,a.onStartResize()},this.onStartCellResize=function(){a.isCurrentlyEditing=!0,a.disposeTableResizer(),a.onStartResize()},this.onInserted=function(e){a.editor.transformToDarkColor(e),a.disposeTableResizer(),a.onFinishEditing()},this.onSelect=function(e){if(a.editor.focus(),e){var t=new u.VTable(e);if(t.cells){var n=t.cells.length-1,r=0;t.cells[n].forEach((function(e,t){r=t}));var o={firstCell:{x:0,y:0},lastCell:{y:n,x:r}};a.editor.select(e,o)}}},this.getOnMouseOut=function(e){return function(t){e&&t.relatedTarget!=e&&(0,u.safeInstanceOf)(a.contentDiv,"HTMLElement")&&(0,u.safeInstanceOf)(t.relatedTarget,"HTMLElement")&&!(0,u.contains)(a.contentDiv,t.relatedTarget,!0)&&a.dispose()}},this.isRTL="rtl"==(0,u.getComputedStyle)(t,"direction"),this.setEditorFeatures(),this.isCurrentlyEditing=!1}return e.prototype.dispose=function(){this.disposeTableResizer(),this.disposeCellResizers(),this.disposeTableInserter(),this.disposeTableSelector()},e.prototype.isEditing=function(){return this.isCurrentlyEditing},e.prototype.isOwnedElement=function(e){return[this.tableResizer,this.tableSelector,this.horizontalInserter,this.verticalInserter,this.horizontalResizer,this.verticalResizer].filter((function(e){return!!(null==e?void 0:e.div)})).some((function(t){return(0,u.contains)(null==t?void 0:t.div,e,!0)}))},e.prototype.onMouseMove=function(e,t){var n,r,o=null===(n=this.table.rows[0])||void 0===n?void 0:n.cells[0];if(o){var i=(0,u.normalizeRect)(o.getBoundingClientRect());if(i){for(var a=t<=i.top+6?0:this.isRTL?e>=i.right-6?1:void 0:e<=i.left+6?1:void 0,l=a?1:0,s=(0,u.normalizeRect)(this.table.getBoundingClientRect()),d=0;d=v.left:e>=v.left-6*l;if(h&&g&&m){var y=this.isRTL?v.right<=s.right&&v.right>=s.right-1:v.left>=s.left&&v.left<=s.left+1;if(0===d&&0==a){var b=(v.left+v.right)/2,E=this.isRTL?eb;this.setInserterTd(E?p:c.cells[f-1],!1)}else if(0===f&&1==a&&y){var C=null===(r=this.table.rows[d-1])||void 0===r?void 0:r.cells[0],S=C?(0,u.normalizeRect)(C.getBoundingClientRect()):null,T=S?this.isRTL?S.right===v.right:S.left===v.left:null;this.setInserterTd(t<(v.top+v.bottom)/2&&T?C:p,!0)}else this.setInserterTd(null);this.setResizingTd(p);break}}}if(f{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.disposeTableEditFeature=void 0,t.disposeTableEditFeature=function(e){var t,n,r;e&&(null===(n=null===(t=e.div)||void 0===t?void 0:t.parentNode)||void 0===n||n.removeChild(e.div),e.div=null,null===(r=e.featureHandler)||void 0===r||r.dispose(),e.featureHandler=null)}},669:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344);t.default=function(e,t,n,i,a,l,s,u){var d=e.getElementAtCursor("table",t),c=(0,r.normalizeRect)(t.getBoundingClientRect()),f=e.getVisibleViewport(),p=d&&f?(0,r.getIntersectedRect)([d],[f]):null;if(c&&p){var v=t.ownerDocument,h=function(e,t,n,r){var o=t?"white":"#4A4A4A";return{tag:"div",style:"position: fixed; width: 12px; height: 12px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid 1px "+o+"; border-radius: 50%; background-color: "+r,children:[{tag:"div",style:"position: absolute; box-sizing: border-box; background-color: "+r+";"+(e?(n?"right":"left")+": 12px; top: 5px; height: 3px; border-top: 1px solid "+o+"; border-bottom: 1px solid "+o+"; border-right: 1px solid "+o+"; border-left: 0px;":"left: 5px; top: 12px; width: 3px; border-left: 1px solid "+o+"; border-right: 1px solid "+o+"; border-bottom: 1px solid "+o+"; border-top: 0px;")},"+"]}}(i,e.isDarkMode(),n,e.getDefaultFormat().backgroundColor||"white");null==s||s(h,"TableInserter");var g=(0,r.createElement)(h,v);return i?(g.style.left=(n?p.right:p.left-13)+"px",g.style.top=c.bottom-8+"px",g.firstChild.style.width=p.right-p.left+"px"):(g.style.left=(n?c.left-8:c.right-8)+"px",g.style.top=p.top-13+"px",g.firstChild.style.height=p.bottom-p.top+"px"),(u||v.body).appendChild(g),{div:g,featureHandler:new o(g,t,i,e,a,l),node:t}}return null};var o=function(){function e(e,t,n,o,i,a){var l=this;this.div=e,this.td=t,this.isHorizontal=n,this.editor=o,this.onInsert=i,this.insertTd=function(){var e=new r.VTable(l.td);l.isHorizontal||(e.normalizeTableCellSize(l.editor.getZoomScale()),e.table.removeAttribute("width"),e.table.style.setProperty("width",null)),e.edit(l.isHorizontal?1:3),e.writeBack(),l.onInsert(e.table)},this.div.addEventListener("click",this.insertTd),this.onMouseOutEvent=a(e),this.div.addEventListener("mouseout",this.onMouseOutEvent)}return e.prototype.dispose=function(){this.div.removeEventListener("click",this.insertTd),this.onMouseOutEvent&&this.div.removeEventListener("mouseout",this.onMouseOutEvent),this.onMouseOutEvent=null},e}()},255:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(4296),o=n(6344),i=12;function a(e){return e.onStart(),{originalRect:e.table.getBoundingClientRect(),vTable:new o.VTable(e.table,!0,e.zoomScale)}}function l(e,t,n,r,o){var i,a,l=e.isRTL,s=e.zoomScale,u=n.originalRect,d=n.vTable,c=1+r/u.width*s*(l?-1:1),f=1+o/u.height*s,p=Math.abs(c-1)>.001,v=Math.abs(f-1)>.001;if(d.cells&&(p||v)){for(var h=0;h=30&&(m.td.style.wordBreak="break-word",m.td.style.whiteSpace="normal",m.td.style.width=y+"px")}if(v)if(d.table.style.setProperty("height",null),0==g){var b=(null!==(a=m.height)&&void 0!==a?a:0)*f/s;b>=20&&(m.td.style.height=b+"px")}else m.td.style.setProperty("height",null)}}return d.writeBack(!0),!0}return!1}function s(e,t,n){return c(e.editor,(0,o.normalizeRect)(e.table.getBoundingClientRect()),e.contentDiv)&&(e.div.style.visibility="visible",u(e,e.div)),e.onEnd(),!1}function u(e,t){var n=e.table,r=e.isRTL,a=(0,o.normalizeRect)(n.getBoundingClientRect());a&&(t.style.top=a.bottom+"px",t.style.left=r?a.left-i-2+"px":a.right+"px")}function d(e,t){t.style.visibility="hidden"}function c(e,t,n){var r=e.getVisibleViewport();if(n&&(0,o.safeInstanceOf)(n,"HTMLElement")&&r&&t){var i=(0,o.normalizeRect)(n.getBoundingClientRect());return!!i&&i.bottom>=t.bottom&&r.bottom>=t.bottom}return!0}t.default=function(e,t,n,f,p,v,h){if(!c(t,(0,o.normalizeRect)(e.getBoundingClientRect()),v))return null;var g=e.ownerDocument,m="rtl"==(0,o.getComputedStyle)(e,"direction"),y=t.getZoomScale(),b={tag:"div",style:"position: fixed; cursor: "+(m?"ne":"nw")+"-resize; user-select: none; border: 1px solid #808080"};null==p||p(b,"TableResizer");var E=(0,o.createElement)(b,g);E.style.width=i+"px",E.style.height=i+"px",(h||g.body).appendChild(E);var C={isRTL:m,table:e,zoomScale:y,onStart:n,onEnd:f,div:E,editor:t,contentDiv:v};return u(C,E),{node:e,div:E,featureHandler:new r.default(E,C,d,{onDragStart:a,onDragging:l,onDragEnd:s},y)}}},6034:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582),o=n(4296),i=n(6344);t.default=function(e,t,n,r,o,s,u){var d=(0,i.normalizeRect)(e.getBoundingClientRect());if(!function(e,t,n){var r=e.getVisibleViewport();if(n&&(0,i.safeInstanceOf)(n,"HTMLElement")&&r&&t){var o=(0,i.normalizeRect)(n.getBoundingClientRect());return!!o&&o.top<=t.top&&r.top<=t.top}return!0}(t,d,s))return null;var c=t.getZoomScale(),f=e.ownerDocument,p={tag:"div",style:"position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080"};null==o||o(p,"TableSelector");var v=(0,i.createElement)(p,f);v.id="_Table_Selector",v.style.width="12px",v.style.height="12px",(u||f.body).appendChild(v);var h={table:e,zoomScale:c,rect:d,isRTL:"rtl"==(0,i.getComputedStyle)(e,"direction")};l(h,v);var g=new a(v,h,l,{onDragEnd:function(e,t){return t.target==v&&n(e.table),!1}},h.zoomScale,r);return{div:v,featureHandler:g,node:e}};var a=function(e){function t(t,n,r,o,i,a,l,s){var u=e.call(this,t,n,r,o,i,l)||this;return u.div=t,u.onMouseOut=a(t),t.addEventListener("mouseout",u.onMouseOut),u}return(0,r.__extends)(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this.onMouseOut&&this.div.removeEventListener("mouseout",this.onMouseOut),this.onMouseOut=null},t}(o.default);function l(e,t){var n=e.rect;n&&(t.style.top=n.top-12+"px",t.style.left=n.left-12-2+"px")}},9963:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TableResize=void 0;var r=n(12);Object.defineProperty(t,"TableResize",{enumerable:!0,get:function(){return r.default}})},909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6344),o=n(4548),i="WATERMARK_WRAPPER",a=function(){function e(e,t,n){var a=this;this.watermark=e,this.customClass=n,this.editor=null,this.disposer=null,this.showHideWatermark=function(){if(a.editor){var e=a.editor.hasFocus(),t=a.editor.queryElements((0,r.getEntitySelector)(i)),n=t.length>0;if(e&&n)t.forEach(a.removeWatermark),a.editor.focus();else if(!e&&!n&&a.editor.isEmpty()){var l=(0,o.insertEntity)(a.editor,i,a.editor.getDocument().createTextNode(a.watermark),!1,!1,0);a.customClass&&l.wrapper.classList.add(a.customClass)}}},this.removeWatermark=function(e){var t,n=e.parentNode;null==n||n.removeChild(e),n&&(null===(t=a.editor)||void 0===t?void 0:t.contains(n))&&"DIV"==(0,r.getTagOfNode)(n)&&!n.firstChild&&n.appendChild(a.editor.getDocument().createElement("BR"))},this.format=t||{fontSize:"14px",textColors:{lightModeColor:"#AAAAAA",darkModeColor:"#6B6B6B"}}}return e.prototype.getName=function(){return"Watermark"},e.prototype.initialize=function(e){this.editor=e,this.disposer=this.editor.addDomEventHandler({focus:this.showHideWatermark,blur:this.showHideWatermark})},e.prototype.dispose=function(){var e;null===(e=this.disposer)||void 0===e||e.call(this),this.disposer=null,this.editor=null},e.prototype.onPluginEvent=function(e){var t;if(11==e.eventType||7==e.eventType&&(null===(t=e.data)||void 0===t?void 0:t.type)!=i)this.showHideWatermark();else if(15==e.eventType&&e.entity.type==i&&this.editor){var n=e.operation,o=e.entity.wrapper;8==n?this.removeWatermark(o):0==e.operation&&((0,r.applyFormat)(o,this.format,this.editor.isDarkMode(),this.editor.getDarkColorHandler()),o.spellcheck=!1)}},e}();t.default=a},2939:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Watermark=void 0;var r=n(909);Object.defineProperty(t,"Watermark",{enumerable:!0,get:function(){return r.default}})},1286:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,n(7582).__exportStar)(n(7246),t)},2091:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5160:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleAlignment=void 0,(n=t.CompatibleAlignment||(t.CompatibleAlignment={}))[n.Left=0]="Left",n[n.Center=1]="Center",n[n.Right=2]="Right"},8411:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleBulletListType=void 0,(n=t.CompatibleBulletListType||(t.CompatibleBulletListType={}))[n.Min=1]="Min",n[n.Disc=1]="Disc",n[n.Dash=2]="Dash",n[n.Square=3]="Square",n[n.ShortArrow=4]="ShortArrow",n[n.LongArrow=5]="LongArrow",n[n.UnfilledArrow=6]="UnfilledArrow",n[n.Hyphen=7]="Hyphen",n[n.DoubleLongArrow=8]="DoubleLongArrow",n[n.Circle=9]="Circle",n[n.Max=9]="Max"},5412:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleCapitalization=void 0,(n=t.CompatibleCapitalization||(t.CompatibleCapitalization={})).Sentence="sentence",n.Lowercase="lowercase",n.Uppercase="uppercase",n.CapitalizeEachWord="capitalize"},5588:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleChangeSource=void 0,(n=t.CompatibleChangeSource||(t.CompatibleChangeSource={})).AutoLink="AutoLink",n.CreateLink="CreateLink",n.Format="Format",n.ImageResize="ImageResize",n.Paste="Paste",n.SetContent="SetContent",n.Cut="Cut",n.Drop="Drop",n.InsertEntity="InsertEntity",n.SwitchToDarkMode="SwitchToDarkMode",n.SwitchToLightMode="SwitchToLightMode",n.ListChain="ListChain",n.Keyboard="Keyboard"},6627:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleClearFormatMode=void 0,(n=t.CompatibleClearFormatMode||(t.CompatibleClearFormatMode={}))[n.Inline=0]="Inline",n[n.Block=1]="Block",n[n.AutoDetect=2]="AutoDetect"},2874:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleColorTransformDirection=void 0,(n=t.CompatibleColorTransformDirection||(t.CompatibleColorTransformDirection={}))[n.LightToDark=0]="LightToDark",n[n.DarkToLight=1]="DarkToLight"},1109:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleContentPosition=void 0,(n=t.CompatibleContentPosition||(t.CompatibleContentPosition={}))[n.Begin=0]="Begin",n[n.End=1]="End",n[n.DomEnd=2]="DomEnd",n[n.SelectionStart=3]="SelectionStart",n[n.Outside=4]="Outside",n[n.Range=5]="Range"},695:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleContentType=t.CompatibleContentTypePrefix=void 0,(r=t.CompatibleContentTypePrefix||(t.CompatibleContentTypePrefix={})).Text="text/",r.Image="image/",(n=t.CompatibleContentType||(t.CompatibleContentType={})).PlainText="text/plain",n.HTML="text/html"},7838:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDarkModeDatasetNames=void 0,(n=t.CompatibleDarkModeDatasetNames||(t.CompatibleDarkModeDatasetNames={})).OriginalStyleColor="ogsc",n.OriginalStyleBackgroundColor="ogsb",n.OriginalAttributeColor="ogac",n.OriginalAttributeBackgroundColor="ogab"},35:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDefinitionType=void 0,(n=t.CompatibleDefinitionType||(t.CompatibleDefinitionType={}))[n.Boolean=0]="Boolean",n[n.Number=1]="Number",n[n.String=2]="String",n[n.Array=3]="Array",n[n.Object=4]="Object",n[n.Customize=5]="Customize"},7028:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDelimiterClasses=void 0,(n=t.CompatibleDelimiterClasses||(t.CompatibleDelimiterClasses={})).DELIMITER_BEFORE="entityDelimiterBefore",n.DELIMITER_AFTER="entityDelimiterAfter"},6234:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDirection=void 0,(n=t.CompatibleDirection||(t.CompatibleDirection={}))[n.LeftToRight=0]="LeftToRight",n[n.RightToLeft=1]="RightToLeft"},2805:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDocumentCommand=void 0,(n=t.CompatibleDocumentCommand||(t.CompatibleDocumentCommand={})).AutoUrlDetect="AutoUrlDetect",n.BackColor="backColor",n.Bold="bold",n.ClearAuthenticationCache="ClearAuthenticationCache",n.ContentReadOnly="contentReadOnly",n.Copy="copy",n.CreateLink="createLink",n.Cut="cut",n.DecreaseFontSize="decreaseFontSize",n.DefaultParagraphSeparator="defaultParagraphSeparator",n.Delete="delete",n.EnableInlineTableEditing="enableInlineTableEditing",n.EnableObjectResizing="enableObjectResizing",n.FontName="fontName",n.FontSize="fontSize",n.ForeColor="foreColor",n.FormatBlock="formatBlock",n.ForwardDelete="forwardDelete",n.Heading="heading",n.HiliteColor="hiliteColor",n.IncreaseFontSize="increaseFontSize",n.Indent="indent",n.InsertBrOnReturn="insertBrOnReturn",n.InsertHorizontalRule="insertHorizontalRule",n.InsertHTML="insertHTML",n.InsertImage="insertImage",n.InsertOrderedList="insertOrderedList",n.InsertUnorderedList="insertUnorderedList",n.InsertParagraph="insertParagraph",n.InsertText="insertText",n.Italic="italic",n.JustifyCenter="justifyCenter",n.JustifyFull="justifyFull",n.JustifyLeft="justifyLeft",n.JustifyRight="justifyRight",n.Outdent="outdent",n.Paste="paste",n.Redo="redo",n.RemoveFormat="removeFormat",n.SelectAll="selectAll",n.StrikeThrough="strikeThrough",n.Subscript="subscript",n.Superscript="superscript",n.Underline="underline",n.Undo="undo",n.Unlink="unlink",n.StyleWithCSS="styleWithCSS"},6550:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleDocumentPosition=void 0,(n=t.CompatibleDocumentPosition||(t.CompatibleDocumentPosition={}))[n.Same=0]="Same",n[n.Disconnected=1]="Disconnected",n[n.Preceding=2]="Preceding",n[n.Following=4]="Following",n[n.Contains=8]="Contains",n[n.ContainedBy=16]="ContainedBy"},3779:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleEntityClasses=void 0,(n=t.CompatibleEntityClasses||(t.CompatibleEntityClasses={})).ENTITY_INFO_NAME="_Entity",n.ENTITY_TYPE_PREFIX="_EType_",n.ENTITY_ID_PREFIX="_EId_",n.ENTITY_READONLY_PREFIX="_EReadonly_"},8206:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleEntityOperation=void 0,(n=t.CompatibleEntityOperation||(t.CompatibleEntityOperation={}))[n.NewEntity=0]="NewEntity",n[n.Click=1]="Click",n[n.ContextMenu=2]="ContextMenu",n[n.Escape=3]="Escape",n[n.RemoveFromStart=4]="RemoveFromStart",n[n.RemoveFromEnd=5]="RemoveFromEnd",n[n.Overwrite=6]="Overwrite",n[n.PartialOverwrite=7]="PartialOverwrite",n[n.ReplaceTemporaryContent=8]="ReplaceTemporaryContent",n[n.AddShadowRoot=9]="AddShadowRoot",n[n.RemoveShadowRoot=10]="RemoveShadowRoot",n[n.UpdateEntityState=11]="UpdateEntityState"},2322:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleExperimentalFeatures=void 0,(n=t.CompatibleExperimentalFeatures||(t.CompatibleExperimentalFeatures={})).NewIndentation="NewIndentation",n.NewBullet="NewBullet",n.NewNumbering="NewNumbering",n.ListChain="ListChain",n.MergePastedLine="MergePastedLine",n.SingleDirectionResize="SingleDirectionResize",n.PasteWithLinkPreview="PasteWithLinkPreview",n.ImageRotate="ImageRotate",n.ImageCrop="ImageCrop",n.AlwaysApplyDefaultFormat="AlwaysApplyDefaultFormat",n.ConvertSingleImageBody="ConvertSingleImageBody",n.TableAlignment="TableAlignment",n.AdaptiveHandlesResizer="AdaptiveHandlesResizer",n.AutoHyphen="AutoHyphen",n.PendingStyleBasedFormat="PendingStyleBasedFormat",n.NormalizeList="NormalizeList",n.ImageSelection="ImageSelection",n.VariableBasedDarkColor="VariableBasedDarkColor",n.ListItemAlignment="ListItemAlignment",n.DefaultFormatInSpan="DefaultFormatInSpan",n.DefaultFormatOnContainer="DefaultFormatOnContainer",n.ReusableContentModel="ReusableContentModel",n.EditWithContentModel="EditWithContentModel",n.TabKeyTextFeatures="TabKeyTextFeatures",n.AutoFormatList="AutoFormatList",n.ReuseAllAncestorListElements="ReuseAllAncestorListElements",n.DeleteTableWithBackspace="DeleteTableWithBackspace",n.InlineEntityReadOnlyDelimiters="InlineEntityReadOnlyDelimiters",n.ContentModelPaste="ContentModelPaste",n.DisableListChain="DisableListChain"},3271:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleFontSizeChange=void 0,(n=t.CompatibleFontSizeChange||(t.CompatibleFontSizeChange={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},2776:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleGetContentMode=void 0,(n=t.CompatibleGetContentMode||(t.CompatibleGetContentMode={}))[n.CleanHTML=0]="CleanHTML",n[n.RawHTMLOnly=1]="RawHTMLOnly",n[n.RawHTMLWithSelection=2]="RawHTMLWithSelection",n[n.PlainText=3]="PlainText",n[n.PlainTextFast=4]="PlainTextFast"},7705:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleImageEditOperation=void 0,(n=t.CompatibleImageEditOperation||(t.CompatibleImageEditOperation={}))[n.None=0]="None",n[n.CornerResize=1]="CornerResize",n[n.SideResize=2]="SideResize",n[n.Resize=3]="Resize",n[n.Rotate=4]="Rotate",n[n.ResizeAndRotate=7]="ResizeAndRotate",n[n.Crop=8]="Crop",n[n.All=15]="All"},6020:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleIndentation=void 0,(n=t.CompatibleIndentation||(t.CompatibleIndentation={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},2693:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKeys=void 0,(n=t.CompatibleKeys||(t.CompatibleKeys={}))[n.NULL=0]="NULL",n[n.BACKSPACE=8]="BACKSPACE",n[n.TAB=9]="TAB",n[n.ENTER=13]="ENTER",n[n.SHIFT=16]="SHIFT",n[n.CTRL_LEFT=17]="CTRL_LEFT",n[n.ALT=18]="ALT",n[n.ESCAPE=27]="ESCAPE",n[n.SPACE=32]="SPACE",n[n.PAGEUP=33]="PAGEUP",n[n.END=35]="END",n[n.HOME=36]="HOME",n[n.LEFT=37]="LEFT",n[n.UP=38]="UP",n[n.RIGHT=39]="RIGHT",n[n.DOWN=40]="DOWN",n[n.PRINT_SCREEN=44]="PRINT_SCREEN",n[n.DELETE=46]="DELETE",n[n.EIGHT_ASTIRISK=56]="EIGHT_ASTIRISK",n[n.EIGHT_ASTERISK=56]="EIGHT_ASTERISK",n[n.B=66]="B",n[n.I=73]="I",n[n.U=85]="U",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.META_LEFT=91]="META_LEFT",n[n.COMMA=188]="COMMA",n[n.DASH_UNDERSCORE=189]="DASH_UNDERSCORE",n[n.PERIOD=190]="PERIOD",n[n.FORWARDSLASH=191]="FORWARDSLASH",n[n.FORWARD_SLASH=191]="FORWARD_SLASH",n[n.GRAVE_TILDE=192]="GRAVE_TILDE",n[n.CONTENTCHANGED=257]="CONTENTCHANGED",n[n.RANGE=258]="RANGE",n[n.Ctrl=4096]="Ctrl",n[n.Meta=8192]="Meta",n[n.Shift=16384]="Shift"},4845:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKnownCreateElementDataIndex=void 0,(n=t.CompatibleKnownCreateElementDataIndex||(t.CompatibleKnownCreateElementDataIndex={}))[n.None=0]="None",n[n.EmptyLine=1]="EmptyLine",n[n.BlockquoteWrapper=2]="BlockquoteWrapper",n[n.CopyPasteTempDiv=3]="CopyPasteTempDiv",n[n.BlockListItem=4]="BlockListItem",n[n.ContextMenuWrapper=5]="ContextMenuWrapper",n[n.ImageEditWrapper=6]="ImageEditWrapper",n[n.TableHorizontalResizer=7]="TableHorizontalResizer",n[n.TableVerticalResizer=8]="TableVerticalResizer",n[n.TableResizerLTR=9]="TableResizerLTR",n[n.TableResizerRTL=10]="TableResizerRTL",n[n.TableSelector=11]="TableSelector",n[n.EmptyLineFormatInSpan=12]="EmptyLineFormatInSpan"},9603:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleKnownPasteSourceType=void 0,(n=t.CompatibleKnownPasteSourceType||(t.CompatibleKnownPasteSourceType={}))[n.WordDesktop=0]="WordDesktop",n[n.ExcelDesktop=1]="ExcelDesktop",n[n.ExcelOnline=2]="ExcelOnline",n[n.PowerPointDesktop=3]="PowerPointDesktop",n[n.GoogleSheets=4]="GoogleSheets",n[n.WacComponents=5]="WacComponents",n[n.Default=6]="Default",n[n.SingleImage=7]="SingleImage"},3115:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleListType=void 0,(n=t.CompatibleListType||(t.CompatibleListType={}))[n.None=0]="None",n[n.Ordered=1]="Ordered",n[n.Unordered=2]="Unordered"},6993:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleNodeType=void 0,(n=t.CompatibleNodeType||(t.CompatibleNodeType={}))[n.Element=1]="Element",n[n.Attribute=2]="Attribute",n[n.Text=3]="Text",n[n.ProcessingInstruction=7]="ProcessingInstruction",n[n.Comment=8]="Comment",n[n.Document=9]="Document",n[n.DocumentType=10]="DocumentType",n[n.DocumentFragment=11]="DocumentFragment"},1040:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleNumberingListType=void 0,(n=t.CompatibleNumberingListType||(t.CompatibleNumberingListType={}))[n.Min=1]="Min",n[n.Decimal=1]="Decimal",n[n.DecimalDash=2]="DecimalDash",n[n.DecimalParenthesis=3]="DecimalParenthesis",n[n.DecimalDoubleParenthesis=4]="DecimalDoubleParenthesis",n[n.LowerAlpha=5]="LowerAlpha",n[n.LowerAlphaParenthesis=6]="LowerAlphaParenthesis",n[n.LowerAlphaDoubleParenthesis=7]="LowerAlphaDoubleParenthesis",n[n.LowerAlphaDash=8]="LowerAlphaDash",n[n.UpperAlpha=9]="UpperAlpha",n[n.UpperAlphaParenthesis=10]="UpperAlphaParenthesis",n[n.UpperAlphaDoubleParenthesis=11]="UpperAlphaDoubleParenthesis",n[n.UpperAlphaDash=12]="UpperAlphaDash",n[n.LowerRoman=13]="LowerRoman",n[n.LowerRomanParenthesis=14]="LowerRomanParenthesis",n[n.LowerRomanDoubleParenthesis=15]="LowerRomanDoubleParenthesis",n[n.LowerRomanDash=16]="LowerRomanDash",n[n.UpperRoman=17]="UpperRoman",n[n.UpperRomanParenthesis=18]="UpperRomanParenthesis",n[n.UpperRomanDoubleParenthesis=19]="UpperRomanDoubleParenthesis",n[n.UpperRomanDash=20]="UpperRomanDash",n[n.Max=20]="Max"},610:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePasteType=void 0,(n=t.CompatiblePasteType||(t.CompatiblePasteType={}))[n.Normal=0]="Normal",n[n.AsPlainText=1]="AsPlainText",n[n.MergeFormat=2]="MergeFormat",n[n.AsImage=3]="AsImage"},5912:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePluginEventType=void 0,(n=t.CompatiblePluginEventType||(t.CompatiblePluginEventType={}))[n.KeyDown=0]="KeyDown",n[n.KeyPress=1]="KeyPress",n[n.KeyUp=2]="KeyUp",n[n.Input=3]="Input",n[n.CompositionEnd=4]="CompositionEnd",n[n.MouseDown=5]="MouseDown",n[n.MouseUp=6]="MouseUp",n[n.ContentChanged=7]="ContentChanged",n[n.ExtractContentWithDom=8]="ExtractContentWithDom",n[n.BeforeCutCopy=9]="BeforeCutCopy",n[n.BeforePaste=10]="BeforePaste",n[n.EditorReady=11]="EditorReady",n[n.BeforeDispose=12]="BeforeDispose",n[n.PendingFormatStateChanged=13]="PendingFormatStateChanged",n[n.Scroll=14]="Scroll",n[n.EntityOperation=15]="EntityOperation",n[n.ContextMenu=16]="ContextMenu",n[n.EnteredShadowEdit=17]="EnteredShadowEdit",n[n.LeavingShadowEdit=18]="LeavingShadowEdit",n[n.EditImage=19]="EditImage",n[n.BeforeSetContent=20]="BeforeSetContent",n[n.ZoomChanged=21]="ZoomChanged",n[n.SelectionChanged=22]="SelectionChanged",n[n.BeforeKeyboardEditing=23]="BeforeKeyboardEditing"},685:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatiblePositionType=void 0,(n=t.CompatiblePositionType||(t.CompatiblePositionType={}))[n.Begin=0]="Begin",n[n.End=-1]="End",n[n.Before=-2]="Before",n[n.After=-3]="After"},8465:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleQueryScope=void 0,(n=t.CompatibleQueryScope||(t.CompatibleQueryScope={}))[n.Body=0]="Body",n[n.OnSelection=1]="OnSelection",n[n.InSelection=2]="InSelection"},2906:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleRegionType=void 0,(n=t.CompatibleRegionType||(t.CompatibleRegionType={}))[n.Table=0]="Table"},895:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleSelectionRangeTypes=void 0,(n=t.CompatibleSelectionRangeTypes||(t.CompatibleSelectionRangeTypes={}))[n.Normal=0]="Normal",n[n.TableSelection=1]="TableSelection",n[n.ImageSelection=2]="ImageSelection"},3088:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableBorderFormat=void 0,(n=t.CompatibleTableBorderFormat||(t.CompatibleTableBorderFormat={}))[n.DEFAULT=0]="DEFAULT",n[n.LIST_WITH_SIDE_BORDERS=1]="LIST_WITH_SIDE_BORDERS",n[n.NO_HEADER_BORDERS=2]="NO_HEADER_BORDERS",n[n.NO_SIDE_BORDERS=3]="NO_SIDE_BORDERS",n[n.FIRST_COLUMN_HEADER_EXTERNAL=4]="FIRST_COLUMN_HEADER_EXTERNAL",n[n.ESPECIAL_TYPE_1=5]="ESPECIAL_TYPE_1",n[n.ESPECIAL_TYPE_2=6]="ESPECIAL_TYPE_2",n[n.ESPECIAL_TYPE_3=7]="ESPECIAL_TYPE_3",n[n.CLEAR=8]="CLEAR"},6011:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableOperation=void 0,(n=t.CompatibleTableOperation||(t.CompatibleTableOperation={}))[n.InsertAbove=0]="InsertAbove",n[n.InsertBelow=1]="InsertBelow",n[n.InsertLeft=2]="InsertLeft",n[n.InsertRight=3]="InsertRight",n[n.DeleteTable=4]="DeleteTable",n[n.DeleteColumn=5]="DeleteColumn",n[n.DeleteRow=6]="DeleteRow",n[n.MergeAbove=7]="MergeAbove",n[n.MergeBelow=8]="MergeBelow",n[n.MergeLeft=9]="MergeLeft",n[n.MergeRight=10]="MergeRight",n[n.MergeCells=11]="MergeCells",n[n.SplitHorizontally=12]="SplitHorizontally",n[n.SplitVertically=13]="SplitVertically",n[n.AlignCenter=14]="AlignCenter",n[n.AlignLeft=15]="AlignLeft",n[n.AlignRight=16]="AlignRight",n[n.AlignCellLeft=17]="AlignCellLeft",n[n.AlignCellCenter=18]="AlignCellCenter",n[n.AlignCellRight=19]="AlignCellRight",n[n.AlignCellTop=20]="AlignCellTop",n[n.AlignCellMiddle=21]="AlignCellMiddle",n[n.AlignCellBottom=22]="AlignCellBottom"},5414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CompatibleTableOperation=t.CompatibleTableBorderFormat=t.CompatibleSelectionRangeTypes=t.CompatibleRegionType=t.CompatibleQueryScope=t.CompatiblePositionType=t.CompatiblePluginEventType=t.CompatiblePasteType=t.CompatibleNumberingListType=t.CompatibleNodeType=t.CompatibleListType=t.CompatibleKnownPasteSourceType=t.CompatibleKnownCreateElementDataIndex=t.CompatibleKeys=t.CompatibleIndentation=t.CompatibleImageEditOperation=t.CompatibleGetContentMode=t.CompatibleFontSizeChange=t.CompatibleExperimentalFeatures=t.CompatibleEntityOperation=t.CompatibleEntityClasses=t.CompatibleDocumentPosition=t.CompatibleDocumentCommand=t.CompatibleDirection=t.CompatibleDelimiterClasses=t.CompatibleDefinitionType=t.CompatibleDarkModeDatasetNames=t.CompatibleContentType=t.CompatibleContentTypePrefix=t.CompatibleContentPosition=t.CompatibleColorTransformDirection=t.CompatibleClearFormatMode=t.CompatibleChangeSource=t.CompatibleCapitalization=t.CompatibleBulletListType=t.CompatibleAlignment=void 0;var r=n(5160);Object.defineProperty(t,"CompatibleAlignment",{enumerable:!0,get:function(){return r.CompatibleAlignment}});var o=n(8411);Object.defineProperty(t,"CompatibleBulletListType",{enumerable:!0,get:function(){return o.CompatibleBulletListType}});var i=n(5412);Object.defineProperty(t,"CompatibleCapitalization",{enumerable:!0,get:function(){return i.CompatibleCapitalization}});var a=n(5588);Object.defineProperty(t,"CompatibleChangeSource",{enumerable:!0,get:function(){return a.CompatibleChangeSource}});var l=n(6627);Object.defineProperty(t,"CompatibleClearFormatMode",{enumerable:!0,get:function(){return l.CompatibleClearFormatMode}});var s=n(2874);Object.defineProperty(t,"CompatibleColorTransformDirection",{enumerable:!0,get:function(){return s.CompatibleColorTransformDirection}});var u=n(1109);Object.defineProperty(t,"CompatibleContentPosition",{enumerable:!0,get:function(){return u.CompatibleContentPosition}});var d=n(695);Object.defineProperty(t,"CompatibleContentTypePrefix",{enumerable:!0,get:function(){return d.CompatibleContentTypePrefix}}),Object.defineProperty(t,"CompatibleContentType",{enumerable:!0,get:function(){return d.CompatibleContentType}});var c=n(7838);Object.defineProperty(t,"CompatibleDarkModeDatasetNames",{enumerable:!0,get:function(){return c.CompatibleDarkModeDatasetNames}});var f=n(35);Object.defineProperty(t,"CompatibleDefinitionType",{enumerable:!0,get:function(){return f.CompatibleDefinitionType}});var p=n(7028);Object.defineProperty(t,"CompatibleDelimiterClasses",{enumerable:!0,get:function(){return p.CompatibleDelimiterClasses}});var v=n(6234);Object.defineProperty(t,"CompatibleDirection",{enumerable:!0,get:function(){return v.CompatibleDirection}});var h=n(2805);Object.defineProperty(t,"CompatibleDocumentCommand",{enumerable:!0,get:function(){return h.CompatibleDocumentCommand}});var g=n(6550);Object.defineProperty(t,"CompatibleDocumentPosition",{enumerable:!0,get:function(){return g.CompatibleDocumentPosition}});var m=n(3779);Object.defineProperty(t,"CompatibleEntityClasses",{enumerable:!0,get:function(){return m.CompatibleEntityClasses}});var y=n(8206);Object.defineProperty(t,"CompatibleEntityOperation",{enumerable:!0,get:function(){return y.CompatibleEntityOperation}});var b=n(2322);Object.defineProperty(t,"CompatibleExperimentalFeatures",{enumerable:!0,get:function(){return b.CompatibleExperimentalFeatures}});var E=n(3271);Object.defineProperty(t,"CompatibleFontSizeChange",{enumerable:!0,get:function(){return E.CompatibleFontSizeChange}});var C=n(2776);Object.defineProperty(t,"CompatibleGetContentMode",{enumerable:!0,get:function(){return C.CompatibleGetContentMode}});var S=n(7705);Object.defineProperty(t,"CompatibleImageEditOperation",{enumerable:!0,get:function(){return S.CompatibleImageEditOperation}});var T=n(6020);Object.defineProperty(t,"CompatibleIndentation",{enumerable:!0,get:function(){return T.CompatibleIndentation}});var P=n(2693);Object.defineProperty(t,"CompatibleKeys",{enumerable:!0,get:function(){return P.CompatibleKeys}});var _=n(4845);Object.defineProperty(t,"CompatibleKnownCreateElementDataIndex",{enumerable:!0,get:function(){return _.CompatibleKnownCreateElementDataIndex}});var w=n(9603);Object.defineProperty(t,"CompatibleKnownPasteSourceType",{enumerable:!0,get:function(){return w.CompatibleKnownPasteSourceType}});var O=n(3115);Object.defineProperty(t,"CompatibleListType",{enumerable:!0,get:function(){return O.CompatibleListType}});var D=n(6993);Object.defineProperty(t,"CompatibleNodeType",{enumerable:!0,get:function(){return D.CompatibleNodeType}});var M=n(1040);Object.defineProperty(t,"CompatibleNumberingListType",{enumerable:!0,get:function(){return M.CompatibleNumberingListType}});var A=n(610);Object.defineProperty(t,"CompatiblePasteType",{enumerable:!0,get:function(){return A.CompatiblePasteType}});var R=n(5912);Object.defineProperty(t,"CompatiblePluginEventType",{enumerable:!0,get:function(){return R.CompatiblePluginEventType}});var I=n(685);Object.defineProperty(t,"CompatiblePositionType",{enumerable:!0,get:function(){return I.CompatiblePositionType}});var L=n(8465);Object.defineProperty(t,"CompatibleQueryScope",{enumerable:!0,get:function(){return L.CompatibleQueryScope}});var N=n(2906);Object.defineProperty(t,"CompatibleRegionType",{enumerable:!0,get:function(){return N.CompatibleRegionType}});var x=n(895);Object.defineProperty(t,"CompatibleSelectionRangeTypes",{enumerable:!0,get:function(){return x.CompatibleSelectionRangeTypes}});var k=n(3088);Object.defineProperty(t,"CompatibleTableBorderFormat",{enumerable:!0,get:function(){return k.CompatibleTableBorderFormat}});var j=n(6011);Object.defineProperty(t,"CompatibleTableOperation",{enumerable:!0,get:function(){return j.CompatibleTableOperation}})},7246:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(2091),t),(0,r.__exportStar)(n(3424),t),(0,r.__exportStar)(n(5414),t),(0,r.__exportStar)(n(796),t),(0,r.__exportStar)(n(7882),t),(0,r.__exportStar)(n(8568),t)},3424:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4625:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Alignment=void 0,(n=t.Alignment||(t.Alignment={}))[n.Left=0]="Left",n[n.Center=1]="Center",n[n.Right=2]="Right"},8982:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.BulletListType=void 0,(n=t.BulletListType||(t.BulletListType={}))[n.Min=1]="Min",n[n.Disc=1]="Disc",n[n.Dash=2]="Dash",n[n.Square=3]="Square",n[n.ShortArrow=4]="ShortArrow",n[n.LongArrow=5]="LongArrow",n[n.UnfilledArrow=6]="UnfilledArrow",n[n.Hyphen=7]="Hyphen",n[n.DoubleLongArrow=8]="DoubleLongArrow",n[n.Circle=9]="Circle",n[n.Max=9]="Max"},9003:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Capitalization=void 0,(n=t.Capitalization||(t.Capitalization={})).Sentence="sentence",n.Lowercase="lowercase",n.Uppercase="uppercase",n.CapitalizeEachWord="capitalize"},8591:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeSource=void 0,(n=t.ChangeSource||(t.ChangeSource={})).AutoLink="AutoLink",n.CreateLink="CreateLink",n.Format="Format",n.ImageResize="ImageResize",n.Paste="Paste",n.SetContent="SetContent",n.Cut="Cut",n.Drop="Drop",n.InsertEntity="InsertEntity",n.SwitchToDarkMode="SwitchToDarkMode",n.SwitchToLightMode="SwitchToLightMode",n.ListChain="ListChain",n.Keyboard="Keyboard"},2101:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ClearFormatMode=void 0,(n=t.ClearFormatMode||(t.ClearFormatMode={}))[n.Inline=0]="Inline",n[n.Block=1]="Block",n[n.AutoDetect=2]="AutoDetect"},4471:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ColorTransformDirection=void 0,(n=t.ColorTransformDirection||(t.ColorTransformDirection={}))[n.LightToDark=0]="LightToDark",n[n.DarkToLight=1]="DarkToLight"},8983:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ContentPosition=void 0,(n=t.ContentPosition||(t.ContentPosition={}))[n.Begin=0]="Begin",n[n.End=1]="End",n[n.DomEnd=2]="DomEnd",n[n.SelectionStart=3]="SelectionStart",n[n.Outside=4]="Outside",n[n.Range=5]="Range"},7157:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.ContentType=t.ContentTypePrefix=void 0,(r=t.ContentTypePrefix||(t.ContentTypePrefix={})).Text="text/",r.Image="image/",(n=t.ContentType||(t.ContentType={})).PlainText="text/plain",n.HTML="text/html"},4490:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DarkModeDatasetNames=void 0,(n=t.DarkModeDatasetNames||(t.DarkModeDatasetNames={})).OriginalStyleColor="ogsc",n.OriginalStyleBackgroundColor="ogsb",n.OriginalAttributeColor="ogac",n.OriginalAttributeBackgroundColor="ogab"},9097:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DefinitionType=void 0,(n=t.DefinitionType||(t.DefinitionType={}))[n.Boolean=0]="Boolean",n[n.Number=1]="Number",n[n.String=2]="String",n[n.Array=3]="Array",n[n.Object=4]="Object",n[n.Customize=5]="Customize"},2910:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DelimiterClasses=void 0,(n=t.DelimiterClasses||(t.DelimiterClasses={})).DELIMITER_BEFORE="entityDelimiterBefore",n.DELIMITER_AFTER="entityDelimiterAfter"},265:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Direction=void 0,(n=t.Direction||(t.Direction={}))[n.LeftToRight=0]="LeftToRight",n[n.RightToLeft=1]="RightToLeft"},6386:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentCommand=void 0,(n=t.DocumentCommand||(t.DocumentCommand={})).AutoUrlDetect="AutoUrlDetect",n.BackColor="backColor",n.Bold="bold",n.ClearAuthenticationCache="ClearAuthenticationCache",n.ContentReadOnly="contentReadOnly",n.Copy="copy",n.CreateLink="createLink",n.Cut="cut",n.DecreaseFontSize="decreaseFontSize",n.DefaultParagraphSeparator="defaultParagraphSeparator",n.Delete="delete",n.EnableInlineTableEditing="enableInlineTableEditing",n.EnableObjectResizing="enableObjectResizing",n.FontName="fontName",n.FontSize="fontSize",n.ForeColor="foreColor",n.FormatBlock="formatBlock",n.ForwardDelete="forwardDelete",n.Heading="heading",n.HiliteColor="hiliteColor",n.IncreaseFontSize="increaseFontSize",n.Indent="indent",n.InsertBrOnReturn="insertBrOnReturn",n.InsertHorizontalRule="insertHorizontalRule",n.InsertHTML="insertHTML",n.InsertImage="insertImage",n.InsertOrderedList="insertOrderedList",n.InsertUnorderedList="insertUnorderedList",n.InsertParagraph="insertParagraph",n.InsertText="insertText",n.Italic="italic",n.JustifyCenter="justifyCenter",n.JustifyFull="justifyFull",n.JustifyLeft="justifyLeft",n.JustifyRight="justifyRight",n.Outdent="outdent",n.Paste="paste",n.Redo="redo",n.RemoveFormat="removeFormat",n.SelectAll="selectAll",n.StrikeThrough="strikeThrough",n.Subscript="subscript",n.Superscript="superscript",n.Underline="underline",n.Undo="undo",n.Unlink="unlink",n.StyleWithCSS="styleWithCSS"},565:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentPosition=void 0,(n=t.DocumentPosition||(t.DocumentPosition={}))[n.Same=0]="Same",n[n.Disconnected=1]="Disconnected",n[n.Preceding=2]="Preceding",n[n.Following=4]="Following",n[n.Contains=8]="Contains",n[n.ContainedBy=16]="ContainedBy"},2372:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.EntityClasses=void 0,(n=t.EntityClasses||(t.EntityClasses={})).ENTITY_INFO_NAME="_Entity",n.ENTITY_TYPE_PREFIX="_EType_",n.ENTITY_ID_PREFIX="_EId_",n.ENTITY_READONLY_PREFIX="_EReadonly_"},9468:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.EntityOperation=void 0,(n=t.EntityOperation||(t.EntityOperation={}))[n.NewEntity=0]="NewEntity",n[n.Click=1]="Click",n[n.ContextMenu=2]="ContextMenu",n[n.Escape=3]="Escape",n[n.RemoveFromStart=4]="RemoveFromStart",n[n.RemoveFromEnd=5]="RemoveFromEnd",n[n.Overwrite=6]="Overwrite",n[n.PartialOverwrite=7]="PartialOverwrite",n[n.ReplaceTemporaryContent=8]="ReplaceTemporaryContent",n[n.AddShadowRoot=9]="AddShadowRoot",n[n.RemoveShadowRoot=10]="RemoveShadowRoot",n[n.UpdateEntityState=11]="UpdateEntityState"},9084:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ExperimentalFeatures=void 0,(n=t.ExperimentalFeatures||(t.ExperimentalFeatures={})).NewIndentation="NewIndentation",n.NewBullet="NewBullet",n.NewNumbering="NewNumbering",n.ListChain="ListChain",n.MergePastedLine="MergePastedLine",n.SingleDirectionResize="SingleDirectionResize",n.PasteWithLinkPreview="PasteWithLinkPreview",n.ImageRotate="ImageRotate",n.ImageCrop="ImageCrop",n.AlwaysApplyDefaultFormat="AlwaysApplyDefaultFormat",n.ConvertSingleImageBody="ConvertSingleImageBody",n.TableAlignment="TableAlignment",n.AdaptiveHandlesResizer="AdaptiveHandlesResizer",n.AutoHyphen="AutoHyphen",n.PendingStyleBasedFormat="PendingStyleBasedFormat",n.NormalizeList="NormalizeList",n.ImageSelection="ImageSelection",n.VariableBasedDarkColor="VariableBasedDarkColor",n.ListItemAlignment="ListItemAlignment",n.DefaultFormatInSpan="DefaultFormatInSpan",n.DefaultFormatOnContainer="DefaultFormatOnContainer",n.ReusableContentModel="ReusableContentModel",n.EditWithContentModel="EditWithContentModel",n.TabKeyTextFeatures="TabKeyTextFeatures",n.AutoFormatList="AutoFormatList",n.ReuseAllAncestorListElements="ReuseAllAncestorListElements",n.DeleteTableWithBackspace="DeleteTableWithBackspace",n.InlineEntityReadOnlyDelimiters="InlineEntityReadOnlyDelimiters",n.ContentModelPaste="ContentModelPaste",n.DisableListChain="DisableListChain"},5397:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.FontSizeChange=void 0,(n=t.FontSizeChange||(t.FontSizeChange={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},4051:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.GetContentMode=void 0,(n=t.GetContentMode||(t.GetContentMode={}))[n.CleanHTML=0]="CleanHTML",n[n.RawHTMLOnly=1]="RawHTMLOnly",n[n.RawHTMLWithSelection=2]="RawHTMLWithSelection",n[n.PlainText=3]="PlainText",n[n.PlainTextFast=4]="PlainTextFast"},2681:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ImageEditOperation=void 0,(n=t.ImageEditOperation||(t.ImageEditOperation={}))[n.None=0]="None",n[n.CornerResize=1]="CornerResize",n[n.SideResize=2]="SideResize",n[n.Resize=3]="Resize",n[n.Rotate=4]="Rotate",n[n.ResizeAndRotate=7]="ResizeAndRotate",n[n.Crop=8]="Crop",n[n.All=15]="All"},6039:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Indentation=void 0,(n=t.Indentation||(t.Indentation={}))[n.Increase=0]="Increase",n[n.Decrease=1]="Decrease"},3692:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Keys=void 0,(n=t.Keys||(t.Keys={}))[n.NULL=0]="NULL",n[n.BACKSPACE=8]="BACKSPACE",n[n.TAB=9]="TAB",n[n.ENTER=13]="ENTER",n[n.SHIFT=16]="SHIFT",n[n.CTRL_LEFT=17]="CTRL_LEFT",n[n.ALT=18]="ALT",n[n.ESCAPE=27]="ESCAPE",n[n.SPACE=32]="SPACE",n[n.PAGEUP=33]="PAGEUP",n[n.END=35]="END",n[n.HOME=36]="HOME",n[n.LEFT=37]="LEFT",n[n.UP=38]="UP",n[n.RIGHT=39]="RIGHT",n[n.DOWN=40]="DOWN",n[n.PRINT_SCREEN=44]="PRINT_SCREEN",n[n.DELETE=46]="DELETE",n[n.EIGHT_ASTIRISK=56]="EIGHT_ASTIRISK",n[n.EIGHT_ASTERISK=56]="EIGHT_ASTERISK",n[n.B=66]="B",n[n.I=73]="I",n[n.U=85]="U",n[n.Y=89]="Y",n[n.Z=90]="Z",n[n.META_LEFT=91]="META_LEFT",n[n.COMMA=188]="COMMA",n[n.DASH_UNDERSCORE=189]="DASH_UNDERSCORE",n[n.PERIOD=190]="PERIOD",n[n.FORWARDSLASH=191]="FORWARDSLASH",n[n.FORWARD_SLASH=191]="FORWARD_SLASH",n[n.GRAVE_TILDE=192]="GRAVE_TILDE",n[n.CONTENTCHANGED=257]="CONTENTCHANGED",n[n.RANGE=258]="RANGE",n[n.Ctrl=4096]="Ctrl",n[n.Meta=8192]="Meta",n[n.Shift=16384]="Shift"},9278:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownCreateElementDataIndex=void 0,(n=t.KnownCreateElementDataIndex||(t.KnownCreateElementDataIndex={}))[n.None=0]="None",n[n.EmptyLine=1]="EmptyLine",n[n.BlockquoteWrapper=2]="BlockquoteWrapper",n[n.CopyPasteTempDiv=3]="CopyPasteTempDiv",n[n.BlockListItem=4]="BlockListItem",n[n.ContextMenuWrapper=5]="ContextMenuWrapper",n[n.ImageEditWrapper=6]="ImageEditWrapper",n[n.TableHorizontalResizer=7]="TableHorizontalResizer",n[n.TableVerticalResizer=8]="TableVerticalResizer",n[n.TableResizerLTR=9]="TableResizerLTR",n[n.TableResizerRTL=10]="TableResizerRTL",n[n.TableSelector=11]="TableSelector",n[n.EmptyLineFormatInSpan=12]="EmptyLineFormatInSpan"},2342:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.KnownPasteSourceType=void 0,(n=t.KnownPasteSourceType||(t.KnownPasteSourceType={}))[n.WordDesktop=0]="WordDesktop",n[n.ExcelDesktop=1]="ExcelDesktop",n[n.ExcelOnline=2]="ExcelOnline",n[n.PowerPointDesktop=3]="PowerPointDesktop",n[n.GoogleSheets=4]="GoogleSheets",n[n.WacComponents=5]="WacComponents",n[n.Default=6]="Default",n[n.SingleImage=7]="SingleImage"},8185:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ListType=void 0,(n=t.ListType||(t.ListType={}))[n.None=0]="None",n[n.Ordered=1]="Ordered",n[n.Unordered=2]="Unordered"},9883:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.NodeType=void 0,(n=t.NodeType||(t.NodeType={}))[n.Element=1]="Element",n[n.Attribute=2]="Attribute",n[n.Text=3]="Text",n[n.ProcessingInstruction=7]="ProcessingInstruction",n[n.Comment=8]="Comment",n[n.Document=9]="Document",n[n.DocumentType=10]="DocumentType",n[n.DocumentFragment=11]="DocumentFragment"},7821:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.NumberingListType=void 0,(n=t.NumberingListType||(t.NumberingListType={}))[n.Min=1]="Min",n[n.Decimal=1]="Decimal",n[n.DecimalDash=2]="DecimalDash",n[n.DecimalParenthesis=3]="DecimalParenthesis",n[n.DecimalDoubleParenthesis=4]="DecimalDoubleParenthesis",n[n.LowerAlpha=5]="LowerAlpha",n[n.LowerAlphaParenthesis=6]="LowerAlphaParenthesis",n[n.LowerAlphaDoubleParenthesis=7]="LowerAlphaDoubleParenthesis",n[n.LowerAlphaDash=8]="LowerAlphaDash",n[n.UpperAlpha=9]="UpperAlpha",n[n.UpperAlphaParenthesis=10]="UpperAlphaParenthesis",n[n.UpperAlphaDoubleParenthesis=11]="UpperAlphaDoubleParenthesis",n[n.UpperAlphaDash=12]="UpperAlphaDash",n[n.LowerRoman=13]="LowerRoman",n[n.LowerRomanParenthesis=14]="LowerRomanParenthesis",n[n.LowerRomanDoubleParenthesis=15]="LowerRomanDoubleParenthesis",n[n.LowerRomanDash=16]="LowerRomanDash",n[n.UpperRoman=17]="UpperRoman",n[n.UpperRomanParenthesis=18]="UpperRomanParenthesis",n[n.UpperRomanDoubleParenthesis=19]="UpperRomanDoubleParenthesis",n[n.UpperRomanDash=20]="UpperRomanDash",n[n.Max=20]="Max"},2368:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PasteType=void 0,(n=t.PasteType||(t.PasteType={}))[n.Normal=0]="Normal",n[n.AsPlainText=1]="AsPlainText",n[n.MergeFormat=2]="MergeFormat",n[n.AsImage=3]="AsImage"},2688:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PluginEventType=void 0,(n=t.PluginEventType||(t.PluginEventType={}))[n.KeyDown=0]="KeyDown",n[n.KeyPress=1]="KeyPress",n[n.KeyUp=2]="KeyUp",n[n.Input=3]="Input",n[n.CompositionEnd=4]="CompositionEnd",n[n.MouseDown=5]="MouseDown",n[n.MouseUp=6]="MouseUp",n[n.ContentChanged=7]="ContentChanged",n[n.ExtractContentWithDom=8]="ExtractContentWithDom",n[n.BeforeCutCopy=9]="BeforeCutCopy",n[n.BeforePaste=10]="BeforePaste",n[n.EditorReady=11]="EditorReady",n[n.BeforeDispose=12]="BeforeDispose",n[n.PendingFormatStateChanged=13]="PendingFormatStateChanged",n[n.Scroll=14]="Scroll",n[n.EntityOperation=15]="EntityOperation",n[n.ContextMenu=16]="ContextMenu",n[n.EnteredShadowEdit=17]="EnteredShadowEdit",n[n.LeavingShadowEdit=18]="LeavingShadowEdit",n[n.EditImage=19]="EditImage",n[n.BeforeSetContent=20]="BeforeSetContent",n[n.ZoomChanged=21]="ZoomChanged",n[n.SelectionChanged=22]="SelectionChanged",n[n.BeforeKeyboardEditing=23]="BeforeKeyboardEditing"},758:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PositionType=void 0,(n=t.PositionType||(t.PositionType={}))[n.Begin=0]="Begin",n[n.End=-1]="End",n[n.Before=-2]="Before",n[n.After=-3]="After"},8827:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.QueryScope=void 0,(n=t.QueryScope||(t.QueryScope={}))[n.Body=0]="Body",n[n.OnSelection=1]="OnSelection",n[n.InSelection=2]="InSelection"},2025:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.RegionType=void 0,(n=t.RegionType||(t.RegionType={}))[n.Table=0]="Table"},3852:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRangeTypes=void 0,(n=t.SelectionRangeTypes||(t.SelectionRangeTypes={}))[n.Normal=0]="Normal",n[n.TableSelection=1]="TableSelection",n[n.ImageSelection=2]="ImageSelection"},372:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TableBorderFormat=void 0,(n=t.TableBorderFormat||(t.TableBorderFormat={}))[n.DEFAULT=0]="DEFAULT",n[n.LIST_WITH_SIDE_BORDERS=1]="LIST_WITH_SIDE_BORDERS",n[n.NO_HEADER_BORDERS=2]="NO_HEADER_BORDERS",n[n.NO_SIDE_BORDERS=3]="NO_SIDE_BORDERS",n[n.FIRST_COLUMN_HEADER_EXTERNAL=4]="FIRST_COLUMN_HEADER_EXTERNAL",n[n.ESPECIAL_TYPE_1=5]="ESPECIAL_TYPE_1",n[n.ESPECIAL_TYPE_2=6]="ESPECIAL_TYPE_2",n[n.ESPECIAL_TYPE_3=7]="ESPECIAL_TYPE_3",n[n.CLEAR=8]="CLEAR"},6841:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TableOperation=void 0,(n=t.TableOperation||(t.TableOperation={}))[n.InsertAbove=0]="InsertAbove",n[n.InsertBelow=1]="InsertBelow",n[n.InsertLeft=2]="InsertLeft",n[n.InsertRight=3]="InsertRight",n[n.DeleteTable=4]="DeleteTable",n[n.DeleteColumn=5]="DeleteColumn",n[n.DeleteRow=6]="DeleteRow",n[n.MergeAbove=7]="MergeAbove",n[n.MergeBelow=8]="MergeBelow",n[n.MergeLeft=9]="MergeLeft",n[n.MergeRight=10]="MergeRight",n[n.MergeCells=11]="MergeCells",n[n.SplitHorizontally=12]="SplitHorizontally",n[n.SplitVertically=13]="SplitVertically",n[n.AlignCenter=14]="AlignCenter",n[n.AlignLeft=15]="AlignLeft",n[n.AlignRight=16]="AlignRight",n[n.AlignCellLeft=17]="AlignCellLeft",n[n.AlignCellCenter=18]="AlignCellCenter",n[n.AlignCellRight=19]="AlignCellRight",n[n.AlignCellTop=20]="AlignCellTop",n[n.AlignCellMiddle=21]="AlignCellMiddle",n[n.AlignCellBottom=22]="AlignCellBottom"},6395:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasteType=t.DefinitionType=t.BulletListType=t.NumberingListType=t.SelectionRangeTypes=t.PluginEventType=t.TableBorderFormat=t.KnownPasteSourceType=t.KnownCreateElementDataIndex=t.ClearFormatMode=t.ImageEditOperation=t.TableOperation=t.RegionType=t.QueryScope=t.PositionType=t.ListType=t.Capitalization=t.Indentation=t.GetContentMode=t.FontSizeChange=t.ExperimentalFeatures=t.EntityOperation=t.EntityClasses=t.Direction=t.DelimiterClasses=t.DarkModeDatasetNames=t.ContentPosition=t.ColorTransformDirection=t.ChangeSource=t.Alignment=t.ContentType=t.ContentTypePrefix=t.NodeType=t.Keys=t.DocumentPosition=t.DocumentCommand=void 0;var r=n(6386);Object.defineProperty(t,"DocumentCommand",{enumerable:!0,get:function(){return r.DocumentCommand}});var o=n(565);Object.defineProperty(t,"DocumentPosition",{enumerable:!0,get:function(){return o.DocumentPosition}});var i=n(3692);Object.defineProperty(t,"Keys",{enumerable:!0,get:function(){return i.Keys}});var a=n(9883);Object.defineProperty(t,"NodeType",{enumerable:!0,get:function(){return a.NodeType}});var l=n(7157);Object.defineProperty(t,"ContentTypePrefix",{enumerable:!0,get:function(){return l.ContentTypePrefix}}),Object.defineProperty(t,"ContentType",{enumerable:!0,get:function(){return l.ContentType}});var s=n(4625);Object.defineProperty(t,"Alignment",{enumerable:!0,get:function(){return s.Alignment}});var u=n(8591);Object.defineProperty(t,"ChangeSource",{enumerable:!0,get:function(){return u.ChangeSource}});var d=n(4471);Object.defineProperty(t,"ColorTransformDirection",{enumerable:!0,get:function(){return d.ColorTransformDirection}});var c=n(8983);Object.defineProperty(t,"ContentPosition",{enumerable:!0,get:function(){return c.ContentPosition}});var f=n(4490);Object.defineProperty(t,"DarkModeDatasetNames",{enumerable:!0,get:function(){return f.DarkModeDatasetNames}});var p=n(2910);Object.defineProperty(t,"DelimiterClasses",{enumerable:!0,get:function(){return p.DelimiterClasses}});var v=n(265);Object.defineProperty(t,"Direction",{enumerable:!0,get:function(){return v.Direction}});var h=n(2372);Object.defineProperty(t,"EntityClasses",{enumerable:!0,get:function(){return h.EntityClasses}});var g=n(9468);Object.defineProperty(t,"EntityOperation",{enumerable:!0,get:function(){return g.EntityOperation}});var m=n(9084);Object.defineProperty(t,"ExperimentalFeatures",{enumerable:!0,get:function(){return m.ExperimentalFeatures}});var y=n(5397);Object.defineProperty(t,"FontSizeChange",{enumerable:!0,get:function(){return y.FontSizeChange}});var b=n(4051);Object.defineProperty(t,"GetContentMode",{enumerable:!0,get:function(){return b.GetContentMode}});var E=n(6039);Object.defineProperty(t,"Indentation",{enumerable:!0,get:function(){return E.Indentation}});var C=n(9003);Object.defineProperty(t,"Capitalization",{enumerable:!0,get:function(){return C.Capitalization}});var S=n(8185);Object.defineProperty(t,"ListType",{enumerable:!0,get:function(){return S.ListType}});var T=n(758);Object.defineProperty(t,"PositionType",{enumerable:!0,get:function(){return T.PositionType}});var P=n(8827);Object.defineProperty(t,"QueryScope",{enumerable:!0,get:function(){return P.QueryScope}});var _=n(2025);Object.defineProperty(t,"RegionType",{enumerable:!0,get:function(){return _.RegionType}});var w=n(6841);Object.defineProperty(t,"TableOperation",{enumerable:!0,get:function(){return w.TableOperation}});var O=n(2681);Object.defineProperty(t,"ImageEditOperation",{enumerable:!0,get:function(){return O.ImageEditOperation}});var D=n(2101);Object.defineProperty(t,"ClearFormatMode",{enumerable:!0,get:function(){return D.ClearFormatMode}});var M=n(9278);Object.defineProperty(t,"KnownCreateElementDataIndex",{enumerable:!0,get:function(){return M.KnownCreateElementDataIndex}});var A=n(2342);Object.defineProperty(t,"KnownPasteSourceType",{enumerable:!0,get:function(){return A.KnownPasteSourceType}});var R=n(372);Object.defineProperty(t,"TableBorderFormat",{enumerable:!0,get:function(){return R.TableBorderFormat}});var I=n(2688);Object.defineProperty(t,"PluginEventType",{enumerable:!0,get:function(){return I.PluginEventType}});var L=n(3852);Object.defineProperty(t,"SelectionRangeTypes",{enumerable:!0,get:function(){return L.SelectionRangeTypes}});var N=n(7821);Object.defineProperty(t,"NumberingListType",{enumerable:!0,get:function(){return N.NumberingListType}});var x=n(8982);Object.defineProperty(t,"BulletListType",{enumerable:!0,get:function(){return x.BulletListType}});var k=n(9097);Object.defineProperty(t,"DefinitionType",{enumerable:!0,get:function(){return k.DefinitionType}});var j=n(2368);Object.defineProperty(t,"PasteType",{enumerable:!0,get:function(){return j.PasteType}})},796:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7582);(0,r.__exportStar)(n(2091),t),(0,r.__exportStar)(n(3424),t),(0,r.__exportStar)(n(6395),t),(0,r.__exportStar)(n(796),t),(0,r.__exportStar)(n(7882),t),(0,r.__exportStar)(n(8568),t)},7882:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8568:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5115:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6630),o=n(1660),i=n(4739);t.default=function(e,t,n){var a=[new i.HyperLink,new i.Paste,new i.ContentEdit];t&&(a=a.concat(t));var l={plugins:a,initialContent:n,getDarkColor:o.getDarkColor,defaultFormat:{fontFamily:"Calibri,Arial,Helvetica,sans-serif",fontSize:"11pt",textColor:"#000000"}};return new r.Editor(e,l)}},8608:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createEditor=void 0;var r=n(7582),o=n(5115);Object.defineProperty(t,"createEditor",{enumerable:!0,get:function(){return o.default}}),(0,r.__exportStar)(n(8075),t),(0,r.__exportStar)(n(1286),t),(0,r.__exportStar)(n(6344),t),(0,r.__exportStar)(n(6630),t),(0,r.__exportStar)(n(4548),t),(0,r.__exportStar)(n(4739),t),(0,r.__exportStar)(n(1660),t)},7582:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>i,__asyncDelegator:()=>_,__asyncGenerator:()=>P,__asyncValues:()=>w,__await:()=>T,__awaiter:()=>v,__classPrivateFieldGet:()=>R,__classPrivateFieldIn:()=>L,__classPrivateFieldSet:()=>I,__createBinding:()=>g,__decorate:()=>l,__esDecorate:()=>u,__exportStar:()=>m,__extends:()=>o,__generator:()=>h,__importDefault:()=>A,__importStar:()=>M,__makeTemplateObject:()=>O,__metadata:()=>p,__param:()=>s,__propKey:()=>c,__read:()=>b,__rest:()=>a,__runInitializers:()=>d,__setFunctionName:()=>f,__spread:()=>E,__spreadArray:()=>S,__spreadArrays:()=>C,__values:()=>y,default:()=>N});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(o=e[l])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,o,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",d=!t&&e?r.static?e:e.prototype:null,c=t||(d?Object.getOwnPropertyDescriptor(d,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var v={};for(var h in r)v[h]="access"===h?{}:r[h];for(var h in r.access)v.access[h]=r.access[h];v.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var g=(0,n[p])("accessor"===s?{get:c.get,set:c.set}:c[u],v);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=a(g.get))&&(c.get=l),(l=a(g.set))&&(c.set=l),(l=a(g.init))&&o.unshift(l)}else(l=a(g))&&("field"===s?o.unshift(l):c[u]=l)}d&&Object.defineProperty(d,r.name,c),f=!0}function d(e,t,n){for(var r=arguments.length>2,o=0;o0&&o[o.length-1])||6!==l[0]&&2!==l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function b(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function E(){for(var e=[],t=0;t1||l(e,t)}))})}function l(e,t){try{(n=o[e](t)).value instanceof T?Promise.resolve(n.value.v).then(s,u):d(i[0][2],n)}catch(e){d(i[0][3],e)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function d(e,t){e(t),i.shift(),i.length&&l(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:T(e[r](t)),done:!1}:o?o(t):t}:o}}function w(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=y(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var D=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function M(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return D(t,e),t}function A(e){return e&&e.__esModule?e:{default:e}}function R(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function L(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}const N={__extends:o,__assign:i,__rest:a,__decorate:l,__param:s,__metadata:p,__awaiter:v,__generator:h,__createBinding:g,__exportStar:m,__values:y,__read:b,__spread:E,__spreadArrays:C,__spreadArray:S,__await:T,__asyncGenerator:P,__asyncDelegator:_,__asyncValues:w,__makeTemplateObject:O,__importStar:M,__importDefault:A,__classPrivateFieldGet:R,__classPrivateFieldSet:I,__classPrivateFieldIn:L}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=n(8608);roosterjs=r})(); //# sourceMappingURL=rooster-min.js.map \ No newline at end of file diff --git a/rooster-min.js.map b/rooster-min.js.map index 1cb95478143..fc9a9b86fa1 100644 --- a/rooster-min.js.map +++ b/rooster-min.js.map @@ -1 +1 @@ -{"version":3,"file":"rooster-min.js","mappings":"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","sources":["webpack://roosterjs/./node_modules/color-convert/conversions.js","webpack://roosterjs/./node_modules/color-convert/index.js","webpack://roosterjs/./node_modules/color-convert/route.js","webpack://roosterjs/./node_modules/color-name/index.js","webpack://roosterjs/./node_modules/color-string/index.js","webpack://roosterjs/./node_modules/color/index.js","webpack://roosterjs/./node_modules/is-arrayish/index.js","webpack://roosterjs/./node_modules/simple-swizzle/index.js","webpack://roosterjs/./packages/roosterjs-color-utils/lib/index.ts","webpack://roosterjs/./packages/roosterjs-color-utils/lib/utils/getDarkColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/changeCapitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/changeFontSize.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/clearFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/createLink.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/getFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/insertEntity.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/insertImage.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/removeLink.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/replaceWithNode.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/rotateElement.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setAlignment.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setFontName.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setFontSize.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setImageAltText.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setIndentation.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setTextColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBold.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBullet.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleItalic.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleNumbering.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleSubscript.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleUnderline.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/applyCellShading.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/editTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/formatTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/insertTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/blockFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/blockWrap.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/commitListChains.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/execCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/toggleListType.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/focus.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getContent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/insertNode.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/select.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectImage.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectRange.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectTable.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/setContent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/transformColor.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/Editor.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/EditorBase.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/createEditorCore.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/getTextContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/commitEntity.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isModifierKey.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VList.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VListItem.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/getRootListNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/metadata.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/validate.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/Position.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/createRange.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/getStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/setStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/VTable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/pasteTable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/Browser.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/applyFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/contains.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/createElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/fromHtml.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/matchLink.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/parseColor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/queryElements.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/readFile.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/setColor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/unwrap.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/wrap.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/AutoFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ContentEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ContextMenu.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/CustomReplace.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/HyperLink.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ImageEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ImageResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Paste.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Picker.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/TableCellSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/TableResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Watermark.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types-compatible/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Alignment.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/BulletListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Capitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ChangeSource.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ContentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ContentType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DefinitionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Direction.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/EntityClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/EntityOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/GetContentMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Indentation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Keys.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/NodeType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/NumberingListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PluginEventType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PositionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/QueryScope.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/RegionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/TableOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/index.ts","webpack://roosterjs/./packages/roosterjs/lib/createEditor.ts","webpack://roosterjs/./packages/roosterjs/lib/index.ts","webpack://roosterjs/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjs/webpack/bootstrap","webpack://roosterjs/webpack/runtime/define property getters","webpack://roosterjs/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjs/webpack/runtime/make namespace object","webpack://roosterjs/webpack/startup"],"sourcesContent":["/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","export { default as getDarkColor } from './utils/getDarkColor';\n","import * as Color from 'color';\n\nconst DefaultBaseLValue = 21.247; // L-value of #333333\n\n/**\n * Get dark mode color for a given color\n * @param color The color to calculate from\n * @param baseLValue The Light value for base dark color in LAB format. @default the Light value for #333333\n */\nexport default function getDarkColor(\n color: string,\n baseLValue: number = DefaultBaseLValue\n): string {\n try {\n const computedColor = Color(color || undefined);\n const colorLab = computedColor.lab().array();\n const newLValue = (100 - colorLab[0]) * ((100 - baseLValue) / 100) + baseLValue;\n color = Color.lab(newLValue, colorLab[1], colorLab[2])\n .rgb()\n .alpha(computedColor.alpha())\n .toString();\n } catch {}\n\n return color;\n}\n","import applyInlineStyle from '../utils/applyInlineStyle';\nimport { Capitalization, IEditor, NodeType } from 'roosterjs-editor-types';\nimport { getFirstLeafNode, getNextLeafSibling } from 'roosterjs-editor-dom';\nimport type { CompatibleCapitalization } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Change the capitalization of text in the selection\n * @param editor The editor instance\n * @param capitalization The case option\n * @param language Optional parameter for language string that should comply to \"IETF BCP 47 Tags for\n * Identifying Languages\". For example: 'en' or 'en-US' for English, 'tr' for Turkish.\n * Default is the host environment’s current locale.\n */\nexport default function changeCapitalization(\n editor: IEditor,\n capitalization: Capitalization | CompatibleCapitalization,\n language?: string\n) {\n applyInlineStyle(\n editor,\n element => {\n for (\n let node = getFirstLeafNode(element);\n node;\n node = getNextLeafSibling(element, node)\n ) {\n if (node.nodeType == NodeType.Text) {\n try {\n node.textContent = getCapitalizedText(node.textContent, language);\n } catch {\n node.textContent = getCapitalizedText(node.textContent, undefined);\n }\n }\n }\n },\n 'changeCapitalization'\n );\n\n function getCapitalizedText(\n originalText: string | null,\n language: string | undefined\n ): string | null {\n if (originalText === null) {\n return originalText;\n }\n switch (capitalization) {\n case Capitalization.Lowercase:\n return originalText.toLocaleLowerCase(language);\n case Capitalization.Uppercase:\n return originalText.toLocaleUpperCase(language);\n case Capitalization.CapitalizeEachWord:\n const wordArray = originalText.toLocaleLowerCase(language).split(' ');\n for (let i = 0; i < wordArray.length; i++) {\n wordArray[i] =\n wordArray[i].charAt(0).toLocaleUpperCase(language) + wordArray[i].slice(1);\n }\n return wordArray.join(' ');\n case Capitalization.Sentence:\n // TODO: Add rules on punctuation for internationalization - TASK 104769\n const punctuationMarks = '[\\\\.\\\\!\\\\?]';\n // Find a match of a word character either:\n // - At the beginning of a string with or without preceding whitespace, for\n // example: ' hello world' and 'hello world' strings would both match 'h'.\n // - Or preceded by a punctuation mark and at least one whitespace, for\n // example 'yes. hello world' would match 'y' and 'h'.\n const regex = new RegExp('^\\\\s*\\\\w|' + punctuationMarks + '\\\\s+\\\\w', 'g');\n return originalText.toLocaleLowerCase(language).replace(regex, match => {\n return match.toLocaleUpperCase(language);\n });\n default:\n return originalText;\n }\n }\n}\n","import applyInlineStyle from '../utils/applyInlineStyle';\r\nimport { FontSizeChange, IEditor } from 'roosterjs-editor-types';\r\nimport { getComputedStyle } from 'roosterjs-editor-dom';\r\nimport type { CompatibleFontSizeChange } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Default font size sequence, in pt. Suggest editor UI use this sequence as your font size list,\r\n * So that when increase/decrease font size, the font size can match the sequence of your font size picker\r\n */\r\nexport const FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\r\nconst MIN_FONT_SIZE = 1;\r\nconst MAX_FONT_SIZE = 1000;\r\n\r\n/**\r\n * Increase or decrease font size in selection\r\n * @param editor The editor instance\r\n * @param change Whether increase or decrease font size\r\n * @param fontSizes A sorted font size array, in pt. Default value is FONT_SIZES\r\n */\r\nexport default function changeFontSize(\r\n editor: IEditor,\r\n change: FontSizeChange | CompatibleFontSizeChange,\r\n fontSizes: number[] = FONT_SIZES\r\n) {\r\n let changeBase: 1 | -1 = change == FontSizeChange.Increase ? 1 : -1;\r\n applyInlineStyle(\r\n editor,\r\n element => {\r\n let pt = parseFloat(getComputedStyle(element, 'font-size') || element.style.fontSize);\r\n element.style.fontSize = getNewFontSize(pt, changeBase, fontSizes) + 'pt';\r\n let lineHeight = getComputedStyle(element, 'line-height');\r\n if (lineHeight && lineHeight != 'normal') {\r\n element.style.lineHeight = 'normal';\r\n }\r\n },\r\n 'changeFontSize'\r\n );\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get new font size after increase/decrease. This is exported for test only\r\n * @param pt Original font size, in Point\r\n * @param changeBase Changed value, 1 means increase, -1 means decrease\r\n * @param fontSizes Known font size array\r\n */\r\nexport function getNewFontSize(pt: number, changeBase: 1 | -1, fontSizes: number[]): number {\r\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\r\n let last = fontSizes[fontSizes.length - 1];\r\n if (pt <= fontSizes[0]) {\r\n pt = Math.max(pt + changeBase, MIN_FONT_SIZE);\r\n } else if (pt > last || (pt == last && changeBase == 1)) {\r\n pt = pt / 10;\r\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\r\n pt = Math.min(Math.max((pt + changeBase) * 10, last), MAX_FONT_SIZE);\r\n } else if (changeBase == 1) {\r\n for (let i = 0; i < fontSizes.length; i++) {\r\n if (pt < fontSizes[i]) {\r\n pt = fontSizes[i];\r\n break;\r\n }\r\n }\r\n } else {\r\n for (let i = fontSizes.length - 1; i >= 0; i--) {\r\n if (pt > fontSizes[i]) {\r\n pt = fontSizes[i];\r\n break;\r\n }\r\n }\r\n }\r\n return pt;\r\n}\r\n","import clearFormat from './clearFormat';\r\nimport { ClearFormatMode, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @deprecated Use clearFormat instead and pass the ClearFormatMode.Block as parameter\r\n * @param editor The editor instance\r\n */\r\nexport default function clearBlockFormat(editor: IEditor) {\r\n clearFormat(editor, ClearFormatMode.Block);\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport blockFormat from '../utils/blockFormat';\r\nimport execCommand from '../utils/execCommand';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport setBackgroundColor from './setBackgroundColor';\r\nimport setFontName from './setFontName';\r\nimport setFontSize from './setFontSize';\r\nimport setTextColor from './setTextColor';\r\nimport toggleBold from './toggleBold';\r\nimport toggleItalic from './toggleItalic';\r\nimport toggleUnderline from './toggleUnderline';\r\nimport {\r\n ChangeSource,\r\n ClearFormatMode,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n} from 'roosterjs-editor-types';\r\nimport {\r\n collapseNodesInRegion,\r\n getObjectKeys,\r\n getSelectedBlockElementsInRegion,\r\n getStyles,\r\n getTagOfNode,\r\n isBlockElement,\r\n isNodeInRegion,\r\n isVoidHtmlElement,\r\n PartialInlineElement,\r\n NodeInlineElement,\r\n safeInstanceOf,\r\n setStyles,\r\n splitBalancedNodeRange,\r\n toArray,\r\n unwrap,\r\n wrap,\r\n} from 'roosterjs-editor-dom';\r\nimport type { CompatibleClearFormatMode } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\nconst STYLES_TO_REMOVE = ['font', 'text-decoration', 'color', 'background'];\r\nconst TAGS_TO_UNWRAP = 'B,I,U,STRONG,EM,SUB,SUP,STRIKE,FONT,CENTER,H1,H2,H3,H4,H5,H6,UL,OL,LI,SPAN,P,BLOCKQUOTE,CODE,S,PRE'.split(\r\n ','\r\n);\r\nconst ATTRIBUTES_TO_PRESERVE = ['href', 'src', 'cellpadding', 'cellspacing'];\r\nconst TAGS_TO_STOP_UNWRAP = ['TD', 'TH', 'TR', 'TABLE', 'TBODY', 'THEAD'];\r\n\r\n/**\r\n * @param editor The editor instance\r\n * @returns if the current selection is composed of two or more block elements\r\n */\r\nfunction isMultiBlockSelection(editor: IEditor): boolean {\r\n let transverser = editor.getSelectionTraverser();\r\n let blockElement = transverser?.currentBlockElement;\r\n if (!blockElement) {\r\n return false;\r\n }\r\n\r\n let nextBlockElement = transverser?.getNextBlockElement();\r\n\r\n //At least two blocks are selected\r\n return !!nextBlockElement;\r\n}\r\n\r\nfunction clearNodeFormat(node: Node): boolean {\r\n // 1. Recursively clear format of all its child nodes\r\n const areBlockElements = toArray(node.childNodes).map(clearNodeFormat);\r\n let areAllChildrenBlock = areBlockElements.every(b => b);\r\n let returnBlockElement = isBlockElement(node);\r\n\r\n // 2. Unwrap the tag if necessary\r\n const tag = getTagOfNode(node);\r\n if (tag) {\r\n if (\r\n TAGS_TO_UNWRAP.indexOf(tag) >= 0 ||\r\n (areAllChildrenBlock &&\r\n !isVoidHtmlElement(node) &&\r\n TAGS_TO_STOP_UNWRAP.indexOf(tag) < 0)\r\n ) {\r\n if (returnBlockElement && !areAllChildrenBlock) {\r\n wrap(node);\r\n }\r\n unwrap(node);\r\n } else {\r\n // 3. Otherwise, remove all attributes\r\n clearAttribute(node as HTMLElement);\r\n }\r\n }\r\n\r\n return returnBlockElement;\r\n}\r\n\r\nfunction clearAttribute(element: HTMLElement) {\r\n const isTableCell = safeInstanceOf(element, 'HTMLTableCellElement');\r\n const isTable = safeInstanceOf(element, 'HTMLTableElement');\r\n\r\n for (let attr of toArray(element.attributes)) {\r\n if (isTableCell && attr.name == 'style') {\r\n removeNonBorderStyles(element);\r\n } else if (isTable && attr.name == 'style') {\r\n removeNotTableDefaultStyles(element);\r\n } else if (\r\n ATTRIBUTES_TO_PRESERVE.indexOf(attr.name.toLowerCase()) < 0 &&\r\n attr.name.indexOf('data-') != 0\r\n ) {\r\n element.removeAttribute(attr.name);\r\n }\r\n }\r\n}\r\n\r\nfunction updateStyles(\r\n element: HTMLElement,\r\n callbackfn: (\r\n value: string,\r\n styles: Record,\r\n result: Record\r\n ) => void\r\n) {\r\n const styles = getStyles(element);\r\n const result: Record = {};\r\n\r\n getObjectKeys(styles).forEach(style => callbackfn(style, styles, result));\r\n\r\n setStyles(element, styles);\r\n\r\n return result;\r\n}\r\n\r\nfunction removeNonBorderStyles(element: HTMLElement): Record {\r\n return updateStyles(element, (name, styles, result) => {\r\n if (name.indexOf('border') < 0) {\r\n result[name] = styles[name];\r\n delete styles[name];\r\n }\r\n });\r\n}\r\n\r\nfunction removeNotTableDefaultStyles(element: HTMLTableElement) {\r\n return updateStyles(element, (name, styles, result) => {\r\n if (name != 'border-collapse') {\r\n result[name] = styles[name];\r\n delete styles[name];\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Verifies recursively if a node and its parents have any siblings with text content\r\n * Ignoring the children of contentDiv and returning true if any node is LI\r\n * @returns `true` if this node, and its parents (minus the children of the contentDiv) have no siblings with text content\r\n */\r\nfunction isNodeWholeBlock(node: Node, editor: IEditor) {\r\n let currentNode: ParentNode | Node | null = node;\r\n while (currentNode && editor.contains(currentNode.parentNode)) {\r\n if (currentNode.nextSibling || currentNode.previousSibling) {\r\n if (safeInstanceOf(currentNode, 'HTMLLIElement')) {\r\n return true;\r\n }\r\n let isOnlySiblingWithContent = true;\r\n currentNode.parentNode?.childNodes.forEach(node => {\r\n if (node != currentNode && node.textContent?.length) {\r\n isOnlySiblingWithContent = false;\r\n }\r\n });\r\n return isOnlySiblingWithContent;\r\n }\r\n currentNode = currentNode.parentNode;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Clear the format of the selected text or list of blocks\r\n * If the current selection is compose of multiple block elements then remove the text and struture format for all the selected blocks\r\n * If the current selection is compose of a partial inline element then only the text format is removed from the current selection\r\n * @param editor The editor instance\r\n */\r\nfunction clearAutoDetectFormat(editor: IEditor) {\r\n const isMultiBlock = isMultiBlockSelection(editor);\r\n if (!isMultiBlock) {\r\n const transverser = editor.getSelectionTraverser();\r\n const inlineElement = transverser?.currentInlineElement;\r\n const isPartial =\r\n inlineElement instanceof PartialInlineElement ||\r\n (inlineElement instanceof NodeInlineElement &&\r\n !isNodeWholeBlock(inlineElement.getContainerNode(), editor));\r\n if (isPartial) {\r\n clearFormat(editor);\r\n return;\r\n }\r\n }\r\n clearBlockFormat(editor);\r\n}\r\n\r\n/**\r\n * Clear all formats of selected blocks.\r\n * When selection is collapsed, only clear format of current block.\r\n * @param editor The editor instance\r\n */\r\nfunction clearBlockFormat(editor: IEditor) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n blockFormat(editor, region => {\r\n const blocks = getSelectedBlockElementsInRegion(region);\r\n let nodes = collapseNodesInRegion(region, blocks);\r\n\r\n if (editor.contains(region.rootNode)) {\r\n // If there are styles on table cell, wrap all its children and move down all non-border styles.\r\n // So that we can preserve styles for unselected blocks as well as border styles for table\r\n const nonborderStyles = removeNonBorderStyles(region.rootNode);\r\n if (getObjectKeys(nonborderStyles).length > 0) {\r\n const wrapper = wrap(toArray(region.rootNode.childNodes));\r\n setStyles(wrapper, nonborderStyles);\r\n }\r\n }\r\n\r\n while (\r\n nodes.length > 0 &&\r\n nodes[0].parentNode &&\r\n isNodeInRegion(region, nodes[0].parentNode)\r\n ) {\r\n const balancedNodes = splitBalancedNodeRange(nodes);\r\n nodes = balancedNodes ? [balancedNodes] : [];\r\n }\r\n\r\n nodes.forEach(clearNodeFormat);\r\n });\r\n setDefaultFormat(editor);\r\n },\r\n 'clearBlockFormat'\r\n );\r\n}\r\n\r\nfunction clearInlineFormat(editor: IEditor) {\r\n editor.focus();\r\n editor.addUndoSnapshot(() => {\r\n execCommand(editor, DocumentCommand.RemoveFormat);\r\n editor.queryElements('[class]', QueryScope.OnSelection, node =>\r\n node.removeAttribute('class')\r\n );\r\n\r\n setDefaultFormat(editor);\r\n\r\n return 'clearInlineFormat';\r\n }, ChangeSource.Format);\r\n}\r\n\r\nfunction setDefaultFontWeight(editor: IEditor, fontWeight: string = '400') {\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-weight',\r\n element => (element.style.fontWeight = fontWeight),\r\n 'setDefaultFontWeight'\r\n );\r\n}\r\n\r\nfunction setDefaultFormat(editor: IEditor) {\r\n const defaultFormat = editor.getDefaultFormat();\r\n const isDefaultFormatEmpty = getObjectKeys(defaultFormat).length === 0;\r\n editor.queryElements('[style]', QueryScope.InSelection, node => {\r\n const tag = getTagOfNode(node);\r\n if (TAGS_TO_STOP_UNWRAP.indexOf(tag) == -1) {\r\n removeStyles(tag, node, isDefaultFormatEmpty);\r\n } else {\r\n node.childNodes.forEach(node => {\r\n node.childNodes.forEach(cNode => {\r\n const tag = getTagOfNode(cNode);\r\n if (safeInstanceOf(cNode, 'HTMLElement')) {\r\n removeStyles(tag, cNode, isDefaultFormatEmpty);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n if (!isDefaultFormatEmpty) {\r\n if (defaultFormat.fontFamily) {\r\n setFontName(editor, defaultFormat.fontFamily);\r\n }\r\n if (defaultFormat.fontSize) {\r\n setFontSize(editor, defaultFormat.fontSize);\r\n }\r\n if (defaultFormat.textColor) {\r\n const setColorIgnoredElements = editor.queryElements(\r\n 'a *, a',\r\n QueryScope.OnSelection\r\n );\r\n\r\n let shouldApplyInlineStyle =\r\n setColorIgnoredElements.length > 0\r\n ? (element: HTMLElement) => setColorIgnoredElements.indexOf(element) == -1\r\n : undefined;\r\n\r\n if (defaultFormat.textColors) {\r\n setTextColor(editor, defaultFormat.textColors, shouldApplyInlineStyle);\r\n } else {\r\n setTextColor(editor, defaultFormat.textColor, shouldApplyInlineStyle);\r\n }\r\n }\r\n if (defaultFormat.backgroundColor) {\r\n if (defaultFormat.backgroundColors) {\r\n setBackgroundColor(editor, defaultFormat.backgroundColors);\r\n } else {\r\n setBackgroundColor(editor, defaultFormat.backgroundColor);\r\n }\r\n }\r\n if (defaultFormat.bold) {\r\n toggleBold(editor);\r\n } else {\r\n setDefaultFontWeight(editor);\r\n }\r\n if (defaultFormat.italic) {\r\n toggleItalic(editor);\r\n }\r\n if (defaultFormat.underline) {\r\n toggleUnderline(editor);\r\n }\r\n }\r\n}\r\n\r\nfunction removeStyles(tag: string, node: HTMLElement, isDefaultFormatEmpty: boolean) {\r\n if (TAGS_TO_STOP_UNWRAP.indexOf(tag) == -1) {\r\n STYLES_TO_REMOVE.forEach(style => node.style.removeProperty(style));\r\n\r\n // when default format is empty, keep the HTML minimum by removing style attribute if there's no style\r\n // (note: because default format is empty, we're not adding style back in)\r\n if (isDefaultFormatEmpty && node.getAttribute('style') === '') {\r\n node.removeAttribute('style');\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Clear the format in current selection, after cleaning, the format will be\r\n * changed to default format. The format that get cleaned include B/I/U/font name/\r\n * font size/text color/background color/align left/align right/align center/superscript/subscript\r\n * @param editor The editor instance\r\n * @param formatType type of format to apply\r\n */\r\nexport default function clearFormat(\r\n editor: IEditor,\r\n formatType: ClearFormatMode | CompatibleClearFormatMode = ClearFormatMode.Inline\r\n) {\r\n switch (formatType) {\r\n case ClearFormatMode.Inline:\r\n clearInlineFormat(editor);\r\n break;\r\n case ClearFormatMode.Block:\r\n clearBlockFormat(editor);\r\n break;\r\n default:\r\n clearAutoDetectFormat(editor);\r\n }\r\n}\r\n","import { HtmlSanitizer, matchLink, wrap } from 'roosterjs-editor-dom';\r\nimport {\r\n ChangeSource,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n// Regex matching Uri scheme\r\nconst URI_REGEX = /^[a-zA-Z]+:/i;\r\n// Regex matching begin of email address\r\nconst MAILTO_REGEX = /^[\\w.%+-]+@/i;\r\n// Regex matching begin of ftp, i.e. ftp.microsoft.com\r\nconst FTP_REGEX = /^ftp\\./i;\r\n\r\nfunction applyLinkPrefix(url: string): string {\r\n if (!url) {\r\n return url;\r\n }\r\n\r\n // Add link prefix per rule:\r\n // (a) if the url always starts with a URI scheme, leave it as it is\r\n // (b) if the url is an email address, xxx@... add mailto: prefix\r\n // (c) if the url starts with ftp., add ftp:// prefix\r\n // (d) rest, add http:// prefix\r\n let prefix = '';\r\n if (url.search(URI_REGEX) < 0) {\r\n if (url.search(MAILTO_REGEX) == 0) {\r\n prefix = 'mailto:';\r\n } else if (url.search(FTP_REGEX) == 0) {\r\n prefix = 'ftp://';\r\n } else {\r\n // fallback to http://\r\n prefix = 'http://';\r\n }\r\n }\r\n\r\n return prefix + url;\r\n}\r\n\r\n/**\r\n * Insert a hyperlink at cursor.\r\n * When there is a selection, hyperlink will be applied to the selection,\r\n * otherwise a hyperlink will be inserted to the cursor position.\r\n * @param editor Editor object\r\n * @param link Link address, can be http(s), mailto, notes, file, unc, ftp, news, telnet, gopher, wais.\r\n * When protocol is not specified, a best matched protocol will be predicted.\r\n * @param altText Optional alt text of the link, will be shown when hover on the link\r\n * @param displayText Optional display text for the link.\r\n * @param target Optional display target for the link (\"_blank\"|\"_self\"|\"_parent\"|\"_top\"|\"{framename}\")\r\n * If specified, the display text of link will be replaced with this text.\r\n * If not specified and there wasn't a link, the link url will be used as display text.\r\n */\r\nexport default function createLink(\r\n editor: IEditor,\r\n link: string,\r\n altText?: string,\r\n displayText?: string,\r\n target?: string\r\n) {\r\n editor.focus();\r\n let url = (checkXss(link) || '').trim();\r\n if (url) {\r\n let linkData = matchLink(url);\r\n // matchLink can match most links, but not all, i.e. if you pass link a link as \"abc\", it won't match\r\n // we know in that case, users will want to insert a link like http://abc\r\n // so we have separate logic in applyLinkPrefix to add link prefix depending on the format of the link\r\n // i.e. if the link starts with something like abc@xxx, we will add mailto: prefix\r\n // if the link starts with ftp.xxx, we will add ftp:// link. For more, see applyLinkPrefix\r\n let normalizedUrl = linkData ? linkData.normalizedUrl : applyLinkPrefix(url);\r\n let originalUrl = linkData ? linkData.originalUrl : url;\r\n\r\n editor.addUndoSnapshot(() => {\r\n const selection = editor.getSelectionRangeEx();\r\n let anchor: HTMLAnchorElement | null = null;\r\n if (selection.type === SelectionRangeTypes.Normal) {\r\n const range = selection.ranges[0];\r\n if (range && range.collapsed) {\r\n anchor = getAnchorNodeAtCursor(editor);\r\n\r\n // If there is already a link, just change its href\r\n if (anchor) {\r\n anchor.href = normalizedUrl;\r\n // Change text content if it is specified\r\n updateAnchorDisplayText(anchor, displayText);\r\n } else {\r\n anchor = editor.getDocument().createElement('A') as HTMLAnchorElement;\r\n anchor.textContent = displayText || originalUrl;\r\n anchor.href = normalizedUrl;\r\n editor.insertNode(anchor);\r\n }\r\n } else {\r\n // the selection is not collapsed, use browser execCommand\r\n editor\r\n .getDocument()\r\n .execCommand(DocumentCommand.CreateLink, false, normalizedUrl);\r\n const traverser = editor.getSelectionTraverser();\r\n\r\n let currentInline = traverser?.getNextInlineElement();\r\n\r\n // list for removing unwanted lines\r\n let deletionInlineList: Node[] = [];\r\n\r\n while (currentInline) {\r\n deletionInlineList.push(currentInline.getContainerNode());\r\n currentInline = traverser?.getNextInlineElement();\r\n }\r\n\r\n deletionInlineList.forEach(node => editor.deleteNode(node));\r\n\r\n anchor = getAnchorNodeAtCursor(editor);\r\n updateAnchorDisplayText(anchor, displayText);\r\n }\r\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\r\n anchor = wrap(selection.image, 'A') as HTMLAnchorElement;\r\n anchor.href = normalizedUrl;\r\n }\r\n\r\n if (altText && anchor) {\r\n anchor.title = altText;\r\n }\r\n if (anchor) {\r\n updateAnchorTarget(anchor, target);\r\n }\r\n return anchor;\r\n }, ChangeSource.CreateLink);\r\n }\r\n}\r\n\r\nfunction getAnchorNodeAtCursor(editor: IEditor): HTMLAnchorElement {\r\n return editor.queryElements('a[href]', QueryScope.OnSelection)[0] as HTMLAnchorElement;\r\n}\r\n\r\nfunction updateAnchorDisplayText(anchor: HTMLAnchorElement, displayText?: string) {\r\n if (displayText && anchor.textContent != displayText) {\r\n anchor.textContent = displayText;\r\n }\r\n}\r\n\r\nfunction updateAnchorTarget(anchor: HTMLAnchorElement, target?: string) {\r\n if (target) {\r\n anchor.target = target;\r\n } else if (!target && anchor.getAttribute('target')) {\r\n anchor.removeAttribute('target');\r\n }\r\n}\r\n\r\nfunction checkXss(link: string): string | null {\r\n const sanitizer = new HtmlSanitizer();\r\n const a = document.createElement('a');\r\n\r\n a.href = link || '';\r\n sanitizer.sanitize(a);\r\n // We use getAttribute because some browsers will try to make the href property a valid link.\r\n // This has unintended side effects when the link lacks a protocol.\r\n return a.getAttribute('href');\r\n}\r\n","import { getTableFormatInfo, getTagOfNode, toArray } from 'roosterjs-editor-dom';\r\nimport {\r\n ElementBasedFormatState,\r\n FormatState,\r\n IEditor,\r\n PluginEvent,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get element based Format State at cursor\r\n * @param editor The editor instance\r\n * @param event (Optional) The plugin event, it stores the event cached data for looking up.\r\n * In this function the event cache is used to get list state and heading level. If not passed,\r\n * it will query the node within selection to get the info\r\n * @returns An ElementBasedFormatState object\r\n */\r\nexport function getElementBasedFormatState(\r\n editor: IEditor,\r\n event?: PluginEvent\r\n): ElementBasedFormatState {\r\n const listTag = getTagOfNode(\r\n editor.getElementAtCursor('OL,UL', undefined /*startFrom*/, event)\r\n );\r\n\r\n // Check if selection is multiline, spans more than one block\r\n const range = editor.getSelectionRange();\r\n let multiline = false;\r\n\r\n if (range && !range.collapsed) {\r\n let startingBlock = editor.getBlockElementAtNode(range.startContainer);\r\n let endingBlock = editor.getBlockElementAtNode(range.endContainer);\r\n multiline = endingBlock && startingBlock ? !endingBlock.equals(startingBlock) : false;\r\n }\r\n\r\n const headingTag = getTagOfNode(\r\n editor.getElementAtCursor('H1,H2,H3,H4,H5,H6', undefined /*startFrom*/, event)\r\n );\r\n\r\n const table = editor.queryElements('table', QueryScope.OnSelection)[0];\r\n const tableFormat = table ? getTableFormatInfo(table) : undefined;\r\n const hasTableHeader = table?.rows[0]\r\n ? toArray(table.rows[0].cells).every(cell => getTagOfNode(cell) == 'TH')\r\n : undefined;\r\n const headingLevel = (headingTag && parseInt(headingTag[1])) || 0;\r\n\r\n return {\r\n isBullet: listTag == 'UL',\r\n isNumbering: listTag == 'OL',\r\n isMultilineSelection: multiline,\r\n headingLevel: headingLevel,\r\n headerLevel: headingLevel,\r\n canUnlink: !!editor.queryElements('a[href]', QueryScope.OnSelection)[0],\r\n canAddImageAltText: !!editor.queryElements('img', QueryScope.OnSelection)[0],\r\n isBlockQuote: !!editor.queryElements('blockquote', QueryScope.OnSelection)[0],\r\n isCodeInline: !!editor.queryElements('code', QueryScope.OnSelection)[0],\r\n isCodeBlock: !!editor.queryElements('pre>code', QueryScope.OnSelection)[0],\r\n isInTable: !!table,\r\n tableFormat: tableFormat || {},\r\n tableHasHeader: hasTableHeader,\r\n canMergeTableCell: canMergeTableCell(editor),\r\n };\r\n}\r\n\r\n/**\r\n * Get format state at cursor\r\n * A format state is a collection of all format related states, e.g.,\r\n * bold, italic, underline, font name, font size, etc.\r\n * @param editor The editor instance\r\n * @param event (Optional) The plugin event, it stores the event cached data for looking up.\r\n * In this function the event cache is used to get list state and heading level. If not passed,\r\n * it will query the node within selection to get the info\r\n * @returns The format state at cursor\r\n */\r\nexport default function getFormatState(editor: IEditor, event?: PluginEvent): FormatState {\r\n return {\r\n ...editor.getPendableFormatState(false /* forceGetStateFromDom */),\r\n ...getElementBasedFormatState(editor, event),\r\n ...editor.getStyleBasedFormatState(),\r\n ...editor.getUndoState(),\r\n isDarkMode: editor.isDarkMode(),\r\n zoomScale: editor.getZoomScale(),\r\n };\r\n}\r\n\r\n/**\r\n * Checks whether the editor selection range is starting and ending at a table element.\r\n * @param editor Editor Instance\r\n * @returns\r\n */\r\n\r\nconst canMergeTableCell = (editor: IEditor): boolean => {\r\n const selection = editor.getSelectionRangeEx();\r\n const isATable = selection && selection.type === SelectionRangeTypes.TableSelection;\r\n if (isATable && selection.coordinates) {\r\n const { firstCell, lastCell } = selection.coordinates;\r\n if (firstCell.x !== lastCell.x || firstCell.y !== lastCell.y) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n};\r\n","import commitListChains from '../utils/commitListChains';\nimport {\n addDelimiters,\n applyFormat,\n commitEntity,\n createElement,\n getEntityFromElement,\n getEntitySelector,\n Position,\n VListChain,\n wrap,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContentPosition,\n Entity,\n ExperimentalFeatures,\n IEditor,\n KnownCreateElementDataIndex,\n NodePosition,\n PositionType,\n} from 'roosterjs-editor-types';\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Insert an entity into editor.\n * @param editor The editor to insert entity into.\n * @param type Type of the entity\n * @param contentNode Root element of the entity\n * @param isBlock Whether the entity will be shown as a block\n * @param isReadonly Whether the entity will be a readonly entity\n * @param position @optional The position to insert into. If not specified, current position will be used.\n * If isBlock is true, entity will be insert below this position\n * @param insertToRegionRoot @optional When pass true, insert the entity at the root level of current region.\n * Parent nodes will be split if need\n * @param focusAfterEntity @optional When pass true, focus will be moved next to the entity. For inline entity,\n * focus will be after right after the entity (and the delimiter if exist). For block entity, focus will be in\n * the new empty line below the entity\n */\nexport default function insertEntity(\n editor: IEditor,\n type: string,\n contentNode: Node,\n isBlock: boolean,\n isReadonly: boolean,\n position?:\n | NodePosition\n | ContentPosition.Begin\n | ContentPosition.End\n | ContentPosition.DomEnd\n | CompatibleContentPosition.Begin\n | CompatibleContentPosition.End\n | CompatibleContentPosition.DomEnd,\n insertToRegionRoot?: boolean,\n focusAfterEntity?: boolean\n): Entity {\n const wrapper = wrap(contentNode, isBlock ? 'div' : 'span');\n\n // For inline & readonly entity, we need to set display to \"inline-block\" otherwise\n // there will be some weird behavior when move cursor around the entity node.\n // And we should only do this for readonly entity since \"inline-block\" has some side effect\n // in IE that there will be a resize border around the inline-block element. We made some\n // workaround for readonly entity for this issue but for editable entity, keep it as \"inline\"\n // will just work fine.\n if (!isBlock && isReadonly) {\n wrapper.style.display = 'inline-block';\n }\n\n commitEntity(wrapper, type, isReadonly);\n\n if (!editor.contains(wrapper)) {\n let currentRange: Range | null = null;\n let contentPosition:\n | ContentPosition.Begin\n | ContentPosition.End\n | ContentPosition.DomEnd\n | ContentPosition.SelectionStart\n | CompatibleContentPosition.Begin\n | CompatibleContentPosition.End\n | CompatibleContentPosition.DomEnd\n | CompatibleContentPosition.SelectionStart;\n\n if (typeof position == 'number') {\n contentPosition = position;\n } else if (position) {\n currentRange = editor.getSelectionRange();\n const node = position.normalize().node;\n const existingEntity = node && editor.getElementAtCursor(getEntitySelector(), node);\n\n // Do not insert entity into another entity\n if (existingEntity) {\n position = new Position(existingEntity, PositionType.After);\n }\n\n editor.select(position);\n contentPosition = ContentPosition.SelectionStart;\n } else {\n editor.focus();\n contentPosition = ContentPosition.SelectionStart;\n }\n\n const regions = insertToRegionRoot && editor.getSelectedRegions();\n const chains = regions && VListChain.createListChains(regions);\n\n editor.insertNode(wrapper, {\n updateCursor: false,\n insertOnNewLine: isBlock,\n replaceSelection: true,\n position: contentPosition,\n insertToRegionRoot: insertToRegionRoot,\n });\n\n if (chains) {\n commitListChains(editor, chains);\n }\n\n if (contentPosition == ContentPosition.SelectionStart) {\n if (currentRange) {\n editor.select(currentRange);\n } else if (!isBlock) {\n editor.select(wrapper, PositionType.After);\n }\n }\n }\n\n const entity = getEntityFromElement(wrapper)!;\n\n if (isBlock) {\n // Insert an extra empty line for block entity to make sure\n // user can still put cursor below the entity.\n const newLine = createElement(KnownCreateElementDataIndex.EmptyLine, editor.getDocument());\n\n wrapper.parentNode?.insertBefore(newLine!, wrapper.nextSibling);\n\n if (newLine) {\n applyFormat(\n newLine as HTMLElement,\n editor.getDefaultFormat(),\n editor.isDarkMode(),\n editor.getDarkColorHandler()\n );\n }\n\n if (focusAfterEntity) {\n const br = newLine?.querySelector('br');\n const pos = br && new Position(br, PositionType.Before);\n\n if (pos) {\n editor.select(pos);\n }\n }\n } else if (\n isReadonly &&\n editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n addDelimiters(entity.wrapper);\n if (entity.wrapper.nextElementSibling) {\n editor.select(new Position(entity.wrapper.nextElementSibling, PositionType.After));\n }\n }\n\n editor.triggerContentChangedEvent(ChangeSource.InsertEntity, entity);\n\n return entity;\n}\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { getObjectKeys, readFile } from 'roosterjs-editor-dom';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Insert an image to editor at current selection\r\n * @param editor The editor instance\r\n * @param imageFileOrSrc Either the image file blob or source string of the image.\r\n * @param attributes Optional image element attributes\r\n */\r\nexport default function insertImage(\r\n editor: IEditor,\r\n imageFileOrSrc: File | string,\r\n attributes?: Record\r\n): void {\r\n if (typeof imageFileOrSrc == 'string') {\r\n insertImageWithSrc(editor, imageFileOrSrc, attributes);\r\n } else {\r\n readFile(imageFileOrSrc, dataUrl => {\r\n if (dataUrl && !editor.isDisposed()) {\r\n insertImageWithSrc(editor, dataUrl, attributes);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction insertImageWithSrc(editor: IEditor, src: string, attributes?: Record) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const image = editor.getDocument().createElement('img');\r\n image.src = src;\r\n\r\n if (attributes) {\r\n getObjectKeys(attributes).forEach(attribute =>\r\n image.setAttribute(attribute, attributes[attribute])\r\n );\r\n }\r\n editor.insertNode(image);\r\n },\r\n 'insertImage'\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Remove link at selection. If no links at selection, do nothing.\r\n * If selection contains multiple links, all of the link styles will be removed.\r\n * If only part of a link is selected, the whole link style will be removed.\r\n * @param editor The editor instance\r\n */\r\nexport default function removeLink(editor: IEditor) {\r\n editor.focus();\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n editor.queryElements('a[href]', QueryScope.OnSelection, unwrap);\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'removeLink'\r\n );\r\n}\r\n","import { ContentPosition, IEditor, IPositionContentSearcher } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Replace text before current selection with a node, current selection will be kept if possible\r\n * @param editor The editor instance\r\n * @param text The text for matching. We will try to match the text with the text before cursor\r\n * @param node The node to replace the text with\r\n * @param exactMatch True if the text must appear exactly before selection,\r\n * otherwise there can be some text between the target text and selection\r\n * @param searcher Optional PositionContentSearcher of current selection to help search text\r\n */\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n text: string,\r\n node: Node,\r\n exactMatch: boolean,\r\n searcher?: IPositionContentSearcher\r\n): boolean;\r\n\r\n/**\r\n * Replace a given range with a node, current selection will be kept if possible\r\n * @param editor The editor instance\r\n * @param range The range to replace from\r\n * @param node The node to replace the text with\r\n * @param exactMatch True if the text must appear exactly before selection,\r\n * otherwise there can be some text between the target text and selection\r\n */\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n range: Range,\r\n node: Node,\r\n exactMatch: boolean\r\n): boolean;\r\n\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n textOrRange: string | Range,\r\n node: Node,\r\n exactMatch: boolean,\r\n searcher?: IPositionContentSearcher\r\n): boolean {\r\n // Make sure the text and node is valid\r\n if (!textOrRange || !node) {\r\n return false;\r\n }\r\n\r\n let range: Range | null;\r\n\r\n if (typeof textOrRange == 'string') {\r\n searcher = (searcher || editor.getContentSearcherOfCursor()) ?? undefined;\r\n range = searcher?.getRangeFromText(textOrRange, exactMatch) ?? null;\r\n } else {\r\n range = textOrRange;\r\n }\r\n\r\n if (range) {\r\n const backupRange = editor.getSelectionRange();\r\n\r\n // If the range to replace is right before current cursor, it is actually an exact match\r\n if (\r\n backupRange?.collapsed &&\r\n range.endContainer == backupRange.startContainer &&\r\n range.endOffset == backupRange.startOffset\r\n ) {\r\n exactMatch = true;\r\n }\r\n\r\n editor.insertNode(node, {\r\n position: ContentPosition.Range,\r\n updateCursor: exactMatch,\r\n replaceSelection: true,\r\n insertOnNewLine: false,\r\n range: range,\r\n });\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { IEditor } from 'roosterjs-editor-types';\n\n/**\n * Rotate an element visually\n * @param editor The editor instance\n * @param element The element that should be rotated\n * @param angle The degree at which to rotate the element from it's center\n */\nexport default function rotateElement(editor: IEditor, element: HTMLElement, angle: number): void {\n if (element) {\n formatUndoSnapshot(\n editor,\n () => {\n element.style.transform = `rotate(${angle}deg)`;\n },\n 'rotateElement'\n );\n }\n}\n","import blockFormat from '../utils/blockFormat';\r\nimport execCommand from '../utils/execCommand';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport normalizeBlockquote from '../utils/normalizeBlockquote';\r\nimport {\r\n createVListFromRegion,\r\n findClosestElementAncestor,\r\n getSelectedBlockElementsInRegion,\r\n isWholeTableSelected,\r\n VTable,\r\n} from 'roosterjs-editor-dom';\r\nimport {\r\n Alignment,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n TableSelectionRange,\r\n} from 'roosterjs-editor-types';\r\nimport type { CompatibleAlignment } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Set content alignment\r\n * @param editor The editor instance\r\n * @param alignment The alignment option:\r\n * Alignment.Center, Alignment.Left, Alignment.Right\r\n */\r\nexport default function setAlignment(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const selection = editor.getSelectionRangeEx();\r\n const isATable = selection && selection.type === SelectionRangeTypes.TableSelection;\r\n const elementAtCursor = editor.getElementAtCursor();\r\n\r\n if (\r\n isATable &&\r\n selection.coordinates &&\r\n isWholeTableSelected(new VTable(selection.table), selection.coordinates)\r\n ) {\r\n alignTable(selection, alignment);\r\n } else if (elementAtCursor && isList(elementAtCursor)) {\r\n alignList(editor, alignment);\r\n } else {\r\n alignText(editor, alignment);\r\n }\r\n },\r\n 'setAlignment'\r\n );\r\n}\r\n\r\n/**\r\n * Align text using the margins\r\n * @param editor\r\n * @param element\r\n * @param alignment\r\n * @param addUndoSnapshot\r\n * @returns\r\n */\r\nfunction alignTable(selection: TableSelectionRange, alignment: Alignment | CompatibleAlignment) {\r\n const table = selection.table;\r\n if (alignment == Alignment.Center) {\r\n table.style.marginLeft = 'auto';\r\n table.style.marginRight = 'auto';\r\n } else if (alignment == Alignment.Right) {\r\n table.style.marginLeft = 'auto';\r\n table.style.marginRight = '';\r\n } else {\r\n table.style.marginLeft = '';\r\n table.style.marginRight = 'auto';\r\n }\r\n}\r\n\r\n/**\r\n * Align text using the text-align\r\n * @param editor\r\n * @param alignment\r\n * @returns\r\n */\r\nfunction alignText(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n let align = 'left';\r\n let command = DocumentCommand.JustifyLeft;\r\n if (alignment == Alignment.Center) {\r\n command = DocumentCommand.JustifyCenter;\r\n align = 'center';\r\n } else if (alignment == Alignment.Right) {\r\n command = DocumentCommand.JustifyRight;\r\n align = 'right';\r\n }\r\n execCommand(editor, command);\r\n const elements = editor.queryElements('[align]', QueryScope.OnSelection, node => {\r\n node.style.textAlign = align;\r\n normalizeBlockquote(node);\r\n });\r\n\r\n if (elements.length == 0) {\r\n const node = editor.getElementAtCursor();\r\n if (node) {\r\n normalizeBlockquote(node);\r\n }\r\n }\r\n}\r\n\r\nfunction isList(element: HTMLElement) {\r\n return findClosestElementAncestor(element, undefined /** root */, 'LI');\r\n}\r\n\r\nfunction alignList(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n blockFormat(\r\n editor,\r\n (region, start, end) => {\r\n const blocks = getSelectedBlockElementsInRegion(region);\r\n const startNode = blocks[0].getStartNode();\r\n const vList = createVListFromRegion(region, true /*includeSiblingLists*/, startNode);\r\n if (start && end) {\r\n vList?.setAlignment(start, end, alignment);\r\n }\r\n },\r\n undefined /* beforeRunCallback */,\r\n 'alignList'\r\n );\r\n}\r\n","import applyInlineStyle from '../utils/applyInlineStyle';\r\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\r\nimport { setColor } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Set background color at current selection\r\n * @param editor The editor instance\r\n * @param color One of two options:\r\n * The color string, can be any of the predefined color names (e.g, 'red')\r\n * or hexadecimal color string (e.g, '#FF0000') or rgb value (e.g, 'rgb(255, 0, 0)') supported by browser.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take effect\r\n * Alternatively, you can pass a @typedef ModeIndependentColor. If in light mode, the lightModeColor property will be used.\r\n * If in dark mode, the darkModeColor will be used and the lightModeColor will be used when converting back to light mode.\r\n **/\r\nexport default function setBackgroundColor(editor: IEditor, color: string | ModeIndependentColor) {\r\n applyInlineStyle(\r\n editor,\r\n (element, isInnerNode) => {\r\n setColor(\r\n element,\r\n isInnerNode ? '' : color,\r\n true /*isBackground*/,\r\n editor.isDarkMode(),\r\n false /*shouldAdaptFontColor*/,\r\n editor.getDarkColorHandler()\r\n );\r\n },\r\n 'setBackgroundColor'\r\n );\r\n}\r\n","import collapseSelectedBlocks from '../utils/collapseSelectedBlocks';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { Direction, IEditor } from 'roosterjs-editor-types';\r\nimport type { CompatibleDirection } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Change direction for the blocks/paragraph at selection\r\n * @param editor The editor instance\r\n * @param direction The direction option:\r\n * Direction.LeftToRight refers to 'ltr', Direction.RightToLeft refers to 'rtl'\r\n */\r\nexport default function setDirection(editor: IEditor, direction: Direction | CompatibleDirection) {\r\n editor.focus();\r\n\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n collapseSelectedBlocks(editor, element => {\r\n element.setAttribute('dir', direction == Direction.LeftToRight ? 'ltr' : 'rtl');\r\n element.style.textAlign = direction == Direction.LeftToRight ? 'left' : 'right';\r\n });\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'setDirection'\r\n );\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set font name at selection\r\n * @param editor The editor instance\r\n * @param fontName The fontName string, should be a valid CSS font-family style.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n */\r\nexport default function setFontName(editor: IEditor, fontName: string) {\r\n // The browser provided execCommand creates a HTML tag with face attribute. is not HTML5 standard\r\n // (http://www.w3schools.com/tags/tag_font.asp).\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-family',\r\n (element, isInnerNode) => {\r\n element.style.fontFamily = isInnerNode ? '' : fontName;\r\n },\r\n 'setFontName'\r\n );\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { getComputedStyle } from 'roosterjs-editor-dom';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set font size at selection\r\n * @param editor The editor instance\r\n * @param fontSize The fontSize string, should be a valid CSS font-size style.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n */\r\nexport default function setFontSize(editor: IEditor, fontSize: string) {\r\n // The browser provided execCommand only accepts 1-7 point value. In addition, it uses HTML tag with size attribute.\r\n // is not HTML5 standard (http://www.w3schools.com/tags/tag_font.asp).\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-size',\r\n (element, isInnerNode) => {\r\n element.style.fontSize = isInnerNode ? '' : fontSize;\r\n let lineHeight = getComputedStyle(element, 'line-height');\r\n if (lineHeight && lineHeight != 'normal') {\r\n element.style.lineHeight = 'normal';\r\n }\r\n },\r\n 'setFontSize'\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { DocumentCommand, IEditor, QueryScope } from 'roosterjs-editor-types';\nimport { HtmlSanitizer, moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * Set heading level at selection\n * @param editor The editor instance\n * @param level The heading level, can be a number from 0 to 6, in which 1 ~ 6 refers to\n * the HTML heading element <H1> to <H6>, 0 means no heading\n * if passed in param is outside the range, will be rounded to nearest number in the range\n */\nexport default function setHeadingLevel(editor: IEditor, level: number) {\n level = Math.min(Math.max(Math.round(level), 0), 6);\n\n formatUndoSnapshot(\n editor,\n () => {\n editor.focus();\n\n let wrapped = false;\n editor.queryElements('H1,H2,H3,H4,H5,H6', QueryScope.OnSelection, heading => {\n if (!wrapped) {\n editor.getDocument().execCommand(DocumentCommand.FormatBlock, false, '
                ');\n wrapped = true;\n }\n\n const div = editor.getDocument().createElement('div');\n moveChildNodes(div, heading);\n editor.replaceNode(heading, div);\n });\n\n if (level > 0) {\n let traverser = editor.getSelectionTraverser();\n let blockElement = traverser?.currentBlockElement;\n let sanitizer = new HtmlSanitizer({\n cssStyleCallbacks: {\n 'font-size': () => false,\n },\n });\n while (blockElement) {\n let element = blockElement.collapseToSingleElement();\n sanitizer.sanitize(element);\n blockElement = traverser?.getNextBlockElement();\n }\n editor.getDocument().execCommand(DocumentCommand.FormatBlock, false, ``);\n }\n },\n 'toggleHeader'\n );\n}\n\n/**\n * @deprecated Use setHeadingLevel instead\n * Keep this for compatibility only, will be removed in next major release\n */\nexport const toggleHeader = setHeadingLevel;\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set image alt text for all selected images at selection. If no images is contained\r\n * in selection, do nothing.\r\n * The alt attribute provides alternative information for an image if a user for some reason\r\n * cannot view it (because of slow connection, an error in the src attribute, or if the user\r\n * uses a screen reader). See https://www.w3schools.com/tags/att_img_alt.asp\r\n * @param editor The editor instance\r\n * @param altText The image alt text\r\n */\r\nexport default function setImageAltText(editor: IEditor, altText: string) {\r\n editor.focus();\r\n\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n editor.queryElements('img', QueryScope.OnSelection, node =>\r\n node.setAttribute('alt', altText)\r\n );\r\n },\r\n 'setImageAltText'\r\n );\r\n}\r\n","import blockFormat from '../utils/blockFormat';\r\nimport normalizeBlockquote from '../utils/normalizeBlockquote';\r\nimport {\r\n BlockElement,\r\n ExperimentalFeatures,\r\n IEditor,\r\n Indentation,\r\n KnownCreateElementDataIndex,\r\n RegionBase,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\nimport {\r\n collapseNodesInRegion,\r\n createVListFromRegion,\r\n findClosestElementAncestor,\r\n getSelectedBlockElementsInRegion,\r\n getTagOfNode,\r\n isNodeInRegion,\r\n isWholeTableSelected,\r\n splitBalancedNodeRange,\r\n toArray,\r\n unwrap,\r\n VList,\r\n VTable,\r\n wrap,\r\n} from 'roosterjs-editor-dom';\r\nimport type { CompatibleIndentation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Set indentation at selection\r\n * If selection contains bullet/numbering list, increase/decrease indentation will\r\n * increase/decrease the list level by one.\r\n * @param editor The editor instance\r\n * @param indentation The indentation option:\r\n * Indentation.Increase to increase indentation or Indentation.Decrease to decrease indentation\r\n */\r\nexport default function setIndentation(\r\n editor: IEditor,\r\n indentation: Indentation | CompatibleIndentation\r\n) {\r\n const handler = indentation == Indentation.Increase ? indent : outdent;\r\n\r\n blockFormat(\r\n editor,\r\n (region, start, end) => {\r\n const blocks = getSelectedBlockElementsInRegion(region, true /*createBlockIfEmpty*/);\r\n const blockGroups: BlockElement[][] = [[]];\r\n\r\n for (let i = 0; i < blocks.length; i++) {\r\n const startNode = blocks[i].getStartNode();\r\n const vList = createVListFromRegion(\r\n region,\r\n true /*includeSiblingLists*/,\r\n startNode\r\n );\r\n\r\n if (vList) {\r\n while (blocks[i + 1] && vList.contains(blocks[i + 1].getStartNode())) {\r\n i++;\r\n }\r\n\r\n const isTabKeyTextFeaturesEnabled = editor.isFeatureEnabled(\r\n ExperimentalFeatures.TabKeyTextFeatures\r\n );\r\n\r\n if (\r\n isTabKeyTextFeaturesEnabled &&\r\n isFirstItem(vList, startNode) &&\r\n shouldHandleWithBlockquotes(indentation, editor, startNode)\r\n ) {\r\n const block = editor.getBlockElementAtNode(vList.rootList);\r\n if (block) {\r\n blockGroups.push([block]);\r\n }\r\n } else {\r\n if (start && end) {\r\n indentation == Indentation.Decrease\r\n ? vList.setIndentation(\r\n start,\r\n end,\r\n indentation,\r\n false /* softOutdent */,\r\n isTabKeyTextFeaturesEnabled /* preventItemRemoval */\r\n )\r\n : vList.setIndentation(start, end, indentation);\r\n vList.writeBack(\r\n editor.isFeatureEnabled(\r\n ExperimentalFeatures.ReuseAllAncestorListElements\r\n ),\r\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\r\n );\r\n blockGroups.push([]);\r\n }\r\n }\r\n } else {\r\n blockGroups[blockGroups.length - 1].push(blocks[i]);\r\n }\r\n }\r\n\r\n blockGroups.forEach(group => handler(region, group));\r\n },\r\n () => {\r\n const selection = editor.getSelectionRangeEx();\r\n if (\r\n selection.type == SelectionRangeTypes.TableSelection &&\r\n selection.coordinates &&\r\n isWholeTableSelected(new VTable(selection.table), selection.coordinates)\r\n ) {\r\n if (indentation == Indentation.Decrease) {\r\n const quote = editor.getElementAtCursor('blockquote', selection.table);\r\n if (quote) {\r\n unwrap(quote);\r\n }\r\n } else if (indentation == Indentation.Increase) {\r\n wrap(selection.table, KnownCreateElementDataIndex.BlockquoteWrapper);\r\n }\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'setIndentation'\r\n );\r\n\r\n function indent(region: RegionBase, blocks: BlockElement[]) {\r\n const nodes = collapseNodesInRegion(region, blocks);\r\n wrap(nodes, KnownCreateElementDataIndex.BlockquoteWrapper);\r\n const quotesHandled: Node[] = [];\r\n nodes.forEach(node => normalizeBlockquote(node, quotesHandled));\r\n }\r\n}\r\n\r\nfunction outdent(region: RegionBase, blocks: BlockElement[]) {\r\n blocks.forEach(blockElement => {\r\n let node: Node | null = blockElement.collapseToSingleElement();\r\n const quote = findClosestElementAncestor(node, region.rootNode, 'blockquote');\r\n if (quote) {\r\n if (node == quote) {\r\n node = wrap(toArray(node.childNodes));\r\n }\r\n\r\n while (node && isNodeInRegion(region, node) && getTagOfNode(node) != 'BLOCKQUOTE') {\r\n node = splitBalancedNodeRange(node);\r\n }\r\n\r\n if (node && isNodeInRegion(region, node)) {\r\n unwrap(node);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction isFirstItem(vList: VList, startNode: Node) {\r\n return (\r\n vList.items[0]?.getNode() == startNode &&\r\n vList.getListItemIndex(startNode) == (vList.getStart() || 1)\r\n );\r\n}\r\n\r\nfunction shouldHandleWithBlockquotes(\r\n indentation: Indentation | CompatibleIndentation,\r\n editor: IEditor,\r\n startNode: Node\r\n) {\r\n return (\r\n indentation == Indentation.Increase || editor.getElementAtCursor('blockquote', startNode)\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { createVListFromRegion } from 'roosterjs-editor-dom';\nimport { ExperimentalFeatures, IEditor } from 'roosterjs-editor-types';\n\n/**\n * Resets Ordered List Numbering back to the value of the parameter startNumber\n * @param editor The editor instance\n * @param separator The HTML element that indicates when to split the VList\n * @param startNumber The number of that the splitted list should start\n */\nexport default function setOrderedListNumbering(\n editor: IEditor,\n separator: HTMLLIElement,\n startNumber: number = 1\n) {\n formatUndoSnapshot(\n editor,\n () => {\n editor.focus();\n const regions = editor.getSelectedRegions();\n if (regions[0]) {\n const vList = createVListFromRegion(\n regions[0],\n false /*includeSiblingLists*/,\n separator\n );\n if (vList) {\n vList.split(separator, startNumber);\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n }\n }\n },\n 'setOrderedListNumbering'\n );\n}\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\r\nimport { setColor } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Set text color at selection\r\n * @param editor The editor instance\r\n * @param color One of two options:\r\n * The color string, can be any of the predefined color names (e.g, 'red')\r\n * or hexadecimal color string (e.g, '#FF0000') or rgb value (e.g, 'rgb(255, 0, 0)') supported by browser.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n * Alternatively, you can pass a @typedef ModeIndependentColor. If in light mode, the lightModeColor property will be used.\r\n * If in dark mode, the darkModeColor will be used and the lightModeColor will be used when converting back to light mode.\r\n * @param shouldApplyInlineStyle Optional callback function to be invoked to verify if the current element should have the inline Style applied\r\n */\r\nexport default function setTextColor(\r\n editor: IEditor,\r\n color: string | ModeIndependentColor,\r\n shouldApplyInlineStyle?: (element: HTMLElement) => boolean\r\n) {\r\n applyListItemStyleWrap(\r\n editor,\r\n 'color',\r\n (element, isInnerNode) => {\r\n if (!shouldApplyInlineStyle || shouldApplyInlineStyle(element)) {\r\n setColor(\r\n element,\r\n isInnerNode ? '' : color,\r\n false /*isBackground*/,\r\n editor.isDarkMode(),\r\n false /*shouldAdaptFontColor*/,\r\n editor.getDarkColorHandler()\r\n );\r\n }\r\n },\r\n 'setTextColor'\r\n );\r\n}\r\n","import blockWrap from '../utils/blockWrap';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap, wrap } from 'roosterjs-editor-dom';\r\n\r\nconst BLOCKQUOTE_TAG = 'blockquote';\r\nconst DEFAULT_STYLER = (element: HTMLElement): void => {\r\n element.style.borderLeft = '3px solid';\r\n element.style.borderColor = '#C8C8C8';\r\n element.style.paddingLeft = '10px';\r\n element.style.color = '#666666';\r\n};\r\n\r\n/**\r\n * Toggle blockquote at selection, if selection already contains any blockquote elements,\r\n * the blockquote elements will be unquote and other elements will take no effect\r\n * @param editor The editor instance\r\n * @param styler (Optional) The custom styler for setting the style for the blockquote element\r\n */\r\nexport default function toggleBlockQuote(editor: IEditor, styler?: (element: HTMLElement) => void) {\r\n blockWrap(\r\n editor,\r\n nodes => {\r\n const wrapper = wrap(nodes, BLOCKQUOTE_TAG);\r\n (styler || DEFAULT_STYLER)(wrapper);\r\n },\r\n () => editor.queryElements('blockquote', QueryScope.OnSelection, unwrap).length == 0,\r\n 'toggleBlockQuote'\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle bold at selection\r\n * If selection is collapsed, it will only affect the following input after caret\r\n * If selection contains only bold text, the bold style will be removed\r\n * If selection contains only normal text, bold style will be added to the whole selected text\r\n * If selection contains both bold and normal text, bold style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleBold(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Bold, 'toggleBold');\r\n}\r\n","import toggleListType from '../utils/toggleListType';\r\nimport { BulletListType, IEditor, ListType } from 'roosterjs-editor-types';\r\nimport type { CompatibleBulletListType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Toggle bullet at selection\r\n * If selection contains bullet in deep level, toggle bullet will decrease the bullet level by one\r\n * If selection contains number list, toggle bullet will convert the number list into bullet list\r\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\r\n * browser execCommand API\r\n * @param editor The editor instance\r\n * @param listStyle (Optional) the style of the bullet list. If not defined, the style will be set to disc.\r\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\r\n */\r\nexport default function toggleBullet(\r\n editor: IEditor,\r\n listStyle?: BulletListType | CompatibleBulletListType,\r\n apiNameOverride?: string\r\n) {\r\n toggleListType(\r\n editor,\r\n ListType.Unordered,\r\n undefined /* startNumber */,\r\n false /* includeSiblingLists */,\r\n undefined /** orderedStyle */,\r\n listStyle,\r\n apiNameOverride\r\n );\r\n}\r\n","import blockWrap from '../utils/blockWrap';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap, wrap } from 'roosterjs-editor-dom';\r\n\r\nconst PRE_TAG = 'pre';\r\nconst CODE_TAG = 'code';\r\nconst SELECTOR = `${PRE_TAG}>${CODE_TAG}`;\r\n\r\n/**\r\n * Toggle code block at selection, if selection already contains any code blocked elements,\r\n * the code block elements will be no longer be code blocked and other elements will take no affect\r\n * @param editor The editor instance\r\n * @param styler (Optional) The custom styler for setting the style for the code block element\r\n */\r\nexport default function toggleCodeBlock(\r\n editor: IEditor,\r\n styler?: (element: HTMLElement) => void\r\n): void {\r\n blockWrap(\r\n editor,\r\n nodes => {\r\n const code = wrap(nodes, CODE_TAG);\r\n const pre = wrap(code, PRE_TAG);\r\n styler?.(pre);\r\n },\r\n () =>\r\n editor.queryElements(SELECTOR, QueryScope.OnSelection, code => {\r\n if (!code.previousSibling && !code.nextSibling) {\r\n const parent = code.parentNode;\r\n unwrap(code);\r\n if (parent) {\r\n unwrap(parent);\r\n }\r\n }\r\n }).length == 0,\r\n 'toggleCodeBlock'\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle italic at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only italic text, the italic style will be removed\r\n * If selection contains only normal text, italic style will be added to the whole selected text\r\n * If selection contains both italic and normal text, italic style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleItalic(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Italic, 'toggleItalic');\r\n}\r\n","import toggleListType from '../utils/toggleListType';\r\nimport { IEditor, ListType, NumberingListType } from 'roosterjs-editor-types';\r\nimport type { CompatibleNumberingListType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Toggle numbering at selection\r\n * If selection contains numbering in deep level, toggle numbering will decrease the numbering level by one\r\n * If selection contains bullet list, toggle numbering will convert the bullet list into number list\r\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\r\n * realization of browser execCommand API\r\n * @param editor The editor instance\r\n * @param startNumber (Optional) Start number of the list\r\n * @param listStyle (Optional) The style of the numbering list. If not defined, the style will be set to decimal.\r\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\r\n */\r\nexport default function toggleNumbering(\r\n editor: IEditor,\r\n startNumber?: number,\r\n listStyle?: NumberingListType | CompatibleNumberingListType,\r\n apiNameOverride?: string\r\n) {\r\n toggleListType(\r\n editor,\r\n ListType.Ordered,\r\n startNumber,\r\n undefined /* includeSiblingLists */,\r\n listStyle,\r\n undefined /* unorderedStyle */,\r\n apiNameOverride\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle strikethrough at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only strikethrough text, the strikethrough style will be removed\r\n * If selection contains only normal text, strikethrough style will be added to the whole selected text\r\n * If selection contains both strikethrough and normal text, strikethrough style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleStrikethrough(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.StrikeThrough, 'toggleStrikethrough');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle subscript at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only subscript text, the subscript style will be removed\r\n * If selection contains only normal text, subscript style will be added to the whole selected text\r\n * If selection contains both subscript and normal text, the subscript style will be removed from whole selected text\r\n * If selection contains any superscript text, the behavior is determined by corresponding realization of browser\r\n * execCommand API\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleSubscript(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Subscript, 'toggleSubscript');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle superscript at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only superscript text, the superscript style will be removed\r\n * If selection contains only normal text, superscript style will be added to the whole selected text\r\n * If selection contains both superscript and normal text, the superscript style will be removed from whole selected text\r\n * If selection contains any subscript text, the behavior is determined by corresponding realization of browser\r\n * execCommand API\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleSuperscript(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Superscript, 'toggleSuperscript');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle underline at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only underlined text, the underline style will be removed\r\n * If selection contains only normal text, underline style will be added to the whole selected text\r\n * If selection contains both underlined and normal text, the underline style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleUnderline(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Underline, 'toggleUnderline');\r\n}\r\n","export { default as changeFontSize, FONT_SIZES } from './format/changeFontSize';\r\nexport { default as clearBlockFormat } from './format/clearBlockFormat';\r\nexport { default as clearFormat } from './format/clearFormat';\r\nexport { default as createLink } from './format/createLink';\r\nexport { default as getFormatState, getElementBasedFormatState } from './format/getFormatState';\r\nexport { default as insertEntity } from './format/insertEntity';\r\nexport { default as insertImage } from './format/insertImage';\r\nexport { default as insertTable } from './table/insertTable';\r\nexport { default as editTable } from './table/editTable';\r\nexport { default as formatTable } from './table/formatTable';\r\nexport { default as removeLink } from './format/removeLink';\r\nexport { default as replaceWithNode } from './format/replaceWithNode';\r\nexport { default as rotateElement } from './format/rotateElement';\r\nexport { default as setAlignment } from './format/setAlignment';\r\nexport { default as setBackgroundColor } from './format/setBackgroundColor';\r\nexport { default as setTextColor } from './format/setTextColor';\r\nexport { default as setDirection } from './format/setDirection';\r\nexport { default as setFontName } from './format/setFontName';\r\nexport { default as setFontSize } from './format/setFontSize';\r\nexport { default as setImageAltText } from './format/setImageAltText';\r\nexport { default as setIndentation } from './format/setIndentation';\r\nexport { default as changeCapitalization } from './format/changeCapitalization';\r\nexport { default as toggleBold } from './format/toggleBold';\r\nexport { default as toggleBullet } from './format/toggleBullet';\r\nexport { default as toggleItalic } from './format/toggleItalic';\r\nexport { default as toggleNumbering } from './format/toggleNumbering';\r\nexport { default as setOrderedListNumbering } from './format/setOrderedListNumbering';\r\nexport { default as toggleBlockQuote } from './format/toggleBlockQuote';\r\nexport { default as toggleCodeBlock } from './format/toggleCodeBlock';\r\nexport { default as toggleStrikethrough } from './format/toggleStrikethrough';\r\nexport { default as toggleSubscript } from './format/toggleSubscript';\r\nexport { default as toggleSuperscript } from './format/toggleSuperscript';\r\nexport { default as toggleUnderline } from './format/toggleUnderline';\r\nexport { default as setHeadingLevel, toggleHeader } from './format/setHeadingLevel';\r\nexport { default as applyCellShading } from './table/applyCellShading';\r\n\r\nexport { default as toggleListType } from './utils/toggleListType';\r\nexport { default as blockFormat } from './utils/blockFormat';\r\nexport { default as commitListChains, experimentCommitListChains } from './utils/commitListChains';\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\nimport {\n getTableCellMetadata,\n safeInstanceOf,\n saveTableCellMetadata,\n setColor,\n} from 'roosterjs-editor-dom';\n\n/**\n * Set background color of cells.\n * @param editor The editor instance\n * @param color One of two options:\n **/\nexport default function applyCellShading(editor: IEditor, color: string | ModeIndependentColor) {\n editor.focus();\n formatUndoSnapshot(\n editor,\n () => {\n const regions = editor.getSelectedRegions();\n regions.forEach(region => {\n if (safeInstanceOf(region.rootNode, 'HTMLTableCellElement')) {\n setColor(\n region.rootNode,\n color,\n true /* isBackgroundColor */,\n editor.isDarkMode(),\n true /** shouldAdaptFontColor */,\n editor.getDarkColorHandler()\n );\n const meta = getTableCellMetadata(region.rootNode);\n saveTableCellMetadata(region.rootNode, {\n ...meta,\n bgColorOverride: true,\n });\n }\n });\n },\n 'applyCellShading'\n );\n}\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, PositionType, SelectionRangeTypes, TableOperation } from 'roosterjs-editor-types';\r\nimport { VTable } from 'roosterjs-editor-dom';\r\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Edit table with given operation. If there is no table at cursor then no op.\r\n * @param editor The editor instance\r\n * @param operation Table operation\r\n */\r\nexport default function editTable(\r\n editor: IEditor,\r\n operation: TableOperation | CompatibleTableOperation\r\n) {\r\n let td = editor.getElementAtCursor('TD,TH') as HTMLTableCellElement;\r\n if (td) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n let vtable = new VTable(td);\r\n\r\n saveTableSelection(editor, vtable);\r\n vtable.edit(operation);\r\n vtable.writeBack(false /** skipApplyFormat */, editor.getDarkColorHandler());\r\n editor.transformToDarkColor(vtable.table);\r\n\r\n editor.focus();\r\n if (isUndefined(vtable.row) || isUndefined(vtable.col)) {\r\n return;\r\n }\r\n let { newCol, newRow } = calculateCellToSelect(operation, vtable.row, vtable.col);\r\n const newTd = vtable.getCell(newRow, newCol).td;\r\n if (newTd) {\r\n editor.select(newTd, PositionType.Begin);\r\n }\r\n },\r\n 'editTable'\r\n );\r\n }\r\n}\r\n\r\nfunction isUndefined(n: number | undefined): n is undefined {\r\n return n == undefined;\r\n}\r\n\r\nfunction calculateCellToSelect(\r\n operation: TableOperation | CompatibleTableOperation,\r\n currentRow: number,\r\n currentCol: number\r\n) {\r\n let newRow = currentRow;\r\n let newCol = currentCol;\r\n switch (operation) {\r\n case TableOperation.InsertAbove:\r\n newCol = 0;\r\n break;\r\n case TableOperation.InsertBelow:\r\n newRow += 1;\r\n newCol = 0;\r\n break;\r\n case TableOperation.InsertLeft:\r\n newRow = 0;\r\n break;\r\n case TableOperation.InsertRight:\r\n newRow = 0;\r\n newCol += 1;\r\n break;\r\n }\r\n\r\n return {\r\n newRow,\r\n newCol,\r\n };\r\n}\r\n\r\nfunction saveTableSelection(editor: IEditor, vtable: VTable) {\r\n const selection = editor.getSelectionRangeEx();\r\n if (selection && selection.type === SelectionRangeTypes.TableSelection) {\r\n vtable.selection = selection.coordinates ?? null;\r\n }\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, TableFormat } from 'roosterjs-editor-types';\r\nimport { VTable } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Format table\r\n * @param editor The editor which contains the table to format\r\n * @param format A TableFormat object contains format information we want to apply to the table\r\n * @param table The table to format. This is optional. When not passed, the current table (if any) will be formatted\r\n */\r\nexport default function formatTable(\r\n editor: IEditor,\r\n format: TableFormat,\r\n table?: HTMLTableElement\r\n) {\r\n table = table || (editor.getElementAtCursor('TABLE') as HTMLTableElement);\r\n if (table) {\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n if (!table) {\r\n return;\r\n }\r\n\r\n let vtable = new VTable(table);\r\n vtable.applyFormat(format);\r\n vtable.writeBack(false /** skipApplyFormat */, editor.getDarkColorHandler());\r\n editor.transformToDarkColor(vtable.table);\r\n editor.focus();\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'formatTable'\r\n );\r\n }\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport setBackgroundColor from '../format/setBackgroundColor';\r\nimport { IEditor, PositionType, TableFormat } from 'roosterjs-editor-types';\r\nimport { Position, VTable } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Insert table into editor at current selection\r\n * @param editor The editor instance\r\n * @param columns Number of columns in table, it also controls the default table cell width:\r\n * if columns <= 4, width = 120px; if columns <= 6, width = 100px; else width = 70px\r\n * @param rows Number of rows in table\r\n * @param format (Optional) The table format. If not passed, the default format will be applied:\r\n * background color: #FFF; border color: #ABABAB\r\n */\r\nexport default function insertTable(\r\n editor: IEditor,\r\n columns: number,\r\n rows: number,\r\n format?: TableFormat\r\n) {\r\n let document = editor.getDocument();\r\n let table = document.createElement('table') as HTMLTableElement;\r\n table.cellSpacing = '0';\r\n table.cellPadding = '1';\r\n for (let i = 0; i < rows; i++) {\r\n let tr = document.createElement('tr') as HTMLTableRowElement;\r\n table.appendChild(tr);\r\n for (let j = 0; j < columns; j++) {\r\n let td = document.createElement('td') as HTMLTableCellElement;\r\n tr.appendChild(td);\r\n td.appendChild(document.createElement('br'));\r\n td.style.width = getTableCellWidth(columns);\r\n }\r\n }\r\n\r\n editor.focus();\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const element = editor.getElementAtCursor();\r\n if (element?.style.backgroundColor) {\r\n setBackgroundColor(editor, 'transparent');\r\n }\r\n let vtable = new VTable(table);\r\n // Assign default vertical align\r\n format = format || { verticalAlign: 'top' };\r\n vtable.applyFormat(format || {});\r\n vtable.writeBack();\r\n editor.insertNode(table);\r\n editor.runAsync(editor =>\r\n editor.select(new Position(table, PositionType.Begin).normalize())\r\n );\r\n },\r\n 'insertTable'\r\n );\r\n}\r\n\r\nfunction getTableCellWidth(columns: number): string {\r\n if (columns <= 4) {\r\n return '120px';\r\n } else if (columns <= 6) {\r\n return '100px';\r\n } else {\r\n return '70px';\r\n }\r\n}\r\n","import formatUndoSnapshot from './formatUndoSnapshot';\r\nimport { getTagOfNode } from 'roosterjs-editor-dom';\r\nimport {\r\n ChangeSource,\r\n IEditor,\r\n PluginEventType,\r\n PositionType,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Apply inline style to current selection\r\n * @param editor The editor instance\r\n * @param callback The callback function to apply style\r\n */\r\nexport default function applyInlineStyle(\r\n editor: IEditor,\r\n callback: (element: HTMLElement, isInnerNode?: boolean) => any,\r\n apiName: string\r\n) {\r\n editor.focus();\r\n let selection = editor.getSelectionRangeEx();\r\n\r\n const safeCallback = (element: HTMLElement, isInnerNode?: boolean) =>\r\n element.isContentEditable && callback(element, isInnerNode);\r\n\r\n if (selection && selection.areAllCollapsed) {\r\n const range = selection.ranges[0];\r\n let node = range.startContainer;\r\n let isEmptySpan =\r\n getTagOfNode(node) == 'SPAN' &&\r\n (!node.firstChild ||\r\n (getTagOfNode(node.firstChild) == 'BR' && !node.firstChild.nextSibling));\r\n if (isEmptySpan) {\r\n editor.addUndoSnapshot();\r\n safeCallback(node as HTMLElement);\r\n } else {\r\n editor.triggerPluginEvent(PluginEventType.PendingFormatStateChanged, {\r\n formatState: {},\r\n // Here we use callback instead of safeCallback because we know it's contentEditable.\r\n // In addition, for elements that are not added to the DOM tree, isContentEditable always returns false on Safari.\r\n formatCallback: callback,\r\n });\r\n editor.triggerContentChangedEvent(ChangeSource.Format);\r\n }\r\n } else {\r\n // This is start and end node that get the style. The start and end needs to be recorded so that selection\r\n // can be re-applied post-applying style\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n let firstNode: Node | undefined;\r\n let lastNode: Node | undefined;\r\n selection.ranges.forEach(range => {\r\n let contentTraverser = editor.getSelectionTraverser(range);\r\n if (!contentTraverser) {\r\n return;\r\n }\r\n let inlineElement = contentTraverser && contentTraverser.currentInlineElement;\r\n while (inlineElement) {\r\n let nextInlineElement = contentTraverser.getNextInlineElement();\r\n inlineElement.applyStyle((element, isInnerNode) => {\r\n safeCallback(element, isInnerNode);\r\n firstNode = firstNode || element;\r\n lastNode = element;\r\n });\r\n inlineElement = nextInlineElement;\r\n }\r\n });\r\n\r\n if (firstNode && lastNode && selection.type == SelectionRangeTypes.Normal) {\r\n editor.select(firstNode, PositionType.Before, lastNode, PositionType.After);\r\n }\r\n },\r\n apiName\r\n );\r\n }\r\n}\r\n","import applyInlineStyle from '../utils/applyInlineStyle';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { safeInstanceOf, setListItemStyle } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Set the List Item Style when all inner inline element have the same style\n * @param editor The editor instance\n * @param styleName Name of the style to apply to the list item\n * @param formatCallback callback to apply the style to each element\n */\nexport default function applyListItemStyleWrap(\n editor: IEditor,\n styleName: string,\n formatCallback: (element: HTMLElement, isInnerNode?: boolean) => any,\n apiName: string\n) {\n const parentNodes: Node[] = [];\n applyInlineStyle(\n editor,\n (element, isInnerNode) => {\n formatCallback(element, isInnerNode);\n\n let parent = editor.getElementAtCursor('LI', element);\n if (parent && parentNodes.indexOf(parent) === -1) {\n parentNodes.push(parent);\n }\n },\n apiName\n );\n\n applyStyleToListItems(parentNodes, [styleName]);\n}\n\n/**\n * @internal\n * Checks if the parent element is a List Item, if it is, apply the style elements to the list item\n * @param parentNodes parentNodes to apply the style\n * @param styles styles to apply to the List Item Element\n */\nfunction applyStyleToListItems(parentNodes: Node[], styles: string[]) {\n parentNodes.forEach(node => {\n if (safeInstanceOf(node, 'HTMLLIElement')) {\n setListItemStyle(node, styles);\n }\n });\n}\n","import commitListChains from '../utils/commitListChains';\nimport formatUndoSnapshot from './formatUndoSnapshot';\nimport { IEditor, NodePosition, Region, SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { VListChain } from 'roosterjs-editor-dom';\n\n/**\n * Split selection into regions, and perform a block-wise formatting action for each region.\n */\nexport default function blockFormat(\n editor: IEditor,\n callback: (\n region: Region,\n start: NodePosition | null,\n end: NodePosition | null,\n chains: VListChain[]\n ) => void,\n beforeRunCallback?: () => boolean,\n apiName?: string\n) {\n editor.focus();\n const selection = editor.getSelectionRangeEx();\n\n formatUndoSnapshot(\n editor,\n (start, end) => {\n if (!beforeRunCallback || beforeRunCallback()) {\n const regions = editor.getSelectedRegions();\n if (regions.length > 0) {\n const chains = VListChain.createListChains(regions, start?.node);\n regions.forEach(region => callback(region, start, end, chains));\n commitListChains(editor, chains);\n }\n }\n if (selection.type == SelectionRangeTypes.Normal && start && end) {\n editor.select(start, end);\n } else {\n editor.select(selection);\n }\n },\n apiName\n );\n}\n","import blockFormat from './blockFormat';\nimport { IEditor } from 'roosterjs-editor-types';\nimport {\n collapseNodesInRegion,\n getSelectedBlockElementsInRegion,\n getTagOfNode,\n isNodeInRegion,\n splitBalancedNodeRange,\n toArray,\n wrap,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Toggle a tag at selection, if selection already contains elements of such tag,\n * the elements will be untagged and other elements will take no effect\n * @param editor The editor instance\n * @param wrapFunction The wrap function\n * @param beforeRunCallback A callback function to run before looping all regions. If it returns false,\n * the loop for regions will be skipped\n */\nexport default function blockWrap(\n editor: IEditor,\n wrapFunction: (nodes: Node[]) => void,\n beforeRunCallback: () => boolean,\n apiName?: string\n): void {\n blockFormat(\n editor,\n region => {\n const blocks = getSelectedBlockElementsInRegion(region, true /*createBlockIfEmpty*/);\n let nodes = collapseNodesInRegion(region, blocks);\n if (nodes.length > 0) {\n if (nodes.length == 1) {\n const NodeTag = getTagOfNode(nodes[0]);\n if (NodeTag == 'BR') {\n nodes = [wrap(nodes[0])];\n } else if (NodeTag == 'LI' || NodeTag == 'TD') {\n nodes = toArray(nodes[0].childNodes);\n }\n }\n\n while (\n nodes[0] &&\n nodes[0].parentNode &&\n isNodeInRegion(region, nodes[0].parentNode) &&\n nodes.some(node => getTagOfNode(node) == 'LI')\n ) {\n const result = splitBalancedNodeRange(nodes);\n nodes = result ? [result] : [];\n }\n\n wrapFunction(nodes);\n }\n },\n beforeRunCallback,\n apiName\n );\n}\n","import { BlockElement, IEditor, NodeType } from 'roosterjs-editor-types';\r\nimport { getTagOfNode } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * @internal\r\n * Collapse all selected blocks, return single HTML elements for each block\r\n * @param editor The editor instance\r\n * @param forEachCallback A callback function to invoke for each of the collapsed element\r\n */\r\nexport default function collapseSelectedBlocks(\r\n editor: IEditor,\r\n forEachCallback: (element: HTMLElement) => any\r\n) {\r\n let traverser = editor.getSelectionTraverser();\r\n if (!traverser) {\r\n return;\r\n }\r\n let block = traverser.currentBlockElement;\r\n let blocks: BlockElement[] = [];\r\n while (block) {\r\n if (!isEmptyBlockUnderTR(block)) {\r\n blocks.push(block);\r\n }\r\n block = traverser.getNextBlockElement();\r\n }\r\n\r\n blocks.forEach(block => {\r\n let element = block.collapseToSingleElement();\r\n forEachCallback(element);\r\n });\r\n}\r\n\r\nfunction isEmptyBlockUnderTR(block: BlockElement): boolean {\r\n let startNode = block.getStartNode();\r\n\r\n return (\r\n startNode == block.getEndNode() &&\r\n startNode.nodeType == NodeType.Text &&\r\n ['TR', 'TABLE'].indexOf(getTagOfNode(startNode.parentNode)) >= 0\r\n );\r\n}\r\n","import { ExperimentalFeatures, IEditor } from 'roosterjs-editor-types';\nimport { Position, VListChain } from 'roosterjs-editor-dom';\n\n/**\n * Commit changes of all list changes when experiment features are allowed\n * @param editor The Editor object\n * @param chains List chains to commit\n */\nexport default function commitListChains(editor: IEditor, chains: VListChain[]) {\n if (chains?.length > 0) {\n const range = editor.getSelectionRange();\n const start = range && Position.getStart(range);\n const end = range && Position.getEnd(range);\n const shouldReuseAllAncestorListElements = editor.isFeatureEnabled(\n ExperimentalFeatures.ReuseAllAncestorListElements\n );\n const shouldDisableListChain = editor.isFeatureEnabled(\n ExperimentalFeatures.DisableListChain\n );\n\n chains.forEach(chain =>\n chain.commit(shouldReuseAllAncestorListElements, shouldDisableListChain)\n );\n\n if (start && end) {\n editor.select(start, end);\n }\n }\n}\n\n/**\n * @deprecated\n * Same with commitListChains, keep this export just for backward compatibility\n */\nexport const experimentCommitListChains = commitListChains;\n","import formatUndoSnapshot from './formatUndoSnapshot';\nimport { getObjectKeys, PendableFormatCommandMap, PendableFormatNames } from 'roosterjs-editor-dom';\nimport {\n DocumentCommand,\n IEditor,\n PluginEventType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport type { CompatibleDocumentCommand } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Execute a document command\n * @param editor The editor instance\n * @param command The command to execute\n * @param addUndoSnapshotWhenCollapsed Optional, set to true to always add undo snapshot even current selection is collapsed.\n * Default value is false.\n * @param doWorkaroundForList Optional, set to true to do workaround for list in order to keep current format.\n * Default value is false.\n */\nexport default function execCommand(\n editor: IEditor,\n command: DocumentCommand | CompatibleDocumentCommand,\n apiName?: string\n) {\n editor.focus();\n\n let formatter = () => editor.getDocument().execCommand(command, false, undefined);\n\n let selection = editor.getSelectionRangeEx();\n if (selection && selection.areAllCollapsed) {\n editor.addUndoSnapshot();\n const formatState = editor.getPendableFormatState(false /* forceGetStateFromDom */);\n formatter();\n const formatName = getObjectKeys(PendableFormatCommandMap).filter(\n x => PendableFormatCommandMap[x] == command\n )[0] as PendableFormatNames;\n\n if (formatName) {\n formatState[formatName] = !formatState[formatName];\n editor.triggerPluginEvent(PluginEventType.PendingFormatStateChanged, {\n formatState: formatState,\n });\n }\n } else {\n formatUndoSnapshot(\n editor,\n () => {\n const needToSwitchSelection = selection.type != SelectionRangeTypes.Normal;\n\n selection.ranges.forEach(range => {\n if (needToSwitchSelection) {\n editor.select(range);\n }\n formatter();\n });\n\n if (needToSwitchSelection) {\n editor.select(selection);\n }\n },\n apiName\n );\n }\n}\n","import { ChangeSource, IEditor, NodePosition } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Execute add undo snapshot for the Format APIs\n * @param editor The editor instance\n * @param command Optional, The callback function to perform formatting, returns a data object which will be used as the data field in ContentChangedEvent if changeSource is not null.\n * @param apiName Optional, name of the API that was is going to be executed.\n * Default value is false.\n */\nexport default function formatUndoSnapshot(\n editor: IEditor,\n callback?: (start: NodePosition | null, end: NodePosition | null) => any,\n apiName?: string\n) {\n editor.addUndoSnapshot(\n callback,\n ChangeSource.Format,\n undefined /* canUndoByBackspace */,\n apiName && apiName != ''\n ? {\n formatApiName: apiName,\n }\n : undefined\n );\n}\n","import { findClosestElementAncestor, getComputedStyle, safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * @param node start node to normalize\n * @param quotesHandled Optional parameter to prevent already modified quotes to be rechecked.\n * @returns\n */\nexport default function normalizeBlockquote(node: Node, quotesHandled?: Node[]): void {\n if (safeInstanceOf(node, 'HTMLElement')) {\n const alignment = node.style.textAlign;\n\n let quote = findClosestElementAncestor(node, undefined /* root */, 'blockquote');\n if (!quote) {\n return;\n }\n const isNodeRTL = isRTL(node);\n\n if (quotesHandled) {\n if (quotesHandled.indexOf(quote) > -1) {\n return;\n }\n quotesHandled.push(quote);\n }\n\n while (quote) {\n if (alignment == 'center') {\n if (isNodeRTL) {\n quote.style.removeProperty('marginInlineEnd');\n quote.style.marginInlineStart = 'auto';\n } else {\n quote.style.removeProperty('marginInlineStart');\n quote.style.marginInlineEnd = 'auto';\n }\n } else {\n quote.style.removeProperty('marginInlineEnd');\n quote.style.removeProperty('marginInlineStart');\n }\n\n quote = findClosestElementAncestor(\n quote.parentElement,\n undefined /* root */,\n 'blockquote'\n );\n }\n }\n}\n\nfunction isRTL(el: Element) {\n return getComputedStyle(el, 'direction') == 'rtl' || el.getAttribute('dir') == 'rtl';\n}\n","import blockFormat from '../utils/blockFormat';\nimport { createVListFromRegion, getBlockElementAtNode } from 'roosterjs-editor-dom';\nimport {\n BulletListType,\n ExperimentalFeatures,\n IEditor,\n ListType,\n NumberingListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleBulletListType,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Toggle List Type at selection\n * If ListType Provided is Ordered:\n * If selection contains numbering in deep level, toggle numbering will decrease the numbering level by one\n * If selection contains bullet list, toggle numbering will convert the bullet list into number list\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\n * realization of browser execCommand API\n * If ListType Provided is Unordered:\n * If selection contains bullet in deep level, toggle bullet will decrease the bullet level by one\n * If selection contains number list, toggle bullet will convert the number list into bullet list\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\n * browser execCommand API\n * @param editor The editor instance\n * @param listType The list type to toggle\n * @param startNumber (Optional) Start number of the list\n * @param includeSiblingLists Sets wether the operation should include Sibling Lists, by default true\n * @param orderedStyle (Optional) the style of an ordered. If not defined, the style will be set to decimal.\n * @param unorderedStyle (Optional) the style of an unordered list. If not defined, the style will be set to disc.\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\n */\nexport default function toggleListType(\n editor: IEditor,\n listType: ListType | CompatibleListType,\n startNumber: number = 0,\n includeSiblingLists: boolean = true,\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType,\n apiNameOverride?: string\n) {\n blockFormat(\n editor,\n (region, start, end, chains) => {\n const chain =\n startNumber > 0 && chains.filter(chain => chain.canAppendAtCursor(startNumber))[0];\n const block = getBlockElementAtNode(\n region.rootNode,\n start?.node ?? null\n )?.collapseToSingleElement();\n if (!block) {\n return;\n }\n const vList =\n chain && end && start?.equalTo(end)\n ? chain.createVListAtBlock(block, startNumber)\n : createVListFromRegion(\n region,\n startNumber === 1 ? false : includeSiblingLists\n );\n\n if (vList && start && end) {\n vList.changeListType(start, end, listType);\n if (editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)) {\n vList.setListStyleType(orderedStyle, unorderedStyle);\n }\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n }\n },\n undefined /* beforeRunCallback */,\n apiNameOverride || 'toggleListType'\n );\n}\n","import { EntityState } from 'roosterjs-editor-types';\nimport { getSelectionPath, Position } from 'roosterjs-editor-dom';\nimport {\n AddUndoSnapshot,\n ChangeSource,\n ContentChangedData,\n ContentChangedEvent,\n ContentMetadata,\n EditorCore,\n NodePosition,\n PluginEventType,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport type { CompatibleChangeSource } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Call an editing callback with adding undo snapshots around, and trigger a ContentChanged event if change source is specified.\n * Undo snapshot will not be added if this call is nested inside another addUndoSnapshot() call.\n * @param core The EditorCore object\n * @param callback The editing callback, accepting current selection start and end position, returns an optional object used as the data field of ContentChangedEvent.\n * @param changeSource The ChangeSource string of ContentChangedEvent. @default ChangeSource.Format. Set to null to avoid triggering ContentChangedEvent\n * @param canUndoByBackspace True if this action can be undone when user press Backspace key (aka Auto Complete).\n * @param additionalData @optional parameter to provide additional data related to the ContentChanged Event.\n */\nexport const addUndoSnapshot: AddUndoSnapshot = (\n core: EditorCore,\n callback: ((start: NodePosition | null, end: NodePosition | null) => any) | null,\n changeSource: ChangeSource | CompatibleChangeSource | string | null,\n canUndoByBackspace: boolean,\n additionalData?: ContentChangedData\n) => {\n const undoState = core.undo;\n const isNested = undoState.isNested;\n let data: any;\n\n if (!isNested) {\n undoState.isNested = true;\n\n // When there is getEntityState, it means this is triggered by an entity change.\n // So if HTML content is not changed (hasNewContent is false), no need to add another snapshot before change\n if (core.undo.hasNewContent || !additionalData?.getEntityState || !callback) {\n addUndoSnapshotInternal(core, canUndoByBackspace, additionalData?.getEntityState?.());\n }\n }\n\n try {\n if (callback) {\n let range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n data = callback(\n range && Position.getStart(range).normalize(),\n range && Position.getEnd(range).normalize()\n );\n\n if (!isNested) {\n const entityStates = additionalData?.getEntityState?.();\n addUndoSnapshotInternal(core, false /*isAutoCompleteSnapshot*/, entityStates);\n }\n }\n } finally {\n if (!isNested) {\n undoState.isNested = false;\n }\n }\n\n if (callback && changeSource) {\n let event: ContentChangedEvent = {\n eventType: PluginEventType.ContentChanged,\n source: changeSource,\n data: data,\n additionalData,\n };\n core.api.triggerEvent(core, event, true /*broadcast*/);\n }\n\n if (canUndoByBackspace) {\n const range = core.api.getSelectionRange(core, false /*tryGetFromCache*/);\n\n if (range) {\n core.undo.hasNewContent = false;\n core.undo.autoCompletePosition = Position.getStart(range);\n }\n }\n};\n\nfunction addUndoSnapshotInternal(\n core: EditorCore,\n canUndoByBackspace: boolean,\n entityStates?: EntityState[]\n) {\n if (!core.lifecycle.shadowEditFragment) {\n const rangeEx = core.api.getSelectionRangeEx(core);\n const isDarkMode = core.lifecycle.isDarkMode;\n const metadata = createContentMetadata(core.contentDiv, rangeEx, isDarkMode) || null;\n\n core.undo.snapshotsService.addSnapshot(\n {\n html: core.contentDiv.innerHTML,\n metadata,\n knownColors: core.darkColorHandler?.getKnownColorsCopy() || [],\n entityStates,\n },\n canUndoByBackspace\n );\n core.undo.hasNewContent = false;\n }\n}\n\nfunction createContentMetadata(\n root: HTMLElement,\n rangeEx: SelectionRangeEx,\n isDarkMode: boolean\n): ContentMetadata | undefined {\n switch (rangeEx?.type) {\n case SelectionRangeTypes.TableSelection:\n return {\n type: SelectionRangeTypes.TableSelection,\n tableId: rangeEx.table.id,\n isDarkMode: !!isDarkMode,\n ...rangeEx.coordinates!,\n };\n case SelectionRangeTypes.ImageSelection:\n return {\n type: SelectionRangeTypes.ImageSelection,\n imageId: rangeEx.image.id,\n isDarkMode: !!isDarkMode,\n };\n case SelectionRangeTypes.Normal:\n return {\n type: SelectionRangeTypes.Normal,\n isDarkMode: !!isDarkMode,\n start: [],\n end: [],\n ...(getSelectionPath(root, rangeEx.ranges[0]) || {}),\n };\n }\n}\n","import { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n AttachDomEvent,\n DOMEventHandler,\n DOMEventHandlerObject,\n EditorCore,\n PluginDomEvent,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Attach a DOM event to the editor content DIV\n * @param core The EditorCore object\n * @param eventName The DOM event name\n * @param pluginEventType Optional event type. When specified, editor will trigger a plugin event with this name when the DOM event is triggered\n * @param beforeDispatch Optional callback function to be invoked when the DOM event is triggered before trigger plugin event\n */\nexport const attachDomEvent: AttachDomEvent = (\n core: EditorCore,\n eventMap: Record\n) => {\n const disposers = getObjectKeys(eventMap || {}).map(key => {\n const { pluginEventType, beforeDispatch } = extractHandler(eventMap[key]);\n const eventName = key as keyof HTMLElementEventMap;\n let onEvent = (event: HTMLElementEventMap[typeof eventName]) => {\n if (beforeDispatch) {\n beforeDispatch(event);\n }\n if (pluginEventType != null) {\n core.api.triggerEvent(\n core,\n {\n eventType: pluginEventType,\n rawEvent: event,\n },\n false /*broadcast*/\n );\n }\n };\n\n core.contentDiv.addEventListener(eventName, onEvent);\n\n return () => {\n core.contentDiv.removeEventListener(eventName, onEvent);\n };\n });\n return () => disposers.forEach(disposers => disposers());\n};\n\nfunction extractHandler(handlerObj: DOMEventHandler): DOMEventHandlerObject {\n let result: DOMEventHandlerObject = {\n pluginEventType: null,\n beforeDispatch: null,\n };\n\n if (typeof handlerObj === 'number') {\n result.pluginEventType = handlerObj;\n } else if (typeof handlerObj === 'function') {\n result.beforeDispatch = handlerObj;\n } else if (typeof handlerObj === 'object') {\n result = handlerObj;\n }\n return result;\n}\n","import { addUndoSnapshot } from './addUndoSnapshot';\nimport { attachDomEvent } from './attachDomEvent';\nimport { CoreApiMap } from 'roosterjs-editor-types';\nimport { createPasteFragment } from './createPasteFragment';\nimport { ensureTypeInContainer } from './ensureTypeInContainer';\nimport { focus } from './focus';\nimport { getContent } from './getContent';\nimport { getPendableFormatState } from './getPendableFormatState';\nimport { getSelectionRange } from './getSelectionRange';\nimport { getSelectionRangeEx } from './getSelectionRangeEx';\nimport { getStyleBasedFormatState } from './getStyleBasedFormatState';\nimport { hasFocus } from './hasFocus';\nimport { insertNode } from './insertNode';\nimport { restoreUndoSnapshot } from './restoreUndoSnapshot';\nimport { select } from './select';\nimport { selectImage } from './selectImage';\nimport { selectRange } from './selectRange';\nimport { selectTable } from './selectTable';\nimport { setContent } from './setContent';\nimport { switchShadowEdit } from './switchShadowEdit';\nimport { transformColor } from './transformColor';\nimport { triggerEvent } from './triggerEvent';\n\n/**\n * @internal\n */\nexport const coreApiMap: CoreApiMap = {\n attachDomEvent,\n addUndoSnapshot,\n createPasteFragment,\n ensureTypeInContainer,\n focus,\n getContent,\n getSelectionRange,\n getSelectionRangeEx,\n getStyleBasedFormatState,\n getPendableFormatState,\n hasFocus,\n insertNode,\n restoreUndoSnapshot,\n select,\n selectRange,\n setContent,\n switchShadowEdit,\n transformColor,\n triggerEvent,\n selectTable,\n selectImage,\n};\n","import {\n applyFormat,\n applyTextStyle,\n createDefaultHtmlSanitizerOptions,\n getPasteType,\n handleImagePaste,\n handleTextPaste,\n moveChildNodes,\n retrieveMetadataFromClipboard,\n sanitizePasteContent,\n} from 'roosterjs-editor-dom';\nimport {\n BeforePasteEvent,\n ClipboardData,\n CreatePasteFragment,\n EditorCore,\n PluginEventType,\n NodePosition,\n PasteType,\n DefaultFormat,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Create a DocumentFragment for paste from a ClipboardData\n * @param core The EditorCore object.\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param position The position to paste to\n * @param pasteAsText True to force use plain text as the content to paste, false to choose HTML or Image if any\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format\n * @param pasteAsImage True if the image should be pasted as image\n */\nexport const createPasteFragment: CreatePasteFragment = (\n core: EditorCore,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean = false\n) => {\n if (!clipboardData) {\n return null;\n }\n\n const pasteType = getPasteType(pasteAsText, applyCurrentStyle, pasteAsImage);\n\n // Step 1: Prepare BeforePasteEvent object\n const event = createBeforePasteEvent(core, clipboardData, pasteType);\n return createFragmentFromClipboardData(\n core,\n clipboardData,\n position,\n pasteAsText,\n applyCurrentStyle,\n pasteAsImage,\n event\n );\n};\n\nfunction createBeforePasteEvent(\n core: EditorCore,\n clipboardData: ClipboardData,\n pasteType: PasteType\n): BeforePasteEvent {\n const options = createDefaultHtmlSanitizerOptions();\n\n // Remove \"caret-color\" style generated by Safari to make sure caret shows in right color after paste\n options.cssStyleCallbacks['caret-color'] = () => false;\n\n return {\n eventType: PluginEventType.BeforePaste,\n clipboardData,\n fragment: core.contentDiv.ownerDocument.createDocumentFragment(),\n sanitizingOption: options,\n htmlBefore: '',\n htmlAfter: '',\n htmlAttributes: {},\n pasteType: pasteType,\n };\n}\n\n/**\n * Create a DocumentFragment for paste from a ClipboardData\n * @param core The EditorCore object.\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param position The position to paste to\n * @param pasteAsText True to force use plain text as the content to paste, false to choose HTML or Image if any\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * @param pasteAsImage Whether to force paste as image\n * @param event Event to trigger.\n * false to keep original format\n */\nfunction createFragmentFromClipboardData(\n core: EditorCore,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean,\n event: BeforePasteEvent\n) {\n const { fragment } = event;\n const { rawHtml, text, imageDataUri } = clipboardData;\n let doc: Document | undefined = rawHtml\n ? new DOMParser().parseFromString(core.trustedHTMLHandler(rawHtml), 'text/html')\n : undefined;\n\n // Step 2: Retrieve Metadata from Html and the Html that was copied.\n retrieveMetadataFromClipboard(doc, event, core.trustedHTMLHandler);\n\n // Step 3: Fill the BeforePasteEvent object, especially the fragment for paste\n if ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) {\n // Paste image\n handleImagePaste(imageDataUri, fragment);\n } else if (!pasteAsText && rawHtml && doc ? doc.body : false) {\n moveChildNodes(fragment, doc?.body);\n\n if (applyCurrentStyle && position) {\n const format = getCurrentFormat(core, position.node);\n applyTextStyle(fragment, node => applyFormat(node, format));\n }\n } else if (text) {\n // Paste text\n handleTextPaste(text, position, fragment);\n }\n\n // Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste, when the type of paste is different than Plain Text\n if (event.pasteType !== PasteType.AsPlainText) {\n core.api.triggerEvent(core, event, true /*broadcast*/);\n }\n\n // Step 5. Sanitize the fragment before paste to make sure the content is safe\n sanitizePasteContent(event, position);\n\n return fragment;\n}\n\nfunction getCurrentFormat(core: EditorCore, node: Node): DefaultFormat {\n const pendableFormat = core.api.getPendableFormatState(core, true /** forceGetStateFromDOM*/);\n const styleBasedFormat = core.api.getStyleBasedFormatState(core, node);\n return {\n fontFamily: styleBasedFormat.fontName,\n fontSize: styleBasedFormat.fontSize,\n textColor: styleBasedFormat.textColor,\n backgroundColor: styleBasedFormat.backgroundColor,\n textColors: styleBasedFormat.textColors,\n backgroundColors: styleBasedFormat.backgroundColors,\n bold: pendableFormat.isBold,\n italic: pendableFormat.isItalic,\n underline: pendableFormat.isUnderline,\n };\n}\n","import {\n ContentPosition,\n EditorCore,\n EnsureTypeInContainer,\n KnownCreateElementDataIndex,\n NodePosition,\n PositionType,\n} from 'roosterjs-editor-types';\nimport {\n applyFormat,\n createElement,\n createRange,\n findClosestElementAncestor,\n getBlockElementAtNode,\n isNodeEmpty,\n Position,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * When typing goes directly under content div, many things can go wrong\n * We fix it by wrapping it with a div and reposition cursor within the div\n */\nexport const ensureTypeInContainer: EnsureTypeInContainer = (\n core: EditorCore,\n position: NodePosition,\n keyboardEvent?: KeyboardEvent\n) => {\n const table = findClosestElementAncestor(position.node, core.contentDiv, 'table');\n let td: HTMLElement | null;\n\n if (table && (td = table.querySelector('td,th'))) {\n position = new Position(td, PositionType.Begin);\n }\n position = position.normalize();\n\n const block = getBlockElementAtNode(core.contentDiv, position.node);\n let formatNode: HTMLElement | null;\n\n if (block) {\n formatNode = block.collapseToSingleElement();\n if (isNodeEmpty(formatNode, false /* trimContent */, true /* shouldCountBrAsVisible */)) {\n const brEl = formatNode.ownerDocument.createElement('br');\n formatNode.append(brEl);\n }\n // if the block is empty, apply default format\n // Otherwise, leave it as it is as we don't want to change the style for existing data\n // unless the block was just created by the keyboard event (e.g. ctrl+a & start typing)\n const shouldSetNodeStyles =\n isNodeEmpty(formatNode) ||\n (keyboardEvent && wasNodeJustCreatedByKeyboardEvent(keyboardEvent, formatNode));\n formatNode = formatNode && shouldSetNodeStyles ? formatNode : null;\n } else {\n // Only reason we don't get the selection block is that we have an empty content div\n // which can happen when users removes everything (i.e. select all and DEL, or backspace from very end to begin)\n // The fix is to add a DIV wrapping, apply default format and move cursor over\n formatNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n core.contentDiv.ownerDocument\n ) as HTMLElement;\n core.api.insertNode(core, formatNode, {\n position: ContentPosition.End,\n updateCursor: false,\n replaceSelection: false,\n insertOnNewLine: false,\n });\n\n // element points to a wrapping node we added \"

                \". We should move the selection left to
                \n position = new Position(formatNode, PositionType.Begin);\n }\n\n if (formatNode && core.lifecycle.defaultFormat) {\n applyFormat(\n formatNode,\n core.lifecycle.defaultFormat,\n core.lifecycle.isDarkMode,\n core.darkColorHandler\n );\n }\n\n // If this is triggered by a keyboard event, let's select the new position\n if (keyboardEvent) {\n core.api.selectRange(core, createRange(new Position(position)));\n }\n};\n\nfunction wasNodeJustCreatedByKeyboardEvent(event: KeyboardEvent, formatNode: HTMLElement) {\n return (\n safeInstanceOf(event.target, 'Node') &&\n event.target.contains(formatNode) &&\n event.key === formatNode.innerText\n );\n}\n","import { createRange, getFirstLeafNode } from 'roosterjs-editor-dom';\nimport { EditorCore, Focus, PositionType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Focus to editor. If there is a cached selection range, use it as current selection\n * @param core The EditorCore object\n */\nexport const focus: Focus = (core: EditorCore) => {\n if (!core.lifecycle.shadowEditFragment) {\n if (\n !core.api.hasFocus(core) ||\n !core.api.getSelectionRange(core, false /*tryGetFromCache*/)\n ) {\n // Focus (document.activeElement indicates) and selection are mostly in sync, but could be out of sync in some extreme cases.\n // i.e. if you programmatically change window selection to point to a non-focusable DOM element (i.e. tabindex=-1 etc.).\n // On Chrome/Firefox, it does not change document.activeElement. On Edge/IE, it change document.activeElement to be body\n // Although on Chrome/Firefox, document.activeElement points to editor, you cannot really type which we don't want (no cursor).\n // So here we always do a live selection pull on DOM and make it point in Editor. The pitfall is, the cursor could be reset\n // to very begin to of editor since we don't really have last saved selection (created on blur which does not fire in this case).\n // It should be better than the case you cannot type\n if (\n !core.domEvent.selectionRange ||\n !core.api.selectRange(core, core.domEvent.selectionRange, true /*skipSameRange*/)\n ) {\n let node = getFirstLeafNode(core.contentDiv) || core.contentDiv;\n core.api.selectRange(\n core,\n createRange(node, PositionType.Begin),\n true /*skipSameRange*/\n );\n }\n }\n\n // remember to clear cached selection range\n core.domEvent.selectionRange = null;\n\n // This is more a fallback to ensure editor gets focus if it didn't manage to move focus to editor\n if (!core.api.hasFocus(core)) {\n core.contentDiv.focus();\n }\n }\n};\n","import {\n ColorTransformDirection,\n EditorCore,\n GetContent,\n GetContentMode,\n PluginEventType,\n} from 'roosterjs-editor-types';\nimport {\n createRange,\n getHtmlWithSelectionPath,\n getSelectionPath,\n getTextContent,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport type { CompatibleGetContentMode } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Get current editor content as HTML string\n * @param core The EditorCore object\n * @param mode specify what kind of HTML content to retrieve\n * @returns HTML string representing current editor content\n */\nexport const getContent: GetContent = (\n core: EditorCore,\n mode: GetContentMode | CompatibleGetContentMode\n): string => {\n let content: string | null = '';\n const triggerExtractContentEvent = mode == GetContentMode.CleanHTML;\n const includeSelectionMarker = mode == GetContentMode.RawHTMLWithSelection;\n\n // When there is fragment for shadow edit, always use the cached fragment as document since HTML node in editor\n // has been changed by uncommitted shadow edit which should be ignored.\n const root = core.lifecycle.shadowEditFragment || core.contentDiv;\n\n if (mode == GetContentMode.PlainTextFast) {\n content = root.textContent;\n } else if (mode == GetContentMode.PlainText) {\n content = getTextContent(root);\n } else {\n const clonedRoot = cloneNode(root);\n clonedRoot.normalize();\n\n const originalRange = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n const path = !includeSelectionMarker\n ? null\n : core.lifecycle.shadowEditFragment\n ? core.lifecycle.shadowEditSelectionPath\n : originalRange\n ? getSelectionPath(core.contentDiv, originalRange)\n : null;\n const range = path && createRange(clonedRoot, path.start, path.end);\n\n core.api.transformColor(\n core,\n clonedRoot,\n false /*includeSelf*/,\n null /*callback*/,\n ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n core.lifecycle.isDarkMode\n );\n\n if (triggerExtractContentEvent) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.ExtractContentWithDom,\n clonedRoot,\n },\n true /*broadcast*/\n );\n\n content = clonedRoot.innerHTML;\n } else if (range) {\n // range is not null, which means we want to include a selection path in the content\n content = getHtmlWithSelectionPath(clonedRoot, range);\n } else {\n content = clonedRoot.innerHTML;\n }\n }\n\n return content ?? '';\n};\n\nfunction cloneNode(node: HTMLElement | DocumentFragment): HTMLElement {\n let clonedNode: HTMLElement;\n if (safeInstanceOf(node, 'DocumentFragment')) {\n clonedNode = node.ownerDocument.createElement('div');\n clonedNode.appendChild(node.cloneNode(true /*deep*/));\n } else {\n clonedNode = node.cloneNode(true /*deep*/) as HTMLElement;\n }\n\n return clonedNode;\n}\n","import {\n contains,\n getObjectKeys,\n getTagOfNode,\n PendableFormatNames,\n Position,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n GetPendableFormatState,\n NodePosition,\n NodeType,\n PendableFormatState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * @param core The EditorCore object\n * @param forceGetStateFromDOM If set to true, will force get the format state from DOM tree.\n * @returns The cached format state if it exists. If the cached position do not exist, search for pendable elements in the DOM tree and return the pendable format state.\n */\nexport const getPendableFormatState: GetPendableFormatState = (\n core: EditorCore,\n forceGetStateFromDOM: boolean\n): PendableFormatState => {\n const range = core.api.getSelectionRange(core, true /* tryGetFromCache*/);\n const cachedPendableFormatState = core.pendingFormatState.pendableFormatState;\n const cachedPosition = core.pendingFormatState.pendableFormatPosition?.normalize();\n const currentPosition = range && Position.getStart(range).normalize();\n const isSamePosition =\n currentPosition &&\n cachedPosition &&\n range.collapsed &&\n currentPosition.equalTo(cachedPosition);\n\n if (range && cachedPendableFormatState && isSamePosition && !forceGetStateFromDOM) {\n return cachedPendableFormatState;\n } else {\n return currentPosition ? queryCommandStateFromDOM(core, currentPosition) : {};\n }\n};\n\nconst PendableStyleCheckers: Record<\n PendableFormatNames,\n (tagName: string, style: CSSStyleDeclaration) => boolean\n> = {\n isBold: (tag, style) =>\n tag == 'B' ||\n tag == 'STRONG' ||\n tag == 'H1' ||\n tag == 'H2' ||\n tag == 'H3' ||\n tag == 'H4' ||\n tag == 'H5' ||\n tag == 'H6' ||\n parseInt(style.fontWeight) >= 700 ||\n ['bold', 'bolder'].indexOf(style.fontWeight) >= 0,\n isUnderline: (tag, style) => tag == 'U' || style.textDecoration.indexOf('underline') >= 0,\n isItalic: (tag, style) => tag == 'I' || tag == 'EM' || style.fontStyle === 'italic',\n isSubscript: (tag, style) => tag == 'SUB' || style.verticalAlign === 'sub',\n isSuperscript: (tag, style) => tag == 'SUP' || style.verticalAlign === 'super',\n isStrikeThrough: (tag, style) =>\n tag == 'S' || tag == 'STRIKE' || style.textDecoration.indexOf('line-through') >= 0,\n};\n\n/**\n * CssFalsyCheckers checks for non pendable format that might overlay a pendable format, then it can prevent getPendableFormatState return falsy pendable format states.\n */\n\nconst CssFalsyCheckers: Record boolean> = {\n isBold: style =>\n (style.fontWeight !== '' && parseInt(style.fontWeight) < 700) ||\n style.fontWeight === 'normal',\n isUnderline: style =>\n style.textDecoration !== '' && style.textDecoration.indexOf('underline') < 0,\n isItalic: style => style.fontStyle !== '' && style.fontStyle !== 'italic',\n isSubscript: style => style.verticalAlign !== '' && style.verticalAlign !== 'sub',\n isSuperscript: style => style.verticalAlign !== '' && style.verticalAlign !== 'super',\n isStrikeThrough: style =>\n style.textDecoration !== '' && style.textDecoration.indexOf('line-through') < 0,\n};\n\nfunction queryCommandStateFromDOM(\n core: EditorCore,\n currentPosition: NodePosition\n): PendableFormatState {\n let node: Node | null = currentPosition.node;\n let formatState: PendableFormatState = {};\n let pendableKeys: PendableFormatNames[] = [];\n while (node && contains(core.contentDiv, node)) {\n const tag = getTagOfNode(node);\n const style = node.nodeType == NodeType.Element && (node as HTMLElement).style;\n if (tag && style) {\n getObjectKeys(PendableStyleCheckers).forEach(key => {\n if (!(pendableKeys.indexOf(key) >= 0)) {\n formatState[key] = formatState[key] || PendableStyleCheckers[key](tag, style);\n if (CssFalsyCheckers[key](style)) {\n pendableKeys.push(key);\n }\n }\n });\n }\n node = node.parentNode;\n }\n return formatState;\n}\n","import { contains, createRange } from 'roosterjs-editor-dom';\nimport { EditorCore, GetSelectionRange } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get current or cached selection range\n * @param core The EditorCore object\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now\n * @returns A Range object of the selection range\n */\nexport const getSelectionRange: GetSelectionRange = (\n core: EditorCore,\n tryGetFromCache: boolean\n) => {\n let result: Range | null = null;\n\n if (core.lifecycle.shadowEditFragment) {\n result =\n core.lifecycle.shadowEditSelectionPath &&\n createRange(\n core.contentDiv,\n core.lifecycle.shadowEditSelectionPath.start,\n core.lifecycle.shadowEditSelectionPath.end\n );\n\n return result;\n } else {\n if (!tryGetFromCache || core.api.hasFocus(core)) {\n let selection = core.contentDiv.ownerDocument.defaultView?.getSelection();\n if (selection && selection.rangeCount > 0) {\n let range = selection.getRangeAt(0);\n if (contains(core.contentDiv, range)) {\n result = range;\n }\n }\n }\n\n if (!result && tryGetFromCache) {\n result = core.domEvent.selectionRange;\n }\n\n return result;\n }\n};\n","import { contains, createRange, findClosestElementAncestor } from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n GetSelectionRangeEx,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get current or cached selection range\n * @param core The EditorCore object\n * @returns A Range object of the selection range\n */\nexport const getSelectionRangeEx: GetSelectionRangeEx = (core: EditorCore) => {\n let result: SelectionRangeEx | null = null;\n if (core.lifecycle.shadowEditFragment) {\n const {\n shadowEditTableSelectionPath,\n shadowEditSelectionPath,\n shadowEditImageSelectionPath,\n } = core.lifecycle;\n\n if ((shadowEditTableSelectionPath?.length || 0) > 0) {\n const ranges = core.lifecycle.shadowEditTableSelectionPath!.map(path =>\n createRange(core.contentDiv, path.start, path.end)\n );\n\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n table: findClosestElementAncestor(\n ranges[0].startContainer,\n core.contentDiv,\n 'table'\n ) as HTMLTableElement,\n coordinates: undefined,\n };\n } else if ((shadowEditImageSelectionPath?.length || 0) > 0) {\n const ranges = core.lifecycle.shadowEditImageSelectionPath!.map(path =>\n createRange(core.contentDiv, path.start, path.end)\n );\n return {\n type: SelectionRangeTypes.ImageSelection,\n ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n image: findClosestElementAncestor(\n ranges[0].startContainer,\n core.contentDiv,\n 'img'\n ) as HTMLImageElement,\n imageId: undefined,\n };\n } else {\n const shadowRange =\n shadowEditSelectionPath &&\n createRange(\n core.contentDiv,\n shadowEditSelectionPath.start,\n shadowEditSelectionPath.end\n );\n\n return createNormalSelectionEx(shadowRange ? [shadowRange] : []);\n }\n } else {\n if (core.api.hasFocus(core)) {\n if (core.domEvent.tableSelectionRange) {\n return core.domEvent.tableSelectionRange;\n }\n\n if (core.domEvent.imageSelectionRange) {\n return core.domEvent.imageSelectionRange;\n }\n\n let selection = core.contentDiv.ownerDocument.defaultView?.getSelection();\n if (!result && selection && selection.rangeCount > 0) {\n let range = selection.getRangeAt(0);\n if (contains(core.contentDiv, range)) {\n return createNormalSelectionEx([range]);\n }\n }\n }\n\n return (\n core.domEvent.tableSelectionRange ??\n core.domEvent.imageSelectionRange ??\n createNormalSelectionEx(\n core.domEvent.selectionRange ? [core.domEvent.selectionRange] : []\n )\n );\n }\n};\n\nfunction createNormalSelectionEx(ranges: Range[]): SelectionRangeEx {\n return {\n type: SelectionRangeTypes.Normal,\n ranges: ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n };\n}\n\nfunction checkAllCollapsed(ranges: Range[]): boolean {\n return ranges.filter(range => range?.collapsed).length == ranges.length;\n}\n","import { contains, getComputedStyles } from 'roosterjs-editor-dom';\r\nimport { EditorCore, GetStyleBasedFormatState, NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get style based format state from current selection, including font name/size and colors\r\n * @param core The EditorCore objects\r\n * @param node The node to get style from\r\n */\r\nexport const getStyleBasedFormatState: GetStyleBasedFormatState = (\r\n core: EditorCore,\r\n node: Node | null\r\n) => {\r\n if (!node) {\r\n return {};\r\n }\r\n\r\n let override: string[] = [];\r\n const pendableFormatSpan = core.pendingFormatState.pendableFormatSpan;\r\n\r\n if (pendableFormatSpan) {\r\n override = [\r\n pendableFormatSpan.style.fontFamily,\r\n pendableFormatSpan.style.fontSize,\r\n pendableFormatSpan.style.color,\r\n pendableFormatSpan.style.backgroundColor,\r\n ];\r\n }\r\n\r\n const styles = node\r\n ? getComputedStyles(node, [\r\n 'font-family',\r\n 'font-size',\r\n 'color',\r\n 'background-color',\r\n 'line-height',\r\n 'margin-top',\r\n 'margin-bottom',\r\n 'text-align',\r\n 'direction',\r\n ])\r\n : [];\r\n const { contentDiv, darkColorHandler } = core;\r\n\r\n let styleTextColor: string | undefined;\r\n let styleBackColor: string | undefined;\r\n\r\n while (\r\n node &&\r\n contains(contentDiv, node, true /*treatSameNodeAsContain*/) &&\r\n !(styleTextColor && styleBackColor)\r\n ) {\r\n if (node.nodeType == NodeType.Element) {\r\n const element = node as HTMLElement;\r\n\r\n styleTextColor = styleTextColor || element.style.getPropertyValue('color');\r\n styleBackColor = styleBackColor || element.style.getPropertyValue('background-color');\r\n }\r\n node = node.parentNode;\r\n }\r\n\r\n if (!core.lifecycle.isDarkMode && node == core.contentDiv) {\r\n styleTextColor = styleTextColor || styles[2];\r\n styleBackColor = styleBackColor || styles[3];\r\n }\r\n\r\n const textColor = darkColorHandler.parseColorValue(override[2] || styleTextColor);\r\n const backColor = darkColorHandler.parseColorValue(override[3] || styleBackColor);\r\n\r\n return {\r\n fontName: override[0] || styles[0],\r\n fontSize: override[1] || styles[1],\r\n textColor: textColor.lightModeColor,\r\n backgroundColor: backColor.lightModeColor,\r\n textColors: textColor.darkModeColor\r\n ? {\r\n lightModeColor: textColor.lightModeColor,\r\n darkModeColor: textColor.darkModeColor,\r\n }\r\n : undefined,\r\n backgroundColors: backColor.darkModeColor\r\n ? {\r\n lightModeColor: backColor.lightModeColor,\r\n darkModeColor: backColor.darkModeColor,\r\n }\r\n : undefined,\r\n lineHeight: styles[4],\r\n marginTop: styles[5],\r\n marginBottom: styles[6],\r\n textAlign: styles[7],\r\n direction: styles[8],\r\n };\r\n};\r\n","import { contains } from 'roosterjs-editor-dom';\nimport { EditorCore, HasFocus } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Check if the editor has focus now\n * @param core The EditorCore object\n * @returns True if the editor has focus, otherwise false\n */\nexport const hasFocus: HasFocus = (core: EditorCore) => {\n let activeElement = core.contentDiv.ownerDocument.activeElement;\n return !!(\n activeElement && contains(core.contentDiv, activeElement, true /*treatSameNodeAsContain*/)\n );\n};\n","import {\n BlockElement,\n ContentPosition,\n ColorTransformDirection,\n EditorCore,\n InsertNode,\n InsertOption,\n NodeType,\n PositionType,\n NodePosition,\n RegionType,\n} from 'roosterjs-editor-types';\nimport {\n createRange,\n getBlockElementAtNode,\n getFirstLastBlockElement,\n isBlockElement,\n isVoidHtmlElement,\n Position,\n safeInstanceOf,\n toArray,\n wrap,\n adjustInsertPosition,\n getRegionsFromRange,\n splitTextNode,\n splitParentNode,\n} from 'roosterjs-editor-dom';\n\nfunction getInitialRange(\n core: EditorCore,\n option: InsertOption\n): { range: Range | null; rangeToRestore: Range | null } {\n // Selection start replaces based on the current selection.\n // Range inserts based on a provided range.\n // Both have the potential to use the current selection to restore cursor position\n // So in both cases we need to store the selection state.\n let range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n let rangeToRestore = null;\n if (option.position == ContentPosition.Range) {\n rangeToRestore = range;\n range = option.range;\n } else if (range) {\n rangeToRestore = range.cloneRange();\n }\n\n return { range, rangeToRestore };\n}\n\n/**\n * @internal\n * Insert a DOM node into editor content\n * @param core The EditorCore object. No op if null.\n * @param option An insert option object to specify how to insert the node\n */\nexport const insertNode: InsertNode = (\n core: EditorCore,\n node: Node,\n option: InsertOption | null\n) => {\n option = option || {\n position: ContentPosition.SelectionStart,\n insertOnNewLine: false,\n updateCursor: true,\n replaceSelection: true,\n insertToRegionRoot: false,\n };\n let contentDiv = core.contentDiv;\n\n if (option.updateCursor) {\n core.api.focus(core);\n }\n\n if (option.position == ContentPosition.Outside) {\n contentDiv.parentNode?.insertBefore(node, contentDiv.nextSibling);\n return true;\n }\n\n core.api.transformColor(\n core,\n node,\n true /*includeSelf*/,\n () => {\n if (!option) {\n return;\n }\n switch (option.position) {\n case ContentPosition.Begin:\n case ContentPosition.End: {\n let isBegin = option.position == ContentPosition.Begin;\n let block = getFirstLastBlockElement(contentDiv, isBegin);\n let insertedNode: Node | Node[] | undefined;\n if (block) {\n let refNode = isBegin ? block.getStartNode() : block.getEndNode();\n if (\n option.insertOnNewLine ||\n refNode.nodeType == NodeType.Text ||\n isVoidHtmlElement(refNode)\n ) {\n // For insert on new line, or refNode is text or void html element (HR, BR etc.)\n // which cannot have children, i.e.
                hello
                world
                . 'hello', 'world' are the\n // first and last node. Insert before 'hello' or after 'world', but still inside DIV\n if (safeInstanceOf(node, 'DocumentFragment')) {\n // if the node to be inserted is DocumentFragment, use its childNodes as insertedNode\n // because insertBefore() returns an empty DocumentFragment\n insertedNode = toArray(node.childNodes);\n refNode.parentNode?.insertBefore(\n node,\n isBegin ? refNode : refNode.nextSibling\n );\n } else {\n insertedNode = refNode.parentNode?.insertBefore(\n node,\n isBegin ? refNode : refNode.nextSibling\n );\n }\n } else {\n // if the refNode can have child, use appendChild (which is like to insert as first/last child)\n // i.e.
                hello
                , the content will be inserted before/after hello\n insertedNode = refNode.insertBefore(\n node,\n isBegin ? refNode.firstChild : null\n );\n }\n } else {\n // No first block, this can happen when editor is empty. Use appendChild to insert the content in contentDiv\n insertedNode = contentDiv.appendChild(node);\n }\n\n // Final check to see if the inserted node is a block. If not block and the ask is to insert on new line,\n // add a DIV wrapping\n if (insertedNode && option.insertOnNewLine) {\n const nodes = Array.isArray(insertedNode) ? insertedNode : [insertedNode];\n if (!isBlockElement(nodes[0]) || !isBlockElement(nodes[nodes.length - 1])) {\n wrap(nodes);\n }\n }\n\n break;\n }\n case ContentPosition.DomEnd:\n // Use appendChild to insert the node at the end of the content div.\n let insertedNode = contentDiv.appendChild(node);\n // Final check to see if the inserted node is a block. If not block and the ask is to insert on new line,\n // add a DIV wrapping\n if (insertedNode && option.insertOnNewLine && !isBlockElement(insertedNode)) {\n wrap(insertedNode);\n }\n break;\n case ContentPosition.Range:\n case ContentPosition.SelectionStart:\n let { range, rangeToRestore } = getInitialRange(core, option);\n if (!range) {\n return;\n }\n\n // if to replace the selection and the selection is not collapsed, remove the the content at selection first\n if (option.replaceSelection && !range.collapsed) {\n range.deleteContents();\n }\n\n let pos: NodePosition = Position.getStart(range);\n let blockElement: BlockElement | null;\n\n if (option.insertOnNewLine && option.insertToRegionRoot) {\n pos = adjustInsertPositionRegionRoot(core, range, pos);\n } else if (\n option.insertOnNewLine &&\n (blockElement = getBlockElementAtNode(contentDiv, pos.normalize().node))\n ) {\n pos = adjustInsertPositionNewLine(blockElement, core, pos);\n } else {\n pos = adjustInsertPosition(contentDiv, node, pos, range);\n }\n\n let nodeForCursor =\n node.nodeType == NodeType.DocumentFragment ? node.lastChild : node;\n\n range = createRange(pos);\n range.insertNode(node);\n\n if (option.updateCursor && nodeForCursor) {\n rangeToRestore = createRange(\n new Position(nodeForCursor, PositionType.After).normalize()\n );\n }\n\n if (rangeToRestore) {\n core.api.selectRange(core, rangeToRestore);\n }\n\n break;\n }\n },\n ColorTransformDirection.LightToDark\n );\n\n return true;\n};\n\nfunction adjustInsertPositionRegionRoot(core: EditorCore, range: Range, position: NodePosition) {\n const region = getRegionsFromRange(core.contentDiv, range, RegionType.Table)[0];\n let node: Node | null = position.node;\n\n if (region) {\n if (node.nodeType == NodeType.Text && !position.isAtEnd) {\n node = splitTextNode(node as Text, position.offset, true /*returnFirstPart*/);\n }\n\n if (node != region.rootNode) {\n while (node && node.parentNode != region.rootNode) {\n splitParentNode(node, false /*splitBefore*/);\n node = node.parentNode;\n }\n }\n\n if (node) {\n position = new Position(node, PositionType.After);\n }\n }\n\n return position;\n}\n\nfunction adjustInsertPositionNewLine(blockElement: BlockElement, core: EditorCore, pos: Position) {\n let tempPos = new Position(blockElement.getEndNode(), PositionType.After);\n if (safeInstanceOf(tempPos.node, 'HTMLTableRowElement')) {\n const div = core.contentDiv.ownerDocument.createElement('div');\n const range = createRange(pos);\n range.insertNode(div);\n tempPos = new Position(div, PositionType.Begin);\n }\n return tempPos;\n}\n","import { getEntityFromElement, getEntitySelector, queryElements } from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n EntityOperation,\n PluginEventType,\n RestoreUndoSnapshot,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Restore an undo snapshot into editor\n * @param core The editor core object\n * @param step Steps to move, can be 0, positive or negative\n */\nexport const restoreUndoSnapshot: RestoreUndoSnapshot = (core: EditorCore, step: number) => {\n if (core.undo.hasNewContent && step < 0) {\n core.api.addUndoSnapshot(\n core,\n null /*callback*/,\n null /*changeSource*/,\n false /*canUndoByBackspace*/\n );\n }\n\n const snapshot = core.undo.snapshotsService.move(step);\n\n if (snapshot && snapshot.html != null) {\n try {\n core.undo.isRestoring = true;\n core.api.setContent(\n core,\n snapshot.html,\n true /*triggerContentChangedEvent*/,\n snapshot.metadata ?? undefined\n );\n\n const darkColorHandler = core.darkColorHandler;\n const isDarkModel = core.lifecycle.isDarkMode;\n\n snapshot.knownColors.forEach(color => {\n darkColorHandler.registerColor(\n color.lightModeColor,\n isDarkModel,\n color.darkModeColor\n );\n });\n\n snapshot.entityStates?.forEach(entityState => {\n const { type, id, state } = entityState;\n const wrapper = queryElements(\n core.contentDiv,\n getEntitySelector(type, id)\n )[0] as HTMLElement;\n const entity = wrapper && getEntityFromElement(wrapper);\n\n if (entity) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EntityOperation,\n operation: EntityOperation.UpdateEntityState,\n entity: entity,\n state,\n },\n false\n );\n }\n });\n } finally {\n core.undo.isRestoring = false;\n }\n }\n};\n","import { contains, createRange, safeInstanceOf } from 'roosterjs-editor-dom';\nimport {\n NodePosition,\n PluginEventType,\n PositionType,\n Select,\n SelectionPath,\n SelectionRangeEx,\n SelectionRangeTypes,\n TableSelection,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Select content according to the given information.\n * There are a bunch of allowed combination of parameters. See IEditor.select for more details\n * @param core The editor core object\n * @param arg1 A DOM Range, or SelectionRangeEx, or NodePosition, or Node, or Selection Path\n * @param arg2 (optional) A NodePosition, or an offset number, or a PositionType, or a TableSelection\n * @param arg3 (optional) A Node\n * @param arg4 (optional) An offset number, or a PositionType\n */\nexport const select: Select = (core, arg1, arg2, arg3, arg4) => {\n let rangeEx: SelectionRangeEx | null = null;\n\n if (isSelectionRangeEx(arg1)) {\n rangeEx = arg1;\n } else if (safeInstanceOf(arg1, 'HTMLTableElement') && isTableSelectionOrNull(arg2)) {\n rangeEx = {\n type: SelectionRangeTypes.TableSelection,\n ranges: [],\n areAllCollapsed: false,\n table: arg1,\n coordinates: arg2 ?? undefined,\n };\n } else if (safeInstanceOf(arg1, 'HTMLImageElement') && typeof arg2 == 'undefined') {\n rangeEx = {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [],\n areAllCollapsed: false,\n image: arg1,\n };\n } else {\n let range = !arg1\n ? null\n : safeInstanceOf(arg1, 'Range')\n ? arg1\n : isSelectionPath(arg1)\n ? createRange(core.contentDiv, arg1.start, arg1.end)\n : isNodePosition(arg1) || safeInstanceOf(arg1, 'Node')\n ? createRange(\n arg1,\n arg2,\n arg3,\n arg4\n )\n : null;\n\n rangeEx = range\n ? {\n type: SelectionRangeTypes.Normal,\n ranges: [range],\n areAllCollapsed: range.collapsed,\n }\n : null;\n }\n\n if (rangeEx) {\n switch (rangeEx.type) {\n case SelectionRangeTypes.TableSelection:\n if (contains(core.contentDiv, rangeEx.table)) {\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n core.domEvent.tableSelectionRange = core.api.selectTable(\n core,\n rangeEx.table,\n rangeEx.coordinates\n );\n rangeEx = core.domEvent.tableSelectionRange;\n }\n break;\n case SelectionRangeTypes.ImageSelection:\n if (contains(core.contentDiv, rangeEx.image)) {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, rangeEx.image);\n rangeEx = core.domEvent.imageSelectionRange;\n }\n break;\n case SelectionRangeTypes.Normal:\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n\n if (contains(core.contentDiv, rangeEx.ranges[0])) {\n core.api.selectRange(core, rangeEx.ranges[0]);\n } else {\n rangeEx = null;\n }\n break;\n }\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.SelectionChanged,\n selectionRangeEx: rangeEx,\n },\n true /** broadcast **/\n );\n } else {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n }\n\n return !!rangeEx;\n};\n\nfunction isSelectionRangeEx(obj: any): obj is SelectionRangeEx {\n const rangeEx = obj as SelectionRangeEx;\n return (\n rangeEx &&\n typeof rangeEx == 'object' &&\n typeof rangeEx.type == 'number' &&\n Array.isArray(rangeEx.ranges)\n );\n}\n\nfunction isTableSelectionOrNull(obj: any): obj is TableSelection | null {\n const selection = obj as TableSelection | null;\n\n return (\n selection === null ||\n (selection &&\n typeof selection == 'object' &&\n typeof selection.firstCell == 'object' &&\n typeof selection.lastCell == 'object')\n );\n}\n\nfunction isSelectionPath(obj: any): obj is SelectionPath {\n const path = obj as SelectionPath;\n\n return path && typeof path == 'object' && Array.isArray(path.start) && Array.isArray(path.end);\n}\n\nfunction isNodePosition(obj: any): obj is NodePosition {\n const pos = obj as NodePosition;\n\n return (\n pos &&\n typeof pos == 'object' &&\n typeof pos.node == 'object' &&\n typeof pos.offset == 'number'\n );\n}\n","import addUniqueId from './utils/addUniqueId';\nimport {\n createRange,\n Position,\n removeGlobalCssStyle,\n removeImportantStyleRule,\n setGlobalCssStyles,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n ImageSelectionRange,\n PositionType,\n SelectImage,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst IMAGE_ID = 'imageSelected';\nconst CONTENT_DIV_ID = 'contentDiv_';\nconst STYLE_ID = 'imageStyle';\nconst DEFAULT_SELECTION_BORDER_COLOR = '#DB626C';\n\n/**\n * @internal\n * Select a image and save data of the selected range\n * @param image Image to select\n * @returns Selected image information\n */\nexport const selectImage: SelectImage = (core: EditorCore, image: HTMLImageElement | null) => {\n unselect(core);\n\n let selection: ImageSelectionRange | null = null;\n\n if (image) {\n const range = createRange(image);\n\n addUniqueId(image, IMAGE_ID);\n addUniqueId(core.contentDiv, CONTENT_DIV_ID);\n\n core.api.selectRange(core, createRange(new Position(image, PositionType.After)));\n\n select(core, image);\n\n selection = {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [range],\n image: image,\n areAllCollapsed: range.collapsed,\n };\n }\n\n return selection;\n};\n\nconst select = (core: EditorCore, image: HTMLImageElement) => {\n removeImportantStyleRule(image, ['border', 'margin']);\n const borderCSS = buildBorderCSS(core, image.id);\n setGlobalCssStyles(core.contentDiv.ownerDocument, borderCSS, STYLE_ID + core.contentDiv.id);\n};\n\nconst buildBorderCSS = (core: EditorCore, imageId: string): string => {\n const divId = core.contentDiv.id;\n const color = core.imageSelectionBorderColor || DEFAULT_SELECTION_BORDER_COLOR;\n\n return `#${divId} #${imageId} {outline-style: auto!important;outline-color: ${color}!important;caret-color: transparent!important;}`;\n};\n\nconst unselect = (core: EditorCore) => {\n const doc = core.contentDiv.ownerDocument;\n removeGlobalCssStyle(doc, STYLE_ID + core.contentDiv.id);\n};\n","import { EditorCore, SelectRange } from 'roosterjs-editor-types';\nimport { hasFocus } from './hasFocus';\nimport {\n contains,\n getPendableFormatState,\n Position,\n PendableFormatCommandMap,\n addRangeToSelection,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Change the editor selection to the given range\n * @param core The EditorCore object\n * @param range The range to select\n * @param skipSameRange When set to true, do nothing if the given range is the same with current selection\n * in editor, otherwise it will always remove current selection range and set to the given one.\n * This parameter is always treat as true in Edge to avoid some weird runtime exception.\n */\nexport const selectRange: SelectRange = (\n core: EditorCore,\n range: Range,\n skipSameRange?: boolean\n) => {\n if (!core.lifecycle.shadowEditSelectionPath && contains(core.contentDiv, range)) {\n addRangeToSelection(range, skipSameRange);\n\n if (!hasFocus(core)) {\n core.domEvent.selectionRange = range;\n }\n\n if (range.collapsed) {\n // If selected, and current selection is collapsed,\n // need to restore pending format state if exists.\n restorePendingFormatState(core);\n }\n\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * Restore cached pending format state (if exist) to current selection\n */\nfunction restorePendingFormatState(core: EditorCore) {\n const {\n contentDiv,\n pendingFormatState,\n api: { getSelectionRange },\n } = core;\n\n if (pendingFormatState.pendableFormatState) {\n const document = contentDiv.ownerDocument;\n let formatState = getPendableFormatState(document);\n getObjectKeys(PendableFormatCommandMap).forEach(key => {\n if (!!pendingFormatState.pendableFormatState?.[key] != formatState[key]) {\n document.execCommand(\n PendableFormatCommandMap[key],\n false /* showUI */,\n undefined /* value */\n );\n }\n });\n\n const range = getSelectionRange(core, true /*tryGetFromCache*/);\n let position: Position | null = range && Position.getStart(range);\n if (position) {\n pendingFormatState.pendableFormatPosition = position;\n }\n }\n}\n","import addUniqueId from './utils/addUniqueId';\nimport {\n createRange,\n getTagOfNode,\n isWholeTableSelected,\n Position,\n removeGlobalCssStyle,\n removeImportantStyleRule,\n setGlobalCssStyles,\n toArray,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n SelectionRangeTypes,\n TableSelection,\n SelectTable,\n PositionType,\n Coordinates,\n} from 'roosterjs-editor-types';\n\nconst TABLE_ID = 'tableSelected';\nconst CONTENT_DIV_ID = 'contentDiv_';\nconst STYLE_ID = 'tableStyle';\nconst SELECTED_CSS_RULE =\n '{background-color: rgb(198,198,198) !important; caret-color: transparent}';\nconst MAX_RULE_SELECTOR_LENGTH = 9000;\n\n/**\n * @internal\n * Select a table and save data of the selected range\n * @param core The EditorCore object\n * @param table table to select\n * @param coordinates first and last cell of the selection, if this parameter is null, instead of\n * selecting, will unselect the table.\n * @returns true if successful\n */\nexport const selectTable: SelectTable = (\n core: EditorCore,\n table: HTMLTableElement | null,\n coordinates?: TableSelection\n) => {\n unselect(core);\n\n if (areValidCoordinates(coordinates) && table) {\n addUniqueId(table, TABLE_ID);\n addUniqueId(core.contentDiv, CONTENT_DIV_ID);\n\n const { ranges, isWholeTableSelected } = select(core, table, coordinates);\n if (!isMergedCell(table, coordinates)) {\n const cellToSelect = table.rows\n .item(coordinates.firstCell.y)\n ?.cells.item(coordinates.firstCell.x);\n\n if (cellToSelect) {\n core.api.selectRange(\n core,\n createRange(new Position(cellToSelect, PositionType.Begin))\n );\n }\n }\n\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges,\n table,\n areAllCollapsed: ranges.filter(range => range?.collapsed).length == ranges.length,\n coordinates,\n isWholeTableSelected,\n };\n }\n\n return null;\n};\n\nfunction buildCss(\n table: HTMLTableElement,\n coordinates: TableSelection,\n contentDivSelector: string\n): { cssRules: string[]; ranges: Range[]; isWholeTableSelected: boolean } {\n const ranges: Range[] = [];\n const selectors: string[] = [];\n\n const vTable = new VTable(table);\n const isAllTableSelected = isWholeTableSelected(vTable, coordinates);\n if (isAllTableSelected) {\n handleAllTableSelected(contentDivSelector, vTable, selectors, ranges);\n } else {\n handleTableSelected(coordinates, vTable, contentDivSelector, selectors, ranges);\n }\n\n const cssRules: string[] = [];\n let currentRules: string = '';\n while (selectors.length > 0) {\n currentRules += (currentRules.length > 0 ? ',' : '') + selectors.shift() || '';\n if (\n currentRules.length + (selectors[0]?.length || 0) > MAX_RULE_SELECTOR_LENGTH ||\n selectors.length == 0\n ) {\n cssRules.push(currentRules + ' ' + SELECTED_CSS_RULE);\n currentRules = '';\n }\n }\n\n return { cssRules, ranges, isWholeTableSelected: isAllTableSelected };\n}\n\nfunction handleAllTableSelected(\n contentDivSelector: string,\n vTable: VTable,\n selectors: string[],\n ranges: Range[]\n) {\n const table = vTable.table;\n const tableSelector = contentDivSelector + ' #' + table.id;\n selectors.push(tableSelector, `${tableSelector} *`);\n\n const tableRange = new Range();\n tableRange.selectNode(table);\n ranges.push(tableRange);\n}\n\nfunction handleTableSelected(\n coordinates: TableSelection,\n vTable: VTable,\n contentDivSelector: string,\n selectors: string[],\n ranges: Range[]\n) {\n const tr1 = coordinates.firstCell.y;\n const td1 = coordinates.firstCell.x;\n const tr2 = coordinates.lastCell.y;\n const td2 = coordinates.lastCell.x;\n const table = vTable.table;\n\n let firstSelected: HTMLTableCellElement | null = null;\n let lastSelected: HTMLTableCellElement | null = null;\n // Get whether table has thead, tbody or tfoot.\n const tableChildren = toArray(table.childNodes).filter(\n node => ['THEAD', 'TBODY', 'TFOOT'].indexOf(getTagOfNode(node)) > -1\n );\n // Set the start and end of each of the table children, so we can build the selector according the element between the table and the row.\n let cont = 0;\n const indexes = tableChildren.map(node => {\n const result = {\n el: getTagOfNode(node),\n start: cont,\n end: node.childNodes.length + cont,\n };\n\n cont = result.end;\n return result;\n });\n\n vTable.cells?.forEach((row, rowIndex) => {\n let tdCount = 0;\n firstSelected = null;\n lastSelected = null;\n\n //Get current TBODY/THEAD/TFOOT\n const midElement = indexes.filter(ind => ind.start <= rowIndex && ind.end > rowIndex)[0];\n\n const middleElSelector = midElement ? '>' + midElement.el + '>' : '>';\n const currentRow =\n midElement && rowIndex + 1 >= midElement.start\n ? rowIndex + 1 - midElement.start\n : rowIndex + 1;\n\n for (let cellIndex = 0; cellIndex < row.length; cellIndex++) {\n const cell = row[cellIndex].td;\n if (cell) {\n tdCount++;\n if (rowIndex >= tr1 && rowIndex <= tr2 && cellIndex >= td1 && cellIndex <= td2) {\n removeImportant(cell);\n\n const selector = generateCssFromCell(\n contentDivSelector,\n table.id,\n middleElSelector,\n currentRow,\n getTagOfNode(cell),\n tdCount\n );\n const elementsSelector = selector + ' *';\n\n selectors.push(selector, elementsSelector);\n firstSelected = firstSelected || table.querySelector(selector);\n lastSelected = table.querySelector(selector);\n }\n }\n }\n\n if (firstSelected && lastSelected) {\n const rowRange = new Range();\n rowRange.setStartBefore(firstSelected);\n rowRange.setEndAfter(lastSelected);\n ranges.push(rowRange);\n }\n });\n}\n\nfunction select(\n core: EditorCore,\n table: HTMLTableElement,\n coordinates: TableSelection\n): { ranges: Range[]; isWholeTableSelected: boolean } {\n const contentDivSelector = '#' + core.contentDiv.id;\n let { cssRules, ranges, isWholeTableSelected } = buildCss(\n table,\n coordinates,\n contentDivSelector\n );\n cssRules.forEach(css =>\n setGlobalCssStyles(core.contentDiv.ownerDocument, css, STYLE_ID + core.contentDiv.id)\n );\n\n return { ranges, isWholeTableSelected };\n}\n\nconst unselect = (core: EditorCore) => {\n const doc = core.contentDiv.ownerDocument;\n removeGlobalCssStyle(doc, STYLE_ID + core.contentDiv.id);\n};\n\nfunction generateCssFromCell(\n contentDivSelector: string,\n tableId: string,\n middleElSelector: string,\n rowIndex: number,\n cellTag: string,\n index: number\n): string {\n return (\n contentDivSelector +\n ' #' +\n tableId +\n middleElSelector +\n ' tr:nth-child(' +\n rowIndex +\n ')>' +\n cellTag +\n ':nth-child(' +\n index +\n ')'\n );\n}\n\nfunction removeImportant(cell: HTMLTableCellElement) {\n if (cell) {\n removeImportantStyleRule(cell, ['background-color', 'background']);\n }\n}\n\nfunction areValidCoordinates(input?: TableSelection): input is TableSelection {\n if (input) {\n const { firstCell, lastCell } = input || {};\n if (firstCell && lastCell) {\n const handler = (coordinate: Coordinates) =>\n isValidCoordinate(coordinate.x) && isValidCoordinate(coordinate.y);\n return handler(firstCell) && handler(lastCell);\n }\n }\n\n return false;\n}\n\nfunction isValidCoordinate(input: number): boolean {\n return (!!input || input == 0) && input > -1;\n}\n\nfunction isMergedCell(table: HTMLTableElement, coordinates: TableSelection): boolean {\n const { firstCell } = coordinates;\n return !(table.rows.item(firstCell.y) && table.rows.item(firstCell.y)?.cells.item(firstCell.x));\n}\n","import {\n createRange,\n extractContentMetadata,\n queryElements,\n restoreContentWithEntityPlaceholder,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ColorTransformDirection,\n ContentMetadata,\n EditorCore,\n PluginEventType,\n SelectionRangeTypes,\n SetContent,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Set HTML content to this editor. All existing content will be replaced. A ContentChanged event will be triggered\n * if triggerContentChangedEvent is set to true\n * @param core The EditorCore object\n * @param content HTML content to set in\n * @param triggerContentChangedEvent True to trigger a ContentChanged event. Default value is true\n * @param metadata @optional Metadata of the content that helps editor know the selection and color mode.\n * If not passed, we will treat content as in light mode without selection\n */\nexport const setContent: SetContent = (\n core: EditorCore,\n content: string,\n triggerContentChangedEvent: boolean,\n metadata?: ContentMetadata\n) => {\n let contentChanged = false;\n if (core.contentDiv.innerHTML != content) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.BeforeSetContent,\n newContent: content,\n },\n true /*broadcast*/\n );\n\n const entities = core.entity.entityMap;\n const html = content || '';\n const body = new DOMParser().parseFromString(\n core.trustedHTMLHandler?.(html) ?? html,\n 'text/html'\n ).body;\n\n restoreContentWithEntityPlaceholder(body, core.contentDiv, entities);\n\n const metadataFromContent = extractContentMetadata(core.contentDiv);\n metadata = metadata || metadataFromContent;\n selectContentMetadata(core, metadata);\n contentChanged = true;\n }\n\n const isDarkMode = core.lifecycle.isDarkMode;\n\n if ((!metadata && isDarkMode) || (metadata && !!metadata.isDarkMode != !!isDarkMode)) {\n core.api.transformColor(\n core,\n core.contentDiv,\n false /*includeSelf*/,\n null /*callback*/,\n isDarkMode ? ColorTransformDirection.LightToDark : ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n metadata?.isDarkMode\n );\n contentChanged = true;\n }\n\n if (triggerContentChangedEvent && contentChanged) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.ContentChanged,\n source: ChangeSource.SetContent,\n },\n false /*broadcast*/\n );\n }\n};\n\nfunction selectContentMetadata(core: EditorCore, metadata: ContentMetadata | undefined) {\n if (!core.lifecycle.shadowEditSelectionPath && metadata) {\n core.domEvent.tableSelectionRange = null;\n core.domEvent.imageSelectionRange = null;\n core.domEvent.selectionRange = null;\n\n switch (metadata.type) {\n case SelectionRangeTypes.Normal:\n core.api.selectTable(core, null);\n core.api.selectImage(core, null);\n\n const range = createRange(core.contentDiv, metadata.start, metadata.end);\n core.api.selectRange(core, range);\n break;\n case SelectionRangeTypes.TableSelection:\n const table = queryElements(\n core.contentDiv,\n '#' + metadata.tableId\n )[0] as HTMLTableElement;\n\n if (table) {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, table, metadata);\n }\n break;\n case SelectionRangeTypes.ImageSelection:\n const image = queryElements(\n core.contentDiv,\n '#' + metadata.imageId\n )[0] as HTMLImageElement;\n\n if (image) {\n core.domEvent.imageSelectionRange = core.api.selectImage(core, image);\n }\n break;\n }\n }\n}\n","import {\n createRange,\n getSelectionPath,\n moveContentWithEntityPlaceholders,\n restoreContentWithEntityPlaceholder,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n PluginEventType,\n SelectionRangeEx,\n SelectionRangeTypes,\n SwitchShadowEdit,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport const switchShadowEdit: SwitchShadowEdit = (core: EditorCore, isOn: boolean): void => {\n const { lifecycle, contentDiv } = core;\n let {\n shadowEditEntities,\n shadowEditFragment,\n shadowEditSelectionPath,\n shadowEditTableSelectionPath,\n shadowEditImageSelectionPath,\n } = lifecycle;\n const wasInShadowEdit = !!shadowEditFragment;\n\n const getShadowEditSelectionPath = (\n selectionType: SelectionRangeTypes,\n shadowEditSelection?: SelectionRangeEx\n ) => {\n return (\n (shadowEditSelection?.type == selectionType &&\n shadowEditSelection.ranges\n .map(range => getSelectionPath(contentDiv, range))\n .map(w => w!!)) ||\n null\n );\n };\n\n if (isOn) {\n if (!wasInShadowEdit) {\n const selection = core.api.getSelectionRangeEx(core);\n const range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n\n shadowEditSelectionPath = range && getSelectionPath(contentDiv, range);\n shadowEditTableSelectionPath = getShadowEditSelectionPath(\n SelectionRangeTypes.TableSelection,\n selection\n );\n shadowEditImageSelectionPath = getShadowEditSelectionPath(\n SelectionRangeTypes.ImageSelection,\n selection\n );\n\n shadowEditEntities = {};\n shadowEditFragment = moveContentWithEntityPlaceholders(contentDiv, shadowEditEntities);\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EnteredShadowEdit,\n fragment: shadowEditFragment,\n selectionPath: shadowEditSelectionPath,\n },\n false /*broadcast*/\n );\n\n lifecycle.shadowEditFragment = shadowEditFragment;\n lifecycle.shadowEditSelectionPath = shadowEditSelectionPath;\n lifecycle.shadowEditTableSelectionPath = shadowEditTableSelectionPath;\n lifecycle.shadowEditImageSelectionPath = shadowEditImageSelectionPath;\n lifecycle.shadowEditEntities = shadowEditEntities;\n }\n\n if (lifecycle.shadowEditFragment) {\n restoreContentWithEntityPlaceholder(\n lifecycle.shadowEditFragment,\n contentDiv,\n lifecycle.shadowEditEntities,\n true /*insertClonedNode*/\n );\n }\n } else {\n lifecycle.shadowEditFragment = null;\n lifecycle.shadowEditSelectionPath = null;\n lifecycle.shadowEditEntities = null;\n\n if (wasInShadowEdit) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.LeavingShadowEdit,\n },\n false /*broadcast*/\n );\n\n if (shadowEditFragment) {\n restoreContentWithEntityPlaceholder(\n shadowEditFragment,\n contentDiv,\n shadowEditEntities\n );\n }\n core.api.focus(core);\n\n if (shadowEditSelectionPath) {\n core.api.selectRange(\n core,\n createRange(\n contentDiv,\n shadowEditSelectionPath.start,\n shadowEditSelectionPath.end\n )\n );\n }\n\n if (core.domEvent.imageSelectionRange) {\n const { image } = core.domEvent.imageSelectionRange;\n const imageElement = core.contentDiv.querySelector('#' + image.id);\n if (imageElement) {\n core.api.selectImage(core, image);\n }\n }\n\n if (core.domEvent.tableSelectionRange) {\n const { table, coordinates } = core.domEvent.tableSelectionRange;\n const tableId = table.id;\n const tableElement = core.contentDiv.querySelector('#' + tableId);\n if (table) {\n core.domEvent.tableSelectionRange = core.api.selectTable(\n core,\n tableElement as HTMLTableElement,\n coordinates\n );\n }\n }\n }\n }\n};\n","import { ColorTransformDirection, EditorCore, TransformColor } from 'roosterjs-editor-types';\nimport type { CompatibleColorTransformDirection } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Edit and transform color of elements between light mode and dark mode\n * @param core The EditorCore object\n * @param rootNode The root HTML elements to transform\n * @param includeSelf True to transform the root node as well, otherwise false\n * @param callback The callback function to invoke before do color transformation\n * @param direction To specify the transform direction, light to dark, or dark to light\n * @param forceTransform By default this function will only work when editor core is in dark mode.\n * Pass true to this value to force do color transformation even editor core is in light mode\n */\nexport const transformColor: TransformColor = (\n core: EditorCore,\n rootNode: Node | null,\n includeSelf: boolean,\n callback: (() => void) | null,\n direction: ColorTransformDirection | CompatibleColorTransformDirection,\n forceTransform?: boolean,\n fromDarkMode: boolean = false\n) => {\n const {\n darkColorHandler,\n lifecycle: { onExternalContentTransform },\n } = core;\n const toDarkMode = direction == ColorTransformDirection.LightToDark;\n if (rootNode && (forceTransform || core.lifecycle.isDarkMode)) {\n const transformer = onExternalContentTransform\n ? (element: HTMLElement) => {\n onExternalContentTransform(element, fromDarkMode, toDarkMode, darkColorHandler);\n }\n : (element: HTMLElement) => {\n darkColorHandler.transformElementColor(element, fromDarkMode, toDarkMode);\n };\n\n iterateElements(rootNode, transformer, includeSelf);\n }\n\n callback?.();\n};\n\nfunction iterateElements(\n root: Node,\n transformer: (element: HTMLElement) => void,\n includeSelf?: boolean\n) {\n if (includeSelf && isHTMLElement(root)) {\n transformer(root);\n }\n\n for (let child = root.firstChild; child; child = child.nextSibling) {\n if (isHTMLElement(child)) {\n transformer(child);\n }\n\n iterateElements(child, transformer);\n }\n}\n\n// This is not a strict check, we just need to make sure this element has style so that we can set style to it\n// We don't use safeInstanceOf() here since this function will be called very frequently when extract html content\n// in dark mode, so we need to make sure this check is fast enough\nfunction isHTMLElement(node: Node): node is HTMLElement {\n const htmlElement = node;\n return node.nodeType == Node.ELEMENT_NODE && !!htmlElement.style;\n}\n","import {\n EditorCore,\n EditorPlugin,\n PluginEvent,\n PluginEventType,\n TriggerEvent,\n} from 'roosterjs-editor-types';\nimport type { CompatiblePluginEventType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst allowedEventsInShadowEdit: (PluginEventType | CompatiblePluginEventType)[] = [\n PluginEventType.EditorReady,\n PluginEventType.BeforeDispose,\n PluginEventType.ExtractContentWithDom,\n PluginEventType.ZoomChanged,\n];\n\n/**\n * @internal\n * Trigger a plugin event\n * @param core The EditorCore object\n * @param pluginEvent The event object to trigger\n * @param broadcast Set to true to skip the shouldHandleEventExclusively check\n */\nexport const triggerEvent: TriggerEvent = (\n core: EditorCore,\n pluginEvent: PluginEvent,\n broadcast: boolean\n) => {\n if (\n (!core.lifecycle.shadowEditFragment ||\n allowedEventsInShadowEdit.indexOf(pluginEvent.eventType) >= 0) &&\n (broadcast || !core.plugins.some(plugin => handledExclusively(pluginEvent, plugin)))\n ) {\n core.plugins.forEach(plugin => {\n if (plugin.onPluginEvent) {\n plugin.onPluginEvent(pluginEvent);\n }\n });\n }\n};\n\nfunction handledExclusively(event: PluginEvent, plugin: EditorPlugin): boolean {\n if (plugin.onPluginEvent && plugin.willHandleEventExclusively?.(event)) {\n plugin.onPluginEvent(event);\n return true;\n }\n\n return false;\n}\n","/**\n * Add an unique id to element and ensure that is unique\n * @param el The HTMLElement that will receive the id\n * @param idPrefix The prefix that will antecede the id (Ex: tableSelected01)\n */\nexport default function addUniqueId(el: HTMLElement, idPrefix: string) {\n const doc = el.ownerDocument;\n if (!el.id) {\n applyId(el, idPrefix, doc);\n } else {\n const elements = doc.querySelectorAll(`#${el.id}`);\n if (elements.length > 1) {\n el.removeAttribute('id');\n applyId(el, idPrefix, doc);\n }\n }\n}\n\nfunction applyId(el: HTMLElement, idPrefix: string, doc: Document) {\n let cont = 0;\n const getElement = () => doc.getElementById(idPrefix + cont);\n //Ensure that there are no elements with the same ID\n let element = getElement();\n while (element) {\n cont++;\n element = getElement();\n }\n\n el.id = idPrefix + cont;\n}\n","import { forEachSelectedCell } from './utils/forEachSelectedCell';\nimport { removeCellsOutsideSelection } from './utils/removeCellsOutsideSelection';\nimport {\n addRangeToSelection,\n createElement,\n extractClipboardEvent,\n moveChildNodes,\n Browser,\n setHtmlWithMetadata,\n createRange,\n VTable,\n isWholeTableSelected,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n CopyPastePluginState,\n EditorOptions,\n GetContentMode,\n IEditor,\n PluginEventType,\n PluginWithState,\n KnownCreateElementDataIndex,\n SelectionRangeEx,\n SelectionRangeTypes,\n TableSelection,\n TableOperation,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Copy and paste plugin for handling onCopy and onPaste event\n */\nexport default class CopyPastePlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private state: CopyPastePluginState;\n\n /**\n * Construct a new instance of CopyPastePlugin\n * @param options The editor options\n */\n constructor(options: EditorOptions) {\n this.state = {\n allowedCustomPasteType: options.allowedCustomPasteType || [],\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CopyPaste';\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 this.disposer = this.editor.addDomEventHandler({\n paste: e => this.onPaste(e),\n copy: e => this.onCutCopy(e, false /*isCut*/),\n cut: e => this.onCutCopy(e, true /*isCut*/),\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.disposer) {\n this.disposer();\n }\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onCutCopy(event: Event, isCut: boolean) {\n if (this.editor) {\n const selection = this.editor.getSelectionRangeEx();\n if (selection && !selection.areAllCollapsed) {\n const html = this.editor.getContent(GetContentMode.RawHTMLWithSelection);\n const tempDiv = this.getTempDiv(this.editor, true /*forceInLightMode*/);\n const metadata = setHtmlWithMetadata(\n tempDiv,\n html,\n this.editor.getTrustedHTMLHandler()\n );\n let newRange: Range | null = null;\n\n if (\n selection.type === SelectionRangeTypes.TableSelection &&\n selection.coordinates\n ) {\n const table = tempDiv.querySelector(\n `#${selection.table.id}`\n ) as HTMLTableElement;\n newRange = this.createTableRange(table, selection.coordinates);\n if (isCut) {\n this.deleteTableContent(\n this.editor,\n selection.table,\n selection.coordinates\n );\n }\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\n const image = tempDiv.querySelector('#' + selection.image.id);\n\n if (image) {\n newRange = createRange(image);\n if (isCut) {\n this.deleteImage(this.editor, selection.image.id);\n }\n }\n } else {\n newRange =\n metadata?.type === SelectionRangeTypes.Normal\n ? createRange(tempDiv, metadata.start, metadata.end)\n : null;\n }\n if (newRange) {\n const cutCopyEvent = this.editor.triggerPluginEvent(\n PluginEventType.BeforeCutCopy,\n {\n clonedRoot: tempDiv,\n range: newRange,\n rawEvent: event as ClipboardEvent,\n isCut,\n }\n );\n\n if (cutCopyEvent.range) {\n addRangeToSelection(newRange);\n }\n\n this.editor.runAsync(editor => {\n this.cleanUpAndRestoreSelection(tempDiv, selection, !isCut /* isCopy */);\n\n if (isCut) {\n editor.addUndoSnapshot(() => {\n const position = editor.deleteSelectedContent();\n editor.focus();\n editor.select(position);\n }, ChangeSource.Cut);\n }\n });\n }\n }\n }\n }\n\n private onPaste = (event: Event) => {\n let range: Range | null = null;\n if (this.editor) {\n const editor = this.editor;\n extractClipboardEvent(\n event as ClipboardEvent,\n clipboardData => {\n if (editor && !editor.isDisposed()) {\n editor.paste(clipboardData);\n }\n },\n {\n allowedCustomPasteType: this.state.allowedCustomPasteType,\n getTempDiv: () => {\n range = editor.getSelectionRange() ?? null;\n return this.getTempDiv(editor);\n },\n removeTempDiv: div => {\n if (range) {\n this.cleanUpAndRestoreSelection(div, range, false /* isCopy */);\n }\n },\n },\n this.editor.getSelectionRange() ?? undefined\n );\n }\n };\n\n private getTempDiv(editor: IEditor, forceInLightMode?: boolean) {\n const div = editor.getCustomData(\n 'CopyPasteTempDiv',\n () => {\n const tempDiv = createElement(\n KnownCreateElementDataIndex.CopyPasteTempDiv,\n editor.getDocument()\n ) as HTMLDivElement;\n\n editor.getDocument().body.appendChild(tempDiv);\n\n return tempDiv;\n },\n tempDiv => tempDiv.parentNode?.removeChild(tempDiv)\n );\n\n if (forceInLightMode) {\n div.style.backgroundColor = 'white';\n div.style.color = 'black';\n }\n\n div.style.display = '';\n div.focus();\n\n return div;\n }\n\n private cleanUpAndRestoreSelection(\n tempDiv: HTMLDivElement,\n range: Range | SelectionRangeEx,\n isCopy: boolean\n ) {\n if (!!(range)?.type || (range).type == 0) {\n const selection = range;\n switch (selection.type) {\n case SelectionRangeTypes.TableSelection:\n case SelectionRangeTypes.ImageSelection:\n this.editor?.select(selection);\n break;\n case SelectionRangeTypes.Normal:\n const range = selection.ranges?.[0];\n this.restoreRange(range, isCopy);\n break;\n }\n } else {\n this.restoreRange(range, isCopy);\n }\n\n tempDiv.style.backgroundColor = '';\n tempDiv.style.color = '';\n tempDiv.style.display = 'none';\n moveChildNodes(tempDiv);\n }\n\n private restoreRange(range: Range, isCopy: boolean) {\n if (range && this.editor) {\n if (isCopy && Browser.isAndroid) {\n range.collapse();\n }\n this.editor.select(range);\n }\n }\n\n private createTableRange(table: HTMLTableElement, selection: TableSelection) {\n const clonedVTable = new VTable(table as HTMLTableElement);\n clonedVTable.selection = selection;\n removeCellsOutsideSelection(clonedVTable);\n clonedVTable.writeBack();\n return createRange(clonedVTable.table);\n }\n\n private deleteTableContent(\n editor: IEditor,\n table: HTMLTableElement,\n selection: TableSelection\n ) {\n const selectedVTable = new VTable(table);\n selectedVTable.selection = selection;\n\n forEachSelectedCell(selectedVTable, cell => {\n if (cell?.td) {\n cell.td.innerHTML = editor.getTrustedHTMLHandler()('
                ');\n }\n });\n\n const wholeTableSelected = isWholeTableSelected(selectedVTable, selection);\n const isWholeColumnSelected =\n table.rows.length - 1 === selection.lastCell.y && selection.firstCell.y === 0;\n if (wholeTableSelected) {\n selectedVTable.edit(TableOperation.DeleteTable);\n selectedVTable.writeBack();\n } else if (isWholeColumnSelected) {\n selectedVTable.edit(TableOperation.DeleteColumn);\n selectedVTable.writeBack();\n }\n if (wholeTableSelected || isWholeColumnSelected) {\n table.style.removeProperty('width');\n table.style.removeProperty('height');\n }\n }\n\n private deleteImage(editor: IEditor, imageId: string) {\n editor.queryElements('#' + imageId, node => {\n editor.deleteNode(node);\n });\n }\n}\n","import { arrayPush, Browser, isCharacterValue } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContextMenuProvider,\n DOMEventHandler,\n DOMEventPluginState,\n EditorOptions,\n EditorPlugin,\n IEditor,\n Keys,\n PluginEventType,\n PluginWithState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * DOMEventPlugin handles customized DOM events, including:\n * 1. Keyboard event\n * 2. Mouse event\n * 3. IME state\n * 4. Drop event\n * 5. Focus and blur event\n * 6. Input event\n * 7. Scroll event\n * It contains special handling for Safari since Safari cannot get correct selection when onBlur event is triggered in editor.\n */\nexport default class DOMEventPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private state: DOMEventPluginState;\n\n /**\n * Construct a new instance of DOMEventPlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor(options: EditorOptions, contentDiv: HTMLDivElement) {\n this.state = {\n isInIME: false,\n scrollContainer: options.scrollContainer || contentDiv,\n selectionRange: null,\n stopPrintableKeyboardEventPropagation: !options.allowKeyboardEventPropagation,\n contextMenuProviders:\n options.plugins?.filter>(isContextMenuProvider) || [],\n tableSelectionRange: null,\n imageSelectionRange: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'DOMEvent';\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 const document = this.editor.getDocument();\n //Record\n const eventHandlers: Partial<\n { [P in keyof HTMLElementEventMap]: DOMEventHandler }\n > = {\n // 1. Keyboard event\n keypress: this.getEventHandler(PluginEventType.KeyPress),\n keydown: this.getEventHandler(PluginEventType.KeyDown),\n keyup: this.getEventHandler(PluginEventType.KeyUp),\n\n // 2. Mouse event\n mousedown: PluginEventType.MouseDown,\n contextmenu: this.onContextMenuEvent,\n\n // 3. IME state management\n compositionstart: () => (this.state.isInIME = true),\n compositionend: (rawEvent: CompositionEvent) => {\n this.state.isInIME = false;\n editor.triggerPluginEvent(PluginEventType.CompositionEnd, {\n rawEvent,\n });\n },\n\n // 4. Drag and Drop event\n dragstart: this.onDragStart,\n drop: this.onDrop,\n\n // 5. Focus management\n focus: this.onFocus,\n\n // 6. Input event\n [Browser.isIE ? 'textinput' : 'input']: this.getEventHandler(PluginEventType.Input),\n };\n\n // 7. onBlur handlers\n if (Browser.isSafari) {\n document.addEventListener('mousedown', this.onMouseDownDocument, true /*useCapture*/);\n document.addEventListener('keydown', this.onKeyDownDocument);\n document.defaultView?.addEventListener('blur', this.cacheSelection);\n } else if (Browser.isIEOrEdge) {\n type EventHandlersIE = {\n beforedeactivate: DOMEventHandler;\n };\n (eventHandlers as EventHandlersIE).beforedeactivate = this.cacheSelection;\n } else {\n eventHandlers.blur = this.cacheSelection;\n }\n\n this.disposer = editor.addDomEventHandler(>eventHandlers);\n\n // 8. Scroll event\n this.state.scrollContainer.addEventListener('scroll', this.onScroll);\n document.defaultView?.addEventListener('scroll', this.onScroll);\n document.defaultView?.addEventListener('resize', this.onScroll);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n const document = this.editor?.getDocument();\n if (document && Browser.isSafari) {\n document.removeEventListener(\n 'mousedown',\n this.onMouseDownDocument,\n true /*useCapture*/\n );\n document.removeEventListener('keydown', this.onKeyDownDocument);\n document.defaultView?.removeEventListener('blur', this.cacheSelection);\n }\n\n document?.defaultView?.removeEventListener('resize', this.onScroll);\n document?.defaultView?.removeEventListener('scroll', this.onScroll);\n this.state.scrollContainer.removeEventListener('scroll', this.onScroll);\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onDragStart = (e: Event) => {\n const dragEvent = e as DragEvent;\n const element = this.editor?.getElementAtCursor('*', dragEvent.target as Node);\n\n if (element && !element.isContentEditable) {\n dragEvent.preventDefault();\n }\n };\n private onDrop = () => {\n this.editor?.runAsync(editor => {\n editor.addUndoSnapshot(() => {}, ChangeSource.Drop);\n });\n };\n\n private onFocus = () => {\n const { table, coordinates } = this.state.tableSelectionRange || {};\n const { image } = this.state.imageSelectionRange || {};\n\n if (table && coordinates) {\n this.editor?.select(table, coordinates);\n } else if (image) {\n this.editor?.select(image);\n } else if (this.state.selectionRange) {\n this.editor?.select(this.state.selectionRange);\n }\n\n this.state.selectionRange = null;\n };\n private onKeyDownDocument = (event: KeyboardEvent) => {\n if (event.which == Keys.TAB && !event.defaultPrevented) {\n this.cacheSelection();\n }\n };\n\n private onMouseDownDocument = (event: MouseEvent) => {\n if (\n this.editor &&\n !this.state.selectionRange &&\n !this.editor.contains(event.target as Node)\n ) {\n this.cacheSelection();\n }\n };\n\n private cacheSelection = () => {\n if (!this.state.selectionRange && this.editor) {\n this.state.selectionRange = this.editor.getSelectionRange(false /*tryGetFromCache*/);\n }\n };\n private onScroll = (e: Event) => {\n this.editor?.triggerPluginEvent(PluginEventType.Scroll, {\n rawEvent: e,\n scrollContainer: this.state.scrollContainer,\n });\n };\n\n private getEventHandler(eventType: PluginEventType): DOMEventHandler {\n const beforeDispatch = (event: Event) =>\n eventType == PluginEventType.Input\n ? this.onInputEvent(event)\n : this.onKeyboardEvent(event);\n\n return this.state.stopPrintableKeyboardEventPropagation\n ? {\n pluginEventType: eventType,\n beforeDispatch,\n }\n : eventType;\n }\n\n private onKeyboardEvent = (event: KeyboardEvent) => {\n if (isCharacterValue(event) || (event.which >= Keys.PAGEUP && event.which <= Keys.DOWN)) {\n // Stop propagation for Character keys and Up/Down/Left/Right/Home/End/PageUp/PageDown\n // since editor already handles these keys and no need to propagate to parents\n event.stopPropagation();\n }\n };\n\n private onInputEvent = (event: InputEvent) => {\n event.stopPropagation();\n };\n\n private onContextMenuEvent = (event: MouseEvent) => {\n const allItems: any[] = [];\n const searcher = this.editor?.getContentSearcherOfCursor();\n const elementBeforeCursor = searcher?.getInlineElementBefore();\n\n let eventTargetNode = event.target as Node;\n if (event.button != 2 && elementBeforeCursor) {\n eventTargetNode = elementBeforeCursor.getContainerNode();\n }\n this.state.contextMenuProviders.forEach(provider => {\n const items = provider.getContextMenuItems(eventTargetNode) ?? [];\n if (items?.length > 0) {\n if (allItems.length > 0) {\n allItems.push(null);\n }\n arrayPush(allItems, items);\n }\n });\n this.editor?.triggerPluginEvent(PluginEventType.ContextMenu, {\n rawEvent: event,\n items: allItems,\n });\n };\n}\n\nfunction isContextMenuProvider(source: EditorPlugin): source is ContextMenuProvider {\n return !!(>source)?.getContextMenuItems;\n}\n","import { isCtrlOrMetaPressed } from 'roosterjs-editor-dom';\nimport {\n EditPluginState,\n GenericContentEditFeature,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Edit Component helps handle Content edit features\n */\nexport default class EditPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: EditPluginState;\n\n /**\n * Construct a new instance of EditPlugin\n * @param options The editor options\n */\n constructor() {\n this.state = {\n features: {},\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Edit';\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 /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n let hasFunctionKey = false;\n let features: GenericContentEditFeature[] | null = null;\n let ctrlOrMeta = false;\n const isKeyDownEvent = event.eventType == PluginEventType.KeyDown;\n\n if (isKeyDownEvent) {\n const rawEvent = event.rawEvent;\n const range = this.editor?.getSelectionRange();\n\n ctrlOrMeta = isCtrlOrMetaPressed(rawEvent);\n hasFunctionKey = ctrlOrMeta || rawEvent.altKey;\n features =\n this.state.features[rawEvent.which] ||\n (range && !range.collapsed && this.state.features[Keys.RANGE]);\n } else if (event.eventType == PluginEventType.ContentChanged) {\n features = this.state.features[Keys.CONTENTCHANGED];\n }\n\n for (let i = 0; features && i < features?.length; i++) {\n const feature = features[i];\n if (\n (feature.allowFunctionKeys || !hasFunctionKey) &&\n this.editor &&\n feature.shouldHandleEvent(event, this.editor, ctrlOrMeta)\n ) {\n feature.handleEvent(event, this.editor);\n if (isKeyDownEvent) {\n event.handledByEditFeature = true;\n }\n break;\n }\n }\n }\n}\n","import {\n inlineEntityOnPluginEvent,\n normalizeDelimitersInEditor,\n} from './utils/inlineEntityOnPluginEvent';\nimport {\n Browser,\n commitEntity,\n getEntityFromElement,\n getEntitySelector,\n isCharacterValue,\n toArray,\n arrayPush,\n createElement,\n addRangeToSelection,\n createRange,\n isBlockElement,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContentChangedEvent,\n ContentPosition,\n Entity,\n EntityClasses,\n EntityOperation,\n EntityOperationEvent,\n EntityPluginState,\n KnownEntityItem,\n ExperimentalFeatures,\n HtmlSanitizerOptions,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginMouseUpEvent,\n PluginWithState,\n QueryScope,\n} from 'roosterjs-editor-types';\nimport type { CompatibleEntityOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst ENTITY_ID_REGEX = /_(\\d{1,8})$/;\n\nconst ENTITY_CSS_REGEX = '^' + EntityClasses.ENTITY_INFO_NAME + '$';\nconst ENTITY_ID_CSS_REGEX = '^' + EntityClasses.ENTITY_ID_PREFIX;\nconst ENTITY_TYPE_CSS_REGEX = '^' + EntityClasses.ENTITY_TYPE_PREFIX;\nconst ENTITY_READONLY_CSS_REGEX = '^' + EntityClasses.ENTITY_READONLY_PREFIX;\nconst ALLOWED_CSS_CLASSES = [\n ENTITY_CSS_REGEX,\n ENTITY_ID_CSS_REGEX,\n ENTITY_TYPE_CSS_REGEX,\n ENTITY_READONLY_CSS_REGEX,\n];\nconst REMOVE_ENTITY_OPERATIONS: (EntityOperation | CompatibleEntityOperation)[] = [\n EntityOperation.Overwrite,\n EntityOperation.PartialOverwrite,\n EntityOperation.RemoveFromStart,\n EntityOperation.RemoveFromEnd,\n];\n\n/**\n * @internal\n * Entity Plugin helps handle all operations related to an entity and generate entity specified events\n */\nexport default class EntityPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: EntityPluginState;\n\n /**\n * Construct a new instance of EntityPlugin\n */\n constructor() {\n this.state = {\n entityMap: {},\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Entity';\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 this.state.entityMap = {};\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\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 PluginEventType.MouseUp:\n this.handleMouseUpEvent(event);\n break;\n case PluginEventType.KeyDown:\n this.handleKeyDownEvent(event.rawEvent);\n break;\n case PluginEventType.BeforeCutCopy:\n if (event.isCut) {\n this.handleCutEvent(event.rawEvent);\n }\n break;\n case PluginEventType.BeforePaste:\n this.handleBeforePasteEvent(event.sanitizingOption);\n break;\n case PluginEventType.ContentChanged:\n this.handleContentChangedEvent(event);\n break;\n case PluginEventType.EditorReady:\n this.handleContentChangedEvent();\n break;\n case PluginEventType.ExtractContentWithDom:\n this.handleExtractContentWithDomEvent(event.clonedRoot);\n break;\n case PluginEventType.ContextMenu:\n this.handleContextMenuEvent(event.rawEvent);\n break;\n case PluginEventType.EntityOperation:\n this.handleEntityOperationEvent(event);\n break;\n }\n\n if (this.editor?.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)) {\n inlineEntityOnPluginEvent(event, this.editor);\n }\n }\n\n private handleContextMenuEvent(event: UIEvent) {\n const node = event.target as Node;\n const entityElement = node && this.editor?.getElementAtCursor(getEntitySelector(), node);\n\n if (entityElement) {\n event.preventDefault();\n this.triggerEvent(entityElement, EntityOperation.ContextMenu, event);\n }\n }\n\n private handleCutEvent = (event: ClipboardEvent) => {\n const range = this.editor?.getSelectionRange();\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(event);\n }\n };\n\n private handleMouseUpEvent(event: PluginMouseUpEvent) {\n const { rawEvent, isClicking } = event;\n const node = rawEvent.target as Node;\n let entityElement: HTMLElement | null;\n\n if (\n this.editor &&\n isClicking &&\n node &&\n !!(entityElement = this.editor.getElementAtCursor(getEntitySelector(), node))\n ) {\n this.triggerEvent(entityElement, EntityOperation.Click, rawEvent);\n\n workaroundSelectionIssueForIE(this.editor);\n }\n }\n\n private handleKeyDownEvent(event: KeyboardEvent) {\n if (\n isCharacterValue(event) ||\n event.which == Keys.BACKSPACE ||\n event.which == Keys.DELETE ||\n event.which == Keys.ENTER\n ) {\n const range = this.editor?.getSelectionRange();\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(event);\n }\n }\n }\n\n private handleBeforePasteEvent(sanitizingOption: HtmlSanitizerOptions) {\n const range = this.editor?.getSelectionRange();\n\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(null! /*rawEvent*/);\n }\n\n if (sanitizingOption.additionalAllowedCssClasses) {\n arrayPush(sanitizingOption.additionalAllowedCssClasses, ALLOWED_CSS_CLASSES);\n }\n }\n\n private handleContentChangedEvent(event?: ContentChangedEvent) {\n let shouldNormalizeDelimiters: boolean = false;\n // 1. find removed entities\n getObjectKeys(this.state.entityMap).forEach(id => {\n const item = this.state.entityMap[id];\n const element = item.element;\n\n if (this.editor && !item.isDeleted && !this.editor.contains(element)) {\n item.isDeleted = true;\n\n this.triggerEvent(element, EntityOperation.Overwrite);\n\n if (\n !shouldNormalizeDelimiters &&\n !element.isContentEditable &&\n !isBlockElement(element)\n ) {\n shouldNormalizeDelimiters = true;\n }\n }\n });\n\n // 2. collect all new entities\n const newEntities =\n event?.source == ChangeSource.InsertEntity && event.data\n ? [event.data as Entity]\n : this.getExistingEntities().filter(entity => {\n const item = this.state.entityMap[entity.id];\n\n return !item || item.element != entity.wrapper || item.isDeleted;\n });\n\n // 3. Add new entities to known entity list, and hydrate\n newEntities.forEach(entity => {\n const { wrapper, type, id, isReadonly } = entity;\n\n entity.id = this.ensureUniqueId(type, id, wrapper);\n commitEntity(wrapper, type, isReadonly, entity.id); // Use entity.id here because it is newly updated\n this.handleNewEntity(entity);\n });\n\n if (\n shouldNormalizeDelimiters &&\n this.editor?.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n normalizeDelimitersInEditor(this.editor);\n }\n }\n\n private handleEntityOperationEvent(event: EntityOperationEvent) {\n if (this.editor && REMOVE_ENTITY_OPERATIONS.indexOf(event.operation) >= 0) {\n const item = this.state.entityMap[event.entity.id];\n\n if (item) {\n item.isDeleted = true;\n }\n }\n }\n\n private handleExtractContentWithDomEvent(root: HTMLElement) {\n toArray(root.querySelectorAll(getEntitySelector())).forEach(element => {\n element.removeAttribute('contentEditable');\n\n this.triggerEvent(element as HTMLElement, EntityOperation.ReplaceTemporaryContent);\n });\n }\n\n private checkRemoveEntityForRange(event: Event) {\n const editableEntityElements: HTMLElement[] = [];\n const selector = getEntitySelector();\n this.editor?.queryElements(selector, QueryScope.OnSelection, element => {\n if (element.isContentEditable) {\n editableEntityElements.push(element);\n } else {\n this.triggerEvent(element, EntityOperation.Overwrite, event);\n }\n });\n\n // For editable entities, we need to check if it is fully or partially covered by current selection,\n // and trigger different events;\n if (this.editor && editableEntityElements.length > 0) {\n const inSelectionEntityElements = this.editor.queryElements(\n selector,\n QueryScope.InSelection\n );\n editableEntityElements.forEach(element => {\n const isFullyCovered = inSelectionEntityElements.indexOf(element) >= 0;\n this.triggerEvent(\n element,\n isFullyCovered ? EntityOperation.Overwrite : EntityOperation.PartialOverwrite,\n event\n );\n });\n }\n }\n\n private triggerEvent(element: HTMLElement, operation: EntityOperation, rawEvent?: Event) {\n const entity = element && getEntityFromElement(element);\n\n return entity\n ? this.editor?.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent,\n entity,\n })\n : null;\n }\n\n private handleNewEntity(entity: Entity) {\n const { wrapper } = entity;\n const event = this.triggerEvent(wrapper, EntityOperation.NewEntity);\n\n const newItem: KnownEntityItem = {\n element: entity.wrapper,\n };\n\n if (event?.shouldPersist) {\n newItem.canPersist = true;\n }\n\n this.state.entityMap[entity.id] = newItem;\n }\n\n private getExistingEntities(): Entity[] {\n return (\n this.editor\n ?.queryElements(getEntitySelector())\n .map(getEntityFromElement)\n .filter((x): x is Entity => !!x) ?? []\n );\n }\n\n private ensureUniqueId(type: string, id: string, wrapper: HTMLElement) {\n const match = ENTITY_ID_REGEX.exec(id);\n const baseId = (match ? id.substr(0, id.length - match[0].length) : id) || type;\n\n // Make sure entity id is unique\n let newId = '';\n\n for (let num = (match && parseInt(match[1])) || 0; ; num++) {\n newId = num > 0 ? `${baseId}_${num}` : baseId;\n\n const item = this.state.entityMap[newId];\n\n if (!item || item.element == wrapper) {\n break;\n }\n }\n\n return newId;\n }\n}\n\n/**\n * IE will show a resize border around the readonly content within content editable DIV\n * This is a workaround to remove it by temporarily move focus out of editor\n */\nconst workaroundSelectionIssueForIE = Browser.isIE\n ? (editor: IEditor) => {\n editor.runAsync(editor => {\n const workaroundButton = editor.getCustomData('ENTITY_IE_FOCUS_BUTTON', () => {\n const button = createElement(\n {\n tag: 'button',\n style: 'overflow:hidden;position:fixed;width:0;height:0;top:-1000px',\n },\n editor.getDocument()\n ) as HTMLElement;\n button.onblur = () => {\n button.style.display = 'none';\n };\n\n editor.insertNode(button, {\n position: ContentPosition.Outside,\n });\n\n return button;\n });\n\n workaroundButton.style.display = '';\n addRangeToSelection(createRange(workaroundButton, 0));\n });\n }\n : () => {};\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\n\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst Escape = 'Escape';\nconst Delete = 'Delete';\nconst mouseLeftButton = 0;\n\n/**\n * Detect image selection and help highlight the image\n */\nexport default class ImageSelection implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ImageSelection';\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?.select(null);\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case PluginEventType.EnteredShadowEdit:\n case PluginEventType.LeavingShadowEdit:\n const selection = this.editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.ImageSelection) {\n this.editor.select(selection.image);\n }\n break;\n\n case PluginEventType.MouseUp:\n const target = event.rawEvent.target;\n if (\n safeInstanceOf(target, 'HTMLImageElement') &&\n target.isContentEditable &&\n event.rawEvent.button === mouseLeftButton\n ) {\n this.editor.select(target);\n }\n break;\n case PluginEventType.MouseDown:\n const mouseTarget = event.rawEvent.target;\n const mouseSelection = this.editor.getSelectionRangeEx();\n if (\n mouseSelection &&\n mouseSelection.type === SelectionRangeTypes.ImageSelection &&\n mouseSelection.image !== mouseTarget\n ) {\n this.editor.select(null);\n }\n break;\n case PluginEventType.KeyUp:\n const key = event.rawEvent.key;\n const keyDownSelection = this.editor.getSelectionRangeEx();\n if (keyDownSelection.type === SelectionRangeTypes.ImageSelection) {\n if (key === Escape) {\n this.editor.select(keyDownSelection.image, PositionType.Before);\n this.editor.getSelectionRange()?.collapse();\n event.rawEvent.stopPropagation();\n } else if (key === Delete) {\n this.editor.deleteNode(keyDownSelection.image);\n event.rawEvent.preventDefault();\n } else {\n this.editor.select(keyDownSelection.ranges[0]);\n }\n }\n break;\n case PluginEventType.ContextMenu:\n const contextMenuTarget = event.rawEvent.target;\n const actualSelection = this.editor.getSelectionRangeEx();\n if (\n safeInstanceOf(contextMenuTarget, 'HTMLImageElement') &&\n (actualSelection.type !== SelectionRangeTypes.ImageSelection ||\n actualSelection.image !== contextMenuTarget)\n ) {\n this.editor.select(contextMenuTarget);\n }\n }\n }\n }\n}\n","import { Browser, getObjectKeys, setColor } from 'roosterjs-editor-dom';\nimport {\n DocumentCommand,\n EditorOptions,\n IEditor,\n LifecyclePluginState,\n PluginEventType,\n PluginWithState,\n PluginEvent,\n ChangeSource,\n} from 'roosterjs-editor-types';\n\nconst CONTENT_EDITABLE_ATTRIBUTE_NAME = 'contenteditable';\nconst COMMANDS: Record = Browser.isFirefox\n ? {\n /**\n * Disable these object resizing for firefox since other browsers don't have these behaviors\n */\n [DocumentCommand.EnableObjectResizing]: (false as any) as string,\n [DocumentCommand.EnableInlineTableEditing]: (false as any) as string,\n }\n : Browser.isIE\n ? {\n /**\n * Change the default paragraph separator to DIV. This is mainly for IE since its default setting is P\n */\n [DocumentCommand.DefaultParagraphSeparator]: 'div',\n\n /**\n * Disable auto link feature in IE since we have our own implementation\n */\n [DocumentCommand.AutoUrlDetect]: (false as any) as string,\n }\n : {};\n\nconst DARK_MODE_DEFAULT_FORMAT = {\n backgroundColors: {\n darkModeColor: 'rgb(51,51,51)',\n lightModeColor: 'rgb(255,255,255)',\n },\n textColors: {\n darkModeColor: 'rgb(255,255,255)',\n lightModeColor: 'rgb(0,0,0)',\n },\n};\n\n/**\n * @internal\n * Lifecycle plugin handles editor initialization and disposing\n */\nexport default class LifecyclePlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: LifecyclePluginState;\n private initialContent: string;\n private initializer: (() => void) | null = null;\n private disposer: (() => void) | null = null;\n private adjustColor: () => void;\n\n /**\n * Construct a new instance of LifecyclePlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor(options: EditorOptions, contentDiv: HTMLDivElement) {\n this.initialContent = options.initialContent || contentDiv.innerHTML || '';\n\n // Make the container editable and set its selection styles\n if (contentDiv.getAttribute(CONTENT_EDITABLE_ATTRIBUTE_NAME) === null) {\n this.initializer = () => {\n contentDiv.contentEditable = 'true';\n contentDiv.style.userSelect = 'text';\n contentDiv.style.webkitUserSelect = 'text';\n };\n this.disposer = () => {\n contentDiv.style.userSelect = '';\n contentDiv.style.webkitUserSelect = '';\n contentDiv.removeAttribute(CONTENT_EDITABLE_ATTRIBUTE_NAME);\n };\n }\n this.adjustColor = options.doNotAdjustEditorColor\n ? () => {}\n : () => {\n const { textColors, backgroundColors } = DARK_MODE_DEFAULT_FORMAT;\n const { isDarkMode } = this.state;\n const darkColorHandler = this.editor?.getDarkColorHandler();\n setColor(\n contentDiv,\n textColors,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n setColor(\n contentDiv,\n backgroundColors,\n true /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n };\n\n const getDarkColor = options.getDarkColor ?? ((color: string) => color);\n const defaultFormat = options.defaultFormat ? { ...options.defaultFormat } : null;\n\n if (defaultFormat) {\n if (defaultFormat.textColor && !defaultFormat.textColors) {\n defaultFormat.textColors = {\n lightModeColor: defaultFormat.textColor,\n darkModeColor: getDarkColor(defaultFormat.textColor),\n };\n delete defaultFormat.textColor;\n }\n\n if (defaultFormat.backgroundColor && !defaultFormat.backgroundColors) {\n defaultFormat.backgroundColors = {\n lightModeColor: defaultFormat.backgroundColor,\n darkModeColor: getDarkColor(defaultFormat.backgroundColor),\n };\n delete defaultFormat.backgroundColor;\n }\n }\n\n this.state = {\n customData: {},\n defaultFormat,\n isDarkMode: !!options.inDarkMode,\n getDarkColor,\n onExternalContentTransform: options.onExternalContentTransform ?? null,\n experimentalFeatures: options.experimentalFeatures || [],\n shadowEditFragment: null,\n shadowEditEntities: null,\n shadowEditSelectionPath: null,\n shadowEditTableSelectionPath: null,\n shadowEditImageSelectionPath: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Lifecycle';\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 // Ensure initial content and its format\n this.editor.setContent(this.initialContent, false /*triggerContentChangedEvent*/);\n\n // Set content DIV to be editable\n this.initializer?.();\n\n // Set editor background color for dark mode\n this.adjustColor();\n\n // Do proper change for browsers to disable some browser-specified behaviors.\n this.adjustBrowserBehavior();\n\n // Let other plugins know that we are ready\n this.editor.triggerPluginEvent(PluginEventType.EditorReady, {}, true /*broadcast*/);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor?.triggerPluginEvent(PluginEventType.BeforeDispose, {}, true /*broadcast*/);\n\n getObjectKeys(this.state.customData).forEach(key => {\n const data = this.state.customData[key];\n\n if (data && data.disposer) {\n data.disposer(data.value);\n }\n\n delete this.state.customData[key];\n });\n\n if (this.disposer) {\n this.disposer();\n this.disposer = null;\n this.initializer = null;\n }\n\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n event.eventType == PluginEventType.ContentChanged &&\n (event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode)\n ) {\n this.state.isDarkMode = event.source == ChangeSource.SwitchToDarkMode;\n this.adjustColor();\n }\n }\n\n private adjustBrowserBehavior() {\n getObjectKeys(COMMANDS).forEach(command => {\n // Catch any possible exception since this should not block the initialization of editor\n try {\n this.editor?.getDocument().execCommand(command, false, COMMANDS[command]);\n } catch {}\n });\n }\n}\n","import { EditorPlugin, IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * MouseUpPlugin help trigger MouseUp event even when mouse up happens outside editor\n * as long as the mouse was pressed within Editor before\n */\nexport default class MouseUpPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private mouseUpEventListerAdded: boolean = false;\n private mouseDownX: number | null = null;\n private mouseDownY: number | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'MouseUp';\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.removeMouseUpEventListener();\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n this.editor &&\n event.eventType == PluginEventType.MouseDown &&\n !this.mouseUpEventListerAdded\n ) {\n this.editor\n .getDocument()\n .addEventListener('mouseup', this.onMouseUp, true /*setCapture*/);\n this.mouseUpEventListerAdded = true;\n this.mouseDownX = event.rawEvent.pageX;\n this.mouseDownY = event.rawEvent.pageY;\n }\n }\n private removeMouseUpEventListener() {\n if (this.editor && this.mouseUpEventListerAdded) {\n this.mouseUpEventListerAdded = false;\n this.editor.getDocument().removeEventListener('mouseup', this.onMouseUp, true);\n }\n }\n\n private onMouseUp = (rawEvent: MouseEvent) => {\n if (this.editor) {\n this.removeMouseUpEventListener();\n this.editor.triggerPluginEvent(PluginEventType.MouseUp, {\n rawEvent,\n isClicking: this.mouseDownX == rawEvent.pageX && this.mouseDownY == rawEvent.pageY,\n });\n }\n };\n}\n","import {\n changeElementTag,\n getTagOfNode,\n moveChildNodes,\n safeInstanceOf,\n toArray,\n} from 'roosterjs-editor-dom';\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * TODO: Rename this plugin since it is not only for table now\n *\n * NormalizeTable plugin makes sure each table in editor has TBODY/THEAD/TFOOT tag around TR tags\n *\n * When we retrieve HTML content using innerHTML, browser will always add TBODY around TR nodes if there is not.\n * This causes some issue when we restore the HTML content with selection path since the selection path is\n * deeply coupled with DOM structure. So we need to always make sure there is already TBODY tag whenever\n * new table is inserted, to make sure the selection path we created is correct.\n */\nexport default class NormalizeTablePlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'NormalizeTable';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case PluginEventType.EditorReady:\n case PluginEventType.ContentChanged:\n if (this.editor) {\n this.normalizeTables(this.editor.queryElements('table'));\n }\n break;\n\n case PluginEventType.BeforePaste:\n this.normalizeTables(toArray(event.fragment.querySelectorAll('table')));\n break;\n\n case PluginEventType.MouseDown:\n this.normalizeTableFromEvent(event.rawEvent);\n break;\n\n case PluginEventType.KeyDown:\n if (event.rawEvent.shiftKey) {\n this.normalizeTableFromEvent(event.rawEvent);\n }\n break;\n\n case PluginEventType.ExtractContentWithDom:\n normalizeListsForExport(event.clonedRoot);\n break;\n }\n }\n\n private normalizeTableFromEvent(event: KeyboardEvent | MouseEvent) {\n const table = this.editor?.getElementAtCursor('table', event.target as Node);\n\n if (table) {\n this.normalizeTables([table]);\n }\n }\n\n private normalizeTables(tables: HTMLTableElement[]) {\n if (this.editor && tables.length > 0) {\n const rangeEx = this.editor.getSelectionRangeEx();\n const { startContainer, endContainer, startOffset, endOffset } =\n (rangeEx?.type == SelectionRangeTypes.Normal && rangeEx.ranges[0]) || {};\n\n const isChanged = normalizeTables(tables);\n\n if (isChanged) {\n if (\n startContainer &&\n endContainer &&\n typeof startOffset === 'number' &&\n typeof endOffset === 'number'\n ) {\n this.editor.select(startContainer, startOffset, endContainer, endOffset);\n } else if (\n rangeEx?.type == SelectionRangeTypes.TableSelection &&\n rangeEx.coordinates\n ) {\n this.editor.select(rangeEx.table, rangeEx.coordinates);\n }\n }\n }\n }\n}\n\nfunction normalizeTables(tables: HTMLTableElement[]) {\n let isDOMChanged = false;\n tables.forEach(table => {\n let tbody: HTMLTableSectionElement | null = null;\n\n for (let child = table.firstChild; child; child = child.nextSibling) {\n const tag = getTagOfNode(child);\n switch (tag) {\n case 'TR':\n if (!tbody) {\n tbody = table.ownerDocument.createElement('tbody');\n table.insertBefore(tbody, child);\n }\n\n tbody.appendChild(child);\n child = tbody;\n isDOMChanged = true;\n\n break;\n case 'TBODY':\n if (tbody) {\n moveChildNodes(tbody, child, true /*keepExistingChildren*/);\n child.parentNode?.removeChild(child);\n child = tbody;\n isDOMChanged = true;\n } else {\n tbody = child as HTMLTableSectionElement;\n }\n break;\n default:\n tbody = null;\n break;\n }\n }\n\n const colgroups = table.querySelectorAll('colgroup');\n const thead = table.querySelector('thead');\n if (thead) {\n colgroups.forEach(colgroup => {\n if (!thead.contains(colgroup)) {\n thead.appendChild(colgroup);\n }\n });\n }\n });\n\n return isDOMChanged;\n}\n\nfunction normalizeListsForExport(root: ParentNode) {\n toArray(root.querySelectorAll('li')).forEach(li => {\n const prevElement = li.previousSibling;\n\n if (li.style.display == 'block' && safeInstanceOf(prevElement, 'HTMLLIElement')) {\n li.style.removeProperty('display');\n\n prevElement.appendChild(changeElementTag(li, 'div'));\n }\n });\n}\n","import { isCharacterValue, Position, setColor } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n IEditor,\n Keys,\n NodePosition,\n PendingFormatStatePluginState,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * @internal\n * PendingFormatStatePlugin handles pending format state management\n */\nexport default class PendingFormatStatePlugin\n implements PluginWithState {\n private editor: IEditor | null = null;\n private state: PendingFormatStatePluginState;\n\n /**\n * Construct a new instance of PendingFormatStatePlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor() {\n this.state = {\n pendableFormatPosition: null,\n pendableFormatState: null,\n pendableFormatSpan: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'PendingFormatState';\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 this.clear();\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\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 PluginEventType.PendingFormatStateChanged:\n // Got PendingFormatStateChanged event, cache current position and pending format if a format is passed in\n // otherwise clear existing pending format.\n if (event.formatState) {\n this.state.pendableFormatPosition = this.getCurrentPosition();\n this.state.pendableFormatState = event.formatState;\n this.state.pendableFormatSpan = event.formatCallback\n ? this.createPendingFormatSpan(event.formatCallback)\n : null;\n } else {\n this.clear();\n }\n\n break;\n case PluginEventType.KeyDown:\n case PluginEventType.MouseDown:\n case PluginEventType.ContentChanged:\n let currentPosition: NodePosition | null = null;\n if (\n this.editor &&\n event.eventType == PluginEventType.KeyDown &&\n isCharacterValue(event.rawEvent) &&\n this.state.pendableFormatSpan\n ) {\n this.state.pendableFormatSpan.removeAttribute('contentEditable');\n this.editor.insertNode(this.state.pendableFormatSpan);\n this.editor.select(\n this.state.pendableFormatSpan,\n PositionType.Begin,\n this.state.pendableFormatSpan,\n PositionType.End\n );\n this.clear();\n } else if (\n (event.eventType == PluginEventType.KeyDown &&\n event.rawEvent.which >= Keys.PAGEUP &&\n event.rawEvent.which <= Keys.DOWN) ||\n (this.state.pendableFormatPosition &&\n (currentPosition = this.getCurrentPosition()) &&\n !this.state.pendableFormatPosition.equalTo(currentPosition)) ||\n (event.eventType == PluginEventType.ContentChanged &&\n (event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode))\n ) {\n // If content or position is changed (by keyboard, mouse, or code),\n // check if current position is still the same with the cached one (if exist),\n // and clear cached format if position is changed since it is out-of-date now\n this.clear();\n }\n\n break;\n }\n }\n\n private clear() {\n this.state.pendableFormatPosition = null;\n this.state.pendableFormatState = null;\n this.state.pendableFormatSpan = null;\n }\n\n private getCurrentPosition() {\n let range = this.editor?.getSelectionRange();\n return (range && Position.getStart(range).normalize()) ?? null;\n }\n\n private createPendingFormatSpan(\n callback: (element: HTMLElement, isInnerNode?: boolean) => any\n ) {\n let span = this.state.pendableFormatSpan;\n\n if (!span && this.editor) {\n const currentStyle = this.editor.getStyleBasedFormatState();\n const doc = this.editor.getDocument();\n const isDarkMode = this.editor.isDarkMode();\n\n span = doc.createElement('span');\n span.contentEditable = 'true';\n span.appendChild(doc.createTextNode(ZERO_WIDTH_SPACE));\n\n span.style.setProperty('font-family', currentStyle.fontName ?? null);\n span.style.setProperty('font-size', currentStyle.fontSize ?? null);\n\n const darkColorHandler = this.editor.getDarkColorHandler();\n\n if (currentStyle.textColors || currentStyle.textColor) {\n setColor(\n span,\n (currentStyle.textColors || currentStyle.textColor)!,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n }\n\n if (currentStyle.backgroundColors || currentStyle.backgroundColor) {\n setColor(\n span,\n (currentStyle.backgroundColors || currentStyle.backgroundColor)!,\n true /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n }\n }\n\n if (span) {\n callback(span);\n }\n\n return span;\n }\n}\n","import { EditorPlugin, IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport {\n Browser,\n findClosestElementAncestor,\n getTagOfNode,\n isCtrlOrMetaPressed,\n Position,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Typing Component helps to ensure typing is always happening under a DOM container\n */\nexport default class TypeInContainerPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TypeInContainer';\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 private isRangeEmpty(range: Range) {\n if (\n range.collapsed &&\n range.startContainer.nodeType === Node.ELEMENT_NODE &&\n getTagOfNode(range.startContainer) == 'DIV' &&\n !range.startContainer.firstChild\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n // We need to check if the ctrl key or the meta key is pressed,\n // browsers like Safari fire the \"keypress\" event when the meta key is pressed.\n if (\n event.eventType == PluginEventType.KeyPress &&\n this.editor &&\n !(event.rawEvent && isCtrlOrMetaPressed(event.rawEvent))\n ) {\n // If normalization was not possible before the keypress,\n // check again after the keyboard event has been processed by browser native behavior.\n //\n // This handles the case where the keyboard event that first inserts content happens when\n // there is already content under the selection (e.g. Ctrl+a -> type new content).\n //\n // Only schedule when the range is not collapsed to catch this edge case.\n let range = this.editor.getSelectionRange();\n\n const styledAncestor =\n range &&\n findClosestElementAncestor(range.startContainer, undefined /* root */, '[style]');\n\n if (!range || (!this.isRangeEmpty(range) && this.editor.contains(styledAncestor))) {\n return;\n }\n\n if (range.collapsed) {\n this.editor.ensureTypeInContainer(Position.getStart(range), event.rawEvent);\n } else {\n const callback = () => {\n const focusedPosition = this.editor?.getFocusedPosition();\n if (focusedPosition) {\n this.editor?.ensureTypeInContainer(focusedPosition, event.rawEvent);\n }\n };\n\n if (Browser.isMobileOrTablet) {\n this.editor.getDocument().defaultView?.setTimeout(callback, 100);\n } else {\n this.editor.runAsync(callback);\n }\n }\n }\n }\n}\n","import {\n ChangeSource,\n ContentChangedEvent,\n EditorOptions,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n Snapshot,\n UndoPluginState,\n UndoSnapshotsService,\n} from 'roosterjs-editor-types';\nimport {\n addSnapshotV2,\n canMoveCurrentSnapshot,\n clearProceedingSnapshotsV2,\n createSnapshots,\n isCtrlOrMetaPressed,\n moveCurrentSnapshot,\n canUndoAutoComplete,\n} from 'roosterjs-editor-dom';\n\n// Max stack size that cannot be exceeded. When exceeded, old undo history will be dropped\n// to keep size under limit. This is kept at 10MB\nconst MAX_SIZE_LIMIT = 1e7;\n\n/**\n * @internal\n * Provides snapshot based undo service for Editor\n */\nexport default class UndoPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private lastKeyPress: number | null = null;\n private state: UndoPluginState;\n\n /**\n * Construct a new instance of UndoPlugin\n * @param options The wrapper of the state object\n */\n constructor(options: EditorOptions) {\n this.state = {\n snapshotsService:\n options.undoMetadataSnapshotService ||\n createUndoSnapshotServiceBridge(options.undoSnapshotService) ||\n createUndoSnapshots(),\n isRestoring: false,\n hasNewContent: false,\n isNested: false,\n autoCompletePosition: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Undo';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * @param event The event to check\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n event.eventType == PluginEventType.KeyDown &&\n event.rawEvent.which == Keys.BACKSPACE &&\n !event.rawEvent.ctrlKey &&\n this.canUndoAutoComplete()\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent): void {\n // if editor is in IME, don't do anything\n if (!this.editor || this.editor.isInIME()) {\n return;\n }\n\n switch (event.eventType) {\n case PluginEventType.EditorReady:\n const undoState = this.editor.getUndoState();\n if (!undoState.canUndo && !undoState.canRedo) {\n // Only add initial snapshot when there is no existing snapshot\n // Otherwise preserved undo/redo state may be ruined\n this.addUndoSnapshot();\n }\n break;\n case PluginEventType.KeyDown:\n this.onKeyDown(event.rawEvent);\n break;\n case PluginEventType.KeyPress:\n this.onKeyPress(event.rawEvent);\n break;\n case PluginEventType.CompositionEnd:\n this.clearRedoForInput();\n this.addUndoSnapshot();\n break;\n case PluginEventType.ContentChanged:\n this.onContentChanged(event);\n break;\n case PluginEventType.BeforeKeyboardEditing:\n this.onBeforeKeyboardEditing(event.rawEvent);\n break;\n }\n }\n\n private onKeyDown(evt: KeyboardEvent): void {\n // Handle backspace/delete when there is a selection to take a snapshot\n // since we want the state prior to deletion restorable\n // Ignore if keycombo is ALT+BACKSPACE\n if ((evt.which == Keys.BACKSPACE && !evt.altKey) || evt.which == Keys.DELETE) {\n if (evt.which == Keys.BACKSPACE && !evt.ctrlKey && this.canUndoAutoComplete()) {\n evt.preventDefault();\n this.editor?.undo();\n this.state.autoCompletePosition = null;\n this.lastKeyPress = evt.which;\n } else if (!evt.defaultPrevented) {\n let selectionRange = this.editor?.getSelectionRange();\n\n // Add snapshot when\n // 1. Something has been selected (not collapsed), or\n // 2. It has a different key code from the last keyDown event (to prevent adding too many snapshot when keeping press the same key), or\n // 3. Ctrl/Meta key is pressed so that a whole word will be deleted\n if (\n selectionRange &&\n (!selectionRange.collapsed ||\n this.lastKeyPress != evt.which ||\n isCtrlOrMetaPressed(evt))\n ) {\n this.addUndoSnapshot();\n }\n\n // Since some content is deleted, always set hasNewContent to true so that we will take undo snapshot next time\n this.state.hasNewContent = true;\n this.lastKeyPress = evt.which;\n }\n } else if (evt.which >= Keys.PAGEUP && evt.which <= Keys.DOWN) {\n // PageUp, PageDown, Home, End, Left, Right, Up, Down\n if (this.state.hasNewContent) {\n this.addUndoSnapshot();\n }\n this.lastKeyPress = 0;\n } else if (this.lastKeyPress == Keys.BACKSPACE || this.lastKeyPress == Keys.DELETE) {\n if (this.state.hasNewContent) {\n this.addUndoSnapshot();\n }\n }\n }\n\n private onKeyPress(evt: KeyboardEvent): void {\n if (evt.metaKey) {\n // if metaKey is pressed, simply return since no actual effect will be taken on the editor.\n // this is to prevent changing hasNewContent to true when meta + v to paste on Safari.\n return;\n }\n\n let range = this.editor?.getSelectionRange();\n if (\n (range && !range.collapsed) ||\n (evt.which == Keys.SPACE && this.lastKeyPress != Keys.SPACE) ||\n evt.which == Keys.ENTER\n ) {\n this.addUndoSnapshot();\n if (evt.which == Keys.ENTER) {\n // Treat ENTER as new content so if there is no input after ENTER and undo,\n // we restore the snapshot before ENTER\n this.state.hasNewContent = true;\n }\n } else {\n this.clearRedoForInput();\n }\n\n this.lastKeyPress = evt.which;\n }\n\n private onBeforeKeyboardEditing(event: KeyboardEvent) {\n // For keyboard event (triggered from Content Model), we can get its keycode from event.data\n // And when user is keep pressing the same key, mark editor with \"hasNewContent\" so that next time user\n // do some other action or press a different key, we will add undo snapshot\n if (event.which != this.lastKeyPress) {\n this.addUndoSnapshot();\n }\n\n this.lastKeyPress = event.which;\n this.state.hasNewContent = true;\n }\n\n private onContentChanged(event: ContentChangedEvent) {\n if (\n !(\n this.state.isRestoring ||\n event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode ||\n event.source == ChangeSource.Keyboard\n )\n ) {\n this.clearRedoForInput();\n }\n }\n\n private clearRedoForInput() {\n this.state.snapshotsService.clearRedo();\n this.lastKeyPress = 0;\n this.state.hasNewContent = true;\n }\n\n private canUndoAutoComplete() {\n const focusedPosition = this.editor?.getFocusedPosition();\n return (\n this.state.snapshotsService.canUndoAutoComplete() &&\n !!focusedPosition &&\n !!this.state.autoCompletePosition?.equalTo(focusedPosition)\n );\n }\n\n private addUndoSnapshot() {\n this.editor?.addUndoSnapshot();\n this.state.autoCompletePosition = null;\n }\n}\n\nfunction createUndoSnapshots(): UndoSnapshotsService {\n const snapshots = createSnapshots(MAX_SIZE_LIMIT);\n\n return {\n canMove: (delta: number): boolean => canMoveCurrentSnapshot(snapshots, delta),\n move: (delta: number): Snapshot | null => moveCurrentSnapshot(snapshots, delta),\n addSnapshot: (snapshot: Snapshot, isAutoCompleteSnapshot: boolean) =>\n addSnapshotV2(snapshots, snapshot, isAutoCompleteSnapshot),\n clearRedo: () => clearProceedingSnapshotsV2(snapshots),\n canUndoAutoComplete: () => canUndoAutoComplete(snapshots),\n };\n}\n\nfunction createUndoSnapshotServiceBridge(\n service: UndoSnapshotsService | undefined\n): UndoSnapshotsService | undefined {\n let html: string | null;\n return service\n ? {\n canMove: (delta: number) => service.canMove(delta),\n move: (delta: number): Snapshot | null =>\n (html = service.move(delta)) ? { html, metadata: null, knownColors: [] } : null,\n addSnapshot: (snapshot: Snapshot, isAutoCompleteSnapshot: boolean) =>\n service.addSnapshot(\n snapshot.html +\n (snapshot.metadata ? `` : ''),\n isAutoCompleteSnapshot\n ),\n clearRedo: () => service.clearRedo(),\n canUndoAutoComplete: () => service.canUndoAutoComplete(),\n }\n : undefined;\n}\n","import CopyPastePlugin from './CopyPastePlugin';\nimport DOMEventPlugin from './DOMEventPlugin';\nimport EditPlugin from './EditPlugin';\nimport EntityPlugin from './EntityPlugin';\nimport ImageSelection from './ImageSelection';\nimport LifecyclePlugin from './LifecyclePlugin';\nimport MouseUpPlugin from './MouseUpPlugin';\nimport NormalizeTablePlugin from './NormalizeTablePlugin';\nimport PendingFormatStatePlugin from './PendingFormatStatePlugin';\nimport TypeInContainerPlugin from './TypeInContainerPlugin';\nimport UndoPlugin from './UndoPlugin';\nimport { CorePlugins, EditorOptions, PluginState } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport interface CreateCorePluginResponse extends CorePlugins {\n _placeholder: null;\n}\n\n/**\n * @internal\n * Create Core Plugins\n * @param contentDiv Content DIV of editor\n * @param options Editor options\n */\nexport default function createCorePlugins(\n contentDiv: HTMLDivElement,\n options: EditorOptions\n): CreateCorePluginResponse {\n const map = options.corePluginOverride || {};\n // The order matters, some plugin needs to be put before/after others to make sure event\n // can be handled in right order\n return {\n typeInContainer: map.typeInContainer || new TypeInContainerPlugin(),\n edit: map.edit || new EditPlugin(),\n pendingFormatState: map.pendingFormatState || new PendingFormatStatePlugin(),\n _placeholder: null,\n typeAfterLink: null!, //deprecated after firefox update\n undo: map.undo || new UndoPlugin(options),\n domEvent: map.domEvent || new DOMEventPlugin(options, contentDiv),\n mouseUp: map.mouseUp || new MouseUpPlugin(),\n copyPaste: map.copyPaste || new CopyPastePlugin(options),\n entity: map.entity || new EntityPlugin(),\n imageSelection: map.imageSelection || new ImageSelection(),\n normalizeTable: map.normalizeTable || new NormalizeTablePlugin(),\n lifecycle: map.lifecycle || new LifecyclePlugin(options, contentDiv),\n };\n}\n\n/**\n * @internal\n * Get plugin state of core plugins\n * @param corePlugins CorePlugins object\n */\nexport function getPluginState(corePlugins: CorePlugins): PluginState {\n return {\n domEvent: corePlugins.domEvent.getState(),\n pendingFormatState: corePlugins.pendingFormatState.getState(),\n edit: corePlugins.edit.getState(),\n lifecycle: corePlugins.lifecycle.getState(),\n undo: corePlugins.undo.getState(),\n entity: corePlugins.entity.getState(),\n copyPaste: corePlugins.copyPaste.getState(),\n };\n}\n","import { VCell } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Executes an action to all the cells within the selection range.\n * @param callback action to apply on each selected cell\n * @returns the amount of cells modified\n */\nexport const forEachSelectedCell = (vTable: VTable, callback: (cell: VCell) => void): void => {\n if (vTable.selection) {\n const { lastCell, firstCell } = vTable.selection;\n\n for (let y = firstCell.y; y <= lastCell.y; y++) {\n for (let x = firstCell.x; x <= lastCell.x; x++) {\n if (vTable.cells && vTable.cells[y][x]?.td) {\n callback(vTable.cells[y][x]);\n }\n }\n }\n }\n};\n","import {\n addDelimiters,\n arrayPush,\n createRange,\n getDelimiterFromElement,\n getEntityFromElement,\n getEntitySelector,\n isBlockElement,\n isCharacterValue,\n matchesSelector,\n Position,\n safeInstanceOf,\n splitTextNode,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n DelimiterClasses,\n Entity,\n IEditor,\n Keys,\n NodeType,\n PluginEvent,\n PluginEventType,\n PluginKeyDownEvent,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst DELIMITER_SELECTOR =\n '.' + DelimiterClasses.DELIMITER_AFTER + ',.' + DelimiterClasses.DELIMITER_BEFORE;\nconst ZERO_WIDTH_SPACE = '\\u200B';\nconst INLINE_ENTITY_SELECTOR = 'span' + getEntitySelector();\n\nexport function inlineEntityOnPluginEvent(event: PluginEvent, editor: IEditor) {\n switch (event.eventType) {\n case PluginEventType.ContentChanged:\n if (event.source === ChangeSource.SetContent) {\n normalizeDelimitersInEditor(editor);\n }\n break;\n case PluginEventType.EditorReady:\n normalizeDelimitersInEditor(editor);\n break;\n\n case PluginEventType.BeforePaste:\n const { fragment, sanitizingOption } = event;\n addDelimitersIfNeeded(fragment.querySelectorAll(INLINE_ENTITY_SELECTOR));\n\n if (sanitizingOption.additionalAllowedCssClasses) {\n arrayPush(sanitizingOption.additionalAllowedCssClasses, [\n DelimiterClasses.DELIMITER_AFTER,\n DelimiterClasses.DELIMITER_BEFORE,\n ]);\n }\n break;\n\n case PluginEventType.ExtractContentWithDom:\n case PluginEventType.BeforeCutCopy:\n event.clonedRoot.querySelectorAll(DELIMITER_SELECTOR).forEach(node => {\n if (getDelimiterFromElement(node)) {\n removeNode(node);\n } else {\n removeDelimiterAttr(node);\n }\n });\n break;\n\n case PluginEventType.KeyDown:\n handleKeyDownEvent(editor, event);\n break;\n }\n}\n\nfunction preventTypeInDelimiter(delimiter: HTMLElement) {\n delimiter.normalize();\n const textNode = delimiter.firstChild as Node;\n const index = textNode.nodeValue?.indexOf(ZERO_WIDTH_SPACE) ?? -1;\n if (index >= 0) {\n splitTextNode(textNode, index == 0 ? 1 : index, false /* returnFirstPart */);\n let nodeToMove: Node | undefined;\n delimiter.childNodes.forEach(node => {\n if (node.nodeValue !== ZERO_WIDTH_SPACE) {\n nodeToMove = node;\n }\n });\n if (nodeToMove) {\n delimiter.parentElement?.insertBefore(\n nodeToMove,\n delimiter.className == DelimiterClasses.DELIMITER_BEFORE\n ? delimiter\n : delimiter.nextSibling\n );\n const selection = nodeToMove.ownerDocument?.getSelection();\n\n if (selection) {\n selection.setPosition(\n nodeToMove,\n new Position(nodeToMove, PositionType.End).offset\n );\n }\n }\n }\n}\n\n/**\n * @internal\n */\nexport function normalizeDelimitersInEditor(editor: IEditor) {\n removeInvalidDelimiters(editor.queryElements(DELIMITER_SELECTOR));\n addDelimitersIfNeeded(editor.queryElements(INLINE_ENTITY_SELECTOR));\n}\n\nfunction addDelimitersIfNeeded(nodes: Element[] | NodeListOf) {\n nodes.forEach(node => {\n if (isEntityElement(node)) {\n addDelimiters(node);\n }\n });\n}\n\nfunction isEntityElement(node: Node | null): node is HTMLElement {\n return !!(\n node &&\n safeInstanceOf(node, 'HTMLElement') &&\n isReadOnly(getEntityFromElement(node))\n );\n}\n\nfunction removeNode(el: Node | undefined | null) {\n el?.parentElement?.removeChild(el);\n}\n\nfunction isReadOnly(entity: Entity | null) {\n return (\n entity?.isReadonly &&\n !isBlockElement(entity.wrapper) &&\n safeInstanceOf(entity.wrapper, 'HTMLElement')\n );\n}\n\nfunction removeInvalidDelimiters(nodes: Element[] | NodeListOf) {\n nodes.forEach(node => {\n if (getDelimiterFromElement(node)) {\n const sibling = node.classList.contains(DelimiterClasses.DELIMITER_BEFORE)\n ? node.nextElementSibling\n : node.previousElementSibling;\n if (!(safeInstanceOf(sibling, 'HTMLElement') && getEntityFromElement(sibling))) {\n removeNode(node);\n }\n } else {\n removeDelimiterAttr(node);\n }\n });\n}\n\nfunction removeDelimiterAttr(node: Element | undefined | null, checkEntity: boolean = true) {\n if (!node) {\n return;\n }\n\n const isAfter = node.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n const entitySibling = isAfter ? node.previousElementSibling : node.nextElementSibling;\n if (checkEntity && entitySibling && isEntityElement(entitySibling)) {\n return;\n }\n\n node.classList.remove(DelimiterClasses.DELIMITER_AFTER, DelimiterClasses.DELIMITER_BEFORE);\n\n node.normalize();\n node.childNodes.forEach(cn => {\n const index = cn.textContent?.indexOf(ZERO_WIDTH_SPACE) ?? -1;\n if (index >= 0) {\n createRange(cn, index, cn, index + 1)?.deleteContents();\n }\n });\n}\n\nfunction handleCollapsedEnter(editor: IEditor, delimiter: HTMLElement) {\n const isAfter = delimiter.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n const entity = !isAfter ? delimiter.nextSibling : delimiter.previousSibling;\n const block = getBlock(editor, delimiter);\n\n editor.runAsync(() => {\n if (!block) {\n return;\n }\n const blockToCheck = isAfter ? block.nextSibling : block.previousSibling;\n if (blockToCheck && safeInstanceOf(blockToCheck, 'HTMLElement')) {\n const delimiters = blockToCheck.querySelectorAll(DELIMITER_SELECTOR);\n // Check if the last or first delimiter still contain the delimiter class and remove it.\n const delimiterToCheck = delimiters.item(isAfter ? 0 : delimiters.length - 1);\n removeDelimiterAttr(delimiterToCheck);\n }\n\n if (isEntityElement(entity)) {\n const { nextElementSibling, previousElementSibling } = entity;\n [nextElementSibling, previousElementSibling].forEach(el => {\n // Check if after Enter the ZWS got removed but we still have a element with the class\n // Remove the attributes of the element if it is invalid now.\n if (el && matchesSelector(el, DELIMITER_SELECTOR) && !getDelimiterFromElement(el)) {\n removeDelimiterAttr(el, false /* checkEntity */);\n }\n });\n // Add delimiters to the entity if needed because on Enter we can sometimes lose the ZWS of the element.\n addDelimiters(entity);\n }\n });\n}\n\nconst getPosition = (container: HTMLElement | null) => {\n if (container && getDelimiterFromElement(container)) {\n const isAfter = container.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n return new Position(container, isAfter ? PositionType.After : PositionType.Before);\n }\n return undefined;\n};\n\nfunction getBlock(editor: IEditor, element: Node | undefined) {\n if (!element) {\n return undefined;\n }\n\n let block = editor.getBlockElementAtNode(element)?.getStartNode();\n\n while (block && !isBlockElement(block)) {\n block = editor.contains(block.parentElement) ? block.parentElement! : undefined;\n }\n\n return block;\n}\n\nfunction handleSelectionNotCollapsed(editor: IEditor, range: Range, event: KeyboardEvent) {\n const { startContainer, endContainer, startOffset, endOffset } = range;\n\n const startElement = editor.getElementAtCursor(DELIMITER_SELECTOR, startContainer);\n const endElement = editor.getElementAtCursor(DELIMITER_SELECTOR, endContainer);\n\n const startUpdate = getPosition(startElement);\n const endUpdate = getPosition(endElement);\n\n if (startUpdate || endUpdate) {\n editor.select(\n startUpdate ?? new Position(startContainer, startOffset),\n endUpdate ?? new Position(endContainer, endOffset)\n );\n }\n editor.runAsync(aEditor => {\n const delimiter = aEditor.getElementAtCursor(DELIMITER_SELECTOR);\n if (delimiter) {\n preventTypeInDelimiter(delimiter);\n if (event.which === Keys.ENTER) {\n removeDelimiterAttr(delimiter);\n }\n }\n });\n}\n\nfunction handleKeyDownEvent(editor: IEditor, event: PluginKeyDownEvent) {\n const range = editor.getSelectionRangeEx();\n const { rawEvent } = event;\n if (range.type != SelectionRangeTypes.Normal) {\n return;\n }\n\n if (range.areAllCollapsed && (isCharacterValue(rawEvent) || rawEvent.which === Keys.ENTER)) {\n const position = editor.getFocusedPosition()?.normalize();\n if (!position) {\n return;\n }\n\n const { element, node } = position;\n const refNode = element == node ? element.childNodes.item(position.offset) : element;\n\n const delimiter = editor.getElementAtCursor(DELIMITER_SELECTOR, refNode);\n if (!delimiter) {\n return;\n }\n\n if (rawEvent.which === Keys.ENTER) {\n handleCollapsedEnter(editor, delimiter);\n } else if (delimiter.firstChild?.nodeType == NodeType.Text) {\n editor.runAsync(() => preventTypeInDelimiter(delimiter));\n }\n } else if (!range.areAllCollapsed && !rawEvent.shiftKey && rawEvent.which != Keys.SHIFT) {\n const currentRange = range.ranges[0];\n if (!currentRange) {\n return;\n }\n handleSelectionNotCollapsed(editor, currentRange, rawEvent);\n }\n}\n","import { isWholeTableSelected, VTable } from 'roosterjs-editor-dom';\nimport { VCell } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Remove the cells outside of the selection.\n * @param vTable VTable to remove selection\n */\nexport const removeCellsOutsideSelection = (vTable: VTable) => {\n if (vTable.selection) {\n if (isWholeTableSelected(vTable, vTable.selection)) {\n return;\n }\n\n vTable.table.style.removeProperty('width');\n vTable.table.style.removeProperty('height');\n\n const { firstCell, lastCell } = vTable.selection;\n const resultCells: VCell[][] = [];\n\n const firstX = firstCell.x;\n const firstY = firstCell.y;\n const lastX = lastCell.x;\n const lastY = lastCell.y;\n\n if (vTable.cells) {\n vTable.cells.forEach((row, y) => {\n row = row.filter((_, x) => y >= firstY && y <= lastY && x >= firstX && x <= lastX);\n if (row.length > 0) {\n resultCells.push(row);\n }\n });\n vTable.cells = resultCells;\n }\n }\n};\n","import { ColorKeyAndValue, DarkColorHandler, ModeIndependentColor } from 'roosterjs-editor-types';\nimport { getObjectKeys, parseColor, setColor } from 'roosterjs-editor-dom';\n\nconst VARIABLE_REGEX = /^\\s*var\\(\\s*(\\-\\-[a-zA-Z0-9\\-_]+)\\s*(?:,\\s*(.*))?\\)\\s*$/;\nconst VARIABLE_PREFIX = 'var(';\nconst COLOR_VAR_PREFIX = 'darkColor';\nconst enum ColorAttributeEnum {\n CssColor = 0,\n HtmlColor = 1,\n}\nconst ColorAttributeName: { [key in ColorAttributeEnum]: string }[] = [\n {\n [ColorAttributeEnum.CssColor]: 'color',\n [ColorAttributeEnum.HtmlColor]: 'color',\n },\n {\n [ColorAttributeEnum.CssColor]: 'background-color',\n [ColorAttributeEnum.HtmlColor]: 'bgcolor',\n },\n];\n\n/**\n * @internal\n */\nexport default class DarkColorHandlerImpl implements DarkColorHandler {\n private knownColors: Record> = {};\n\n constructor(private contentDiv: HTMLElement, private getDarkColor: (color: string) => string) {}\n\n /**\n * Get a copy of known colors\n * @returns\n */\n getKnownColorsCopy() {\n return Object.values(this.knownColors);\n }\n\n /**\n * Given a light mode color value and an optional dark mode color value, register this color\n * so that editor can handle it, then return the CSS color value for current color mode.\n * @param lightModeColor Light mode color value\n * @param isDarkMode Whether current color mode is dark mode\n * @param darkModeColor Optional dark mode color value. If not passed, we will calculate one.\n */\n registerColor(lightModeColor: string, isDarkMode: boolean, darkModeColor?: string): string {\n const parsedColor = this.parseColorValue(lightModeColor);\n let colorKey: string | undefined;\n\n if (parsedColor) {\n lightModeColor = parsedColor.lightModeColor;\n darkModeColor = parsedColor.darkModeColor || darkModeColor;\n colorKey = parsedColor.key;\n }\n\n if (isDarkMode && lightModeColor) {\n colorKey =\n colorKey || `--${COLOR_VAR_PREFIX}_${lightModeColor.replace(/[^\\d\\w]/g, '_')}`;\n\n if (!this.knownColors[colorKey]) {\n darkModeColor = darkModeColor || this.getDarkColor(lightModeColor);\n\n this.knownColors[colorKey] = { lightModeColor, darkModeColor };\n this.contentDiv.style.setProperty(colorKey, darkModeColor);\n }\n\n return `var(${colorKey}, ${lightModeColor})`;\n } else {\n return lightModeColor;\n }\n }\n\n /**\n * Reset known color record, clean up registered color variables.\n */\n reset(): void {\n getObjectKeys(this.knownColors).forEach(key => this.contentDiv.style.removeProperty(key));\n this.knownColors = {};\n }\n\n /**\n * Parse an existing color value, if it is in variable-based color format, extract color key,\n * light color and query related dark color if any\n * @param color The color string to parse\n * @param isInDarkMode Whether current content is in dark mode. When set to true, if the color value is not in dark var format,\n * we will treat is as a dark mode color and try to find a matched dark mode color.\n */\n parseColorValue(color: string | undefined | null, isInDarkMode?: boolean): ColorKeyAndValue {\n let key: string | undefined;\n let lightModeColor = '';\n let darkModeColor: string | undefined;\n\n if (color) {\n const match = color.startsWith(VARIABLE_PREFIX) ? VARIABLE_REGEX.exec(color) : null;\n\n if (match) {\n if (match[2]) {\n key = match[1];\n lightModeColor = match[2];\n darkModeColor = this.knownColors[key]?.darkModeColor;\n } else {\n lightModeColor = '';\n }\n } else if (isInDarkMode) {\n // If editor is in dark mode but the color is not in dark color format, it is possible the color was inserted from external code\n // without any light color info. So we first try to see if there is a known dark color can match this color, and use its related\n // light color as light mode color. Otherwise we need to drop this color to avoid show \"white on white\" content.\n lightModeColor = this.findLightColorFromDarkColor(color) || '';\n\n if (lightModeColor) {\n darkModeColor = color;\n }\n } else {\n lightModeColor = color;\n }\n }\n\n return { key, lightModeColor, darkModeColor };\n }\n\n /**\n * Find related light mode color from dark mode color.\n * @param darkColor The existing dark color\n */\n findLightColorFromDarkColor(darkColor: string): string | null {\n const rgbSearch = parseColor(darkColor);\n\n if (rgbSearch) {\n const key = getObjectKeys(this.knownColors).find(key => {\n const rgbCurrent = parseColor(this.knownColors[key].darkModeColor);\n\n return (\n rgbCurrent &&\n rgbCurrent[0] == rgbSearch[0] &&\n rgbCurrent[1] == rgbSearch[1] &&\n rgbCurrent[2] == rgbSearch[2]\n );\n });\n\n if (key) {\n return this.knownColors[key].lightModeColor;\n }\n }\n\n return null;\n }\n\n /**\n * Transform element color, from dark to light or from light to dark\n * @param element The element to transform color\n * @param fromDarkMode Whether this is transforming color from dark mode\n * @param toDarkMode Whether this is transforming color to dark mode\n */\n transformElementColor(element: HTMLElement, fromDarkMode: boolean, toDarkMode: boolean): void {\n ColorAttributeName.forEach((names, i) => {\n const color = this.parseColorValue(\n element.style.getPropertyValue(names[ColorAttributeEnum.CssColor]) ||\n element.getAttribute(names[ColorAttributeEnum.HtmlColor]),\n !!fromDarkMode\n ).lightModeColor;\n\n element.style.setProperty(names[ColorAttributeEnum.CssColor], null);\n element.removeAttribute(names[ColorAttributeEnum.HtmlColor]);\n\n if (color && color != 'inherit') {\n setColor(element, color, i != 0, toDarkMode, false /*shouldAdaptFontColor*/, this);\n }\n });\n }\n}\n","import { createEditorCore } from './createEditorCore';\r\nimport { EditorBase } from './EditorBase';\r\nimport { EditorCore, EditorOptions } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * RoosterJs core editor class\r\n */\r\nexport default class Editor extends EditorBase {\r\n /**\r\n * Creates an instance of EditorBase\r\n * @param contentDiv The DIV HTML element which will be the container element of editor\r\n * @param options An optional options object to customize the editor\r\n */\r\n constructor(contentDiv: HTMLDivElement, options: EditorOptions = {}) {\r\n super(contentDiv, options, createEditorCore);\r\n }\r\n}\r\n","import { isFeatureEnabled } from './isFeatureEnabled';\nimport {\n BlockElement,\n ChangeSource,\n ClipboardData,\n ColorTransformDirection,\n ContentChangedData,\n ContentPosition,\n CoreCreator,\n DarkColorHandler,\n DefaultFormat,\n DOMEventHandler,\n EditorCore,\n EditorOptions,\n EditorUndoState,\n ExperimentalFeatures,\n GenericContentEditFeature,\n GetContentMode,\n IContentTraverser,\n IEditor,\n InsertOption,\n IPositionContentSearcher,\n NodePosition,\n PendableFormatState,\n PluginEvent,\n PluginEventData,\n PluginEventFromType,\n PluginEventType,\n PositionType,\n QueryScope,\n Rect,\n Region,\n RegionType,\n SelectionPath,\n SelectionRangeEx,\n SizeTransformer,\n StyleBasedFormatState,\n TableSelection,\n TrustedHTMLHandler,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n collapseNodes,\n contains,\n ContentTraverser,\n deleteSelectedContent,\n getRegionsFromRange,\n findClosestElementAncestor,\n getBlockElementAtNode,\n getSelectionPath,\n getTagOfNode,\n isNodeEmpty,\n Position,\n PositionContentSearcher,\n queryElements,\n wrap,\n isPositionAtBeginningOf,\n toArray,\n} from 'roosterjs-editor-dom';\nimport type {\n CompatibleChangeSource,\n CompatibleContentPosition,\n CompatibleExperimentalFeatures,\n CompatibleGetContentMode,\n CompatiblePluginEventType,\n CompatibleQueryScope,\n CompatibleRegionType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Base class of editor\n */\nexport class EditorBase\n implements IEditor {\n private core: TEditorCore | null = null;\n\n //#region Lifecycle\n\n /**\n * Creates an instance of EditorBase\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\n constructor(\n contentDiv: HTMLDivElement,\n options: TEditorOptions,\n coreCreator: CoreCreator\n ) {\n // 1. Make sure all parameters are valid\n if (getTagOfNode(contentDiv) != 'DIV') {\n throw new Error('contentDiv must be an HTML DIV element');\n }\n\n // 2. Create editor core\n this.core = coreCreator(contentDiv, options);\n\n // 3. Initialize plugins\n this.core.plugins.forEach(plugin => plugin.initialize(this));\n\n // 4. Ensure user will type in a container node, not the editor content DIV\n this.ensureTypeInContainer(\n new Position(this.core.contentDiv, PositionType.Begin).normalize()\n );\n }\n\n /**\n * Dispose this editor, dispose all plugins and custom data\n */\n public dispose(): void {\n const core = this.getCore();\n for (let i = core.plugins.length - 1; i >= 0; i--) {\n core.plugins[i].dispose();\n }\n\n core.darkColorHandler.reset();\n\n this.core = null;\n }\n\n /**\n * Get whether this editor is disposed\n * @returns True if editor is disposed, otherwise false\n */\n public isDisposed(): boolean {\n return !this.core;\n }\n\n //#endregion\n\n //#region Node API\n\n /**\n * Insert node into editor\n * @param node The node to insert\n * @param option Insert options. Default value is:\n * position: ContentPosition.SelectionStart\n * updateCursor: true\n * replaceSelection: true\n * insertOnNewLine: false\n * @returns true if node is inserted. Otherwise false\n */\n public insertNode(node: Node, option?: InsertOption): boolean {\n const core = this.getCore();\n return node ? core.api.insertNode(core, node, option ?? null) : false;\n }\n\n /**\n * Delete a node from editor content\n * @param node The node to delete\n * @returns true if node is deleted. Otherwise false\n */\n public deleteNode(node: Node): boolean {\n // Only remove the node when it falls within editor\n if (node && this.contains(node) && node.parentNode) {\n node.parentNode.removeChild(node);\n return true;\n }\n\n return false;\n }\n\n /**\n * Replace a node in editor content with another node\n * @param existingNode The existing node to be replaced\n * @param toNode node to replace to\n * @param transformColorForDarkMode (optional) Whether to transform new node to dark mode. Default is false\n * @returns true if node is replaced. Otherwise false\n */\n public replaceNode(\n existingNode: Node,\n toNode: Node,\n transformColorForDarkMode?: boolean\n ): boolean {\n const core = this.getCore();\n // Only replace the node when it falls within editor\n if (this.contains(existingNode) && toNode) {\n core.api.transformColor(\n core,\n transformColorForDarkMode ? toNode : null,\n true /*includeSelf*/,\n () => existingNode.parentNode?.replaceChild(toNode, existingNode),\n ColorTransformDirection.LightToDark\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Get BlockElement at given node\n * @param node The node to create InlineElement\n * @returns The BlockElement result\n */\n public getBlockElementAtNode(node: Node): BlockElement | null {\n return getBlockElementAtNode(this.getCore().contentDiv, node);\n }\n\n public contains(arg: Node | Range | null): boolean {\n if (!arg) {\n return false;\n }\n return contains(this.getCore().contentDiv, arg);\n }\n\n public queryElements(\n selector: string,\n scopeOrCallback:\n | QueryScope\n | CompatibleQueryScope\n | ((node: Node) => any) = QueryScope.Body,\n callback?: (node: Node) => any\n ) {\n const core = this.getCore();\n const result: HTMLElement[] = [];\n let scope = scopeOrCallback instanceof Function ? QueryScope.Body : scopeOrCallback;\n callback = scopeOrCallback instanceof Function ? scopeOrCallback : callback;\n\n let selectionEx = scope == QueryScope.Body ? null : this.getSelectionRangeEx();\n if (selectionEx) {\n selectionEx.ranges.forEach(range => {\n result.push(...queryElements(core.contentDiv, selector, callback, scope, range));\n });\n } else {\n return queryElements(core.contentDiv, selector, callback, scope, undefined /* range */);\n }\n\n return result;\n }\n\n /**\n * Collapse nodes within the given start and end nodes to their common ancestor node,\n * split parent nodes if necessary\n * @param start The start node\n * @param end The end node\n * @param canSplitParent True to allow split parent node there are nodes before start or after end under the same parent\n * and the returned nodes will be all nodes from start through end after splitting\n * False to disallow split parent\n * @returns When canSplitParent is true, returns all node from start through end after splitting,\n * otherwise just return start and end\n */\n public collapseNodes(start: Node, end: Node, canSplitParent: boolean): Node[] {\n return collapseNodes(this.getCore().contentDiv, start, end, canSplitParent);\n }\n\n //#endregion\n\n //#region Content API\n\n /**\n * Check whether the editor contains any visible content\n * @param trim Whether trim the content string before check. Default is false\n * @returns True if there's no visible content, otherwise false\n */\n public isEmpty(trim?: boolean): boolean {\n return isNodeEmpty(this.getCore().contentDiv, trim);\n }\n\n /**\n * Get current editor content as HTML string\n * @param mode specify what kind of HTML content to retrieve\n * @returns HTML string representing current editor content\n */\n public getContent(\n mode: GetContentMode | CompatibleGetContentMode = GetContentMode.CleanHTML\n ): string {\n const core = this.getCore();\n return core.api.getContent(core, mode);\n }\n\n /**\n * Set HTML content to this editor. All existing content will be replaced. A ContentChanged event will be triggered\n * @param content HTML content to set in\n * @param triggerContentChangedEvent True to trigger a ContentChanged event. Default value is true\n */\n public setContent(content: string, triggerContentChangedEvent: boolean = true) {\n const core = this.getCore();\n core.api.setContent(core, content, triggerContentChangedEvent);\n }\n\n /**\n * Insert HTML content into editor\n * @param HTML content to insert\n * @param option Insert options. Default value is:\n * position: ContentPosition.SelectionStart\n * updateCursor: true\n * replaceSelection: true\n * insertOnNewLine: false\n */\n public insertContent(content: string, option?: InsertOption) {\n if (content) {\n const doc = this.getDocument();\n const body = new DOMParser().parseFromString(\n this.getCore().trustedHTMLHandler(content),\n 'text/html'\n )?.body;\n let allNodes = body?.childNodes ? toArray(body.childNodes) : [];\n\n // If it is to insert on new line, and there are more than one node in the collection, wrap all nodes with\n // a parent DIV before calling insertNode on each top level sub node. Otherwise, every sub node may get wrapped\n // separately to show up on its own line\n if (option && option.insertOnNewLine && allNodes.length > 1) {\n allNodes = [wrap(allNodes)];\n }\n\n let fragment = doc.createDocumentFragment();\n allNodes.forEach(node => fragment.appendChild(node));\n\n this.insertNode(fragment, option);\n }\n }\n\n /**\n * Delete selected content\n */\n public deleteSelectedContent(): NodePosition | null {\n const range = this.getSelectionRange();\n if (range && !range.collapsed) {\n return deleteSelectedContent(this.getCore().contentDiv, range);\n }\n return null;\n }\n\n /**\n * Paste into editor using a clipboardData object\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param pasteAsText Force pasting as plain text. Default value is false\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format. Default value is false. When pasteAsText is true, this parameter is ignored\n * @param pasteAsImage: When set to true, if the clipboardData contains a imageDataUri will paste the image to the editor\n */\n public paste(\n clipboardData: ClipboardData,\n pasteAsText: boolean = false,\n applyCurrentFormat: boolean = false,\n pasteAsImage: boolean = false\n ) {\n const core = this.getCore();\n if (!clipboardData) {\n return;\n }\n\n if (clipboardData.snapshotBeforePaste) {\n // Restore original content before paste a new one\n this.setContent(clipboardData.snapshotBeforePaste);\n } else {\n clipboardData.snapshotBeforePaste = this.getContent(\n GetContentMode.RawHTMLWithSelection\n );\n }\n\n const range = this.getSelectionRange();\n const pos = range && Position.getStart(range);\n const fragment = core.api.createPasteFragment(\n core,\n clipboardData,\n pos,\n pasteAsText,\n applyCurrentFormat,\n pasteAsImage\n );\n if (fragment) {\n this.addUndoSnapshot(() => {\n this.insertNode(fragment);\n return clipboardData;\n }, ChangeSource.Paste);\n }\n }\n\n //#endregion\n\n //#region Focus and Selection\n\n /**\n * Get current selection range from Editor.\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now.\n * Default value is true\n * @returns current selection range, or null if editor never got focus before\n */\n public getSelectionRange(tryGetFromCache: boolean = true): Range | null {\n const core = this.getCore();\n return core.api.getSelectionRange(core, tryGetFromCache);\n }\n\n /**\n * Get current selection range from Editor.\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now.\n * Default value is true\n * @returns current selection range, or null if editor never got focus before\n */\n public getSelectionRangeEx(): SelectionRangeEx {\n const core = this.getCore();\n return core.api.getSelectionRangeEx(core);\n }\n\n /**\n * Get current selection in a serializable format\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @returns current selection path, or null if editor never got focus before\n */\n public getSelectionPath(): SelectionPath | null {\n const range = this.getSelectionRange();\n return range && getSelectionPath(this.getCore().contentDiv, range);\n }\n\n /**\n * Check if focus is in editor now\n * @returns true if focus is in editor, otherwise false\n */\n public hasFocus(): boolean {\n const core = this.getCore();\n return core.api.hasFocus(core);\n }\n\n /**\n * Focus to this editor, the selection was restored to where it was before, no unexpected scroll.\n */\n public focus() {\n const core = this.getCore();\n core.api.focus(core);\n }\n\n public select(\n arg1: Range | SelectionRangeEx | NodePosition | Node | SelectionPath | null,\n arg2?: NodePosition | number | PositionType | TableSelection | null,\n arg3?: Node,\n arg4?: number | PositionType\n ): boolean {\n const core = this.getCore();\n\n return core.api.select(core, arg1, arg2, arg3, arg4);\n }\n\n /**\n * Get current focused position. Return null if editor doesn't have focus at this time.\n */\n public getFocusedPosition(): NodePosition | null {\n let sel = this.getDocument().defaultView?.getSelection();\n if (sel?.focusNode && this.contains(sel.focusNode)) {\n return new Position(sel.focusNode, sel.focusOffset);\n }\n\n let range = this.getSelectionRange();\n if (range) {\n return Position.getStart(range);\n }\n\n return null;\n }\n\n /**\n * Get an HTML element from current cursor position.\n * When expectedTags is not specified, return value is the current node (if it is HTML element)\n * or its parent node (if current node is a Text node).\n * When expectedTags is specified, return value is the first ancestor of current node which has\n * one of the expected tags.\n * If no element found within editor by the given tag, return null.\n * @param selector Optional, an HTML selector to find HTML element with.\n * @param startFrom Start search from this node. If not specified, start from current focused position\n * @param event Optional, if specified, editor will try to get cached result from the event object first.\n * If it is not cached before, query from DOM and cache the result into the event object\n */\n public getElementAtCursor(\n selector?: string,\n startFrom?: Node,\n event?: PluginEvent\n ): HTMLElement | null {\n event = startFrom ? undefined : event; // Only use cache when startFrom is not specified, for different start position can have different result\n\n return (\n cacheGetEventData(event ?? null, 'GET_ELEMENT_AT_CURSOR_' + selector, () => {\n if (!startFrom) {\n let position = this.getFocusedPosition();\n startFrom = position?.node;\n }\n return (\n startFrom &&\n findClosestElementAncestor(startFrom, this.getCore().contentDiv, selector)\n );\n }) ?? null\n );\n }\n\n /**\n * Check if this position is at beginning of the editor.\n * This will return true if all nodes between the beginning of target node and the position are empty.\n * @param position The position to check\n * @returns True if position is at beginning of the editor, otherwise false\n */\n public isPositionAtBeginning(position: NodePosition): boolean {\n return isPositionAtBeginningOf(position, this.getCore().contentDiv);\n }\n\n /**\n * Get impacted regions from selection\n */\n public getSelectedRegions(\n type: RegionType | CompatibleRegionType = RegionType.Table\n ): Region[] {\n const selection = this.getSelectionRangeEx();\n const result: Region[] = [];\n const contentDiv = this.getCore().contentDiv;\n selection.ranges.forEach(range => {\n result.push(...(range ? getRegionsFromRange(contentDiv, range, type) : []));\n });\n return result.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n }\n\n //#endregion\n\n //#region EVENT API\n\n public addDomEventHandler(\n nameOrMap: string | Record,\n handler?: DOMEventHandler\n ): () => void {\n const eventsToMap = typeof nameOrMap == 'string' ? { [nameOrMap]: handler! } : nameOrMap;\n const core = this.getCore();\n return core.api.attachDomEvent(core, eventsToMap);\n }\n\n /**\n * Trigger an event to be dispatched to all plugins\n * @param eventType Type of the event\n * @param data data of the event with given type, this is the rest part of PluginEvent with the given type\n * @param broadcast indicates if the event needs to be dispatched to all plugins\n * True means to all, false means to allow exclusive handling from one plugin unless no one wants that\n * @returns the event object which is really passed into plugins. Some plugin may modify the event object so\n * the result of this function provides a chance to read the modified result\n */\n public triggerPluginEvent(\n eventType: T,\n data: PluginEventData,\n broadcast: boolean = false\n ): PluginEventFromType {\n const core = this.getCore();\n let event = ({\n eventType,\n ...data,\n } as any) as PluginEventFromType;\n core.api.triggerEvent(core, event, broadcast);\n\n return event;\n }\n\n /**\n * Trigger a ContentChangedEvent\n * @param source Source of this event, by default is 'SetContent'\n * @param data additional data for this event\n */\n public triggerContentChangedEvent(\n source: ChangeSource | CompatibleChangeSource | string = ChangeSource.SetContent,\n data?: any\n ) {\n this.triggerPluginEvent(PluginEventType.ContentChanged, {\n source,\n data,\n });\n }\n\n //#endregion\n\n //#region Undo API\n\n /**\n * Undo last edit operation\n */\n public undo() {\n this.focus();\n const core = this.getCore();\n core.api.restoreUndoSnapshot(core, -1 /*step*/);\n }\n\n /**\n * Redo next edit operation\n */\n public redo() {\n this.focus();\n const core = this.getCore();\n core.api.restoreUndoSnapshot(core, 1 /*step*/);\n }\n\n /**\n * Add undo snapshot, and execute a format callback function, then add another undo snapshot, then trigger\n * ContentChangedEvent with given change source.\n * If this function is called nested, undo snapshot will only be added in the outside one\n * @param callback The callback function to perform formatting, returns a data object which will be used as\n * the data field in ContentChangedEvent if changeSource is not null.\n * @param changeSource The change source to use when fire ContentChangedEvent. When the value is not null,\n * a ContentChangedEvent will be fired with change source equal to this value\n * @param canUndoByBackspace True if this action can be undone when user press Backspace key (aka Auto Complete).\n */\n public addUndoSnapshot(\n callback?: (start: NodePosition | null, end: NodePosition | null) => any,\n changeSource?: ChangeSource | CompatibleChangeSource | string,\n canUndoByBackspace?: boolean,\n additionalData?: ContentChangedData\n ) {\n const core = this.getCore();\n core.api.addUndoSnapshot(\n core,\n callback ?? null,\n changeSource ?? null,\n canUndoByBackspace ?? false,\n additionalData\n );\n }\n\n /**\n * Whether there is an available undo/redo snapshot\n */\n public getUndoState(): EditorUndoState {\n const { hasNewContent, snapshotsService } = this.getCore().undo;\n return {\n canUndo: hasNewContent || snapshotsService.canMove(-1 /*previousSnapshot*/),\n canRedo: snapshotsService.canMove(1 /*nextSnapshot*/),\n };\n }\n\n //#endregion\n\n //#region Misc\n\n /**\n * Get document which contains this editor\n * @returns The HTML document which contains this editor\n */\n public getDocument(): Document {\n return this.getCore().contentDiv.ownerDocument;\n }\n\n /**\n * Get the scroll container of the editor\n */\n public getScrollContainer(): HTMLElement {\n return this.getCore().domEvent.scrollContainer;\n }\n\n /**\n * Get custom data related to this editor\n * @param key Key of the custom data\n * @param getter Getter function. If custom data for the given key doesn't exist,\n * call this function to get one and store it if it is specified. Otherwise return undefined\n * @param disposer An optional disposer function to dispose this custom data when\n * dispose editor.\n */\n public getCustomData(key: string, getter?: () => T, disposer?: (value: T) => void): T {\n const core = this.getCore();\n return (core.lifecycle.customData[key] = core.lifecycle.customData[key] || {\n value: getter ? getter() : undefined,\n disposer,\n }).value as T;\n }\n\n /**\n * Check if editor is in IME input sequence\n * @returns True if editor is in IME input sequence, otherwise false\n */\n public isInIME(): boolean {\n return this.getCore().domEvent.isInIME;\n }\n\n /**\n * Get default format of this editor\n * @returns Default format object of this editor\n */\n public getDefaultFormat(): DefaultFormat {\n return this.getCore().lifecycle.defaultFormat ?? {};\n }\n\n /**\n * Get a content traverser for the whole editor\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\n */\n public getBodyTraverser(startNode?: Node): IContentTraverser {\n return ContentTraverser.createBodyTraverser(this.getCore().contentDiv, startNode);\n }\n\n /**\n * Get a content traverser for current selection\n * @returns A content traverser, or null if editor never got focus before\n */\n public getSelectionTraverser(range?: Range): IContentTraverser | null {\n range = range ?? this.getSelectionRange() ?? undefined;\n return range\n ? ContentTraverser.createSelectionTraverser(this.getCore().contentDiv, range)\n : null;\n }\n\n /**\n * Get a content traverser for current block element start from specified position\n * @param startFrom Start position of the traverser. Default value is ContentPosition.SelectionStart\n * @returns A content traverser, or null if editor never got focus before\n */\n public getBlockTraverser(\n startFrom: ContentPosition | CompatibleContentPosition = ContentPosition.SelectionStart\n ): IContentTraverser | null {\n let range = this.getSelectionRange();\n return range\n ? ContentTraverser.createBlockTraverser(this.getCore().contentDiv, range, startFrom)\n : null;\n }\n\n /**\n * Get a text traverser of current selection\n * @param event Optional, if specified, editor will try to get cached result from the event object first.\n * If it is not cached before, query from DOM and cache the result into the event object\n * @returns A content traverser, or null if editor never got focus before\n */\n public getContentSearcherOfCursor(event?: PluginEvent): IPositionContentSearcher | null {\n return cacheGetEventData(event ?? null, 'ContentSearcher', () => {\n let range = this.getSelectionRange();\n return (\n range &&\n new PositionContentSearcher(this.getCore().contentDiv, Position.getStart(range))\n );\n });\n }\n\n /**\n * Run a callback function asynchronously\n * @param callback The callback function to run\n * @returns a function to cancel this async run\n */\n public runAsync(callback: (editor: IEditor) => void) {\n let win = this.getCore().contentDiv.ownerDocument.defaultView || window;\n const handle = win.requestAnimationFrame(() => {\n if (!this.isDisposed() && callback) {\n callback(this);\n }\n });\n\n return () => {\n win.cancelAnimationFrame(handle);\n };\n }\n\n /**\n * Set DOM attribute of editor content DIV\n * @param name Name of the attribute\n * @param value Value of the attribute\n */\n public setEditorDomAttribute(name: string, value: string | null) {\n if (value === null) {\n this.getCore().contentDiv.removeAttribute(name);\n } else {\n this.getCore().contentDiv.setAttribute(name, value);\n }\n }\n\n /**\n * Get DOM attribute of editor content DIV, null if there is no such attribute.\n * @param name Name of the attribute\n */\n public getEditorDomAttribute(name: string): string | null {\n return this.getCore().contentDiv.getAttribute(name);\n }\n\n /**\n * @deprecated Use getVisibleViewport() instead.\n *\n * Get current relative distance from top-left corner of the given element to top-left corner of editor content DIV.\n * @param element The element to calculate from. If the given element is not in editor, return value will be null\n * @param addScroll When pass true, The return value will also add scrollLeft and scrollTop if any. So the value\n * may be different than what user is seeing from the view. When pass false, scroll position will be ignored.\n * @returns An [x, y] array which contains the left and top distances, or null if the given element is not in editor.\n */\n getRelativeDistanceToEditor(element: HTMLElement, addScroll?: boolean): number[] | null {\n if (this.contains(element)) {\n const contentDiv = this.getCore().contentDiv;\n const editorRect = contentDiv.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n if (editorRect && elementRect) {\n let x = elementRect.left - editorRect?.left;\n let y = elementRect.top - editorRect?.top;\n\n if (addScroll) {\n x += contentDiv.scrollLeft;\n y += contentDiv.scrollTop;\n }\n\n return [x, y];\n }\n }\n\n return null;\n }\n\n /**\n * Add a Content Edit feature.\n * @param feature The feature to add\n */\n public addContentEditFeature(feature: GenericContentEditFeature) {\n const core = this.getCore();\n feature?.keys.forEach(key => {\n let array = core.edit.features[key] || [];\n array.push(feature);\n core.edit.features[key] = array;\n });\n }\n\n /**\n * Remove a Content Edit feature.\n * @param feature The feature to remove\n */\n public removeContentEditFeature(feature: GenericContentEditFeature) {\n const core = this.getCore();\n feature?.keys.forEach(key => {\n const featureSet = core.edit.features[key];\n const index = featureSet?.indexOf(feature) ?? -1;\n if (index >= 0) {\n core.edit.features[key].splice(index, 1);\n if (core.edit.features[key].length < 1) {\n delete core.edit.features[key];\n }\n }\n });\n }\n\n /**\n * Get style based format state from current selection, including font name/size and colors\n */\n public getStyleBasedFormatState(node?: Node): StyleBasedFormatState {\n if (!node) {\n const range = this.getSelectionRange();\n node = (range && Position.getStart(range).normalize().node) ?? undefined;\n }\n const core = this.getCore();\n return core.api.getStyleBasedFormatState(core, node ?? null);\n }\n\n /**\n * Get the pendable format such as underline and bold\n * @param forceGetStateFromDOM If set to true, will force get the format state from DOM tree.\n * @returns The pending format state\n */\n public getPendableFormatState(forceGetStateFromDOM: boolean = false): PendableFormatState {\n const core = this.getCore();\n return core.api.getPendableFormatState(core, forceGetStateFromDOM);\n }\n\n /**\n * Ensure user will type into a container element rather than into the editor content DIV directly\n * @param position The position that user is about to type to\n * @param keyboardEvent Optional keyboard event object\n */\n public ensureTypeInContainer(position: NodePosition, keyboardEvent?: KeyboardEvent) {\n const core = this.getCore();\n core.api.ensureTypeInContainer(core, position, keyboardEvent);\n }\n\n //#endregion\n\n //#region Dark mode APIs\n\n /**\n * Set the dark mode state and transforms the content to match the new state.\n * @param nextDarkMode The next status of dark mode. True if the editor should be in dark mode, false if not.\n */\n public setDarkModeState(nextDarkMode?: boolean) {\n const isDarkMode = this.isDarkMode();\n\n if (isDarkMode == !!nextDarkMode) {\n return;\n }\n const core = this.getCore();\n\n core.api.transformColor(\n core,\n core.contentDiv,\n false /*includeSelf*/,\n null /*callback*/,\n nextDarkMode\n ? ColorTransformDirection.LightToDark\n : ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n isDarkMode\n );\n\n this.triggerContentChangedEvent(\n nextDarkMode ? ChangeSource.SwitchToDarkMode : ChangeSource.SwitchToLightMode\n );\n }\n\n /**\n * Check if the editor is in dark mode\n * @returns True if the editor is in dark mode, otherwise false\n */\n public isDarkMode(): boolean {\n return this.getCore().lifecycle.isDarkMode;\n }\n\n /**\n * Transform the given node and all its child nodes to dark mode color if editor is in dark mode\n * @param node The node to transform\n */\n public transformToDarkColor(node: Node) {\n const core = this.getCore();\n core.api.transformColor(\n core,\n node,\n true /*includeSelf*/,\n null /*callback*/,\n ColorTransformDirection.LightToDark\n );\n }\n\n /**\n * Get a darkColorHandler object for this editor.\n */\n public getDarkColorHandler(): DarkColorHandler {\n return this.getCore().darkColorHandler;\n }\n\n /**\n * Make the editor in \"Shadow Edit\" mode.\n * In Shadow Edit mode, all format change will finally be ignored.\n * This can be used for building a live preview feature for format button, to allow user\n * see format result without really apply it.\n * This function can be called repeated. If editor is already in shadow edit mode, we can still\n * use this function to do more shadow edit operation.\n */\n public startShadowEdit() {\n const core = this.getCore();\n core.api.switchShadowEdit(core, true /*isOn*/);\n }\n\n /**\n * Leave \"Shadow Edit\" mode, all changes made during shadow edit will be discarded\n */\n public stopShadowEdit() {\n const core = this.getCore();\n core.api.switchShadowEdit(core, false /*isOn*/);\n }\n\n /**\n * Check if editor is in Shadow Edit mode\n */\n public isInShadowEdit() {\n return !!this.getCore().lifecycle.shadowEditFragment;\n }\n\n /**\n * Check if the given experimental feature is enabled\n * @param feature The feature to check\n */\n public isFeatureEnabled(\n feature: ExperimentalFeatures | CompatibleExperimentalFeatures\n ): boolean {\n return isFeatureEnabled(this.getCore().lifecycle.experimentalFeatures, feature);\n }\n\n /**\n * Get a function to convert HTML string to trusted HTML string.\n * By default it will just return the input HTML directly. To override this behavior,\n * pass your own trusted HTML handler to EditorOptions.trustedHTMLHandler\n * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\n */\n getTrustedHTMLHandler(): TrustedHTMLHandler {\n return this.getCore().trustedHTMLHandler;\n }\n\n /**\n * @deprecated Use getZoomScale() instead\n */\n getSizeTransformer(): SizeTransformer {\n return this.getCore().sizeTransformer;\n }\n\n /**\n * Get current zoom scale, default value is 1\n * When editor is put under a zoomed container, need to pass the zoom scale number using EditorOptions.zoomScale\n * to let editor behave correctly especially for those mouse drag/drop behaviors\n * @returns current zoom scale number\n */\n getZoomScale(): number {\n return this.getCore().zoomScale;\n }\n\n /**\n * Set current zoom scale, default value is 1\n * When editor is put under a zoomed container, need to pass the zoom scale number using EditorOptions.zoomScale\n * to let editor behave correctly especially for those mouse drag/drop behaviors\n * @param scale The new scale number to set. It should be positive number and no greater than 10, otherwise it will be ignored.\n */\n setZoomScale(scale: number): void {\n const core = this.getCore();\n if (scale > 0 && scale <= 10) {\n const oldValue = core.zoomScale;\n core.zoomScale = scale;\n\n if (oldValue != scale) {\n this.triggerPluginEvent(\n PluginEventType.ZoomChanged,\n {\n oldZoomScale: oldValue,\n newZoomScale: scale,\n },\n true /*broadcast*/\n );\n }\n }\n }\n\n /**\n * Retrieves the rect of the visible viewport of the editor.\n */\n getVisibleViewport(): Rect | null {\n return this.getCore().getVisibleViewport();\n }\n\n /**\n * @returns the current EditorCore object\n * @throws a standard Error if there's no core object\n */\n protected getCore(): TEditorCore {\n if (!this.core) {\n throw new Error('Editor is already disposed');\n }\n return this.core;\n }\n\n //#endregion\n}\n","import createCorePlugins, { getPluginState } from '../corePlugins/createCorePlugins';\nimport DarkColorHandlerImpl from './DarkColorHandlerImpl';\nimport { arrayPush, getIntersectedRect, getObjectKeys } from 'roosterjs-editor-dom';\nimport { coreApiMap } from '../coreApi/coreApiMap';\nimport { CoreCreator, EditorCore, EditorOptions, EditorPlugin } from 'roosterjs-editor-types';\n\n/**\n * Create a new instance of Editor Core\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\nexport const createEditorCore: CoreCreator = (contentDiv, options) => {\n const corePlugins = createCorePlugins(contentDiv, options);\n const plugins: EditorPlugin[] = [];\n\n getObjectKeys(corePlugins).forEach(name => {\n if (name == '_placeholder') {\n if (options.plugins) {\n arrayPush(plugins, options.plugins);\n }\n } else {\n plugins.push(corePlugins[name]);\n }\n });\n\n const pluginState = getPluginState(corePlugins);\n const zoomScale: number = (options.zoomScale ?? -1) > 0 ? options.zoomScale! : 1;\n const getVisibleViewport =\n options.getVisibleViewport ||\n (() => {\n const scrollContainer = pluginState.domEvent.scrollContainer;\n\n return getIntersectedRect(\n scrollContainer == core.contentDiv\n ? [scrollContainer]\n : [scrollContainer, core.contentDiv]\n );\n });\n\n const core: EditorCore = {\n contentDiv,\n api: {\n ...coreApiMap,\n ...(options.coreApiOverride || {}),\n },\n originalApi: coreApiMap,\n plugins: plugins.filter(x => !!x),\n ...pluginState,\n trustedHTMLHandler: options.trustedHTMLHandler || ((html: string) => html),\n zoomScale: zoomScale,\n sizeTransformer: options.sizeTransformer || ((size: number) => size / zoomScale),\n getVisibleViewport,\n imageSelectionBorderColor: options.imageSelectionBorderColor,\n darkColorHandler: new DarkColorHandlerImpl(contentDiv, pluginState.lifecycle.getDarkColor),\n };\n\n return core;\n};\n","import { ExperimentalFeatures } from 'roosterjs-editor-types';\nimport type { CompatibleExperimentalFeatures } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Check if the given experimental feature is enabled\n * @param featureSet All enabled features\n * @param feature The feature to check\n * @returns True if the given feature is enabled, otherwise false\n */\nexport function isFeatureEnabled(\n featureSet: (ExperimentalFeatures | CompatibleExperimentalFeatures)[] | undefined,\n feature: ExperimentalFeatures | CompatibleExperimentalFeatures\n) {\n return (featureSet || []).indexOf(feature) >= 0;\n}\n","// Classes\r\nexport { default as Editor } from './editor/Editor';\r\nexport { EditorBase } from './editor/EditorBase';\r\nexport { isFeatureEnabled } from './editor/isFeatureEnabled';\r\nexport { createEditorCore } from './editor/createEditorCore';\r\n","import contains from '../utils/contains';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * This presents a content block that can be represented by a single html block type element.\r\n * In most cases, it corresponds to an HTML block level element, i.e. P, DIV, LI, TD etc.\r\n */\r\nexport default class NodeBlockElement implements BlockElement {\r\n constructor(private element: HTMLElement) {}\r\n\r\n /**\r\n * Collapse this element to a single DOM element.\r\n * If the content nodes are separated in different root nodes, wrap them to a single node\r\n * If the content nodes are included in root node with other nodes, split root node\r\n */\r\n public collapseToSingleElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Get the start node of the block\r\n * For NodeBlockElement, start and end essentially refers to same node\r\n */\r\n public getStartNode(): Node {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Get the end node of the block\r\n * For NodeBlockElement, start and end essentially refers to same node\r\n */\r\n public getEndNode(): Node {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Checks if it refers to same block\r\n */\r\n public equals(blockElement: BlockElement): boolean {\r\n // Ideally there is only one unique way to generate a block so we only need to compare the startNode\r\n return this.element == blockElement.getStartNode();\r\n }\r\n\r\n /**\r\n * Checks if a block is after the current block\r\n */\r\n public isAfter(blockElement: BlockElement): boolean {\r\n // if the block's startNode is after current node endEnd, we say it is after\r\n return isNodeAfter(this.element, blockElement.getEndNode());\r\n }\r\n\r\n /**\r\n * Checks if a certain html node is within the block\r\n */\r\n public contains(node: Node): boolean {\r\n return contains(this.element, node, true /*treatSameNodeAsContain*/);\r\n }\r\n\r\n /**\r\n * Get the text content of this block element\r\n */\r\n public getTextContent(): string {\r\n return this.element?.textContent || '';\r\n }\r\n}\r\n","import collapseNodes from '../utils/collapseNodes';\r\nimport contains from '../utils/contains';\r\nimport createRange from '../selection/createRange';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isBlockElement from '../utils/isBlockElement';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport wrap from '../utils/wrap';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\r\n\r\nconst STRUCTURE_NODE_TAGS = ['TD', 'TH', 'LI', 'BLOCKQUOTE'];\r\n\r\n/**\r\n * @internal\r\n * This represents a block that is identified by a start and end node\r\n * This is for cases like <root>Hello<BR>World</root>\r\n * in that case, Hello<BR> is a block, World is another block\r\n * Such block cannot be represented by a NodeBlockElement since they don't chained up\r\n * to a single parent node, instead they have a start and end\r\n * This start and end must be in same sibling level and have same parent in DOM tree\r\n */\r\nexport default class StartEndBlockElement implements BlockElement {\r\n constructor(private rootNode: Node, private startNode: Node, private endNode: Node) {}\r\n\r\n static getBlockContext(node: Node): HTMLElement | null {\r\n let currentNode: Node | null = node;\r\n while (currentNode && !isBlockElement(currentNode)) {\r\n currentNode = currentNode.parentNode;\r\n }\r\n return currentNode as HTMLElement;\r\n }\r\n\r\n /**\r\n * Collapse this element to a single DOM element.\r\n * If the content nodes are separated in different root nodes, wrap them to a single node\r\n * If the content nodes are included in root node with other nodes, split root node\r\n */\r\n public collapseToSingleElement(): HTMLElement {\r\n const nodeContext = StartEndBlockElement.getBlockContext(this.startNode);\r\n let nodes = nodeContext\r\n ? collapseNodes(nodeContext, this.startNode, this.endNode, true /*canSplitParent*/)\r\n : [];\r\n let blockContext = StartEndBlockElement.getBlockContext(this.startNode);\r\n while (\r\n nodes[0] &&\r\n nodes[0] != blockContext &&\r\n nodes[0].parentNode != this.rootNode &&\r\n STRUCTURE_NODE_TAGS.indexOf(getTagOfNode(nodes[0].parentNode)) < 0\r\n ) {\r\n const newNode = splitBalancedNodeRange(nodes);\r\n if (newNode) {\r\n nodes = [newNode];\r\n } else {\r\n break;\r\n }\r\n }\r\n return nodes.length == 1 && isBlockElement(nodes[0])\r\n ? (nodes[0] as HTMLElement)\r\n : wrap(nodes);\r\n }\r\n\r\n /**\r\n * Gets the start node\r\n */\r\n public getStartNode(): Node {\r\n return this.startNode;\r\n }\r\n\r\n /**\r\n * Gets the end node\r\n */\r\n public getEndNode(): Node {\r\n return this.endNode;\r\n }\r\n\r\n /**\r\n * Checks equals of two blocks\r\n */\r\n public equals(blockElement: BlockElement): boolean {\r\n return (\r\n this.startNode == blockElement.getStartNode() &&\r\n this.endNode == blockElement.getEndNode()\r\n );\r\n }\r\n\r\n /**\r\n * Checks if another block is after this current\r\n */\r\n public isAfter(blockElement: BlockElement): boolean {\r\n return isNodeAfter(this.getStartNode(), blockElement.getEndNode());\r\n }\r\n\r\n /**\r\n * Checks if an Html node is contained within the block\r\n */\r\n public contains(node: Node): boolean {\r\n return (\r\n contains(this.startNode, node, true /*treatSameNodeAsContain*/) ||\r\n contains(this.endNode, node, true /*treatSameNodeAsContain*/) ||\r\n (isNodeAfter(node, this.startNode) && isNodeAfter(this.endNode, node))\r\n );\r\n }\r\n\r\n /**\r\n * Get the text content of this block element\r\n */\r\n public getTextContent(): string {\r\n const range = createRange(this.getStartNode(), this.getEndNode());\r\n return range ? range.toString() : '';\r\n }\r\n}\r\n","import collapseNodes from '../utils/collapseNodes';\r\nimport contains from '../utils/contains';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isBlockElement from '../utils/isBlockElement';\r\nimport NodeBlockElement from './NodeBlockElement';\r\nimport StartEndBlockElement from './StartEndBlockElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This produces a block element from a a node\r\n * It needs to account for various HTML structure. Examples:\r\n * 1) <root><div>abc</div></root>\r\n * This is most common the case, user passes in a node pointing to abc, and get back a block representing <div>abc</div>\r\n * 2) <root><p><br></p></root>\r\n * Common content for empty block, user passes node pointing to <br>, and get back a block representing <p><br></p>\r\n * 3) <root>abc</root>\r\n * Not common, but does happen. It is still a block in user's view. User passes in abc, and get back a start-end block representing abc\r\n * NOTE: abc could be just one node. However, since it is not a html block, it is more appropriate to use start-end block although they point to same node\r\n * 4) <root><div>abc<br>123</div></root>\r\n * A bit tricky, but can happen when user use Ctrl+Enter which simply inserts a <BR> to create a link break. There're two blocks:\r\n * block1: 1) abc<br> block2: 123\r\n * 5) <root><div>abc<div>123</div></div></root>\r\n * Nesting div and there is text node in same level as a DIV. Two blocks: 1) abc 2) <div>123</div>\r\n * 6) <root><div>abc<span>123<br>456</span></div></root>\r\n * This is really tricky. Essentially there is a <BR> in middle of a span breaking the span into two blocks;\r\n * block1: abc<span>123<br> block2: 456\r\n * In summary, given any arbitrary node (leaf), to identify the head and tail of the block, following rules need to be followed:\r\n * 1) to identify the head, it needs to crawl DOM tre left/up till a block node or BR is encountered\r\n * 2) same for identifying tail\r\n * 3) should also apply a block ceiling, meaning as it crawls up, it should stop at a block node\r\n * @param rootNode Root node of the scope, the block element will be inside of this node\r\n * @param node The node to get BlockElement start from\r\n */\r\nexport default function getBlockElementAtNode(\r\n rootNode: Node,\r\n node: Node | null\r\n): BlockElement | null {\r\n if (!contains(rootNode, node)) {\r\n return null;\r\n }\r\n\r\n // Identify the containing block. This serves as ceiling for traversing down below\r\n // NOTE: this container block could be just the rootNode,\r\n // which cannot be used to create block element. We will special case handle it later on\r\n let containerBlockNode = StartEndBlockElement.getBlockContext(node!);\r\n if (!containerBlockNode) {\r\n return null;\r\n } else if (containerBlockNode == node) {\r\n return new NodeBlockElement(containerBlockNode);\r\n }\r\n\r\n // Find the head and leaf node in the block\r\n let headNode = findHeadTailLeafNode(node!, containerBlockNode, false /*isTail*/);\r\n let tailNode = findHeadTailLeafNode(node!, containerBlockNode, true /*isTail*/);\r\n\r\n if (!headNode || !tailNode) {\r\n return null;\r\n }\r\n\r\n // At this point, we have the head and tail of a block, here are some examples and where head and tail point to\r\n // 1) <root><div>hello<br></div></root>, head: hello, tail: <br>\r\n // 2) <root><div>hello<span style=\"font-family: Arial\">world</span></div></root>, head: hello, tail: world\r\n // Both are actually completely and exclusively wrapped in a parent div, and can be represented with a Node block\r\n // So we shall try to collapse as much as we can to the nearest common ancestor\r\n let nodes = collapseNodes(rootNode, headNode, tailNode, false /*canSplitParent*/);\r\n\r\n if (nodes.length === 0) {\r\n return null;\r\n }\r\n\r\n headNode = nodes[0];\r\n tailNode = nodes[nodes.length - 1];\r\n\r\n if (headNode.parentNode != tailNode.parentNode) {\r\n // Un-Balanced start and end, create a start-end block\r\n return new StartEndBlockElement(rootNode, headNode, tailNode);\r\n } else {\r\n // Balanced start and end (point to same parent), need to see if further collapsing can be done\r\n while (!headNode.previousSibling && !tailNode.nextSibling) {\r\n let parentNode = headNode.parentNode;\r\n if (parentNode == containerBlockNode) {\r\n // Has reached the container block\r\n if (containerBlockNode != rootNode) {\r\n // If the container block is not the root, use the container block\r\n headNode = tailNode = parentNode;\r\n }\r\n break;\r\n } else if (parentNode && parentNode != rootNode) {\r\n // Continue collapsing to parent\r\n headNode = tailNode = parentNode;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // If head and tail are same and it is a block element, create NodeBlock, otherwise start-end block\r\n return headNode == tailNode && isBlockElement(headNode)\r\n ? new NodeBlockElement(headNode as HTMLElement)\r\n : new StartEndBlockElement(rootNode, headNode, tailNode);\r\n }\r\n}\r\n\r\n/**\r\n * Given a node and container block, identify the first/last leaf node\r\n * A leaf node is defined as deepest first/last node in a block\r\n * i.e. <div><span style=\"font-family: Arial\">abc</span></div>, abc is the head leaf of the block\r\n * Often <br> or a child <div> is used to create a block. In that case, the leaf after the sibling div or br should be the head leaf\r\n * i.e. <div>123<br>abc</div>, abc is the head of a block because of a previous sibling <br>\r\n * i.e. <div><div>123</div>abc</div>, abc is also the head of a block because of a previous sibling <div>\r\n */\r\nfunction findHeadTailLeafNode(node: Node, containerBlockNode: Node, isTail: boolean): Node {\r\n let result = node;\r\n\r\n if (getTagOfNode(result) == 'BR' && isTail) {\r\n return result;\r\n }\r\n\r\n while (result) {\r\n let sibling: Node | null = node;\r\n while (node.parentNode && !(sibling = isTail ? node.nextSibling : node.previousSibling)) {\r\n node = node.parentNode;\r\n if (node == containerBlockNode) {\r\n return result;\r\n }\r\n }\r\n\r\n while (sibling) {\r\n if (isBlockElement(sibling)) {\r\n return result;\r\n } else if (getTagOfNode(sibling) == 'BR') {\r\n return isTail ? sibling : result;\r\n }\r\n\r\n node = sibling;\r\n sibling = isTail ? node.firstChild : node.lastChild;\r\n }\r\n\r\n result = node;\r\n }\r\n return result;\r\n}\r\n","import getBlockElementAtNode from './getBlockElementAtNode';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the first/last BlockElement of under the root node.\r\n * If no suitable BlockElement found, returns null\r\n * @param rootNode The root node to get BlockElement from\r\n * @param isFirst True to get first BlockElement, false to get last BlockElement\r\n */\r\nexport default function getFirstLastBlockElement(\r\n rootNode: Node,\r\n isFirst: boolean\r\n): BlockElement | null {\r\n let node: Node | null = rootNode;\r\n do {\r\n node = node && (isFirst ? node.firstChild : node.lastChild);\r\n } while (node && node.firstChild);\r\n return (node && getBlockElementAtNode(rootNode, node)) || null;\r\n}\r\n","import extractClipboardItems from './extractClipboardItems';\nimport extractClipboardItemsForIE from './extractClipboardItemsForIE';\nimport toArray from '../jsUtils/toArray';\nimport { Browser } from '../utils/Browser';\nimport { ClipboardData, ExtractClipboardEventOption } from 'roosterjs-editor-types';\n\ninterface WindowForIE extends Window {\n clipboardData: DataTransfer;\n}\n\n/**\n * @deprecated Use extractClipboardItems and extractClipboardItemsForIE instead\n * Extract a Clipboard event\n * @param event The paste event\n * @param callback Callback function when data is ready\n * @param options Options to retrieve more items from the event, including HTML string and other customized items\n * @param rangeBeforePaste Optional range to be removed when pasting in Android\n * @returns An object with the following properties:\n * types: Available types from the clipboard event\n * text: Plain text from the clipboard event\n * image: Image file from the clipboard event\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\n * not supported by browser.\n */\nexport default function extractClipboardEvent(\n event: ClipboardEvent,\n callback: (clipboardData: ClipboardData) => void,\n options?: ExtractClipboardEventOption,\n rangeBeforePaste?: Range\n) {\n const dataTransfer =\n event.clipboardData ||\n (((event.target).ownerDocument?.defaultView)).clipboardData;\n\n if (dataTransfer.items) {\n event.preventDefault();\n extractClipboardItems(\n toArray(dataTransfer.items),\n options,\n true /** pasteNativeEvent */\n ).then((clipboardData: ClipboardData) => {\n removeContents(rangeBeforePaste);\n callback(clipboardData);\n });\n } else {\n extractClipboardItemsForIE(dataTransfer, callback, options);\n }\n}\n\nfunction removeContents(range?: Range) {\n if (Browser.isAndroid && range) {\n range.deleteContents();\n }\n}\n","import readFile from '../utils/readFile';\r\nimport { Browser } from '../utils/Browser';\r\nimport {\r\n ClipboardData,\r\n ContentType,\r\n ContentTypePrefix,\r\n EdgeLinkPreview,\r\n ExtractClipboardItemsOption,\r\n} from 'roosterjs-editor-types';\r\n\r\n// HTML header to indicate where is the HTML content started from.\r\n// Sample header:\r\n// Version:0.9\r\n// StartHTML:71\r\n// EndHTML:170\r\n// StartFragment:140\r\n// EndFragment:160\r\n// StartSelection:140\r\n// EndSelection:160\r\nconst CLIPBOARD_HTML_HEADER_REGEX = /^Version:[0-9\\.]+\\s+StartHTML:\\s*([0-9]+)\\s+EndHTML:\\s*([0-9]+)\\s+/i;\r\nconst OTHER_TEXT_TYPE = ContentTypePrefix.Text + '*';\r\nconst EDGE_LINK_PREVIEW = 'link-preview';\r\nconst ContentHandlers: {\r\n [contentType: string]: (data: ClipboardData, value: string, type?: string) => void;\r\n} = {\r\n [ContentType.HTML]: (data, value) =>\r\n (data.rawHtml = Browser.isEdge ? workaroundForEdge(value) : value),\r\n [ContentType.PlainText]: (data, value) => (data.text = value),\r\n [OTHER_TEXT_TYPE]: (data, value, type?) => !!type && (data.customValues[type] = value),\r\n [ContentTypePrefix.Text + EDGE_LINK_PREVIEW]: tryParseLinkPreview,\r\n};\r\n\r\n/**\r\n * Extract clipboard items to be a ClipboardData object for IE\r\n * @param items The clipboard items retrieve from a DataTransfer object\r\n * @param callback Callback function when data is ready\r\n * @returns An object with the following properties:\r\n * types: Available types from the clipboard event\r\n * text: Plain text from the clipboard event\r\n * image: Image file from the clipboard event\r\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\r\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\r\n * not supported by browser.\r\n */\r\nexport default function extractClipboardItems(\r\n items: DataTransferItem[],\r\n options?: ExtractClipboardItemsOption,\r\n pasteNativeEvent?: boolean\r\n): Promise {\r\n const data: ClipboardData = {\r\n types: [],\r\n text: '',\r\n image: null,\r\n files: [],\r\n rawHtml: null,\r\n customValues: {},\r\n pasteNativeEvent: pasteNativeEvent,\r\n };\r\n\r\n return Promise.all(\r\n (items || []).map(item => {\r\n const type = item.type;\r\n\r\n if (type.indexOf(ContentTypePrefix.Image) == 0 && !data.image && item.kind == 'file') {\r\n data.types.push(type);\r\n data.image = item.getAsFile();\r\n return new Promise(resolve => {\r\n if (data.image) {\r\n readFile(data.image, dataUrl => {\r\n data.imageDataUri = dataUrl;\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n } else if (item.kind == 'file') {\r\n return new Promise(resolve => {\r\n const file = item.getAsFile();\r\n if (!!file) {\r\n data.types.push(type);\r\n data.files!.push(file);\r\n }\r\n resolve();\r\n });\r\n } else {\r\n const customType = getAllowedCustomType(type, options?.allowedCustomPasteType);\r\n const handler =\r\n ContentHandlers[type] || (customType ? ContentHandlers[OTHER_TEXT_TYPE] : null);\r\n return new Promise(resolve =>\r\n handler\r\n ? item.getAsString(value => {\r\n data.types.push(type);\r\n handler(data, value, customType);\r\n resolve();\r\n })\r\n : resolve()\r\n );\r\n }\r\n })\r\n ).then(() => data);\r\n}\r\n\r\n/**\r\n * Edge sometimes doesn't remove the headers, which cause we paste more things then expected.\r\n * So we need to remove it in our code\r\n * @param html The HTML string got from clipboard\r\n */\r\nfunction workaroundForEdge(html: string) {\r\n const headerValues = CLIPBOARD_HTML_HEADER_REGEX.exec(html);\r\n\r\n if (headerValues?.length == 3) {\r\n const start = parseInt(headerValues[1]);\r\n const end = parseInt(headerValues[2]);\r\n if (start > 0 && end > start) {\r\n html = html.substring(start, end);\r\n }\r\n }\r\n\r\n return html;\r\n}\r\n\r\nfunction tryParseLinkPreview(data: ClipboardData, value: string) {\r\n try {\r\n data.customValues[EDGE_LINK_PREVIEW] = value;\r\n data.linkPreview = JSON.parse(value) as EdgeLinkPreview;\r\n } catch {}\r\n}\r\n\r\nfunction getAllowedCustomType(type: string, allowedCustomPasteType?: string[]) {\r\n const textType =\r\n type.indexOf(ContentTypePrefix.Text) == 0\r\n ? type.substring(ContentTypePrefix.Text.length)\r\n : null;\r\n const index =\r\n allowedCustomPasteType && textType ? allowedCustomPasteType.indexOf(textType) : -1;\r\n return textType && index >= 0 ? textType : undefined;\r\n}\r\n","import readFile from '../utils/readFile';\r\nimport toArray from '../jsUtils/toArray';\r\nimport {\r\n ClipboardData,\r\n ContentTypePrefix,\r\n ExtractClipboardItemsForIEOptions,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Extract clipboard items to be a ClipboardData object for IE\r\n * @param dataTransfer The clipboard items retrieve from a DataTransfer object\r\n * @param callback Callback function when data is ready\r\n * @returns An object with the following properties:\r\n * types: Available types from the clipboard event\r\n * text: Plain text from the clipboard event\r\n * image: Image file from the clipboard event\r\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\r\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\r\n * not supported by browser.\r\n */\r\nexport default function extractClipboardItemsForIE(\r\n dataTransfer: DataTransfer,\r\n callback: (data: ClipboardData) => void,\r\n options?: ExtractClipboardItemsForIEOptions\r\n) {\r\n const clipboardData: ClipboardData = {\r\n types: dataTransfer.types ? toArray(dataTransfer.types) : [],\r\n text: dataTransfer.getData('text'),\r\n image: null,\r\n files: [],\r\n rawHtml: null,\r\n customValues: {},\r\n pasteNativeEvent: true,\r\n };\r\n\r\n for (let i = 0; i < (dataTransfer.files ? dataTransfer.files.length : 0); i++) {\r\n let file = dataTransfer.files.item(i);\r\n if (file?.type?.indexOf(ContentTypePrefix.Image) == 0) {\r\n clipboardData.image = file;\r\n break;\r\n }\r\n }\r\n\r\n const nextStep = () => {\r\n if (clipboardData.image) {\r\n readFile(clipboardData.image, dataUrl => {\r\n clipboardData.imageDataUri = dataUrl;\r\n callback(clipboardData);\r\n });\r\n } else {\r\n callback(clipboardData);\r\n }\r\n };\r\n\r\n if (options?.getTempDiv && options?.removeTempDiv) {\r\n const div = options.getTempDiv();\r\n div.contentEditable = 'true';\r\n div.innerHTML = '';\r\n div.focus();\r\n div.ownerDocument?.defaultView?.setTimeout(() => {\r\n clipboardData.rawHtml = div.innerHTML;\r\n options.removeTempDiv?.(div);\r\n nextStep();\r\n }, 0);\r\n } else {\r\n clipboardData.rawHtml = undefined;\r\n nextStep();\r\n }\r\n}\r\n","import { PasteType } from 'roosterjs-editor-types';\n\n/**\n * Get the paste type that will be used corresponding to the configuration\n * @param pasteAsText Whether to paste as Text\n * @param applyCurrentStyle Whether to apply the current format to the content\n * @param pasteAsImage Whether to only paste the image\n * @returns\n */\nexport default function getPasteType(\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean\n) {\n if (pasteAsText) {\n return PasteType.AsPlainText;\n } else if (applyCurrentStyle) {\n return PasteType.MergeFormat;\n } else if (pasteAsImage) {\n return PasteType.AsImage;\n } else {\n return PasteType.Normal;\n }\n}\n","/**\n * Handles the content when using the Image Paste Option\n * @param imageDataUri the image uri to use for the image\n * @param fragment fragment that will contain the content to paste.\n */\nexport default function handleImagePaste(imageDataUri: string, fragment: DocumentFragment) {\n const img = fragment.ownerDocument.createElement('img');\n img.style.maxWidth = '100%';\n img.src = imageDataUri;\n fragment.appendChild(img);\n}\n","import wrap from '../utils/wrap';\nimport { NodePosition } from 'roosterjs-editor-types';\n\nconst NBSP_HTML = '\\u00A0';\nconst ENSP_HTML = '\\u2002';\nconst TAB_SPACES = 6;\n\n/**\n * handle the content when using the text only option\n * @param text Text from clipboard\n * @param position current position of the clipboard\n * @param fragment fragment that contains the paste content.\n */\nexport default function handleTextPaste(\n text: string,\n position: NodePosition | null,\n fragment: DocumentFragment\n) {\n const document = fragment.ownerDocument;\n text.split('\\n').forEach((line, index, lines) => {\n line = line\n .replace(/^ /g, NBSP_HTML)\n .replace(/\\r/g, '')\n .replace(/ {2}/g, ' ' + NBSP_HTML);\n\n if (line.includes('\\t')) {\n line = transformTabCharacters(line, index === 0 ? position?.offset : 0);\n }\n\n const textNode = document.createTextNode(line);\n\n // There are 3 scenarios:\n // 1. Single line: Paste as it is\n // 2. Two lines: Add
                between the lines\n // 3. 3 or More lines, For first and last line, paste as it is. For middle lines, wrap with DIV, and add BR if it is empty line\n if (lines.length == 2 && index == 0) {\n // 1 of 2 lines scenario, add BR\n fragment.appendChild(textNode);\n fragment.appendChild(document.createElement('br'));\n } else if (index > 0 && index < lines.length - 1) {\n // Middle line of >=3 lines scenario, wrap with DIV\n fragment.appendChild(wrap(line == '' ? document.createElement('br') : textNode));\n } else {\n // All others, paste as it is\n fragment.appendChild(textNode);\n }\n });\n}\n\n/**\n * @internal\n * Transform \\t characters into EN SPACE characters\n * @param input string NOT containing \\n characters\n * @example t(\"\\thello\", 2) => \"    hello\"\n */\n\nexport function transformTabCharacters(input: string, initialOffset: number = 0) {\n let line = input;\n let tIndex: number;\n while ((tIndex = line.indexOf('\\t')) != -1) {\n const lineBefore = line.slice(0, tIndex);\n const lineAfter = line.slice(tIndex + 1);\n const tabCount = TAB_SPACES - ((lineBefore.length + initialOffset) % TAB_SPACES);\n const tabStr = Array(tabCount).fill(ENSP_HTML).join('');\n line = lineBefore + tabStr + lineAfter;\n }\n return line;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport toArray from '../jsUtils/toArray';\nimport { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\n\nconst START_FRAGMENT = '';\nconst END_FRAGMENT = '';\n\n/**\n * Retrieves the metadata from the content inside of the clipboard\n * @param doc Document parsed from the clipboard\n * @param event Before Paste event\n * @param trustedHTMLHandler the trusted html handler to sanitize the content.\n */\nexport default function retrieveMetadataFromClipboard(\n doc: Document | undefined,\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { clipboardData, sanitizingOption } = event;\n const { rawHtml } = clipboardData;\n if (rawHtml && doc?.body) {\n const attributes = doc.querySelector('html')?.attributes;\n (attributes ? toArray(attributes) : []).reduce((attrs, attr) => {\n attrs[attr.name] = attr.value;\n return attrs;\n }, event.htmlAttributes);\n toArray(doc.querySelectorAll('meta')).reduce((attrs, meta) => {\n attrs[meta.name] = meta.content;\n return attrs;\n }, event.htmlAttributes);\n\n clipboardData.htmlFirstLevelChildTags = [];\n doc?.body.normalize();\n\n for (let i = 0; i < doc?.body.childNodes.length; i++) {\n const node = doc?.body.childNodes.item(i);\n if (node.nodeType == Node.TEXT_NODE) {\n const trimmedString = node.nodeValue?.replace(/(\\r\\n|\\r|\\n)/gm, '').trim();\n if (!trimmedString) {\n continue;\n }\n }\n const nodeTag = getTagOfNode(node);\n if (node.nodeType != Node.COMMENT_NODE) {\n clipboardData.htmlFirstLevelChildTags.push(nodeTag);\n }\n }\n // Move all STYLE nodes into header, and save them into sanitizing options.\n // Because if we directly move them into a fragment, all sheets under STYLE will be lost.\n processStyles(doc, style => {\n doc?.head.appendChild(style);\n sanitizingOption.additionalGlobalStyleNodes.push(style);\n });\n\n const startIndex = rawHtml.indexOf(START_FRAGMENT);\n const endIndex = rawHtml.lastIndexOf(END_FRAGMENT);\n\n if (startIndex >= 0 && endIndex >= startIndex + START_FRAGMENT.length) {\n event.htmlBefore = rawHtml.substr(0, startIndex);\n event.htmlAfter = rawHtml.substr(endIndex + END_FRAGMENT.length);\n clipboardData.html = rawHtml.substring(startIndex + START_FRAGMENT.length, endIndex);\n doc.body.innerHTML = trustedHTMLHandler(clipboardData.html);\n\n // Remove style nodes just added by setting innerHTML of body since we already have all\n // style nodes in header.\n // Here we use doc.body instead of doc because we only want to remove STYLE nodes under BODY\n // and the nodes under HEAD are still used when convert global CSS to inline\n processStyles(doc.body, style => style.parentNode?.removeChild(style));\n }\n }\n}\n\nfunction processStyles(node: ParentNode, callback: (style: HTMLStyleElement) => void) {\n toArray(node.querySelectorAll('style')).forEach(callback);\n}\n","import getInheritableStyles from '../htmlSanitizer/getInheritableStyles';\nimport HtmlSanitizer from '../htmlSanitizer/HtmlSanitizer';\nimport { BeforePasteEvent, NodePosition } from 'roosterjs-editor-types';\n\n/**\n * Sanitize the content from the pasted content\n * @param event The before paste event\n * @param position the position of the cursor\n */\nexport default function sanitizePasteContent(\n event: BeforePasteEvent,\n position: NodePosition | null\n) {\n const { fragment } = event;\n const sanitizer = new HtmlSanitizer(event.sanitizingOption);\n sanitizer.convertGlobalCssToInlineCss(fragment);\n sanitizer.sanitize(fragment, position ? getInheritableStyles(position.element) : undefined);\n}\n","import contains from '../utils/contains';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getFirstLastBlockElement from '../blockElements/getFirstLastBlockElement';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, InlineElement } from 'roosterjs-editor-types';\r\nimport { getFirstInlineElement } from '../inlineElements/getFirstLastInlineElement';\r\n\r\n/**\r\n * @internal\r\n * provides a scope object for traversing the entire editor body starting from the beginning\r\n */\r\nexport default class BodyScoper implements TraversingScoper {\r\n private startNode: Node | null;\r\n\r\n /**\r\n * Construct a new instance of BodyScoper class\r\n * @param rootNode Root node of the body\r\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\r\n */\r\n constructor(public rootNode: Node, startNode?: Node) {\r\n this.startNode = contains(rootNode, startNode) ? startNode! : null;\r\n }\r\n\r\n /**\r\n * Get the start block element\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n return this.startNode\r\n ? getBlockElementAtNode(this.rootNode, this.startNode)\r\n : getFirstLastBlockElement(this.rootNode, true /*isFirst*/);\r\n }\r\n\r\n /**\r\n * Get the start inline element\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n return this.startNode\r\n ? getInlineElementAtNode(this.rootNode, this.startNode)\r\n : getFirstInlineElement(this.rootNode);\r\n }\r\n\r\n /**\r\n * Since the scope is global, all blocks under the root node are in scope\r\n */\r\n public isBlockInScope(blockElement: BlockElement): boolean {\r\n return contains(this.rootNode, blockElement.getStartNode());\r\n }\r\n\r\n /**\r\n * Since we're at body scope, inline elements never need to be trimmed\r\n */\r\n public trimInlineElement(inlineElement: InlineElement): InlineElement {\r\n return inlineElement;\r\n }\r\n}\r\n","import BodyScoper from './BodyScoper';\r\nimport EmptyInlineElement from '../inlineElements/EmptyInlineElement';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport PartialInlineElement from '../inlineElements/PartialInlineElement';\r\nimport SelectionBlockScoper from './SelectionBlockScoper';\r\nimport SelectionScoper from './SelectionScoper';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { getInlineElementBeforeAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\nimport { getLeafSibling } from '../utils/getLeafSibling';\r\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\r\nimport {\r\n BlockElement,\r\n ContentPosition,\r\n IContentTraverser,\r\n InlineElement,\r\n NodePosition,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * The provides traversing of content inside editor.\r\n * There are two ways to traverse, block by block, or inline element by inline element\r\n * Block and inline traversing is independent from each other, meaning if you traverse block by block, it does not change\r\n * the current inline element position\r\n */\r\nexport default class ContentTraverser implements IContentTraverser {\r\n private currentInline: InlineElement | null = null;\r\n private currentBlock: BlockElement | null = null;\r\n\r\n /**\r\n * Create a content traverser for the whole body of given root node\r\n * @param scoper Traversing scoper object to help scope the traversing\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n private constructor(private scoper: TraversingScoper, private skipTags?: string[]) {}\r\n\r\n /**\r\n * Create a content traverser for the whole body of given root node\r\n * @param rootNode The root node to traverse in\r\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createBodyTraverser(\r\n rootNode: Node,\r\n startNode?: Node,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new BodyScoper(rootNode, startNode));\r\n }\r\n\r\n /**\r\n * Create a content traverser for the given selection\r\n * @param rootNode The root node to traverse in\r\n * @param range The selection range to scope the traversing\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createSelectionTraverser(\r\n rootNode: Node,\r\n range: Range,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new SelectionScoper(rootNode, range), skipTags);\r\n }\r\n\r\n /**\r\n * Create a content traverser for a block element which contains the given position\r\n * @param rootNode The root node to traverse in\r\n * @param position A position inside a block, traversing will be scoped within this block.\r\n * If passing a range, the start position of this range will be used\r\n * @param startFrom Start position of traversing. The value can be Begin, End, SelectionStart\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createBlockTraverser(\r\n rootNode: Node,\r\n position: NodePosition | Range,\r\n start: ContentPosition | CompatibleContentPosition = ContentPosition.SelectionStart,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new SelectionBlockScoper(rootNode, position, start));\r\n }\r\n\r\n /**\r\n * Get current block\r\n */\r\n public get currentBlockElement(): BlockElement | null {\r\n // Prepare currentBlock from the scoper\r\n if (!this.currentBlock) {\r\n this.currentBlock = this.scoper.getStartBlockElement();\r\n }\r\n\r\n return this.currentBlock;\r\n }\r\n\r\n /**\r\n * Get next block element\r\n */\r\n public getNextBlockElement(): BlockElement | null {\r\n return this.getPreviousNextBlockElement(true /*isNext*/);\r\n }\r\n\r\n /**\r\n * Get previous block element\r\n */\r\n public getPreviousBlockElement(): BlockElement | null {\r\n return this.getPreviousNextBlockElement(false /*isNext*/);\r\n }\r\n\r\n private getPreviousNextBlockElement(isNext: boolean): BlockElement | null {\r\n let current = this.currentBlockElement;\r\n\r\n if (!current) {\r\n return null;\r\n }\r\n\r\n let leaf = getLeafSibling(\r\n this.scoper.rootNode,\r\n isNext ? current.getEndNode() : current.getStartNode(),\r\n isNext,\r\n this.skipTags\r\n );\r\n let newBlock = leaf ? getBlockElementAtNode(this.scoper.rootNode, leaf) : null;\r\n\r\n // Make sure this is right block:\r\n // 1) the block is in scope per scoper\r\n // 2) the block is after (for next) or before (for previous) the current block\r\n // Then:\r\n // 1) Re-position current block to newly found block\r\n if (\r\n newBlock &&\r\n this.scoper.isBlockInScope(newBlock) &&\r\n ((isNext && newBlock.isAfter(current)) || (!isNext && current.isAfter(newBlock)))\r\n ) {\r\n this.currentBlock = newBlock;\r\n return this.currentBlock;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Current inline element getter\r\n */\r\n public get currentInlineElement(): InlineElement | null {\r\n // Retrieve a start inline from scoper\r\n if (!this.currentInline) {\r\n this.currentInline = this.scoper.getStartInlineElement();\r\n }\r\n\r\n return this.currentInline instanceof EmptyInlineElement ? null : this.currentInline;\r\n }\r\n\r\n /**\r\n * Get next inline element\r\n */\r\n public getNextInlineElement(): InlineElement | null {\r\n return this.getPreviousNextInlineElement(true /*isNext*/);\r\n }\r\n\r\n /**\r\n * Get previous inline element\r\n */\r\n public getPreviousInlineElement(): InlineElement | null {\r\n return this.getPreviousNextInlineElement(false /*isNext*/);\r\n }\r\n\r\n private getPreviousNextInlineElement(isNext: boolean): InlineElement | null {\r\n let current = this.currentInlineElement || this.currentInline;\r\n let newInline: InlineElement | null;\r\n\r\n if (!current) {\r\n return null;\r\n }\r\n\r\n if (current instanceof EmptyInlineElement) {\r\n newInline = getInlineElementBeforeAfter(\r\n this.scoper.rootNode,\r\n current.getStartPosition(),\r\n isNext\r\n );\r\n if (newInline && !current.getParentBlock().contains(newInline.getContainerNode())) {\r\n newInline = null;\r\n }\r\n } else {\r\n newInline = getNextPreviousInlineElement(this.scoper.rootNode, current, isNext);\r\n newInline =\r\n newInline &&\r\n current &&\r\n ((isNext && newInline.isAfter(current)) || (!isNext && current.isAfter(newInline)))\r\n ? newInline\r\n : null;\r\n }\r\n\r\n // For inline, we need to make sure:\r\n // 1) it is really next/previous to current\r\n // 2) pass on the new inline to this.scoper to do the trimming and we still get back an inline\r\n // Then\r\n // 1) re-position current inline\r\n if (newInline && (newInline = this.scoper.trimInlineElement(newInline))) {\r\n this.currentInline = newInline;\r\n return this.currentInline;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nfunction getNextPreviousInlineElement(\r\n rootNode: Node,\r\n current: InlineElement,\r\n isNext: boolean\r\n): InlineElement | null {\r\n if (!current) {\r\n return null;\r\n }\r\n if (current instanceof PartialInlineElement) {\r\n // if current is partial, get the other half of the inline unless it is no more\r\n let result = isNext ? current.nextInlineElement : current.previousInlineElement;\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // Get a leaf node after startNode and use that base to find next inline\r\n let startNode: Node | null = current.getContainerNode();\r\n startNode = getLeafSibling(rootNode, startNode, isNext);\r\n return getInlineElementAtNode(rootNode, startNode);\r\n}\r\n","import ContentTraverser from './ContentTraverser';\r\nimport createRange from '../selection/createRange';\r\nimport {\r\n IContentTraverser,\r\n InlineElement,\r\n IPositionContentSearcher,\r\n NodePosition,\r\n} from 'roosterjs-editor-types';\r\n\r\n// White space matching regex. It matches following chars:\r\n// \\s: white space\r\n// \\u00A0: no-breaking white space\r\n// \\u200B: zero width space\r\n// \\u3000: full width space (which can come from JPN IME)\r\nconst WHITESPACE_REGEX = /[\\s\\u00A0\\u200B\\u3000]+([^\\s\\u00A0\\u200B\\u3000]*)$/i;\r\n\r\n/**\r\n * The class that helps search content around a position\r\n */\r\nexport default class PositionContentSearcher implements IPositionContentSearcher {\r\n // The cached text before position that has been read so far\r\n private text = '';\r\n\r\n // The cached word before position\r\n private word: string = '';\r\n\r\n // The inline element before position\r\n private inlineBefore: InlineElement | null = null;\r\n\r\n // The inline element after position\r\n private inlineAfter: InlineElement | null = null;\r\n\r\n // The content traverser used to traverse backwards\r\n private traverser: IContentTraverser | null = null;\r\n\r\n // Backward parsing has completed\r\n private traversingComplete: boolean = false;\r\n\r\n // All inline elements before position that have been read so far\r\n private inlineElements: InlineElement[] = [];\r\n\r\n // First non-text inline before position\r\n private nearestNonTextInlineElement: InlineElement | null = null;\r\n\r\n /**\r\n * Create a new CursorData instance\r\n * @param rootNode Root node of the whole scope\r\n * @param position Start position\r\n */\r\n constructor(private rootNode: Node, private position: NodePosition) {}\r\n\r\n /**\r\n * Get the word before position. The word is determined by scanning backwards till the first white space, the portion\r\n * between position and the white space is the word before position\r\n * @returns The word before position\r\n */\r\n public getWordBefore(): string {\r\n if (!this.word) {\r\n this.traverse(() => this.word);\r\n }\r\n\r\n return this.word || '';\r\n }\r\n\r\n /**\r\n * Get the inline element before position\r\n * @returns The inlineElement before position\r\n */\r\n public getInlineElementBefore(): InlineElement | null {\r\n if (!this.inlineBefore) {\r\n this.traverse(null);\r\n }\r\n\r\n return this.inlineBefore;\r\n }\r\n\r\n /**\r\n * Get the inline element after position\r\n * @returns The inline element after position\r\n */\r\n public getInlineElementAfter(): InlineElement | null {\r\n if (!this.inlineAfter) {\r\n this.inlineAfter = ContentTraverser.createBlockTraverser(\r\n this.rootNode,\r\n this.position\r\n ).currentInlineElement;\r\n }\r\n\r\n return this.inlineAfter;\r\n }\r\n\r\n /**\r\n * Get X number of chars before position\r\n * The actual returned chars may be less than what is requested.\r\n * @param length The length of string user want to get, the string always ends at the position,\r\n * so this length determines the start position of the string\r\n * @returns The actual string we get as a sub string, or the whole string before position when\r\n * there is not enough chars in the string\r\n */\r\n public getSubStringBefore(length: number): string {\r\n if (this.text.length < length) {\r\n this.traverse(() => this.text.length >= length);\r\n }\r\n\r\n return this.text.substr(Math.max(0, this.text.length - length));\r\n }\r\n\r\n /**\r\n * Try to get a range matches the given text before the position\r\n * @param text The text to match against\r\n * @param exactMatch Whether it is an exact match\r\n * @returns The range for the matched text, null if unable to find a match\r\n */\r\n public getRangeFromText(text: string, exactMatch: boolean): Range | null {\r\n if (!text) {\r\n return null;\r\n }\r\n\r\n let startPosition: NodePosition | null = null;\r\n let endPosition: NodePosition | null = null;\r\n let textIndex = text.length - 1;\r\n\r\n this.forEachTextInlineElement(textInline => {\r\n let nodeContent = textInline.getTextContent() || '';\r\n let nodeIndex = nodeContent.length - 1;\r\n for (; nodeIndex >= 0 && textIndex >= 0; nodeIndex--) {\r\n if (text.charCodeAt(textIndex) == nodeContent.charCodeAt(nodeIndex)) {\r\n textIndex--;\r\n\r\n // on first time when end is matched, set the end of range\r\n if (!endPosition) {\r\n endPosition = textInline.getStartPosition().move(nodeIndex + 1);\r\n }\r\n } else if (exactMatch || endPosition) {\r\n // Mismatch found when exact match or end already match, so return since matching failed\r\n return true;\r\n }\r\n }\r\n\r\n // when textIndex == -1, we have a successful complete match\r\n if (textIndex == -1) {\r\n startPosition = textInline.getStartPosition().move(nodeIndex + 1);\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return startPosition && endPosition && createRange(startPosition, endPosition);\r\n }\r\n\r\n /**\r\n * Get text section before position till stop condition is met.\r\n * This offers consumers to retrieve text section by section\r\n * The section essentially is just an inline element which has Container element\r\n * so that the consumer can remember it for anchoring popup or verification purpose\r\n * when position moves out of context etc.\r\n * @param stopFunc The callback stop function\r\n */\r\n public forEachTextInlineElement(callback: (textInlineElement: InlineElement) => any) {\r\n // We cache all text sections read so far\r\n // Every time when you ask for textSection, we start with the cached first\r\n // and resort to further reading once we exhausted with the cache\r\n if (!this.inlineElements.some(callback)) {\r\n this.traverse(callback);\r\n }\r\n }\r\n\r\n /**\r\n * Get first non textual inline element before position\r\n * @returns First non textual inline element before position or null if no such element exists\r\n */\r\n public getNearestNonTextInlineElement(): InlineElement | null {\r\n if (!this.nearestNonTextInlineElement) {\r\n this.traverse(() => this.nearestNonTextInlineElement);\r\n }\r\n\r\n return this.nearestNonTextInlineElement;\r\n }\r\n\r\n /**\r\n * Continue traversing backward till stop condition is met or begin of block is reached\r\n */\r\n private traverse(callback: null | ((inlineElement: InlineElement) => any)) {\r\n this.traverser =\r\n this.traverser || ContentTraverser.createBlockTraverser(this.rootNode, this.position);\r\n\r\n if (!this.traverser || this.traversingComplete) {\r\n return;\r\n }\r\n\r\n let previousInline = this.traverser.getPreviousInlineElement();\r\n while (!this.traversingComplete) {\r\n this.inlineBefore = this.inlineBefore || previousInline;\r\n\r\n if (previousInline && previousInline.isTextualInlineElement()) {\r\n let textContent = previousInline.getTextContent();\r\n\r\n // build the word before position if it is not built yet\r\n if (!this.word) {\r\n // Match on the white space, the portion after space is on the index of 1 of the matched result\r\n // (index at 0 is whole match result, index at 1 is the word)\r\n let matches = WHITESPACE_REGEX.exec(textContent);\r\n if (matches && matches.length == 2) {\r\n this.word = matches[1] + this.text;\r\n }\r\n }\r\n\r\n this.text = textContent + this.text;\r\n this.inlineElements.push(previousInline);\r\n\r\n // Check if stop condition is met\r\n if (callback && callback(previousInline)) {\r\n break;\r\n }\r\n } else {\r\n this.nearestNonTextInlineElement = previousInline;\r\n this.traversingComplete = true;\r\n if (!this.word) {\r\n // if parsing is done, whatever we get so far in this.cachedText should also be in this.cachedWordBeforeCursor\r\n this.word = this.text;\r\n }\r\n\r\n // When a non-textual inline element, or null is seen, we consider parsing complete\r\n // TODO: we may need to change this if there is a future need to parse beyond text, i.e.\r\n // we have aaa @someone bbb, and we want to read the text before @someone\r\n break;\r\n }\r\n\r\n previousInline = this.traverser.getPreviousInlineElement();\r\n }\r\n }\r\n}\r\n","import EmptyInlineElement from '../inlineElements/EmptyInlineElement';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport NodeBlockElement from '../blockElements/NodeBlockElement';\r\nimport Position from '../selection/Position';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, ContentPosition, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\nimport { getInlineElementAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\nimport {\r\n getFirstInlineElement,\r\n getLastInlineElement,\r\n} from '../inlineElements/getFirstLastInlineElement';\r\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * @internal\r\n * This provides traversing content in a selection start block\r\n * This is commonly used for those cursor context sensitive plugin,\r\n * they want to know text being typed at cursor\r\n * This provides a scope for parsing from cursor position up to begin of the selection block\r\n */\r\nexport default class SelectionBlockScoper implements TraversingScoper {\r\n private block: BlockElement | null;\r\n private position: NodePosition;\r\n\r\n /**\r\n * Create a new instance of SelectionBlockScoper class\r\n * @param rootNode The root node of the whole scope\r\n * @param position Position of the selection start\r\n * @param startFrom Where to start, can be Begin, End, SelectionStart\r\n */\r\n constructor(\r\n public rootNode: Node,\r\n position: NodePosition | Range,\r\n private startFrom: ContentPosition | CompatibleContentPosition\r\n ) {\r\n if (safeInstanceOf(position, 'Range')) {\r\n position = Position.getStart(position);\r\n }\r\n\r\n this.position = position.normalize();\r\n this.block = getBlockElementAtNode(this.rootNode, this.position.node);\r\n }\r\n\r\n /**\r\n * Get the start block element\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n return this.block;\r\n }\r\n\r\n /**\r\n * Get the start inline element\r\n * The start inline refers to inline before the selection start\r\n * The reason why we choose the one before rather after is, when cursor is at the end of a paragraph,\r\n * the one after likely will point to inline in next paragraph which may be null if the cursor is at bottom of editor\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n if (this.block) {\r\n switch (this.startFrom) {\r\n case ContentPosition.Begin:\r\n case ContentPosition.End:\r\n case ContentPosition.DomEnd:\r\n return getFirstLastInlineElementFromBlockElement(\r\n this.block,\r\n this.startFrom == ContentPosition.Begin\r\n );\r\n case ContentPosition.SelectionStart:\r\n // Get the inline before selection start point, and ensure it falls in the selection block\r\n let startInline = getInlineElementAfter(this.rootNode, this.position);\r\n return startInline && this.block.contains(startInline.getContainerNode())\r\n ? startInline\r\n : new EmptyInlineElement(this.position, this.block);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Check if the given block element is in current scope\r\n * @param blockElement The block element to check\r\n */\r\n public isBlockInScope(blockElement: BlockElement): boolean {\r\n return this.block && blockElement ? this.block.equals(blockElement) : false;\r\n }\r\n\r\n /**\r\n * Trim the incoming inline element, and return an inline element\r\n * This just tests and return the inline element if it is in block\r\n * This is a block scoper, which is not like selection scoper where it may cut an inline element in half\r\n * A block scoper does not cut an inline in half\r\n */\r\n public trimInlineElement(inlineElement: InlineElement): InlineElement | null {\r\n return this.block && inlineElement && this.block.contains(inlineElement.getContainerNode())\r\n ? inlineElement\r\n : null;\r\n }\r\n}\r\n\r\n/**\r\n * Get first/last InlineElement of the given BlockElement\r\n * @param block The BlockElement to get InlineElement from\r\n * @param isFirst True to get first InlineElement, false to get last InlineElement\r\n */\r\nfunction getFirstLastInlineElementFromBlockElement(\r\n block: BlockElement,\r\n isFirst: boolean\r\n): InlineElement | null {\r\n if (block instanceof NodeBlockElement) {\r\n let blockNode = block.getStartNode();\r\n return isFirst ? getFirstInlineElement(blockNode) : getLastInlineElement(blockNode);\r\n } else {\r\n return getInlineElementAtNode(block, isFirst ? block.getStartNode() : block.getEndNode());\r\n }\r\n}\r\n","import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport PartialInlineElement from '../inlineElements/PartialInlineElement';\r\nimport Position from '../selection/Position';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\nimport { getInlineElementAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\n\r\n/**\r\n * @internal\r\n * This is selection scoper that provide a start inline as the start of the selection\r\n * and checks if a block falls in the selection (isBlockInScope)\r\n * last trimInlineElement to trim any inline element to return a partial that falls in the selection\r\n */\r\nexport default class SelectionScoper implements TraversingScoper {\r\n private start: NodePosition;\r\n private end: NodePosition;\r\n private startBlock: BlockElement | null = null;\r\n private startInline: InlineElement | null = null;\r\n\r\n /**\r\n * Create a new instance of SelectionScoper class\r\n * @param rootNode The root node of the content\r\n * @param range The selection range to scope to\r\n */\r\n constructor(public rootNode: Node, range: Range) {\r\n this.start = Position.getStart(range).normalize();\r\n this.end = Position.getEnd(range).normalize();\r\n }\r\n\r\n /**\r\n * Provide a start block as the first block after the cursor\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n if (!this.startBlock) {\r\n this.startBlock = getBlockElementAtNode(this.rootNode, this.start.node);\r\n }\r\n\r\n return this.startBlock;\r\n }\r\n\r\n /**\r\n * Provide a start inline as the first inline after the cursor\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n if (!this.startInline) {\r\n this.startInline = this.trimInlineElement(\r\n getInlineElementAfter(this.rootNode, this.start)\r\n );\r\n }\r\n\r\n return this.startInline;\r\n }\r\n\r\n /**\r\n * Checks if a block completely falls in the selection\r\n * @param block The BlockElement to check\r\n */\r\n public isBlockInScope(block: BlockElement): boolean {\r\n if (!block) {\r\n return false;\r\n }\r\n let inScope = false;\r\n let selStartBlock = this.getStartBlockElement();\r\n if (this.start.equalTo(this.end)) {\r\n inScope = !!selStartBlock && selStartBlock.equals(block);\r\n } else {\r\n let selEndBlock = getBlockElementAtNode(this.rootNode, this.end.node);\r\n\r\n // There are three cases that are considered as \"block in scope\"\r\n // 1) The start of selection falls on the block\r\n // 2) The end of selection falls on the block\r\n // 3) the block falls in-between selection start and end\r\n inScope =\r\n !!selStartBlock &&\r\n !!selEndBlock &&\r\n (block.equals(selStartBlock) ||\r\n block.equals(selEndBlock) ||\r\n (block.isAfter(selStartBlock) && selEndBlock.isAfter(block)));\r\n }\r\n\r\n return inScope;\r\n }\r\n\r\n /**\r\n * Trim an incoming inline. If it falls completely outside selection, return null\r\n * otherwise return a partial that represents the portion that falls in the selection\r\n * @param inline The InlineElement to check\r\n */\r\n public trimInlineElement(inline: InlineElement | null): InlineElement | null {\r\n if (!inline || this.start.equalTo(this.end)) {\r\n return null;\r\n }\r\n\r\n // Temp code. Will be changed to using InlineElement.getStart/EndPosition() soon\r\n let start = inline.getStartPosition();\r\n let end = inline.getEndPosition();\r\n\r\n if (start.isAfter(this.end) || this.start.isAfter(end)) {\r\n return null;\r\n }\r\n\r\n let startPartial = false;\r\n let endPartial = false;\r\n\r\n if (this.start.isAfter(start)) {\r\n start = this.start;\r\n startPartial = true;\r\n }\r\n\r\n if (end.isAfter(this.end)) {\r\n end = this.end;\r\n endPartial = true;\r\n }\r\n\r\n return start.isAfter(end) || start.equalTo(end)\r\n ? null\r\n : startPartial || endPartial\r\n ? new PartialInlineElement(\r\n inline,\r\n startPartial ? start : undefined,\r\n endPartial ? end : undefined\r\n )\r\n : inline;\r\n }\r\n}\r\n","import createElement from '../utils/createElement';\nimport getDelimiterFromElement from './getDelimiterFromElement';\nimport { DelimiterClasses } from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * Adds delimiters to the element provided. If the delimiters already exists, will not be added\n * @param node the node to add the delimiters\n */\nexport default function addDelimiters(node: Element): Element[] {\n let [delimiterAfter, delimiterBefore] = getDelimiters(node);\n\n if (!delimiterAfter) {\n delimiterAfter = addDelimiterAfter(node);\n }\n if (!delimiterBefore) {\n delimiterBefore = addDelimiterBefore(node);\n }\n return [delimiterAfter, delimiterBefore];\n}\n\n/**\n * Adds delimiter after the element provided.\n * @param element element to use\n */\nexport function addDelimiterAfter(element: Element) {\n return insertDelimiter(element, DelimiterClasses.DELIMITER_AFTER);\n}\n\n/**\n * Adds delimiter before the element provided.\n * @param element element to use\n */\nexport function addDelimiterBefore(element: Element) {\n return insertDelimiter(element, DelimiterClasses.DELIMITER_BEFORE);\n}\n\nfunction getDelimiters(entityWrapper: Element): (Element | undefined)[] {\n const result: (Element | undefined)[] = [];\n const { nextElementSibling, previousElementSibling } = entityWrapper;\n result.push(\n isDelimiter(nextElementSibling, DelimiterClasses.DELIMITER_AFTER),\n isDelimiter(previousElementSibling, DelimiterClasses.DELIMITER_BEFORE)\n );\n\n return result;\n}\n\nfunction isDelimiter(el: Element | null, className: string): Element | undefined {\n return el && getDelimiterFromElement(el) && el.classList.contains(className) ? el : undefined;\n}\n\nfunction insertDelimiter(element: Element, delimiterClass: DelimiterClasses) {\n const span = createElement(\n {\n tag: 'span',\n className: delimiterClass,\n children: [ZERO_WIDTH_SPACE],\n },\n element.ownerDocument\n ) as HTMLElement;\n if (span) {\n const insertPosition: InsertPosition =\n delimiterClass == DelimiterClasses.DELIMITER_AFTER ? 'afterend' : 'beforebegin';\n element.insertAdjacentElement(insertPosition, span);\n }\n\n return span;\n}\n","import safeInstanceOf from '../utils/safeInstanceOf';\nimport { DelimiterClasses } from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * Retrieves Delimiter information from a provided element.\n * @param element element to try to retrieve a delimiter\n * @returns delimiter info if it is a Delimiter, else null\n */\nexport default function getDelimiterFromElement(element: Node | null | undefined): Element | null {\n if (!element) {\n return null;\n }\n if (\n safeInstanceOf(element, 'HTMLSpanElement') &&\n (element.classList.contains(DelimiterClasses.DELIMITER_AFTER) ||\n element.classList.contains(DelimiterClasses.DELIMITER_BEFORE)) &&\n element.textContent === ZERO_WIDTH_SPACE\n ) {\n return element;\n }\n\n return null;\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport contains from '../utils/contains';\nimport ContentTraverser from '../contentTraverser/ContentTraverser';\nimport createRange from '../selection/createRange';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isNodeEmpty from '../utils/isNodeEmpty';\nimport isPositionAtBeginningOf from '../selection/isPositionAtBeginningOf';\nimport isVoidHtmlElement from '../utils/isVoidHtmlElement';\nimport LinkInlineElement from '../inlineElements/LinkInlineElement';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport pasteTable from '../table/pasteTable';\nimport Position from '../selection/Position';\nimport PositionContentSearcher from '../contentTraverser/PositionContentSearcher';\nimport queryElements from '../utils/queryElements';\nimport splitTextNode from '../utils/splitTextNode';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport wrap from '../utils/wrap';\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\nimport {\n BlockElement,\n NodePosition,\n NodeType,\n PositionType,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst NOT_EDITABLE_SELECTOR = '[contenteditable=false]';\n\nconst adjustSteps: ((\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n) => NodePosition)[] = [\n adjustInsertPositionForHyperLink,\n adjustInsertPositionForStructuredNode,\n adjustInsertPositionForParagraph,\n adjustInsertPositionForVoidElement,\n adjustInsertPositionForMoveCursorOutOfALink,\n adjustInsertPositionForNotEditableNode,\n adjustInsertPositionForTable,\n];\n\n/**\n * Adjust position for A tag don't be nested inside another A tag.\n */\nfunction adjustInsertPositionForHyperLink(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n let blockElement = getBlockElementAtNode(root, position.node);\n\n if (blockElement) {\n // Find the first
                tag within current block which covers current selection\n // If there are more than one nested, let's handle the first one only since that is not a common scenario.\n let anchor: HTMLElement | null = queryElements(\n root,\n 'a[href]',\n null /*forEachCallback*/,\n QueryScope.OnSelection,\n createRange(position)\n ).filter((a: HTMLElement) => blockElement!.contains(a))[0];\n\n // If this is about to insert node to an empty A tag, clear the A tag and reset position\n if (anchor && isNodeEmpty(anchor)) {\n position = new Position(anchor, PositionType.Before);\n safeRemove(anchor);\n anchor = null;\n }\n\n // If this is about to insert nodes which contains A tag into another A tag, need to break current A tag\n // otherwise we will have nested A tags which is a wrong HTML structure\n if (\n anchor &&\n ((nodeToInsert as HTMLElement))?.querySelector &&\n ((nodeToInsert as HTMLElement))?.querySelector('a[href]')\n ) {\n let normalizedPosition = position.normalize();\n let parentNode = normalizedPosition.node.parentNode!;\n let nextNode =\n normalizedPosition.node.nodeType == NodeType.Text\n ? splitTextNode(\n normalizedPosition.node,\n normalizedPosition.offset,\n false /*returnFirstPart*/\n )\n : normalizedPosition.isAtEnd\n ? normalizedPosition.node.nextSibling\n : normalizedPosition.node;\n let splitter: Node | null = root.ownerDocument.createTextNode('');\n parentNode.insertBefore(splitter, nextNode);\n\n while (splitter && contains(anchor, splitter)) {\n splitter = splitBalancedNodeRange(splitter);\n }\n\n if (splitter) {\n position = new Position(splitter, PositionType.Before);\n safeRemove(splitter);\n }\n }\n }\n\n return position;\n}\n\n/**\n * Adjust position for a node don't be nested inside tags like BR, LI, TD.\n */\nfunction adjustInsertPositionForStructuredNode(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n let rootNodeToInsert: Node | null = nodeToInsert;\n let isFragment: boolean = false;\n\n if (rootNodeToInsert.nodeType == NodeType.DocumentFragment) {\n isFragment = true;\n let rootNodes = toArray(rootNodeToInsert.childNodes).filter(\n (n: ChildNode) => getTagOfNode(n) != 'BR'\n );\n rootNodeToInsert = rootNodes.length == 1 ? rootNodes[0] : null;\n }\n\n let tag = getTagOfNode(rootNodeToInsert);\n let hasBrNextToRoot =\n tag && rootNodeToInsert && getTagOfNode(rootNodeToInsert.nextSibling) == 'BR';\n let listItem = findClosestElementAncestor(position.node, root, 'LI');\n let listNode = listItem && findClosestElementAncestor(listItem, root, 'OL,UL');\n let tdNode = findClosestElementAncestor(position.node, root, 'TD,TH');\n\n if (tag == 'LI') {\n tag = listNode ? getTagOfNode(listNode) : 'UL';\n rootNodeToInsert = wrap(rootNodeToInsert!, tag);\n }\n\n if (\n (tag == 'OL' || tag == 'UL') &&\n rootNodeToInsert &&\n getTagOfNode(rootNodeToInsert.firstChild) == 'LI'\n ) {\n let shouldInsertListAsText = !rootNodeToInsert.firstChild!.nextSibling && !hasBrNextToRoot;\n\n if (hasBrNextToRoot && rootNodeToInsert.parentNode) {\n safeRemove(rootNodeToInsert.nextSibling!);\n }\n\n if (shouldInsertListAsText) {\n unwrap(rootNodeToInsert.firstChild!);\n unwrap(rootNodeToInsert);\n } else if (getTagOfNode(listNode) == tag) {\n unwrap(rootNodeToInsert);\n position = new Position(\n listItem!,\n isPositionAtBeginningOf(position, listItem!)\n ? PositionType.Before\n : PositionType.After\n );\n }\n }\n\n if (isFragment && tag == 'TABLE' && tdNode) {\n pasteTable(\n tdNode,\n rootNodeToInsert,\n position,\n range\n );\n position = new Position(rootNodeToInsert!, 0);\n moveChildNodes(nodeToInsert);\n }\n\n return position;\n}\n\n/**\n * Change P tag to DIV, when a new node when insert node.\n */\n\nfunction adjustInsertPositionForParagraph(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (getTagOfNode(position.node) == 'P') {\n // Insert into a P tag may cause issues when the inserted content contains any block element.\n // Change P tag to DIV to make sure it works well\n let pos = position.normalize();\n let div = changeElementTag(position.node, 'div');\n if (pos.node != div) {\n position = pos;\n }\n }\n\n return position;\n}\n\n/**\n * Adjust position for a node that can have children.\n */\n\nfunction adjustInsertPositionForVoidElement(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (isVoidHtmlElement(position.node)) {\n position = new Position(\n position.node,\n position.isAtEnd ? PositionType.After : PositionType.Before\n );\n }\n return position;\n}\n\n/**\n * Adjust the position cursor out of link when a new node is inserted.\n */\n\nfunction adjustInsertPositionForMoveCursorOutOfALink(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (range && range.collapsed) {\n const searcher = new PositionContentSearcher(root, Position.getStart(range));\n const inlineElementBefore = searcher.getInlineElementBefore();\n const inlineElementAfter = searcher.getInlineElementAfter();\n if (inlineElementBefore instanceof LinkInlineElement) {\n position = new Position(inlineElementBefore.getContainerNode(), PositionType.After);\n } else if (inlineElementAfter instanceof LinkInlineElement) {\n position = new Position(inlineElementAfter.getContainerNode(), PositionType.Before);\n }\n }\n return position;\n}\n\n/**\n * Adjust the position cursor out of a not contenteditable element.\n */\nfunction adjustInsertPositionForNotEditableNode(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (!position.element?.isContentEditable) {\n let nonEditableElement: HTMLElement | undefined;\n let lastNonEditableElement: HTMLElement | null = findClosestElementAncestor(\n position.node,\n root,\n NOT_EDITABLE_SELECTOR\n );\n\n while (lastNonEditableElement) {\n nonEditableElement = lastNonEditableElement;\n lastNonEditableElement = nonEditableElement?.parentElement\n ? findClosestElementAncestor(\n nonEditableElement.parentElement,\n root,\n NOT_EDITABLE_SELECTOR\n )\n : null;\n }\n\n if (nonEditableElement) {\n position = new Position(nonEditableElement, PositionType.After);\n return adjustInsertPositionForNotEditableNode(root, nodeToInsert, position, range);\n }\n }\n\n return position;\n}\n\n/**\n * Adjust the position of a table to be one line after another table.\n */\nfunction adjustInsertPositionForTable(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (\n (nodeToInsert.childNodes.length == 1 &&\n getTagOfNode(nodeToInsert.childNodes[0]) == 'TABLE') ||\n getTagOfNode(nodeToInsert) == 'TABLE'\n ) {\n const { element } = position;\n\n const posBefore = new Position(element, PositionType.Before);\n const rangeToTraverse = createRange(posBefore, position);\n const contentTraverser = ContentTraverser.createSelectionTraverser(root, rangeToTraverse);\n\n let blockElement = contentTraverser && contentTraverser.currentBlockElement;\n\n if (blockElement) {\n let nextBlockElement: BlockElement | null = blockElement;\n\n while (!nextBlockElement) {\n nextBlockElement = contentTraverser.getNextBlockElement();\n if (nextBlockElement) {\n blockElement = nextBlockElement;\n }\n }\n\n const prevElement = blockElement?.getEndNode();\n\n if (prevElement && findClosestElementAncestor(prevElement, root, 'TABLE')) {\n let tempRange = createRange(position);\n tempRange.collapse(false /* toStart */);\n const br = root.ownerDocument.createElement('br');\n tempRange.insertNode(br);\n\n tempRange = createRange(br);\n position = Position.getEnd(tempRange);\n }\n }\n }\n return position;\n}\n\n/**\n *\n * @param root the contentDiv of the ditor\n * @param nodeToInsert the node to be inserted\n * @param position the position of the node to be inserted\n * @param range the range current or cached range of the editor\n * @returns the adjusted position of the inserted node\n */\n\nexport default function adjustInsertPositionBySteps(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n adjustSteps.forEach(handler => {\n position = handler(root, nodeToInsert, position, range);\n });\n return position;\n}\n\nfunction safeRemove(node: Node) {\n node?.parentNode?.removeChild(node);\n}\n","import arrayPush from '../jsUtils/arrayPush';\nimport collapseNodesInRegion from '../region/collapseNodesInRegion';\nimport getRegionsFromRange from '../region/getRegionsFromRange';\nimport getSelectionRangeInRegion from '../region/getSelectionRangeInRegion';\nimport mergeBlocksInRegion from '../region/mergeBlocksInRegion';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport splitTextNode from '../utils/splitTextNode';\nimport { NodePosition, PositionType, QueryScope, RegionType } from 'roosterjs-editor-types';\n\n/**\n * Delete selected content, and return the new position to select\n * @param core The EditorCore object.\n * @param range The range to delete\n */\nexport default function deleteSelectedContent(\n root: HTMLElement,\n range: Range\n): NodePosition | null {\n let nodeBefore: Node | null = null;\n\n // 1. TABLE and TR node in selected should be deleted. It is possible we don't detect them from step 2\n // since table cells will fall in to different regions\n const nodesToDelete: Node[] = queryElements(\n root,\n 'table,tr',\n null /*callback*/,\n QueryScope.InSelection,\n range\n );\n\n // 2. Loop all selected regions, find out those nodes need to be deleted and merged.\n // We don't delete them directly here because delete node from one region may cause selection range\n // another region becomes invalid. So we delay the process of deletion.\n const regions = getRegionsFromRange(root, range, RegionType.Table);\n const nodesPairToMerge = regions\n .map(region => {\n const regionRange = getSelectionRangeInRegion(region);\n if (!regionRange) {\n return null;\n }\n\n const {\n startContainer,\n endContainer,\n startOffset,\n endOffset,\n commonAncestorContainer,\n } = regionRange;\n\n // Disallow merging of readonly elements\n if (\n safeInstanceOf(commonAncestorContainer, 'HTMLElement') &&\n !commonAncestorContainer.isContentEditable\n ) {\n return null;\n }\n\n // Make sure there are node before and after the merging point.\n // This is required by mergeBlocksInRegion API.\n // This may create some empty text node as anchor\n let [beforeEnd, afterEnd] = ensureBeforeAndAfter(\n endContainer,\n endOffset,\n false /*isStart*/\n );\n let [beforeStart, afterStart] = ensureBeforeAndAfter(\n startContainer,\n startOffset,\n true /*isStart*/\n );\n nodeBefore = nodeBefore || beforeStart;\n\n // Find out all nodes to be deleted\n const nodes = collapseNodesInRegion(region, [afterStart, beforeEnd]);\n arrayPush(nodesToDelete, nodes);\n return { region, beforeStart, afterEnd };\n })\n .filter(x => !!x);\n\n // 3. Delete all nodes that we found, whose parent is editable\n nodesToDelete.forEach(\n node => node.parentElement?.isContentEditable && node.parentElement.removeChild(node)\n );\n\n // 4. Merge lines for each region, so that after we don't see extra line breaks\n nodesPairToMerge.forEach(nodes => {\n if (nodes) {\n mergeBlocksInRegion(nodes.region, nodes.beforeStart, nodes.afterEnd);\n }\n });\n\n return nodeBefore && new Position(nodeBefore, PositionType.End);\n}\n\nfunction ensureBeforeAndAfter(node: Node, offset: number, isStart: boolean) {\n if (safeInstanceOf(node, 'Text')) {\n const newNode = splitTextNode(node, offset, isStart);\n return isStart ? [newNode, node] : [node, newNode];\n } else {\n let nodeBefore: Node | null = node.childNodes[offset - 1];\n let nodeAfter: Node | null = node.childNodes[offset];\n\n // Condition 1: node child nodes\n // (\"I\" means cursor; \"o\" means a DOM node, \"[ ]\" means a parent node)\n // [ I ]\n // need to use parent node instead to convert to condition 2\n if (!nodeBefore && !nodeAfter) {\n if (isStart) {\n nodeAfter = node;\n nodeBefore = nodeAfter.previousSibling;\n } else {\n nodeBefore = node;\n nodeAfter = nodeBefore.nextSibling;\n }\n }\n\n // Condition 2: Either nodeBefore or nodeAfter is null (XOR case)\n // [ o I ] or [ I o]\n // need to add empty text node to convert to condition 3\n if ((nodeBefore || nodeAfter) && (!nodeBefore || !nodeAfter)) {\n const emptyNode = node.ownerDocument!.createTextNode('');\n (nodeBefore || nodeAfter)?.parentNode?.insertBefore(emptyNode, nodeAfter);\n if (nodeBefore) {\n nodeAfter = emptyNode;\n } else {\n nodeBefore = emptyNode;\n }\n }\n\n // Condition 3: Both nodeBefore and nodeAfter are not null\n // [o I o]\n // return the nodes\n return [nodeBefore!, nodeAfter!];\n }\n}\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\n\n/**\n * get block element's text content.\n * @param rootNode Root node that the get the textContent of.\n * @returns text content of given text content.\n */\nexport default function getTextContent(rootNode: Node): string {\n const traverser = ContentTraverser.createBodyTraverser(rootNode);\n let block = traverser && traverser.currentBlockElement;\n let textContent: string[] = [];\n\n while (block) {\n textContent.push(block.getTextContent());\n block = traverser.getNextBlockElement();\n }\n\n return textContent.join('\\n');\n}\n","import { EntityClasses } from 'roosterjs-editor-types';\n\nconst CONTENT_EDITABLE = 'contenteditable';\n\n/**\n * Commit information of an entity (type, isReadonly, id) into the wrapper node as CSS Classes\n * @param wrapper The entity wrapper element\n * @param type Entity type\n * @param isReadonly Whether this is a readonly entity\n * @param id Optional Id of the entity\n */\nexport default function commitEntity(\n wrapper: HTMLElement,\n type: string,\n isReadonly: boolean,\n id?: string\n) {\n if (wrapper) {\n wrapper.className = `${EntityClasses.ENTITY_INFO_NAME} ${\n EntityClasses.ENTITY_TYPE_PREFIX\n }${type} ${id ? `${EntityClasses.ENTITY_ID_PREFIX}${id} ` : ''}${\n EntityClasses.ENTITY_READONLY_PREFIX\n }${isReadonly ? '1' : '0'}`;\n\n if (isReadonly) {\n wrapper.contentEditable = 'false';\n } else if (wrapper.getAttribute(CONTENT_EDITABLE)) {\n wrapper.removeAttribute(CONTENT_EDITABLE);\n }\n }\n}\n","import getEntityFromElement from './getEntityFromElement';\nimport getEntitySelector from './getEntitySelector';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { Entity, EntityClasses, KnownEntityItem } from 'roosterjs-editor-types';\n\nconst EntityPlaceHolderTagName = 'ENTITY-PLACEHOLDER';\n\n/**\n * @deprecated\n * Create a placeholder comment node for entity\n * @param entity The entity to create placeholder from\n * @returns A placeholder comment node as\n */\nexport function createEntityPlaceholder(entity: Entity): HTMLElement {\n const placeholder = entity.wrapper.ownerDocument.createElement(EntityPlaceHolderTagName);\n placeholder.id = entity.id;\n\n return placeholder;\n}\n\n/**\n * Move content from a container into a new Document fragment, and try keep entities to be reusable by creating placeholder\n * for them in the document fragment.\n * If an entity is directly under root container, the whole entity can be reused and no need to move it at all.\n * If an entity is not directly under root container, it is still reusable, but it may need some movement.\n * In any case, entities will be replaced with a placeholder in the target document fragment.\n * We will use an entity map (the \"entities\" parameter) to save the map from entity id to its wrapper element.\n * @param root The root element\n * @param entities A map from entity id to entity wrapper element\n * @returns A new document fragment contains all the content and entity placeholders\n */\nexport function moveContentWithEntityPlaceholders(\n root: HTMLDivElement,\n entities: Record\n) {\n const entitySelector = getEntitySelector();\n const fragment = root.ownerDocument.createDocumentFragment();\n let next: Node | null = null;\n\n for (let child: Node | null = root.firstChild; child; child = next) {\n let entity: Entity | null;\n let nodeToAppend = child;\n\n next = child.nextSibling;\n\n if (safeInstanceOf(child, 'HTMLElement')) {\n if ((entity = getEntityFromElement(child))) {\n nodeToAppend = getPlaceholder(entity, entities);\n } else {\n child.querySelectorAll(entitySelector).forEach(wrapper => {\n if ((entity = getEntityFromElement(wrapper))) {\n const placeholder = getPlaceholder(entity, entities);\n\n wrapper.parentNode?.replaceChild(placeholder, wrapper);\n }\n });\n }\n }\n\n fragment.appendChild(nodeToAppend);\n }\n\n fragment.normalize();\n\n return fragment;\n}\n\n/**\n * Restore HTML content from a document fragment that may contain entity placeholders.\n * @param source Source document fragment that contains HTML content and entity placeholders\n * @param target Target container, usually to be editor root container\n * @param entities A map from entity id to entity wrapper, used for reusing existing DOM structure for entity\n * @param insertClonedNode When pass true, merge with a cloned copy of the nodes from source fragment rather than the nodes themselves @default false\n */\nexport function restoreContentWithEntityPlaceholder(\n source: ParentNode,\n target: HTMLElement,\n entities: Record | null,\n insertClonedNode?: boolean\n) {\n let anchor = target.firstChild;\n\n const entitySelector = getEntitySelector();\n\n for (let current = source.firstChild; current; ) {\n const next = current.nextSibling;\n const wrapper = tryGetWrapperFromEntityPlaceholder(entities, current);\n\n if (wrapper) {\n anchor = removeUntil(anchor, wrapper);\n\n if (anchor) {\n anchor = anchor.nextSibling;\n } else {\n target.appendChild(wrapper);\n }\n } else {\n const nodeToInsert = insertClonedNode ? current.cloneNode(true /*deep*/) : current;\n target.insertBefore(nodeToInsert, anchor);\n\n if (safeInstanceOf(nodeToInsert, 'HTMLElement')) {\n nodeToInsert.querySelectorAll(entitySelector).forEach(placeholder => {\n const wrapper = tryGetWrapperFromEntityPlaceholder(entities, placeholder);\n\n if (wrapper) {\n placeholder.parentNode?.replaceChild(wrapper, placeholder);\n }\n });\n }\n }\n\n current = next;\n }\n\n removeUntil(anchor);\n}\n\nfunction removeUntil(anchor: ChildNode | null, nodeToStop?: HTMLElement) {\n while (anchor && (!nodeToStop || anchor != nodeToStop)) {\n const nodeToRemove = anchor;\n anchor = anchor.nextSibling;\n nodeToRemove.parentNode?.removeChild(nodeToRemove);\n }\n return anchor;\n}\n\nfunction tryGetWrapperFromEntityPlaceholder(\n entities: Record | null,\n node: Node\n): HTMLElement | null {\n const id =\n safeInstanceOf(node, 'HTMLElement') &&\n node.classList.contains(EntityClasses.ENTITY_INFO_NAME) &&\n getEntityFromElement(node as HTMLElement)?.id;\n const item = id ? entities?.[id] : null;\n\n return !item\n ? null\n : safeInstanceOf(item, 'HTMLElement')\n ? item\n : item?.canPersist\n ? item.element\n : null;\n}\n\nfunction getPlaceholder(entity: Entity, entities: Record) {\n entities[entity.id] = entity.wrapper;\n\n return entity.wrapper.cloneNode(true /*deep*/);\n}\n","import { Entity, EntityClasses } from 'roosterjs-editor-types';\n\n/**\n * Get Entity object from an entity root element\n * @param element The entity root element. If this element is not an entity root element,\n * it will return null\n */\nexport default function getEntityFromElement(element: HTMLElement): Entity | null {\n let isEntity = false;\n let type = '';\n let id = '';\n let isReadonly = false;\n\n element?.className?.split(' ').forEach(name => {\n if (name == EntityClasses.ENTITY_INFO_NAME) {\n isEntity = true;\n } else if (name.indexOf(EntityClasses.ENTITY_TYPE_PREFIX) == 0) {\n type = name.substr(EntityClasses.ENTITY_TYPE_PREFIX.length);\n } else if (name.indexOf(EntityClasses.ENTITY_ID_PREFIX) == 0) {\n id = name.substr(EntityClasses.ENTITY_ID_PREFIX.length);\n } else if (name.indexOf(EntityClasses.ENTITY_READONLY_PREFIX) == 0) {\n isReadonly = name.substr(EntityClasses.ENTITY_READONLY_PREFIX.length) == '1';\n }\n });\n\n return isEntity\n ? {\n wrapper: element,\n id,\n type,\n isReadonly,\n }\n : null;\n}\n","import { EntityClasses } from 'roosterjs-editor-types';\n\n/**\n * Get a selector string for specified entity type and id\n * @param type (Optional) Type of entity\n * @param id (Optional) Id of entity\n */\nexport default function getEntitySelector(type?: string, id?: string): string {\n const typeSelector = type ? `.${EntityClasses.ENTITY_TYPE_PREFIX}${type}` : '';\n const idSelector = id ? `.${EntityClasses.ENTITY_ID_PREFIX}${id}` : '';\n return '.' + EntityClasses.ENTITY_INFO_NAME + typeSelector + idSelector;\n}\n","import { PluginEvent } from 'roosterjs-editor-types';\n\n/**\n * Gets the cached event data by cache key from event object if there is already one.\n * Otherwise, call getter function to create one, and cache it.\n * @param event The event object\n * @param key Cache key string, need to be unique\n * @param getter Getter function to get the object when it is not in cache yet\n */\nexport default function cacheGetEventData(\n event: PluginEvent | null,\n key: string,\n getter: () => T\n): T {\n let result =\n event && event.eventDataCache && event.eventDataCache.hasOwnProperty(key)\n ? event.eventDataCache[key]\n : getter();\n if (event) {\n event.eventDataCache = event.eventDataCache || {};\n event.eventDataCache[key] = result;\n }\n\n return result;\n}\n","import { PluginEvent } from 'roosterjs-editor-types';\n\n/**\n * Clear a cached object by its key from an event object\n * @param event The event object\n * @param key The cache key\n */\nexport default function clearEventDataCache(event: PluginEvent, key?: string): void {\n if (event && event.eventDataCache) {\n if (key && event.eventDataCache.hasOwnProperty(key)) {\n delete event.eventDataCache[key];\n } else if (!key) {\n event.eventDataCache = {};\n }\n }\n}\n","import isModifierKey from './isModifierKey';\n\n/**\n * Returns true when the event was fired from a key that produces a character value, otherwise false\n * This detection is not 100% accurate. event.key is not fully supported by all browsers, and in some browsers (e.g. IE),\n * event.key is longer than 1 for num pad input. But here we just want to improve performance as much as possible.\n * So if we missed some case here it is still acceptable.\n * @param event The keyboard event object\n */\nexport default function isCharacterValue(event: KeyboardEvent): boolean {\n return !isModifierKey(event) && !!event.key && event.key.length == 1;\n}\n","import { Browser } from '../utils/Browser';\n\nconst isCtrlOrMetaPressedImpl: (event: KeyboardEvent | MouseEvent) => boolean = Browser.isMac\n ? event => event.metaKey\n : event => event.ctrlKey;\n\n/**\n * Check if Ctrl key (Windows) or Meta key (Mac) is pressed for the given Event\n * @param event A Keyboard event or Mouse event object\n * @returns True if Ctrl key is pressed on Windows or Meta key is pressed on Mac\n */\nexport default function isCtrlOrMetaPressed(event: KeyboardEvent | MouseEvent): boolean {\n return isCtrlOrMetaPressedImpl(event);\n}\n","const CTRL_CHAR_CODE = 'Control';\nconst ALT_CHAR_CODE = 'Alt';\nconst META_CHAR_CODE = 'Meta';\n\n/**\n * Returns true when the event was fired from a modifier key, otherwise false\n * @param event The keyboard event object\n */\nexport default function isModifierKey(event: KeyboardEvent): boolean {\n const isCtrlKey = event.ctrlKey || event.key === CTRL_CHAR_CODE;\n const isAltKey = event.altKey || event.key === ALT_CHAR_CODE;\n const isMetaKey = event.metaKey || event.key === META_CHAR_CODE;\n\n return isCtrlKey || isAltKey || isMetaKey;\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport getInheritableStyles from './getInheritableStyles';\nimport getObjectKeys from '../jsUtils/getObjectKeys';\nimport getPredefinedCssForElement from './getPredefinedCssForElement';\nimport getStyles from '../style/getStyles';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setStyles from '../style/setStyles';\nimport toArray from '../jsUtils/toArray';\nimport { cloneObject } from './cloneObject';\nimport { isCssVariable, processCssVariable } from './processCssVariable';\nimport {\n getAllowedAttributes,\n getAllowedCssClassesRegex,\n getTagReplacement,\n getDefaultStyleValues,\n getStyleCallbacks,\n} from './getAllowedValues';\nimport {\n AttributeCallbackMap,\n CssStyleCallbackMap,\n ElementCallbackMap,\n HtmlSanitizerOptions,\n NodeType,\n PredefinedCssMap,\n SanitizeHtmlOptions,\n StringMap,\n} from 'roosterjs-editor-types';\n\n/**\n * HTML sanitizer class provides two features:\n * 1. Convert global CSS to inline CSS\n * 2. Sanitize an HTML document, remove unnecessary/dangerous attribute/nodes\n */\nexport default class HtmlSanitizer {\n /**\n * @deprecated Use new HtmlSanitizer().convertGlobalCssToInlineCss() instead\n * Convert global CSS to inline CSS if any\n * @param html HTML source\n * @param additionalStyleNodes (Optional) additional HTML STYLE elements used as global CSS\n */\n static convertInlineCss(html: string, additionalStyleNodes?: HTMLStyleElement[]) {\n let sanitizer = new HtmlSanitizer({\n additionalGlobalStyleNodes: additionalStyleNodes,\n });\n return sanitizer.exec(html, true /*convertCssOnly*/);\n }\n\n /**\n * @deprecated Use new HtmlSanitizer().sanitize() instead\n * Sanitize HTML string, remove any unused HTML node/attribute/CSS.\n * @param html HTML source string\n * @param options Options used for this sanitizing process\n */\n static sanitizeHtml(html: string, options?: SanitizeHtmlOptions) {\n options = options || {};\n let sanitizer = new HtmlSanitizer(options);\n let currentStyles = safeInstanceOf(options.currentElementOrStyle, 'HTMLElement')\n ? getInheritableStyles(options.currentElementOrStyle)\n : options.currentElementOrStyle;\n return sanitizer.exec(html, options.convertCssOnly, currentStyles);\n }\n\n private elementCallbacks: ElementCallbackMap;\n private styleCallbacks: CssStyleCallbackMap;\n private attributeCallbacks: AttributeCallbackMap;\n private tagReplacements: Record;\n private allowedAttributes: string[];\n private allowedCssClassesRegex: RegExp | null;\n private defaultStyleValues: StringMap;\n private additionalPredefinedCssForElement: PredefinedCssMap | null;\n private additionalGlobalStyleNodes: HTMLStyleElement[];\n private preserveHtmlComments: boolean;\n private unknownTagReplacement: string | null;\n\n /**\n * Construct a new instance of HtmlSanitizer\n * @param options Options for HtmlSanitizer\n */\n constructor(options?: HtmlSanitizerOptions) {\n options = options || {};\n this.elementCallbacks = cloneObject(options.elementCallbacks);\n this.styleCallbacks = getStyleCallbacks(options.cssStyleCallbacks);\n this.attributeCallbacks = cloneObject(options.attributeCallbacks);\n this.tagReplacements = getTagReplacement(options.additionalTagReplacements);\n this.allowedAttributes = getAllowedAttributes(options.additionalAllowedAttributes);\n this.allowedCssClassesRegex = getAllowedCssClassesRegex(\n options.additionalAllowedCssClasses\n );\n this.defaultStyleValues = getDefaultStyleValues(options.additionalDefaultStyleValues);\n this.additionalPredefinedCssForElement = options.additionalPredefinedCssForElement || null;\n this.additionalGlobalStyleNodes = options.additionalGlobalStyleNodes || [];\n this.preserveHtmlComments = options.preserveHtmlComments || false;\n this.unknownTagReplacement = options.unknownTagReplacement || null;\n }\n\n /**\n * @deprecated Use HtmlSanitizer.convertGlobalCssToInlineCss() and HtmlSanitizer.sanitize() instead\n * Sanitize HTML string\n * This function will do the following work:\n * 1. Convert global CSS into inline CSS\n * 2. Remove dangerous HTML tags and attributes\n * 3. Remove useless CSS properties\n * @param html The input HTML\n * @param convertInlineCssOnly Whether only convert inline css and skip html content sanitizing\n * @param currentStyles Current inheritable CSS styles\n */\n exec(html: string, convertCssOnly?: boolean, currentStyles?: StringMap): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(html || '', 'text/html');\n\n if (doc && doc.body && doc.body.firstChild) {\n this.convertGlobalCssToInlineCss(doc);\n if (!convertCssOnly) {\n this.sanitize(doc.body, currentStyles);\n }\n }\n return (doc && doc.body && doc.body.innerHTML) || '';\n }\n\n /**\n * Sanitize an HTML element, remove unnecessary or dangerous elements/attribute/CSS rules\n * @param rootNode Root node to sanitize\n * @param currentStyles Current CSS styles. Inheritable styles in the given node which has\n * the same value with current styles will be ignored.\n */\n sanitize(rootNode: Node, currentStyles?: StringMap) {\n if (!rootNode) {\n return '';\n }\n currentStyles = cloneObject(currentStyles, getInheritableStyles(null));\n this.processNode(rootNode, currentStyles, {});\n }\n\n /**\n * Convert global CSS into inline CSS\n * @param rootNode The HTML Document\n */\n convertGlobalCssToInlineCss(rootNode: ParentNode) {\n let styleNodes = toArray(rootNode.querySelectorAll('style'));\n let styleSheets = this.additionalGlobalStyleNodes\n .reverse()\n .map(node => node.sheet as CSSStyleSheet)\n .concat(styleNodes.map(node => node.sheet as CSSStyleSheet).reverse())\n .filter(sheet => sheet);\n for (let styleSheet of styleSheets) {\n for (let j = styleSheet.cssRules.length - 1; j >= 0; j--) {\n // Skip any none-style rule, i.e. @page\n let styleRule = styleSheet.cssRules[j] as CSSStyleRule;\n let text = styleRule && styleRule.style ? styleRule.style.cssText : null;\n if (styleRule.type != CSSRule.STYLE_RULE || !text || !styleRule.selectorText) {\n continue;\n }\n // Make sure the selector is not empty\n for (let selector of styleRule.selectorText.split(',')) {\n if (!selector || !selector.trim() || selector.indexOf(':') >= 0) {\n continue;\n }\n let nodes = toArray(rootNode.querySelectorAll(selector));\n // Always put existing styles after so that they have higher priority\n // Which means if both global style and inline style apply to the same element,\n // inline style will have higher priority\n nodes.forEach(node =>\n node.setAttribute('style', text + (node.getAttribute('style') || ''))\n );\n }\n }\n }\n\n styleNodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n }\n\n private processNode(node: Node, currentStyle: StringMap, context: Object) {\n const nodeType = node.nodeType;\n const isElement = nodeType == NodeType.Element;\n const isText = nodeType == NodeType.Text;\n const isFragment = nodeType == NodeType.DocumentFragment;\n const isComment = nodeType == NodeType.Comment;\n\n let shouldKeep = false;\n\n if (isElement) {\n const tag = getTagOfNode(node);\n const callback = this.elementCallbacks[tag];\n let replacement: string | null | undefined = this.tagReplacements[tag.toLowerCase()];\n\n if (replacement === undefined) {\n replacement = this.unknownTagReplacement;\n }\n\n if (callback) {\n shouldKeep = callback(node as HTMLElement, context);\n } else if (tag.indexOf(':') > 0) {\n shouldKeep = true;\n } else if (tag == replacement || replacement == '*') {\n shouldKeep = true;\n } else if (replacement && /^[a-zA-Z][\\w\\-]*$/.test(replacement)) {\n node = changeElementTag(node as HTMLElement, replacement)!;\n shouldKeep = true;\n }\n } else if (isText) {\n const whiteSpace = currentStyle['white-space'];\n shouldKeep =\n whiteSpace == 'pre' ||\n whiteSpace == 'pre-line' ||\n whiteSpace == 'pre-wrap' ||\n !/^[\\r\\n]*$/g.test(node.nodeValue || '');\n } else if (isFragment) {\n shouldKeep = true;\n } else if (isComment) {\n shouldKeep = this.preserveHtmlComments;\n } else {\n shouldKeep = false;\n }\n\n if (!shouldKeep) {\n node.parentNode?.removeChild(node);\n } else if (\n isText &&\n (currentStyle['white-space'] == 'pre' || currentStyle['white-space'] == 'pre-wrap')\n ) {\n node.nodeValue = (node.nodeValue || '')\n .replace(/^ /gm, '\\u00A0')\n .replace(/ {2}/g, ' \\u00A0');\n } else if (isElement || isFragment) {\n let thisStyle = cloneObject(currentStyle);\n let element = node;\n if (isElement) {\n this.processAttributes(element, context);\n this.preprocessCss(element, thisStyle);\n this.processCss(element, thisStyle, context);\n }\n\n let child: Node | null = element.firstChild;\n let next: Node | null;\n for (; child; child = next) {\n next = child.nextSibling;\n this.processNode(child, thisStyle, context);\n }\n }\n }\n\n private preprocessCss(element: HTMLElement, thisStyle: StringMap) {\n const predefinedStyles = getPredefinedCssForElement(\n element,\n this.additionalPredefinedCssForElement\n );\n if (predefinedStyles) {\n getObjectKeys(predefinedStyles).forEach(name => {\n thisStyle[name] = predefinedStyles[name];\n });\n }\n }\n\n private processCss(element: HTMLElement, thisStyle: StringMap, context: Object) {\n const styles = getStyles(element);\n getObjectKeys(styles).forEach(name => {\n let value = styles[name];\n let callback = this.styleCallbacks[name];\n let isInheritable = thisStyle[name] != undefined;\n let keep = true;\n\n if (keep && !!callback) {\n keep = callback(value, element, thisStyle, context);\n }\n\n if (keep && isCssVariable(value)) {\n value = processCssVariable(value);\n keep = !!value;\n }\n\n keep =\n keep &&\n value != 'inherit' &&\n value.indexOf('expression') < 0 &&\n name.substr(0, 1) != '-' &&\n this.defaultStyleValues[name] != value &&\n ((isInheritable && value != thisStyle[name]) ||\n (!isInheritable && value != 'initial' && value != 'normal'));\n if (keep && isInheritable) {\n thisStyle[name] = value;\n }\n\n if (keep) {\n styles[name] = value;\n } else {\n delete styles[name];\n }\n });\n\n setStyles(element, styles);\n }\n\n private processAttributes(element: HTMLElement, context: Object) {\n for (let i = element.attributes.length - 1; i >= 0; i--) {\n let attribute = element.attributes[i];\n let name = attribute.name.toLowerCase().trim();\n let value = attribute.value;\n let callback = this.attributeCallbacks[name];\n\n let newValue = callback\n ? callback(value, element, context)\n : this.allowedAttributes.indexOf(name) >= 0 || name.indexOf('data-') == 0\n ? value\n : null;\n\n if (name == 'class' && this.allowedCssClassesRegex) {\n newValue = this.processCssClass(value, newValue);\n }\n\n if (\n newValue === null ||\n newValue === undefined ||\n newValue.match(/s\\n*c\\n*r\\n*i\\n*p\\n*t\\n*:/i) // match script: with any NewLine inside. Browser will ignore those NewLine char and still treat it as script prefix\n ) {\n element.removeAttribute(name);\n } else {\n attribute.value = newValue;\n }\n }\n }\n\n private processCssClass(originalValue: string, calculatedValue: string | null): string | null {\n const originalClasses = originalValue ? originalValue.split(' ') : [];\n const calculatedClasses = calculatedValue ? calculatedValue.split(' ') : [];\n\n originalClasses.forEach(className => {\n if (\n this.allowedCssClassesRegex?.test(className) &&\n calculatedClasses.indexOf(className) < 0\n ) {\n calculatedClasses.push(className);\n }\n });\n\n return calculatedClasses?.length > 0 ? calculatedClasses.join(' ') : null;\n }\n}\n","/**\n * Chain all callback for an attribute together\n * @param map The source callback map\n * @param name Name of the property to chain\n * @param newCallback A new callback to process the given name on the given map.\n * If the same property got multiple callbacks, the final return value will be the return\n * value of the latest callback\n */\nexport default function chainSanitizerCallback R, R>(\n map: Record R>,\n name: string,\n newCallback: TChainedFn\n) {\n if (!map[name]) {\n map[name] = newCallback;\n } else {\n const originalCallback = map[name];\n map[name] = (...args: TOriginalArgs) => {\n originalCallback(...args);\n return newCallback(...args);\n };\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\nfunction nativeClone(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n return Object.assign(existingObj || {}, source);\n}\n\nfunction customClone(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n let result: Record = existingObj || {};\n if (source) {\n for (let key of getObjectKeys(source)) {\n result[key] = source[key];\n }\n }\n return result;\n}\n\n// @ts-ignore Ignore this error for IE compatibility\nconst cloneObjectImpl = Object.assign ? nativeClone : customClone;\n\n/**\n * @internal\n */\nexport function cloneObject(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n return cloneObjectImpl(source, existingObj);\n}\n","import { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\n/**\n * Create default value of HtmlSanitizerOptions with every property set\n */\nexport default function createDefaultHtmlSanitizerOptions(): Required {\n return {\n elementCallbacks: {},\n attributeCallbacks: {},\n cssStyleCallbacks: {},\n additionalTagReplacements: {},\n additionalAllowedAttributes: [],\n additionalAllowedCssClasses: [],\n additionalDefaultStyleValues: {},\n additionalGlobalStyleNodes: [],\n additionalPredefinedCssForElement: {},\n preserveHtmlComments: false,\n unknownTagReplacement: null,\n };\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport { cloneObject } from './cloneObject';\nimport { CssStyleCallbackMap, StringMap } from 'roosterjs-editor-types';\n\nconst HTML_TAG_REPLACEMENT: Record = {\n // Allowed tags\n a: '*',\n abbr: '*',\n address: '*',\n area: '*',\n article: '*',\n aside: '*',\n b: '*',\n bdi: '*',\n bdo: '*',\n blockquote: '*',\n body: '*',\n br: '*',\n button: '*',\n canvas: '*',\n caption: '*',\n center: '*',\n cite: '*',\n code: '*',\n col: '*',\n colgroup: '*',\n data: '*',\n datalist: '*',\n dd: '*',\n del: '*',\n details: '*',\n dfn: '*',\n dialog: '*',\n dir: '*',\n div: '*',\n dl: '*',\n dt: '*',\n em: '*',\n fieldset: '*',\n figcaption: '*',\n figure: '*',\n font: '*',\n footer: '*',\n h1: '*',\n h2: '*',\n h3: '*',\n h4: '*',\n h5: '*',\n h6: '*',\n head: '*',\n header: '*',\n hgroup: '*',\n hr: '*',\n html: '*',\n i: '*',\n img: '*',\n input: '*',\n ins: '*',\n kbd: '*',\n label: '*',\n legend: '*',\n li: '*',\n main: '*',\n map: '*',\n mark: '*',\n menu: '*',\n menuitem: '*',\n meter: '*',\n nav: '*',\n ol: '*',\n optgroup: '*',\n option: '*',\n output: '*',\n p: '*',\n picture: '*',\n pre: '*',\n progress: '*',\n q: '*',\n rp: '*',\n rt: '*',\n ruby: '*',\n s: '*',\n samp: '*',\n section: '*',\n select: '*',\n small: '*',\n span: '*',\n strike: '*',\n strong: '*',\n sub: '*',\n summary: '*',\n sup: '*',\n table: '*',\n tbody: '*',\n td: '*',\n textarea: '*',\n tfoot: '*',\n th: '*',\n thead: '*',\n time: '*',\n tr: '*',\n tt: '*',\n u: '*',\n ul: '*',\n var: '*',\n wbr: '*',\n xmp: '*',\n\n // Replaced tags:\n form: 'SPAN',\n\n // Disallowed tags\n applet: null,\n audio: null,\n base: null,\n basefont: null,\n embed: null,\n frame: null,\n frameset: null,\n iframe: null,\n link: null,\n meta: null,\n noscript: null,\n object: null,\n param: null,\n script: null,\n slot: null,\n source: null,\n style: null,\n template: null,\n title: null,\n track: null,\n video: null,\n};\n\nconst ALLOWED_HTML_ATTRIBUTES = (\n 'accept,align,alt,checked,cite,color,cols,colspan,contextmenu,' +\n 'coords,datetime,default,dir,dirname,disabled,download,face,headers,height,hidden,high,href,' +\n 'hreflang,ismap,kind,label,lang,list,low,max,maxlength,media,min,multiple,open,optimum,pattern,' +\n 'placeholder,readonly,rel,required,reversed,rows,rowspan,scope,selected,shape,size,sizes,span,' +\n 'spellcheck,src,srclang,srcset,start,step,style,tabindex,target,title,translate,type,usemap,valign,value,' +\n 'width,wrap,bgColor'\n).split(',');\n\nconst DEFAULT_STYLE_VALUES: { [name: string]: string } = {\n 'background-color': 'transparent',\n 'border-bottom-color': 'rgb(0, 0, 0)',\n 'border-bottom-style': 'none',\n 'border-bottom-width': '0px',\n 'border-image-outset': '0',\n 'border-image-repeat': 'stretch',\n 'border-image-slice': '100%',\n 'border-image-source': 'none',\n 'border-image-width': '1',\n 'border-left-color': 'rgb(0, 0, 0)',\n 'border-left-style': 'none',\n 'border-left-width': '0px',\n 'border-right-color': 'rgb(0, 0, 0)',\n 'border-right-style': 'none',\n 'border-right-width': '0px',\n 'border-top-color': 'rgb(0, 0, 0)',\n 'border-top-style': 'none',\n 'border-top-width': '0px',\n 'outline-color': 'transparent',\n 'outline-style': 'none',\n 'outline-width': '0px',\n overflow: 'visible',\n '-webkit-text-stroke-width': '0px',\n 'word-wrap': 'break-word',\n 'margin-left': '0px',\n 'margin-right': '0px',\n padding: '0px',\n 'padding-top': '0px',\n 'padding-left': '0px',\n 'padding-right': '0px',\n 'padding-bottom': '0px',\n border: '0px',\n 'border-top': '0px',\n 'border-left': '0px',\n 'border-right': '0px',\n 'border-bottom': '0px',\n 'vertical-align': 'baseline',\n float: 'none',\n};\n\n// This is to preserve entity related CSS classes when paste.\nconst ALLOWED_CSS_CLASSES: string[] = [];\n\n/**\n * @internal\n */\nexport function getTagReplacement(\n additionalReplacements: Record | undefined\n): Record {\n const result = { ...HTML_TAG_REPLACEMENT };\n const replacements = additionalReplacements || {};\n getObjectKeys(replacements).forEach(key => {\n if (key) {\n result[key.toLowerCase()] = replacements[key];\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getAllowedAttributes(additionalAttributes: string[] | undefined): string[] {\n return unique(ALLOWED_HTML_ATTRIBUTES.concat(additionalAttributes || [])).map(attr =>\n attr.toLocaleLowerCase()\n );\n}\n\n/**\n * @internal\n */\nexport function getAllowedCssClassesRegex(\n additionalCssClasses: string[] | undefined\n): RegExp | null {\n const patterns = ALLOWED_CSS_CLASSES.concat(additionalCssClasses || []);\n return patterns.length > 0 ? new RegExp(patterns.join('|')) : null;\n}\n\n/**\n * @internal\n */\nexport function getDefaultStyleValues(additionalDefaultStyles: StringMap | undefined): StringMap {\n let result = cloneObject(DEFAULT_STYLE_VALUES);\n if (additionalDefaultStyles) {\n Object.keys(additionalDefaultStyles).forEach(name => {\n let value = additionalDefaultStyles[name];\n if (value !== null && value !== undefined) {\n result[name] = value;\n } else {\n delete result[name];\n }\n });\n }\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getStyleCallbacks(\n callbacks: CssStyleCallbackMap | null | undefined\n): CssStyleCallbackMap {\n let result = cloneObject(callbacks);\n result.position = result.position || removeValue;\n result.width = result.width || removeWidthForLiAndDiv;\n return result;\n}\n\nfunction removeValue(): null {\n return null;\n}\n\nfunction removeWidthForLiAndDiv(value: string, element: HTMLElement) {\n let tag = element.tagName;\n return !(tag == 'LI' || tag == 'DIV');\n}\n\nfunction unique(array: T[]): T[] {\n return array.filter((value, index, self) => self.indexOf(value) == index);\n}\n","import { StringMap } from 'roosterjs-editor-types';\n\n// Inheritable CSS properties\n// Ref: https://www.w3.org/TR/CSS21/propidx.html\nconst INHERITABLE_PROPERTIES = (\n 'border-spacing,caption-side,color,' +\n 'cursor,direction,empty-cells,font-family,font-size,font-style,font-variant,font-weight,' +\n 'font,letter-spacing,line-height,list-style-image,list-style-position,list-style-type,' +\n 'list-style,orphans,quotes,text-align,text-indent,text-transform,visibility,white-space,' +\n 'widows,word-spacing'\n).split(',');\n\n/**\n * Get inheritable CSS style values from the given element\n * @param element The element to get style from\n */\nexport default function getInheritableStyles(element: HTMLElement | null): StringMap {\n let win = element && element.ownerDocument && element.ownerDocument.defaultView;\n let styles = win && element && win.getComputedStyle(element);\n let result: StringMap = {};\n INHERITABLE_PROPERTIES.forEach(\n name => (result[name] = (styles && styles.getPropertyValue(name)) || '')\n );\n return result;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport { PredefinedCssMap, StringMap } from 'roosterjs-editor-types';\n\nconst PREDEFINED_CSS_FOR_ELEMENT: PredefinedCssMap = {\n B: {\n 'font-weight': 'bold',\n },\n EM: {\n 'font-style': 'italic',\n },\n I: {\n 'font-style': 'italic',\n },\n U: {\n 'text-decoration': 'underline',\n },\n P: {\n 'margin-top': '1em',\n 'margin-bottom': '1em',\n },\n PRE: {\n 'white-space': 'pre',\n },\n S: {\n 'text-decoration': 'line-through',\n },\n STRIKE: {\n 'text-decoration': 'line-through',\n },\n SUB: {\n 'vertical-align': 'sub',\n 'font-size': 'smaller',\n },\n SUP: {\n 'vertical-align': 'super',\n 'font-size': 'smaller',\n },\n};\n\n/**\n * @internal\n * Get a map for browser built-in CSS definitions of elements\n */\nexport default function getPredefinedCssForElement(\n element: HTMLElement,\n additionalPredefinedCssForElement?: PredefinedCssMap | null\n): StringMap {\n const tag = getTagOfNode(element);\n return PREDEFINED_CSS_FOR_ELEMENT[tag] || (additionalPredefinedCssForElement || {})[tag];\n}\n","const VARIABLE_REGEX = /^\\s*var\\(\\s*[a-zA-Z0-9-_]+\\s*(,\\s*(.*))?\\)\\s*$/;\nconst VARIABLE_PREFIX = 'var(';\n\n/**\n * @internal\n * Handle CSS variable format. e.g.: var(--name, fallbackValue)\n */\nexport function processCssVariable(value: string): string {\n const match = VARIABLE_REGEX.exec(value);\n return match?.[2] || ''; // Without fallback value, we don't know what does the original value mean, so ignore it\n}\n\n/**\n * @internal\n */\nexport function isCssVariable(value: string): boolean {\n return value.indexOf(VARIABLE_PREFIX) == 0;\n}\n","export { default as getBlockElementAtNode } from './blockElements/getBlockElementAtNode';\nexport { default as getFirstLastBlockElement } from './blockElements/getFirstLastBlockElement';\n\nexport { default as ContentTraverser } from './contentTraverser/ContentTraverser';\nexport { default as PositionContentSearcher } from './contentTraverser/PositionContentSearcher';\n\nexport {\n default as addDelimiters,\n addDelimiterAfter,\n addDelimiterBefore,\n} from './delimiter/addDelimiters';\nexport { default as getDelimiterFromElement } from './delimiter/getDelimiterFromElement';\n\nexport { default as getInlineElementAtNode } from './inlineElements/getInlineElementAtNode';\nexport { default as ImageInlineElement } from './inlineElements/ImageInlineElement';\nexport { default as LinkInlineElement } from './inlineElements/LinkInlineElement';\nexport { default as NodeInlineElement } from './inlineElements/NodeInlineElement';\nexport { default as PartialInlineElement } from './inlineElements/PartialInlineElement';\nexport { default as applyTextStyle } from './inlineElements/applyTextStyle';\n\nexport { default as extractClipboardEvent } from './clipboard/extractClipboardEvent';\nexport { default as extractClipboardItems } from './clipboard/extractClipboardItems';\nexport { default as extractClipboardItemsForIE } from './clipboard/extractClipboardItemsForIE';\nexport { default as handleImagePaste } from './clipboard/handleImagePaste';\nexport { default as handleTextPaste } from './clipboard/handleTextPaste';\nexport { default as retrieveMetadataFromClipboard } from './clipboard/retrieveMetadataFromClipboard';\nexport { default as sanitizePasteContent } from './clipboard/sanitizePasteContent';\nexport { default as getPasteType } from './clipboard/getPasteType';\n\nexport { Browser, getBrowserInfo } from './utils/Browser';\nexport { default as applyFormat } from './utils/applyFormat';\nexport { default as changeElementTag } from './utils/changeElementTag';\nexport { default as collapseNodes } from './utils/collapseNodes';\nexport { default as contains } from './utils/contains';\nexport { default as findClosestElementAncestor } from './utils/findClosestElementAncestor';\nexport { default as fromHtml } from './utils/fromHtml';\nexport { default as getComputedStyles, getComputedStyle } from './utils/getComputedStyles';\nexport {\n default as getPendableFormatState,\n PendableFormatCommandMap,\n PendableFormatNames,\n} from './utils/getPendableFormatState';\nexport { default as getTagOfNode } from './utils/getTagOfNode';\nexport { default as isBlockElement } from './utils/isBlockElement';\nexport { default as isNodeEmpty } from './utils/isNodeEmpty';\nexport { default as isVoidHtmlElement } from './utils/isVoidHtmlElement';\nexport { default as matchLink } from './utils/matchLink';\nexport { default as queryElements } from './utils/queryElements';\nexport { default as splitParentNode, splitBalancedNodeRange } from './utils/splitParentNode';\nexport { default as unwrap } from './utils/unwrap';\nexport { default as wrap } from './utils/wrap';\nexport { getNextLeafSibling, getPreviousLeafSibling } from './utils/getLeafSibling';\nexport { getFirstLeafNode, getLastLeafNode } from './utils/getLeafNode';\nexport { default as splitTextNode } from './utils/splitTextNode';\nexport { default as normalizeRect } from './utils/normalizeRect';\nexport { default as safeInstanceOf } from './utils/safeInstanceOf';\nexport { default as readFile } from './utils/readFile';\nexport { default as getInnerHTML } from './utils/getInnerHTML';\nexport { default as setColor } from './utils/setColor';\nexport { default as matchesSelector } from './utils/matchesSelector';\nexport { default as createElement, KnownCreateElementData } from './utils/createElement';\nexport { default as moveChildNodes } from './utils/moveChildNodes';\nexport { default as getIntersectedRect } from './utils/getIntersectedRect';\nexport { default as isNodeAfter } from './utils/isNodeAfter';\nexport { default as parseColor } from './utils/parseColor';\n\nexport { default as VTable } from './table/VTable';\nexport { default as isWholeTableSelected } from './table/isWholeTableSelected';\n\nexport { default as VList } from './list/VList';\nexport { default as VListItem } from './list/VListItem';\nexport { default as createVListFromRegion } from './list/createVListFromRegion';\nexport { default as VListChain } from './list/VListChain';\nexport { default as setListItemStyle } from './list/setListItemStyle';\nexport { getTableFormatInfo } from './table/tableFormatInfo';\nexport { saveTableCellMetadata } from './table/tableCellInfo';\nexport { getTableCellMetadata } from './table/tableCellInfo';\n\nexport { default as getRegionsFromRange } from './region/getRegionsFromRange';\nexport { default as getSelectedBlockElementsInRegion } from './region/getSelectedBlockElementsInRegion';\nexport { default as collapseNodesInRegion } from './region/collapseNodesInRegion';\nexport { default as isNodeInRegion } from './region/isNodeInRegion';\nexport { default as getSelectionRangeInRegion } from './region/getSelectionRangeInRegion';\nexport { default as mergeBlocksInRegion } from './region/mergeBlocksInRegion';\n\nexport { default as Position } from './selection/Position';\nexport { default as createRange } from './selection/createRange';\nexport { default as getPositionRect } from './selection/getPositionRect';\nexport { default as isPositionAtBeginningOf } from './selection/isPositionAtBeginningOf';\nexport { default as getSelectionPath } from './selection/getSelectionPath';\nexport { default as getHtmlWithSelectionPath } from './selection/getHtmlWithSelectionPath';\nexport {\n default as setHtmlWithSelectionPath,\n setHtmlWithMetadata,\n extractContentMetadata,\n} from './selection/setHtmlWithSelectionPath';\nexport { default as addRangeToSelection } from './selection/addRangeToSelection';\n\nexport { default as addSnapshot, addSnapshotV2 } from './snapshots/addSnapshot';\nexport { default as canMoveCurrentSnapshot } from './snapshots/canMoveCurrentSnapshot';\nexport {\n default as clearProceedingSnapshots,\n clearProceedingSnapshotsV2,\n} from './snapshots/clearProceedingSnapshots';\nexport {\n default as moveCurrentSnapshot,\n moveCurrentSnapsnot,\n} from './snapshots/moveCurrentSnapshot';\nexport { default as createSnapshots } from './snapshots/createSnapshots';\nexport { default as canUndoAutoComplete } from './snapshots/canUndoAutoComplete';\n\nexport { default as HtmlSanitizer } from './htmlSanitizer/HtmlSanitizer';\nexport { default as getInheritableStyles } from './htmlSanitizer/getInheritableStyles';\nexport { default as createDefaultHtmlSanitizerOptions } from './htmlSanitizer/createDefaultHtmlSanitizerOptions';\nexport { default as chainSanitizerCallback } from './htmlSanitizer/chainSanitizerCallback';\n\nexport { default as commitEntity } from './entity/commitEntity';\nexport { default as getEntityFromElement } from './entity/getEntityFromElement';\nexport { default as getEntitySelector } from './entity/getEntitySelector';\nexport {\n createEntityPlaceholder,\n moveContentWithEntityPlaceholders,\n restoreContentWithEntityPlaceholder,\n} from './entity/entityPlaceholderUtils';\n\nexport { default as cacheGetEventData } from './event/cacheGetEventData';\nexport { default as clearEventDataCache } from './event/clearEventDataCache';\nexport { default as isModifierKey } from './event/isModifierKey';\nexport { default as isCharacterValue } from './event/isCharacterValue';\nexport { default as isCtrlOrMetaPressed } from './event/isCtrlOrMetaPressed';\n\nexport { default as getStyles } from './style/getStyles';\nexport { default as setStyles } from './style/setStyles';\nexport { default as removeImportantStyleRule } from './style/removeImportantStyleRule';\nexport { default as setGlobalCssStyles } from './style/setGlobalCssStyles';\nexport { default as removeGlobalCssStyle } from './style/removeGlobalCssStyle';\n\nexport { default as adjustInsertPosition } from './edit/adjustInsertPosition';\nexport { default as deleteSelectedContent } from './edit/deleteSelectedContent';\nexport { default as getTextContent } from './edit/getTextContent';\n\nexport { default as validate } from './metadata/validate';\nexport {\n createNumberDefinition,\n createBooleanDefinition,\n createStringDefinition,\n createArrayDefinition,\n createObjectDefinition,\n} from './metadata/definitionCreators';\nexport { getMetadata, setMetadata, removeMetadata } from './metadata/metadata';\n\nexport { default as arrayPush } from './jsUtils/arrayPush';\nexport { default as getObjectKeys } from './jsUtils/getObjectKeys';\nexport { default as toArray } from './jsUtils/toArray';\n\nexport { default as getPasteSource } from './pasteSourceValidations/getPasteSource';\n","import { BlockElement, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Represents an empty InlineElement.\r\n * This is used for ContentTraverser internally only.\r\n * An empty InlineElement means current position is at the end of a tag so nothing is included inside this element\r\n */\r\nexport default class EmptyInlineElement implements InlineElement {\r\n constructor(private position: NodePosition, private parentBlock: BlockElement) {}\r\n\r\n /**\r\n * Get the text content of this inline element\r\n */\r\n getTextContent(): string {\r\n return '';\r\n }\r\n\r\n /**\r\n * Get the container node of this inline element\r\n */\r\n getContainerNode(): Node {\r\n return this.position.node;\r\n }\r\n\r\n /**\r\n * Get the parent block element of this inline element\r\n */\r\n getParentBlock(): BlockElement {\r\n return this.parentBlock;\r\n }\r\n\r\n /**\r\n * Get the start position of this inline element\r\n */\r\n getStartPosition(): NodePosition {\r\n return this.position;\r\n }\r\n\r\n /**\r\n * Get the end position of this inline element\r\n */\r\n getEndPosition(): NodePosition {\r\n return this.position;\r\n }\r\n\r\n /**\r\n * Checks if the given inline element is after this inline element\r\n */\r\n isAfter(inlineElement: InlineElement): boolean {\r\n return inlineElement && this.position.isAfter(inlineElement.getEndPosition());\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n isTextualInlineElement(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the given editor position is contained in this inline element\r\n */\r\n contains(position: NodePosition): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Apply inline style to a region of an inline element.\r\n */\r\n applyStyle(styler: (element: HTMLElement) => any): void {}\r\n}\r\n","import NodeInlineElement from './NodeInlineElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This is an inline element representing an Html image\r\n */\r\nexport default class ImageInlineElement extends NodeInlineElement {\r\n constructor(containerNode: Node, parentBlock: BlockElement) {\r\n super(containerNode, parentBlock);\r\n }\r\n}\r\n","import NodeInlineElement from './NodeInlineElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This is inline element presenting an html hyperlink\r\n */\r\nexport default class LinkInlineElement extends NodeInlineElement {\r\n constructor(containerNode: Node, parentBlock: BlockElement) {\r\n super(containerNode, parentBlock);\r\n }\r\n}\r\n","import applyTextStyle from './applyTextStyle';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport Position from '../selection/Position';\r\nimport {\r\n BlockElement,\r\n InlineElement,\r\n NodePosition,\r\n NodeType,\r\n PositionType,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This presents an inline element that can be represented by a single html node.\r\n * This serves as base for most inline element as it contains most implementation\r\n * of all operations that can happen on an inline element. Other sub inline elements mostly\r\n * just identify themselves for a certain type\r\n */\r\nexport default class NodeInlineElement implements InlineElement {\r\n constructor(private containerNode: Node, private parentBlock: BlockElement) {}\r\n\r\n /**\r\n * The text content for this inline element\r\n */\r\n public getTextContent(): string {\r\n // nodeValue is better way to retrieve content for a text. Others, just use textContent\r\n return (\r\n (this.containerNode.nodeType == NodeType.Text\r\n ? this.containerNode.nodeValue\r\n : this.containerNode.textContent) || ''\r\n );\r\n }\r\n\r\n /**\r\n * Get the container node\r\n */\r\n public getContainerNode(): Node {\r\n return this.containerNode;\r\n }\r\n\r\n // Get the parent block\r\n public getParentBlock(): BlockElement {\r\n return this.parentBlock;\r\n }\r\n\r\n /**\r\n * Get the start position of the inline element\r\n */\r\n public getStartPosition(): NodePosition {\r\n // For a position, we always want it to point to a leaf node\r\n // We should try to go get the lowest first child node from the container\r\n return new Position(this.containerNode, 0).normalize();\r\n }\r\n\r\n /**\r\n * Get the end position of the inline element\r\n */\r\n public getEndPosition(): NodePosition {\r\n // For a position, we always want it to point to a leaf node\r\n // We should try to go get the lowest last child node from the container\r\n return new Position(this.containerNode, PositionType.End).normalize();\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n public isTextualInlineElement(): boolean {\r\n return this.containerNode && this.containerNode.nodeType == NodeType.Text;\r\n }\r\n\r\n /**\r\n * Checks if an inline element is after the current inline element\r\n */\r\n public isAfter(inlineElement: InlineElement): boolean {\r\n return inlineElement && isNodeAfter(this.containerNode, inlineElement.getContainerNode());\r\n }\r\n\r\n /**\r\n * Checks if the given position is contained in the inline element\r\n */\r\n public contains(pos: NodePosition): boolean {\r\n let start = this.getStartPosition();\r\n let end = this.getEndPosition();\r\n return pos && pos.isAfter(start) && end.isAfter(pos);\r\n }\r\n\r\n /**\r\n * Apply inline style to an inline element\r\n */\r\n public applyStyle(styler: (element: HTMLElement, isInnerNode?: boolean) => any): void {\r\n applyTextStyle(this.containerNode, styler);\r\n }\r\n}\r\n","import applyTextStyle from './applyTextStyle';\r\nimport createRange from '../selection/createRange';\r\nimport Position from '../selection/Position';\r\nimport { BlockElement, InlineElement, NodePosition, PositionType } from 'roosterjs-editor-types';\r\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\r\n\r\n/**\r\n * This is a special version of inline element that identifies a section of an inline element\r\n * We often have the need to cut an inline element in half and perform some operation only on half of an inline element\r\n * i.e. users select only some text of a text node and apply format, in that case, format has to happen on partial of an inline element\r\n * PartialInlineElement is implemented in a way that decorate another full inline element with its own override on methods like isAfter\r\n * It also offers some special methods that others don't have, i.e. nextInlineElement etc.\r\n */\r\nexport default class PartialInlineElement implements InlineElement {\r\n constructor(\r\n private inlineElement: InlineElement,\r\n private start: NodePosition | null = null,\r\n private end: NodePosition | null = null\r\n ) {}\r\n\r\n /**\r\n * Get the full inline element that this partial inline decorates\r\n */\r\n public getDecoratedInline(): InlineElement {\r\n return this.inlineElement;\r\n }\r\n\r\n /**\r\n * Gets the container node\r\n */\r\n public getContainerNode(): Node {\r\n return this.inlineElement.getContainerNode();\r\n }\r\n\r\n /**\r\n * Gets the parent block\r\n */\r\n public getParentBlock(): BlockElement {\r\n return this.inlineElement.getParentBlock();\r\n }\r\n\r\n /**\r\n * Gets the text content\r\n */\r\n public getTextContent(): string {\r\n let range = createRange(this.getStartPosition(), this.getEndPosition());\r\n\r\n return range.toString();\r\n }\r\n\r\n /**\r\n * Get start position of this inline element.\r\n */\r\n public getStartPosition(): NodePosition {\r\n return this.start || this.inlineElement.getStartPosition();\r\n }\r\n\r\n /**\r\n * Get end position of this inline element.\r\n */\r\n public getEndPosition(): NodePosition {\r\n return this.end || this.inlineElement.getEndPosition();\r\n }\r\n\r\n /**\r\n * Get next partial inline element if it is not at the end boundary yet\r\n */\r\n public get nextInlineElement(): PartialInlineElement | null {\r\n return this.end ? new PartialInlineElement(this.inlineElement, this.end) : null;\r\n }\r\n\r\n /**\r\n * Get previous partial inline element if it is not at the begin boundary yet\r\n */\r\n public get previousInlineElement(): PartialInlineElement | null {\r\n return this.start\r\n ? new PartialInlineElement(this.inlineElement, undefined, this.start)\r\n : null;\r\n }\r\n\r\n /**\r\n * Checks if it contains a position\r\n */\r\n public contains(pos: NodePosition): boolean {\r\n return pos && pos.isAfter(this.getStartPosition()) && this.getEndPosition().isAfter(pos);\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n public isTextualInlineElement(): boolean {\r\n return this.inlineElement && this.inlineElement.isTextualInlineElement();\r\n }\r\n\r\n /**\r\n * Check if this inline element is after the other inline element\r\n */\r\n public isAfter(inlineElement: InlineElement): boolean {\r\n let thisStart = this.getStartPosition();\r\n let otherEnd = inlineElement && inlineElement.getEndPosition();\r\n return otherEnd && (thisStart.isAfter(otherEnd) || thisStart.equalTo(otherEnd));\r\n }\r\n\r\n /**\r\n * apply style\r\n */\r\n public applyStyle(styler: (element: HTMLElement, isInnerNode?: boolean) => any) {\r\n let from: NodePosition | null = this.getStartPosition().normalize();\r\n let to: NodePosition | null = this.getEndPosition().normalize();\r\n let container = this.getContainerNode();\r\n\r\n if (from.isAtEnd) {\r\n let nextNode = getNextLeafSibling(container, from.node);\r\n from = nextNode ? new Position(nextNode, PositionType.Begin) : null;\r\n }\r\n if (to.offset == 0) {\r\n let previousNode = getPreviousLeafSibling(container, to.node);\r\n to = previousNode ? new Position(previousNode, PositionType.End) : null;\r\n }\r\n\r\n applyTextStyle(container, styler, from || undefined, to || undefined);\r\n }\r\n}\r\n","import getTagOfNode from '../utils/getTagOfNode';\nimport Position from '../selection/Position';\nimport splitTextNode from '../utils/splitTextNode';\nimport wrap from '../utils/wrap';\nimport { getNextLeafSibling } from '../utils/getLeafSibling';\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\nimport safeInstanceOf from '../utils/safeInstanceOf';\n\nconst STYLET_AGS = 'SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL,SUP,SUB'.split(',');\n\n/**\n * Apply style using a styler function to the given container node in the given range\n * @param container The container node to apply style to\n * @param styler The styler function\n * @param fromPosition From position\n * @param toPosition To position\n */\nexport default function applyTextStyle(\n container: Node,\n styler: (node: HTMLElement, isInnerNode?: boolean) => any,\n from: NodePosition = new Position(container, PositionType.Begin).normalize(),\n to: NodePosition = new Position(container, PositionType.End).normalize()\n) {\n let formatNodes: Node[] = [];\n let fromPosition: NodePosition | null = from;\n let toPosition: NodePosition | null = to;\n\n while (fromPosition && toPosition && toPosition.isAfter(fromPosition)) {\n let formatNode = fromPosition.node;\n let parentTag = getTagOfNode(formatNode.parentNode);\n\n // The code below modifies DOM. Need to get the next sibling first otherwise you won't be able to reliably get a good next sibling node\n let nextNode = getNextLeafSibling(container, formatNode);\n\n if (formatNode.nodeType == NodeType.Text && ['TR', 'TABLE'].indexOf(parentTag) < 0) {\n if (formatNode == toPosition.node && !toPosition.isAtEnd) {\n formatNode = splitTextNode(\n formatNode,\n toPosition.offset,\n true /*returnFirstPart*/\n );\n }\n\n if (fromPosition.offset > 0) {\n formatNode = splitTextNode(\n formatNode,\n fromPosition.offset,\n false /*returnFirstPart*/\n );\n }\n\n formatNodes.push(formatNode);\n }\n\n fromPosition = nextNode && new Position(nextNode, PositionType.Begin);\n }\n\n if (formatNodes.length > 0) {\n if (formatNodes.every(node => node.parentNode == formatNodes[0].parentNode)) {\n let newNode = formatNodes.shift()!;\n formatNodes.forEach(node => {\n const newNodeValue = (newNode.nodeValue || '') + (node.nodeValue || '');\n newNode.nodeValue = newNodeValue;\n node.parentNode?.removeChild(node);\n });\n formatNodes = [newNode];\n }\n\n formatNodes.forEach(startingNode => {\n // When apply style within style tags like B/I/U/..., we split the tag and apply outside them\n // So that the inner style tag such as U, STRIKE can inherit the style we added\n let node: Node | null = startingNode;\n while (\n node &&\n getTagOfNode(node) != 'SPAN' &&\n STYLET_AGS.indexOf(getTagOfNode(node.parentNode)) >= 0\n ) {\n callStylerWithInnerNode(node, styler);\n node = splitBalancedNodeRange(node);\n }\n\n if (node && getTagOfNode(node) != 'SPAN') {\n callStylerWithInnerNode(node, styler);\n node = wrap(node, 'SPAN');\n }\n\n if (safeInstanceOf(node, 'HTMLElement')) {\n styler(node);\n }\n });\n }\n}\n\nfunction callStylerWithInnerNode(\n node: Node,\n styler: (node: HTMLElement, isInnerNode?: boolean) => any\n) {\n if (node && node.nodeType == NodeType.Element) {\n styler(node as HTMLElement, true /*isInnerNode*/);\n }\n}\n","import getInlineElementAtNode from './getInlineElementAtNode';\r\nimport { getFirstLeafNode, getLastLeafNode } from '../utils/getLeafNode';\r\nimport { InlineElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get the first inline element inside the given node\r\n */\r\nexport function getFirstInlineElement(rootNode: Node): InlineElement | null {\r\n // getFirstLeafNode can return null for empty container\r\n // do check null before passing on to get inline from the node\r\n let node = getFirstLeafNode(rootNode);\r\n return node ? getInlineElementAtNode(rootNode, node) : null;\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get the last inline element inside the given node\r\n */\r\nexport function getLastInlineElement(rootNode: Node): InlineElement | null {\r\n // getLastLeafNode can return null for empty container\r\n // do check null before passing on to get inline from the node\r\n let node = getLastLeafNode(rootNode);\r\n return node ? getInlineElementAtNode(rootNode, node) : null;\r\n}\r\n","import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport ImageInlineElement from './ImageInlineElement';\r\nimport LinkInlineElement from './LinkInlineElement';\r\nimport NodeInlineElement from './NodeInlineElement';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport { BlockElement, InlineElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the inline element at a node\r\n * @param rootNode The root node of current scope\r\n * @param node The node to get InlineElement from\r\n */\r\nexport default function getInlineElementAtNode(rootNode: Node, node: Node | null): InlineElement;\r\n\r\n/**\r\n * Get the inline element at a node\r\n * @param parentBlock Parent BlockElement of this node\r\n * @param node The node to get InlineElement from\r\n */\r\nexport default function getInlineElementAtNode(\r\n parentBlock: BlockElement,\r\n node: Node | null\r\n): InlineElement;\r\n\r\nexport default function getInlineElementAtNode(\r\n parent: Node | BlockElement,\r\n node: Node | null\r\n): InlineElement | null {\r\n // An inline element has to be in a block element, get the block first and then resolve through the factory\r\n let parentBlock = safeInstanceOf(parent, 'Node') ? getBlockElementAtNode(parent, node) : parent;\r\n return node && parentBlock && resolveInlineElement(node, parentBlock);\r\n}\r\n\r\n/**\r\n * Resolve an inline element by a leaf node\r\n * @param node The node to resolve from\r\n * @param parentBlock The parent block element\r\n */\r\nfunction resolveInlineElement(node: Node, parentBlock: BlockElement): InlineElement {\r\n let nodeChain = [node];\r\n for (\r\n let parent = node.parentNode;\r\n parent && parentBlock.contains(parent);\r\n parent = parent.parentNode\r\n ) {\r\n nodeChain.push(parent);\r\n }\r\n\r\n let inlineElement: InlineElement | undefined;\r\n\r\n for (let i = nodeChain.length - 1; i >= 0 && !inlineElement; i--) {\r\n let currentNode = nodeChain[i];\r\n let tag = getTagOfNode(currentNode);\r\n if (tag == 'A') {\r\n inlineElement = new LinkInlineElement(currentNode, parentBlock);\r\n } else if (tag == 'IMG') {\r\n inlineElement = new ImageInlineElement(currentNode, parentBlock);\r\n }\r\n }\r\n\r\n return inlineElement || new NodeInlineElement(node, parentBlock);\r\n}\r\n","import getInlineElementAtNode from './getInlineElementAtNode';\r\nimport PartialInlineElement from './PartialInlineElement';\r\nimport shouldSkipNode from '../utils/shouldSkipNode';\r\nimport { getLeafSibling } from '../utils/getLeafSibling';\r\nimport { InlineElement, NodePosition, NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get inline element before a position\r\n * This is mostly used when we want to get the inline element before selection/cursor\r\n * There is a possible that the cursor is in middle of an inline element (i.e. mid of a text node)\r\n * in this case, we only want to return what is before cursor (a partial of an inline) to indicate\r\n * that we're in middle.\r\n * @param root Root node of current scope, use for create InlineElement\r\n * @param position The position to get InlineElement before\r\n */\r\nexport function getInlineElementBefore(root: Node, position: NodePosition): InlineElement | null {\r\n return getInlineElementBeforeAfter(root, position, false /*isAfter*/);\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get inline element after a position\r\n * This is mostly used when we want to get the inline element after selection/cursor\r\n * There is a possible that the cursor is in middle of an inline element (i.e. mid of a text node)\r\n * in this case, we only want to return what is before cursor (a partial of an inline) to indicate\r\n * that we're in middle.\r\n * @param root Root node of current scope, use for create InlineElement\r\n * @param position The position to get InlineElement after\r\n */\r\nexport function getInlineElementAfter(root: Node, position: NodePosition): InlineElement | null {\r\n return getInlineElementBeforeAfter(root, position, true /*isAfter*/);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getInlineElementBeforeAfter(root: Node, position: NodePosition, isAfter: boolean) {\r\n if (!root || !position || !position.node) {\r\n return null;\r\n }\r\n\r\n position = position.normalize();\r\n let { offset, isAtEnd } = position;\r\n let node: Node | null = position.node;\r\n let isPartial = false;\r\n\r\n if ((!isAfter && offset == 0 && !isAtEnd) || (isAfter && isAtEnd)) {\r\n node = getLeafSibling(root, node, isAfter);\r\n } else if (\r\n node.nodeType == NodeType.Text &&\r\n ((!isAfter && !isAtEnd) || (isAfter && offset > 0))\r\n ) {\r\n isPartial = true;\r\n }\r\n\r\n if (node && shouldSkipNode(node)) {\r\n node = getLeafSibling(root, node, isAfter);\r\n }\r\n\r\n let inlineElement = getInlineElementAtNode(root, node);\r\n\r\n if (inlineElement && (isPartial || inlineElement.contains(position))) {\r\n inlineElement = isAfter\r\n ? new PartialInlineElement(inlineElement, position, undefined)\r\n : new PartialInlineElement(inlineElement, undefined, position);\r\n }\r\n\r\n return inlineElement;\r\n}\r\n","/**\n * A type-safe wrapper for Array.prototype.push.apply()\n * @param mainArray The main array to push items into\n * @param itemsArray The items to push to main array\n */\nexport default function arrayPush(mainArray: T[], itemsArray: T[]) {\n Array.prototype.push.apply(mainArray, itemsArray);\n}\n","/**\n * Provide a strong-typed version of Object.keys()\n * @param obj The source object\n * @returns Array of keys\n */\nexport default function getObjectKeys(\n obj: Record | Partial>\n): T[] {\n return Object.keys(obj) as T[];\n}\n","/**\n * Convert a named node map to an array\n * @param collection The map to convert\n */\nexport default function toArray(collection: NamedNodeMap): Attr[];\n\n/**\n * Convert a named node map to an array\n * @param collection The map to convert\n */\nexport default function toArray(collection: DataTransferItemList): DataTransferItem[];\n\n/**\n * Convert a collection to an array\n * @param collection The collection to convert\n */\nexport default function toArray(collection: NodeListOf): T[];\n\n/**\n * Convert a collection to an array\n * @param collection The collection to convert\n */\nexport default function toArray(collection: HTMLCollectionOf): T[];\n\n/**\n * Convert an array to an array.\n * This is to satisfy typescript compiler. For some cases the object can be a collection at runtime,\n * but the declaration is an array. e.g. ClipboardData.types\n * @param array The array to convert\n */\nexport default function toArray(array: readonly T[]): T[];\n\nexport default function toArray(collection: any): any[] {\n return [].slice.call(collection);\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport getListTypeFromNode, { isListElement } from './getListTypeFromNode';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isBlockElement from '../utils/isBlockElement';\nimport isNodeEmpty from '../utils/isNodeEmpty';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport splitParentNode from '../utils/splitParentNode';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport VListItem, { ListStyleDefinitionMetadata, ListStyleMetadata } from './VListItem';\nimport wrap from '../utils/wrap';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport {\n Indentation,\n ListType,\n NodePosition,\n PositionType,\n NodeType,\n Alignment,\n NumberingListType,\n BulletListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleAlignment,\n CompatibleBulletListType,\n CompatibleIndentation,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Represent a bullet or a numbering list\n *\n * @example\n * A VList is a logical representation of list items, it contains an item array with node and list type stack.\n * e.g. We have a list like this\n * ```html\n *
                  \n *
                1. item 1
                2. \n *
                3. item 2
                4. \n *
                    \n *
                  • item 2.1
                  • \n *
                  • item 2.2
                  • \n *
                      \n *
                \n * ```\n *\n * A VList of this list will be like this:\n * ```javascript\n * {\n * rootList: (OL node),\n * items: [{\n * node: (LI node with 'item 1'),\n * listTypes: [null, OL],\n * }, {\n * node: (LI node with 'item 2'),\n * listTypes: [null, OL],\n * }, {\n * node: (LI node with 'item 2.1),\n * listTypes: [null, OL, UL],\n * }, {\n * node: (LI node with 'item 2.2'),\n * listTypes: [null, OL, UL],\n * }\n * ]\n * }\n * ```\n *\n * When we want to outdent item 2.1, we just need to remove the last \"UL\" from listTypes of item 2.1, then\n * the writeBack() function will handle everything related to DOM change\n */\nexport default class VList {\n public readonly items: VListItem[] = [];\n\n /**\n * Create a new instance of VList class\n * @param rootList The root list element, can be either OL or UL tag\n */\n constructor(public rootList: HTMLOListElement | HTMLUListElement) {\n if (!rootList) {\n throw new Error('rootList must not be null');\n }\n\n // Before populate items, we need to normalize the list to make sure it is in a correct format\n // otherwise further action may mass thing up.\n //\n // There are two kinds of normalization to perform.\n // 1. Move nodes directly under OL/UL into a LI node, unless it is an orphan node\n // Please see comment for VListItem.isOrphanItem() for more information about orphan node\n // e.g.:\n // ```HTML\n //
                  \n //
                1. item 1
                2. \n //
                  item 2
                  \n //
                \n // ```\n // After this step, it should become:\n // ```html\n //
                  \n //
                1. item 1\n //
                  item 2
                  \n //
                2. \n //
                \n // ```\n moveChildNodesToLi(this.rootList);\n queryElements(this.rootList, 'ol,ul', moveChildNodesToLi);\n\n // 2. Move LI node embedded into another LI node out to directly under OL/UL node\n // Ideally browser we do this for us automatically when out the HTML into DOM. However after\n // step 1, it is possible that we move some LI node into another one. e.g:\n // ```HTML\n //
                  \n //
                1. item 1
                2. \n //
                  \n // item 1.1\n //
                3. item 3
                4. \n //
                  \n //
                \n // ```\n // See that the second LI tag is not directly under OL, so after step 1, this will become:\n // ```html\n //
                  \n //
                1. item 1\n //
                  \n // item 1.1\n //
                2. item 2
                3. \n //
                \n //
              1. \n // \n // ```\n // Now we have a LI tag embedded into another LI tag. So we need step 2 to move the inner LI tag out to be:\n // ```html\n //
                  \n //
                1. item1\n //
                  item 1.1
                  \n //
                2. \n //
                3. item2
                4. \n //
                \n // ```\n queryElements(this.rootList, 'li', moveLiToList);\n\n this.populateItems(this.rootList);\n }\n\n /**\n * Check if this list contains the given node\n * @param node The node to check\n */\n contains(node: Node) {\n // We don't check if the node is contained by this.rootList here, because after some operation,\n // it is possible a node is logically contained by this list but the container list item hasn't\n // been put under this.rootList in DOM tree yet.\n return this.items.some(item => item.contains(node));\n }\n\n /**\n * Get list number of the last item in this VList.\n * If there is no order list item, result will be undefined\n */\n getLastItemNumber(): number | undefined {\n const start = this.getStart();\n\n return start === undefined\n ? start\n : start -\n 1 +\n this.items.filter(\n item =>\n item.getListType() == ListType.Ordered &&\n item.getLevel() == 1 &&\n !item.isDummy()\n ).length;\n }\n\n /**\n * Write the result back into DOM tree\n * After that, this VList becomes unavailable because we set this.rootList to null\n *\n * @param shouldReuseAllAncestorListElements Optional - defaults to false.\n * @param disableListChain Whether we want to disable list chain functionality. @default false\n */\n writeBack(shouldReuseAllAncestorListElements?: boolean, disableListChain?: boolean) {\n if (!this.rootList) {\n throw new Error('rootList must not be null');\n }\n\n const doc = this.rootList.ownerDocument;\n const listStack: Node[] = [doc.createDocumentFragment()];\n const placeholder = doc.createTextNode('');\n let start = this.getStart() || 1;\n let lastList: Node;\n\n // Use a placeholder to hold the position since the root list may be moved into document fragment later\n this.rootList.parentNode!.replaceChild(placeholder, this.rootList);\n\n this.items.forEach(item => {\n const newListStart = item.getNewListStart();\n\n if (newListStart && newListStart != start) {\n listStack.splice(1, listStack.length - 1);\n start = newListStart;\n }\n\n item.writeBack(listStack, this.rootList, shouldReuseAllAncestorListElements);\n const topList = listStack[1];\n\n item.applyListStyle(this.rootList, start);\n\n if (safeInstanceOf(topList, 'HTMLOListElement')) {\n if (lastList != topList) {\n if (start == 1) {\n topList.removeAttribute('start');\n } else {\n topList.start = start;\n }\n }\n\n if (item.getLevel() == 1 && !item.isDummy() && !disableListChain) {\n start++;\n }\n }\n\n lastList = topList;\n });\n\n // Restore the content to the position of placeholder\n placeholder.parentNode!.replaceChild(listStack[0], placeholder);\n }\n\n /**\n * Sets the New List Start Property, that is going to be used to create a new List in the WriteBack function\n * @param separator The HTML element that indicates when to split the VList\n * @param startNumber The start number of the new List\n */\n split(separator: HTMLElement, startNumber: number) {\n if (!this.rootList) {\n throw new Error('rootList must not be null');\n }\n\n //Traverse the items of the VList, when the separator is found, set the New List Start Property\n for (let index = 0; index < this.items.length; index++) {\n if (this.items[index].getNode() == separator) {\n this.items[index].setNewListStart(startNumber);\n return;\n }\n }\n }\n\n /**\n * Set indentation of the given range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param indentation Indent or outdent\n */\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation | CompatibleIndentation\n ): void;\n\n /**\n * Outdent the give range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param indentation Specify to outdent\n * @param softOutdent (Optional) True to make the item to by dummy (no bullet or number) if the item is not dummy,\n * otherwise outdent the item\n * @param preventItemRemoval (Optional) True to prevent the indentation to remove the bullet when outdenting a first\n * level list item, by default is false\n */\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation.Decrease | CompatibleIndentation.Decrease,\n softOutdent?: boolean,\n preventItemRemoval?: boolean\n ): void;\n\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation | CompatibleIndentation,\n softOutdent?: boolean,\n preventItemRemoval: boolean = false\n ) {\n let shouldAddMargin = false;\n this.findListItems(start, end, item => {\n shouldAddMargin = shouldAddMargin || this.items.indexOf(item) == 0;\n indentation == Indentation.Decrease\n ? softOutdent && !item.isDummy()\n ? item.setIsDummy(true /*isDummy*/)\n : item.outdent(preventItemRemoval)\n : item.indent();\n });\n\n if (shouldAddMargin && preventItemRemoval) {\n for (let index = 0; index < this.items.length; index++) {\n this.items[index].addNegativeMargins();\n }\n }\n }\n\n /**\n * Set alignment of the given range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param alignment Align items left, center or right\n */\n\n setAlignment(\n start: NodePosition,\n end: NodePosition,\n alignment: Alignment | CompatibleAlignment\n ) {\n this.rootList.style.display = 'flex';\n this.rootList.style.flexDirection = 'column';\n this.findListItems(start, end, item => {\n let align = 'start';\n if (alignment == Alignment.Center) {\n align = 'center';\n } else if (alignment == Alignment.Right) {\n align = 'end';\n }\n item.getNode().style.alignSelf = align;\n });\n }\n\n /**\n * Change list type of the given range of this list.\n * If some of the items are not real list item yet, this will make them to be list item with given type\n * If all items in the given range are already in the type to change to, this becomes an outdent operation\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param targetType Target list type\n */\n changeListType(\n start: NodePosition,\n end: NodePosition,\n targetType: ListType | CompatibleListType\n ) {\n let needChangeType = false;\n\n this.findListItems(start, end, item => {\n needChangeType = needChangeType || item.getListType() != targetType;\n });\n this.findListItems(start, end, item =>\n needChangeType ? item.changeListType(targetType) : item.outdent()\n );\n }\n\n /**\n * Change list style of the given range of this list.\n * If some of the items are not real list item yet, this will make them to be list item with given style\n * @param orderedStyle The style of ordered list\n * @param unorderedStyle The style of unordered list\n */\n setListStyleType(\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType\n ) {\n const style = getMetadata(this.rootList, ListStyleDefinitionMetadata);\n const styleMetadata = createListStyleMetadata(\n style,\n orderedStyle as NumberingListType,\n unorderedStyle as BulletListType\n );\n setMetadata(this.rootList, styleMetadata, ListStyleDefinitionMetadata);\n }\n\n /**\n * Append a new item to this VList\n * @param node node of the item to append. If it is not wrapped with LI tag, it will be wrapped\n * @param type Type of this list item, can be ListType.None\n */\n appendItem(node: Node, type: ListType | CompatibleListType) {\n const nodeTag = getTagOfNode(node);\n\n // Change DIV tag to SPAN. Otherwise we cannot create new list item by Enter key in Safari\n if (nodeTag == 'DIV') {\n node = changeElementTag(node, 'LI')!;\n } else if (nodeTag != 'LI') {\n node = wrap(node, 'LI');\n }\n\n this.items.push(\n type == ListType.None\n ? new VListItem(node)\n : new VListItem(node, (type))\n );\n }\n\n /**\n * Merge the given VList into current VList.\n * - All list items will be removed from the given VList and added into this list.\n * - The root node of the given VList will be removed from DOM tree\n * - If there are orphan items in the given VList, they will be merged into the last item\n * of this list if any.\n * @param list The vList to merge from\n */\n mergeVList(list: VList) {\n if (list && list != this) {\n list.items.forEach(item => this.items.push(item));\n list.items.splice(0, list.items.length);\n list.rootList.parentNode?.removeChild(list.rootList);\n }\n }\n\n /**\n * Get the index of the List Item in the current List\n * If the root list is:\n * Ordered list, the listIndex start count is going to be the start property of the OL - 1,\n * @example For example if we want to find the index of Item 2 in the list below, the returned index is going to be 6\n * * ```html\n *
                  \n *
                1. item 1
                2. \n *
                3. item 2
                4. \n *
                5. item 3
                6. \n *
                \n * ```\n * Unordered list, the listIndex start count starts from 0\n * @example For example if we want to find the index of Item 2 in the list below, the returned index is going to be 2\n * ```html\n *
                  \n *
                • item 1
                • \n *
                • item 2
                • \n *
                • item 3
                • \n *
                \n * ```\n * @param input List item to find in the root list\n */\n getListItemIndex(input: Node) {\n if (this.items) {\n let listIndex = (this.getStart() || 1) - 1;\n\n for (let index = 0; index < this.items.length; index++) {\n const child = this.items[index];\n if (child.getLevel() == 1 && !child.isDummy()) {\n listIndex++;\n }\n\n if (child.getNode() == input) {\n return listIndex;\n }\n }\n }\n return -1;\n }\n\n /**\n * Get the Start property of the root list of this VList\n * @returns Start number of the list\n */\n getStart(): number | undefined {\n return safeInstanceOf(this.rootList, 'HTMLOListElement') ? this.rootList.start : undefined;\n }\n\n private findListItems(\n start: NodePosition,\n end: NodePosition,\n callback?: (item: VListItem) => any\n ): VListItem[] {\n if (this.items.length == 0) {\n return [];\n }\n\n const listStartPos = new Position(this.items[0].getNode(), PositionType.Begin);\n const listEndPos = new Position(\n this.items[this.items.length - 1].getNode(),\n PositionType.End\n );\n\n let startIndex = listStartPos.isAfter(start) ? 0 : -1;\n let endIndex = this.items.length - (end.isAfter(listEndPos) ? 1 : 0);\n\n this.items.forEach((item, index) => {\n startIndex = item.contains(start.node) ? index : startIndex;\n endIndex = item.contains(end.node) ? index : endIndex;\n });\n\n startIndex = endIndex < this.items.length ? Math.max(0, startIndex) : startIndex;\n endIndex = startIndex >= 0 ? Math.min(this.items.length - 1, endIndex) : endIndex;\n\n const result = startIndex <= endIndex ? this.items.slice(startIndex, endIndex + 1) : [];\n\n if (callback) {\n result.forEach(callback);\n }\n\n return result;\n }\n\n private populateItems(\n list: HTMLOListElement | HTMLUListElement,\n listTypes: (\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered\n )[] = []\n ) {\n const type = getListTypeFromNode(list);\n const items = toArray(list.childNodes);\n\n items.forEach(item => {\n const newListTypes = [...listTypes, type];\n\n if (isListElement(item)) {\n this.populateItems(item, newListTypes);\n } else if (item.nodeType != NodeType.Text || (item.nodeValue || '').trim() != '') {\n this.items.push(new VListItem(item, ...newListTypes));\n }\n });\n }\n}\n\n//Normalization\n\n// Step 1: Move all non-LI direct children under list into LI\n// e.g.\n// From:
                • line 1
                • line 2
                \n// To:
                • line 1
                  line 2
                \nfunction moveChildNodesToLi(list: HTMLElement) {\n let currentItem: HTMLLIElement | null = null;\n\n toArray(list.childNodes).forEach(child => {\n if (getTagOfNode(child) == 'LI') {\n currentItem = child as HTMLLIElement;\n } else if (isListElement(child)) {\n currentItem = null;\n } else if (currentItem && !isNodeEmpty(child, true /*trimContent*/)) {\n currentItem.appendChild(isBlockElement(child) ? child : wrap(child));\n }\n });\n}\n\n// Step 2: Move nested LI up to under list directly\n// e.g.\n// From:
                • line 1
                • line 2
                • line 3
                \n// To:
                • line 1
                • line 2
                  line 3
                \nfunction moveLiToList(li: HTMLElement) {\n while (!isListElement(li.parentNode)) {\n splitParentNode(li, true /*splitBefore*/);\n let furtherNodes: Node[] = toArray(li.parentNode!.childNodes).slice(1);\n\n if (furtherNodes.length > 0) {\n if (!isBlockElement(furtherNodes[0])) {\n furtherNodes = [wrap(furtherNodes)];\n }\n furtherNodes.forEach(node => li.appendChild(node));\n }\n\n unwrap(li.parentNode!);\n }\n}\n\nfunction getValidValue(...values: (T | undefined)[]): T | undefined {\n return values.filter(x => x !== undefined)[0];\n}\n\nfunction createListStyleMetadata(\n style: ListStyleMetadata | null,\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType\n): ListStyleMetadata {\n return {\n orderedStyleType: getValidValue(\n orderedStyle,\n style?.orderedStyleType,\n NumberingListType.Decimal\n ),\n unorderedStyleType: getValidValue(\n unorderedStyle,\n style?.unorderedStyleType,\n BulletListType.Disc\n ),\n };\n}\n","import arrayPush from '../jsUtils/arrayPush';\nimport getRootListNode from './getRootListNode';\nimport isNodeAfter from '../utils/isNodeAfter';\nimport isNodeInRegion from '../region/isNodeInRegion';\nimport queryElements from '../utils/queryElements';\nimport VList from './VList';\nimport { ListType, RegionBase } from 'roosterjs-editor-types';\n\nconst CHAIN_NAME_PREFIX = '__List_Chain_';\nconst CHAIN_DATASET_NAME = 'listchain';\nconst AFTER_CURSOR_DATASET_NAME = 'listchainafter';\nlet lastChainIndex = 0;\n\n/**\n * Represent a chain of list nodes.\n * A chain of lists is a virtual link of lists that have continuous numbers, when editor one of them,\n * all others should also be updated in order to main the list number to be continuous.\n */\nexport default class VListChain {\n private lastNumber = 0;\n private lastNumberBeforeCursor = 0;\n\n /**\n * Create an array of VListChain from current region in editor\n * @param region The region to create VListChain from\n * @param currentNode Optional current node, used for mark lists that are after this node\n * @param nameGenerator Used by test code only\n */\n static createListChains(\n region: RegionBase | RegionBase[],\n currentNode?: Node,\n nameGenerator?: () => string\n ): VListChain[] {\n const regions = Array.isArray(region) ? region : region ? [region] : [];\n const result: VListChain[] = [];\n regions.forEach(region => {\n const chains: VListChain[] = [];\n let lastList: HTMLOListElement;\n\n queryElements(region.rootNode, 'ol', ol => {\n const list = getRootListNode(region, 'ol', ol);\n\n if (lastList != list) {\n const chain =\n chains.filter(c => c.canAppendToTail(list))[0] ||\n new VListChain(region, (nameGenerator || createListChainName)());\n const index = chains.indexOf(chain);\n const afterCurrentNode = !!currentNode && isNodeAfter(list, currentNode);\n\n if (!afterCurrentNode) {\n // Make sure current one is at the front if current block has not been met, so that\n // the first chain is always the nearest one from current node\n if (index >= 0) {\n chains.splice(index, 1);\n }\n\n chains.unshift(chain);\n } else if (index < 0) {\n chains.push(chain);\n }\n\n chain.append(list, afterCurrentNode);\n lastList = list;\n }\n });\n\n arrayPush(result, chains);\n });\n\n return result;\n }\n\n /**\n * Check if a list with the given start number can be appended next to the last list before cursor\n * @param startNumber The start number of the new list\n */\n canAppendAtCursor(startNumber: number): boolean {\n return startNumber > 1 && this.lastNumberBeforeCursor + 1 == startNumber;\n }\n\n /**\n * Create a VList to wrap the block of the given node, and append to current chain\n * @param container The container node to create list at\n * @param startNumber Start number of the new list\n */\n createVListAtBlock(container: Node, startNumber: number): VList | null {\n if (container && container.parentNode) {\n const list = container.ownerDocument!.createElement('ol');\n\n list.start = startNumber;\n this.applyChainName(list);\n container.parentNode.insertBefore(list, container);\n\n const vList = new VList(list);\n\n vList.appendItem(container, ListType.None);\n return vList;\n } else {\n return null;\n }\n }\n\n /**\n * After change the lists, commit the change to all lists in this chain to update the list number,\n * and clear the temporary dataset values added to list node\n * @param shouldReuseAllAncestorListElements Whether we can parent list item (OL/UL) even if its list type does not match the previous one. @default false\n * @param disableListChain Whether we want to disable list chain functionality, so splitted list will always restart its number from 1 @default false\n */\n commit(shouldReuseAllAncestorListElements?: boolean, disableListChain?: boolean) {\n const lists = this.getLists();\n let lastNumber = 0;\n\n for (let i = 0; i < lists.length; i++) {\n const list = lists[i];\n\n if (!disableListChain) {\n //If there is a list chain sequence, ensure the list chain keep increasing correctly\n if (list.start > 1) {\n list.start = list.start === lastNumber ? lastNumber + 1 : list.start;\n } else {\n list.start = lastNumber + 1;\n }\n }\n\n const vlist = new VList(list);\n lastNumber = vlist.getLastItemNumber() || 0;\n\n delete list.dataset[CHAIN_DATASET_NAME];\n delete list.dataset[AFTER_CURSOR_DATASET_NAME];\n\n vlist.writeBack(shouldReuseAllAncestorListElements);\n }\n }\n\n /**\n * Construct a new instance of VListChain class\n * @param editor Editor object\n */\n private constructor(private region: RegionBase, private name: string) {}\n\n /**\n * Check if the given list node is can be appended into current list chain\n * @param list The list node to check\n */\n private canAppendToTail(list: HTMLOListElement) {\n return this.lastNumber + 1 == list.start;\n }\n\n /**\n * Append the given list node into this VListChain\n * @param list The list node to append\n * @param isAfterCurrentNode Whether this list is after current node\n */\n private append(list: HTMLOListElement, isAfterCurrentNode: boolean) {\n this.applyChainName(list);\n this.lastNumber = new VList(list).getLastItemNumber() || 0;\n\n if (isAfterCurrentNode) {\n list.dataset[AFTER_CURSOR_DATASET_NAME] = 'true';\n } else {\n this.lastNumberBeforeCursor = this.lastNumber;\n }\n }\n\n private applyChainName(list: HTMLOListElement) {\n list.dataset[CHAIN_DATASET_NAME] = this.name;\n }\n\n private getLists() {\n return queryElements(\n this.region.rootNode,\n `ol[data-${CHAIN_DATASET_NAME}=${this.name}]`\n ).filter(node => isNodeInRegion(this.region, node)) as HTMLOListElement[];\n }\n}\n\nfunction createListChainName() {\n return CHAIN_NAME_PREFIX + lastChainIndex++;\n}\n","import contains from '../utils/contains';\nimport getListTypeFromNode from './getListTypeFromNode';\nimport getStyles from '../style/getStyles';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isBlockElement from '../utils/isBlockElement';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setBulletListMarkers from './setBulletListMarkers';\nimport setListItemStyle from './setListItemStyle';\nimport setNumberingListMarkers from './setNumberingListMarkers';\nimport setStyles from '../style/setStyles';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport wrap from '../utils/wrap';\nimport { createNumberDefinition, createObjectDefinition } from '../metadata/definitionCreators';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport {\n BulletListType,\n KnownCreateElementDataIndex,\n ListType,\n NumberingListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleBulletListType,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst orderListStyles = [null, 'lower-alpha', 'lower-roman'];\nconst unorderedListStyles = ['disc', 'circle', 'square'];\n\nconst MARGIN_BASE = '0in 0in 0in 0.5in';\nconst NEGATIVE_MARGIN = '-.25in';\n\nconst stylesToInherit = ['font-size', 'font-family', 'color'];\nconst attrsToInherit = ['data-ogsc', 'data-ogsb', 'data-ogac', 'data-ogab'];\n\n/**\n * @internal\n * The definition for the number of BulletListType or NumberingListType\n */\nexport const ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\n/**\n * @internal\n * Represents the metadata of the style of a list element\n */\nexport interface ListStyleMetadata {\n orderedStyleType?: NumberingListType | CompatibleNumberingListType;\n unorderedStyleType?: BulletListType | CompatibleBulletListType;\n}\n\n/**\n * !!! Never directly create instance of this class. It should be created within VList class !!!\n *\n * Represent a list item.\n *\n * A list item is normally wrapped using a LI tag. But this class is only a logical item,\n * it can be a LI tag, or another other type of node which means it is actually not a list item.\n * That can happen after we do \"outdent\" on a 1-level list item, then it becomes not a list item.\n */\nexport default class VListItem {\n private listTypes: (ListType | CompatibleListType)[];\n private node: HTMLLIElement;\n private dummy: boolean;\n private newListStart: number | undefined = undefined;\n\n /**\n * Construct a new instance of VListItem class\n * @param node The DOM node for this item\n * @param listTypes An array represents list types of all parent and current level.\n * Skip this parameter for a non-list item.\n */\n constructor(\n node: Node,\n ...listTypes: (\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered\n )[]\n ) {\n if (!node) {\n throw new Error('node must not be null');\n }\n\n this.node = safeInstanceOf(node, 'HTMLLIElement')\n ? node\n : (wrap(node, KnownCreateElementDataIndex.BlockListItem) as HTMLLIElement);\n const display = this.node.style.display;\n\n this.dummy = display != 'list-item' && display != '';\n\n // Always add a None list type in front of all other types to represent non-list scenario.\n this.listTypes = [ListType.None, ...listTypes];\n }\n\n /**\n * Get type of current list item\n */\n getListType(): ListType | CompatibleListType {\n return this.listTypes[this.listTypes.length - 1];\n }\n\n /**\n * Get the levels of this list item.\n */\n getLevel(): number {\n return this.listTypes.length - 1;\n }\n\n /**\n * Get DOM node of this list item\n */\n getNode(): HTMLLIElement {\n return this.node;\n }\n\n /**\n * Get the Start Number of the new List\n */\n getNewListStart(): number | undefined {\n return this.newListStart;\n }\n\n /**\n * Check if a given node is contained by this list item\n * @param node The node to check\n */\n contains(node: Node): boolean {\n return contains(this.node, node, true /*treatSameNodeAsContain*/);\n }\n\n /**\n * Check if this item is a dummy item.\n * A dummy item is also represented by LI tag, but it won't render a bullet (for Unordered list) or a number (for Ordered list)\n * normally it has CSS style display set to a value other than \"list-item\"\n */\n isDummy() {\n return this.dummy;\n }\n\n /**\n * @deprecated Always return false\n */\n isOrphanItem(): boolean {\n return false;\n }\n\n /**\n * @deprecated\n */\n canMerge(item: VListItem): boolean {\n if (!item?.isOrphanItem() || this.listTypes.length != item.listTypes.length) {\n return false;\n }\n\n return this.listTypes.every((type, index) => item.listTypes[index] == type);\n }\n\n /**\n * @deprecated\n */\n mergeItems(items: VListItem[]) {\n const nodesToWrap = items?.map(item => item.node) || [];\n const targetNodes = wrapIfNotBlockNode(\n nodesToWrap,\n true /*checkFirst*/,\n false /*checkLast*/\n );\n targetNodes.forEach(node => this.node.appendChild(node));\n }\n\n /**\n * Indent this item\n * If this is not an list item, it will be no op\n */\n indent() {\n if (this.node.style.marginLeft == NEGATIVE_MARGIN) {\n this.node.style.margin = '';\n this.node.style.marginLeft = '';\n return;\n }\n\n const listType = this.getListType();\n if (listType != ListType.None) {\n this.listTypes.push(listType);\n }\n }\n\n /**\n * Outdent this item\n * If this item is already not an list item, it will be no op\n * @param preventItemRemoval Whether prevent the list item to be removed for the listItem by default false\n */\n outdent(preventItemRemoval: boolean = false) {\n const expectedLength = preventItemRemoval ? 2 : 1;\n if (this.listTypes.length > expectedLength) {\n this.listTypes.pop();\n }\n }\n\n /**\n * Add negative margin to the List item\n */\n addNegativeMargins() {\n this.node.style.margin = MARGIN_BASE;\n this.node.style.marginLeft = NEGATIVE_MARGIN;\n }\n\n /**\n * Change list type of this item\n * @param targetType The target list type to change to\n */\n changeListType(targetType: ListType | CompatibleListType) {\n if (targetType == ListType.None) {\n this.listTypes = [targetType];\n } else {\n this.outdent();\n this.listTypes.push(targetType);\n }\n }\n\n /**\n * Set whether the item is a dummy item\n * @param isDummy Whether the item is a dummy item\n */\n setIsDummy(isDummy: boolean) {\n this.dummy = isDummy;\n }\n\n /**\n * Set the start Number of the new list\n * @param isDummy Whether the item is a dummy item\n */\n setNewListStart(startNumber: number) {\n this.newListStart = startNumber;\n }\n\n /**\n * Apply the list style type\n * @param rootList the vList that receives the style\n * @param index the list item index\n */\n applyListStyle(rootList: HTMLOListElement | HTMLUListElement, index: number) {\n const style = getMetadata(rootList, ListStyleDefinitionMetadata);\n // The list just need to be styled if it is at top level, so the listType length for this Vlist must be 2.\n const isFirstLevel = this.listTypes.length < 3;\n if (style) {\n if (\n isFirstLevel &&\n this.listTypes[1] === ListType.Unordered &&\n style.unorderedStyleType\n ) {\n setBulletListMarkers(this.node, style.unorderedStyleType);\n } else if (\n isFirstLevel &&\n this.listTypes[1] === ListType.Ordered &&\n style.orderedStyleType\n ) {\n setNumberingListMarkers(this.node, style.orderedStyleType, index);\n } else {\n this.node.style.removeProperty('list-style-type');\n }\n }\n }\n\n /**\n * Write the change result back into DOM\n * @param listStack current stack of list elements\n * @param originalRoot Original list root element. It will be reused when write back if possible\n * @param shouldReuseAllAncestorListElements Optional - defaults to false. If true, only make\n * sure the direct parent of this list matches the list types when writing back.\n */\n writeBack(\n listStack: Node[],\n originalRoot?: HTMLOListElement | HTMLUListElement,\n shouldReuseAllAncestorListElements: boolean = false\n ) {\n let nextLevel = 1;\n\n if (shouldReuseAllAncestorListElements) {\n // Remove any un-needed lists from the stack.\n if (listStack.length > this.listTypes.length) {\n listStack.splice(this.listTypes.length);\n }\n\n // 1. If the listStack is the same length as the listTypes for this item, check\n // if the last item needs to change, and remove it if needed. We can always re-use\n // the other lists even if the type doesn't match - since the display is the same\n // as long as the list immediately surrounding the item is correct.\n const listStackEndIndex = listStack.length - 1;\n if (\n listStackEndIndex === this.listTypes.length - 1 && // they are the same length\n getListTypeFromNode(listStack[listStackEndIndex]) !==\n this.listTypes[listStackEndIndex]\n ) {\n listStack.splice(listStackEndIndex);\n }\n\n nextLevel = listStack.length;\n } else {\n // 1. Determine list elements that we can reuse\n // e.g.:\n // passed in listStack: Fragment > OL > UL > OL\n // local listTypes: null > OL > UL > UL > OL\n // then Fragment > OL > UL can be reused\n for (; nextLevel < listStack.length; nextLevel++) {\n if (getListTypeFromNode(listStack[nextLevel]) !== this.listTypes[nextLevel]) {\n listStack.splice(nextLevel);\n break;\n }\n }\n }\n\n // 2. Add new list elements\n // e.g.:\n // passed in listStack: Fragment > OL > UL\n // local listTypes: null > OL > UL > UL > OL\n // then we need to create a UL and a OL tag\n for (; nextLevel < this.listTypes.length; nextLevel++) {\n const stackLength = listStack.length - 1;\n const newList = createListElement(\n listStack[0],\n this.listTypes[nextLevel],\n nextLevel,\n originalRoot\n );\n\n listStack[stackLength].appendChild(newList);\n listStack.push(newList);\n\n //If the current node parent is in the same deep child index,\n //apply the styles of the current parent list to the new list\n if (this.getDeepChildIndex(originalRoot) == stackLength) {\n const listStyleType = this.node.parentElement?.style.listStyleType;\n if (\n listStyleType &&\n getTagOfNode(this.node.parentElement) === getTagOfNode(newList)\n ) {\n newList.style.listStyleType = listStyleType;\n }\n }\n }\n // 3. Add current node into deepest list element\n listStack[listStack.length - 1].appendChild(this.node);\n this.node.style.setProperty('display', this.dummy ? 'block' : null);\n\n // 4. Inherit styles of the child element to the li, so we are able to apply the styles to the ::marker\n if (this.listTypes.length > 1) {\n setListItemStyle(this.node, stylesToInherit, true /*isCssStyle*/);\n setListItemStyle(this.node, attrsToInherit, false /*isCssStyle*/);\n }\n\n // 5. If this is not a list item now, need to unwrap the LI node and do proper handling\n if (this.listTypes.length <= 1) {\n // If original
              2. node has styles for font and color, we need to apply it to new parent\n const isLi = getTagOfNode(this.node) == 'LI';\n const stylesToApply = isLi\n ? {\n 'font-family': this.node.style.fontFamily,\n 'font-size': this.node.style.fontSize,\n color: this.node.style.color,\n }\n : undefined;\n\n const childNodes = isLi ? getChildrenAndUnwrap(this.node) : [this.node];\n\n if (stylesToApply) {\n for (let i = 0; i < childNodes.length; i++) {\n if (safeInstanceOf(childNodes[i], 'Text')) {\n childNodes[i] = wrap(childNodes[i], 'span');\n }\n\n const node = childNodes[i];\n\n if (safeInstanceOf(node, 'HTMLElement')) {\n const styles = {\n ...stylesToApply,\n ...getStyles(node),\n };\n setStyles(node, styles);\n\n attrsToInherit.forEach(attr => {\n const attrValue = this.node.getAttribute(attr);\n\n if (attrValue) {\n node.setAttribute(attr, attrValue);\n }\n });\n }\n }\n }\n\n wrapIfNotBlockNode(childNodes, true /*checkFirst*/, true /*checkLast*/);\n }\n }\n\n /**\n * Get the index of how deep is the current node parent list inside of the original root list.\n * @example In the following structure this function would return 2\n * ```html\n *
                  \n *
                    \n *
                      \n *
                    1. \n *
                    \n *
                  \n *
                \n * ```\n * @param originalRoot The root list\n * @returns -1 if the node does not have parent element or if original root was not provided,\n * else, how deep is the parent element inside of the original root.\n */\n private getDeepChildIndex(originalRoot: HTMLOListElement | HTMLUListElement | undefined) {\n let parentElement = this.node.parentElement;\n if (originalRoot && parentElement) {\n let deepIndex = 0;\n while (parentElement && parentElement != originalRoot) {\n deepIndex++;\n parentElement = parentElement?.parentElement || null;\n }\n return deepIndex;\n }\n return -1;\n }\n}\n\nfunction createListElement(\n newRoot: Node,\n listType: ListType | CompatibleListType,\n nextLevel: number,\n originalRoot?: HTMLOListElement | HTMLUListElement\n): HTMLOListElement | HTMLUListElement {\n const doc = newRoot.ownerDocument!;\n let result: HTMLOListElement | HTMLUListElement;\n\n // Try to reuse the existing root element\n // It can be reused when\n // 1. Current list item is level 1 (top level), AND\n // 2. Original root exists, AND\n // 3. They have the same list type AND\n // 4. The original root is not used yet\n if (nextLevel == 1 && originalRoot && listType == getListTypeFromNode(originalRoot)) {\n if (contains(newRoot, originalRoot)) {\n // If it is already used, let's clone one and remove ID to avoid duplicating ID\n result = originalRoot.cloneNode(false /*deep*/) as HTMLOListElement | HTMLUListElement;\n (result).removeAttribute('id');\n } else {\n // Remove all child nodes, they will be added back later when write back other items\n moveChildNodes(originalRoot);\n result = originalRoot;\n }\n } else {\n // Can't be reused, can't clone, let's create a new one\n result = doc.createElement(listType == ListType.Ordered ? 'ol' : 'ul');\n }\n\n // Always maintain the metadata saved in the list\n if (originalRoot && nextLevel == 1 && listType != getListTypeFromNode(originalRoot)) {\n const style = getMetadata(originalRoot, ListStyleDefinitionMetadata);\n if (style) {\n setMetadata(result, style, ListStyleDefinitionMetadata);\n }\n }\n\n if (listType == ListType.Ordered && nextLevel > 1) {\n result.style.setProperty(\n 'list-style-type',\n orderListStyles[(nextLevel - 1) % orderListStyles.length]\n );\n }\n\n if (listType == ListType.Unordered && nextLevel > 1) {\n result.style.setProperty(\n 'list-style-type',\n unorderedListStyles[(nextLevel - 1) % unorderedListStyles.length]\n );\n }\n\n return result;\n}\n\nfunction wrapIfNotBlockNode(nodes: Node[], checkFirst: boolean, checkLast: boolean): Node[] {\n if (\n nodes.length > 0 &&\n (!checkFirst || !isBlockElement(nodes[0])) &&\n (!checkLast || !isBlockElement(nodes[nodes.length]))\n ) {\n nodes = [wrap(nodes)];\n }\n\n return nodes;\n}\n\nfunction getChildrenAndUnwrap(node: Node): Node[] {\n const result = toArray(node.childNodes);\n unwrap(node);\n return result;\n}\n","const ALPHABET: Record = {\n 0: 'A',\n 1: 'B',\n 2: 'C',\n 3: 'D',\n 4: 'E',\n 5: 'F',\n 6: 'G',\n 7: 'H',\n 8: 'I',\n 9: 'J',\n 10: 'K',\n 11: 'L',\n 12: 'M',\n 13: 'N',\n 14: 'O',\n 15: 'P',\n 16: 'Q',\n 17: 'R',\n 18: 'S',\n 19: 'T',\n 20: 'U',\n 21: 'V',\n 22: 'W',\n 23: 'X',\n 24: 'Y',\n 25: 'Z',\n};\n\n/**\n * @internal\n * Convert decimal numbers into english alphabet letters\n * @param decimal The decimal number that needs to be converted\n * @param isLowerCase if true the roman value will appear in lower case\n * @returns\n */\nexport default function convertDecimalsToAlpha(decimal: number, isLowerCase?: boolean): string {\n let alpha = '';\n while (decimal >= 0) {\n alpha = ALPHABET[decimal % 26] + alpha;\n decimal = Math.floor(decimal / 26) - 1;\n }\n return isLowerCase ? alpha.toLowerCase() : alpha;\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\nconst RomanValues: Record = {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1,\n};\n\n/**\n * @internal\n * Convert decimal numbers into roman numbers\n * @param decimal The decimal number that needs to be converted\n * @param isLowerCase if true the roman value will appear in lower case\n * @returns\n */\nexport default function convertDecimalsToRoman(decimal: number, isLowerCase?: boolean) {\n let romanValue = '';\n for (let i of getObjectKeys(RomanValues)) {\n let timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);\n decimal = decimal - timesRomanCharAppear * RomanValues[i];\n romanValue = romanValue + i.repeat(timesRomanCharAppear);\n }\n return isLowerCase ? romanValue.toLocaleLowerCase() : romanValue;\n}\n","import createElement from '../utils/createElement';\nimport getRootListNode from './getRootListNode';\nimport getSelectedBlockElementsInRegion from '../region/getSelectedBlockElementsInRegion';\nimport isNodeInRegion from '../region/isNodeInRegion';\nimport Position from '../selection/Position';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport shouldSkipNode from '../utils/shouldSkipNode';\nimport toArray from '../jsUtils/toArray';\nimport VList from './VList';\nimport wrap from '../utils/wrap';\nimport { getLeafSibling } from '../utils/getLeafSibling';\nimport { isListElement } from './getListTypeFromNode';\nimport {\n KnownCreateElementDataIndex,\n ListType,\n Region,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ListSelector = 'ol,ul';\n\n/**\n * Create a VList object from the given region.\n * @param region The region to get VList from\n * @param includeSiblingLists True to also try get lists before and after the selection and merge them together,\n * false to only include the list for the selected blocks\n * @param startNode (Optional) When specified, try get VList which will contain this node.\n * If not specified, get VList from selection of this region\n */\nexport default function createVListFromRegion(\n region: Region,\n includeSiblingLists?: boolean,\n startNode?: Node\n): VList | null {\n if (!region) {\n return null;\n }\n\n let nodes: Node[] = [];\n\n if (startNode) {\n const list = getRootListNode(region, ListSelector, startNode);\n if (list) {\n nodes.push(list);\n }\n } else {\n const blocks = getSelectedBlockElementsInRegion(\n region,\n undefined,\n true /* shouldApplyFormatToSpan */\n );\n blocks.forEach(block => {\n const list = getRootListNode(region, ListSelector, block.getStartNode());\n\n if (list) {\n if (nodes[nodes.length - 1] != list) {\n nodes.push(list);\n }\n if (\n nodes.length == 1 &&\n safeInstanceOf(list, 'HTMLOListElement') &&\n list.start > 1\n ) {\n // Do not include sibling lists if this list is not start from 1\n includeSiblingLists = false;\n }\n } else {\n nodes.push(block.collapseToSingleElement());\n }\n });\n\n if (nodes.length == 0 && !region.rootNode.firstChild) {\n const newNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n region.rootNode.ownerDocument\n )!;\n region.rootNode.appendChild(newNode);\n nodes.push(newNode);\n region.fullSelectionStart = new Position(newNode, PositionType.Begin);\n region.fullSelectionEnd = new Position(newNode, PositionType.End);\n }\n\n if (includeSiblingLists) {\n tryIncludeSiblingNode(region, nodes, false /*isNext*/);\n tryIncludeSiblingNode(region, nodes, true /*isNext*/);\n }\n\n nodes = nodes.filter(node => !shouldSkipNode(node, true /*ignoreSpace*/));\n }\n\n let vList: VList | null = null;\n\n if (nodes.length > 0) {\n const firstNode = nodes.shift() || null;\n vList = isListElement(firstNode)\n ? new VList(firstNode)\n : firstNode\n ? createVListFromItemNode(firstNode)\n : null;\n\n if (vList) {\n nodes.forEach(node => {\n if (isListElement(node)) {\n vList!.mergeVList(new VList(node));\n } else {\n vList!.appendItem(node, ListType.None);\n }\n });\n }\n }\n\n return vList;\n}\n\nfunction tryIncludeSiblingNode(region: Region, nodes: Node[], isNext: boolean) {\n let node: Node | null = nodes[isNext ? nodes.length - 1 : 0];\n node = getLeafSibling(region.rootNode, node, isNext, region.skipTags, true /*ignoreSpace*/);\n node = getRootListNode(region, ListSelector, node);\n if (isNodeInRegion(region, node) && isListElement(node)) {\n if (isNext) {\n if (!safeInstanceOf(node, 'HTMLOListElement') || node.start == 1) {\n // Only include sibling list when\n // 1. This is a unordered list, OR\n // 2. This list starts from 1\n nodes.push(node);\n }\n } else {\n nodes.unshift(node);\n }\n }\n}\n\nfunction createVListFromItemNode(node: Node): VList {\n // Wrap all child nodes under a single one, and put the new list under original root node\n // so that the list can carry over styles under the root node.\n const childNodes = toArray(node.childNodes);\n const nodeForItem = childNodes.length == 1 ? childNodes[0] : wrap(childNodes, 'SPAN');\n\n // Create a temporary OL root element for this list.\n const listNode = node.ownerDocument!.createElement('ol'); // Either OL or UL is ok here\n node.appendChild(listNode);\n\n // Create the VList and append items\n const vList = new VList(listNode);\n vList.appendItem(nodeForItem, ListType.None);\n\n return vList;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport { ListType } from 'roosterjs-editor-types';\nimport type { CompatibleListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Get list type from a list element. The result will be either Ordered or Unordered ListType\n * @param listElement the element to get list type from\n */\nexport default function getListTypeFromNode(\n listElement: HTMLOListElement | HTMLUListElement\n):\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered;\n\n/**\n * @internal\n * Get list type from a DOM node. It is possible to return ListType.None\n * @param node the node to get list type from\n */\nexport default function getListTypeFromNode(node: Node | null): ListType | CompatibleListType;\n\nexport default function getListTypeFromNode(node: Node | null): ListType | CompatibleListType {\n switch (getTagOfNode(node)) {\n case 'OL':\n return ListType.Ordered;\n case 'UL':\n return ListType.Unordered;\n default:\n return ListType.None;\n }\n}\n\n/**\n * @internal\n * Check if the given DOM node is a list element (OL or UL)\n * @param node The node to check\n */\nexport function isListElement(node: Node | null): node is HTMLUListElement | HTMLOListElement {\n return getListTypeFromNode(node) != ListType.None;\n}\n","import findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport { RegionBase } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * A type map from selector string to HTML element type\n */\nexport interface SelectorToTypeMap {\n ol: HTMLOListElement;\n ul: HTMLUListElement;\n 'ol,ul': HTMLOListElement | HTMLUListElement;\n}\n\n/**\n * @internal\n * Get Root list node from the given node within the given region\n * @param region Region to scope the search into\n * @param selector The selector to search\n * @param node The start node\n */\nexport default function getRootListNode(\n region: RegionBase,\n selector: TSelector,\n node: Node | null\n): SelectorToTypeMap[TSelector] {\n let list =\n region &&\n (findClosestElementAncestor(\n node,\n region.rootNode,\n selector\n ) as SelectorToTypeMap[TSelector]);\n\n if (list) {\n let ancestor: SelectorToTypeMap[TSelector];\n while (\n (ancestor = findClosestElementAncestor(\n list.parentNode,\n region.rootNode,\n selector\n ) as SelectorToTypeMap[TSelector])\n ) {\n list = ancestor;\n }\n }\n\n return list;\n}\n","import { BulletListType } from 'roosterjs-editor-types';\nimport type { CompatibleBulletListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Set the marker of a bullet list\n * @param li\n * @param listStyleType\n */\nexport default function setBulletListMarkers(\n li: HTMLLIElement,\n listStyleType: BulletListType | CompatibleBulletListType\n) {\n const marker = bulletListStyle[listStyleType];\n const isDisc = listStyleType === BulletListType.Disc;\n li.style.listStyleType = isDisc ? marker : `\"${marker}\"`;\n}\n\nconst bulletListStyle: Record = {\n [BulletListType.Disc]: 'disc',\n [BulletListType.Square]: '∎ ',\n [BulletListType.Dash]: '- ',\n [BulletListType.LongArrow]: '➔ ',\n [BulletListType.DoubleLongArrow]: '➔ ',\n [BulletListType.ShortArrow]: '➢ ',\n [BulletListType.UnfilledArrow]: '➪ ',\n [BulletListType.Hyphen]: '— ',\n};\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { InlineElement } from 'roosterjs-editor-types';\n\n/**\n * Set the Style of a List Item provided, with the styles that the inline child elements have\n * If the child inline elements have different styles, it will not modify the styles of the list item\n * @param element the LI Element to set the styles\n * @param styles The styles that should be applied to the element.\n * @param isCssStyle True means the given styles are CSS style names, false means they are HTML attributes @default true\n */\nexport default function setListItemStyle(\n element: HTMLLIElement,\n styles: string[],\n isCssStyle: boolean = true\n) {\n const elementsStyles = getInlineChildElementsStyle(element, styles, isCssStyle);\n\n styles.forEach(styleName => {\n const styleValues = elementsStyles.map(style =>\n style[styleName] !== undefined ? style[styleName] : ''\n );\n\n if (\n styleValues &&\n (styleValues.length == 1 || new Set(styleValues).size == 1) &&\n styleValues[0]\n ) {\n if (isCssStyle) {\n element.style.setProperty(styleName, styleValues[0]);\n } else {\n element.setAttribute(styleName, styleValues[0]);\n }\n }\n });\n}\n\nfunction getInlineChildElementsStyle(element: HTMLElement, styles: string[], isCssStyle: boolean) {\n const result: Record[] = [];\n const contentTraverser = ContentTraverser.createBodyTraverser(element);\n let currentInlineElement: InlineElement | null = null;\n\n while (contentTraverser.currentInlineElement != currentInlineElement) {\n currentInlineElement = contentTraverser.currentInlineElement;\n let currentNode = currentInlineElement?.getContainerNode() || null;\n let currentStyle: Record | null = null;\n\n currentNode = currentNode ? findClosestElementAncestor(currentNode) : null;\n\n // we should consider of when it is the single child node of element, the parentNode's style should add\n // such as the \"i\", \"b\", \"span\" node in
              3. aa
              4. \n while (\n currentNode &&\n currentNode !== element &&\n safeInstanceOf(currentNode, 'HTMLElement') &&\n (result.length == 0 || (currentNode.textContent?.trim().length || 0) > 0)\n ) {\n const element: HTMLElement = currentNode;\n\n styles.forEach(styleName => {\n const styleValue = isCssStyle\n ? element.style.getPropertyValue(styleName)\n : element.getAttribute(styleName);\n\n if (!currentStyle) {\n currentStyle = {};\n }\n\n if (styleValue && !currentStyle[styleName]) {\n currentStyle[styleName] = styleValue;\n }\n });\n\n if (currentNode?.parentNode?.childNodes.length === 1) {\n currentNode = currentNode.parentNode;\n } else {\n currentNode = null;\n }\n }\n\n if (currentStyle) {\n result.push(currentStyle);\n }\n\n contentTraverser.getNextInlineElement();\n }\n\n return result;\n}\n","import convertDecimalsToAlpha from './convertDecimalsToAlpha';\nimport convertDecimalsToRoman from './convertDecimalsToRomans';\nimport { NumberingListType } from 'roosterjs-editor-types';\nimport type { CompatibleNumberingListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\ninterface MarkerStyle {\n markerType: number;\n markerSeparator: string;\n markerSecondSeparator?: string;\n lowerCase?: boolean;\n}\n\nenum MarkerTypes {\n Decimal,\n Roman,\n Alpha,\n}\n\n/**\n * @internal\n * Set marker style of a numbering list\n * @param listStyleType\n * @param li\n */\nexport default function setNumberingListMarkers(\n li: HTMLLIElement,\n listStyleType: NumberingListType | CompatibleNumberingListType,\n level: number\n) {\n const { markerSeparator, markerSecondSeparator, markerType, lowerCase } = numberingListStyle[\n listStyleType\n ];\n\n let markerNumber = level.toString();\n if (markerType === MarkerTypes.Roman) {\n markerNumber = convertDecimalsToRoman(level, lowerCase);\n } else if (markerType === MarkerTypes.Alpha) {\n markerNumber = convertDecimalsToAlpha(level - 1, lowerCase);\n }\n\n const marker = markerSecondSeparator\n ? markerSecondSeparator + markerNumber + markerSeparator\n : markerNumber + markerSeparator;\n\n li.style.listStyleType = `\"${marker}\"`;\n}\n\nconst numberingListStyle: Record = {\n [NumberingListType.Decimal]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: '. ',\n },\n [NumberingListType.DecimalDash]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: '- ',\n },\n [NumberingListType.DecimalParenthesis]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: ') ',\n },\n [NumberingListType.DecimalDoubleParenthesis]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n [NumberingListType.LowerAlpha]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '. ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaDash]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '- ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaDoubleParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n lowerCase: true,\n },\n [NumberingListType.UpperAlpha]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '. ',\n },\n [NumberingListType.UpperAlphaDash]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '- ',\n },\n [NumberingListType.UpperAlphaParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n },\n [NumberingListType.UpperAlphaDoubleParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n [NumberingListType.LowerRoman]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '. ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanDash]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '- ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanDoubleParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n lowerCase: true,\n },\n [NumberingListType.UpperRoman]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '. ',\n },\n [NumberingListType.UpperRomanDash]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '- ',\n },\n [NumberingListType.UpperRomanParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n },\n [NumberingListType.UpperRomanDoubleParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n};\n","import {\n Definition,\n DefinitionType,\n NumberDefinition,\n ArrayDefinition,\n BooleanDefinition,\n StringDefinition,\n ObjectDefinition,\n ObjectPropertyDefinition,\n} from 'roosterjs-editor-types';\n\n/**\n * Create a number definition\n * @param isOptional Whether this property is optional\n * @param value Optional value of the number\n * @param minValue Optional minimum value\n * @param maxValue Optional maximum value\n * @param allowNull Allow the property to be null\n * @returns The number definition object\n */\nexport function createNumberDefinition(\n isOptional?: boolean,\n value?: number,\n minValue?: number,\n maxValue?: number,\n allowNull?: boolean\n): NumberDefinition {\n return {\n type: DefinitionType.Number,\n isOptional,\n value,\n maxValue,\n minValue,\n allowNull,\n };\n}\n\n/**\n * Create a boolean definition\n * @param isOptional Whether this property is optional\n * @param value Optional expected boolean value\n * @param allowNull Allow the property to be null\n * @returns The boolean definition object\n */\nexport function createBooleanDefinition(\n isOptional?: boolean,\n value?: boolean,\n allowNull?: boolean\n): BooleanDefinition {\n return {\n type: DefinitionType.Boolean,\n isOptional,\n value,\n allowNull,\n };\n}\n\n/**\n * Create a string definition\n * @param isOptional Whether this property is optional\n * @param value Optional expected string value\n * @param allowNull Allow the property to be null\n * @returns The string definition object\n */\nexport function createStringDefinition(\n isOptional?: boolean,\n value?: string,\n allowNull?: boolean\n): StringDefinition {\n return {\n type: DefinitionType.String,\n isOptional,\n value,\n allowNull,\n };\n}\n\n/**\n * Create an array definition\n * @param itemDef Definition of each item of the related array\n * @param isOptional Whether this property is optional\n * @param allowNull Allow the property to be null\n * @returns The array definition object\n */\nexport function createArrayDefinition(\n itemDef: Definition,\n isOptional?: boolean,\n minLength?: number,\n maxLength?: number,\n allowNull?: boolean\n): ArrayDefinition {\n return {\n type: DefinitionType.Array,\n isOptional,\n itemDef,\n minLength,\n maxLength,\n allowNull,\n };\n}\n\n/**\n * Create an object definition\n * @param propertyDef Definition of each property of the related object\n * @param isOptional Whether this property is optional\n * @param allowNull Allow the property to be null\n * @returns The object definition object\n */\nexport function createObjectDefinition(\n propertyDef: ObjectPropertyDefinition,\n isOptional?: boolean,\n allowNull?: boolean\n): ObjectDefinition {\n return {\n type: DefinitionType.Object,\n isOptional,\n propertyDef,\n allowNull,\n };\n}\n","import validate from './validate';\nimport { Definition } from 'roosterjs-editor-types';\n\nconst MetadataDataSetName = 'editingInfo';\n\n/**\n * Get metadata object from an HTML element\n * @param element The HTML element to get metadata object from\n * @param definition The type definition of this metadata used for validate this metadata object.\n * If not specified, no validation will be performed and always return whatever we get from the element\n * @param defaultValue The default value to return if the retrieved object cannot pass the validation,\n * or there is no metadata object at all\n * @returns The strong-type metadata object if it can be validated, or null\n */\nexport function getMetadata(\n element: HTMLElement,\n definition?: Definition,\n defaultValue?: T\n): 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 if (!definition) {\n return obj as T;\n } else if (validate(obj, definition)) {\n return obj;\n }\n }\n\n if (defaultValue) {\n return defaultValue;\n } else {\n return null;\n }\n}\n\n/**\n * Set metadata object into an HTML element\n * @param element The HTML element to set metadata object to\n * @param metadata The metadata object to set\n * @param def An optional type definition object used for validate this metadata object.\n * If not specified, metadata will be set without validation\n * @returns True if metadata is set, otherwise false\n */\nexport function setMetadata(element: HTMLElement, metadata: T, def?: Definition): boolean {\n if (!def || validate(metadata, def)) {\n element.dataset[MetadataDataSetName] = JSON.stringify(metadata);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Remove metadata from the given element if any\n * @param element The element to remove metadata from\n * @param metadataKey The metadata key to remove, if none provided it will delete all metadata\n */\nexport function removeMetadata(element: HTMLElement, metadataKey?: string) {\n if (metadataKey) {\n const currentMetadata: any = getMetadata(element);\n if (currentMetadata) {\n delete currentMetadata[metadataKey];\n element.dataset[MetadataDataSetName] = JSON.stringify(currentMetadata);\n }\n } else {\n delete element.dataset[MetadataDataSetName];\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport { Definition, DefinitionType } from 'roosterjs-editor-types';\n\n/**\n * Validate the given object with a type definition object\n * @param input The object to validate\n * @param def The type definition object used for validation\n * @returns True if the object passed the validation, otherwise false\n */\nexport default function validate(input: any, def: Definition): input is T {\n let result = false;\n if ((def.isOptional && typeof input === 'undefined') || (def.allowNull && input === null)) {\n result = true;\n } else if (\n (!def.isOptional && typeof input === 'undefined') ||\n (!def.allowNull && input === null)\n ) {\n return false;\n } else {\n switch (def.type) {\n case DefinitionType.String:\n result =\n typeof input === 'string' &&\n (typeof def.value === 'undefined' || input === def.value);\n break;\n\n case DefinitionType.Number:\n result =\n typeof input === 'number' &&\n (typeof def.value === 'undefined' || areSameNumbers(def.value, input)) &&\n (typeof def.minValue === 'undefined' || input >= def.minValue) &&\n (typeof def.maxValue === 'undefined' || input <= def.maxValue);\n break;\n\n case DefinitionType.Boolean:\n result =\n typeof input === 'boolean' &&\n (typeof def.value === 'undefined' || input === def.value);\n break;\n\n case DefinitionType.Array:\n result =\n Array.isArray(input) &&\n (typeof def.minLength === 'undefined' || input.length >= def.minLength) &&\n (typeof def.maxLength === 'undefined' || input.length <= def.maxLength) &&\n input.every(x => validate(x, def.itemDef));\n break;\n\n case DefinitionType.Object:\n result =\n typeof input === 'object' &&\n getObjectKeys(def.propertyDef).every(x =>\n validate(input[x], def.propertyDef[x])\n );\n break;\n\n case DefinitionType.Customize:\n result = def.validator(input);\n break;\n }\n }\n\n return result;\n}\n\nfunction areSameNumbers(n1: number, n2: number) {\n return Math.abs(n1 - n2) < 1e-3;\n}\n","/**\n * @internal\n * Node attribute used to identify if the content is from Google Sheets.\n */\nexport const GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n/**\n * @internal\n * Name of the HTMLMeta Property that provides the Office App Source of the pasted content\n */\nexport const PROG_ID_NAME = 'ProgId';\n/**\n * @internal\n * Name of the HTMLMeta Property that identifies pated content as from Excel Desktop\n */\nexport const EXCEL_DESKTOP_ATTRIBUTE_NAME = 'xmlns:x';\n","import type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst WORD_ONLINE_TABLE_TEMP_ELEMENT_CLASSES = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n];\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer,' +\n WORD_ONLINE_TABLE_TEMP_ELEMENT_CLASSES.map(c => `table div[class^=\"${c}\"]`).join(',');\n\n/**\n * @internal\n * Check whether the fragment provided contain Wac Elements\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst documentContainWacElements: getSourceFunction = (props: getSourceInputParams) => {\n const { fragment } = props;\n return !!fragment.querySelector(WAC_IDENTIFY_SELECTOR);\n};\nexport default documentContainWacElements;\n","import documentContainWacElements from './documentContainWacElements';\nimport isExcelDesktopDocument from './isExcelDesktopDocument';\nimport isExcelOnlineDocument from './isExcelOnlineDocument';\nimport isGoogleSheetDocument from './isGoogleSheetDocument';\nimport isPowerPointDesktopDocument from './isPowerPointDesktopDocument';\nimport isWordDesktopDocument from './isWordDesktopDocument';\nimport shouldConvertToSingleImage from './shouldConvertToSingleImage';\nimport { BeforePasteEvent, ClipboardData, KnownPasteSourceType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport type getSourceInputParams = {\n htmlAttributes: Record;\n fragment: DocumentFragment;\n shouldConvertSingleImage: boolean;\n clipboardData: ClipboardData;\n};\n\n/**\n * @internal\n */\nexport type getSourceFunction = (props: getSourceInputParams) => boolean;\n\nconst getSourceFunctions = new Map([\n [KnownPasteSourceType.WordDesktop, isWordDesktopDocument],\n [KnownPasteSourceType.ExcelDesktop, isExcelDesktopDocument],\n [KnownPasteSourceType.ExcelOnline, isExcelOnlineDocument],\n [KnownPasteSourceType.PowerPointDesktop, isPowerPointDesktopDocument],\n [KnownPasteSourceType.WacComponents, documentContainWacElements],\n [KnownPasteSourceType.GoogleSheets, isGoogleSheetDocument],\n [KnownPasteSourceType.SingleImage, shouldConvertToSingleImage],\n]);\n\n/**\n * This function tries to get the source of the Pasted content\n * @param event the before paste event\n * @param shouldConvertSingleImage Whether convert single image is enabled.\n * @returns The Type of pasted content, if no type found will return {KnownSourceType.Default}\n */\nexport default function getPasteSource(\n event: BeforePasteEvent,\n shouldConvertSingleImage: boolean\n): KnownPasteSourceType {\n const { htmlAttributes, clipboardData, fragment } = event;\n\n let result: KnownPasteSourceType | null = null;\n const param: getSourceInputParams = {\n htmlAttributes,\n fragment,\n shouldConvertSingleImage,\n clipboardData,\n };\n\n getSourceFunctions.forEach((func, key) => {\n if (!result && func(param)) {\n result = key;\n }\n });\n\n return result ?? KnownPasteSourceType.Default;\n}\n","import { EXCEL_DESKTOP_ATTRIBUTE_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst EXCEL_ATTRIBUTE_VALUE = 'urn:schemas-microsoft-com:office:excel';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Excel Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isExcelDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n // The presence of this attribute confirms its origin from Excel Desktop\n return htmlAttributes[EXCEL_DESKTOP_ATTRIBUTE_NAME] == EXCEL_ATTRIBUTE_VALUE;\n};\nexport default isExcelDesktopDocument;\n","import { EXCEL_DESKTOP_ATTRIBUTE_NAME, PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n// Excel Desktop also has this attribute\nconst EXCEL_ONLINE_ATTRIBUTE_VALUE = 'Excel.Sheet';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Excel Online documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isExcelOnlineDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n // The presence of Excel.Sheet confirms its origin from Excel, the absence of EXCEL_DESKTOP_ATTRIBUTE_NAME confirms it is from the Online version\n return (\n htmlAttributes[PROG_ID_NAME] == EXCEL_ONLINE_ATTRIBUTE_VALUE &&\n htmlAttributes[EXCEL_DESKTOP_ATTRIBUTE_NAME] == undefined\n );\n};\nexport default isExcelOnlineDocument;\n","import { GOOGLE_SHEET_NODE_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n/**\n * @internal\n * Checks whether the fragment provided contain elements from Google sheets\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isGoogleSheetDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { fragment } = props;\n return !!fragment.querySelector(GOOGLE_SHEET_NODE_NAME);\n};\n\nexport default isGoogleSheetDocument;\n","import { PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst POWERPOINT_ATTRIBUTE_VALUE = 'PowerPoint.Slide';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Power Point Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isPowerPointDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n return props.htmlAttributes[PROG_ID_NAME] == POWERPOINT_ATTRIBUTE_VALUE;\n};\nexport default isPowerPointDesktopDocument;\n","import { PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst WORD_ATTRIBUTE_NAME = 'xmlns:w';\nconst WORD_ATTRIBUTE_VALUE = 'urn:schemas-microsoft-com:office:word';\nconst WORD_PROG_ID = 'Word.Document';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Word Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isWordDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n return (\n htmlAttributes[WORD_ATTRIBUTE_NAME] == WORD_ATTRIBUTE_VALUE ||\n htmlAttributes[PROG_ID_NAME] == WORD_PROG_ID\n );\n};\n\nexport default isWordDesktopDocument;\n","import type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n/**\n * @internal\n * Checks whether the fragment only contains a single image to paste\n * and the editor have the ConvertSingleImageBody Experimental feature\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst shouldConvertToSingleImage: getSourceFunction = (props: getSourceInputParams) => {\n const { shouldConvertSingleImage, clipboardData } = props;\n return (\n shouldConvertSingleImage &&\n clipboardData.htmlFirstLevelChildTags?.length == 1 &&\n clipboardData.htmlFirstLevelChildTags[0] == 'IMG'\n );\n};\n\nexport default shouldConvertToSingleImage;\n","import collapseNode from '../utils/collapseNodes';\nimport isNodeInRegion from './isNodeInRegion';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { BlockElement, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Collapse nodes within this region to their common ancestor node under this region\n * @param region The region to collapse nodes in.\n * @param nodesOrBlockElements Nodes or block elements to collapse. When take BlockElement[] as input,\n * start node of the first BlockElement and end node of the last BlockElement will be used as the nodes.\n * All nodes not contained by the given region will be ignored.\n */\nexport default function collapseNodesInRegion(\n region: RegionBase,\n nodesOrBlockElements: Node[] | BlockElement[]\n): Node[] {\n if (!nodesOrBlockElements || nodesOrBlockElements.length == 0) {\n return [];\n }\n\n let nodes = safeInstanceOf(nodesOrBlockElements[0], 'Node')\n ? nodesOrBlockElements\n : [\n nodesOrBlockElements[0].getStartNode(),\n (nodesOrBlockElements[nodesOrBlockElements.length - 1]).getEndNode(),\n ];\n\n nodes = nodes && nodes.filter(node => isNodeInRegion(region, node));\n\n const firstNode = nodes[0];\n const lastNode = nodes[nodes.length - 1];\n\n if (isNodeInRegion(region, firstNode) && isNodeInRegion(region, lastNode)) {\n return collapseNode(region.rootNode, firstNode, lastNode, true /*canSplitParent*/);\n } else {\n return [];\n }\n}\n","import contains from '../utils/contains';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\nimport { QueryScope, Region, RegionType } from 'roosterjs-editor-types';\nimport type { CompatibleRegionType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\ninterface RegionTypeData {\n /**\n * Tags that child elements will be skipped\n */\n skipTags: string[];\n\n /**\n * Selector of outer node of a region\n */\n outerSelector: string;\n\n /**\n * Selector of inner node of a region\n */\n innerSelector: string;\n}\n\nconst regionTypeData: Record = {\n [RegionType.Table]: {\n skipTags: ['TABLE'],\n outerSelector: 'table',\n innerSelector: 'td,th',\n },\n};\n\n/**\n * Get regions impacted by the given range under the root node\n * @param root Root node to get regions from\n * @param range A selection range. Regions will be created according to this range. Each region will be\n * fully or partially covered by this range.\n * @param type Type of region. Currently we only support TABLE region.\n */\nexport default function getRegionsFromRange(\n root: HTMLElement,\n range: Range,\n type: RegionType | CompatibleRegionType\n): Region[] {\n let regions: Region[] = [];\n if (root && range) {\n const { innerSelector, skipTags } = regionTypeData[type];\n const boundaryTree = buildBoundaryTree(root, range, type);\n const start = findClosestElementAncestor(range.startContainer, root, innerSelector) || root;\n const end = findClosestElementAncestor(range.endContainer, root, innerSelector) || root;\n const creator = getRegionCreator(range, skipTags);\n [regions] = iterateNodes(creator, boundaryTree, start, end);\n }\n\n return regions.filter(r => !!r);\n}\n\n/**\n * @internal export for test only\n */\nexport function getRegionCreator(\n fullRange: Range,\n skipTags: string[]\n): (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => Region | null {\n const fullSelectionStart = Position.getStart(fullRange).normalize();\n const fullSelectionEnd = Position.getEnd(fullRange).normalize();\n return (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => {\n return areNodesValid(rootNode, nodeBefore, nodeAfter, skipTags)\n ? {\n rootNode,\n nodeBefore,\n nodeAfter,\n skipTags,\n fullSelectionStart,\n fullSelectionEnd,\n }\n : null;\n };\n}\n\n/**\n * This is a internal data structure used for build regions.\n * We firstly split the selection by some boundaries, then we can build region from these boundaries.\n */\ninterface Boundary {\n /**\n * inner node of this boundary\n */\n innerNode: HTMLElement;\n\n /**\n * Children of this boundary\n */\n children: {\n /**\n * Outer node of a boundary child\n */\n outerNode: Node;\n\n /**\n * Child boundaries\n */\n boundaries: Boundary[];\n }[];\n}\n\n/**\n * Step 1: Build boundary tree\n * @param root Root node of the whole scope, normally this will be the root of editable scope\n * @param range Existing selected full range\n * @param type Type of region to create\n */\nfunction buildBoundaryTree(\n root: HTMLElement,\n range: Range,\n type: RegionType | CompatibleRegionType\n): Boundary {\n const allBoundaries: Boundary[] = [{ innerNode: root, children: [] }];\n const { outerSelector, innerSelector } = regionTypeData[type];\n const inSelectionOuterNode = queryElements(\n root,\n outerSelector,\n null /*callback*/,\n QueryScope.InSelection,\n range\n );\n\n // According to https://www.w3.org/TR/selectors-api/#queryselectorall, the result of querySelectorAll\n // is in document order, which is what we expect. So we don't need to sort the result here.\n queryElements(\n root,\n innerSelector,\n thisInnerNode => {\n const thisOuterNode = findClosestElementAncestor(thisInnerNode, root, outerSelector);\n if (thisOuterNode && inSelectionOuterNode.indexOf(thisOuterNode) < 0) {\n const boundary: Boundary = { innerNode: thisInnerNode, children: [] };\n\n for (let i = allBoundaries.length - 1; i >= 0; i--) {\n const { innerNode, children } = allBoundaries[i];\n if (contains(innerNode, thisOuterNode)) {\n let child = children.filter(c => c.outerNode == thisOuterNode)[0];\n\n if (!child) {\n child = { outerNode: thisOuterNode, boundaries: [] };\n children.push(child);\n }\n\n child.boundaries.push(boundary);\n break;\n }\n }\n allBoundaries.push(boundary);\n }\n },\n QueryScope.OnSelection,\n range\n );\n\n return allBoundaries[0];\n}\n\n/**\n * Step 2: Recursively iterate all boundaries and create regions\n * @param creator A region creator function to help create region\n * @param boundary Current root boundary\n * @param start A node where full range start from. This may not be the direct node container of range.startContainer.\n * It is the nearest ancestor which satisfies the InnerSelector of the given region type\n * @param end A node where full range end from. This may not be the direct node container of range.endContainer.\n * It is the nearest ancestor which satisfies the InnerSelector of the given region type\n * @param started Whether we have already hit the start node\n */\nfunction iterateNodes(\n creator: (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => Region | null,\n boundary: Boundary,\n start: Node,\n end: Node,\n started?: boolean\n): [Region[], boolean, boolean] {\n started = started || boundary.innerNode == start;\n let ended = false;\n const { children, innerNode } = boundary;\n let regions: Region[] = [];\n\n if (children.length == 0) {\n const region = creator(innerNode);\n if (region) {\n regions.push(region);\n }\n } else {\n // Need to run one more time to add region after all children\n for (let i = 0; i <= children.length && !ended; i++) {\n const { outerNode, boundaries } = children[i] || {};\n const previousOuterNode = children[i - 1]?.outerNode;\n if (started) {\n const region = creator(innerNode, previousOuterNode, outerNode);\n if (region) {\n regions.push(region);\n }\n }\n\n boundaries?.forEach(child => {\n let newRegions: Region[];\n [newRegions, started, ended] = iterateNodes(creator, child, start, end, started);\n regions = regions.concat(newRegions);\n });\n }\n }\n\n return [regions, started, ended || innerNode == end];\n}\n\n/**\n * Check if the given nodes combination is valid to create a region.\n * A combination is valid when:\n * 1. Root node is not null and is not empty. And\n * 2. For nodeBefore and nodeAfter, each of them should be either null or contained by root node. And\n * 3. If none of nodeBefore and nodeAfter is null, the should not contain each other, and there should be\n * node between them.\n * @param root Root node of region\n * @param nodeBefore The boundary node before the region under root\n * @param nodeAfter The boundary node after the region under root\n * @param skipTags Tags to skip\n */\nfunction areNodesValid(\n root: Node,\n nodeBefore: Node | undefined,\n nodeAfter: Node | undefined,\n skipTags: string[]\n) {\n if (!root) {\n return false;\n } else {\n const firstNodeOfRegion = nodeBefore && getNextLeafSibling(root, nodeBefore, skipTags);\n const lastNodeOfRegion = nodeAfter && getPreviousLeafSibling(root, nodeAfter, skipTags);\n const firstNodeValid =\n !nodeBefore || (contains(root, nodeBefore) && contains(root, firstNodeOfRegion));\n const lastNodeValid =\n !nodeAfter || (contains(root, nodeAfter) && contains(root, lastNodeOfRegion));\n const bothValid =\n !nodeBefore ||\n !nodeAfter ||\n (!contains(nodeBefore, nodeAfter, true /*treatSameAsContain*/) &&\n !contains(nodeBefore, lastNodeOfRegion, true /*treatSameAsContain*/) &&\n !contains(nodeAfter, nodeBefore, true /*treatSameAsContain*/) &&\n !contains(nodeAfter, firstNodeOfRegion, true /*treatSameAsContain*/));\n return firstNodeValid && lastNodeValid && bothValid;\n }\n}\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\nimport createElement from '../utils/createElement';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getSelectionRangeInRegion from './getSelectionRangeInRegion';\nimport shouldSkipNode from '../utils/shouldSkipNode';\nimport { BlockElement, KnownCreateElementDataIndex, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Get all block elements covered by the selection under this region\n * @param regionBase The region to get block elements from\n * @param createBlockIfEmpty When set to true, a new empty block element will be created if there is not\n * any blocks in the region. Default value is false\n * @param deprecated Deprecated parameter, not used\n */\nexport default function getSelectedBlockElementsInRegion(\n regionBase: RegionBase,\n createBlockIfEmpty?: boolean,\n deprecated?: boolean\n): BlockElement[] {\n const range = getSelectionRangeInRegion(regionBase);\n let blocks: BlockElement[] = [];\n\n if (range) {\n const { rootNode, skipTags } = regionBase;\n const traverser = ContentTraverser.createSelectionTraverser(rootNode, range, skipTags);\n\n for (\n let block = traverser?.currentBlockElement;\n !!block;\n block = traverser.getNextBlockElement()\n ) {\n blocks.push(block);\n }\n\n // Remove meaningless nodes\n blocks = blocks.filter(block => {\n const startNode = block.getStartNode();\n const endNode = block.getEndNode();\n\n if (startNode == endNode && shouldSkipNode(startNode, true /*ignoreSpace*/)) {\n startNode.parentNode?.removeChild(startNode);\n return false;\n } else {\n return true;\n }\n });\n }\n\n if (blocks.length == 0 && regionBase && !regionBase.rootNode.firstChild && createBlockIfEmpty) {\n const newNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n regionBase.rootNode.ownerDocument\n );\n regionBase.rootNode.appendChild(newNode!);\n\n const block = getBlockElementAtNode(regionBase.rootNode, newNode);\n\n if (block) {\n blocks.push(block);\n }\n }\n\n return blocks;\n}\n","import createRange from '../selection/createRange';\nimport Position from '../selection/Position';\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\nimport { Region, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Get the selection range in the given region.\n * The original range can cover multiple regions, this function will narrow the original selection\n * of a region into current region\n * @param regionBase The region to get range from\n */\nexport default function getSelectionRangeInRegion(regionBase: RegionBase): Range | null {\n if (!regionBase) {\n return null;\n }\n\n const { nodeBefore, nodeAfter, rootNode, skipTags } = regionBase;\n const startNode = nodeBefore\n ? getNextLeafSibling(regionBase.rootNode, nodeBefore, regionBase.skipTags)\n : rootNode.firstChild;\n const endNode = nodeAfter\n ? getPreviousLeafSibling(rootNode, nodeAfter, skipTags)\n : rootNode.lastChild;\n const regionRange = startNode && endNode && createRange(startNode, endNode);\n\n if (!isRegion(regionBase)) {\n return regionRange;\n } else if (regionRange) {\n const regionStart = Position.getStart(regionRange).normalize();\n const regionEnd = Position.getEnd(regionRange).normalize();\n const { fullSelectionEnd, fullSelectionStart } = regionBase;\n\n if (!fullSelectionStart.isAfter(regionEnd) && !regionStart.isAfter(fullSelectionEnd)) {\n const start = fullSelectionStart.isAfter(regionStart)\n ? fullSelectionStart\n : regionStart;\n const end = fullSelectionEnd.isAfter(regionEnd) ? regionEnd : fullSelectionEnd;\n\n return createRange(start, end);\n }\n }\n\n return null;\n}\n\nfunction isRegion(regionBase: RegionBase): regionBase is Region {\n const region = regionBase as Region;\n return !!region.fullSelectionEnd && !!region.fullSelectionStart;\n}\n","import contains from '../utils/contains';\nimport { DocumentPosition, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Check if a given node is contained by the given region\n * @param region The region to check from\n * @param node The node or block element to check\n */\nexport default function isNodeInRegion(region: RegionBase, node: Node): boolean {\n return !!(\n region &&\n contains(region.rootNode, node) &&\n (!region.nodeBefore ||\n region.nodeBefore.compareDocumentPosition(node) == DocumentPosition.Following) &&\n (!region.nodeAfter ||\n region.nodeAfter.compareDocumentPosition(node) == DocumentPosition.Preceding)\n );\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport contains from '../utils/contains';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getPredefinedCssForElement from '../htmlSanitizer/getPredefinedCssForElement';\nimport getStyles from '../style/getStyles';\nimport isNodeInRegion from './isNodeInRegion';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setStyles from '../style/setStyles';\nimport { BlockElement, RegionBase } from 'roosterjs-editor-types';\nimport { collapse } from '../utils/collapseNodes';\n\n/**\n * Merge a BlockElement of given node after another node\n * @param region Region to operate in\n * @param refNode The node to merge after\n * @param targetNode The node of target block element\n */\nexport default function mergeBlocksInRegion(region: RegionBase, refNode: Node, targetNode: Node) {\n let block: BlockElement | null;\n\n if (\n !isNodeInRegion(region, refNode) ||\n !isNodeInRegion(region, targetNode) ||\n !(block = getBlockElementAtNode(region.rootNode, targetNode)) ||\n block.contains(refNode)\n ) {\n return;\n }\n\n const blockRoot = block.collapseToSingleElement();\n const commonContainer = collapse(\n region.rootNode,\n blockRoot,\n refNode,\n false /*isStart*/,\n true /*canSplitParent*/\n );\n\n // Copy styles of parent nodes into blockRoot\n for (let node: Node | null = blockRoot; contains(commonContainer, node); ) {\n const parent: Node | null = node!.parentNode;\n if (safeInstanceOf(parent, 'HTMLElement')) {\n const styles = {\n ...(getPredefinedCssForElement(parent) || {}),\n ...getStyles(parent),\n ...getStyles(blockRoot),\n };\n setStyles(blockRoot, styles);\n }\n node = parent;\n }\n\n let nodeToRemove: Node | null = null;\n let nodeToMerge =\n blockRoot.childNodes.length == 1 && blockRoot.attributes.length == 0\n ? blockRoot.firstChild!\n : changeElementTag(blockRoot, 'SPAN')!;\n\n // Remove empty node\n for (\n let node: Node | null = nodeToMerge;\n contains(commonContainer, node) && node.parentNode?.childNodes.length == 1;\n node = node!.parentNode\n ) {\n // If the only child is the one which is about to be removed, this node should also be removed\n nodeToRemove = node.parentNode;\n }\n\n // Finally, merge blocks, and remove empty nodes\n refNode.parentNode?.insertBefore(nodeToMerge, refNode.nextSibling);\n nodeToRemove?.parentNode?.removeChild(nodeToRemove);\n}\n","import findClosestElementAncestor from '../utils/findClosestElementAncestor';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\r\nimport type { CompatiblePositionType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Represent a position in DOM tree by the node and its offset index\r\n */\r\nexport default class Position implements NodePosition {\r\n readonly node: Node;\r\n readonly element: HTMLElement;\r\n readonly offset: number;\r\n readonly isAtEnd: boolean;\r\n\r\n /**\r\n * Clone and validate a position from existing position.\r\n * If the given position has invalid offset, this function will return a corrected value.\r\n * @param position The original position to clone from\r\n */\r\n constructor(position: NodePosition);\r\n\r\n /**\r\n * Create a Position from node and an offset number\r\n * @param node The node of this position\r\n * @param offset Offset of this position\r\n * @param isFromEndOfRange Whether this position is created from end of a range. An position\r\n * created from end of range has different behavior when normalize, it will use the child node\r\n * before current position if any as a deeper level node and set isAtEnd to true.\r\n */\r\n constructor(node: Node, offset: number, isFromEndOfRange?: boolean);\r\n\r\n /**\r\n * Create a Position from node and a type of position\r\n * @param node The node of this position\r\n * @param positionType Type of the position, can be Begin, End, Before, After\r\n */\r\n constructor(node: Node, positionType: PositionType | CompatiblePositionType);\r\n\r\n constructor(\r\n nodeOrPosition: Node | NodePosition,\r\n offsetOrPosType: number = 0,\r\n private readonly isFromEndOfRange?: boolean\r\n ) {\r\n if ((nodeOrPosition).node) {\r\n this.node = (nodeOrPosition).node;\r\n offsetOrPosType = (nodeOrPosition).offset;\r\n } else {\r\n this.node = nodeOrPosition;\r\n }\r\n\r\n switch (offsetOrPosType) {\r\n case PositionType.Before:\r\n this.offset = getIndexOfNode(this.node);\r\n this.node = this.node.parentNode!; // TODO: how to handle parentNode is null?\r\n this.isAtEnd = false;\r\n break;\r\n\r\n case PositionType.After:\r\n this.offset = getIndexOfNode(this.node) + 1;\r\n this.isAtEnd = !this.node.nextSibling;\r\n this.node = this.node.parentNode!; // TODO: how to handle parentNode is null?\r\n break;\r\n\r\n case PositionType.End:\r\n this.offset = getEndOffset(this.node);\r\n this.isAtEnd = true;\r\n break;\r\n\r\n default:\r\n let endOffset = getEndOffset(this.node);\r\n this.offset = Math.max(0, Math.min(offsetOrPosType, endOffset));\r\n this.isAtEnd = offsetOrPosType > 0 && offsetOrPosType >= endOffset;\r\n break;\r\n }\r\n\r\n this.element = findClosestElementAncestor(this.node)!; // TODO: how to handle parent element is null?\r\n }\r\n\r\n /**\r\n * Normalize this position to the leaf node, return the normalize result.\r\n * If current position is already using leaf node, return this position object itself\r\n */\r\n normalize(): NodePosition {\r\n if (this.node.nodeType == NodeType.Text || !this.node.firstChild) {\r\n return this;\r\n }\r\n\r\n let node = this.node;\r\n let newOffset: number | PositionType.Begin | PositionType.End = this.isAtEnd\r\n ? PositionType.End\r\n : this.offset;\r\n while (node.nodeType == NodeType.Element || node.nodeType == NodeType.DocumentFragment) {\r\n const nextNode = this.isFromEndOfRange\r\n ? newOffset == PositionType.End\r\n ? node.lastChild\r\n : node.childNodes[newOffset - 1]\r\n : newOffset == PositionType.Begin\r\n ? node.firstChild\r\n : newOffset == PositionType.End\r\n ? node.lastChild\r\n : node.childNodes[newOffset];\r\n\r\n if (nextNode) {\r\n node = nextNode;\r\n newOffset =\r\n this.isAtEnd || this.isFromEndOfRange ? PositionType.End : PositionType.Begin;\r\n } else {\r\n break;\r\n }\r\n }\r\n return new Position(node, newOffset, this.isFromEndOfRange);\r\n }\r\n\r\n /**\r\n * Check if this position is equal to the given position\r\n * @param position The position to check\r\n */\r\n equalTo(position: NodePosition): boolean {\r\n return (\r\n position &&\r\n (this == position ||\r\n (this.node == position.node &&\r\n this.offset == position.offset &&\r\n this.isAtEnd == position.isAtEnd))\r\n );\r\n }\r\n\r\n /**\r\n * Checks if this position is after the given position\r\n */\r\n isAfter(position: NodePosition): boolean {\r\n return this.node == position.node\r\n ? (this.isAtEnd && !position.isAtEnd) || this.offset > position.offset\r\n : isNodeAfter(this.node, position.node);\r\n }\r\n\r\n /**\r\n * Move this position with offset, returns a new position with a valid offset in the same node\r\n * @param offset Offset to move with\r\n */\r\n move(offset: number) {\r\n return new Position(this.node, Math.max(this.offset + offset, 0));\r\n }\r\n\r\n /**\r\n * Get start position of the given Range\r\n * @param range The range to get position from\r\n */\r\n static getStart(range: Range) {\r\n return new Position(range.startContainer, range.startOffset);\r\n }\r\n\r\n /**\r\n * Get end position of the given Range\r\n * @param range The range to get position from\r\n */\r\n static getEnd(range: Range) {\r\n // For collapsed range, always return the same value of start container to make sure\r\n // end position is not before start position\r\n return range.collapsed\r\n ? Position.getStart(range)\r\n : new Position(range.endContainer, range.endOffset, true /*isFromEndOfRange*/);\r\n }\r\n}\r\n\r\nfunction getIndexOfNode(node: Node | null): number {\r\n let i = 0;\r\n while ((node = node?.previousSibling || null)) {\r\n i++;\r\n }\r\n return i;\r\n}\r\n\r\nfunction getEndOffset(node: Node): number {\r\n if (node.nodeType == NodeType.Text) {\r\n return node.nodeValue?.length || 0;\r\n } else if (node.nodeType == NodeType.Element || node.nodeType == NodeType.DocumentFragment) {\r\n return node.childNodes.length;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n","import { Browser } from '../utils/Browser';\n\n/**\n * Add the given range into selection of the given document\n * @param range The range to select\n * @param skipSameRange When set to true, do nothing if the given range is the same with current selection,\n * otherwise it will always remove current selection range and set to the given one.\n * This parameter is always treat as true in Edge to avoid some weird runtime exception.\n */\nexport default function addRangeToSelection(range: Range, skipSameRange?: boolean) {\n const selection = range?.commonAncestorContainer?.ownerDocument?.defaultView?.getSelection();\n if (selection) {\n let needAddRange = true;\n\n if (selection.rangeCount > 0) {\n // Workaround IE exception 800a025e\n try {\n let currentRange: Range | null = null;\n // Do not remove/add range if current selection is the same with target range\n // Without this check, execCommand() may fail in Edge since we changed the selection\n if (\n (skipSameRange || Browser.isEdge) &&\n (currentRange = selection.rangeCount == 1 ? selection.getRangeAt(0) : null) &&\n currentRange.startContainer == range.startContainer &&\n currentRange.startOffset == range.startOffset &&\n currentRange.endContainer == range.endContainer &&\n currentRange.endOffset == range.endOffset\n ) {\n needAddRange = false;\n } else {\n selection.removeAllRanges();\n }\n } catch (e) {}\n }\n\n if (needAddRange) {\n selection.addRange(range);\n }\n }\n}\n","import isVoidHtmlElement from '../utils/isVoidHtmlElement';\r\nimport Position from './Position';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Create a range around the given node(s)\r\n * @param startNode The start node to create range from\r\n * @param endNode The end node to create range from. If specified, the range will start before startNode and\r\n * end after endNode, otherwise, the range will start before and end after the start node\r\n * @returns A range start before the given node and end after the given node\r\n */\r\nexport default function createRange(startNode: Node, endNode?: Node): Range;\r\n\r\n/**\r\n * Create a collapsed range at the given node and offset\r\n * @param node The container node of the range\r\n * @param offset The offset of the range, can be a number or value of PositionType\r\n * @returns A range at the given node and offset\r\n */\r\nexport default function createRange(node: Node, offset: number | PositionType): Range;\r\n\r\n/**\r\n * Create a range with the given start/end container node and offset\r\n * @param startNode The start container node of the range\r\n * @param startOffset The start offset of the range\r\n * @param endNode The end container node of the range\r\n * @param endOffset The end offset of the range\r\n * @returns A range at the given start/end container node and offset\r\n */\r\nexport default function createRange(\r\n startNode: Node,\r\n startOffset: number | PositionType,\r\n endNode: Node,\r\n endOffset: number | PositionType\r\n): Range;\r\n\r\n/**\r\n * Create a range under the given rootNode with start and end selection paths\r\n * @param rootNode The root node that the selection paths start from\r\n * @param startPath The selection path of the start position of the range\r\n * @param endPath The selection path of the end position of the range\r\n * @returns A range with the given start and end selection paths\r\n */\r\nexport default function createRange(rootNode: Node, startPath: number[], endPath?: number[]): Range;\r\n\r\n/**\r\n * Create a range with the start and end position\r\n * @param startPosition The start position of the range\r\n * @param endPosition The end position of the range, if not specified, the range will be collapsed at start position\r\n * @returns A range start at startPosition, end at endPosition, or startPosition when endPosition is not specified\r\n */\r\nexport default function createRange(startPosition: NodePosition, endPosition?: NodePosition): Range;\r\n\r\nexport default function createRange(\r\n arg1: Node | NodePosition,\r\n arg2?: number | number[] | Node | NodePosition,\r\n arg3?: Node | number[],\r\n arg4?: number\r\n): Range | null {\r\n let start: NodePosition | null = null;\r\n let end: NodePosition | null = null;\r\n\r\n if (isNodePosition(arg1)) {\r\n // function createRange(startPosition: NodePosition, endPosition?: NodePosition): Range;\r\n start = arg1;\r\n end = isNodePosition(arg2) ? arg2 : null;\r\n } else if (safeInstanceOf(arg1, 'Node')) {\r\n if (Array.isArray(arg2)) {\r\n // function createRange(rootNode: Node, startPath: number[], endPath?: number[]): Range;\r\n start = getPositionFromPath(arg1, arg2);\r\n end = Array.isArray(arg3) ? getPositionFromPath(arg1, arg3) : null;\r\n } else if (typeof arg2 == 'number') {\r\n // function createRange(node: Node, offset: number | PositionType): Range;\r\n // function createRange(startNode: Node, startOffset: number | PositionType, endNode: Node, endOffset: number | PositionType): Range;\r\n start = new Position(arg1, arg2);\r\n end = safeInstanceOf(arg3, 'Node') ? new Position(arg3, arg4!) : null;\r\n } else if (safeInstanceOf(arg2, 'Node') || !arg2) {\r\n // function createRange(startNode: Node, endNode?: Node): Range;\r\n start = new Position(arg1, PositionType.Before);\r\n end = new Position(arg2 || arg1, PositionType.After);\r\n }\r\n }\r\n\r\n if (start?.node?.ownerDocument) {\r\n let range = start.node.ownerDocument.createRange();\r\n start = getFocusablePosition(start);\r\n end = getFocusablePosition(end || start);\r\n range.setStart(start.node, start.offset);\r\n range.setEnd(end.node, end.offset);\r\n\r\n return range;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Convert to focusable position\r\n * If current node is a void element, we need to move up one level to put cursor outside void element\r\n */\r\nfunction getFocusablePosition(position: NodePosition) {\r\n return position.node.nodeType == NodeType.Element && isVoidHtmlElement(position.node)\r\n ? new Position(position.node, position.isAtEnd ? PositionType.After : PositionType.Before)\r\n : position;\r\n}\r\n\r\nfunction isNodePosition(arg: any): arg is NodePosition {\r\n return arg && arg.node;\r\n}\r\n\r\nfunction getPositionFromPath(node: Node, path: number[]): NodePosition | null {\r\n if (!node || !path) {\r\n return null;\r\n }\r\n\r\n // Iterate with a for loop to avoid mutating the passed in element path stack\r\n // or needing to copy it.\r\n let offset: number = 0;\r\n\r\n for (let i = 0; i < path.length; i++) {\r\n offset = path[i];\r\n if (\r\n i < path.length - 1 &&\r\n node &&\r\n node.nodeType == NodeType.Element &&\r\n node.childNodes.length > offset\r\n ) {\r\n node = node.childNodes[offset];\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return new Position(node, offset);\r\n}\r\n","import getInnerHTML from '../utils/getInnerHTML';\nimport getSelectionPath from './getSelectionPath';\n\n/**\n * Get inner Html of a root node with a selection path which can be used for restore selection.\n * The result string can be used by setHtmlWithSelectionPath() to restore the HTML and selection.\n * @param rootNode Root node to get inner Html from\n * @param range The range of selection. If pass null, no selection path will be added\n * @returns Inner HTML of the root node, followed by HTML comment contains selection path if the given range is valid\n */\nexport default function getHtmlWithSelectionPath(\n rootNode: HTMLElement | DocumentFragment,\n range: Range | null\n): string {\n if (!rootNode) {\n return '';\n }\n\n const content = getInnerHTML(rootNode);\n const selectionPath = range && getSelectionPath(rootNode, range);\n\n return selectionPath ? `${content}` : content;\n}\n","import createElement from '../utils/createElement';\r\nimport createRange from './createRange';\r\nimport normalizeRect from '../utils/normalizeRect';\r\nimport { NodePosition, NodeType, Rect } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get bounding rect of this position\r\n * @param position The position to get rect from\r\n */\r\nexport default function getPositionRect(position: NodePosition): Rect | null {\r\n if (!position) {\r\n return null;\r\n }\r\n\r\n let range = createRange(position);\r\n\r\n // 1) try to get rect using range.getBoundingClientRect()\r\n let rect: Rect | null =\r\n range.getBoundingClientRect && normalizeRect(range.getBoundingClientRect());\r\n\r\n if (rect) {\r\n return rect;\r\n }\r\n\r\n // 2) try to get rect using range.getClientRects\r\n position = position.normalize();\r\n const rects = range.getClientRects && range.getClientRects();\r\n rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;\r\n if (rect) {\r\n return rect;\r\n }\r\n\r\n // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others\r\n if (position.node.nodeType == NodeType.Text && position.node.ownerDocument) {\r\n const span = createElement(\r\n { tag: 'span', children: ['\\u200b'] },\r\n position.node.ownerDocument\r\n );\r\n range = createRange(position);\r\n range.insertNode(span!);\r\n rect = span!.getBoundingClientRect && normalizeRect(span!.getBoundingClientRect());\r\n span!.parentNode?.removeChild(span!);\r\n if (rect) {\r\n return rect;\r\n }\r\n }\r\n\r\n // 4) try getBoundingClientRect on element\r\n let element = position.element;\r\n if (element && element.getBoundingClientRect) {\r\n rect = normalizeRect(element.getBoundingClientRect());\r\n if (rect) {\r\n return rect;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import contains from '../utils/contains';\r\nimport Position from './Position';\r\nimport { NodePosition, NodeType, SelectionPath } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get path of the given selection range related to the given rootNode\r\n * @param rootNode The root node where the path start from\r\n * @param range The range of selection\r\n */\r\nexport default function getSelectionPath(\r\n rootNode: Node,\r\n range: Range | null\r\n): SelectionPath | null {\r\n if (!range) {\r\n return null;\r\n }\r\n\r\n let selectionPath: SelectionPath = {\r\n start: getPositionPath(Position.getStart(range), rootNode),\r\n end: getPositionPath(Position.getEnd(range), rootNode),\r\n };\r\n\r\n return selectionPath;\r\n}\r\n\r\n/**\r\n * Get the path of the node relative to rootNode.\r\n * The path of the node is an array of integer indices into the childNodes of the given node.\r\n *\r\n * The node path will be what the node path will be on a _normalized_ dom\r\n * (e.g. empty text nodes will be ignored and adjacent text nodes will be concatenated)\r\n *\r\n * @param rootNode the node the path will be relative to\r\n * @param position the position to get indexes from. Follows the same semantics\r\n * as selectionRange (if node is of type Text, it is an offset into the text of that node.\r\n * If node is of type Element, it is the index of a child in that Element node.)\r\n */\r\nfunction getPositionPath(position: NodePosition, rootNode: Node): number[] {\r\n if (!position || !rootNode) {\r\n return [];\r\n }\r\n\r\n let node: Node | null = position.node;\r\n let offset = position.offset;\r\n let result: number[] = [];\r\n let parent: Node | null;\r\n\r\n if (!contains(rootNode, node, true)) {\r\n return [];\r\n }\r\n\r\n if (node.nodeType == NodeType.Text) {\r\n parent = node.parentNode;\r\n while (node.previousSibling && node.previousSibling.nodeType == NodeType.Text) {\r\n offset += node.previousSibling.nodeValue?.length || 0;\r\n node = node.previousSibling;\r\n }\r\n result.unshift(offset);\r\n } else {\r\n parent = node;\r\n node = node.childNodes[offset];\r\n }\r\n\r\n do {\r\n offset = 0;\r\n let isPreviousText = false;\r\n\r\n for (let c: Node | null = parent?.firstChild || null; c && c != node; c = c.nextSibling) {\r\n if (c.nodeType == NodeType.Text) {\r\n if (c.nodeValue?.length === 0 || isPreviousText) {\r\n continue;\r\n }\r\n\r\n isPreviousText = true;\r\n } else {\r\n isPreviousText = false;\r\n }\r\n\r\n offset++;\r\n }\r\n\r\n result.unshift(offset);\r\n node = parent;\r\n parent = parent?.parentNode || null;\r\n } while (node && node != rootNode);\r\n\r\n return result;\r\n}\r\n","import contains from '../utils/contains';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isNodeEmpty from '../utils/isNodeEmpty';\r\nimport { NodePosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Check if this position is at beginning of the given node.\r\n * This will return true if all nodes between the beginning of target node and the position are empty.\r\n * @param position The position to check\r\n * @param targetNode The node to check\r\n * @returns True if position is at beginning of the node, otherwise false\r\n */\r\nexport default function isPositionAtBeginningOf(position: NodePosition, targetNode: Node | null) {\r\n if (position) {\r\n position = position.normalize();\r\n let node: Node | null = position.node;\r\n const offset = position.offset;\r\n if (offset == 0) {\r\n while (node && contains(targetNode, node) && areAllPreviousNodesEmpty(node)) {\r\n node = node?.parentNode || null;\r\n }\r\n\r\n return node == targetNode;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction areAllPreviousNodesEmpty(node: Node): boolean {\r\n while (node.previousSibling) {\r\n node = node.previousSibling;\r\n if (getTagOfNode(node) == 'BR' || !isNodeEmpty(node)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","import createRange from './createRange';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport validate from '../metadata/validate';\r\nimport {\r\n createArrayDefinition,\r\n createBooleanDefinition,\r\n createNumberDefinition,\r\n createObjectDefinition,\r\n createStringDefinition,\r\n} from '../metadata/definitionCreators';\r\nimport {\r\n ContentMetadata,\r\n SelectionRangeTypes,\r\n TrustedHTMLHandler,\r\n ImageContentMetadata,\r\n NormalContentMetadata,\r\n TableContentMetadata,\r\n Coordinates,\r\n} from 'roosterjs-editor-types';\r\nconst NumberArrayDefinition = createArrayDefinition(createNumberDefinition());\r\n\r\nconst CoordinatesDefinition = createObjectDefinition({\r\n x: createNumberDefinition(),\r\n y: createNumberDefinition(),\r\n});\r\n\r\nconst IsDarkModeDefinition = createBooleanDefinition(true /*isOptional*/);\r\n\r\nconst NormalContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(true /*isOptional*/, SelectionRangeTypes.Normal),\r\n isDarkMode: IsDarkModeDefinition,\r\n start: NumberArrayDefinition,\r\n end: NumberArrayDefinition,\r\n});\r\n\r\nconst TableContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(false /*isOptional*/, SelectionRangeTypes.TableSelection),\r\n isDarkMode: IsDarkModeDefinition,\r\n tableId: createStringDefinition(),\r\n firstCell: CoordinatesDefinition,\r\n lastCell: CoordinatesDefinition,\r\n});\r\n\r\nconst ImageContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(false /*isOptional*/, SelectionRangeTypes.ImageSelection),\r\n isDarkMode: IsDarkModeDefinition,\r\n imageId: createStringDefinition(),\r\n});\r\n\r\n/**\r\n * @deprecated Use setHtmlWithMetadata instead\r\n * Restore inner HTML of a root element from given html string. If the string contains selection path,\r\n * remove the selection path and return a range represented by the path\r\n * @param root The root element\r\n * @param html The HTML to restore\r\n * @param trustedHTMLHandler An optional trusted HTML handler to convert HTML string to security string\r\n * @returns A selection range if the html contains a valid selection path, otherwise null\r\n */\r\nexport default function setHtmlWithSelectionPath(\r\n rootNode: HTMLElement,\r\n html: string,\r\n trustedHTMLHandler?: TrustedHTMLHandler\r\n): Range | null {\r\n const metadata = setHtmlWithMetadata(rootNode, html, trustedHTMLHandler);\r\n return metadata?.type == SelectionRangeTypes.Normal\r\n ? createRange(rootNode, metadata.start, metadata.end)\r\n : null;\r\n}\r\n\r\n/**\r\n * Restore inner HTML of a root element from given html string. If the string contains metadata,\r\n * remove it from DOM tree and return the metadata\r\n * @param root The root element\r\n * @param html The HTML to restore\r\n * @param trustedHTMLHandler An optional trusted HTML handler to convert HTML string to security string\r\n * @returns Content metadata if any, or undefined\r\n */\r\nexport function setHtmlWithMetadata(\r\n rootNode: HTMLElement,\r\n html: string,\r\n trustedHTMLHandler?: TrustedHTMLHandler\r\n): ContentMetadata | undefined {\r\n if (!rootNode) {\r\n return undefined;\r\n }\r\n\r\n html = html || '';\r\n rootNode.innerHTML = trustedHTMLHandler?.(html) || html;\r\n\r\n return extractContentMetadata(rootNode);\r\n}\r\n\r\n/**\r\n * Extract content metadata from DOM tree\r\n * @param rootNode Root of the DOM tree\r\n * @returns If there is a valid content metadata node in the give DOM tree, return this metadata object, otherwise undefined\r\n */\r\nexport function extractContentMetadata(rootNode: HTMLElement): ContentMetadata | undefined {\r\n const potentialMetadataComment = rootNode.lastChild;\r\n\r\n if (safeInstanceOf(potentialMetadataComment, 'Comment')) {\r\n try {\r\n const obj = JSON.parse(potentialMetadataComment.nodeValue || '');\r\n\r\n if (\r\n validate(obj, NormalContentMetadataDefinition) ||\r\n validate(obj, TableContentMetadataDefinition) ||\r\n validate(obj, ImageContentMetadataDefinition)\r\n ) {\r\n rootNode.removeChild(potentialMetadataComment);\r\n obj.type = typeof obj.type === 'undefined' ? SelectionRangeTypes.Normal : obj.type;\r\n obj.isDarkMode = obj.isDarkMode || false;\r\n\r\n return obj;\r\n }\r\n } catch {}\r\n }\r\n\r\n return undefined;\r\n}\r\n","import clearProceedingSnapshots from './clearProceedingSnapshots';\r\nimport { Snapshot, Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param html The snapshot HTML to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n */\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n html: string,\r\n isAutoCompleteSnapshot: boolean\r\n): void;\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param snapshot The generic snapshot object to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n * @param getLength A callback function to calculate length of the snapshot\r\n * @param isSame A callback function to check if the given snapshots are the same\r\n */\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n snapshot: T,\r\n isAutoCompleteSnapshot: boolean,\r\n getLength: (snapshot: T) => number,\r\n isSame: (snapshot1: T, snapshot2: T) => boolean\r\n): void;\r\n\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n snapshot: T,\r\n isAutoCompleteSnapshot: boolean,\r\n getLength?: (snapshot: T) => number,\r\n compare?: (snapshot1: T, snapshot2: T) => boolean\r\n) {\r\n getLength = getLength || (str => ((str))?.length || 0);\r\n compare = compare || defaultCompare;\r\n\r\n const currentSnapshot = snapshots.snapshots[snapshots.currentIndex];\r\n const isSameSnapshot = currentSnapshot && compare(currentSnapshot, snapshot);\r\n\r\n if (snapshots.currentIndex < 0 || !currentSnapshot || !isSameSnapshot) {\r\n clearProceedingSnapshots(snapshots, getLength);\r\n snapshots.snapshots.push(snapshot);\r\n snapshots.currentIndex++;\r\n snapshots.totalSize += getLength(snapshot);\r\n\r\n let removeCount = 0;\r\n while (\r\n removeCount < snapshots.snapshots.length &&\r\n snapshots.totalSize > snapshots.maxSize\r\n ) {\r\n snapshots.totalSize -= getLength(snapshots.snapshots[removeCount]);\r\n removeCount++;\r\n }\r\n\r\n if (removeCount > 0) {\r\n snapshots.snapshots.splice(0, removeCount);\r\n snapshots.currentIndex -= removeCount;\r\n snapshots.autoCompleteIndex -= removeCount;\r\n }\r\n\r\n if (isAutoCompleteSnapshot) {\r\n snapshots.autoCompleteIndex = snapshots.currentIndex;\r\n }\r\n } else if (isSameSnapshot) {\r\n // replace the currentSnapshot's metadata so the selection is updated\r\n snapshots.snapshots.splice(snapshots.currentIndex, 1, snapshot);\r\n }\r\n}\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param snapshot The snapshot object to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n */\r\nexport function addSnapshotV2(\r\n snapshots: Snapshots,\r\n snapshot: Snapshot,\r\n isAutoCompleteSnapshot: boolean\r\n) {\r\n addSnapshot(\r\n snapshots,\r\n snapshot,\r\n isAutoCompleteSnapshot,\r\n s => s.html?.length || 0,\r\n compareSnapshots\r\n );\r\n}\r\n\r\nfunction compareSnapshots(s1: Snapshot, s2: Snapshot) {\r\n return s1.html == s2.html && !s1.entityStates && !s2.entityStates;\r\n}\r\n\r\nfunction defaultCompare(s1: T, s2: T) {\r\n return s1 == s2;\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Check whether can move current snapshot with the given step\r\n * @param snapshots The snapshots data structure to check\r\n * @param step The step to check, can be positive, negative or 0\r\n * @returns True if can move current snapshot with the given step, otherwise false\r\n */\r\nexport default function canMoveCurrentSnapshot(\r\n snapshots: Snapshots,\r\n step: number\r\n): boolean {\r\n let newIndex = snapshots.currentIndex + step;\r\n return newIndex >= 0 && newIndex < snapshots.snapshots.length;\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\n\n/**\n * Whether there is a snapshot added before auto complete and it can be undone now\n */\nexport default function canUndoAutoComplete(snapshots: Snapshots): boolean {\n return (\n snapshots.autoCompleteIndex >= 0 &&\n snapshots.currentIndex - snapshots.autoCompleteIndex == 1\n );\n}\n","import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';\r\nimport { Snapshot, Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(snapshots: Snapshots): void;\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(\r\n snapshots: Snapshots,\r\n getLength: (snapshot: T) => number\r\n): void;\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(\r\n snapshots: Snapshots,\r\n getLength?: (snapshot: T) => number\r\n) {\r\n getLength = getLength || (str => ((str))?.length || 0);\r\n if (canMoveCurrentSnapshot(snapshots, 1)) {\r\n let removedSize = 0;\r\n for (let i = snapshots.currentIndex + 1; i < snapshots.snapshots.length; i++) {\r\n removedSize += getLength(snapshots.snapshots[i]);\r\n }\r\n snapshots.snapshots.splice(snapshots.currentIndex + 1);\r\n snapshots.totalSize -= removedSize;\r\n snapshots.autoCompleteIndex = -1;\r\n }\r\n}\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport function clearProceedingSnapshotsV2(snapshots: Snapshots) {\r\n clearProceedingSnapshots(snapshots, s => s.html?.length || 0);\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Create initial snapshots\r\n * @param maxSize max size of all snapshots\r\n */\r\nexport default function createSnapshots(maxSize: number): Snapshots {\r\n return {\r\n snapshots: [],\r\n totalSize: 0,\r\n currentIndex: -1,\r\n autoCompleteIndex: -1,\r\n maxSize,\r\n };\r\n}\r\n","import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';\nimport { Snapshots } from 'roosterjs-editor-types';\n\n/**\n * Move current snapshot with the given step if can move this step. Otherwise no action and return null\n * @param snapshots The snapshots data structure to move\n * @param step The step to move\n * @returns If can move with the given step, returns the snapshot after move, otherwise null\n */\nexport default function moveCurrentSnapshot(\n snapshots: Snapshots,\n step: number\n): T | null {\n if (canMoveCurrentSnapshot(snapshots, step)) {\n snapshots.currentIndex += step;\n snapshots.autoCompleteIndex = -1;\n return snapshots.snapshots[snapshots.currentIndex];\n } else {\n return null;\n }\n}\n\n/**\n * @deprecated\n * For backward compatibility only\n */\nexport const moveCurrentSnapsnot = moveCurrentSnapshot;\n","/**\n * Get CSS styles of a given element in name-value pair format\n * @param element The element to get styles from\n */\nexport default function getStyles(element: HTMLElement): Record {\n const result: Record = {};\n const style = element?.getAttribute('style') || '';\n style.split(';').forEach(pair => {\n const valueIndex = pair.indexOf(':');\n const name = pair.slice(0, valueIndex);\n const value = pair.slice(valueIndex + 1);\n if (name && value) {\n result[name.trim()] = value.trim();\n }\n });\n return result;\n}\n","/**\n * Remove a css rule style from a style sheet\n * @param doc The document object\n * @param styleId the ID of the style tag\n */\n\nexport default function removeGlobalCssStyle(doc: Document, styleId: string) {\n const styleTag = doc.getElementById(styleId) as HTMLStyleElement;\n if (styleTag) {\n styleTag.parentNode?.removeChild(styleTag);\n }\n}\n","import getStyles from './getStyles';\nimport setStyles from './setStyles';\n\n/**\n * Removes the css important rule from some css properties\n * @param element The HTMLElement\n * @param styleProperties The css properties that important must be removed. Ex: ['background-color', 'background']\n */\n\nexport default function removeImportantStyleRule(element: HTMLElement, styleProperties: string[]) {\n const styles = getStyles(element);\n let modifiedStyles = 0;\n styleProperties.forEach(style => {\n if (styles[style]?.indexOf('!important') > -1) {\n const index = styles[style].indexOf('!');\n styles[style] = styles[style].substring(0, index);\n modifiedStyles++;\n }\n });\n if (modifiedStyles > 0) {\n setStyles(element, styles);\n }\n}\n","/**\n * Add global css styles\n * @param doc The document object\n * @param cssRule The css rule that must added to the selection\n * @param styleId The id of the style tag\n */\n\nexport default function setGlobalCssStyles(doc: Document, cssRule: string, styleId: string) {\n if (cssRule) {\n let styleTag = doc.getElementById(styleId) as HTMLStyleElement;\n if (!styleTag) {\n styleTag = doc.createElement('style');\n styleTag.id = styleId;\n doc.head.appendChild(styleTag);\n }\n styleTag.sheet?.insertRule(cssRule);\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\n/**\n * Set styles to an HTML element. If styles are empty, remove 'style' attribute\n * @param element The element to set styles\n * @param styles The styles to set, in name-value pair format\n */\nexport default function setStyles(element: HTMLElement, styles: Record) {\n if (element) {\n const style = getObjectKeys(styles || {})\n .map(name => {\n const value: string | null = styles[name];\n const trimmedName = name ? name.trim() : null;\n const trimmedValue = value ? value.trim() : null;\n return trimmedName && trimmedValue ? `${trimmedName}:${trimmedValue}` : null;\n })\n .filter(x => x)\n .join(';');\n if (style) {\n element.setAttribute('style', style);\n } else {\n element.removeAttribute('style');\n }\n }\n}\n","import applyTableFormat from './applyTableFormat';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport moveChildNodes from '../utils/moveChildNodes';\r\nimport normalizeRect from '../utils/normalizeRect';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport toArray from '../jsUtils/toArray';\r\nimport { getTableCellMetadata, saveTableCellMetadata } from './tableCellInfo';\r\nimport { getTableFormatInfo, saveTableInfo } from './tableFormatInfo';\r\nimport { removeMetadata } from '../metadata/metadata';\r\nimport {\r\n SizeTransformer,\r\n TableBorderFormat,\r\n TableFormat,\r\n TableOperation,\r\n TableSelection,\r\n VCell,\r\n DarkColorHandler,\r\n} from 'roosterjs-editor-types';\r\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\nconst DEFAULT_FORMAT: Required = {\r\n topBorderColor: '#ABABAB',\r\n bottomBorderColor: '#ABABAB',\r\n verticalBorderColor: '#ABABAB',\r\n hasHeaderRow: false,\r\n hasFirstColumn: false,\r\n hasBandedRows: false,\r\n hasBandedColumns: false,\r\n bgColorEven: null,\r\n bgColorOdd: '#ABABAB20',\r\n headerRowColor: '#ABABAB',\r\n tableBorderFormat: TableBorderFormat.DEFAULT,\r\n keepCellShade: false,\r\n verticalAlign: null,\r\n};\r\n\r\n/**\r\n * A virtual table class, represent an HTML table, by expand all merged cells to each separated cells\r\n */\r\nexport default class VTable {\r\n /**\r\n * The HTML table object\r\n */\r\n table: HTMLTableElement;\r\n\r\n /**\r\n * Virtual cells\r\n */\r\n cells: VCell[][] | null = null;\r\n\r\n /**\r\n * Current row index\r\n */\r\n row: number | undefined;\r\n\r\n /**\r\n * Current column index\r\n */\r\n col: number | undefined;\r\n\r\n /**\r\n * Current format of the table\r\n */\r\n formatInfo: Required | null = null;\r\n\r\n private trs: HTMLTableRowElement[] = [];\r\n\r\n private tableSelection: TableSelection | null = null;\r\n\r\n /**\r\n * Create a new instance of VTable object using HTML TABLE or TD node\r\n * @param node The HTML Table or TD node\r\n * @param normalizeSize Whether table size needs to be normalized\r\n * @param zoomScale When the table is under a zoomed container, pass in the zoom scale here\r\n */\r\n constructor(\r\n node: HTMLTableElement | HTMLTableCellElement,\r\n normalizeSize?: boolean,\r\n zoomScale?: number | SizeTransformer\r\n ) {\r\n this.table = safeInstanceOf(node, 'HTMLTableElement') ? node : getTableFromTd(node);\r\n if (this.table) {\r\n let currentTd = safeInstanceOf(node, 'HTMLTableElement') ? null : node;\r\n let trs = toArray(this.table.rows);\r\n this.cells = trs.map(row => []);\r\n trs.forEach((tr, rowIndex) => {\r\n this.trs[rowIndex % 2] = tr;\r\n for (let sourceCol = 0, targetCol = 0; sourceCol < tr.cells.length; sourceCol++) {\r\n // Skip the cells which already initialized\r\n for (; this.cells![rowIndex][targetCol]; targetCol++) {}\r\n let td = tr.cells[sourceCol];\r\n\r\n if (td == currentTd) {\r\n this.col = targetCol;\r\n this.row = rowIndex;\r\n }\r\n\r\n for (let colSpan = 0; colSpan < td.colSpan; colSpan++, targetCol++) {\r\n for (let rowSpan = 0; rowSpan < td.rowSpan; rowSpan++) {\r\n const hasTd: boolean = colSpan + rowSpan == 0;\r\n const rect = td.getBoundingClientRect();\r\n if (this.cells?.[rowIndex + rowSpan]) {\r\n this.cells[rowIndex + rowSpan][targetCol] = {\r\n td: hasTd ? td : null,\r\n spanLeft: colSpan > 0,\r\n spanAbove: rowSpan > 0,\r\n width: hasTd ? rect.width : undefined,\r\n height: hasTd ? rect.height : undefined,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n for (let col = 0; col < this.cells![rowIndex].length; col++) {\r\n if (!this.cells![rowIndex][col]) {\r\n this.cells![rowIndex][col] = {\r\n td: null,\r\n spanLeft: false,\r\n spanAbove: false,\r\n width: undefined,\r\n height: undefined,\r\n };\r\n }\r\n }\r\n });\r\n this.formatInfo = getTableFormatInfo(this.table);\r\n if (normalizeSize) {\r\n this.normalizeSize(typeof zoomScale == 'number' ? n => n / zoomScale : zoomScale);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Selected range of cells with the coordinates of the first and last cell selected.\r\n */\r\n public get selection(): TableSelection | null {\r\n return this.tableSelection || null;\r\n }\r\n\r\n public set selection(value: TableSelection | null) {\r\n if (value) {\r\n const { firstCell } = value;\r\n this.row = firstCell?.y;\r\n this.col = firstCell?.x;\r\n }\r\n this.tableSelection = value;\r\n }\r\n\r\n /**\r\n * Write the virtual table back to DOM tree to represent the change of VTable\r\n * @param skipApplyFormat Do not reapply table format when write back. Only use this parameter when you are pretty sure there is no format or table structure change during the process.\r\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\r\n */\r\n writeBack(skipApplyFormat?: boolean, darkColorHandler?: DarkColorHandler | null) {\r\n if (this.cells) {\r\n moveChildNodes(this.table);\r\n this.cells.forEach((row, r) => {\r\n let tr = cloneNode(this.trs[r % 2] || this.trs[0]);\r\n\r\n if (tr) {\r\n this.table.appendChild(tr);\r\n row.forEach((cell, c) => {\r\n if (cell.td) {\r\n this.recalculateSpans(r, c);\r\n this.recalculateCellHeight(cell.td);\r\n tr!.appendChild(cell.td);\r\n }\r\n });\r\n }\r\n });\r\n if (this.formatInfo && !skipApplyFormat) {\r\n saveTableInfo(this.table, this.formatInfo);\r\n applyTableFormat(this.table, this.cells, this.formatInfo, darkColorHandler);\r\n }\r\n } else if (this.table) {\r\n this.table.parentNode?.removeChild(this.table);\r\n }\r\n }\r\n\r\n private recalculateCellHeight(td: HTMLTableCellElement) {\r\n if (this.isEmptyCell(td) && td.rowSpan > 1) {\r\n for (let i = 1; i < td.rowSpan; i++) {\r\n const br = document.createElement('br');\r\n td.appendChild(br);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply the given table format to this virtual table\r\n * @param format Table format to apply\r\n */\r\n applyFormat(format: Partial) {\r\n if (!this.table) {\r\n return;\r\n }\r\n this.formatInfo = {\r\n ...DEFAULT_FORMAT,\r\n ...(this.formatInfo || {}),\r\n ...(format || {}),\r\n };\r\n if (!this.formatInfo.keepCellShade) {\r\n this.deleteCellShadeDataset(this.cells);\r\n }\r\n }\r\n\r\n /**\r\n * Remove the cellShade dataset to apply a new style format at the cell.\r\n * @param cells\r\n */\r\n private deleteCellShadeDataset(cells: VCell[][] | null) {\r\n cells?.forEach(row => {\r\n row.forEach(cell => {\r\n if (cell.td) {\r\n removeMetadata(cell.td, 'bgColorOverride');\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Edit table with given operation.\r\n * @param operation Table operation\r\n */\r\n edit(operation: TableOperation | CompatibleTableOperation) {\r\n if (!this.table || !this.cells || this.row === undefined || this.col == undefined) {\r\n return;\r\n }\r\n\r\n let currentRow = this.cells[this.row];\r\n let currentCell = currentRow[this.col];\r\n const firstRow = this.selection ? this.selection.firstCell.y : this.row;\r\n const lastRow = this.selection ? this.selection.lastCell.y : this.row;\r\n const firstColumn = this.selection ? this.selection.firstCell.x : this.col;\r\n const lastColumn = this.selection ? this.selection.lastCell.x : this.col;\r\n switch (operation) {\r\n case TableOperation.InsertAbove:\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n this.cells.splice(firstRow, 0, currentRow.map(cloneCell));\r\n }\r\n break;\r\n case TableOperation.InsertBelow:\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n let newRow = lastRow + this.countSpanAbove(lastRow, this.col);\r\n this.cells.splice(\r\n newRow,\r\n 0,\r\n this.cells[newRow - 1].map((cell, colIndex) => {\r\n let nextCell = this.getCell(newRow, colIndex);\r\n\r\n if (nextCell.spanAbove) {\r\n return cloneCell(nextCell);\r\n } else if (cell.spanLeft) {\r\n let newCell = cloneCell(cell);\r\n newCell.spanAbove = false;\r\n return newCell;\r\n } else {\r\n return {\r\n td: cloneNode(this.getTd(this.row!, colIndex)),\r\n };\r\n }\r\n })\r\n );\r\n }\r\n\r\n break;\r\n\r\n case TableOperation.InsertLeft:\r\n for (let i = firstColumn; i <= lastColumn; i++) {\r\n this.forEachCellOfCurrentColumn((cell, row) => {\r\n row.splice(i, 0, cloneCell(cell));\r\n });\r\n }\r\n\r\n break;\r\n case TableOperation.InsertRight:\r\n for (let i = firstColumn; i <= lastColumn; i++) {\r\n let newCol = lastColumn + this.countSpanLeft(this.row, lastColumn);\r\n this.forEachCellOfColumn(newCol - 1, (cell, row, i) => {\r\n let nextCell = this.getCell(i, newCol);\r\n let newCell: VCell;\r\n if (nextCell.spanLeft) {\r\n newCell = cloneCell(nextCell);\r\n } else if (cell.spanAbove) {\r\n newCell = cloneCell(cell);\r\n newCell.spanLeft = false;\r\n } else {\r\n newCell = {\r\n td: cloneNode(this.getTd(i, this.col!)),\r\n };\r\n }\r\n\r\n row.splice(newCol, 0, newCell);\r\n });\r\n }\r\n\r\n break;\r\n\r\n case TableOperation.DeleteRow:\r\n for (let rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\r\n this.forEachCellOfRow(rowIndex, (cell: VCell, i: number) => {\r\n let nextCell = this.getCell(rowIndex + 1, i);\r\n if (cell.td && cell.td.rowSpan > 1 && nextCell.spanAbove) {\r\n nextCell.td = cell.td;\r\n }\r\n });\r\n }\r\n const removedRows = this.selection\r\n ? this.selection.lastCell.y - this.selection.firstCell.y\r\n : 0;\r\n this.cells.splice(firstRow, removedRows + 1);\r\n if (this.cells.length === 0) {\r\n this.cells = null;\r\n }\r\n\r\n break;\r\n case TableOperation.DeleteColumn:\r\n let deletedColumns = 0;\r\n for (let colIndex = firstColumn; colIndex <= lastColumn; colIndex++) {\r\n this.forEachCellOfColumn(colIndex, (cell, row, i) => {\r\n let nextCell = this.getCell(i, colIndex + 1);\r\n if (cell.td && cell.td.colSpan > 1 && nextCell.spanLeft) {\r\n nextCell.td = cell.td;\r\n }\r\n const removedColumns = this.selection\r\n ? colIndex - deletedColumns\r\n : this.col!;\r\n row.splice(removedColumns, 1);\r\n });\r\n deletedColumns++;\r\n }\r\n if (this.cells?.length === 0 || this.cells?.every(row => row.length === 0)) {\r\n this.cells = null;\r\n }\r\n break;\r\n\r\n case TableOperation.MergeAbove:\r\n case TableOperation.MergeBelow:\r\n let rowStep = operation == TableOperation.MergeAbove ? -1 : 1;\r\n for (\r\n let rowIndex = this.row + rowStep;\r\n rowIndex >= 0 && rowIndex < this.cells.length;\r\n rowIndex += rowStep\r\n ) {\r\n let cell = this.getCell(rowIndex, this.col);\r\n if (cell.td && !cell.spanAbove) {\r\n let aboveCell = rowIndex < this.row ? cell : currentCell;\r\n let belowCell = rowIndex < this.row ? currentCell : cell;\r\n this.mergeCells(aboveCell, belowCell);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case TableOperation.MergeLeft:\r\n case TableOperation.MergeRight:\r\n let colStep = operation == TableOperation.MergeLeft ? -1 : 1;\r\n for (\r\n let colIndex = this.col + colStep;\r\n colIndex >= 0 && colIndex < this.cells[this.row].length;\r\n colIndex += colStep\r\n ) {\r\n let cell = this.getCell(this.row, colIndex);\r\n if (cell.td && !cell.spanLeft) {\r\n let leftCell = colIndex < this.col ? cell : currentCell;\r\n let rightCell = colIndex < this.col ? currentCell : cell;\r\n this.mergeCells(leftCell, rightCell, true /** horizontally */);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case TableOperation.MergeCells:\r\n for (let colIndex = firstColumn; colIndex <= lastColumn; colIndex++) {\r\n for (let rowIndex = firstRow + 1; rowIndex <= lastRow; rowIndex++) {\r\n let cell = this.getCell(firstRow, colIndex);\r\n let nextCellBelow = this.getCell(rowIndex, colIndex);\r\n this.mergeCells(cell, nextCellBelow);\r\n }\r\n }\r\n for (let colIndex = firstColumn + 1; colIndex <= lastColumn; colIndex++) {\r\n let cell = this.getCell(firstRow, firstColumn);\r\n let nextCellRight = this.getCell(firstRow, colIndex);\r\n this.mergeCells(cell, nextCellRight, true /** horizontally */);\r\n }\r\n\r\n break;\r\n case TableOperation.DeleteTable:\r\n this.cells = null;\r\n break;\r\n\r\n case TableOperation.SplitVertically:\r\n if (currentCell.td && currentCell.td.rowSpan > 1) {\r\n this.getCell(this.row + 1, this.col).td = cloneNode(currentCell.td);\r\n } else {\r\n let splitRow = currentRow.map(cell => {\r\n return {\r\n td: cell == currentCell ? cloneNode(cell.td) : null,\r\n spanAbove: cell != currentCell,\r\n spanLeft: cell.spanLeft,\r\n };\r\n });\r\n this.cells.splice(this.row + 1, 0, splitRow);\r\n }\r\n break;\r\n\r\n case TableOperation.SplitHorizontally:\r\n if (currentCell.td && currentCell.td.colSpan > 1) {\r\n this.getCell(this.row, this.col + 1).td = cloneNode(currentCell.td);\r\n } else {\r\n this.forEachCellOfCurrentColumn((cell, row) => {\r\n row.splice(this.col! + 1, 0, {\r\n td: row == currentRow ? cloneNode(cell.td) : null,\r\n spanAbove: cell.spanAbove,\r\n spanLeft: row != currentRow,\r\n });\r\n });\r\n }\r\n break;\r\n case TableOperation.AlignCenter:\r\n this.table.style.marginLeft = 'auto';\r\n this.table.style.marginRight = 'auto';\r\n break;\r\n case TableOperation.AlignLeft:\r\n this.table.style.marginLeft = '';\r\n this.table.style.marginRight = 'auto';\r\n break;\r\n case TableOperation.AlignRight:\r\n this.table.style.marginLeft = 'auto';\r\n this.table.style.marginRight = '';\r\n break;\r\n case TableOperation.AlignCellCenter:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'center'\r\n );\r\n break;\r\n case TableOperation.AlignCellLeft:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'left'\r\n );\r\n break;\r\n case TableOperation.AlignCellRight:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'right'\r\n );\r\n break;\r\n case TableOperation.AlignCellTop:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'top',\r\n true /** isVertical */\r\n );\r\n break;\r\n case TableOperation.AlignCellMiddle:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'middle',\r\n true /** isVertical */\r\n );\r\n break;\r\n case TableOperation.AlignCellBottom:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'bottom',\r\n true /** isVertical */\r\n );\r\n break;\r\n }\r\n }\r\n\r\n setAlignmentToSelectedCells(\r\n firstRow: number,\r\n lastRow: number,\r\n firstColumn: number,\r\n lastColumn: number,\r\n alignmentType: string,\r\n isVertical?: boolean\r\n ) {\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n for (let j = firstColumn; j <= lastColumn; j++) {\r\n if (this.cells) {\r\n const cell = this.cells[i][j].td;\r\n if (isVertical && cell) {\r\n cell.style?.setProperty('vertical-align', alignmentType);\r\n const meta = getTableCellMetadata(cell);\r\n saveTableCellMetadata(cell, { ...meta, vAlignOverride: true });\r\n } else if (cell) {\r\n cell.style?.setProperty('text-align', alignmentType);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private mergeCells(cell: VCell, nextCell: VCell, horizontally?: boolean) {\r\n const checkSpans = horizontally\r\n ? cell.td?.rowSpan === nextCell.td?.rowSpan && !cell.spanLeft\r\n : cell.td?.colSpan === nextCell.td?.colSpan && !cell.spanAbove;\r\n if (cell.td && nextCell.td && checkSpans) {\r\n this.mergeCellContents(cell.td, nextCell.td);\r\n nextCell.td = null;\r\n if (horizontally) {\r\n nextCell.spanLeft = true;\r\n } else {\r\n nextCell.spanAbove = true;\r\n }\r\n }\r\n }\r\n\r\n private isEmptyCell(td: HTMLTableCellElement) {\r\n return td.childElementCount === 1 && getTagOfNode(td.firstChild) === 'BR';\r\n }\r\n\r\n private mergeCellContents(cellTd: HTMLTableCellElement, nextCellTd: HTMLTableCellElement) {\r\n if (this.isEmptyCell(nextCellTd)) {\r\n moveChildNodes(cellTd, nextCellTd, false /*keepExistingChildren*/);\r\n } else {\r\n const br = document.createElement('br');\r\n cellTd.appendChild(br);\r\n moveChildNodes(cellTd, nextCellTd, true /*keepExistingChildren*/);\r\n }\r\n }\r\n\r\n /**\r\n * Loop each cell of current column and invoke a callback function\r\n * @param callback The callback function to invoke\r\n */\r\n forEachCellOfCurrentColumn(callback: (cell: VCell, row: VCell[], i: number) => any) {\r\n this.forEachCellOfColumn(this.col, callback);\r\n }\r\n\r\n /**\r\n * Loop each table cell and get all the cells that share the same border from one side\r\n * The result is an array of table cell elements\r\n * @param borderPos The position of the border\r\n * @param getLeftCells Get left-hand-side or right-hand-side cells of the border\r\n *\r\n * Example, consider having a 3 by 4 table as below with merged and split cells\r\n *\r\n * | 1 | 4 | 7 | 8 |\r\n * | 5 | 9 |\r\n * | 3 | 10 |\r\n *\r\n * input => borderPos: the 3rd border, getLeftCells: true\r\n * output => [4, 5, 3]\r\n *\r\n * input => borderPos: the 3rd border, getLeftCells: false\r\n * output => [7, 9, 10]\r\n *\r\n * input => borderPos: the 2nd border, getLeftCells: true\r\n * output => [1]\r\n *\r\n * input => borderPos: the 2nd border, getLeftCells: false\r\n * output => [4]\r\n */\r\n getCellsWithBorder(borderPos: number, getLeftCells: boolean): HTMLTableCellElement[] {\r\n const cells: HTMLTableCellElement[] = [];\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n for (let j = 0; j < this.cells[i].length; j++) {\r\n const cell = this.getCell(i, j);\r\n if (cell.td) {\r\n const cellRect = normalizeRect(cell.td.getBoundingClientRect());\r\n\r\n if (cellRect) {\r\n let found: boolean = false;\r\n if (getLeftCells) {\r\n if (cellRect.right == borderPos) {\r\n found = true;\r\n cells.push(cell.td);\r\n } else if (found) {\r\n break;\r\n }\r\n } else {\r\n if (cellRect.left == borderPos) {\r\n found = true;\r\n cells.push(cell.td);\r\n } else if (found) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return cells;\r\n }\r\n\r\n /**\r\n * Loop each cell of current row and invoke a callback function\r\n * @param callback The callback function to invoke\r\n */\r\n forEachCellOfCurrentRow(callback: (cell: VCell, i: number) => any) {\r\n this.forEachCellOfRow(this.row, callback);\r\n }\r\n\r\n /**\r\n * Get a table cell using its row and column index. This function will always return an object\r\n * even if the given indexes don't exist in table.\r\n * @param row The row index\r\n * @param col The column index\r\n */\r\n getCell(row: number, col: number): VCell {\r\n return (this.cells && this.cells[row] && this.cells[row][col]) || {};\r\n }\r\n\r\n /**\r\n * Get current HTML table cell object. If the current table cell is a virtual expanded cell, return its root cell\r\n */\r\n getCurrentTd(): HTMLTableCellElement | null {\r\n return this.getTd(this.row, this.col);\r\n }\r\n\r\n /**\r\n * Get the Table Cell in a provided coordinate\r\n * @param row row of the cell\r\n * @param col column of the cell\r\n */\r\n getTd(row: number | undefined, col: number | undefined) {\r\n if (this.cells && row !== undefined && col !== undefined) {\r\n row = Math.min(this.cells.length - 1, row);\r\n col = this.cells[row] ? Math.min(this.cells[row].length - 1, col) : col;\r\n if (!isNaN(row) && !isNaN(col)) {\r\n while (row >= 0 && col >= 0) {\r\n let cell = this.getCell(row, col);\r\n if (cell.td) {\r\n return cell.td;\r\n } else if (cell.spanLeft) {\r\n col--;\r\n } else if (cell.spanAbove) {\r\n row--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private forEachCellOfColumn(\r\n col: number | undefined,\r\n callback: (cell: VCell, row: VCell[], i: number) => any\r\n ) {\r\n if (col !== undefined) {\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n callback(this.getCell(i, col), this.cells[i], i);\r\n }\r\n }\r\n }\r\n\r\n private forEachCellOfRow(row: number | undefined, callback: (cell: VCell, i: number) => any) {\r\n if (row !== undefined) {\r\n for (let i = 0; this.cells && i < this.cells[row].length; i++) {\r\n callback(this.getCell(row, i), i);\r\n }\r\n }\r\n }\r\n\r\n private recalculateSpans(row: number, col: number) {\r\n let td = this.getCell(row, col).td;\r\n if (td) {\r\n td.colSpan = this.countSpanLeft(row, col);\r\n td.rowSpan = this.countSpanAbove(row, col);\r\n if (td.colSpan == 1) {\r\n td.removeAttribute('colSpan');\r\n }\r\n if (td.rowSpan == 1) {\r\n td.removeAttribute('rowSpan');\r\n }\r\n }\r\n }\r\n\r\n private countSpanLeft(row: number, col: number) {\r\n let result = 1;\r\n for (let i = col + 1; this.cells && i < this.cells[row].length; i++) {\r\n let cell = this.getCell(row, i);\r\n if (cell.td || !cell.spanLeft) {\r\n break;\r\n }\r\n result++;\r\n }\r\n return result;\r\n }\r\n\r\n private countSpanAbove(row: number, col: number) {\r\n let result = 1;\r\n for (let i = row + 1; this.cells && i < this.cells.length; i++) {\r\n let cell = this.getCell(i, col);\r\n if (cell.td || !cell.spanAbove) {\r\n break;\r\n }\r\n result++;\r\n }\r\n return result;\r\n }\r\n\r\n private normalizeEmptyTableCells() {\r\n for (let i = 0, row; (row = this.table.rows[i]); i++) {\r\n for (let j = 0, cell; (cell = row.cells[j]); j++) {\r\n if (cell) {\r\n if (!cell.innerHTML || !cell.innerHTML.trim()) {\r\n cell.appendChild(document.createElement('br'));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* normalize width/height for each cell in the table */\r\n public normalizeTableCellSize(zoomScale?: number | SizeTransformer) {\r\n // remove width/height for each row\r\n for (let i = 0, row; (row = this.table.rows[i]); i++) {\r\n row.removeAttribute('width');\r\n row.style.setProperty('width', null);\r\n row.removeAttribute('height');\r\n row.style.setProperty('height', null);\r\n }\r\n\r\n // set width/height for each cell\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n for (let j = 0; j < this.cells[i].length; j++) {\r\n const cell = this.cells[i][j];\r\n if (cell) {\r\n const func =\r\n typeof zoomScale == 'number' ? (n: number) => n / zoomScale : zoomScale;\r\n const width = cell.width || 0;\r\n const height = cell.height || 0;\r\n\r\n setHTMLElementSizeInPx(\r\n cell.td,\r\n func?.(width) || width,\r\n func?.(height) || height\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private normalizeSize(sizeTransformer: SizeTransformer | undefined) {\r\n this.normalizeEmptyTableCells();\r\n this.normalizeTableCellSize(sizeTransformer);\r\n\r\n const rect = this.table.getBoundingClientRect();\r\n\r\n // Make sure table width/height is fixed to avoid shifting effect\r\n setHTMLElementSizeInPx(\r\n this.table,\r\n sizeTransformer?.(rect.width) || rect.width,\r\n sizeTransformer?.(rect.height) || rect.height\r\n );\r\n }\r\n}\r\n\r\nfunction setHTMLElementSizeInPx(\r\n element: HTMLElement | null | undefined,\r\n newWidth: number,\r\n newHeight: number\r\n) {\r\n if (!!element) {\r\n element.removeAttribute('width');\r\n element.removeAttribute('height');\r\n element.style.boxSizing = 'border-box';\r\n element.style.width = `${newWidth}px`;\r\n element.style.height = `${newHeight}px`;\r\n }\r\n}\r\n\r\nfunction getTableFromTd(td: HTMLTableCellElement) {\r\n let result: Element | null = td;\r\n for (; result && result.tagName != 'TABLE'; result = result.parentElement) {}\r\n return result;\r\n}\r\n\r\n/**\r\n * Clone a table cell\r\n * @param cell The cell to clone\r\n */\r\nfunction cloneCell(cell: VCell): VCell {\r\n return {\r\n td: cloneNode(cell.td),\r\n spanAbove: cell.spanAbove,\r\n spanLeft: cell.spanLeft,\r\n };\r\n}\r\n\r\n/**\r\n * Clone a node without its children.\r\n * @param node The node to clone\r\n */\r\nfunction cloneNode(node: T | null | undefined): T | null {\r\n let newNode = node ? node.cloneNode(false /*deep*/) : null;\r\n if (safeInstanceOf(newNode, 'HTMLTableCellElement')) {\r\n newNode.removeAttribute('id');\r\n if (!newNode.firstChild) {\r\n newNode.appendChild(node!.ownerDocument!.createElement('br'));\r\n }\r\n }\r\n return newNode;\r\n}\r\n","import changeElementTag from '../utils/changeElementTag';\nimport setColor from '../utils/setColor';\nimport { DarkColorHandler, TableBorderFormat, TableFormat, VCell } from 'roosterjs-editor-types';\nimport { getTableCellMetadata } from './tableCellInfo';\nconst TRANSPARENT = 'transparent';\nconst TABLE_CELL_TAG_NAME = 'TD';\nconst TABLE_HEADER_TAG_NAME = 'TH';\n\n/**\n * @internal\n * Apply the given table format to this virtual table\n * @param format Table format to apply\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n */\nexport default function applyTableFormat(\n table: HTMLTableElement,\n cells: VCell[][],\n format: Required,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!format) {\n return;\n }\n table.style.borderCollapse = 'collapse';\n setBordersType(cells, format);\n setCellFormat(cells, format, darkColorHandler);\n setFirstColumnFormat(cells, format);\n setHeaderRowFormat(cells, format, darkColorHandler);\n}\n\n/**\n * Check if the cell has shade\n * @param cell\n * @returns\n */\nfunction hasCellShade(cell: VCell) {\n if (!cell.td) {\n return false;\n }\n\n return !!getTableCellMetadata(cell.td)?.bgColorOverride;\n}\n\n/**\n * Check if the cell has vertical align\n * @param cell\n * @returns\n */\nfunction hasValign(cell: VCell) {\n if (!cell.td) {\n return false;\n }\n\n return !!getTableCellMetadata(cell.td)?.vAlignOverride;\n}\n\n/**\n * Set color and vertical align to the table\n * @param format the format that must be applied\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n */\nfunction setCellFormat(\n cells: VCell[][],\n format: TableFormat,\n darkColorHandler?: DarkColorHandler | null\n) {\n const color = (index: number) => (index % 2 === 0 ? format.bgColorEven : format.bgColorOdd);\n const { hasBandedRows, hasBandedColumns, bgColorOdd, bgColorEven } = format;\n const shouldColorWholeTable = !hasBandedRows && bgColorOdd === bgColorEven ? true : false;\n cells.forEach((row, index) => {\n row.forEach(cell => {\n if (cell.td) {\n // Set cell color\n if (!hasCellShade(cell)) {\n if (hasBandedRows) {\n const backgroundColor = color(index);\n setColor(\n cell.td,\n backgroundColor || TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n } else if (shouldColorWholeTable) {\n setColor(\n cell.td,\n format.bgColorOdd || TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n } else {\n setColor(\n cell.td,\n TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n }\n // Set cell vertical align\n if (format.verticalAlign && !hasValign(cell)) {\n cell.td.style.verticalAlign = format.verticalAlign;\n }\n }\n });\n });\n if (hasBandedColumns) {\n cells.forEach(row => {\n row.forEach((cell, index) => {\n const backgroundColor = color(index);\n if (cell.td && backgroundColor && !hasCellShade(cell)) {\n setColor(\n cell.td,\n backgroundColor,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n });\n });\n }\n}\n\n/**\n * Set color to borders of an table\n * @param format\n * @returns\n */\nfunction setBorderColors(td: HTMLTableCellElement, format: Partial) {\n td.style.borderTop = getBorderStyle(format.topBorderColor);\n td.style.borderLeft = getBorderStyle(format.verticalBorderColor);\n td.style.borderRight = getBorderStyle(format.verticalBorderColor);\n td.style.borderBottom = getBorderStyle(format.bottomBorderColor);\n}\n\n/**\n * Format the border type\n * @returns\n */\nfunction formatBorders(\n format: TableFormat,\n td: HTMLTableCellElement,\n isFirstRow: boolean,\n isLastRow: boolean,\n isFirstColumn: boolean,\n isLastColumn: boolean\n) {\n setBorderColors(td, format);\n switch (format.tableBorderFormat) {\n case TableBorderFormat.DEFAULT:\n return;\n case TableBorderFormat.LIST_WITH_SIDE_BORDERS:\n if (!isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (!isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.FIRST_COLUMN_HEADER_EXTERNAL:\n if (!isFirstRow) {\n td.style.borderTopColor = TRANSPARENT;\n }\n\n if (!isLastRow && !isFirstRow) {\n td.style.borderBottomColor = TRANSPARENT;\n }\n if (!isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (!isLastColumn && !isFirstColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstColumn && isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.NO_HEADER_BORDERS:\n if (isFirstRow) {\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n break;\n case TableBorderFormat.NO_SIDE_BORDERS:\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n break;\n case TableBorderFormat.ESPECIAL_TYPE_1:\n if (isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderLeftColor = format.verticalBorderColor || TRANSPARENT;\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n td.style.borderTopColor = format.topBorderColor || TRANSPARENT;\n }\n break;\n case TableBorderFormat.ESPECIAL_TYPE_2:\n if (isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderLeftColor = format.verticalBorderColor || TRANSPARENT;\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n td.style.borderTopColor = format.topBorderColor || TRANSPARENT;\n }\n if (!isFirstRow && !isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.ESPECIAL_TYPE_3:\n if (isFirstRow) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n }\n if (!isFirstRow && !isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n }\n break;\n }\n}\n\n/**\n * Organize the borders of table according to a border type\n * @param format\n * @returns\n */\nfunction setBordersType(cells: VCell[][], format: TableFormat) {\n cells.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (cell.td) {\n formatBorders(\n format,\n cell.td,\n rowIndex === 0,\n rowIndex === cells.length - 1,\n cellIndex === 0,\n cellIndex === row.length - 1\n );\n }\n });\n });\n}\n\n/**\n * Apply custom design to the first table column\n * @param format\n * @returns\n */\nfunction setFirstColumnFormat(cells: VCell[][], format: Partial) {\n if (!format.hasFirstColumn) {\n cells.forEach(row => {\n row.forEach((cell, cellIndex) => {\n if (cell.td && cellIndex === 0) {\n cell.td = changeElementTag(\n cell.td,\n TABLE_CELL_TAG_NAME\n ) as HTMLTableCellElement;\n cell.td.scope = '';\n }\n });\n });\n return;\n }\n cells.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (cell.td && cellIndex === 0) {\n if (rowIndex !== 0 && !hasCellShade(cell)) {\n cell.td.style.borderTopColor = TRANSPARENT;\n setColor(\n cell.td,\n TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */\n );\n }\n if (rowIndex !== cells.length - 1 && rowIndex !== 0) {\n cell.td.style.borderBottomColor = TRANSPARENT;\n }\n cell.td = changeElementTag(cell.td, TABLE_HEADER_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = 'col';\n }\n });\n });\n}\n\n/**\n * Apply custom design to the Header Row\n * @param format\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n * @returns\n */\nfunction setHeaderRowFormat(\n cells: VCell[][],\n format: TableFormat,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!format.hasHeaderRow) {\n cells[0]?.forEach(cell => {\n if (cell.td) {\n cell.td = changeElementTag(cell.td, TABLE_CELL_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = '';\n }\n });\n return;\n }\n cells[0]?.forEach(cell => {\n if (cell.td && format.headerRowColor) {\n if (!hasCellShade(cell)) {\n setColor(\n cell.td,\n format.headerRowColor,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n cell.td.style.borderRightColor = format.headerRowColor;\n cell.td.style.borderLeftColor = format.headerRowColor;\n cell.td.style.borderTopColor = format.headerRowColor;\n cell.td = changeElementTag(cell.td, TABLE_HEADER_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = 'row';\n }\n });\n}\n\nfunction getBorderStyle(style?: string | null) {\n const color = style ? style : 'transparent';\n return 'solid 1px ' + color;\n}\n","import { getTableCellMetadata, saveTableCellMetadata } from './tableCellInfo';\n/**\n * Clone css styles from a element an set to another.\n * @param cell cell that will receive the styles\n * @param styledCell cell where the styles will be clone\n */\n\nexport default function cloneCellStyles(\n cell: HTMLTableCellElement,\n styledCell: HTMLTableCellElement\n) {\n const styles = styledCell.getAttribute('style');\n if (styles) {\n cell.setAttribute('style', styles);\n const meta = getTableCellMetadata(styledCell);\n if (meta) {\n saveTableCellMetadata(cell, { ...meta });\n }\n }\n}\n","import VTable from './VTable';\nimport { TableSelection } from 'roosterjs-editor-types';\n\n/**\n * Check if the whole table is selected\n * @param vTable VTable to check whether all cells are selected\n * @param selection Table selection with first cell selected and last cell selected coordinates.\n * @returns\n */\nexport default function isWholeTableSelected(vTable: VTable, selection: TableSelection) {\n if (!selection || !vTable.cells) {\n return false;\n }\n const { firstCell, lastCell } = selection;\n const rowsLength = vTable.cells.length - 1;\n const rowCells = vTable.cells[rowsLength];\n if (!rowCells) {\n return false;\n }\n const colIndex = rowCells.length - 1;\n const firstX = firstCell.x;\n const firstY = firstCell.y;\n const lastX = lastCell.x;\n const lastY = lastCell.y;\n return firstX == 0 && firstY == 0 && lastX == colIndex && lastY == rowsLength;\n}\n","import cloneCellStyles from './cloneCellStyles';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport VTable from './VTable';\nimport { NodePosition, TableOperation } from 'roosterjs-editor-types';\n\n/**\n *\n * Pastes a table inside another, modifying the original to create a merged one\n * @param currentTd The cell where the cursor is in the table to paste into\n * @param rootNodeToInsert A Node containing the table to be inserted\n * @param position The position to paste the table\n * @param range The selected range of the table\n *\n * Position and range are here for when table selection allows to move pivot point\n */\nexport default function pasteTable(\n currentTd: HTMLTableCellElement,\n rootNodeToInsert: HTMLTableElement,\n position?: NodePosition,\n range?: Range\n) {\n // This is the table on the clipboard\n let newTable = new VTable(rootNodeToInsert);\n // This table is already on the editor\n let currentTable = new VTable(currentTd);\n\n // Which cell in the currentTable is the cursor placed\n let cursorRow = currentTable.row!;\n let cursorCol = currentTable.col!;\n\n // Total rows and columns of the final table\n let rows = cursorRow + newTable.cells?.length! ?? 0;\n let columns = cursorCol + newTable.cells?.[0].length! ?? 0;\n\n // Add new rows\n currentTable.row = currentTable.cells!.length! - 1;\n while (currentTable.cells!.length! < rows) {\n currentTable.edit(TableOperation.InsertBelow);\n }\n\n // Add new columns\n currentTable.col = currentTable.cells![0].length! - 1;\n while (currentTable.cells![0].length! < columns) {\n currentTable.edit(TableOperation.InsertRight);\n }\n\n // Create final table\n for (let i = cursorRow; i < rows; i++) {\n for (let j = cursorCol; j < columns; j++) {\n let cell = currentTable.getCell(i, j);\n let newCell = newTable.getTd(i - cursorRow, j - cursorCol);\n if (cell.td && newCell) {\n moveChildNodes(cell.td, newCell);\n cloneCellStyles(cell.td, newCell);\n } else {\n cell.td = document.createElement('td');\n }\n }\n }\n\n currentTable.writeBack();\n}\n","import { createBooleanDefinition, createObjectDefinition } from '../metadata/definitionCreators';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\n\nconst BooleanDefinition = createBooleanDefinition(\n true /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst TableCellFormatMetadata = createObjectDefinition>(\n {\n bgColorOverride: BooleanDefinition,\n vAlignOverride: BooleanDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * @internal\n * Get the format info of a table cell\n * @param cell The table cell to use\n */\nexport function getTableCellMetadata(cell: HTMLTableCellElement) {\n return getMetadata(cell, TableCellFormatMetadata);\n}\n\n/**\n * Add metadata to a cell\n * @param cell The table cell to add the metadata\n * @param format The format of the table\n */\nexport function saveTableCellMetadata(cell: HTMLTableCellElement, format: TableCellMetadataFormat) {\n if (cell && format) {\n setMetadata(cell, format, TableCellFormatMetadata);\n }\n}\n","import { getMetadata, setMetadata } from '../metadata/metadata';\nimport { TableBorderFormat, TableFormat } from 'roosterjs-editor-types';\nimport {\n createBooleanDefinition,\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from '../metadata/definitionCreators';\n\nconst NullStringDefinition = createStringDefinition(\n false /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst BooleanDefinition = createBooleanDefinition(false /** isOptional */);\n\nconst TableFormatMetadata = createObjectDefinition>(\n {\n topBorderColor: NullStringDefinition,\n bottomBorderColor: NullStringDefinition,\n verticalBorderColor: NullStringDefinition,\n hasHeaderRow: BooleanDefinition,\n headerRowColor: NullStringDefinition,\n hasFirstColumn: BooleanDefinition,\n hasBandedColumns: BooleanDefinition,\n hasBandedRows: BooleanDefinition,\n bgColorEven: NullStringDefinition,\n bgColorOdd: NullStringDefinition,\n tableBorderFormat: createNumberDefinition(\n false /** isOptional */,\n undefined /* value */,\n TableBorderFormat.DEFAULT /* first table border format, TODO: Use Min/Max to specify valid values */,\n TableBorderFormat.CLEAR /* last table border format, , TODO: Use Min/Max to specify valid values */\n ),\n keepCellShade: createBooleanDefinition(true /** isOptional */),\n verticalAlign: NullStringDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Get the format info of a table\n * If the table does not have a info saved, it will be retrieved from the css styles\n * @param table The table that has the info\n */\nexport function getTableFormatInfo(table: HTMLTableElement) {\n return getMetadata(table, TableFormatMetadata);\n}\n\n/**\n * @internal\n * Save the format info of a table\n * @param table The table the info will be saved\n * @param format The format of the table\n */\nexport function saveTableInfo(table: HTMLTableElement, format: TableFormat) {\n if (table && format) {\n setMetadata(table, format, TableFormatMetadata);\n }\n}\n","import { BrowserInfo } from 'roosterjs-editor-types';\r\n\r\nconst isAndroidRegex = /android/i;\r\n\r\n/**\r\n * Get current browser information from user agent string\r\n * @param userAgent The userAgent string of a browser\r\n * @param appVersion The appVersion string of a browser\r\n * @param vendor The vendor string of a browser\r\n * @returns The BrowserInfo object calculated from the given userAgent and appVersion\r\n */\r\nexport function getBrowserInfo(\r\n userAgent: string,\r\n appVersion: string,\r\n vendor?: string\r\n): BrowserInfo {\r\n // checks whether the browser is running in IE\r\n // IE11 will use rv in UA instead of MSIE. Unfortunately Firefox also uses this. We should also look for \"Trident\" to confirm this.\r\n // There have been cases where companies using older version of IE and custom UserAgents have broken this logic (e.g. IE 10 and KellyServices)\r\n // therefore we should check that the Trident/rv combo is not just from an older IE browser\r\n let isIE11OrGreater = userAgent.indexOf('rv:') != -1 && userAgent.indexOf('Trident') != -1;\r\n let isIE = userAgent.indexOf('MSIE') != -1 || isIE11OrGreater;\r\n\r\n // IE11+ may also have 'Chrome', 'Firefox' and 'Safari' in user agent. But it will have 'trident' as well\r\n let isChrome = false;\r\n let isFirefox = false;\r\n let isSafari = false;\r\n let isEdge = false;\r\n let isWebKit = userAgent.indexOf('WebKit') != -1;\r\n let isMobileOrTablet = false;\r\n\r\n // Reference: http://detectmobilebrowsers.com/\r\n // The default regex on the website doesn't consider tablet.\r\n // To support tablet, add |android|ipad|playbook|silk to the first regex according to the info in /about page\r\n ((userAgentOrVendor: string) => {\r\n if (\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\r\n userAgentOrVendor\r\n ) ||\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n userAgentOrVendor.substr(0, 4)\r\n )\r\n ) {\r\n isMobileOrTablet = true;\r\n }\r\n })(userAgent || vendor || '');\r\n\r\n if (!isIE) {\r\n isChrome = userAgent.indexOf('Chrome') != -1;\r\n isFirefox = userAgent.indexOf('Firefox') != -1;\r\n if (userAgent.indexOf('Safari') != -1) {\r\n // Android and Chrome have Safari in the user string\r\n isSafari = userAgent.indexOf('Chrome') == -1 && userAgent.indexOf('Android') == -1;\r\n }\r\n\r\n // Sample Edge UA: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10121\r\n isEdge = userAgent.indexOf('Edge') != -1;\r\n\r\n // When it is edge, it should not be chrome or firefox. and it is also not webkit\r\n if (isEdge) {\r\n isWebKit = isChrome = isFirefox = false;\r\n }\r\n }\r\n\r\n let isMac = appVersion.indexOf('Mac') != -1;\r\n let isWin = appVersion.indexOf('Win') != -1 || appVersion.indexOf('NT') != -1;\r\n let isAndroid = isAndroidRegex.test(userAgent);\r\n\r\n return {\r\n isMac,\r\n isWin,\r\n isWebKit,\r\n isIE,\r\n isIE11OrGreater,\r\n isSafari,\r\n isChrome,\r\n isFirefox,\r\n isEdge,\r\n isIEOrEdge: isIE || isEdge,\r\n isAndroid,\r\n isMobileOrTablet,\r\n };\r\n}\r\n\r\n/**\r\n * Browser object contains browser and operating system information of current environment\r\n */\r\nexport const Browser =\r\n typeof window !== 'undefined' && window\r\n ? getBrowserInfo(\r\n window.navigator.userAgent,\r\n window.navigator.appVersion,\r\n window.navigator.vendor\r\n )\r\n : {};\r\n","import setColor from './setColor';\r\nimport { DarkColorHandler, DefaultFormat } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Apply format to an HTML element\r\n * @param element The HTML element to apply format to\r\n * @param format The format to apply\r\n * @param isDarkMode Whether the content should be formatted in dark mode\r\n * @param darkColorHandler An optional dark color handler object. When it is passed, we will use this handler to do variable-based dark color instead of original dataset base dark color\r\n */\r\nexport default function applyFormat(\r\n element: HTMLElement,\r\n format: DefaultFormat,\r\n isDarkMode?: boolean,\r\n darkColorHandler?: DarkColorHandler | null\r\n) {\r\n if (format) {\r\n let elementStyle = element.style;\r\n let {\r\n fontFamily,\r\n fontSize,\r\n textColor,\r\n textColors,\r\n backgroundColor,\r\n backgroundColors,\r\n bold,\r\n italic,\r\n underline,\r\n } = format;\r\n\r\n if (fontFamily) {\r\n elementStyle.fontFamily = fontFamily;\r\n }\r\n if (fontSize) {\r\n elementStyle.fontSize = fontSize;\r\n }\r\n\r\n if (textColors) {\r\n setColor(\r\n element,\r\n textColors,\r\n false /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n } else if (textColor) {\r\n setColor(\r\n element,\r\n textColor,\r\n false /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n }\r\n\r\n if (backgroundColors) {\r\n setColor(\r\n element,\r\n backgroundColors,\r\n true /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n } else if (backgroundColor) {\r\n setColor(\r\n element,\r\n backgroundColor,\r\n true /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n }\r\n\r\n if (bold) {\r\n elementStyle.fontWeight = 'bold';\r\n }\r\n if (italic) {\r\n elementStyle.fontStyle = 'italic';\r\n }\r\n if (underline) {\r\n elementStyle.textDecoration = 'underline';\r\n }\r\n }\r\n}\r\n","import getComputedStyles from './getComputedStyles';\r\nimport getTagOfNode from './getTagOfNode';\r\nimport moveChildNodes from './moveChildNodes';\r\n\r\n/**\r\n * Change tag of an HTML Element to a new one, and replace it from DOM tree\r\n * @param element The element to change tag\r\n * @param newTag New tag to change to\r\n * @returns The new element with new tag\r\n */\r\nexport default function changeElementTag(\r\n element: HTMLElement,\r\n newTag: K\r\n): HTMLElementTagNameMap[K];\r\n\r\n/**\r\n * Change tag of an HTML Element to a new one, and replace it from DOM tree\r\n * @param element The element to change tag\r\n * @param newTag New tag to change to\r\n * @returns The new element with new tag\r\n */\r\nexport default function changeElementTag(element: HTMLElement, newTag: string): HTMLElement | null;\r\n\r\nexport default function changeElementTag(element: HTMLElement, newTag: string): HTMLElement | null {\r\n if (!element || !newTag) {\r\n return null;\r\n }\r\n\r\n const origianlTag = getTagOfNode(element);\r\n\r\n if (origianlTag == newTag.toUpperCase()) {\r\n // Already in the target tag, no need to change\r\n return element;\r\n }\r\n\r\n let newElement = element.ownerDocument.createElement(newTag);\r\n\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n let attr = element.attributes[i];\r\n newElement.setAttribute(attr.name, attr.value);\r\n }\r\n\r\n moveChildNodes(newElement, element);\r\n\r\n if (origianlTag == 'P' || getTagOfNode(newElement) == 'P') {\r\n [newElement.style.marginTop, newElement.style.marginBottom] = getComputedStyles(element, [\r\n 'margin-top',\r\n 'margin-bottom',\r\n ]);\r\n }\r\n\r\n if (element.parentNode) {\r\n element.parentNode.replaceChild(newElement, element);\r\n }\r\n\r\n return newElement;\r\n}\r\n","import contains from './contains';\r\nimport splitParentNode from './splitParentNode';\r\nimport toArray from '../jsUtils/toArray';\r\n\r\n/**\r\n * Collapse nodes within the given start and end nodes to their common ancestor node,\r\n * split parent nodes if necessary\r\n * @param root The root node of the scope\r\n * @param start The start node\r\n * @param end The end node\r\n * @param canSplitParent True to allow split parent node there are nodes before start or after end under the same parent\r\n * and the returned nodes will be all nodes from start through end after splitting\r\n * False to disallow split parent\r\n * @returns When canSplitParent is true, returns all node from start through end after splitting,\r\n * otherwise just return start and end\r\n */\r\nexport default function collapseNodes(\r\n root: Node,\r\n start: Node,\r\n end: Node,\r\n canSplitParent: boolean\r\n): Node[] {\r\n if (!contains(root, start) || !contains(root, end)) {\r\n return [];\r\n }\r\n\r\n start = collapse(root, start, end, true /*isStart*/, canSplitParent);\r\n end = collapse(root, end, start, false /*isStart*/, canSplitParent);\r\n\r\n if (contains(start, end, true /*treatSameNodeAsContain*/)) {\r\n return [start];\r\n } else if (contains(end, start)) {\r\n return [end];\r\n } else if (start.parentNode == end.parentNode) {\r\n let nodes: Node[] = start.parentNode ? toArray(start.parentNode?.childNodes) : [];\r\n let startIndex = nodes.indexOf(start);\r\n let endIndex = nodes.indexOf(end);\r\n return nodes.slice(startIndex, endIndex + 1);\r\n } else {\r\n return [start, end];\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * Collapse a node by traversing its parent nodes until we get the common ancestor node of node and ref node\r\n * @param root Root node, traversing will be limited under this scope\r\n * @param node The node to collapse\r\n * @param ref Ref node. The result will be the nearest common ancestor node of the given node and this ref node\r\n * @param isStart Whether the given node is start of the sequence of nodes to collapse\r\n * @param canSplitParent Whether splitting parent node is allowed\r\n * @returns The common ancestor node of the given node ref node\r\n */\r\nexport function collapse(\r\n root: Node,\r\n node: Node,\r\n ref: Node,\r\n isStart: boolean,\r\n canSplitParent: boolean\r\n): Node {\r\n while (node.parentNode != root && !contains(node.parentNode, ref)) {\r\n if ((isStart && node.previousSibling) || (!isStart && node.nextSibling)) {\r\n if (!canSplitParent) {\r\n break;\r\n }\r\n splitParentNode(node, isStart);\r\n }\r\n\r\n if (!node.parentNode) {\r\n break;\r\n }\r\n\r\n node = node.parentNode;\r\n }\r\n return node;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Test if a node contains another node\r\n * @param container The container node\r\n * @param contained The node to check if it is inside container\r\n * @param treatSameNodeAsContain When container and contained are the same node,\r\n * return true if this param is set to true, otherwise return false. Default value is false\r\n * @returns True if contained is inside container, or they are the same node when treatSameNodeAsContain is true.\r\n * Otherwise false.\r\n */\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Node | null | undefined,\r\n treatSameNodeAsContain?: boolean\r\n): boolean;\r\n\r\n/**\r\n * Test if a node contains a given range\r\n * @param container The container node\r\n * @param contained The range to check if it is inside container\r\n * @returns True if contained is inside container, otherwise false\r\n */\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Range | null | undefined\r\n): boolean;\r\n\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Node | Range | null | undefined,\r\n treatSameNodeAsContain?: boolean\r\n): boolean {\r\n if (!container || !contained) {\r\n return false;\r\n }\r\n\r\n if (treatSameNodeAsContain && container == contained) {\r\n return true;\r\n }\r\n\r\n if (safeInstanceOf(contained, 'Range')) {\r\n contained = contained && contained.commonAncestorContainer;\r\n treatSameNodeAsContain = true;\r\n }\r\n\r\n if (contained && contained.nodeType == NodeType.Text) {\r\n contained = contained.parentNode;\r\n treatSameNodeAsContain = true;\r\n }\r\n\r\n if (container.nodeType != NodeType.Element && container.nodeType != NodeType.DocumentFragment) {\r\n return !!treatSameNodeAsContain && container == contained;\r\n }\r\n\r\n return (\r\n !!(treatSameNodeAsContain || container != contained) &&\r\n internalContains(container, contained)\r\n );\r\n}\r\n\r\nfunction internalContains(container: Node, contained: Node | null): boolean {\r\n if (container.contains) {\r\n return container.contains(contained);\r\n } else {\r\n while (contained) {\r\n if (contained == container) {\r\n return true;\r\n }\r\n\r\n contained = contained.parentNode;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport safeInstanceOf from './safeInstanceOf';\nimport { Browser } from './Browser';\nimport { CreateElementData, KnownCreateElementDataIndex } from 'roosterjs-editor-types';\nimport type { CompatibleKnownCreateElementDataIndex } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * All known CreateElementData used by roosterjs to create elements\n */\nexport const KnownCreateElementData: Record = {\n [KnownCreateElementDataIndex.None]: { tag: '' },\n\n // Edge can sometimes lose current format when Enter to new line.\n // So here we add an extra SPAN for Edge to workaround this bug\n [KnownCreateElementDataIndex.EmptyLine]: Browser.isEdge\n ? { tag: 'div', children: [{ tag: 'span', children: [{ tag: 'br' }] }] }\n : { tag: 'div', children: [{ tag: 'br' }] },\n [KnownCreateElementDataIndex.BlockquoteWrapper]: {\n tag: 'blockquote',\n style: 'margin-top:0;margin-bottom:0',\n },\n [KnownCreateElementDataIndex.CopyPasteTempDiv]: {\n tag: 'div',\n style:\n 'width: 600px; height: 1px; overflow: hidden; position: fixed; top: 0; left; 0; -webkit-user-select: text',\n attributes: {\n contenteditable: 'true',\n },\n },\n [KnownCreateElementDataIndex.BlockListItem]: { tag: 'li', style: 'display:block' },\n [KnownCreateElementDataIndex.ContextMenuWrapper]: {\n tag: 'div',\n style: 'position: fixed; width: 0; height: 0',\n },\n [KnownCreateElementDataIndex.ImageEditWrapper]: {\n tag: 'span',\n style: 'max-width:100%;position:relative',\n children: [\n {\n tag: 'div',\n style: 'width:100%;height:100%;position:relative;overflow:hidden',\n },\n ],\n },\n [KnownCreateElementDataIndex.TableHorizontalResizer]: {\n tag: 'div',\n style: 'position: fixed; cursor: row-resize; user-select: none',\n },\n [KnownCreateElementDataIndex.TableVerticalResizer]: {\n tag: 'div',\n style: 'position: fixed; cursor: col-resize; user-select: none',\n },\n [KnownCreateElementDataIndex.TableResizerLTR]: {\n tag: 'div',\n style: 'position: fixed; cursor: nw-resize; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.TableResizerRTL]: {\n tag: 'div',\n style: 'position: fixed; cursor: ne-resize; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.TableSelector]: {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.EmptyLineFormatInSpan]: {\n tag: 'div',\n children: [{ tag: 'span', children: [{ tag: 'br' }] }],\n },\n};\n\n/**\n * Create DOM element from the given CreateElementData\n * @param elementData The CreateElementData or an index of a known CreateElementData used for creating this element\n * @param document The document to create the element from\n * @returns The root DOM element just created\n */\nexport default function createElement(\n elementData:\n | CreateElementData\n | KnownCreateElementDataIndex\n | CompatibleKnownCreateElementDataIndex,\n document: Document\n): Element | null {\n if (typeof elementData == 'number') {\n elementData = KnownCreateElementData[elementData];\n }\n\n if (!elementData || !elementData.tag) {\n return null;\n }\n\n const { tag, namespace, className, style, dataset, attributes, children } = elementData;\n const result = namespace\n ? document.createElementNS(namespace, tag)\n : document.createElement(tag);\n\n if (style) {\n result.setAttribute('style', style);\n }\n\n if (className) {\n result.className = className;\n }\n\n if (dataset && safeInstanceOf(result, 'HTMLElement')) {\n getObjectKeys(dataset).forEach(datasetName => {\n result.dataset[datasetName] = dataset[datasetName];\n });\n }\n\n if (attributes) {\n getObjectKeys(attributes).forEach(attrName => {\n result.setAttribute(attrName, attributes[attrName]);\n });\n }\n\n if (children) {\n children.forEach(child => {\n if (typeof child === 'string') {\n result.appendChild(document.createTextNode(child));\n } else if (child) {\n const childElement = createElement(child, document);\n if (childElement) {\n result.appendChild(childElement);\n }\n }\n });\n }\n\n return result;\n}\n","import contains from './contains';\r\nimport matchesSelector from './matchesSelector';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Find closest element ancestor start from the given node which matches the given selector\r\n * @param node Find ancestor start from this node\r\n * @param root Root node where the search should stop at. The return value can never be this node\r\n * @param selector The expected selector. If null, return the first HTML Element found from start node\r\n * @returns An HTML element which matches the given selector. If the given start node matches the selector,\r\n * returns the given node\r\n */\r\nexport default function findClosestElementAncestor(\r\n node: Node | null,\r\n root?: Node,\r\n selector?: string\r\n): HTMLElement | null {\r\n node = !node ? null : node.nodeType == NodeType.Element ? node : node.parentNode;\r\n let element = node && node.nodeType == NodeType.Element ? node : null;\r\n\r\n if (element && selector) {\r\n if (element.closest) {\r\n element = element.closest(selector) as HTMLElement;\r\n } else {\r\n while (element && element != root && !matchesSelector(element, selector)) {\r\n element = element.parentElement;\r\n }\r\n }\r\n }\r\n\r\n return !root || contains(root, element) ? element : null;\r\n}\r\n","import toArray from '../jsUtils/toArray';\r\n\r\n/**\r\n * @deprecated\r\n * Creates an HTML node array from html\r\n * @param html the html string to create HTML elements from\r\n * @param ownerDocument Owner document of the result HTML elements\r\n * @returns An HTML node array to represent the given html string\r\n */\r\nexport default function fromHtml(html: string, ownerDocument: HTMLDocument): Node[] {\r\n let element = ownerDocument.createElement('DIV');\r\n element.innerHTML = html;\r\n\r\n return toArray(element.childNodes);\r\n}\r\n","import findClosestElementAncestor from './findClosestElementAncestor';\r\n\r\n/**\r\n * Get computed styles of a node\r\n * @param node The node to get computed styles from\r\n * @param styleNames Names of style to get, can be a single name or an array.\r\n * Default value is font-family, font-size, color, background-color\r\n * @returns An array of the computed styles\r\n */\r\nexport default function getComputedStyles(\r\n node: Node,\r\n styleNames: string | string[] = ['font-family', 'font-size', 'color', 'background-color']\r\n): string[] {\r\n let element = findClosestElementAncestor(node);\r\n let result: string[] = [];\r\n styleNames = Array.isArray(styleNames) ? styleNames : [styleNames];\r\n if (element) {\r\n let win = element.ownerDocument.defaultView || window;\r\n let styles = win.getComputedStyle(element);\r\n\r\n if (styles) {\r\n for (let style of styleNames) {\r\n let value = styles.getPropertyValue(style) || '';\r\n value = style != 'font-family' ? value.toLowerCase() : value;\r\n value = style == 'font-size' ? px2Pt(value) : value;\r\n result.push(value);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * A shortcut for getComputedStyles() when only one style is to be retrieved\r\n * @param node The node to get style from\r\n * @param styleName The style name\r\n * @returns The style value\r\n */\r\nexport function getComputedStyle(node: Node, styleName: string): string {\r\n return getComputedStyles(node, styleName)[0] || '';\r\n}\r\n\r\nfunction px2Pt(px: string) {\r\n if (px && px.indexOf('px') == px.length - 2) {\r\n // Edge may not handle the floating computing well which causes the calculated value is a little less than actual value\r\n // So add 0.05 to fix it\r\n return Math.round(parseFloat(px) * 75 + 0.05) / 100 + 'pt';\r\n }\r\n return px;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\n\n/**\n * Get innerHTML of the given node\n * @param node The DOM node to get innerHTML from\n */\nexport default function getInnerHTML(node: HTMLElement | DocumentFragment) {\n if (safeInstanceOf(node, 'HTMLElement')) {\n return node.innerHTML;\n } else if (node) {\n const tempNode = node.ownerDocument.createElement('span');\n tempNode.appendChild(node.cloneNode(true /*deep*/));\n return tempNode.innerHTML;\n } else {\n return '';\n }\n}\n","import normalizeRect from './normalizeRect';\nimport { Rect } from 'roosterjs-editor-types';\n\n/**\n * Get the intersected Rect of elements provided\n *\n * @example\n * The result of the following Elements Rects would be:\n {\n top: Element2.top,\n bottom: Element1.bottom,\n left: Element2.left,\n right: Element2.right\n }\n +-------------------------+\n | Element 1 |\n | +-----------------+ |\n | | Element2 | |\n | | | |\n | | | |\n +-------------------------+\n | |\n +-----------------+\n\n * @param elements Elements to use.\n * @param additionalRects additional rects to use\n * @returns If the Rect is valid return the rect, if not, return null.\n */\nexport default function getIntersectedRect(\n elements: HTMLElement[],\n additionalRects: Rect[] = []\n): Rect | null {\n const rects = elements\n .map(element => normalizeRect(element.getBoundingClientRect()))\n .concat(additionalRects)\n .filter(element => !!element) as Rect[];\n\n const result: Rect = {\n top: Math.max(...rects.map(r => r.top)),\n bottom: Math.min(...rects.map(r => r.bottom)),\n left: Math.max(...rects.map(r => r.left)),\n right: Math.min(...rects.map(r => r.right)),\n };\n\n return result.top < result.bottom && result.left < result.right ? result : null;\n}\n","import shouldSkipNode from './shouldSkipNode';\r\nimport { getLeafSibling } from './getLeafSibling';\r\n\r\n/**\r\n * Get first/last leaf node of the given root node.\r\n * @param rootNode Root node to get leaf node from\r\n * @param isFirst True to get first leaf node, false to get last leaf node\r\n */\r\nfunction getLeafNode(rootNode: Node, isFirst: boolean): Node | null {\r\n let getChild = (node: Node): Node | null => (isFirst ? node.firstChild : node.lastChild);\r\n let result = getChild(rootNode);\r\n while (result && getChild(result)) {\r\n result = getChild(result);\r\n }\r\n\r\n if (result && shouldSkipNode(result)) {\r\n result = getLeafSibling(rootNode, result, isFirst);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get the first meaningful leaf node\r\n * @param rootNode Root node to get leaf node from\r\n */\r\nexport function getFirstLeafNode(rootNode: Node): Node | null {\r\n return getLeafNode(rootNode, true /*isFirst*/);\r\n}\r\n\r\n/**\r\n * Get the last meaningful leaf node\r\n * @param rootNode Root node to get leaf node from\r\n */\r\nexport function getLastLeafNode(rootNode: Node): Node | null {\r\n return getLeafNode(rootNode, false /*isFirst*/);\r\n}\r\n","import contains from './contains';\r\nimport getTagOfNode from './getTagOfNode';\r\nimport shouldSkipNode from './shouldSkipNode';\r\n\r\n/**\r\n * @internal\r\n * This walks forwards/backwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param isNext True to get next leaf sibling node, false to get previous leaf sibling node\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n * @param ignoreSpace (Optional) Ignore pure space text node when check if the node should be skipped\r\n */\r\nexport function getLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n isNext: boolean,\r\n skipTags?: string[],\r\n ignoreSpace?: boolean\r\n): Node | null {\r\n let result = null;\r\n let getSibling = isNext\r\n ? (node: Node | null) => node?.nextSibling || null\r\n : (node: Node | null) => node?.previousSibling || null;\r\n let getChild = isNext ? (node: Node) => node.firstChild : (node: Node) => node.lastChild;\r\n if (contains(rootNode, startNode)) {\r\n let curNode: Node | null = startNode;\r\n let shouldContinue: boolean = true;\r\n\r\n while (shouldContinue) {\r\n // Find next/previous node, starting from next/previous sibling, then one level up to find next/previous sibling from parent\r\n // till a non-null nextSibling/previousSibling is found or the ceiling is encountered (rootNode)\r\n let parentNode = curNode?.parentNode || null;\r\n curNode = getSibling(curNode);\r\n while (!curNode && parentNode != rootNode) {\r\n curNode = getSibling(parentNode);\r\n parentNode = parentNode?.parentNode || null;\r\n }\r\n\r\n // Now traverse down to get first/last child\r\n while (\r\n curNode &&\r\n (!skipTags || skipTags.indexOf(getTagOfNode(curNode)) < 0) &&\r\n getChild(curNode)\r\n ) {\r\n curNode = getChild(curNode);\r\n }\r\n\r\n // Check special nodes (i.e. node that has a display:none etc.) and continue looping if so\r\n shouldContinue = !!curNode && shouldSkipNode(curNode, ignoreSpace);\r\n if (!shouldContinue) {\r\n // Found a good leaf node, assign and exit\r\n result = curNode;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * This walks forwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\nexport function getNextLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n skipTags?: string[]\r\n): Node | null {\r\n return getLeafSibling(rootNode, startNode, true /*isNext*/, skipTags);\r\n}\r\n\r\n/**\r\n * This walks backwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\nexport function getPreviousLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n skipTags?: string[]\r\n): Node | null {\r\n return getLeafSibling(rootNode, startNode, false /*isNext*/, skipTags);\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\r\nimport { DocumentCommand, PendableFormatState } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Names of Pendable formats\r\n */\r\nexport type PendableFormatNames = keyof PendableFormatState;\r\n\r\n/**\r\n * A map from pendable format name to document command\r\n */\r\nexport const PendableFormatCommandMap: { [key in PendableFormatNames]: DocumentCommand } = {\r\n /**\r\n * Bold\r\n */\r\n isBold: DocumentCommand.Bold,\r\n\r\n /**\r\n * Italic\r\n */\r\n isItalic: DocumentCommand.Italic,\r\n\r\n /**\r\n * Underline\r\n */\r\n isUnderline: DocumentCommand.Underline,\r\n\r\n /**\r\n * StrikeThrough\r\n */\r\n isStrikeThrough: DocumentCommand.StrikeThrough,\r\n\r\n /**\r\n * Subscript\r\n */\r\n isSubscript: DocumentCommand.Subscript,\r\n\r\n /**\r\n * Superscript\r\n */\r\n isSuperscript: DocumentCommand.Superscript,\r\n};\r\n\r\n/**\r\n * Get Pendable Format State at cursor.\r\n * @param document The HTML Document to get format state from\r\n * @returns A PendableFormatState object which contains the values of pendable format states\r\n */\r\nexport default function getPendableFormatState(document: Document): PendableFormatState {\r\n let keys = getObjectKeys(PendableFormatCommandMap);\r\n\r\n return keys.reduce((state, key) => {\r\n state[key] = document.queryCommandState(PendableFormatCommandMap[key]);\r\n return state;\r\n }, {});\r\n}\r\n","import { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the html tag of a node, or empty if it is not an element\r\n * @param node The node to get tag of\r\n * @returns Tag name in upper case if the given node is an Element, or empty string otherwise\r\n */\r\nexport default function getTagOfNode(node: Node | null): string {\r\n return node && node.nodeType == NodeType.Element ? (node).tagName.toUpperCase() : '';\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\n\r\nconst BLOCK_ELEMENT_TAGS = 'ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CANVAS,DD,DIV,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HR,LI,MAIN,NAV,NOSCRIPT,OL,OUTPUT,P,PRE,SECTION,TABLE,TD,TH,TFOOT,UL,VIDEO'.split(\r\n ','\r\n);\r\nconst BLOCK_DISPLAY_STYLES = ['block', 'list-item', 'table-cell'];\r\n\r\n/**\r\n * Checks if the node is a block like element. Block like element are usually those P, DIV, LI, TD etc.\r\n * @param node The node to check\r\n * @returns True if the node is a block element, otherwise false\r\n */\r\nexport default function isBlockElement(node: Node): node is HTMLElement {\r\n let tag = getTagOfNode(node);\r\n return !!(\r\n tag &&\r\n (BLOCK_DISPLAY_STYLES.indexOf((node).style.display) >= 0 ||\r\n BLOCK_ELEMENT_TAGS.indexOf(tag) >= 0)\r\n );\r\n}\r\n","import { DocumentPosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Checks if node1 is after node2\r\n * @param node1 The node to check if it is after another node\r\n * @param node2 The node to check if another node is after this one\r\n * @returns True if node1 is after node2, otherwise false\r\n */\r\nexport default function isNodeAfter(node1: Node, node2: Node): boolean {\r\n return !!(\r\n node1 &&\r\n node2 &&\r\n (node2.compareDocumentPosition(node1) & DocumentPosition.Following) ==\r\n DocumentPosition.Following\r\n );\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\nconst VISIBLE_ELEMENT_TAGS = ['IMG'];\r\nconst VISIBLE_CHILD_ELEMENT_SELECTOR = ['TABLE', 'IMG', 'LI'].join(',');\r\nconst ZERO_WIDTH_SPACE = /\\u200b/g;\r\n\r\n/**\r\n * Check if a given node has no visible content\r\n * @param node The node to check\r\n * @param trimContent Whether trim the text content so that spaces will be treated as empty.\r\n * Default value is false\r\n * @returns True if there isn't any visible element inside node, otherwise false\r\n */\r\nexport default function isNodeEmpty(\r\n node: Node,\r\n trimContent?: boolean,\r\n shouldCountBrAsVisible?: boolean\r\n) {\r\n if (!node) {\r\n return false;\r\n } else if (node.nodeType == NodeType.Text) {\r\n return trim(node.nodeValue || '', trimContent) == '';\r\n } else if (node.nodeType == NodeType.Element) {\r\n let element = node as Element;\r\n let textContent = trim(element.textContent || '', trimContent);\r\n const visibleSelector = shouldCountBrAsVisible\r\n ? `${VISIBLE_CHILD_ELEMENT_SELECTOR},BR`\r\n : VISIBLE_CHILD_ELEMENT_SELECTOR;\r\n if (\r\n textContent != '' ||\r\n VISIBLE_ELEMENT_TAGS.indexOf(getTagOfNode(element)) >= 0 ||\r\n element.querySelectorAll(visibleSelector)[0]\r\n ) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction trim(s: string, trim: boolean | undefined) {\r\n s = s.replace(ZERO_WIDTH_SPACE, '');\r\n return trim ? s.trim() : s;\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\n\r\n/**\r\n * HTML void elements\r\n * Per https://www.w3.org/TR/html/syntax.html#syntax-elements, cannot have child nodes\r\n * This regex is used when we move focus to very begin of editor. We should avoid putting focus inside\r\n * void elements so users don't accidentally create child nodes in them\r\n */\r\nconst HTML_VOID_ELEMENTS = 'AREA,BASE,BR,COL,COMMAND,EMBED,HR,IMG,INPUT,KEYGEN,LINK,META,PARAM,SOURCE,TRACK,WBR'.split(\r\n ','\r\n);\r\n\r\n/**\r\n * Check if the given node is html void element. Void element cannot have children\r\n * @param node The node to check\r\n */\r\nexport default function isVoidHtmlElement(node: Node): boolean {\r\n return !!node && HTML_VOID_ELEMENTS.indexOf(getTagOfNode(node)) >= 0;\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\r\nimport { LinkData } from 'roosterjs-editor-types';\r\n\r\ninterface LinkMatchRule {\r\n match: RegExp;\r\n except?: RegExp;\r\n normalizeUrl?: (url: string) => string;\r\n}\r\n\r\n// http exclude matching regex\r\n// invalid URL example (in particular on IE and Edge):\r\n// - http://www.bing.com%00, %00 before ? (question mark) is considered invalid. IE/Edge throws invalid argument exception\r\n// - http://www.bing.com%1, %1 is invalid\r\n// - http://www.bing.com%g, %g is invalid (IE and Edge expects a two hex value after a %)\r\n// - http://www.bing.com%, % as ending is invalid (IE and Edge expects a two hex value after a %)\r\n// All above % cases if they're after ? (question mark) is then considered valid again\r\n// Similar for @, it needs to be after / (forward slash), or ? (question mark). Otherwise IE/Edge will throw security exception\r\n// - http://www.bing.com@name, @name before ? (question mark) is considered invalid\r\n// - http://www.bing.com/@name, is valid sine it is after / (forward slash)\r\n// - http://www.bing.com?@name, is also valid since it is after ? (question mark)\r\n// The regex below is essentially a break down of:\r\n// ^[^?]+%[^0-9a-f]+ => to exclude URL like www.bing.com%%\r\n// ^[^?]+%[0-9a-f][^0-9a-f]+ => to exclude URL like www.bing.com%1\r\n// ^[^?]+%00 => to exclude URL like www.bing.com%00\r\n// ^[^?]+%$ => to exclude URL like www.bing.com%\r\n// ^https?:\\/\\/[^?\\/]+@ => to exclude URL like http://www.bing.com@name\r\n// ^www\\.[^?\\/]+@ => to exclude URL like www.bing.com@name\r\n// , => to exclude url like www.bing,,com\r\nconst httpExcludeRegEx = /^[^?]+%[^0-9a-f]+|^[^?]+%[0-9a-f][^0-9a-f]+|^[^?]+%00|^[^?]+%$|^https?:\\/\\/[^?\\/]+@|^www\\.[^?\\/]+@/i;\r\n\r\n// via https://tools.ietf.org/html/rfc1035 Page 7\r\nconst labelRegEx = '[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'; // We're using case insensitive regexps below so don't bother including A-Z\r\nconst domainNameRegEx = `(?:${labelRegEx}\\\\.)*${labelRegEx}`;\r\nconst domainPortRegEx = `${domainNameRegEx}(?:\\\\:[0-9]+)?`;\r\nconst domainPortWithUrlRegEx = `${domainPortRegEx}(?:[\\\\/\\\\?]\\\\S*)?`;\r\n\r\nconst linkMatchRules: Record = {\r\n http: {\r\n match: new RegExp(\r\n `^(?:microsoft-edge:)?http:\\\\/\\\\/${domainPortWithUrlRegEx}|www\\\\.${domainPortWithUrlRegEx}`,\r\n 'i'\r\n ),\r\n except: httpExcludeRegEx,\r\n normalizeUrl: url =>\r\n new RegExp('^(?:microsoft-edge:)?http:\\\\/\\\\/', 'i').test(url) ? url : 'http://' + url,\r\n },\r\n https: {\r\n match: new RegExp(`^(?:microsoft-edge:)?https:\\\\/\\\\/${domainPortWithUrlRegEx}`, 'i'),\r\n except: httpExcludeRegEx,\r\n },\r\n mailto: { match: new RegExp('^mailto:\\\\S+@\\\\S+\\\\.\\\\S+', 'i') },\r\n notes: { match: new RegExp('^notes:\\\\/\\\\/\\\\S+', 'i') },\r\n file: { match: new RegExp('^file:\\\\/\\\\/\\\\/?\\\\S+', 'i') },\r\n unc: { match: new RegExp('^\\\\\\\\\\\\\\\\\\\\S+', 'i') },\r\n ftp: {\r\n match: new RegExp(\r\n `^ftp:\\\\/\\\\/${domainPortWithUrlRegEx}|ftp\\\\.${domainPortWithUrlRegEx}`,\r\n 'i'\r\n ),\r\n normalizeUrl: url => (new RegExp('^ftp:\\\\/\\\\/', 'i').test(url) ? url : 'ftp://' + url),\r\n },\r\n news: { match: new RegExp(`^news:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n telnet: { match: new RegExp(`^telnet:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n gopher: { match: new RegExp(`^gopher:\\\\/\\\\/${domainPortWithUrlRegEx}`, 'i') },\r\n wais: { match: new RegExp(`^wais:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n};\r\n\r\n/**\r\n * Try to match a given string with link match rules, return matched link\r\n * @param url Input url to match\r\n * @param option Link match option, exact or partial. If it is exact match, we need\r\n * to check the length of matched link and url\r\n * @param rules Optional link match rules, if not passed, only the default link match\r\n * rules will be applied\r\n * @returns The matched link data, or null if no match found.\r\n * The link data includes an original url and a normalized url\r\n */\r\nexport default function matchLink(url: string): LinkData | null {\r\n if (url) {\r\n for (let schema of getObjectKeys(linkMatchRules)) {\r\n let rule = linkMatchRules[schema];\r\n let matches = url.match(rule.match);\r\n if (matches && matches[0] == url && (!rule.except || !rule.except.test(url))) {\r\n return {\r\n scheme: schema,\r\n originalUrl: url,\r\n normalizedUrl: rule.normalizeUrl ? rule.normalizeUrl(url) : url,\r\n };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\n\n/**\n * Type definition of HTMLElement interface for IE\n */\ninterface HTMLElementForIE extends HTMLElement {\n /**\n * IE implementation of Element.matches() function\n *\n */\n msMatchesSelector: (selector: string) => boolean;\n}\n\n/**\n * A wrapper function of Element.matches\n * @param element The element to match\n * @param selector The selector to match\n */\nexport default function matchesSelector(element: Node, selector: string): boolean {\n return (\n safeInstanceOf(element, 'HTMLElement') &&\n (element.matches || (element).msMatchesSelector).call(element, selector)\n );\n}\n","/**\n * Replace all child nodes of the given target node to the child nodes of source node.\n * @param target Target node, all child nodes of this node will be removed if keepExistingChildren is not set to true\n * @param source (Optional) source node, all child nodes of this node will be move to target node\n * @param keepExistingChildren (Optional) When set to true, all existing child nodes of target will be kept\n */\nexport default function moveChildNodes(\n target: Node,\n source?: Node,\n keepExistingChildren?: boolean\n) {\n if (!target) {\n return;\n }\n\n while (!keepExistingChildren && target.firstChild) {\n target.removeChild(target.firstChild);\n }\n\n while (source?.firstChild) {\n target.appendChild(source.firstChild);\n }\n}\n","import { Rect } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * A ClientRect of all 0 is possible. i.e. chrome returns a ClientRect of 0 when the cursor is on an empty p\r\n * We validate that and only return a rect when the passed in ClientRect is valid\r\n */\r\nexport default function normalizeRect(clientRect: DOMRect): Rect | null {\r\n let { left, right, top, bottom } =\r\n clientRect || { left: 0, right: 0, top: 0, bottom: 0 };\r\n return left === 0 && right === 0 && top === 0 && bottom === 0\r\n ? null\r\n : {\r\n left: Math.round(left),\r\n right: Math.round(right),\r\n top: Math.round(top),\r\n bottom: Math.round(bottom),\r\n };\r\n}\r\n","const HEX3_REGEX = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/;\nconst HEX6_REGEX = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/;\nconst RGB_REGEX = /^rgb\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)$/;\nconst RGBA_REGEX = /^rgba\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\n/**\n * Parse color string to r/g/b value.\n * If the given color is not in a recognized format, return null\n */\nexport default function parseColor(color: string): [number, number, number] | null {\n color = (color || '').trim();\n\n let match: RegExpMatchArray | null;\n if ((match = color.match(HEX3_REGEX))) {\n return [\n parseInt(match[1] + match[1], 16),\n parseInt(match[2] + match[2], 16),\n parseInt(match[3] + match[3], 16),\n ];\n } else if ((match = color.match(HEX6_REGEX))) {\n return [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16)];\n } else if ((match = color.match(RGB_REGEX) || color.match(RGBA_REGEX))) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n } else {\n // CSS color names such as red, green is not included for now.\n // If need, we can add those colors from https://www.w3.org/wiki/CSS/Properties/color/keywords\n return null;\n }\n}\n","import toArray from '../jsUtils/toArray';\r\nimport { DocumentPosition, NodeType, QueryScope } from 'roosterjs-editor-types';\r\nimport type { CompatibleQueryScope } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Query HTML elements in the container by a selector string\r\n * @param container Container element to query from\r\n * @param selector Selector string to query\r\n * @param forEachCallback An optional callback to be invoked on each node in query result\r\n * @param scope The scope of the query, default value is QueryScope.Body\r\n * @param range The selection range to query with. This is required when scope is not Body\r\n * @returns HTML Element array of the query result\r\n */\r\nexport default function queryElements(\r\n container: ParentNode,\r\n selector: string,\r\n forEachCallback?: ((node: HTMLElement) => any) | null,\r\n scope: QueryScope | CompatibleQueryScope = QueryScope.Body,\r\n range?: Range\r\n): HTMLElement[] {\r\n if (!container || !selector) {\r\n return [];\r\n }\r\n\r\n let elements = toArray(container.querySelectorAll(selector));\r\n\r\n if (scope != QueryScope.Body && range) {\r\n let { startContainer, startOffset, endContainer, endOffset } = range;\r\n if (startContainer.nodeType == NodeType.Element && startContainer.firstChild) {\r\n const child = startContainer.childNodes[startOffset];\r\n\r\n // range.startOffset can give a value of child.length+1 when selection is after the last child\r\n // In that case we will use the last child instead\r\n startContainer = child || startContainer.lastChild;\r\n }\r\n\r\n endContainer =\r\n endContainer.nodeType == NodeType.Element && endContainer.firstChild && endOffset > 0\r\n ? endContainer.childNodes[endOffset - 1]\r\n : endContainer;\r\n\r\n elements = elements.filter(element =>\r\n isIntersectWithNodeRange(\r\n element,\r\n startContainer,\r\n endContainer,\r\n scope == QueryScope.InSelection\r\n )\r\n );\r\n }\r\n\r\n if (forEachCallback) {\r\n elements.forEach(forEachCallback);\r\n }\r\n return elements;\r\n}\r\n\r\nfunction isIntersectWithNodeRange(\r\n node: Node,\r\n startNode: Node,\r\n endNode: Node,\r\n nodeContainedByRangeOnly: boolean\r\n): boolean {\r\n let startPosition = node.compareDocumentPosition(startNode);\r\n let endPosition = node.compareDocumentPosition(endNode);\r\n let targetPositions = [DocumentPosition.Same, DocumentPosition.Contains];\r\n\r\n if (!nodeContainedByRangeOnly) {\r\n targetPositions.push(DocumentPosition.ContainedBy);\r\n }\r\n\r\n return (\r\n checkPosition(startPosition, targetPositions) || // intersectStart\r\n checkPosition(endPosition, targetPositions) || // intersectEnd\r\n (checkPosition(startPosition, [DocumentPosition.Preceding]) && // Contains\r\n checkPosition(endPosition, [DocumentPosition.Following]) &&\r\n !checkPosition(endPosition, [DocumentPosition.ContainedBy]))\r\n );\r\n}\r\n\r\nfunction checkPosition(position: DocumentPosition, targets: DocumentPosition[]): boolean {\r\n return targets.some(target =>\r\n target == DocumentPosition.Same\r\n ? position == DocumentPosition.Same\r\n : (position & target) == target\r\n );\r\n}\r\n","/**\n * Read a file object and invoke a callback function with the data url of this file\n * @param file The file to read\n * @param callback the callback to invoke with data url of the file.\n * If fail to read, dataUrl will be null\n */\nexport default function readFile(file: File, callback: (dataUrl: string | null) => void) {\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n callback(reader.result as string);\n };\n reader.onerror = () => {\n callback(null);\n };\n reader.readAsDataURL(file);\n }\n}\n","import { TargetWindow } from 'roosterjs-editor-types';\n\n// NOTE: Type TargetWindow is an auto-generated type.\n// Run node ./tools/generateTargetWindow.js to generate it.\n\n/**\n * @internal Export for test only\n * Try get window from the given node or range\n * @param node Source node to get window from\n */\nexport function getTargetWindow(node: Node): T {\n const document =\n node &&\n (node.ownerDocument ||\n (Object.prototype.toString.apply(node) == '[object HTMLDocument]'\n ? node\n : null));\n\n // If document exists but document.defaultView doesn't exist, it is a detached object, just use current window instead\n const targetWindow = document && ((document.defaultView || window) as any);\n return targetWindow as T;\n}\n\n/**\n * Check if the given object is instance of the target type\n * @param obj Object to check\n * @param typeName Target type name\n */\nexport default function safeInstanceOf(\n obj: any,\n typeName: T\n): obj is W[T] {\n if (typeName == 'Range') {\n return (\n Object.prototype.toString.apply(obj) == '[object Range]' &&\n !!(obj)?.commonAncestorContainer\n );\n }\n\n const targetWindow = getTargetWindow(obj);\n const targetType = targetWindow && (targetWindow[typeName] as any);\n const mainWindow = (window as any) as W;\n const mainWindowType = mainWindow && (mainWindow[typeName] as any);\n return (\n (mainWindowType && obj instanceof mainWindowType) ||\n (targetType && obj instanceof targetType)\n );\n}\n","import parseColor from './parseColor';\nimport { DarkColorHandler, ModeIndependentColor } from 'roosterjs-editor-types';\n\nconst WHITE = '#ffffff';\nconst GRAY = '#333333';\nconst BLACK = '#000000';\nconst TRANSPARENT = 'transparent';\nconst enum ColorTones {\n BRIGHT,\n DARK,\n NONE,\n}\n\n//Using the HSL (hue, saturation and lightness) representation for RGB color values, if the value of the lightness is less than 20, the color is dark\nconst DARK_COLORS_LIGHTNESS = 20;\n//If the value of the lightness is more than 80, the color is bright\nconst BRIGHT_COLORS_LIGHTNESS = 80;\n\n/**\n * Set text color or background color to the given element\n * @param element The element to set color to\n * @param color The color to set, it can be a string of color name/value or a ModeIndependentColor object\n * @param isBackgroundColor Whether set background color or text color\n * @param isDarkMode Whether current mode is dark mode. @default false\n * @param shouldAdaptTheFontColor Whether the font color needs to be adapted to be visible in a dark or bright background color. @default false\n * @param darkColorHandler A dark color handler object. This is now required.\n * We keep it optional only for backward compatibility. If it is not passed, color will not be set.\n */\nexport default function setColor(\n element: HTMLElement,\n color: string | ModeIndependentColor,\n isBackgroundColor: boolean,\n isDarkMode?: boolean,\n shouldAdaptTheFontColor?: boolean,\n darkColorHandler?: DarkColorHandler | null\n) {\n const colorString = typeof color === 'string' ? color.trim() : '';\n const modeIndependentColor = typeof color === 'string' ? null : color;\n const cssName = isBackgroundColor ? 'background-color' : 'color';\n\n if (colorString || modeIndependentColor) {\n if (darkColorHandler) {\n const colorValue = darkColorHandler.registerColor(\n modeIndependentColor?.lightModeColor || colorString,\n !!isDarkMode,\n modeIndependentColor?.darkModeColor\n );\n\n element.style.setProperty(cssName, colorValue);\n }\n\n if (isBackgroundColor && shouldAdaptTheFontColor) {\n adaptFontColorToBackgroundColor(\n element,\n modeIndependentColor?.lightModeColor || colorString,\n isDarkMode,\n darkColorHandler\n );\n }\n }\n}\n\n/**\n * Change the font color to white or some other color, so the text can be visible with a darker background\n * @param element The element that contains text.\n * @param lightModeBackgroundColor Existing background color in light mode\n * @param isDarkMode Whether the content is in dark mode\n * @param darkColorHandler A dark color handler object. This is now required.\n * We keep it optional only for backward compatibility. If it is not passed, color will not be set.\n */\nfunction adaptFontColorToBackgroundColor(\n element: HTMLElement,\n lightModeBackgroundColor: string,\n isDarkMode?: boolean,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!lightModeBackgroundColor || lightModeBackgroundColor === TRANSPARENT) {\n return;\n }\n\n const isADarkOrBrightOrNone = isADarkOrBrightColor(lightModeBackgroundColor!);\n\n switch (isADarkOrBrightOrNone) {\n case ColorTones.DARK:\n const fontForDark: ModeIndependentColor = {\n lightModeColor: WHITE,\n darkModeColor: GRAY,\n };\n setColor(\n element,\n fontForDark,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n break;\n case ColorTones.BRIGHT:\n const fontForLight: ModeIndependentColor = {\n lightModeColor: BLACK,\n darkModeColor: WHITE,\n };\n setColor(\n element,\n fontForLight,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n break;\n }\n}\n\nfunction isADarkOrBrightColor(color: string): ColorTones {\n let lightness = calculateLightness(color);\n if (lightness < DARK_COLORS_LIGHTNESS) {\n return ColorTones.DARK;\n } else if (lightness > BRIGHT_COLORS_LIGHTNESS) {\n return ColorTones.BRIGHT;\n }\n\n return ColorTones.NONE;\n}\n\n/**\n * Calculate the lightness of HSL (hue, saturation and lightness) representation\n * @param color a RBG or RGBA COLOR\n * @returns\n */\nfunction calculateLightness(color: string) {\n const colorValues = parseColor(color);\n\n // Use the values of r,g,b to calculate the lightness in the HSl representation\n //First calculate the fraction of the light in each color, since in css the value of r,g,b is in the interval of [0,255], we have\n if (colorValues) {\n const red = colorValues[0] / 255;\n const green = colorValues[1] / 255;\n const blue = colorValues[2] / 255;\n\n //Then the lightness in the HSL representation is the average between maximum fraction of r,g,b and the minimum fraction\n return (Math.max(red, green, blue) + Math.min(red, green, blue)) * 50;\n } else {\n return 255;\n }\n}\n","import getTagOfNode from './getTagOfNode';\r\nimport { getComputedStyle } from './getComputedStyles';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\nconst CRLF = /^[\\r\\n]+$/g;\r\nconst CRLF_SPACE = /[\\t\\r\\n\\u0020\\u200B]/gm; // We should only find new line, real space or ZeroWidthSpace (TAB, %20, but not  )\r\n\r\n/**\r\n * @internal\r\n * Skip a node when any of following conditions are true\r\n * - it is neither Element nor Text\r\n * - it is a text node but is empty\r\n * - it is a text node but contains just CRLF (noisy text node that often comes in-between elements)\r\n * - has a display:none\r\n * - it is just
                \r\n * @param node The node to check\r\n * @param ignoreSpace (Optional) True to ignore pure space text node of the node when check.\r\n * If the value of a node value is only space, set this to true will treat this node can be skipped.\r\n * Default value is false\r\n */\r\nexport default function shouldSkipNode(node: Node, ignoreSpace?: boolean): boolean {\r\n if (node.nodeType == NodeType.Text) {\r\n if (!node.nodeValue || node.textContent == '' || CRLF.test(node.nodeValue)) {\r\n return true;\r\n } else if (ignoreSpace && node.nodeValue.replace(CRLF_SPACE, '') == '') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else if (node.nodeType == NodeType.Element) {\r\n if (getComputedStyle(node, 'display') == 'none') {\r\n return true;\r\n }\r\n\r\n const tag = getTagOfNode(node);\r\n\r\n if (tag == 'DIV' || tag == 'SPAN') {\r\n // Empty SPAN/DIV or SPAN/DIV with only meaningless children is meaningless,\r\n // because it can render nothing. If we keep them here, there may be unexpected\r\n // LI elements added for those meaningless nodes.\r\n for (let child = node.firstChild; !!child; child = child.nextSibling) {\r\n if (!shouldSkipNode(child, ignoreSpace)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else {\r\n // There may still be other cases that the node is not meaningful.\r\n // We can add those cases here once we hit them.\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n}\r\n","import isNodeAfter from './isNodeAfter';\r\n\r\n/**\r\n * Split parent node of the given node before/after the given node.\r\n * When a parent node contains [A,B,C] and pass B as the given node,\r\n * If split before, the new nodes will be [A][B,C] and returns [A];\r\n * otherwise, it will be [A,B][C] and returns [C].\r\n * @param node The node to split before/after\r\n * @param splitBefore Whether split before or after\r\n * @param removeEmptyNewNode If the new node is empty (even then only child is space or ZER_WIDTH_SPACE),\r\n * we remove it. @default false\r\n * @returns The new parent node\r\n */\r\nexport default function splitParentNode(node: Node, splitBefore: boolean): Node | null {\r\n if (!node || !node.parentNode) {\r\n return null;\r\n }\r\n\r\n let parentNode = node.parentNode;\r\n let newParent: HTMLElement | null = parentNode.cloneNode(false /*deep*/) as HTMLElement;\r\n newParent.removeAttribute('id');\r\n if (splitBefore) {\r\n while (parentNode.firstChild && parentNode.firstChild != node) {\r\n newParent.appendChild(parentNode.firstChild);\r\n }\r\n } else {\r\n while (node.nextSibling) {\r\n newParent.appendChild(node.nextSibling);\r\n }\r\n }\r\n\r\n // When the only child of new parent is ZERO_WIDTH_SPACE, we can still prevent keeping it by set removeEmptyNewNode to true\r\n if (newParent.firstChild && newParent.innerHTML != '') {\r\n parentNode.parentNode?.insertBefore(\r\n newParent,\r\n splitBefore ? parentNode : parentNode.nextSibling\r\n );\r\n } else {\r\n newParent = null;\r\n }\r\n\r\n return newParent;\r\n}\r\n\r\n/**\r\n * Split parent node by a balanced node range\r\n * @param nodes The nodes to split from. If only one node is passed, split it from all its siblings.\r\n * If two or nodes are passed, will split before the first one and after the last one, all other nodes will be ignored\r\n * @returns The parent node of the given node range if the given nodes are balanced, otherwise null\r\n */\r\nexport function splitBalancedNodeRange(nodes: Node | Node[]): Node | null {\r\n let start = Array.isArray(nodes) ? nodes[0] : nodes;\r\n let end = Array.isArray(nodes) ? nodes[nodes.length - 1] : nodes;\r\n const parentNode = start && end && start.parentNode == end.parentNode ? start.parentNode : null;\r\n if (parentNode) {\r\n if (isNodeAfter(start, end)) {\r\n let temp = end;\r\n end = start;\r\n start = temp;\r\n }\r\n splitParentNode(start, true /*splitBefore*/);\r\n splitParentNode(end, false /*splitBefore*/);\r\n }\r\n\r\n return parentNode;\r\n}\r\n","/**\r\n * Split a text node into two parts by an offset number, and return one of them\r\n * @param textNode The text node to split\r\n * @param offset The offset number to split at\r\n * @param returnFirstPart True to return the first part, then the passed in textNode will become the second part.\r\n * Otherwise return the second part, and the passed in textNode will become the first part\r\n */\r\nexport default function splitTextNode(textNode: Text, offset: number, returnFirstPart: boolean) {\r\n const firstPart = textNode.nodeValue?.substring(0, offset) || '';\r\n const secondPart = textNode.nodeValue?.substring(offset) || '';\r\n const newNode = textNode.ownerDocument.createTextNode(returnFirstPart ? firstPart : secondPart);\r\n textNode.nodeValue = returnFirstPart ? secondPart : firstPart;\r\n textNode.parentNode?.insertBefore(newNode, returnFirstPart ? textNode : textNode.nextSibling);\r\n return newNode;\r\n}\r\n","/**\r\n * Removes the node and keep all children in place, return the parentNode where the children are attached\r\n * @param node the node to remove\r\n */\r\nexport default function unwrap(node: Node): Node | null {\r\n // Unwrap requires a parentNode\r\n let parentNode = node ? node.parentNode : null;\r\n if (!parentNode) {\r\n return null;\r\n }\r\n\r\n while (node.firstChild) {\r\n parentNode.insertBefore(node.firstChild, node);\r\n }\r\n\r\n parentNode.removeChild(node);\r\n return parentNode;\r\n}\r\n","import createElement from './createElement';\r\nimport fromHtml from './fromHtml';\r\nimport safeInstanceOf from './safeInstanceOf';\r\nimport { CreateElementData, KnownCreateElementDataIndex } from 'roosterjs-editor-types';\r\nimport type { CompatibleKnownCreateElementDataIndex } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Wrap all the node with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML tag name\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?: T\r\n): HTMLElementTagNameMap[T];\r\n\r\n/**\r\n * @deprecated\r\n * Wrap all the nodes with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML string, default value is DIV\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(nodes: Node | Node[], wrapper?: string): HTMLElement;\r\n\r\n/**\r\n * Wrap all the nodes with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML element, default value is a new DIV element\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(nodes: Node | Node[], wrapper?: HTMLElement): HTMLElement;\r\n\r\n/**\r\n * Wraps all the nodes with CreateElementData or an index of a known CreateElementData\r\n * @param nodes The nodes to wrap\r\n * @param wrapper The CreateElementData or an index of a known CreateElementData\r\n */\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?:\r\n | CreateElementData\r\n | KnownCreateElementDataIndex\r\n | CompatibleKnownCreateElementDataIndex\r\n): HTMLElement;\r\n\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?:\r\n | string\r\n | HTMLElement\r\n | CreateElementData\r\n | KnownCreateElementDataIndex\r\n | CompatibleKnownCreateElementDataIndex\r\n): HTMLElement | null {\r\n nodes = !nodes ? [] : safeInstanceOf(nodes, 'Node') ? [nodes] : nodes;\r\n if (nodes.length == 0 || !nodes[0] || !nodes[0].ownerDocument) {\r\n return null;\r\n }\r\n\r\n if (!wrapper) {\r\n wrapper = 'div';\r\n }\r\n\r\n if (!safeInstanceOf(wrapper, 'HTMLElement')) {\r\n let document = nodes[0].ownerDocument;\r\n\r\n if (typeof wrapper === 'string') {\r\n wrapper = /^\\w+$/.test(wrapper)\r\n ? document.createElement(wrapper)\r\n : (fromHtml(wrapper, document)[0] as HTMLElement); // This will be removed in next major release\r\n } else {\r\n wrapper = createElement(wrapper, document) as HTMLElement;\r\n }\r\n }\r\n\r\n let parentNode = nodes[0].parentNode;\r\n\r\n if (parentNode) {\r\n parentNode.insertBefore(wrapper, nodes[0]);\r\n }\r\n\r\n for (let node of nodes) {\r\n wrapper.appendChild(node);\r\n }\r\n\r\n return wrapper;\r\n}\r\n","export * from './plugins/AutoFormat/index';\n","export * from './plugins/ContentEdit/index';\n","export * from './plugins/ContextMenu/index';\n","export * from './plugins/CustomReplace/index';\n","export * from './plugins/CutPasteListChain/index';\n","export * from './plugins/HyperLink/index';\n","export * from './plugins/ImageEdit/index';\n","export * from './plugins/ImageResize/index';\n","export * from './plugins/Paste/index';\n","export * from './plugins/Picker/index';\n","export * from './plugins/TableCellSelection/index';\n","export * from './plugins/TableResize/index';\n","export * from './plugins/Watermark/index';\n","export * from './ContentEdit';\r\nexport * from './ContextMenu';\r\nexport * from './CustomReplace';\r\nexport * from './CutPasteListChain';\r\nexport * from './HyperLink';\r\nexport * from './ImageEdit';\r\nexport * from './ImageResize';\r\nexport * from './Paste';\r\nexport * from './Picker';\r\nexport * from './TableResize';\r\nexport * from './Watermark';\r\nexport * from './TableCellSelection';\r\nexport * from './AutoFormat';\r\n","import Disposable from './Disposable';\nimport DragAndDropHandler from './DragAndDropHandler';\nimport { Browser } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\ninterface MouseEventMoves {\n MOUSEDOWN: string;\n MOUSEMOVE: string;\n MOUSEUP: string;\n}\n\n/**\n * @internal\n */\ninterface MouseEventInfo extends MouseEventMoves {\n getPageXY: (e: MouseEvent) => number[];\n}\n\n/**\n * @internal\n * Compatible mouse event names for different platform\n */\ninterface TouchEventInfo extends MouseEventMoves {\n getPageXY: (e: TouchEvent) => number[];\n}\n\n/**\n * Generate event names and getXY function based on different platforms to be compatible with desktop and mobile browsers\n */\nconst MOUSE_EVENT_INFO_DESKTOP: MouseEventInfo = (() => {\n return {\n MOUSEDOWN: 'mousedown',\n MOUSEMOVE: 'mousemove',\n MOUSEUP: 'mouseup',\n getPageXY: getMouseEventPageXY,\n };\n})();\n\nconst MOUSE_EVENT_INFO_MOBILE: TouchEventInfo = (() => {\n return {\n MOUSEDOWN: 'touchstart',\n MOUSEMOVE: 'touchmove',\n MOUSEUP: 'touchend',\n getPageXY: getTouchEventPageXY,\n };\n})();\n\nfunction getMouseEventPageXY(e: MouseEvent): [number, number] {\n return [e.pageX, e.pageY];\n}\n\nfunction getTouchEventPageXY(e: TouchEvent): [number, number] {\n let pageX = 0;\n let pageY = 0;\n if (e.targetTouches && e.targetTouches.length > 0) {\n const touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n }\n return [pageX, pageY];\n}\n\n/**\n * @internal\n * A helper class to help manage drag and drop to an HTML element\n */\nexport default class DragAndDropHelper implements Disposable {\n private initX: number = 0;\n private initY: number = 0;\n private initValue: TInitValue | undefined = undefined;\n private dndMouse: MouseEventInfo | TouchEventInfo;\n\n /**\n * Create a new instance of DragAndDropHelper class\n * @param trigger The trigger element. When user start drag on this element,\n * events will be fired to the handler object\n * @param context Context object that will be passed to handler function when event is fired,\n * so that the handler object knows which element it is triggered from.\n * @param onSubmit A callback that will be invoked when event handler in handler object returns true\n * @param handler The event handler object, see DragAndDropHandler interface for more information\n * @param zoomScale The zoom scale of the editor\n * @param forceMobile A boolean to force the use of touch controls for the helper\n */\n constructor(\n private trigger: HTMLElement,\n private context: TContext,\n private onSubmit: (context: TContext, trigger: HTMLElement) => void,\n private handler: DragAndDropHandler,\n private zoomScale: number,\n forceMobile?: boolean\n ) {\n this.dndMouse =\n forceMobile || Browser.isMobileOrTablet\n ? MOUSE_EVENT_INFO_MOBILE\n : MOUSE_EVENT_INFO_DESKTOP;\n trigger.addEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);\n }\n\n /**\n * Dispose this object, remove all event listeners that has been attached\n */\n dispose() {\n this.trigger.removeEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);\n this.removeDocumentEvents();\n }\n\n public get mouseType(): string {\n return this.dndMouse == MOUSE_EVENT_INFO_MOBILE ? 'touch' : 'mouse';\n }\n\n private addDocumentEvents() {\n const doc = this.trigger.ownerDocument;\n doc.addEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);\n doc.addEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);\n }\n\n private removeDocumentEvents() {\n const doc = this.trigger.ownerDocument;\n doc.removeEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);\n doc.removeEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);\n }\n\n private onMouseDown = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n this.addDocumentEvents();\n [this.initX, this.initY] = this.dndMouse.getPageXY(e as MouseEvent & TouchEvent);\n this.initValue = this.handler.onDragStart?.(this.context, e as MouseEvent);\n };\n\n private onMouseMove = (e: Event) => {\n e.preventDefault();\n const [pageX, pageY] = this.dndMouse.getPageXY(e as MouseEvent & TouchEvent);\n const deltaX = (pageX - this.initX) / this.zoomScale;\n const deltaY = (pageY - this.initY) / this.zoomScale;\n if (\n this.initValue &&\n this.handler.onDragging?.(this.context, e as MouseEvent, this.initValue, deltaX, deltaY)\n ) {\n this.onSubmit?.(this.context, this.trigger);\n }\n };\n\n private onMouseUp = (e: Event) => {\n e.preventDefault();\n this.removeDocumentEvents();\n if (this.handler.onDragEnd?.(this.context, e as MouseEvent, this.initValue)) {\n this.onSubmit?.(this.context, this.trigger);\n }\n };\n}\n","import {\n ChangeSource,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst specialCharacters = /[`!@#$%^&*()_+\\=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\n\n/**\n * Automatically transform -- into hyphen, if typed between two words.\n */\nexport default class AutoFormat implements EditorPlugin {\n private editor: IEditor | null = null;\n private lastKeyTyped: string | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'AutoFormat';\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 this.lastKeyTyped = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n if (\n event.eventType === PluginEventType.ContentChanged ||\n event.eventType === PluginEventType.MouseDown ||\n event.eventType === PluginEventType.MouseUp\n ) {\n this.lastKeyTyped = '';\n }\n\n if (event.eventType === PluginEventType.KeyPress) {\n const keyTyped = event.rawEvent.key;\n\n if (keyTyped && keyTyped.length > 1) {\n this.lastKeyTyped = '';\n }\n\n if (\n this.lastKeyTyped === '-' &&\n !specialCharacters.test(keyTyped) &&\n keyTyped !== ' ' &&\n keyTyped !== '-'\n ) {\n const searcher = this.editor.getContentSearcherOfCursor(event);\n const textBeforeCursor = searcher?.getSubStringBefore(3);\n const dashes = searcher?.getSubStringBefore(2);\n const isPrecededByADash = textBeforeCursor?.[0] === '-';\n const isPrecededByASpace = textBeforeCursor?.[0] === ' ';\n if (\n isPrecededByADash ||\n isPrecededByASpace ||\n (typeof textBeforeCursor === 'string' &&\n specialCharacters.test(textBeforeCursor[0])) ||\n dashes !== '--'\n ) {\n return;\n }\n\n const textRange = searcher?.getRangeFromText(dashes, true /* exactMatch */);\n const nodeHyphen = document.createTextNode('—');\n this.editor.addUndoSnapshot(\n () => {\n if (textRange) {\n textRange.deleteContents();\n textRange.insertNode(nodeHyphen);\n this.editor!.select(nodeHyphen, PositionType.End);\n }\n },\n ChangeSource.Format /*changeSource*/,\n true /*canUndoByBackspace*/,\n { formatApiName: 'autoHyphen' }\n );\n\n //After the substitution the last key typed needs to be cleaned\n this.lastKeyTyped = null;\n } else {\n this.lastKeyTyped = keyTyped;\n }\n }\n }\n}\n","export { default as AutoFormat } from './AutoFormat';\n","import getAllFeatures from './getAllFeatures';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n ContentEditFeatureSettings,\n EditorPlugin,\n GenericContentEditFeature,\n IEditor,\n PluginEvent,\n} from 'roosterjs-editor-types';\n\n/**\n * An editor plugin to handle content edit event.\n * The following cases are included:\n * 1. Auto increase/decrease indentation on Tab, Shift+tab\n * 2. Enter, Backspace on empty list item\n * 3. Enter, Backspace on empty blockquote line\n * 4. Auto bullet/numbering\n * 5. Auto link\n * 6. Tab in table\n * 7. Up/Down in table\n * 8. Manage list style\n */\nexport default class ContentEdit implements EditorPlugin {\n private editor: IEditor | undefined = undefined;\n private features: GenericContentEditFeature[] = [];\n /**\n * Create instance of ContentEdit plugin\n * @param settingsOverride An optional feature set to override default feature settings\n * @param additionalFeatures Optional. More features to add\n */\n constructor(\n private settingsOverride?: Partial,\n private additionalFeatures?: GenericContentEditFeature[]\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContentEdit';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor): void {\n this.editor = editor;\n const allFeatures = getAllFeatures();\n getObjectKeys(allFeatures).forEach(key => {\n const feature = allFeatures[key];\n const hasSettingForKey =\n this.settingsOverride && this.settingsOverride[key] !== undefined;\n\n if (\n (hasSettingForKey && this.settingsOverride?.[key]) ||\n (!hasSettingForKey && !feature.defaultDisabled)\n ) {\n this.features.push(feature);\n }\n });\n this.features = this.features.concat(this.additionalFeatures || []);\n this.features.forEach(feature => this.editor?.addContentEditFeature(feature));\n }\n\n private disposeFeatures() {\n if (this.editor) {\n this.features.forEach(feature => this.editor!.removeContentEditFeature(feature));\n }\n this.features = [];\n }\n\n /**\n * Dispose this plugin\n */\n dispose(): void {\n this.disposeFeatures();\n this.editor = undefined;\n }\n}\n","import { removeLink, replaceWithNode } from 'roosterjs-editor-api';\nimport {\n AutoLinkFeatureSettings,\n BuildInEditFeature,\n ChangeSource,\n ClipboardData,\n IEditor,\n Keys,\n LinkData,\n PluginEvent,\n PluginEventType,\n PluginKeyboardEvent,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n clearEventDataCache,\n LinkInlineElement,\n matchLink,\n} from 'roosterjs-editor-dom';\n\n/**\n * When user type, they may end a link with a punctuation, i.e. www.bing.com;\n * we need to trim off the trailing punctuation before turning it to link match\n */\nconst TRAILING_PUNCTUATION_REGEX = /[.+=\\s:;\"',>]+$/i;\nconst MINIMUM_LENGTH = 5;\n\n/**\n * AutoLink edit feature, provides the ability to automatically convert text user typed or pasted\n * in hyperlink format into a real hyperlink\n */\nconst AutoLink: BuildInEditFeature = {\n keys: [Keys.ENTER, Keys.SPACE, Keys.CONTENTCHANGED],\n shouldHandleEvent: cacheGetLinkData,\n handleEvent: autoLink,\n};\n\n/**\n * UnlinkWhenBackspaceAfterLink edit feature, provides the ability to convert a hyperlink back into text\n * if user presses BACKSPACE right after a hyperlink\n */\nconst UnlinkWhenBackspaceAfterLink: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: hasLinkBeforeCursor,\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n removeLink(editor);\n },\n defaultDisabled: true,\n};\n\nfunction cacheGetLinkData(event: PluginEvent, editor: IEditor): LinkData | null {\n return event.eventType == PluginEventType.KeyDown ||\n (event.eventType == PluginEventType.ContentChanged && event.source == ChangeSource.Paste)\n ? cacheGetEventData(event, 'LINK_DATA', () => {\n // First try to match link from the whole paste string from the plain text in clipboard.\n // This helps when we paste a link next to some existing character, and the text we got\n // from clipboard will only contain what we pasted, any existing characters will not\n // be included.\n let clipboardData =\n (event.eventType == PluginEventType.ContentChanged &&\n event.source == ChangeSource.Paste &&\n (event.data as ClipboardData)) ||\n null;\n let link = matchLink((clipboardData?.text || '').trim());\n let searcher = editor.getContentSearcherOfCursor(event);\n\n // In case the matched link is already inside a
                tag, we do a range search.\n // getRangeFromText will return null if the given text is already in a LinkInlineElement\n if (link && searcher?.getRangeFromText(link.originalUrl, false /*exactMatch*/)) {\n return link;\n }\n\n let word = searcher && searcher.getWordBefore();\n if (word && word.length > MINIMUM_LENGTH) {\n // Check for trailing punctuation\n let trailingPunctuations = word.match(TRAILING_PUNCTUATION_REGEX);\n let trailingPunctuation = (trailingPunctuations || [])[0] || '';\n let candidate = word.substring(0, word.length - trailingPunctuation.length);\n\n // Do special handling for ')', '}', ']'\n ['()', '{}', '[]'].forEach(str => {\n if (\n candidate[candidate.length - 1] == str[1] &&\n candidate.indexOf(str[0]) < 0\n ) {\n candidate = candidate.substr(0, candidate.length - 1);\n }\n });\n\n // Match and replace in editor\n return matchLink(candidate);\n }\n return null;\n })\n : null;\n}\n\nfunction hasLinkBeforeCursor(event: PluginKeyboardEvent, editor: IEditor): boolean {\n let contentSearcher = editor.getContentSearcherOfCursor(event);\n let inline = contentSearcher?.getInlineElementBefore();\n return inline instanceof LinkInlineElement;\n}\n\nfunction autoLink(event: PluginEvent, editor: IEditor) {\n const linkData = cacheGetLinkData(event, editor);\n if (!linkData) {\n return;\n }\n let anchor = editor.getDocument().createElement('a');\n // Need to get searcher before we enter the async callback since the callback can happen when cursor is moved to next line\n // and at that time a new searcher won't be able to find the link text to replace\n let searcher = editor.getContentSearcherOfCursor();\n anchor.textContent = linkData.originalUrl;\n anchor.href = linkData.normalizedUrl;\n\n editor.runAsync(editor => {\n editor.addUndoSnapshot(\n () => {\n replaceWithNode(\n editor,\n linkData.originalUrl,\n anchor,\n false /* exactMatch */,\n searcher ?? undefined\n );\n\n // The content at cursor has changed. Should also clear the cursor data cache\n clearEventDataCache(event);\n return anchor;\n },\n ChangeSource.AutoLink,\n true /*canUndoByBackspace*/\n );\n });\n}\n\n/**\n * @internal\n */\nexport const AutoLinkFeatures: Record<\n keyof AutoLinkFeatureSettings,\n BuildInEditFeature\n> = {\n autoLink: AutoLink,\n unlinkWhenBackspaceAfterLink: UnlinkWhenBackspaceAfterLink as BuildInEditFeature,\n};\n","import {\n isNodeEmpty,\n cacheGetEventData,\n safeInstanceOf,\n splitBalancedNodeRange,\n unwrap,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n PluginKeyboardEvent,\n Keys,\n IEditor,\n PositionType,\n CodeFeatureSettings,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst RemoveCodeWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n const childOfCode = cacheGetCodeChild(event, editor);\n return childOfCode && isNodeEmpty(childOfCode);\n },\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n splitCode(event, editor);\n },\n undefined /* changeSource */,\n true /* canUndoByBackspace */\n );\n },\n};\n\nconst RemoveCodeWhenBackspaceOnEmptyFirstLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n const childOfCode = cacheGetCodeChild(event, editor);\n return childOfCode && isNodeEmpty(childOfCode) && !childOfCode.previousSibling;\n },\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(() => splitCode(event, editor));\n },\n};\n\nfunction cacheGetCodeChild(event: PluginKeyboardEvent, editor: IEditor): Node | null {\n return cacheGetEventData(event, 'CODE_CHILD', () => {\n const codeElement =\n editor.getElementAtCursor('code') ??\n editor.queryElements('code', QueryScope.OnSelection)[0];\n if (codeElement) {\n const pos = editor.getFocusedPosition();\n const block = pos && editor.getBlockElementAtNode(pos.normalize().node);\n if (block) {\n const node =\n block.getStartNode() == codeElement.parentNode\n ? block.getStartNode()\n : block.collapseToSingleElement();\n return isNodeEmpty(node) ? node : null;\n }\n }\n\n return null;\n });\n}\n\nfunction splitCode(event: PluginKeyboardEvent, editor: IEditor) {\n const currentContainer = cacheGetCodeChild(event, editor);\n if (!safeInstanceOf(currentContainer, 'HTMLElement')) {\n return;\n }\n const codeChild = currentContainer.querySelector('code');\n if (!codeChild) {\n const codeParent = splitBalancedNodeRange(currentContainer);\n if (codeParent) {\n unwrap(codeParent);\n }\n if (safeInstanceOf(currentContainer.parentElement, 'HTMLPreElement')) {\n const preParent = splitBalancedNodeRange(currentContainer);\n if (preParent) {\n unwrap(preParent);\n }\n }\n } else {\n //Content model\n unwrap(codeChild);\n }\n editor.select(currentContainer, PositionType.Begin);\n}\n\nexport const CodeFeatures: Record<\n keyof CodeFeatureSettings,\n BuildInEditFeature\n> = {\n removeCodeWhenEnterOnEmptyLine: RemoveCodeWhenEnterOnEmptyLine,\n removeCodeWhenBackspaceOnEmptyFirstLine: RemoveCodeWhenBackspaceOnEmptyFirstLine,\n};\n","import { Browser, getComputedStyle, Position } from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n CursorFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n} from 'roosterjs-editor-types';\n\nconst NoCycleCursorMove: BuildInEditFeature = {\n keys: [Keys.LEFT, Keys.RIGHT],\n allowFunctionKeys: true,\n shouldHandleEvent: (event, editor, ctrlOrMeta) => {\n let range: Range | null = null;\n let position: Position;\n\n if (\n !ctrlOrMeta ||\n !(range = editor.getSelectionRange()) ||\n !range.collapsed ||\n !(position = Position.getStart(range)) ||\n !editor.isPositionAtBeginning(position)\n ) {\n return false;\n }\n\n let rtl = getComputedStyle(position.element, 'direction') == 'rtl';\n let rawEvent = event.rawEvent;\n\n return (!rtl && rawEvent.which == Keys.LEFT) || (rtl && rawEvent.which == Keys.RIGHT);\n },\n handleEvent: event => {\n event.rawEvent.preventDefault();\n },\n defaultDisabled: !Browser.isChrome,\n};\n\n/**\n * @internal\n */\nexport const CursorFeatures: Record<\n keyof CursorFeatureSettings,\n BuildInEditFeature\n> = {\n noCycleCursorMove: NoCycleCursorMove,\n};\n","import { ContentTraverser } from 'roosterjs-editor-dom';\nimport {\n addDelimiters,\n cacheGetEventData,\n createRange,\n getComputedStyle,\n getDelimiterFromElement,\n getEntityFromElement,\n getEntitySelector,\n isBlockElement,\n matchesSelector,\n Position,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n EntityFeatureSettings,\n EntityOperation,\n IEditor,\n Keys,\n PluginKeyboardEvent,\n PositionType,\n PluginEventType,\n DelimiterClasses,\n PluginEvent,\n NodeType,\n ExperimentalFeatures,\n Entity,\n IContentTraverser,\n InlineElement,\n} from 'roosterjs-editor-types';\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"Click\" when user\n * clicks on a readonly entity.\n */\nconst ClickOnEntityFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => cacheGetReadonlyEntityElement(event, editor),\n handleEvent: (event, editor) => {\n cacheGetReadonlyEntityElement(event, editor, EntityOperation.Click);\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"Escape\" when user\n * presses ESC on a readonly entity.\n */\nconst EscapeFromEntityFeature: BuildInEditFeature = {\n keys: [Keys.ESCAPE],\n shouldHandleEvent: (event, editor) => cacheGetReadonlyEntityElement(event, editor),\n handleEvent: (event, editor) => {\n cacheGetReadonlyEntityElement(event, editor, EntityOperation.Escape);\n },\n};\n\nfunction cacheGetReadonlyEntityElement(\n event: PluginKeyboardEvent,\n editor: IEditor,\n operation?: EntityOperation\n) {\n const element = cacheGetEventData(event, 'READONLY_ENTITY_ELEMENT', () => {\n const node = event.rawEvent.target as Node;\n const entityElement = node && editor.getElementAtCursor(getEntitySelector(), node);\n return entityElement && !entityElement.isContentEditable ? entityElement : null;\n });\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n if (entity) {\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent: event.rawEvent,\n entity,\n });\n }\n }\n\n return element;\n}\n\n/**\n * A content edit feature to split current line into two lines at the cursor when user presses\n * ENTER right before a readonly entity.\n * Browser's default behavior will insert an extra BR tag before the entity which causes an extra\n * empty line. So we override the default behavior here.\n */\nconst EnterBeforeReadonlyEntityFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, true /*isNext*/, false /*collapseOnly*/),\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n\n const range = editor.getSelectionRange();\n if (!range) {\n return;\n }\n\n const node = Position.getEnd(range).normalize().node;\n const br = editor.getDocument().createElement('BR');\n node.parentNode?.insertBefore(br, node.nextSibling);\n\n const block = editor.getBlockElementAtNode(node);\n let newContainer: HTMLElement | undefined;\n\n if (block) {\n newContainer = block.collapseToSingleElement();\n br.parentNode?.removeChild(br);\n }\n\n editor.getSelectionRange()?.deleteContents();\n\n if (newContainer?.nextSibling) {\n editor.select(newContainer.nextSibling, PositionType.Begin);\n }\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"RemoveFromEnd\" when user\n * press BACKSPACE right after an entity\n */\nconst BackspaceAfterEntityFeature: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, false /*isNext*/, true /*collapseOnly*/),\n handleEvent: (event, editor) => {\n cacheGetNeighborEntityElement(\n event,\n editor,\n false /*isNext*/,\n true /*collapseOnly*/,\n EntityOperation.RemoveFromEnd\n );\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"RemoveFromStart\" when user\n * press DELETE right after an entity\n */\nconst DeleteBeforeEntityFeature: BuildInEditFeature = {\n keys: [Keys.DELETE],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, true /*isNext*/, true /*collapseOnly*/),\n handleEvent: (event, editor) => {\n cacheGetNeighborEntityElement(\n event,\n editor,\n true /*isNext*/,\n true /*collapseOnly*/,\n EntityOperation.RemoveFromStart\n );\n },\n};\n\nfunction cacheGetNeighborEntityElement(\n event: PluginKeyboardEvent,\n editor: IEditor,\n isNext: boolean,\n collapseOnly: boolean,\n operation?: EntityOperation\n): HTMLElement | null {\n const element = cacheGetEventData(\n event,\n 'NEIGHBOR_ENTITY_ELEMENT_' + isNext + '_' + collapseOnly,\n () => {\n const range = editor.getSelectionRange();\n\n if (!range || (collapseOnly && !range.collapsed)) {\n return null;\n }\n\n const regions = editor.getSelectedRegions();\n const regionRoot = regions[0]?.rootNode;\n\n range.commonAncestorContainer.normalize();\n const pos = Position.getEnd(range).normalize();\n const isAtBeginOrEnd = pos.offset == 0 || pos.isAtEnd;\n let entityNode: HTMLElement | null = null;\n\n if (isAtBeginOrEnd && regionRoot) {\n const traverser = ContentTraverser.createBodyTraverser(regionRoot, pos.node);\n const sibling = isNext\n ? pos.offset == 0\n ? traverser.currentInlineElement\n : traverser.getNextInlineElement()\n : pos.isAtEnd\n ? traverser.currentInlineElement\n : traverser.getPreviousInlineElement();\n let node = sibling && sibling.getContainerNode();\n\n if (!collapseOnly) {\n const block = editor.getBlockElementAtNode(pos.node);\n if (!block || (node && !block.contains(node))) {\n node = null;\n }\n }\n\n entityNode = node && editor.getElementAtCursor(getEntitySelector(), node);\n }\n\n return entityNode;\n }\n );\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n if (entity) {\n triggerOperation(entity, editor, operation, event);\n }\n }\n\n return element;\n}\n\n/**\n * @requires ExperimentalFeatures.InlineEntityReadOnlyDelimiters to be enabled\n * Content edit feature to move the cursor from Delimiters around Entities when using Right or Left Arrow Keys\n */\nconst MoveBetweenDelimitersFeature: BuildInEditFeature = {\n keys: [Keys.RIGHT, Keys.LEFT],\n allowFunctionKeys: true,\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) => {\n if (\n event.rawEvent.altKey ||\n !editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n return false;\n }\n\n const element = editor.getElementAtCursor();\n if (!element) {\n return false;\n }\n\n const isRTL = getComputedStyle(element, 'direction') === 'rtl';\n const shouldCheckBefore = isRTL == (event.rawEvent.which === Keys.LEFT);\n\n return getIsDelimiterAtCursor(event, editor, shouldCheckBefore);\n },\n handleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n const checkBefore = cacheGetCheckBefore(event);\n const delimiter = cacheDelimiter(event, checkBefore);\n\n if (!delimiter) {\n return;\n }\n\n const { delimiterPair, entity } = getRelatedElements(delimiter, checkBefore, editor);\n\n if (delimiterPair && entity && matchesSelector(entity, getEntitySelector())) {\n event.rawEvent.preventDefault();\n editor.runAsync(() => {\n const positionType = checkBefore\n ? event.rawEvent.shiftKey\n ? PositionType.After\n : PositionType.End\n : PositionType.Before;\n const position = new Position(delimiterPair, positionType);\n if (event.rawEvent.shiftKey) {\n const selection = delimiterPair.ownerDocument.getSelection();\n selection?.extend(position.node, position.offset);\n } else {\n editor.select(position);\n }\n });\n }\n },\n};\n\n/**\n * @requires ExperimentalFeatures.InlineEntityReadOnlyDelimiters to be enabled\n * Content edit Feature to trigger a Delete Entity Operation when one of the Delimiter is about to be removed with DELETE or Backspace\n */\nconst RemoveEntityBetweenDelimitersFeature: BuildInEditFeature = {\n keys: [Keys.BACKSPACE, Keys.DELETE],\n shouldHandleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n if (!editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)) {\n return false;\n }\n\n const range = editor.getSelectionRange();\n if (!range?.collapsed) {\n return false;\n }\n const checkBefore = event.rawEvent.which === Keys.DELETE;\n const isDelimiter = getIsDelimiterAtCursor(event, editor, checkBefore);\n\n if (isDelimiter) {\n const delimiter = cacheDelimiter(event, checkBefore);\n const entityElement = checkBefore\n ? delimiter?.nextElementSibling\n : delimiter?.previousElementSibling;\n\n return !!cacheEntityBetweenDelimiter(event, editor, checkBefore, entityElement);\n }\n\n return false;\n },\n handleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n const checkBefore = event.rawEvent.which === Keys.DELETE;\n cacheEntityBetweenDelimiter(\n event,\n editor,\n checkBefore,\n null,\n checkBefore ? EntityOperation.RemoveFromStart : EntityOperation.RemoveFromEnd\n );\n },\n};\n\nfunction getIsDelimiterAtCursor(event: PluginKeyboardEvent, editor: IEditor, checkBefore: boolean) {\n const position = editor.getFocusedPosition()?.normalize();\n cacheGetCheckBefore(event, checkBefore);\n\n if (!position) {\n return false;\n }\n\n const focusedElement =\n position.node.nodeType == NodeType.Text\n ? position.node\n : position.node == position.element\n ? position.element.childNodes.item(position.offset)\n : position.element;\n\n const data = checkBefore\n ? {\n class: DelimiterClasses.DELIMITER_BEFORE,\n pairClass: DelimiterClasses.DELIMITER_AFTER,\n isAtEndOrBeginning: position.isAtEnd,\n }\n : {\n class: DelimiterClasses.DELIMITER_AFTER,\n pairClass: DelimiterClasses.DELIMITER_BEFORE,\n isAtEndOrBeginning: position.offset == 0,\n };\n\n const sibling = getNextSibling(editor, focusedElement, checkBefore);\n if (data.isAtEndOrBeginning && sibling) {\n const elAtCursor = editor.getElementAtCursor('.' + data.class, sibling);\n\n if (elAtCursor && !!shouldHandle(elAtCursor)) {\n return true;\n }\n }\n\n const entityAtCursor =\n focusedElement && editor.getElementAtCursor('.' + data.class, focusedElement);\n return !!shouldHandle(entityAtCursor);\n\n function shouldHandle(element: HTMLElement | null | undefined) {\n if (!element) {\n return false;\n }\n\n const { delimiterPair } = getRelatedElements(element, checkBefore, editor);\n\n return (\n delimiterPair &&\n (delimiterPair.className || '').indexOf(data.pairClass) > -1 &&\n cacheDelimiter(event, checkBefore, element)\n );\n }\n}\n\nfunction getNextSibling(editor: IEditor, element: Node, checkBefore: boolean) {\n const traverser = getBlockTraverser(editor, element);\n if (!traverser) {\n return undefined;\n }\n\n const traverseFn = (t: IContentTraverser) =>\n checkBefore ? t.getNextInlineElement() : t.getPreviousInlineElement();\n\n let currentInline = traverser.currentInlineElement;\n while (currentInline && currentInline.getContainerNode() === element) {\n currentInline = traverseFn(traverser);\n }\n return currentInline?.getContainerNode();\n}\n\nfunction getBlockTraverser(editor: IEditor, element: Node | null | undefined) {\n if (!element) {\n return undefined;\n }\n const blockElement = editor.getBlockElementAtNode(element)?.getStartNode();\n if (!blockElement || !isBlockElement(blockElement)) {\n return undefined;\n }\n return ContentTraverser.createBodyTraverser(blockElement, element);\n}\n\nfunction cacheDelimiter(event: PluginEvent, checkBefore: boolean, delimiter?: HTMLElement | null) {\n return cacheGetEventData(event, 'delimiter_cache_key_' + checkBefore, () => delimiter);\n}\n\nfunction cacheEntityBetweenDelimiter(\n event: PluginKeyboardEvent,\n editor: IEditor,\n checkBefore: boolean,\n entity?: Element | null,\n operation?: EntityOperation\n) {\n const element = cacheGetEventData(\n event,\n 'entity_delimiter_cache_key_' + checkBefore,\n () => entity && editor.getElementAtCursor(getEntitySelector(), entity)\n );\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n\n if (entity) {\n triggerOperation(entity, editor, operation, event);\n }\n }\n\n return element;\n}\n\nfunction triggerOperation(\n entity: Entity,\n editor: IEditor,\n operation: EntityOperation,\n event: PluginKeyboardEvent\n) {\n const { nextElementSibling, previousElementSibling } = entity.wrapper;\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent: event.rawEvent,\n entity,\n });\n\n if (\n entity.isReadonly &&\n !isBlockElement(entity.wrapper) &&\n editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n if (event.rawEvent.defaultPrevented) {\n editor.runAsync(() => {\n if (!editor.contains(entity.wrapper)) {\n removeDelimiters(nextElementSibling, previousElementSibling);\n } else {\n const [delimiterAfter] = addDelimiters(entity.wrapper);\n if (delimiterAfter) {\n editor.select(delimiterAfter, PositionType.After);\n }\n }\n });\n } else if (\n getDelimiterFromElement(nextElementSibling) &&\n getDelimiterFromElement(previousElementSibling)\n ) {\n editor.select(createRange(previousElementSibling, nextElementSibling));\n }\n }\n}\n\nfunction removeDelimiters(\n nextElementSibling: Element | null,\n previousElementSibling: Element | null\n) {\n [nextElementSibling, previousElementSibling].forEach(sibling => {\n if (getDelimiterFromElement(sibling)) {\n sibling?.parentElement?.removeChild(sibling);\n }\n });\n}\n\nfunction cacheGetCheckBefore(event: PluginKeyboardEvent, checkBefore?: boolean): boolean {\n return !!cacheGetEventData(event, 'Check_Before', () => checkBefore);\n}\n\nfunction getRelatedElements(delimiter: HTMLElement, checkBefore: boolean, editor: IEditor) {\n let entity: Element | null = null;\n let delimiterPair: Element | null = null;\n const traverser = getBlockTraverser(editor, delimiter);\n if (!traverser) {\n return { delimiterPair, entity };\n }\n\n const selector = `.${\n checkBefore ? DelimiterClasses.DELIMITER_AFTER : DelimiterClasses.DELIMITER_BEFORE\n }`;\n const traverseFn = (t: IContentTraverser) =>\n checkBefore ? t.getNextInlineElement() : t.getPreviousInlineElement();\n const getElementFromInline = (element: InlineElement, selector: string) => {\n const node = element?.getContainerNode();\n return (node && editor.getElementAtCursor(selector, node)) ?? null;\n };\n const entitySelector = getEntitySelector();\n\n let current = traverser.currentInlineElement;\n while (current && (!entity || !delimiterPair)) {\n entity = entity || getElementFromInline(current, entitySelector);\n delimiterPair = delimiterPair || getElementFromInline(current, selector);\n\n // If we found the entity but the next inline after the entity is not a delimiter,\n // it means that the delimiter pair got removed or is invalid, return null instead.\n if (entity && !delimiterPair && !getElementFromInline(current, entitySelector)) {\n delimiterPair = null;\n break;\n }\n current = traverseFn(traverser);\n }\n\n return { entity, delimiterPair };\n}\n\n/**\n * @internal\n */\nexport const EntityFeatures: Record<\n keyof EntityFeatureSettings,\n BuildInEditFeature\n> = {\n clickOnEntity: ClickOnEntityFeature,\n escapeFromEntity: EscapeFromEntityFeature,\n enterBeforeReadonlyEntity: EnterBeforeReadonlyEntityFeature,\n backspaceAfterEntity: BackspaceAfterEntityFeature,\n deleteBeforeEntity: DeleteBeforeEntityFeature,\n moveBetweenDelimitersFeature: MoveBetweenDelimitersFeature,\n removeEntityBetweenDelimiters: RemoveEntityBetweenDelimitersFeature,\n};\n","import getAutoBulletListStyle from '../utils/getAutoBulletListStyle';\nimport getAutoNumberingListStyle from '../utils/getAutoNumberingListStyle';\nimport {\n blockFormat,\n commitListChains,\n setIndentation,\n toggleBullet,\n toggleNumbering,\n toggleListType,\n} from 'roosterjs-editor-api';\nimport {\n Browser,\n getTagOfNode,\n isNodeEmpty,\n isPositionAtBeginningOf,\n Position,\n VListChain,\n createVListFromRegion,\n isBlockElement,\n cacheGetEventData,\n safeInstanceOf,\n VList,\n createObjectDefinition,\n createNumberDefinition,\n getMetadata,\n findClosestElementAncestor,\n getComputedStyle,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n IEditor,\n Indentation,\n ListFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n QueryScope,\n RegionBase,\n ListType,\n ExperimentalFeatures,\n PositionType,\n NumberingListType,\n BulletListType,\n IPositionContentSearcher,\n} from 'roosterjs-editor-types';\n\nconst PREVIOUS_BLOCK_CACHE_KEY = 'previousBlock';\nconst NEXT_BLOCK_CACHE_KEY = 'nextBlock';\n\ninterface ListStyleMetadata {\n orderedStyleType?: NumberingListType;\n unorderedStyleType?: BulletListType;\n}\n\nconst ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\nconst shouldHandleIndentationEvent = (indenting: boolean) => (\n event: PluginKeyboardEvent,\n editor: IEditor\n) => {\n const { keyCode, altKey, shiftKey, ctrlKey, metaKey } = event.rawEvent;\n return (\n !ctrlKey &&\n !metaKey &&\n (keyCode === Keys.TAB\n ? !altKey && shiftKey === !indenting\n : shiftKey && altKey && keyCode === (indenting ? Keys.RIGHT : Keys.LEFT)) &&\n cacheGetListElement(event, editor)\n );\n};\n\nconst handleIndentationEvent = (indenting: boolean) => (\n event: PluginKeyboardEvent,\n editor: IEditor\n) => {\n let currentElement: Node | null = null;\n const isRTL =\n event.rawEvent.keyCode !== Keys.TAB &&\n (currentElement = editor.getElementAtCursor()) &&\n getComputedStyle(currentElement, 'direction') == 'rtl';\n setIndentation(editor, isRTL == indenting ? Indentation.Decrease : Indentation.Increase);\n event.rawEvent.preventDefault();\n};\n\n/**\n * IndentWhenTab edit feature, provides the ability to indent current list when user press TAB\n */\nconst IndentWhenTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: shouldHandleIndentationEvent(true),\n handleEvent: handleIndentationEvent(true),\n};\n\n/**\n * OutdentWhenShiftTab edit feature, provides the ability to outdent current list when user press Shift+TAB\n */\nconst OutdentWhenShiftTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: shouldHandleIndentationEvent(false),\n handleEvent: handleIndentationEvent(false),\n allowFunctionKeys: true,\n};\n\n/**\n * indentWhenAltShiftRight edit feature, provides the ability to indent or outdent current list when user press Alt+shift+Right\n */\nconst IndentWhenAltShiftRight: BuildInEditFeature = {\n keys: [Keys.RIGHT],\n shouldHandleEvent: shouldHandleIndentationEvent(true),\n handleEvent: handleIndentationEvent(true),\n allowFunctionKeys: true,\n defaultDisabled: Browser.isMac,\n};\n\n/**\n * outdentWhenAltShiftLeft edit feature, provides the ability to indent or outdent current list when user press Alt+shift+Left\n */\nconst OutdentWhenAltShiftLeft: BuildInEditFeature = {\n keys: [Keys.LEFT],\n shouldHandleEvent: shouldHandleIndentationEvent(false),\n handleEvent: handleIndentationEvent(false),\n allowFunctionKeys: true,\n defaultDisabled: Browser.isMac,\n};\n\n/**\n * MergeInNewLine edit feature, provides the ability to merge current line into a new line when user press\n * BACKSPACE at beginning of a list item\n */\nconst MergeInNewLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n let range = editor.getSelectionRange();\n return li && range?.collapsed && isPositionAtBeginningOf(Position.getStart(range), li);\n },\n handleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n if (li?.previousSibling) {\n blockFormat(editor, (region, start, end) => {\n const vList = createVListFromRegion(\n region,\n false /*includeSiblingList*/,\n li ?? undefined\n );\n if (vList && start && end) {\n vList.setIndentation(start, end, Indentation.Decrease, true /*softOutdent*/);\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n event.rawEvent.preventDefault();\n }\n });\n } else {\n toggleListAndPreventDefault(event, editor);\n }\n },\n defaultDisabled: true,\n};\n\n/**\n * OutdentWhenBackOn1stEmptyLine edit feature, provides the ability to outdent current item if user press\n * BACKSPACE at the first and empty line of a list\n */\nconst OutdentWhenBackOn1stEmptyLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n return (\n li &&\n isNodeEmpty(li) &&\n !li.previousSibling &&\n !li.getElementsByTagName('blockquote').length\n );\n },\n handleEvent: toggleListAndPreventDefault,\n};\n\n/**\n * MaintainListChainWhenDelete edit feature, provides the ability to indent the list if user press\n * DELETE before the first item of a list\n */\nconst MaintainListChainWhenDelete: BuildInEditFeature = {\n keys: [Keys.DELETE],\n shouldHandleEvent: (event, editor) => {\n const li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n const range = editor.getSelectionRange();\n if (li || !range) {\n return false;\n }\n const isAtEnd = Position.getEnd(range).isAtEnd;\n const nextSibling = isAtEnd ? getCacheNextSibling(event, editor) : undefined;\n const isAtEndAndBeforeLI = editor.getElementAtCursor('LI', nextSibling, event);\n return isAtEndAndBeforeLI;\n },\n handleEvent: (event, editor) => {\n const chains = getListChains(editor);\n editor.runAsync(editor => commitListChains(editor, chains));\n },\n};\n\n/**\n * OutdentWhenEnterOnEmptyLine edit feature, provides the ability to outdent current item if user press\n * ENTER at the beginning of an empty line of a list\n */\nconst OutdentWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n return !event.rawEvent.shiftKey && li && isNodeEmpty(li);\n },\n handleEvent: (event, editor) => {\n editor.addUndoSnapshot(\n () => toggleListAndPreventDefault(event, editor, false /* includeSiblingLists */),\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n defaultDisabled: !Browser.isIE && !Browser.isChrome,\n};\n\n/**\n * Validate if a block of text is considered a list pattern\n * The regex expression will look for patterns of the form:\n * 1. 1> 1) 1- (1)\n * @returns if a text is considered a list pattern\n */\nfunction isAListPattern(textBeforeCursor: string) {\n const REGEX: RegExp = /^(\\*|-|[0-9]{1,2}\\.|[0-9]{1,2}\\>|[0-9]{1,2}\\)|[0-9]{1,2}\\-|\\([0-9]{1,2}\\))$/;\n return REGEX.test(textBeforeCursor);\n}\n\n/**\n * AutoBullet edit feature, provides the ability to automatically convert current line into a list.\n * When user input \"1. \", convert into a numbering list\n * When user input \"- \" or \"* \", convert into a bullet list\n */\nconst AutoBullet: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n let searcher: IPositionContentSearcher | null;\n if (\n !cacheGetListElement(event, editor) &&\n !editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList) &&\n (searcher = editor.getContentSearcherOfCursor(event))\n ) {\n let textBeforeCursor = searcher.getSubStringBefore(4);\n\n // Auto list is triggered if:\n // 1. Text before cursor exactly matches '*', '-' or '1.'\n // 2. There's no non-text inline entities before cursor\n return isAListPattern(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n let regions: RegionBase[];\n let searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n let textBeforeCursor = searcher.getSubStringBefore(4);\n let textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n\n if (!textRange) {\n // no op if the range can't be found\n } else if (\n textBeforeCursor.indexOf('*') == 0 ||\n textBeforeCursor.indexOf('-') == 0\n ) {\n prepareAutoBullet(editor, textRange);\n toggleBullet(editor);\n } else if (isAListPattern(textBeforeCursor)) {\n prepareAutoBullet(editor, textRange);\n toggleNumbering(editor);\n } else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {\n const num = parseInt(textBeforeCursor);\n prepareAutoBullet(editor, textRange);\n toggleNumbering(editor, num);\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.AutoFormatList to be enabled\n * AutoBulletList edit feature, provides the ability to automatically convert current line into a bullet list.\n */\nconst AutoBulletList: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n if (\n !cacheGetListElement(event, editor) &&\n editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)\n ) {\n return shouldTriggerList(event, editor, getAutoBulletListStyle, ListType.Unordered);\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n let searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n let textBeforeCursor = searcher.getSubStringBefore(5);\n let textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n const listStyle = getAutoBulletListStyle(textBeforeCursor);\n\n if (textRange) {\n prepareAutoBullet(editor, textRange);\n toggleBullet(\n editor,\n listStyle ?? undefined,\n 'autoToggleList' /** apiNameOverride */\n );\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.AutoFormatList to be enabled\n * AutoNumberingList edit feature, provides the ability to automatically convert current line into a numbering list.\n */\nconst AutoNumberingList: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n if (\n !cacheGetListElement(event, editor) &&\n editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)\n ) {\n return shouldTriggerList(event, editor, getAutoNumberingListStyle, ListType.Ordered);\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n const searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n const textBeforeCursor = searcher.getSubStringBefore(5);\n const textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n\n if (textRange) {\n const number = isFirstItemOfAList(textBeforeCursor)\n ? 1\n : parseInt(textBeforeCursor);\n\n const isLi = getPreviousListItem(editor, textRange);\n const listStyle = getAutoNumberingListStyle(textBeforeCursor) ?? undefined;\n prepareAutoBullet(editor, textRange);\n toggleNumbering(\n editor,\n isLi && number !== 1 ? undefined : number /** startNumber */,\n listStyle,\n 'autoToggleList' /** apiNameOverride */\n );\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\nconst getPreviousListItem = (editor: IEditor, textRange: Range) => {\n const blockElement = editor\n .getBodyTraverser(textRange?.startContainer)\n .getPreviousBlockElement();\n const previousNode = blockElement?.getEndNode() ?? null;\n return getTagOfNode(previousNode) === 'LI' ? previousNode : undefined;\n};\n\nconst getPreviousListType = (editor: IEditor, textRange: Range, listType: ListType) => {\n const type = listType === ListType.Ordered ? 'orderedStyleType' : 'unorderedStyleType';\n const listItem = getPreviousListItem(editor, textRange);\n const list = listItem\n ? findClosestElementAncestor(\n listItem,\n undefined /** root*/,\n listType === ListType.Ordered ? 'ol' : 'ul'\n )\n : null;\n const metadata = list ? getMetadata(list, ListStyleDefinitionMetadata) : null;\n return metadata ? metadata[type] : null;\n};\n\nconst isFirstItemOfAList = (item: string) => {\n const number = parseInt(item);\n if (number && number === 1) {\n return 1;\n } else {\n const letter = item.replace(/\\(|\\)|\\-|\\./g, '').trim();\n return letter.length === 1 && ['i', 'a', 'I', 'A'].indexOf(letter) > -1 ? 1 : undefined;\n }\n};\n\n/**\n * Maintain the list numbers in list chain\n * e.g. we have two lists:\n * 1, 2, 3 and 4, 5, 6\n * Now we delete list item 2, so the first one becomes \"1, 2\".\n * This edit feature can maintain the list number of the second list to become \"3, 4, 5\"\n */\nconst MaintainListChain: BuildInEditFeature = {\n keys: [Keys.ENTER, Keys.TAB, Keys.DELETE, Keys.BACKSPACE, Keys.RANGE],\n shouldHandleEvent: (event, editor) =>\n editor\n .queryElements('li', QueryScope.OnSelection)\n .filter(li => !li.getElementsByTagName('blockquote').length).length > 0,\n handleEvent: (event, editor) => {\n const chains = getListChains(editor);\n editor.runAsync(editor => commitListChains(editor, chains));\n },\n};\n\nfunction getListChains(editor: IEditor) {\n return VListChain.createListChains(editor.getSelectedRegions());\n}\n\nfunction getCacheNextSibling(event: PluginKeyboardEvent, editor: IEditor): Node | undefined {\n const element = cacheGetEventData(event, 'nextSibling', () => {\n const range = editor.getSelectionRange();\n const pos = range && Position.getEnd(range).normalize();\n const traverser = pos && editor.getBodyTraverser(pos.node);\n return traverser?.getNextBlockElement()?.getStartNode();\n });\n return element;\n}\n\nfunction prepareAutoBullet(editor: IEditor, range: Range) {\n const block = editor.getBlockElementAtNode(range.startContainer);\n const endNode = block?.getEndNode();\n if (endNode && getTagOfNode(endNode) != 'BR') {\n const br = editor.getDocument().createElement('BR');\n if (isBlockElement(endNode)) {\n endNode.appendChild(br);\n } else {\n endNode.parentNode?.insertBefore(br, endNode.nextSibling);\n }\n editor.select(range.startContainer, range.startOffset);\n }\n}\n\nfunction toggleListAndPreventDefault(\n event: PluginKeyboardEvent,\n editor: IEditor,\n includeSiblingLists: boolean = true\n) {\n let listInfo = cacheGetListElement(event, editor);\n if (listInfo) {\n let listElement = listInfo[0];\n let tag = getTagOfNode(listElement);\n\n if (tag == 'UL' || tag == 'OL') {\n toggleListType(\n editor,\n tag == 'UL' ? ListType.Unordered : ListType.Ordered,\n undefined /* startNumber */,\n includeSiblingLists\n );\n }\n\n editor.focus();\n event.rawEvent.preventDefault();\n }\n}\n\nfunction cacheGetListElement(event: PluginKeyboardEvent, editor: IEditor) {\n let li = editor.getElementAtCursor('LI,TABLE', undefined /*startFrom*/, event);\n let listElement = li && getTagOfNode(li) == 'LI' && editor.getElementAtCursor('UL,OL', li);\n return listElement ? [listElement, li] : null;\n}\n\nfunction shouldTriggerList<\n T extends ListType,\n K extends T extends ListType.Ordered ? NumberingListType : BulletListType\n>(\n event: PluginKeyboardEvent,\n editor: IEditor,\n getListStyle: (\n text: string,\n previousListChain?: VListChain[],\n previousListStyle?: K\n ) => K | null,\n listType: T\n) {\n const searcher = editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return false;\n }\n const textBeforeCursor = searcher.getSubStringBefore(4);\n const traverser = editor.getBlockTraverser();\n const text =\n traverser && traverser.currentBlockElement\n ? traverser.currentBlockElement.getTextContent().slice(0, textBeforeCursor.length)\n : null;\n const isATheBeginning = text && text === textBeforeCursor;\n const listChains = getListChains(editor);\n const textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n const previousListType =\n textRange && getPreviousListType(editor, textRange, listType);\n const isFirstItem = isFirstItemOfAList(textBeforeCursor);\n const listStyle = getListStyle(textBeforeCursor, listChains, previousListType ?? undefined);\n const shouldTriggerNewListStyle =\n isFirstItem ||\n !previousListType ||\n previousListType === listStyle ||\n listType === ListType.Unordered;\n\n return (\n isATheBeginning &&\n !searcher.getNearestNonTextInlineElement() &&\n listStyle &&\n shouldTriggerNewListStyle\n );\n}\n\n/**\n * MergeListOnBackspaceAfterList edit feature, provides the ability to merge list on backspace on block after a list.\n */\nconst MergeListOnBackspaceAfterList: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n const target = editor.getElementAtCursor();\n if (target) {\n const cursorBlock = editor.getBlockElementAtNode(target)?.getStartNode() as HTMLElement;\n const previousBlock = cursorBlock?.previousElementSibling ?? null;\n\n if (isList(previousBlock)) {\n const range = editor.getSelectionRange();\n const searcher = editor.getContentSearcherOfCursor(event);\n const textBeforeCursor = searcher?.getSubStringBefore(4);\n const nearestInline = searcher?.getNearestNonTextInlineElement();\n\n if (range && range.collapsed && textBeforeCursor === '' && !nearestInline) {\n const tempBlock = cursorBlock?.nextElementSibling;\n const nextBlock = isList(tempBlock) ? tempBlock : tempBlock?.firstChild;\n\n if (\n isList(nextBlock) &&\n getTagOfNode(previousBlock) == getTagOfNode(nextBlock)\n ) {\n const element = cacheGetEventData(\n event,\n PREVIOUS_BLOCK_CACHE_KEY,\n () => previousBlock\n );\n const nextElement = cacheGetEventData(\n event,\n NEXT_BLOCK_CACHE_KEY,\n () => nextBlock\n );\n\n return !!element && !!nextElement;\n }\n }\n }\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n editor.runAsync(editor => {\n const previousList = cacheGetEventData(\n event,\n PREVIOUS_BLOCK_CACHE_KEY,\n () => null\n );\n const targetBlock = cacheGetEventData(\n event,\n NEXT_BLOCK_CACHE_KEY,\n () => null\n );\n\n const rangeBeforeWriteBack = editor.getSelectionRange();\n\n if (previousList && targetBlock && rangeBeforeWriteBack) {\n const fvList = new VList(previousList);\n fvList.mergeVList(new VList(targetBlock));\n\n let span = editor.getDocument().createElement('span');\n span.id = 'restoreRange';\n rangeBeforeWriteBack.insertNode(span);\n\n fvList.writeBack();\n\n span = editor.queryElements('#restoreRange')[0];\n\n if (span.parentElement) {\n editor.select(new Position(span, PositionType.After));\n span.parentElement.removeChild(span);\n }\n }\n });\n },\n};\n\n/**\n * @internal\n */\nexport const ListFeatures: Record<\n keyof ListFeatureSettings,\n BuildInEditFeature\n> = {\n autoBullet: AutoBullet,\n indentWhenTab: IndentWhenTab,\n outdentWhenShiftTab: OutdentWhenShiftTab,\n outdentWhenBackspaceOnEmptyFirstLine: OutdentWhenBackOn1stEmptyLine,\n outdentWhenEnterOnEmptyLine: OutdentWhenEnterOnEmptyLine,\n mergeInNewLineWhenBackspaceOnFirstChar: MergeInNewLine,\n maintainListChain: MaintainListChain,\n maintainListChainWhenDelete: MaintainListChainWhenDelete,\n autoNumberingList: AutoNumberingList,\n autoBulletList: AutoBulletList,\n mergeListOnBackspaceAfterList: MergeListOnBackspaceAfterList,\n outdentWhenAltShiftLeft: OutdentWhenAltShiftLeft,\n indentWhenAltShiftRight: IndentWhenAltShiftRight,\n};\n\nfunction isList(element: Node | null | undefined): element is HTMLOListElement | HTMLOListElement {\n return (\n !!element &&\n (safeInstanceOf(element, 'HTMLOListElement') || safeInstanceOf(element, 'HTMLUListElement'))\n );\n}\n","import { cacheGetEventData, createRange, Position, wrap } from 'roosterjs-editor-dom';\nimport type { CompatibleKeys } from 'roosterjs-editor-types/lib/compatibleTypes';\nimport {\n BuildInEditFeature,\n ChangeSource,\n IEditor,\n Keys,\n MarkdownFeatureSettings,\n NodePosition,\n PluginKeyboardEvent,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\nfunction generateBasicMarkdownFeature(\n key: Keys | CompatibleKeys,\n triggerCharacter: string,\n elementTag: string,\n useShiftKey: boolean\n): BuildInEditFeature {\n return {\n keys: [key],\n shouldHandleEvent: (event, editor) =>\n event.rawEvent.shiftKey === useShiftKey &&\n !!cacheGetRangeForMarkdownOperation(event, editor, triggerCharacter),\n handleEvent: (event, editor) => {\n // runAsync is here to allow the event to complete so autocomplete will present the trigger character.\n editor.runAsync(editor => {\n handleMarkdownEvent(event, editor, triggerCharacter, elementTag);\n });\n },\n };\n}\n\nfunction cacheGetRangeForMarkdownOperation(\n event: PluginKeyboardEvent,\n editor: IEditor,\n triggerCharacter: string\n): Range | null {\n return cacheGetEventData(event, 'MARKDOWN_RANGE', (): Range | null => {\n const searcher = editor.getContentSearcherOfCursor(event);\n\n let startPosition: NodePosition | null = null;\n let endPosition: NodePosition | null = null;\n searcher?.forEachTextInlineElement(textInlineElement => {\n if (endPosition && startPosition) {\n return true;\n }\n const inlineTextContent = textInlineElement.getTextContent();\n\n // special case for immediately preceding character being whitespace\n if (inlineTextContent[inlineTextContent.length - 1].trim().length == 0) {\n return false;\n }\n\n //if the text is pasted, it might create a inner element inside the text element,\n // then is necessary to check the parent block to get whole text\n const parentBlockText = textInlineElement.getParentBlock().getTextContent();\n\n // special case for consecutive trigger characters\n // check parent block in case of pasted text\n if (parentBlockText[parentBlockText.length - 1].trim() === triggerCharacter) {\n return false;\n }\n\n if (!endPosition) {\n endPosition = textInlineElement.getStartPosition().move(inlineTextContent.length);\n }\n if (inlineTextContent[0] == triggerCharacter) {\n startPosition = textInlineElement.getStartPosition();\n } else {\n let contentIndex = inlineTextContent.length - 1;\n for (; contentIndex > 0; contentIndex--) {\n if (startPosition) {\n return true;\n }\n if (\n inlineTextContent[contentIndex] == triggerCharacter &&\n inlineTextContent[contentIndex - 1].trim().length == 0\n ) {\n startPosition = textInlineElement.getStartPosition().move(contentIndex);\n return true;\n }\n }\n }\n });\n return startPosition && endPosition && createRange(startPosition, endPosition);\n });\n}\n\nfunction handleMarkdownEvent(\n event: PluginKeyboardEvent,\n editor: IEditor,\n triggerCharacter: string,\n elementTag: string\n) {\n editor.addUndoSnapshot(\n () => {\n const range = cacheGetRangeForMarkdownOperation(event, editor, triggerCharacter);\n if (!range) {\n return;\n }\n const lastTypedTriggerPosition = new Position(range.endContainer, PositionType.End);\n const hasLastTypedTrigger = range.endOffset + 1 <= lastTypedTriggerPosition.offset;\n if (!!range && hasLastTypedTrigger) {\n // get the text content range\n const textContentRange = range.cloneRange();\n textContentRange.setStart(\n textContentRange.startContainer,\n textContentRange.startOffset + 1\n );\n\n const text = textContentRange.extractContents().textContent;\n const textNode = editor.getDocument().createTextNode(text ?? '');\n\n // extract content and put it into a new element.\n const elementToWrap = wrap(textNode, elementTag);\n //include last typed character\n range.setEnd(range.endContainer, range.endOffset + 1);\n range.deleteContents();\n\n // ZWS here ensures we don't end up inside the newly created node.\n const nonPrintedSpaceTextNode = editor\n .getDocument()\n .createTextNode(ZERO_WIDTH_SPACE);\n range.insertNode(nonPrintedSpaceTextNode);\n range.insertNode(elementToWrap);\n\n editor.select(nonPrintedSpaceTextNode, PositionType.End);\n }\n },\n ChangeSource.Format,\n true /*canUndoByBackspace*/\n );\n}\n\n/**\n * Markdown bold feature. Make bold text with markdown shortcuts.\n */\nconst MarkdownBold: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.EIGHT_ASTERISK,\n '*',\n 'b',\n true /* useShiftKey */\n);\n\n/**\n * Markdown italics feature. Make italic text with markdown shortcuts.\n */\nconst MarkdownItalic: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.DASH_UNDERSCORE,\n '_',\n 'i',\n true /* useShiftKey */\n);\n\n/**\n * Markdown strikethrough feature. MAke strikethrough text with markdown shortcuts.\n */\nconst MarkdownStrikethrough: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.GRAVE_TILDE,\n '~',\n 's',\n true /* useShiftKey */\n);\n\n/**\n * Markdown inline code feature. Marks specific text as inline code with markdown shortcuts.\n */\nconst MarkdownInlineCode: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.GRAVE_TILDE,\n '`',\n 'code',\n false /* useShiftKey */\n);\n\n/**\n * @internal\n */\nexport const MarkdownFeatures: Record<\n keyof MarkdownFeatureSettings,\n BuildInEditFeature\n> = {\n markdownBold: MarkdownBold,\n markdownItalic: MarkdownItalic,\n markdownStrikethru: MarkdownStrikethrough,\n markdownInlineCode: MarkdownInlineCode,\n};\n","import { clearFormat } from 'roosterjs-editor-api';\nimport {\n BuildInEditFeature,\n IEditor,\n Keys,\n PluginKeyboardEvent,\n PositionType,\n QuoteFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n getTagOfNode,\n isNodeEmpty,\n safeInstanceOf,\n splitBalancedNodeRange,\n toArray,\n unwrap,\n wrap,\n} from 'roosterjs-editor-dom';\n\nconst QUOTE_TAG = 'BLOCKQUOTE';\nconst STRUCTURED_TAGS = [QUOTE_TAG, 'LI', 'TD', 'TH'].join(',');\n\n/**\n * UnquoteWhenBackOnEmpty1stLine edit feature, provides the ability to Unquote current line when\n * user press BACKSPACE on first and empty line of a BLOCKQUOTE\n */\nconst UnquoteWhenBackOnEmpty1stLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n return childOfQuote && isNodeEmpty(childOfQuote) && !childOfQuote.previousSibling;\n },\n handleEvent: splitQuote,\n};\n\n/**\n * UnquoteWhenEnterOnEmptyLine edit feature, provides the ability to Unquote current line when\n * user press ENTER on an empty line of a BLOCKQUOTE\n */\nconst UnquoteWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n let shift = event.rawEvent.shiftKey;\n return !shift && childOfQuote && isNodeEmpty(childOfQuote);\n },\n handleEvent: (event, editor) =>\n editor.addUndoSnapshot(\n () => splitQuote(event, editor),\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n ),\n};\n\nfunction cacheGetQuoteChild(event: PluginKeyboardEvent, editor: IEditor): Node | null {\n return cacheGetEventData(event, 'QUOTE_CHILD', () => {\n let quote = editor.getElementAtCursor(STRUCTURED_TAGS);\n if (quote && getTagOfNode(quote) == QUOTE_TAG) {\n let pos = editor.getFocusedPosition();\n let block = pos && editor.getBlockElementAtNode(pos.normalize().node);\n if (block) {\n let node =\n block.getStartNode() == quote\n ? block.getStartNode()\n : block.collapseToSingleElement();\n return isNodeEmpty(node) ? node : null;\n }\n }\n\n return null;\n });\n}\n\nfunction splitQuote(event: PluginKeyboardEvent, editor: IEditor) {\n editor.addUndoSnapshot(() => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n if (!childOfQuote) {\n return;\n }\n if (getTagOfNode(childOfQuote) == QUOTE_TAG) {\n childOfQuote = wrap(toArray(childOfQuote.childNodes));\n }\n const parent = splitBalancedNodeRange(childOfQuote);\n const shouldClearFormat = !!parent && isStyledBlockquote(parent);\n const newParent = parent && unwrap(parent);\n editor.select(childOfQuote, PositionType.Begin);\n\n if (shouldClearFormat) {\n if (safeInstanceOf(newParent, 'HTMLLIElement')) {\n newParent.style.removeProperty('color');\n }\n clearFormat(editor);\n }\n });\n event.rawEvent.preventDefault();\n}\n\nconst isStyledBlockquote = (element: Node) => {\n if (\n element &&\n safeInstanceOf(element, 'HTMLQuoteElement') &&\n element.style.borderLeft &&\n element.style.borderColor &&\n element.style.paddingLeft &&\n element.style.color\n ) {\n return true;\n }\n return false;\n};\n\n/**\n * @internal\n */\nexport const QuoteFeatures: Record<\n keyof QuoteFeatureSettings,\n BuildInEditFeature\n> = {\n unquoteWhenBackspaceOnEmptyFirstLine: UnquoteWhenBackOnEmpty1stLine,\n unquoteWhenEnterOnEmptyLine: UnquoteWhenEnterOnEmptyLine,\n};\n","import { Browser, cacheGetEventData } from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n FontSizeChange,\n IEditor,\n Keys,\n PluginEventType,\n PluginKeyboardEvent,\n ShortcutFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n changeFontSize,\n toggleBold,\n toggleItalic,\n toggleUnderline,\n toggleBullet,\n toggleNumbering,\n clearFormat,\n} from 'roosterjs-editor-api';\n\ninterface ShortcutCommand {\n winKey: number;\n macKey: number;\n action: (editor: IEditor) => any;\n}\n\nfunction createCommand(\n winKey: number,\n macKey: number,\n action: (editor: IEditor) => any,\n disabled: boolean = false\n) {\n if (disabled) {\n return null;\n }\n return {\n winKey,\n macKey,\n action,\n };\n}\n\nconst commands: ShortcutCommand[] = [\n createCommand(Keys.Ctrl | Keys.B, Keys.Meta | Keys.B, toggleBold),\n createCommand(Keys.Ctrl | Keys.I, Keys.Meta | Keys.I, toggleItalic),\n createCommand(Keys.Ctrl | Keys.U, Keys.Meta | Keys.U, toggleUnderline),\n createCommand(Keys.Ctrl | Keys.SPACE, Keys.Meta | Keys.SPACE, clearFormat),\n createCommand(Keys.Ctrl | Keys.Z, Keys.Meta | Keys.Z, editor => editor.undo()),\n createCommand(\n Keys.ALT | Keys.BACKSPACE,\n Keys.ALT | Keys.BACKSPACE,\n editor => editor.undo(),\n Browser.isMac /* Option+Backspace to be handled by browsers on Mac */\n ),\n createCommand(Keys.Ctrl | Keys.Y, Keys.Meta | Keys.Shift | Keys.Z, editor => editor.redo()),\n createCommand(Keys.Ctrl | Keys.PERIOD, Keys.Meta | Keys.PERIOD, toggleBullet),\n createCommand(Keys.Ctrl | Keys.FORWARD_SLASH, Keys.Meta | Keys.FORWARD_SLASH, toggleNumbering),\n createCommand(\n Keys.Ctrl | Keys.Shift | Keys.PERIOD,\n Keys.Meta | Keys.Shift | Keys.PERIOD,\n editor => changeFontSize(editor, FontSizeChange.Increase)\n ),\n createCommand(\n Keys.Ctrl | Keys.Shift | Keys.COMMA,\n Keys.Meta | Keys.Shift | Keys.COMMA,\n editor => changeFontSize(editor, FontSizeChange.Decrease)\n ),\n].filter((command): command is ShortcutCommand => !!command);\n\n/**\n * DefaultShortcut edit feature, provides shortcuts for the following features:\n * Ctrl/Meta+B: toggle bold style\n * Ctrl/Meta+I: toggle italic style\n * Ctrl/Meta+U: toggle underline style\n * Ctrl/Meta+Space: clear formatting\n * Alt+Backspace: undo\n * Ctrl/Meta+Z: undo\n * Ctrl+Y/Meta+Shift+Z: redo\n * Ctrl/Meta+PERIOD: toggle bullet list\n * Ctrl/Meta+/: toggle numbering list\n * Ctrl/Meta+Shift+>: increase font size\n * Ctrl/Meta+Shift+<: decrease font size\n */\nconst DefaultShortcut: BuildInEditFeature = {\n allowFunctionKeys: true,\n keys: [\n Keys.B,\n Keys.I,\n Keys.U,\n Keys.Y,\n Keys.Z,\n Keys.COMMA,\n Keys.PERIOD,\n Keys.FORWARD_SLASH,\n Keys.SPACE,\n Keys.BACKSPACE,\n ],\n shouldHandleEvent: cacheGetCommand,\n handleEvent: (event, editor) => {\n let command = cacheGetCommand(event);\n if (command) {\n command.action(editor);\n event.rawEvent.preventDefault();\n event.rawEvent.stopPropagation();\n }\n },\n};\n\nfunction cacheGetCommand(event: PluginKeyboardEvent) {\n return cacheGetEventData(event, 'DEFAULT_SHORT_COMMAND', () => {\n let e = event.rawEvent;\n let key =\n // Need to check AltGraph isn't being pressed since some languages (e.g. Polski) use AltGr\n // to input some special characters. In that case, ctrlKey and altKey are both true in Edge,\n // but we should not trigger any shortcut function here. However, we still want to capture\n // the ALT+BACKSPACE combination.\n event.eventType == PluginEventType.KeyDown && !e.getModifierState('AltGraph')\n ? e.which |\n ((e.metaKey && Keys.Meta)) |\n ((e.shiftKey && Keys.Shift)) |\n ((e.ctrlKey && Keys.Ctrl)) |\n ((e.altKey && Keys.ALT))\n : 0;\n return key && commands.filter(cmd => (Browser.isMac ? cmd.macKey : cmd.winKey) == key)[0];\n });\n}\n\n/**\n * @internal\n */\nexport const ShortcutFeatures: Record<\n keyof ShortcutFeatureSettings,\n BuildInEditFeature\n> = {\n defaultShortcut: DefaultShortcut,\n};\n","import {\n BuildInEditFeature,\n IEditor,\n Keys,\n KnownCreateElementDataIndex,\n PluginKeyboardEvent,\n PositionType,\n StructuredNodeFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n isPositionAtBeginningOf,\n Position,\n getTagOfNode,\n createElement,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\n\nconst CHILD_PARENT_TAG_MAP: { [childTag: string]: string } = {\n TD: 'TABLE',\n TH: 'TABLE',\n LI: 'OL,UL',\n};\nconst CHILD_SELECTOR = getObjectKeys(CHILD_PARENT_TAG_MAP).join(',');\n\n/**\n * InsertLineBeforeStructuredNode edit feature, provides the ability to insert an empty line before\n * a structured element (bullet/numbering list, blockquote, table) if the element is at beginning of\n * document\n */\nconst InsertLineBeforeStructuredNodeFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: cacheGetStructuredElement,\n handleEvent: (event, editor) => {\n let element = cacheGetStructuredElement(event, editor);\n let div = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n editor.getDocument()\n ) as HTMLElement;\n editor.addUndoSnapshot(() => {\n element?.parentNode?.insertBefore(div, element);\n // Select the new line when we are in table. This is the same behavior with Word\n if (getTagOfNode(element) == 'TABLE') {\n editor.select(new Position(div, PositionType.Begin).normalize());\n }\n });\n event.rawEvent.preventDefault();\n },\n defaultDisabled: true,\n};\n\nfunction cacheGetStructuredElement(event: PluginKeyboardEvent, editor: IEditor) {\n return cacheGetEventData(event, 'FIRST_STRUCTURE', () => {\n // Provide a chance to keep browser default behavior by pressing SHIFT\n let element = event.rawEvent.shiftKey ? null : editor.getElementAtCursor(CHILD_SELECTOR);\n\n if (element) {\n let range = editor.getSelectionRange();\n if (\n range &&\n range.collapsed &&\n isPositionAtBeginningOf(Position.getStart(range), element) &&\n !editor.getBodyTraverser(element).getPreviousBlockElement()\n ) {\n return editor.getElementAtCursor(CHILD_PARENT_TAG_MAP[getTagOfNode(element)]);\n }\n }\n\n return null;\n });\n}\n\n/**\n * @internal\n */\nexport const StructuredNodeFeatures: Record<\n keyof StructuredNodeFeatureSettings,\n BuildInEditFeature\n> = {\n insertLineBeforeStructuredNodeFeature: InsertLineBeforeStructuredNodeFeature,\n};\n","import { editTable, setIndentation } from 'roosterjs-editor-api';\nimport {\n BuildInEditFeature,\n IEditor,\n Keys,\n NodeType,\n PluginEvent,\n PositionType,\n TableFeatureSettings,\n TableOperation,\n PluginKeyboardEvent,\n SelectionRangeTypes,\n TableSelectionRange,\n Indentation,\n ExperimentalFeatures,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n contains,\n getTagOfNode,\n isVoidHtmlElement,\n isWholeTableSelected,\n Position,\n VTable,\n} from 'roosterjs-editor-dom';\n\n/**\n * TabInTable edit feature, provides the ability to jump between cells when user press TAB in table\n */\nconst TabInTable: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && !cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n let shift = event.rawEvent.shiftKey;\n let td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n let vtable = cacheVTable(event, td);\n\n for (\n let step = shift ? -1 : 1, row = vtable.row ?? 0, col = (vtable.col ?? 0) + step;\n ;\n col += step\n ) {\n const tableCells = vtable.cells ?? [];\n if (col < 0 || col >= tableCells[row].length) {\n row += step;\n if (row < 0) {\n editor.select(vtable.table, PositionType.Before);\n break;\n } else if (row >= tableCells.length) {\n editTable(editor, TableOperation.InsertBelow);\n break;\n }\n col = shift ? tableCells[row].length - 1 : 0;\n }\n let cell = vtable.getCell(row, col);\n if (cell.td) {\n const newPos = new Position(cell.td, PositionType.Begin).normalize();\n editor.select(newPos);\n break;\n }\n }\n event.rawEvent.preventDefault();\n },\n};\n\n/**\n * IndentTableOnTab edit feature, provides the ability to indent the table if it is all cells are selected.\n */\nconst IndentTableOnTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n\n editor.addUndoSnapshot(() => {\n let shift = event.rawEvent.shiftKey;\n let selection = editor.getSelectionRangeEx() as TableSelectionRange;\n let td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n let vtable = cacheVTable(event, td);\n\n if (shift && editor.getElementAtCursor('blockquote', vtable.table, event)) {\n setIndentation(editor, Indentation.Decrease);\n } else if (!shift) {\n setIndentation(editor, Indentation.Increase);\n }\n\n if (selection.coordinates) {\n editor.select(selection.table, selection.coordinates);\n }\n });\n },\n};\n\n/**\n * UpDownInTable edit feature, provides the ability to jump to cell above/below when user press UP/DOWN\n * in table\n */\nconst UpDownInTable: BuildInEditFeature = {\n keys: [Keys.UP, Keys.DOWN],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && !cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n const vtable = new VTable(td);\n const isUp = event.rawEvent.which == Keys.UP;\n const step = isUp ? -1 : 1;\n const hasShiftKey = event.rawEvent.shiftKey;\n const selection = editor.getDocument().defaultView?.getSelection();\n let targetTd: HTMLTableCellElement | null = null;\n\n if (selection) {\n let { anchorNode, anchorOffset } = selection;\n\n for (\n let row = vtable.row ?? 0;\n row >= 0 && vtable.cells && row < vtable.cells.length;\n row += step\n ) {\n let cell = vtable.getCell(row, vtable.col ?? 0);\n if (cell.td && cell.td != td) {\n targetTd = cell.td;\n break;\n }\n }\n\n editor.runAsync(editor => {\n let newContainer = editor.getElementAtCursor();\n if (\n contains(vtable.table, newContainer) &&\n !contains(td, newContainer, true /*treatSameNodeAsContain*/)\n ) {\n let newPos = targetTd\n ? new Position(targetTd, PositionType.Begin)\n : new Position(\n vtable.table,\n isUp ? PositionType.Before : PositionType.After\n );\n if (hasShiftKey) {\n newPos =\n newPos.node.nodeType == NodeType.Element &&\n isVoidHtmlElement(newPos.node)\n ? new Position(\n newPos.node,\n newPos.isAtEnd ? PositionType.After : PositionType.Before\n )\n : newPos;\n const selection = editor.getDocument().defaultView?.getSelection();\n if (anchorNode) {\n selection?.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n newPos.node,\n newPos.offset\n );\n }\n } else {\n editor.select(newPos.normalize());\n }\n }\n });\n }\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.DeleteTableWithBackspace\n * Delete a table selected with the table selector pressing Backspace key\n */\nconst DeleteTableWithBackspace: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n editor.isFeatureEnabled(ExperimentalFeatures.DeleteTableWithBackspace) &&\n cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n const vtable = new VTable(td);\n vtable.edit(TableOperation.DeleteTable);\n vtable.writeBack();\n },\n};\n\nfunction cacheGetTableCell(event: PluginEvent, editor: IEditor): HTMLTableCellElement | null {\n return cacheGetEventData(event, 'TABLE_CELL_FOR_TABLE_FEATURES', () => {\n let pos = editor.getFocusedPosition();\n let firstTd = pos && editor.getElementAtCursor('TD,TH,LI', pos.node);\n return (\n firstTd && (getTagOfNode(firstTd) == 'LI' ? null : (firstTd as HTMLTableCellElement))\n );\n });\n}\n\nfunction cacheIsWholeTableSelected(event: PluginEvent, editor: IEditor) {\n return cacheGetEventData(event, 'WHOLE_TABLE_SELECTED_FOR_FEATURES', () => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return false;\n }\n let vtable = cacheVTable(event, td);\n let selection = editor.getSelectionRangeEx();\n return (\n selection.type == SelectionRangeTypes.TableSelection &&\n selection.coordinates &&\n isWholeTableSelected(vtable, selection.coordinates)\n );\n });\n}\n\nfunction cacheVTable(event: PluginEvent, td: HTMLTableCellElement) {\n return cacheGetEventData(event, 'VTABLE_FOR_TABLE_FEATURES', () => {\n return new VTable(td);\n });\n}\n\n/**\n * @internal\n */\nexport const TableFeatures: Record<\n keyof TableFeatureSettings,\n BuildInEditFeature\n> = {\n tabInTable: TabInTable,\n upDownInTable: UpDownInTable,\n indentTableOnTab: IndentTableOnTab,\n deleteTableWithBackspace: DeleteTableWithBackspace,\n};\n","import { setIndentation } from 'roosterjs-editor-api';\nimport {\n createRange,\n getEntitySelector,\n getTagOfNode,\n Position,\n queryElements,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n IEditor,\n Indentation,\n TextFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n SelectionRangeTypes,\n ContentPosition,\n PositionType,\n ExperimentalFeatures,\n NodePosition,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst TAB_SPACES = 6;\n\n/**\n * Requires @see ExperimentalFeatures.TabKeyTextFeatures to be enabled\n * Provides additional functionality when press Tab:\n * If Whole Paragraph selected, indent paragraph,\n * If range is collapsed, add tab spaces\n * If range is not collapsed but not all the paragraph is selected, replace selection with Tab spaces\n * If there are more than one block in the selection, indent all selection\n */\nconst IndentWhenTabText: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event, editor) => {\n if (\n editor.isFeatureEnabled(ExperimentalFeatures.TabKeyTextFeatures) &&\n !event.rawEvent.shiftKey\n ) {\n let activeElement = editor.getDocument().activeElement as HTMLElement;\n const listOrTable = editor.getElementAtCursor(\n 'LI,TABLE',\n undefined /*startFrom*/,\n event\n );\n const entity = editor.getElementAtCursor(\n getEntitySelector(),\n undefined /*startFrom*/,\n event\n );\n\n return (\n !listOrTable &&\n (entity ? entity.isContentEditable : activeElement.isContentEditable)\n );\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.Normal) {\n editor.addUndoSnapshot(() => {\n if (selection.areAllCollapsed) {\n insertTab(editor, event);\n } else {\n const { ranges } = selection;\n const range = ranges[0];\n if (shouldSetIndentation(editor, range)) {\n setIndentation(editor, Indentation.Increase);\n } else {\n const tempRange = createRange(range.startContainer, range.startOffset);\n ranges.forEach(range => range.deleteContents());\n editor.select(tempRange);\n insertTab(editor, event);\n }\n }\n });\n\n event.rawEvent.preventDefault();\n }\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.TabKeyTextFeatures to be enabled\n * If Whole Paragraph selected, outdent paragraph on Tab press\n */\nconst OutdentWhenTabText: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event, editor) => {\n if (\n event.rawEvent.shiftKey &&\n editor.isFeatureEnabled(ExperimentalFeatures.TabKeyTextFeatures)\n ) {\n const selection = editor.getSelectionRangeEx();\n\n return (\n selection.type == SelectionRangeTypes.Normal &&\n !selection.areAllCollapsed &&\n editor.getElementAtCursor('blockquote', undefined, event) &&\n !editor.getElementAtCursor('LI,TABLE', undefined /*startFrom*/, event) &&\n shouldSetIndentation(editor, selection.ranges[0])\n );\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n editor.addUndoSnapshot(() => setIndentation(editor, Indentation.Decrease));\n\n event.rawEvent.preventDefault();\n },\n};\n\n/**\n * @deprecated\n * Automatically transform -- into hyphen, if typed between two words.\n */\nconst AutoHyphen: BuildInEditFeature = {\n keys: [],\n shouldHandleEvent: (event, editor) => {\n return false;\n },\n handleEvent: (event, editor) => {\n return false;\n },\n defaultDisabled: true,\n};\n\n/**\n * @internal\n */\nexport const TextFeatures: Record<\n keyof TextFeatureSettings,\n BuildInEditFeature\n> = {\n indentWhenTabText: IndentWhenTabText,\n outdentWhenTabText: OutdentWhenTabText,\n autoHyphen: AutoHyphen,\n};\n\nfunction shouldSetIndentation(editor: IEditor, range: Range): boolean {\n let result: boolean = false;\n\n const startPosition: NodePosition = Position.getStart(range);\n const endPosition: NodePosition = Position.getEnd(range);\n const firstBlock = editor.getBlockElementAtNode(startPosition.node);\n const lastBlock = editor.getBlockElementAtNode(endPosition.node);\n\n if (!firstBlock || !lastBlock) {\n return false;\n }\n\n if (!firstBlock.equals(lastBlock)) {\n //If the selections has more than one block, we indent all the blocks in the selection\n return true;\n } else {\n //We only indent a single block if all the block is selected.\n const blockStart = new Position(firstBlock.getStartNode(), PositionType.Begin);\n const blockEnd = new Position(firstBlock.getEndNode(), PositionType.End);\n\n const rangeBefore = createRange(blockStart, Position.getStart(range));\n const rangeAfter = createRange(Position.getEnd(range), blockEnd);\n\n if (!result && isRangeEmpty(rangeBefore) && isRangeEmpty(rangeAfter)) {\n result = true;\n }\n\n return result;\n }\n}\n\nfunction isRangeEmpty(range: Range) {\n return (\n range.toString() == '' &&\n queryElements(\n range.commonAncestorContainer as ParentNode,\n 'img,table,ul,ol',\n null,\n QueryScope.InSelection,\n range\n ).length == 0\n );\n}\n\nfunction insertTab(editor: IEditor, event: PluginKeyboardEvent) {\n const span = editor.getDocument().createElement('span');\n let searcher = editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return;\n }\n const charsBefore = searcher.getSubStringBefore(Number.MAX_SAFE_INTEGER);\n const numberOfChars = TAB_SPACES - (charsBefore.length % TAB_SPACES);\n let span2: HTMLSpanElement | null = null;\n\n let textContent = '';\n for (let index = 0; index < numberOfChars; index++) {\n textContent += ' ';\n }\n editor.insertNode(span);\n if (span.nextElementSibling && getTagOfNode(span.nextElementSibling) == 'A') {\n span2 = editor.getDocument().createElement('span');\n span2.textContent = ' ';\n editor.insertNode(span2);\n editor.select(createRange(span2, PositionType.Before));\n }\n editor.insertContent(textContent, {\n position: ContentPosition.Range,\n range: createRange(span, PositionType.Begin),\n updateCursor: false,\n });\n editor.select(createRange(span, PositionType.After));\n if (span2) {\n editor.deleteNode(span2);\n }\n}\n","import { AutoLinkFeatures } from './features/autoLinkFeatures';\nimport { CursorFeatures } from './features/cursorFeatures';\nimport { EntityFeatures } from './features/entityFeatures';\nimport { ListFeatures } from './features/listFeatures';\nimport { MarkdownFeatures } from './features/markdownFeatures';\nimport { QuoteFeatures } from './features/quoteFeatures';\nimport { ShortcutFeatures } from './features/shortcutFeatures';\nimport { StructuredNodeFeatures } from './features/structuredNodeFeatures';\nimport { TableFeatures } from './features/tableFeatures';\nimport { TextFeatures } from './features/textFeatures';\nimport { CodeFeatures } from './features/codeFeatures';\nimport {\n BuildInEditFeature,\n ContentEditFeatureSettings,\n PluginEvent,\n} from 'roosterjs-editor-types';\n\nconst allFeatures = {\n ...ListFeatures,\n ...QuoteFeatures,\n ...TableFeatures,\n ...StructuredNodeFeatures,\n ...AutoLinkFeatures,\n ...ShortcutFeatures,\n ...CursorFeatures,\n ...MarkdownFeatures,\n ...EntityFeatures,\n ...TextFeatures,\n ...CodeFeatures,\n};\n\n/**\n * Get all content edit features provided by roosterjs\n */\nexport default function getAllFeatures() {\n return allFeatures as Record>;\n}\n","export { default as ContentEdit } from './ContentEdit';\nexport { default as getAllFeatures } from './getAllFeatures';\n","/**\n * @internal\n * Convert english alphabet numbers into decimal numbers\n * @param letter The letter that needs to be converted\n * @returns\n */\nexport default function convertAlphaToDecimals(letter: string): number | null {\n const alpha = letter.toLocaleLowerCase();\n if (alpha) {\n const size = alpha.length - 1;\n const number = 26 * size + alpha.charCodeAt(size) - 96;\n return number;\n }\n return null;\n}\n","import { BulletListType } from 'roosterjs-editor-types';\n\nconst bulletListType: Record = {\n '*': BulletListType.Disc,\n '-': BulletListType.Dash,\n '--': BulletListType.Square,\n '->': BulletListType.LongArrow,\n '-->': BulletListType.DoubleLongArrow,\n '=>': BulletListType.UnfilledArrow,\n '>': BulletListType.ShortArrow,\n '—': BulletListType.Hyphen,\n};\n\nconst identifyBulletListType = (bullet: string): BulletListType | null => {\n return bulletListType[bullet] || null;\n};\n\n/**\n * @internal\n * @param textBeforeCursor The trigger character\n * @returns The style of a bullet list triggered by a string\n */\nexport default function getAutoBulletListStyle(textBeforeCursor: string): BulletListType | null {\n const trigger = textBeforeCursor.trim();\n const bulletType = identifyBulletListType(trigger);\n return bulletType;\n}\n","import convertAlphaToDecimals from './convertAlphaToDecimals';\nimport { NumberingListType } from 'roosterjs-editor-types';\nimport { VListChain } from 'roosterjs-editor-dom';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: NumberingListType) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle != undefined &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (previousListStyle || (!previousListStyle && text === 'a')) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle != undefined &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (previousListStyle || (!previousListStyle && text === 'A')) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record number | null> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || null,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || null,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || null,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || null,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || null,\n};\n\nconst UpperRomanTypes: Record = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: NumberingListType\n): NumberingListType | null => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : null;\n }\n return null;\n};\n\n/**\n * @internal\n * @param textBeforeCursor The trigger character\n * @param previousListChain @optional This parameters is used to keep the list chain, if the is not a new list\n * @param previousListStyle @optional The list style of the previous list\n * @returns The style of a numbering list triggered by a string\n */\nexport default function getAutoNumberingListStyle(\n textBeforeCursor: string,\n previousListChain?: VListChain[],\n previousListStyle?: NumberingListType\n): NumberingListType | null {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n\n const indexNumber = parseInt(listIndex);\n let index = !isNaN(indexNumber) ? indexNumber : convertAlphaToDecimals(listIndex);\n\n if (!index || index < 1) {\n return null;\n }\n\n if (previousListChain && index > 1) {\n if (\n (previousListChain.length < 1 && numberingTriggers.indexOf(listIndex) < 0) ||\n (previousListChain?.length > 0 &&\n !previousListChain[previousListChain.length - 1]?.canAppendAtCursor(index))\n ) {\n return null;\n }\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(trigger, isDoubleParenthesis, previousListStyle)\n : null;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n","import { createElement } from 'roosterjs-editor-dom';\nimport {\n EditorPlugin,\n IEditor,\n KnownCreateElementDataIndex,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * Context Menu options for ContextMenu plugin\n */\nexport interface ContextMenuOptions {\n /**\n * Render function for the context menu\n * @param container The container HTML element, it will be located at the mouse click position,\n * so the callback just need to render menu content into this container\n * @param onDismiss The onDismiss callback, some menu render need to know this callback so that\n * it can handle the dismiss event\n */\n render: (container: HTMLElement, items: (T | null)[], onDismiss: () => void) => void;\n\n /**\n * Dismiss function for the context menu, it will be called when user wants to dismiss this context menu\n * e.g. user click away so the menu should be dismissed\n * @param container The container HTML element\n */\n dismiss?: (container: HTMLElement) => void;\n\n /**\n * Whether the default context menu is allowed. @default false\n */\n allowDefaultMenu?: boolean;\n}\n\n/**\n * An editor plugin that support showing a context menu using render() function from options parameter\n */\nexport default class ContextMenu implements EditorPlugin {\n private container: HTMLElement | null = null;\n private editor: IEditor | null = null;\n private isMenuShowing: boolean = false;\n\n /**\n * Create a new instance of ContextMenu class\n * @param options An options object to determine how to show/hide the context menu\n */\n constructor(private options: ContextMenuOptions) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContextMenu';\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.onDismiss();\n\n if (this.container?.parentNode) {\n this.container.parentNode.removeChild(this.container);\n this.container = null;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (event.eventType == PluginEventType.ContextMenu && event.items.length > 0) {\n const { rawEvent, items } = event;\n\n this.onDismiss();\n\n if (!this.options.allowDefaultMenu) {\n rawEvent.preventDefault();\n }\n\n if (this.initContainer(rawEvent.pageX, rawEvent.pageY)) {\n this.options.render(this.container!, items as T[], this.onDismiss);\n this.isMenuShowing = true;\n }\n }\n }\n\n private initContainer(x: number, y: number) {\n if (!this.container && this.editor) {\n this.container = createElement(\n KnownCreateElementDataIndex.ContextMenuWrapper,\n this.editor.getDocument()\n ) as HTMLElement;\n this.editor.getDocument().body.appendChild(this.container);\n }\n this.container?.style.setProperty('left', x + 'px');\n this.container?.style.setProperty('top', y + 'px');\n return !!this.container;\n }\n\n private onDismiss = () => {\n if (this.container && this.isMenuShowing) {\n this.options.dismiss?.(this.container);\n this.isMenuShowing = false;\n }\n };\n}\n","export { default as ContextMenu, ContextMenuOptions } from './ContextMenu';\n","import {\n CustomReplacement,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst makeReplacement = (\n sourceString: string,\n replacementHTML: string,\n matchSourceCaseSensitive: boolean,\n shouldReplace?: (\n replacement: CustomReplacement,\n content: string,\n sourceEditor?: IEditor\n ) => boolean\n): CustomReplacement => ({\n sourceString,\n replacementHTML,\n matchSourceCaseSensitive,\n shouldReplace,\n});\n\nconst defaultReplacements: CustomReplacement[] = [\n makeReplacement(':)', '🙂', true),\n makeReplacement(';)', '😉', true),\n makeReplacement(':O', '😲', true),\n makeReplacement(':o', '😯', true),\n makeReplacement('<3', '❤️', true),\n];\n\n/**\n * Wrapper for CustomReplaceContentEditFeature that provides an API for updating the\n * content edit feature\n */\nexport default class CustomReplacePlugin implements EditorPlugin {\n private longestReplacementLength: number | null = null;\n private editor: IEditor | null = null;\n private replacements: CustomReplacement[] | null = null;\n private replacementEndCharacters: Set | null = null;\n\n /**\n * Create instance of CustomReplace plugin\n * @param replacements Replacement rules. If not passed, a default replacement rule set will be applied\n */\n constructor(replacements: CustomReplacement[] = defaultReplacements) {\n this.updateReplacements(replacements);\n }\n\n /**\n * Set the replacements that this plugin is looking for.\n * @param newReplacements new set of replacements for this plugin\n */\n updateReplacements(newReplacements: CustomReplacement[]) {\n this.replacements = newReplacements;\n this.longestReplacementLength = getLongestReplacementSourceLength(this.replacements);\n this.replacementEndCharacters = getReplacementEndCharacters(this.replacements);\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CustomReplace';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n public initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n public dispose(): void {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent) {\n if (event.eventType != PluginEventType.Input || !this.editor || this.editor.isInIME()) {\n return;\n }\n\n // Exit early on input events that do not insert a replacement's final character.\n if (!event.rawEvent.data || !this.replacementEndCharacters?.has(event.rawEvent.data)) {\n return;\n }\n\n // Get the matching replacement\n const searcher = this.editor.getContentSearcherOfCursor(event);\n if (!searcher || this.longestReplacementLength == null) {\n return;\n }\n const stringToSearch = searcher.getSubStringBefore(this.longestReplacementLength);\n\n const replacement = this.getMatchingReplacement(stringToSearch);\n\n if (\n !replacement ||\n (replacement.shouldReplace &&\n searcher &&\n !replacement.shouldReplace(replacement, searcher.getWordBefore(), this.editor))\n ) {\n return;\n }\n\n // Reconstruct a selection of the text on the document that matches the\n // replacement we selected.\n const matchingText = searcher.getSubStringBefore(replacement.sourceString.length);\n const matchingRange = searcher.getRangeFromText(matchingText, true /* exactMatch */);\n\n // parse the html string off the dom and inline the resulting element.\n const document = this.editor.getDocument();\n const parsingSpan = document.createElement('span');\n parsingSpan.innerHTML = this.editor.getTrustedHTMLHandler()(replacement.replacementHTML);\n const nodeToInsert =\n parsingSpan.childNodes.length == 1 ? parsingSpan.childNodes[0] : parsingSpan;\n\n // Switch the node for the selection range\n if (matchingRange) {\n this.editor.addUndoSnapshot(\n () => {\n matchingRange.deleteContents();\n matchingRange.insertNode(nodeToInsert);\n this.editor?.select(nodeToInsert, PositionType.End);\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n }\n }\n\n private getMatchingReplacement(stringToSearch: string): CustomReplacement | null {\n if (stringToSearch.length == 0 || !this.replacements) {\n return null;\n }\n const originalStringToSearch = stringToSearch.replace(/\\s/g, ' ');\n const lowerCaseStringToSearch = originalStringToSearch.toLocaleLowerCase();\n for (const replacement of this.replacements) {\n const [sourceMatch, replacementMatch] = replacement.matchSourceCaseSensitive\n ? [originalStringToSearch, replacement.sourceString]\n : [lowerCaseStringToSearch, replacement.sourceString.toLocaleLowerCase()];\n\n if (\n sourceMatch.substring(sourceMatch.length - replacementMatch.length) ==\n replacementMatch\n ) {\n return replacement;\n }\n }\n return null;\n }\n}\n\nfunction getLongestReplacementSourceLength(replacements: CustomReplacement[]): number {\n return Math.max.apply(\n null,\n replacements.map(replacement => replacement.sourceString.length)\n );\n}\n\nfunction getReplacementEndCharacters(replacements: CustomReplacement[]): Set {\n const endChars = new Set();\n for (let replacement of replacements) {\n const sourceString = replacement.sourceString;\n if (sourceString.length == 0) {\n continue;\n }\n const lastChar = sourceString[sourceString.length - 1];\n if (!replacement.matchSourceCaseSensitive) {\n endChars.add(lastChar.toLocaleLowerCase());\n endChars.add(lastChar.toLocaleUpperCase());\n } else {\n endChars.add(lastChar);\n }\n }\n return endChars;\n}\n","export { default as CustomReplace } from './CustomReplace';\n","import { commitListChains } from 'roosterjs-editor-api';\nimport { VListChain } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\nimport type { CompatibleChangeSource } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Maintain list numbers of list chain when content is modified by cut/paste/drag&drop\n */\nexport default class CutPasteListChain implements EditorPlugin {\n private chains: VListChain[] | null = null;\n private expectedChangeSource: ChangeSource | CompatibleChangeSource | null = null;\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CutPasteListChain';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.disposer = this.editor.addDomEventHandler('drop', this.onDrop);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.disposer?.();\n this.disposer = null;\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 PluginEventType.BeforeCutCopy:\n if (event.isCut) {\n this.cacheListChains(ChangeSource.Cut);\n }\n break;\n\n case PluginEventType.BeforePaste:\n this.cacheListChains(ChangeSource.Paste);\n break;\n\n case PluginEventType.ContentChanged:\n if (\n this.chains &&\n this.chains.length > 0 &&\n this.expectedChangeSource == event.source &&\n this.editor\n ) {\n commitListChains(this.editor, this.chains);\n this.chains = null;\n this.expectedChangeSource = null;\n }\n break;\n }\n }\n\n private onDrop = () => {\n this.cacheListChains(ChangeSource.Drop);\n };\n\n private cacheListChains(source: ChangeSource) {\n const selectedRegions = this.editor?.getSelectedRegions();\n if (selectedRegions) {\n this.chains = VListChain.createListChains(selectedRegions);\n this.expectedChangeSource = source;\n }\n }\n}\n","export { default as CutPasteListChain } from './CutPasteListChain';\n","import { isCharacterValue, isCtrlOrMetaPressed, matchLink } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n DOMEventHandler,\n EditorPlugin,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * An editor plugin that show a tooltip for existing link\n */\nexport default class HyperLink implements EditorPlugin {\n private originalHref: string | null = null;\n private trackedLink: HTMLAnchorElement | null = null;\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Create a new instance of HyperLink class\n * @param getTooltipCallback A callback function to get tooltip text for an existing hyperlink.\n * Default value is to return the href itself. If null, there will be no tooltip text.\n * @param target (Optional) Target window name for hyperlink. If null, will use \"_blank\"\n * @param onLinkClick (Optional) Open link callback (return false to use default behavior)\n */\n constructor(\n private getTooltipCallback: (href: string, a: HTMLAnchorElement) => string = href => href,\n private target?: string,\n private onLinkClick?: (anchor: HTMLAnchorElement, mouseEvent: MouseEvent) => boolean | void\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Hyperlink';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n public initialize(editor: IEditor): void {\n this.editor = editor;\n this.disposer = editor.addDomEventHandler({\n mouseover: this.onMouse,\n mouseout: this.onMouse,\n blur: this.onBlur,\n });\n }\n\n protected onMouse = (e: MouseEvent) => {\n const a = this.editor?.getElementAtCursor(\n 'a[href]',\n e.target\n ) as HTMLAnchorElement | null;\n const href = a && this.tryGetHref(a);\n\n if (href) {\n this.editor?.setEditorDomAttribute(\n 'title',\n e.type == 'mouseover' ? this.getTooltipCallback(href, a) : null\n );\n }\n };\n\n protected onBlur = (e: FocusEvent) => {\n if (this.trackedLink) {\n this.updateLinkHrefIfShouldUpdate();\n }\n\n this.resetLinkTracking();\n };\n\n /**\n * Dispose this plugin\n */\n public dispose(): void {\n if (this.disposer) {\n this.disposer();\n this.disposer = null;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent): void {\n if (\n event.eventType == PluginEventType.MouseUp ||\n (event.eventType == PluginEventType.KeyUp &&\n (!this.isContentEditValue(event.rawEvent) || event.rawEvent.which == Keys.SPACE)) ||\n event.eventType == PluginEventType.ContentChanged\n ) {\n const anchor = this.editor?.getElementAtCursor(\n 'A[href]',\n undefined /*startFrom*/,\n event\n ) as HTMLAnchorElement | null;\n\n const shouldCheckUpdateLink =\n (anchor && anchor !== this.trackedLink) ||\n event.eventType == PluginEventType.KeyUp ||\n event.eventType == PluginEventType.ContentChanged;\n\n if (\n event.eventType == PluginEventType.ContentChanged &&\n event.source == ChangeSource.Keyboard &&\n this.trackedLink != anchor &&\n anchor\n ) {\n // For Keyboard event that causes content change (mostly come from Content Model), this tracked list may be staled.\n // So we need to get an up-to-date link element\n // TODO: This is a temporary solution. Later when Content Model can fully take over this behavior, we can remove this code.\n this.trackedLink = anchor;\n }\n\n if (\n this.trackedLink &&\n (shouldCheckUpdateLink || this.tryGetHref(this.trackedLink) !== this.originalHref)\n ) {\n // If cursor has moved out of previously tracked link\n // update link href if display text doesn't match href anymore.\n if (shouldCheckUpdateLink) {\n this.updateLinkHrefIfShouldUpdate();\n }\n\n // If the link's href value was edited, or the cursor has moved out of the\n // previously tracked link, stop tracking the link.\n this.resetLinkTracking();\n }\n\n // Cache link and href value if its href attribute currently matches its display text\n if (!this.trackedLink && anchor && this.doesLinkDisplayMatchHref(anchor)) {\n this.trackedLink = anchor;\n this.originalHref = this.tryGetHref(anchor);\n }\n }\n\n if (event.eventType == PluginEventType.MouseUp) {\n const anchor = this.editor?.getElementAtCursor(\n 'A',\n event.rawEvent.srcElement\n ) as HTMLAnchorElement | null;\n\n if (anchor) {\n if (this.onLinkClick && this.onLinkClick(anchor, event.rawEvent) !== false) {\n return;\n }\n\n let href: string | null;\n if (\n (href = this.tryGetHref(anchor)) &&\n isCtrlOrMetaPressed(event.rawEvent) &&\n event.rawEvent.button === 0\n ) {\n event.rawEvent.preventDefault();\n try {\n const target = this.target || '_blank';\n const window = this.editor?.getDocument().defaultView;\n window?.open(href, target);\n } catch {}\n }\n }\n }\n }\n\n /**\n * Try get href from an anchor element\n * The reason this is put in a try-catch is that\n * it has been seen that accessing href may throw an exception, in particular on IE/Edge\n */\n private tryGetHref(anchor: HTMLAnchorElement): string | null {\n try {\n return anchor ? anchor.href : null;\n } catch {\n return null;\n }\n }\n\n /**\n * Determines if KeyboardEvent is meant to edit content\n */\n private isContentEditValue(event: KeyboardEvent): boolean {\n return (\n isCharacterValue(event) || event.which == Keys.BACKSPACE || event.which == Keys.DELETE\n );\n }\n\n /**\n * Updates the href of the tracked link if the display text doesn't match href anymore\n */\n private updateLinkHrefIfShouldUpdate() {\n if (this.trackedLink && !this.doesLinkDisplayMatchHref(this.trackedLink)) {\n this.updateLinkHref();\n }\n }\n\n /**\n * Clears the tracked link and its original href value so that it's back to default state\n */\n private resetLinkTracking() {\n this.trackedLink = null;\n this.originalHref = '';\n }\n\n /**\n * Compares the normalized URL of inner text of element to its href to see if they match.\n */\n private doesLinkDisplayMatchHref(element: HTMLAnchorElement): boolean {\n if (element) {\n let display = element.innerText.trim();\n\n // We first escape the display text so that any text passed into the regex is not\n // treated as a special character.\n let escapedDisplay = display.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n let rule = new RegExp(`^(?:https?:\\\\/\\\\/)?${escapedDisplay}\\\\/?`, 'i');\n let href = this.tryGetHref(element);\n if (href !== null) {\n return rule.test(href);\n }\n }\n\n return false;\n }\n\n /**\n * Update href of an element in place to new display text if it's a valid URL\n */\n private updateLinkHref() {\n if (this.trackedLink) {\n let linkData = matchLink(this.trackedLink.innerText.trim());\n if (linkData !== null) {\n this.editor?.addUndoSnapshot(() => {\n this.trackedLink!.href = linkData!.normalizedUrl;\n });\n }\n }\n }\n}\n","export { default as HyperLink } from './HyperLink';\n","import applyChange from './editInfoUtils/applyChange';\nimport canRegenerateImage from './api/canRegenerateImage';\nimport DragAndDropContext, { DNDDirectionX, DnDDirectionY } from './types/DragAndDropContext';\nimport DragAndDropHandler from '../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../pluginUtils/DragAndDropHelper';\nimport getGeneratedImageSize from './editInfoUtils/getGeneratedImageSize';\nimport ImageEditInfo from './types/ImageEditInfo';\nimport ImageHtmlOptions from './types/ImageHtmlOptions';\nimport { Cropper, getCropHTML } from './imageEditors/Cropper';\nimport { deleteEditInfo, getEditInfoFromImage } from './editInfoUtils/editInfo';\nimport { getRotateHTML, Rotator, updateRotateHandleState } from './imageEditors/Rotator';\nimport { ImageEditElementClass } from './types/ImageEditElementClass';\nimport { MIN_HEIGHT_WIDTH } from './constants/constants';\nimport { tryToConvertGifToPng } from './editInfoUtils/tryToConvertGifToPng';\nimport {\n arrayPush,\n Browser,\n createElement,\n getComputedStyle,\n getObjectKeys,\n safeInstanceOf,\n toArray,\n unwrap,\n wrap,\n} from 'roosterjs-editor-dom';\nimport {\n Resizer,\n doubleCheckResize,\n getSideResizeHTML,\n getCornerResizeHTML,\n OnShowResizeHandle,\n getResizeBordersHTML,\n} from './imageEditors/Resizer';\nimport {\n ImageEditOperation,\n ImageEditOptions,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n CreateElementData,\n KnownCreateElementDataIndex,\n ModeIndependentColor,\n SelectionRangeTypes,\n ChangeSource,\n} from 'roosterjs-editor-types';\nimport type { CompatibleImageEditOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst PI = Math.PI;\nconst DIRECTIONS = 8;\nconst DirectionRad = (PI * 2) / DIRECTIONS;\nconst DirectionOrder = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n\n/**\n * Default image edit options\n */\nconst DefaultOptions: Required = {\n borderColor: '#DB626C',\n minWidth: 10,\n minHeight: 10,\n preserveRatio: false,\n minRotateDeg: 5,\n imageSelector: 'img',\n rotateIconHTML: '',\n disableCrop: false,\n disableRotate: false,\n disableSideResize: false,\n onSelectState: ImageEditOperation.ResizeAndRotate,\n};\n\n/**\n * Map the image edit operation to a function that returns editing elements HTML to help\n * build image editing UI\n */\nconst ImageEditHTMLMap = {\n [ImageEditOperation.CornerResize]: getCornerResizeHTML,\n [ImageEditOperation.SideResize]: getSideResizeHTML,\n [ImageEditOperation.Rotate]: getRotateHTML,\n [ImageEditOperation.Crop]: getCropHTML,\n};\n\n/**\n * Default background colors for rotate handle\n */\nconst LIGHT_MODE_BGCOLOR = 'white';\nconst DARK_MODE_BGCOLOR = '#333';\n\n/**\n * ImageEdit plugin provides the ability to edit an inline image in editor, including image resizing, rotation and cropping\n */\nexport default class ImageEdit implements EditorPlugin {\n protected editor: IEditor | null = null;\n protected options: ImageEditOptions;\n private disposer: (() => void) | null = null;\n\n // Allowed editing operations\n private allowedOperations: ImageEditOperation;\n\n // Current editing image\n private image: HTMLImageElement | null = null;\n\n // Image cloned from the current editing image\n private clonedImage: HTMLImageElement | null = null;\n\n // The image wrapper\n private wrapper: HTMLSpanElement | null = null;\n\n // Current edit info of the image. All changes user made will be stored in this object.\n // We use this object to update the editing UI, and finally we will use this object to generate\n // the new image if necessary\n private editInfo: ImageEditInfo | null = null;\n\n // Src of the image before current editing\n private lastSrc: string | null = null;\n\n // Drag and drop helper objects\n private dndHelpers: DragAndDropHelper[] = [];\n\n /**\n * Identify if the image was resized by the user.\n */\n private wasResized: boolean = false;\n\n /**\n * The span element that wraps the image and opens shadow dom\n */\n private shadowSpan: HTMLSpanElement | null = null;\n\n /**\n * The span element that wraps the image and opens shadow dom\n */\n private isCropping: boolean = false;\n\n /**\n * If the image is a gif, this is the png source of the gif image\n */\n private pngSource: string | null = null;\n\n /**\n * Create a new instance of ImageEdit\n * @param options Image editing options\n * @param onShowResizeHandle An optional callback to allow customize resize handle element of image resizing.\n * To customize the resize handle element, add this callback and change the attributes of elementData then it\n * will be picked up by ImageEdit code\n */\n constructor(options?: ImageEditOptions, private onShowResizeHandle?: OnShowResizeHandle) {\n this.options = {\n ...DefaultOptions,\n ...(options || {}),\n };\n\n this.allowedOperations =\n ImageEditOperation.CornerResize |\n (this.options.disableCrop ? 0 : ImageEditOperation.Crop) |\n (this.options.disableRotate ? 0 : ImageEditOperation.Rotate) |\n (this.options.disableSideResize ? 0 : ImageEditOperation.SideResize);\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ImageEdit';\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 this.disposer = editor.addDomEventHandler({\n blur: () => this.onBlur(),\n dragstart: e => {\n if (this.image) {\n e.preventDefault();\n }\n },\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.clearDndHelpers();\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param e PluginEvent object\n */\n onPluginEvent(e: PluginEvent) {\n switch (e.eventType) {\n case PluginEventType.SelectionChanged:\n if (\n e.selectionRangeEx &&\n e.selectionRangeEx.type === SelectionRangeTypes.ImageSelection &&\n this.options &&\n this.options.onSelectState !== undefined\n ) {\n this.setEditingImage(e.selectionRangeEx.image, this.options.onSelectState);\n }\n\n break;\n case PluginEventType.MouseDown:\n // When left click in a image that already in editing mode, do not quit edit mode\n const mouseTarget = e.rawEvent.target;\n const button = e.rawEvent.button;\n if (\n this.shadowSpan !== mouseTarget ||\n (this.shadowSpan === mouseTarget && button !== 0) ||\n this.isCropping\n ) {\n this.setEditingImage(null);\n }\n break;\n case PluginEventType.MouseUp:\n // When mouse up, if the image and the shadow span exists, the editing mode is on.\n // To make sure the selection did not jump to the shadow root, reselect the image.\n if (this.image && this.shadowSpan) {\n this.editor?.select(this.image);\n }\n break;\n case PluginEventType.KeyDown:\n this.setEditingImage(null);\n break;\n case PluginEventType.ContentChanged:\n //After contentChanged event, the current image wrapper may not be valid any more, remove all of them if any\n this.removeWrapper();\n break;\n\n case PluginEventType.ExtractContentWithDom:\n // When extract content, remove all image info since they may not be valid when load the content again\n if (this.options?.imageSelector) {\n toArray(e.clonedRoot.querySelectorAll(this.options.imageSelector)).forEach(\n img => {\n deleteEditInfo(img as HTMLImageElement);\n }\n );\n }\n break;\n case PluginEventType.BeforeDispose:\n this.removeWrapper();\n break;\n }\n }\n\n /**\n * Check if the given image edit operation is allowed by this plugin\n * @param operation The image edit operation to check\n * @returns True means it is allowed, otherwise false\n */\n isOperationAllowed(operation: ImageEditOperation): boolean {\n return !!(this.allowedOperations & operation);\n }\n\n /**\n * Set current image for edit. If there is already image in editing, it will quit editing mode and any pending editing\n * operation will be submitted\n * @param image The image to edit\n * @param operation The editing operation\n */\n setEditingImage(\n image: HTMLImageElement,\n operation: ImageEditOperation | CompatibleImageEditOperation\n ): void;\n\n /**\n * Stop editing image. If there is already image in editing, it will quit editing mode and any pending editing\n * operation will be submitted\n * @param image The image to edit\n * @param selectImage True to select this image after quit editing mode\n */\n setEditingImage(image: null, selectImage?: boolean): void;\n\n setEditingImage(\n image: HTMLImageElement | null,\n operationOrSelect?: ImageEditOperation | CompatibleImageEditOperation | boolean\n ) {\n let operation =\n typeof operationOrSelect === 'number' ? operationOrSelect : ImageEditOperation.None;\n const selectImage = typeof operationOrSelect === 'number' ? false : !!operationOrSelect;\n\n if (\n !image &&\n this.image &&\n this.editor &&\n this.editInfo &&\n this.lastSrc &&\n this.clonedImage\n ) {\n // When there is image in editing, clean up any cached objects and elements\n this.clearDndHelpers();\n\n // If the image is a gif we change the editing image to a new png image, then we need to change the\n // image source to the original gif image\n if (this.pngSource) {\n this.clonedImage.src = this.editInfo.src;\n }\n\n // Apply the changes, and add undo snapshot if necessary\n applyChange(\n this.editor,\n this.image,\n this.editInfo,\n this.lastSrc,\n this.wasResized || this.isCropping,\n this.clonedImage\n );\n\n // Remove editing wrapper\n this.removeWrapper();\n\n this.editor.addUndoSnapshot(() => this.image, ChangeSource.ImageResize);\n\n if (selectImage) {\n this.editor.select(this.image);\n }\n\n this.pngSource = null;\n this.image = null;\n this.editInfo = null;\n this.lastSrc = null;\n this.clonedImage = null;\n this.isCropping = false;\n }\n\n if (!this.image && image?.isContentEditable && this.editor) {\n // If there is new image to edit, enter editing mode for this image\n this.editor.addUndoSnapshot();\n this.image = image;\n\n // Get initial edit info\n this.editInfo = getEditInfoFromImage(image);\n\n //Check if the image is a gif and convert it to a png\n this.pngSource = tryToConvertGifToPng(this.editInfo);\n\n //Check if the image was resized by the user\n this.wasResized = checkIfImageWasResized(this.image);\n\n operation =\n (canRegenerateImage(image) ? operation : ImageEditOperation.Resize) &\n this.allowedOperations;\n\n // Create and update editing wrapper and elements\n this.createWrapper(operation);\n this.updateWrapper();\n\n // Init drag and drop\n this.dndHelpers = [\n ...this.createDndHelpers(ImageEditElementClass.ResizeHandle, Resizer),\n ...this.createDndHelpers(ImageEditElementClass.RotateHandle, Rotator),\n ...this.createDndHelpers(ImageEditElementClass.CropHandle, Cropper),\n ...this.createDndHelpers(ImageEditElementClass.CropContainer, Cropper),\n ];\n\n this.editor.select(this.image);\n }\n }\n\n /**\n * Flip the image.\n * @param image The image to be flipped\n * @param direction\n */\n public flipImage(image: HTMLImageElement, direction: 'vertical' | 'horizontal') {\n this.image = image;\n this.editInfo = getEditInfoFromImage(image);\n const { angleRad } = this.editInfo;\n const isInVerticalPostion =\n (angleRad >= Math.PI / 2 && angleRad < (3 * Math.PI) / 4) ||\n (angleRad <= -Math.PI / 2 && angleRad > (-3 * Math.PI) / 4);\n if (isInVerticalPostion) {\n if (direction === 'horizontal') {\n this.editInfo.flippedVertical = !this.editInfo.flippedVertical;\n } else {\n this.editInfo.flippedHorizontal = !this.editInfo.flippedHorizontal;\n }\n } else {\n if (direction === 'vertical') {\n this.editInfo.flippedVertical = !this.editInfo.flippedVertical;\n } else {\n this.editInfo.flippedHorizontal = !this.editInfo.flippedHorizontal;\n }\n }\n this.createWrapper(ImageEditOperation.Rotate);\n this.updateWrapper();\n this.setEditingImage(null);\n this.editor?.select(image);\n }\n\n /**\n * Rotate the image in radian angle.\n * @param image The image to be rotated\n * @param angleRad The angle in radian that the image must be rotated.\n */\n public rotateImage(image: HTMLImageElement, angleRad: number) {\n this.image = image;\n this.editInfo = getEditInfoFromImage(image);\n this.editInfo.angleRad = this.editInfo.angleRad + angleRad;\n this.createWrapper(ImageEditOperation.Rotate);\n this.updateWrapper();\n this.setEditingImage(null);\n this.editor?.select(image);\n }\n\n /**\n * quit editing mode when editor lose focus\n */\n private onBlur = () => {\n this.setEditingImage(null, false /* selectImage */);\n };\n /**\n * Create editing wrapper for the image\n */\n private createWrapper(operation: ImageEditOperation | CompatibleImageEditOperation) {\n if (this.image && this.editor && this.options && this.editInfo) {\n //Clone the image and insert the clone in a entity\n this.clonedImage = this.image.cloneNode(true) as HTMLImageElement;\n this.clonedImage.removeAttribute('id');\n this.clonedImage.style.removeProperty('max-width');\n this.clonedImage.style.width = this.editInfo.widthPx + 'px';\n this.clonedImage.style.height = this.editInfo.heightPx + 'px';\n this.wrapper = createElement(\n KnownCreateElementDataIndex.ImageEditWrapper,\n this.image.ownerDocument\n ) as HTMLSpanElement;\n this.wrapper?.firstChild?.appendChild(this.clonedImage);\n this.wrapper.style.display = Browser.isSafari ? 'inline-block' : 'inline-flex';\n\n // Cache current src so that we can compare it after edit see if src is changed\n this.lastSrc = this.image.getAttribute('src');\n\n // Set image src to original src to help show editing UI, also it will be used when regenerate image dataURL after editing\n if (this.clonedImage) {\n this.clonedImage.src = this.pngSource ?? this.editInfo.src;\n this.clonedImage.style.position = 'absolute';\n }\n\n // Get HTML for all edit elements (resize handle, rotate handle, crop handle and overlay, ...) and create HTML element\n const options: ImageHtmlOptions = {\n borderColor: getColorString(this.options.borderColor!, this.editor.isDarkMode()),\n rotateIconHTML: this.options.rotateIconHTML!,\n rotateHandleBackColor: this.editor.isDarkMode()\n ? DARK_MODE_BGCOLOR\n : LIGHT_MODE_BGCOLOR,\n isSmallImage: isASmallImage(this.editInfo.widthPx, this.editInfo.heightPx),\n };\n const htmlData: CreateElementData[] = [getResizeBordersHTML(options)];\n\n getObjectKeys(ImageEditHTMLMap).forEach(thisOperation => {\n const element = ImageEditHTMLMap[thisOperation](options, this.onShowResizeHandle);\n if ((operation & thisOperation) == thisOperation && element) {\n arrayPush(htmlData, element);\n }\n });\n\n htmlData.forEach(data => {\n const element = createElement(data, this.image!.ownerDocument);\n if (element && this.wrapper) {\n this.wrapper.appendChild(element);\n }\n });\n this.insertImageWrapper(this.wrapper);\n }\n }\n\n private insertImageWrapper(wrapper: HTMLSpanElement) {\n if (this.image) {\n this.shadowSpan = wrap(this.image, 'span');\n if (this.shadowSpan) {\n const shadowRoot = this.shadowSpan.attachShadow({\n mode: 'open',\n });\n\n this.shadowSpan.style.verticalAlign = 'bottom';\n this.shadowSpan.style.fontSize = '24px';\n\n shadowRoot.appendChild(wrapper);\n }\n }\n }\n\n /**\n * Remove the temp wrapper of the image\n */\n private removeWrapper = () => {\n if (this.shadowSpan) {\n unwrap(this.shadowSpan);\n }\n this.wrapper = null;\n this.shadowSpan = null;\n };\n\n /**\n * Update image edit elements to reflect current editing result\n * @param context\n */\n private updateWrapper = (context?: DragAndDropContext) => {\n const wrapper = this.wrapper;\n if (\n wrapper &&\n this.editInfo &&\n this.image &&\n this.clonedImage &&\n this.options &&\n this.shadowSpan?.parentElement\n ) {\n // Prepare: get related editing elements\n const cropContainers = getEditElements(wrapper, ImageEditElementClass.CropContainer);\n const cropOverlays = getEditElements(wrapper, ImageEditElementClass.CropOverlay);\n const resizeHandles = getEditElements(wrapper, ImageEditElementClass.ResizeHandle);\n const rotateCenter = getEditElements(wrapper, ImageEditElementClass.RotateCenter)[0];\n const rotateHandle = getEditElements(wrapper, ImageEditElementClass.RotateHandle)[0];\n const cropHandles = getEditElements(wrapper, ImageEditElementClass.CropHandle);\n\n // Cropping and resizing will show different UI, so check if it is cropping here first\n this.isCropping = cropContainers.length == 1 && cropOverlays.length == 4;\n const {\n angleRad,\n bottomPercent,\n leftPercent,\n rightPercent,\n topPercent,\n flippedHorizontal,\n flippedVertical,\n } = this.editInfo;\n\n // Width/height of the image\n const {\n targetWidth,\n targetHeight,\n originalWidth,\n originalHeight,\n visibleWidth,\n visibleHeight,\n } = getGeneratedImageSize(this.editInfo, this.isCropping);\n\n const marginHorizontal = (targetWidth - visibleWidth) / 2;\n const marginVertical = (targetHeight - visibleHeight) / 2;\n const cropLeftPx = originalWidth * leftPercent;\n const cropRightPx = originalWidth * rightPercent;\n const cropTopPx = originalHeight * topPercent;\n const cropBottomPx = originalHeight * bottomPercent;\n\n // Update size and margin of the wrapper\n wrapper.style.margin = `${marginVertical}px ${marginHorizontal}px`;\n wrapper.style.transform = `rotate(${angleRad}rad)`;\n setWrapperSizeDimensions(wrapper, this.image, visibleWidth, visibleHeight);\n\n // Update the text-alignment to avoid the image to overflow if the parent element have align center or right\n // or if the direction is Right To Left\n wrapper.style.textAlign = isRtl(this.shadowSpan.parentElement) ? 'right' : 'left';\n\n // Update size of the image\n this.clonedImage.style.width = getPx(originalWidth);\n this.clonedImage.style.height = getPx(originalHeight);\n\n //Update flip direction\n setFlipped(this.clonedImage.parentElement, flippedHorizontal, flippedVertical);\n\n if (this.isCropping) {\n // For crop, we also need to set position of the overlays\n setSize(\n cropContainers[0],\n cropLeftPx,\n cropTopPx,\n cropRightPx,\n cropBottomPx,\n undefined,\n undefined\n );\n setSize(cropOverlays[0], 0, 0, cropRightPx, undefined, undefined, cropTopPx);\n setSize(cropOverlays[1], undefined, 0, 0, cropBottomPx, cropRightPx, undefined);\n setSize(cropOverlays[2], cropLeftPx, undefined, 0, 0, undefined, cropBottomPx);\n setSize(cropOverlays[3], 0, cropTopPx, undefined, 0, cropLeftPx, undefined);\n\n updateHandleCursor(cropHandles, angleRad);\n } else {\n // For rotate/resize, set the margin of the image so that cropped part won't be visible\n this.clonedImage.style.margin = `${-cropTopPx}px 0 0 ${-cropLeftPx}px`;\n\n // Double check resize\n if (context?.elementClass == ImageEditElementClass.ResizeHandle) {\n const clientWidth = wrapper.clientWidth;\n const clientHeight = wrapper.clientHeight;\n this.wasResized = true;\n doubleCheckResize(\n this.editInfo,\n this.options.preserveRatio || false,\n clientWidth,\n clientHeight\n );\n\n this.updateWrapper();\n }\n\n const viewport = this.editor?.getVisibleViewport();\n const isSmall = isASmallImage(targetWidth, targetHeight);\n if (rotateHandle && rotateCenter && viewport) {\n updateRotateHandleState(\n viewport,\n angleRad,\n wrapper,\n rotateCenter,\n rotateHandle,\n isSmall\n );\n }\n\n updateSideHandlesVisibility(resizeHandles, isSmall);\n\n updateHandleCursor(resizeHandles, angleRad);\n }\n }\n };\n\n /**\n * Create drag and drop helpers\n * @param wrapper\n * @param elementClass\n * @param dragAndDrop\n */\n private createDndHelpers(\n elementClass: ImageEditElementClass,\n dragAndDrop: DragAndDropHandler\n ): DragAndDropHelper[] {\n const wrapper = this.wrapper;\n return wrapper && this.editInfo\n ? getEditElements(wrapper, elementClass).map(\n element =>\n new DragAndDropHelper(\n element,\n {\n editInfo: this.editInfo!,\n options: this.options,\n elementClass,\n x: element.dataset.x as DNDDirectionX,\n y: element.dataset.y as DnDDirectionY,\n },\n this.updateWrapper,\n dragAndDrop,\n this.editor ? this.editor.getZoomScale() : 1\n )\n )\n : [];\n }\n\n /**\n * Clean up drag and drop helpers\n */\n private clearDndHelpers() {\n this.dndHelpers?.forEach(helper => helper.dispose());\n this.dndHelpers = [];\n }\n}\n\nfunction setSize(\n element: HTMLElement,\n left: number | undefined,\n top: number | undefined,\n right: number | undefined,\n bottom: number | undefined,\n width: number | undefined,\n height: number | undefined\n) {\n element.style.left = left !== undefined ? getPx(left) : element.style.left;\n element.style.top = top !== undefined ? getPx(top) : element.style.top;\n element.style.right = right !== undefined ? getPx(right) : element.style.right;\n element.style.bottom = bottom !== undefined ? getPx(bottom) : element.style.bottom;\n element.style.width = width !== undefined ? getPx(width) : element.style.width;\n element.style.height = height !== undefined ? getPx(height) : element.style.height;\n}\n\nfunction setWrapperSizeDimensions(\n wrapper: HTMLElement,\n image: HTMLImageElement,\n width: number,\n height: number\n) {\n const hasBorder = image.style.borderStyle;\n if (hasBorder) {\n const borderWidth = image.style.borderWidth ? 2 * parseInt(image.style.borderWidth) : 2;\n wrapper.style.width = getPx(width + borderWidth);\n wrapper.style.height = getPx(height + borderWidth);\n return;\n }\n wrapper.style.width = getPx(width);\n wrapper.style.height = getPx(height);\n}\n\nfunction getPx(value: number): string {\n return value + 'px';\n}\n\nfunction getEditElements(wrapper: HTMLElement, elementClass: ImageEditElementClass): HTMLElement[] {\n return toArray(wrapper.querySelectorAll('.' + elementClass)) as HTMLElement[];\n}\n\nfunction isRtl(element: Node): boolean {\n return safeInstanceOf(element, 'HTMLElement')\n ? getComputedStyle(element, 'direction') == 'rtl'\n : false;\n}\n\nfunction handleRadIndexCalculator(angleRad: number): number {\n let idx = Math.round(angleRad / DirectionRad) % DIRECTIONS;\n return idx < 0 ? idx + DIRECTIONS : idx;\n}\n\nfunction rotateHandles(angleRad: number, y: string = '', x: string = ''): string {\n const radIndex = handleRadIndexCalculator(angleRad);\n const originalDirection = y + x;\n const originalIndex = DirectionOrder.indexOf(originalDirection);\n const rotatedIndex = originalIndex >= 0 && originalIndex + radIndex;\n return rotatedIndex ? DirectionOrder[rotatedIndex % DIRECTIONS] : '';\n}\n\n/**\n * Rotate the resizer and cropper handles according to the image position.\n * @param handles The resizer handles.\n * @param angleRad The angle that the image was rotated.\n */\nfunction updateHandleCursor(handles: HTMLElement[], angleRad: number) {\n handles.forEach(handle => {\n const { y, x } = handle.dataset;\n handle.style.cursor = `${rotateHandles(angleRad, y, x)}-resize`;\n });\n}\n\nfunction updateSideHandlesVisibility(handles: HTMLElement[], isSmall: boolean) {\n handles.forEach(handle => {\n const { y, x } = handle.dataset;\n const coordinate = (y ?? '') + (x ?? '');\n const directions = ['n', 's', 'e', 'w'];\n const isSideHandle = directions.indexOf(coordinate) > -1;\n handle.style.display = isSideHandle && isSmall ? 'none' : '';\n });\n}\n\n/**\n * Check if the current image was resized by the user\n * @param image the current image\n * @returns if the user resized the image, returns true, otherwise, returns false\n */\nfunction checkIfImageWasResized(image: HTMLImageElement): boolean {\n const { width, height, style } = image;\n const isMaxWidthInitial =\n style.maxWidth === '' || style.maxWidth === 'initial' || style.maxWidth === 'auto';\n if (\n isMaxWidthInitial &&\n (isFixedNumberValue(style.height) ||\n isFixedNumberValue(style.width) ||\n isFixedNumberValue(width) ||\n isFixedNumberValue(height))\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isFixedNumberValue(value: string | number) {\n const numberValue = typeof value === 'string' ? parseInt(value) : value;\n return !isNaN(numberValue);\n}\n\nfunction isASmallImage(widthPx: number, heightPx: number): boolean {\n return widthPx && heightPx && (widthPx < MIN_HEIGHT_WIDTH || heightPx < MIN_HEIGHT_WIDTH)\n ? true\n : false;\n}\n\nfunction getColorString(color: string | ModeIndependentColor, isDarkMode: boolean): string {\n if (typeof color === 'string') {\n return color.trim();\n }\n return isDarkMode ? color.darkModeColor.trim() : color.lightModeColor.trim();\n}\n\nfunction setFlipped(\n element: HTMLElement | null,\n flippedHorizontally?: boolean,\n flippedVertically?: boolean\n) {\n if (element) {\n element.style.transform = `scale(${flippedHorizontally ? -1 : 1}, ${\n flippedVertically ? -1 : 1\n })`;\n }\n}\n","/**\n * Check if we can regenerate edited image from the source image.\n * An image can't regenerate result when there is CORS issue of the source content.\n * @param img The image element to test\n * @returns True when we can regenerate the edited image, otherwise false\n */\nexport default function canRegenerateImage(img: HTMLImageElement): boolean {\n if (!img) {\n return false;\n }\n\n try {\n const canvas = img.ownerDocument.createElement('canvas');\n canvas.width = 10;\n canvas.height = 10;\n const context = canvas.getContext('2d');\n if (context) {\n context.drawImage(img, 0, 0);\n context.getImageData(0, 0, 1, 1);\n return true;\n }\n\n return false;\n } catch {\n return false;\n }\n}\n","import getTargetSizeByPercentage from '../editInfoUtils/getTargetSizeByPercentage';\nimport { getEditInfoFromImage } from '../editInfoUtils/editInfo';\n\n/**\n * Check if the image is already resized to the given percentage\n * @param image The image to check\n * @param percentage The percentage to check\n */\nexport default function isResizedTo(image: HTMLImageElement, percentage: number): boolean {\n const editInfo = getEditInfoFromImage(image);\n if (editInfo) {\n const { width, height } = getTargetSizeByPercentage(editInfo, percentage);\n return (\n Math.round(width) == Math.round(editInfo.widthPx) &&\n Math.round(height) == Math.round(editInfo.heightPx)\n );\n }\n return false;\n}\n","import { ChangeSource, IEditor } from 'roosterjs-editor-types';\nimport { deleteEditInfo } from '../editInfoUtils/editInfo';\n\n/**\n * Remove explicit width & height attributes on the image element.\n * @param editor The editor that contains the image\n * @param image The image to remove w/h from\n */\nexport default function resetImage(editor: IEditor, image: HTMLImageElement) {\n editor.addUndoSnapshot(() => {\n image.style.width = '';\n image.style.height = '';\n image.style.maxWidth = '100%';\n image.removeAttribute('width');\n image.removeAttribute('height');\n deleteEditInfo(image);\n }, ChangeSource.ImageResize);\n}\n","import applyChange from '../editInfoUtils/applyChange';\nimport getTargetSizeByPercentage from '../editInfoUtils/getTargetSizeByPercentage';\nimport isResizedTo from './isResizedTo';\nimport { ChangeSource, IEditor } from 'roosterjs-editor-types';\nimport { getEditInfoFromImage } from '../editInfoUtils/editInfo';\n\n/**\n * Resize the image by percentage of its natural size. If the image is cropped or rotated,\n * the final size will also calculated with crop and rotate info.\n * @param editor The editor that contains the image\n * @param image The image to resize\n * @param percentage Percentage to resize to\n * @param minWidth Minimum width\n * @param minHeight Minimum height\n */\nexport default function resizeByPercentage(\n editor: IEditor,\n image: HTMLImageElement,\n percentage: number,\n minWidth: number,\n minHeight: number\n) {\n const editInfo = getEditInfoFromImage(image);\n\n if (!isResizedTo(image, percentage)) {\n loadImage(image, image.src, () => {\n if (!editor.isDisposed() && editor.contains(image) && editInfo) {\n const lastSrc = image.getAttribute('src');\n const { width, height } = getTargetSizeByPercentage(editInfo, percentage);\n editInfo.widthPx = Math.max(width, minWidth);\n editInfo.heightPx = Math.max(height, minHeight);\n\n editor.addUndoSnapshot(() => {\n applyChange(editor, image, editInfo, lastSrc || '', true /*wasResized*/);\n }, ChangeSource.ImageResize);\n editor.select(image);\n }\n });\n }\n}\n\nfunction loadImage(img: HTMLImageElement, src: string, callback: () => void) {\n img.onload = () => {\n img.onload = null;\n img.onerror = null;\n callback();\n };\n img.onerror = () => {\n img.onload = null;\n img.onerror = null;\n callback();\n };\n img.src = src;\n}\n","import { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\n\nexport const RESIZE_HANDLE_SIZE = 10;\nexport const RESIZE_HANDLE_MARGIN = 6;\n\nexport const ROTATE_SIZE = 32;\nexport const ROTATE_GAP = 15;\nexport const DEG_PER_RAD = 180 / Math.PI;\nexport const DEFAULT_ROTATE_HANDLE_HEIGHT = ROTATE_SIZE / 2 + ROTATE_GAP;\nexport const ROTATE_ICON_MARGIN = 8;\nexport const ROTATION: Record = {\n sw: 0,\n nw: 90,\n ne: 180,\n se: 270,\n};\nexport const Xs: DNDDirectionX[] = ['w', '', 'e'];\nexport const Ys: DnDDirectionY[] = ['s', '', 'n'];\n\nexport const ROTATE_WIDTH = 1;\nexport const ROTATE_HANDLE_TOP = ROTATE_GAP + RESIZE_HANDLE_MARGIN;\nexport const CROP_HANDLE_SIZE = 22;\nexport const CROP_HANDLE_WIDTH = 7;\nexport const XS_CROP: DNDDirectionX[] = ['w', 'e'];\nexport const YS_CROP: DnDDirectionY[] = ['s', 'n'];\n\nexport const MIN_HEIGHT_WIDTH = 3 * RESIZE_HANDLE_SIZE + 2 * RESIZE_HANDLE_MARGIN;\n","import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';\nimport generateDataURL from './generateDataURL';\nimport getGeneratedImageSize from './getGeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\nimport { deleteEditInfo, getEditInfoFromImage, saveEditInfo } from './editInfo';\nimport { IEditor, PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Apply changes from the edit info of an image, write result to the image\n * @param editor The editor object that contains the image\n * @param image The image to apply the change\n * @param editInfo Edit info that contains the changed information of the image\n * @param previousSrc Last src value of the image before the change was made\n * @param wasResizedOrCropped if the image was resized or cropped apply the new image dimensions\n * @param editingImage (optional) Image in editing state\n */\nexport default function applyChange(\n editor: IEditor,\n image: HTMLImageElement,\n editInfo: ImageEditInfo,\n previousSrc: string,\n wasResizedOrCropped: boolean,\n editingImage?: HTMLImageElement\n) {\n let newSrc = '';\n\n const initEditInfo = getEditInfoFromImage(editingImage ?? image);\n const state = checkEditInfoState(editInfo, initEditInfo);\n\n switch (state) {\n case ImageEditInfoState.ResizeOnly:\n // For resize only case, no need to generate a new image, just reuse the original one\n newSrc = editInfo.src;\n break;\n case ImageEditInfoState.SameWithLast:\n // For SameWithLast case, image may be resized but the content is still the same with last one,\n // so no need to create a new image, but just reuse last one\n newSrc = previousSrc;\n break;\n case ImageEditInfoState.FullyChanged:\n // For other cases (cropped, rotated, ...) we need to create a new image to reflect the change\n newSrc = generateDataURL(editingImage ?? image, editInfo);\n break;\n }\n\n const srcChanged = newSrc != previousSrc;\n\n if (srcChanged) {\n // If the src is changed, fire an EditImage event so that plugins knows that a new image is used, and can\n // replace the new src with some other string and it will be used and set to the image\n const event = editor.triggerPluginEvent(PluginEventType.EditImage, {\n image: image,\n originalSrc: editInfo.src,\n previousSrc,\n newSrc,\n });\n newSrc = event.newSrc;\n }\n\n if (newSrc == editInfo.src) {\n // If newSrc is the same with original one, it means there is only size change, but no rotation, no cropping,\n // so we don't need to keep edit info, we can delete it\n deleteEditInfo(image);\n } else {\n // Otherwise, save the new edit info to the image so that next time when we edit the same image, we know\n // the edit info\n saveEditInfo(image, editInfo);\n }\n\n // Write back the change to image, and set its new size\n const { targetWidth, targetHeight } = getGeneratedImageSize(editInfo);\n image.src = newSrc;\n\n if (wasResizedOrCropped || state == ImageEditInfoState.FullyChanged) {\n image.width = targetWidth;\n image.height = targetHeight;\n // Remove width/height style so that it won't affect the image size, since style width/height has higher priority\n image.style.removeProperty('width');\n image.style.removeProperty('height');\n image.style.removeProperty('max-width');\n }\n}\n","import ImageEditInfo, { CropInfo, ResizeInfo, RotateInfo } from '../types/ImageEditInfo';\n\nconst RESIZE_KEYS: (keyof ResizeInfo)[] = ['widthPx', 'heightPx'];\nconst ROTATE_KEYS: (keyof RotateInfo)[] = ['angleRad'];\nconst CROP_KEYS: (keyof CropInfo)[] = [\n 'leftPercent',\n 'rightPercent',\n 'topPercent',\n 'bottomPercent',\n];\nconst ROTATE_CROP_KEYS: (keyof RotateInfo | keyof CropInfo)[] = [...ROTATE_KEYS, ...CROP_KEYS];\nconst ALL_KEYS = [...ROTATE_CROP_KEYS, ...RESIZE_KEYS];\n\n/**\n * @internal\n * State of an edit info object for image editing.\n * It is returned by checkEditInfoState() function\n */\nexport const enum ImageEditInfoState {\n /**\n * Invalid edit info. It means the given edit info object is either null,\n * or not all its member are of correct type\n */\n Invalid,\n\n /**\n * The edit info shows that it is only potentially edited by resizing action.\n * Image is not rotated or cropped, or event not changed at all.\n */\n ResizeOnly,\n\n /**\n * When compare with another edit info, this value can be returned when both current\n * edit info and the other one are not been rotated, and they have same cropping\n * percentages. So that they can share the same image src, only width and height\n * need to be adjusted.\n */\n SameWithLast,\n\n /**\n * When this value is returned, it means the image is edited by either cropping or\n * rotation, or both. Image source can't be reused, need to generate a new image src\n * data uri.\n */\n FullyChanged,\n}\n\n/**\n * @internal\n * Check the state of an edit info\n * @param editInfo The edit info to check\n * @param compareTo An optional edit info to compare to\n * @returns If the source edit info is not valid (wrong type, missing field, ...), returns Invalid.\n * If the source edit info doesn't contain any rotation or cropping, returns ResizeOnly\n * If the compare edit info exists, and both of them don't contain rotation, and the have same cropping values,\n * returns SameWithLast. Otherwise, returns FullyChanged\n */\nexport default function checkEditInfoState(\n editInfo: ImageEditInfo,\n compareTo?: ImageEditInfo\n): ImageEditInfoState {\n if (!editInfo || !editInfo.src || ALL_KEYS.some(key => !isNumber(editInfo[key]))) {\n return ImageEditInfoState.Invalid;\n } else if (\n ROTATE_CROP_KEYS.every(key => areSameNumber(editInfo[key], 0)) &&\n !editInfo.flippedHorizontal &&\n !editInfo.flippedVertical &&\n (!compareTo || (compareTo && editInfo.angleRad === compareTo.angleRad))\n ) {\n return ImageEditInfoState.ResizeOnly;\n } else if (\n compareTo &&\n ROTATE_KEYS.every(key => areSameNumber(editInfo[key], 0)) &&\n ROTATE_KEYS.every(key => areSameNumber(compareTo[key], 0)) &&\n CROP_KEYS.every(key => areSameNumber(editInfo[key], compareTo[key])) &&\n compareTo.flippedHorizontal === editInfo.flippedHorizontal &&\n compareTo.flippedVertical === editInfo.flippedVertical\n ) {\n return ImageEditInfoState.SameWithLast;\n } else {\n return ImageEditInfoState.FullyChanged;\n }\n}\n\nfunction isNumber(o: any): o is number {\n return typeof o === 'number';\n}\n\nfunction areSameNumber(n1: number, n2: number) {\n return Math.abs(n1 - n2) < 1e-3;\n}\n","import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';\nimport ImageEditInfo from '../types/ImageEditInfo';\nimport { getMetadata, removeMetadata, setMetadata } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Save edit info to image\n * @param image The image to save edit info to\n * @param editInfo The edit info to save\n */\nexport function saveEditInfo(image: HTMLImageElement, editInfo: ImageEditInfo) {\n if (image) {\n setMetadata(image, editInfo);\n }\n}\n\n/**\n * @internal\n * Delete edit info of an image if any\n * @param image The image to delete edit info from\n */\nexport function deleteEditInfo(image: HTMLImageElement) {\n if (image) {\n removeMetadata(image);\n }\n}\n\n/**\n * @internal\n * Get image edit info from an image. If the image doesn't have edit info, create one from this image.\n * When create new edit info, it will have width/height set to the image's current client width/height, and\n * natural width/height set to the image's natural width/height, src set to its current src, and all\n * other fields set to 0.\n * @param image The image to get edit info from\n */\nexport function getEditInfoFromImage(image: HTMLImageElement): ImageEditInfo {\n const obj = getMetadata(image);\n return !obj || checkEditInfoState(obj) == ImageEditInfoState.Invalid\n ? getInitialEditInfo(image)\n : obj;\n}\n\nfunction getInitialEditInfo(image: HTMLImageElement): ImageEditInfo {\n return {\n src: image.getAttribute('src') || '',\n widthPx: image.clientWidth,\n heightPx: image.clientHeight,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n}\n","import getGeneratedImageSize from './getGeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Generate new dataURL from an image and edit info\n * @param image The image to generate data URL from. It is supposed to have original src loaded\n * @param editInfo Edit info of the image\n * @returns A BASE64 encoded string with image prefix that represents the content of the generated image.\n * If there are rotate/crop/resize info in the edit info, the generated image will also reflect the result.\n * It is possible to throw exception since the original image may not be able to read its content from\n * the code, so better check canRegenerateImage() of the image first.\n * @throws Exception when fail to generate dataURL from canvas\n */\nexport default function generateDataURL(image: HTMLImageElement, editInfo: ImageEditInfo): string {\n const {\n angleRad: angle,\n widthPx: width,\n heightPx: height,\n bottomPercent: bottom,\n leftPercent: left,\n rightPercent: right,\n topPercent: top,\n naturalWidth,\n naturalHeight,\n } = editInfo;\n const imageWidth = naturalWidth * (1 - left - right);\n const imageHeight = naturalHeight * (1 - top - bottom);\n\n // Adjust the canvas size and scaling for high display resolution\n const devicePixelRatio = window.devicePixelRatio || 1;\n const canvas = document.createElement('canvas');\n const { targetWidth, targetHeight } = getGeneratedImageSize(editInfo);\n canvas.width = targetWidth * devicePixelRatio;\n canvas.height = targetHeight * devicePixelRatio;\n\n const context = canvas.getContext('2d');\n if (context) {\n context.scale(devicePixelRatio, devicePixelRatio);\n context.translate(targetWidth / 2, targetHeight / 2);\n context.rotate(angle);\n context.scale(editInfo.flippedHorizontal ? -1 : 1, editInfo.flippedVertical ? -1 : 1);\n context.drawImage(\n image,\n naturalWidth * left,\n naturalHeight * top,\n imageWidth,\n imageHeight,\n -width / 2,\n -height / 2,\n width,\n height\n );\n }\n\n return canvas.toDataURL('image/png', 1.0);\n}\n","import GeneratedImageSize from '../types/GeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Calculate the target size of an image.\n * For image that is not rotated, target size is the same with resizing/cropping size.\n * For image that is rotated, target size is calculated from resizing/cropping size and its rotate angle\n * Say an image is resized to 100w*100h, cropped 25% on each side, then rotated 45deg, so that cropped size\n * will be (both height and width) 100*(1-0.25-0,25) = 50px, then final image size will be 50*sqrt(2) = 71px\n * @param editInfo The edit info to calculate size from\n * @param beforeCrop True to calculate the full size of original image before crop, false to calculate the size\n * after crop\n * @returns A GeneratedImageSize object which contains original, visible and target target width and height of the image\n */\nexport default function getGeneratedImageSize(\n editInfo: ImageEditInfo,\n beforeCrop?: boolean\n): GeneratedImageSize {\n const {\n widthPx: width,\n heightPx: height,\n angleRad: angle,\n leftPercent: left,\n rightPercent: right,\n topPercent: top,\n bottomPercent: bottom,\n } = editInfo;\n\n // Original image size before crop and rotate\n const originalWidth = width / (1 - left - right);\n const originalHeight = height / (1 - top - bottom);\n\n // Visible size\n const visibleWidth = beforeCrop ? originalWidth : width;\n const visibleHeight = beforeCrop ? originalHeight : height;\n\n // Target size after crop and rotate\n const targetWidth =\n Math.abs(visibleWidth * Math.cos(angle)) + Math.abs(visibleHeight * Math.sin(angle));\n const targetHeight =\n Math.abs(visibleWidth * Math.sin(angle)) + Math.abs(visibleHeight * Math.cos(angle));\n\n return {\n targetWidth,\n targetHeight,\n originalWidth,\n originalHeight,\n visibleWidth,\n visibleHeight,\n };\n}\n","import ImageEditInfo from '../types/ImageEditInfo';\nimport ImageSize from '../types/ImageSize';\n\n/**\n * @internal\n * Get target size of an image with a percentage\n * @param editInfo\n * @param percentage\n * @returns [width, height] array\n */\nexport default function getTargetSizeByPercentage(\n editInfo: ImageEditInfo,\n percentage: number\n): ImageSize {\n const {\n naturalWidth,\n naturalHeight,\n leftPercent: left,\n topPercent: top,\n rightPercent: right,\n bottomPercent: bottom,\n } = editInfo;\n const width = naturalWidth * (1 - left - right) * percentage;\n const height = naturalHeight * (1 - top - bottom) * percentage;\n return { width, height };\n}\n","import generateDataURL from './generateDataURL';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Check if the image is a gif, if true, use canvas to convert it to a png.\n * If the image is not a gif, return null.\n * @param image to be converted\n * @returns the converted image data url or null, if the image is not a gif\n */\nexport function tryToConvertGifToPng(editInfo: ImageEditInfo) {\n const { src, widthPx, heightPx, naturalHeight, naturalWidth } = editInfo;\n if (src.indexOf('.gif') > -1 || src.indexOf('image/gif') > -1) {\n try {\n const image = document.createElement('img');\n image.src = src;\n const newEditInfo = {\n src: src,\n widthPx: widthPx,\n heightPx: heightPx,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n return generateDataURL(image, newEditInfo);\n } catch {\n return null;\n }\n }\n return null;\n}\n","import DragAndDropContext, { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport { CreateElementData } from 'roosterjs-editor-types';\nimport { CropInfo } from '../types/ImageEditInfo';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { rotateCoordinate } from './Resizer';\nimport {\n CROP_HANDLE_SIZE,\n CROP_HANDLE_WIDTH,\n ROTATION,\n XS_CROP,\n YS_CROP,\n} from '../constants/constants';\n\n/**\n * @internal\n * Crop handle for DragAndDropHelper\n */\nexport const Cropper: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ editInfo, x, y, options }, e, base, dx, dy) => {\n [dx, dy] = rotateCoordinate(dx, dy, editInfo.angleRad);\n\n const {\n widthPx,\n heightPx,\n leftPercent,\n rightPercent,\n topPercent,\n bottomPercent,\n } = editInfo;\n const { minWidth, minHeight } = options;\n const widthPercent = 1 - leftPercent - rightPercent;\n const heightPercent = 1 - topPercent - bottomPercent;\n\n if (\n widthPercent > 0 &&\n heightPercent > 0 &&\n minWidth !== undefined &&\n minHeight !== undefined\n ) {\n const fullWidth = widthPx / widthPercent;\n const fullHeight = heightPx / heightPercent;\n const newLeft =\n x != 'e'\n ? crop(base.leftPercent, dx, fullWidth, rightPercent, minWidth)\n : leftPercent;\n const newRight =\n x != 'w'\n ? crop(base.rightPercent, -dx, fullWidth, leftPercent, minWidth)\n : rightPercent;\n const newTop =\n y != 's'\n ? crop(base.topPercent, dy, fullHeight, bottomPercent, minHeight)\n : topPercent;\n const newBottom =\n y != 'n'\n ? crop(base.bottomPercent, -dy, fullHeight, topPercent, minHeight)\n : bottomPercent;\n\n editInfo.leftPercent = newLeft;\n editInfo.rightPercent = newRight;\n editInfo.topPercent = newTop;\n editInfo.bottomPercent = newBottom;\n editInfo.widthPx = fullWidth * (1 - newLeft - newRight);\n editInfo.heightPx = fullHeight * (1 - newTop - newBottom);\n\n return true;\n } else {\n return false;\n }\n },\n};\n\nfunction crop(\n basePercentage: number,\n deltaValue: number,\n fullValue: number,\n currentPercentage: number,\n minValue: number\n): number {\n const maxValue = fullValue * (1 - currentPercentage) - minValue;\n const newValue = fullValue * basePercentage + deltaValue;\n const validValue = Math.max(Math.min(newValue, maxValue), 0);\n return validValue / fullValue;\n}\n\n/**\n * @internal\n * Get HTML for crop elements, including 4 overlays (to show dark shadow), 1 container and 4 crop handles\n */\nexport function getCropHTML(): CreateElementData[] {\n const overlayHTML: CreateElementData = {\n tag: 'div',\n style: 'position:absolute;background-color:rgb(0,0,0,0.5);pointer-events:none',\n className: ImageEditElementClass.CropOverlay,\n };\n const containerHTML: CreateElementData = {\n tag: 'div',\n style: 'position:absolute;overflow:hidden',\n className: ImageEditElementClass.CropContainer,\n children: [],\n };\n if (containerHTML) {\n XS_CROP.forEach(x =>\n YS_CROP.forEach(y => containerHTML.children?.push(getCropHTMLInternal(x, y)))\n );\n }\n return [containerHTML, overlayHTML, overlayHTML, overlayHTML, overlayHTML];\n}\n\nfunction getCropHTMLInternal(x: DNDDirectionX, y: DnDDirectionY): CreateElementData {\n const leftOrRight = x == 'w' ? 'left' : 'right';\n const topOrBottom = y == 'n' ? 'top' : 'bottom';\n const rotation = ROTATION[y + x];\n\n return {\n tag: 'div',\n className: ImageEditElementClass.CropHandle,\n style: `position:absolute;pointer-events:auto;cursor:${y}${x}-resize;${leftOrRight}:0;${topOrBottom}:0;width:${CROP_HANDLE_SIZE}px;height:${CROP_HANDLE_SIZE}px;transform:rotate(${rotation}deg)`,\n dataset: { x, y },\n children: getCropHandleHTML(),\n };\n}\n\nfunction getCropHandleHTML(): CreateElementData[] {\n const result: CreateElementData[] = [];\n [0, 1].forEach(layer =>\n [0, 1].forEach(dir => {\n result.push(getCropHandleHTMLInternal(layer, dir));\n })\n );\n return result;\n}\n\nfunction getCropHandleHTMLInternal(layer: number, dir: number): CreateElementData {\n const position =\n dir == 0\n ? `right:${layer}px;height:${CROP_HANDLE_WIDTH - layer * 2}px;`\n : `top:${layer}px;width:${CROP_HANDLE_WIDTH - layer * 2}px;`;\n const bgColor = layer == 0 ? 'white' : 'black';\n\n return {\n tag: 'div',\n style: `position:absolute;left:${layer}px;bottom:${layer}px;${position};background-color:${bgColor}`,\n };\n}\n","import DragAndDropContext, { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport ImageEditInfo, { ResizeInfo } from '../types/ImageEditInfo';\nimport ImageHtmlOptions from '../types/ImageHtmlOptions';\nimport { CreateElementData } from 'roosterjs-editor-types';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { RESIZE_HANDLE_MARGIN, RESIZE_HANDLE_SIZE, Xs, Ys } from '../constants/constants';\n\n/**\n * An optional callback to allow customize resize handle element of image resizing.\n * To customize the resize handle element, add this callback and change the attributes of elementData then it\n * will be picked up by ImageEdit code\n */\nexport interface OnShowResizeHandle {\n (elementData: CreateElementData, x: DNDDirectionX, y: DnDDirectionY): void;\n}\n\nconst enum HandleTypes {\n SquareHandles,\n CircularHandlesCorner,\n}\n\n/**\n * @internal\n * The resize drag and drop handler\n */\nexport const Resizer: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ x, y, editInfo, options }, e, base, deltaX, deltaY) => {\n const ratio =\n base.widthPx > 0 && base.heightPx > 0 ? (base.widthPx * 1.0) / base.heightPx : 0;\n\n [deltaX, deltaY] = rotateCoordinate(deltaX, deltaY, editInfo.angleRad);\n if (options.minWidth !== undefined && options.minHeight !== undefined) {\n const horizontalOnly = x == '';\n const verticalOnly = y == '';\n const shouldPreserveRatio =\n !(horizontalOnly || verticalOnly) && (options.preserveRatio || e.shiftKey);\n let newWidth = horizontalOnly\n ? base.widthPx\n : Math.max(base.widthPx + deltaX * (x == 'w' ? -1 : 1), options.minWidth);\n let newHeight = verticalOnly\n ? base.heightPx\n : Math.max(base.heightPx + deltaY * (y == 'n' ? -1 : 1), options.minHeight);\n\n if (shouldPreserveRatio && ratio > 0) {\n if (ratio > 1) {\n // first sure newHeight is right,calculate newWidth\n newWidth = newHeight * ratio;\n if (newWidth < options.minWidth) {\n newWidth = options.minWidth;\n newHeight = newWidth / ratio;\n }\n } else {\n // first sure newWidth is right,calculate newHeight\n newHeight = newWidth / ratio;\n if (newHeight < options.minHeight) {\n newHeight = options.minHeight;\n newWidth = newHeight * ratio;\n }\n }\n }\n editInfo.widthPx = newWidth;\n editInfo.heightPx = newHeight;\n return true;\n } else {\n return false;\n }\n },\n};\n\n/**\n * @internal Calculate the rotated x and y distance for mouse moving\n * @param x Original x distance\n * @param y Original y distance\n * @param angle Rotated angle, in radian\n * @returns rotated x and y distances\n */\nexport function rotateCoordinate(x: number, y: number, angle: number): [number, number] {\n if (x == 0 && y == 0) {\n return [0, 0];\n }\n const hypotenuse = Math.sqrt(x * x + y * y);\n angle = Math.atan2(y, x) - angle;\n return [hypotenuse * Math.cos(angle), hypotenuse * Math.sin(angle)];\n}\n\n/**\n * @internal\n * Double check if the changed size can satisfy current width of container.\n * When resize an image and preserve ratio, its size can be limited by the size of container.\n * So we need to check the actual size and calculate the size again\n * @param editInfo Edit info of the image\n * @param preserveRatio Whether w/h ratio need to be preserved\n * @param actualWidth Actual width of the image after resize\n * @param actualHeight Actual height of the image after resize\n */\nexport function doubleCheckResize(\n editInfo: ImageEditInfo,\n preserveRatio: boolean,\n actualWidth: number,\n actualHeight: number\n) {\n let { widthPx, heightPx } = editInfo;\n const ratio = heightPx > 0 ? widthPx / heightPx : 0;\n\n actualWidth = Math.floor(actualWidth);\n actualHeight = Math.floor(actualHeight);\n widthPx = Math.floor(widthPx);\n heightPx = Math.floor(heightPx);\n\n editInfo.widthPx = actualWidth;\n editInfo.heightPx = actualHeight;\n\n if (preserveRatio && ratio > 0 && (widthPx !== actualWidth || heightPx !== actualHeight)) {\n if (actualWidth < widthPx) {\n editInfo.heightPx = actualWidth / ratio;\n } else {\n editInfo.widthPx = actualHeight * ratio;\n }\n }\n}\n\n/**\n * @internal\n * Get HTML for resize handles at the corners\n */\nexport function getCornerResizeHTML(\n { borderColor: resizeBorderColor }: ImageHtmlOptions,\n onShowResizeHandle?: OnShowResizeHandle\n): CreateElementData[] {\n const result: CreateElementData[] = [];\n\n Xs.forEach(x =>\n Ys.forEach(y => {\n let elementData =\n (x == '') == (y == '')\n ? getResizeHandleHTML(\n x,\n y,\n resizeBorderColor,\n HandleTypes.CircularHandlesCorner\n )\n : null;\n if (onShowResizeHandle && elementData) {\n onShowResizeHandle(elementData, x, y);\n }\n if (elementData) {\n result.push(elementData);\n }\n })\n );\n return result;\n}\n\n/**\n * @internal\n * Get HTML for resize handles on the sides\n */\nexport function getSideResizeHTML(\n { borderColor: resizeBorderColor }: ImageHtmlOptions,\n onShowResizeHandle?: OnShowResizeHandle\n): CreateElementData[] {\n const result: CreateElementData[] = [];\n Xs.forEach(x =>\n Ys.forEach(y => {\n let elementData =\n (x == '') != (y == '')\n ? getResizeHandleHTML(\n x,\n y,\n resizeBorderColor,\n HandleTypes.CircularHandlesCorner\n )\n : null;\n if (onShowResizeHandle && elementData) {\n onShowResizeHandle(elementData, x, y);\n }\n if (elementData) {\n result.push(elementData);\n }\n })\n );\n return result;\n}\n\n/**\n * @internal\n * Get HTML for resize borders\n */\nexport function getResizeBordersHTML({\n borderColor: resizeBorderColor,\n}: ImageHtmlOptions): CreateElementData {\n return {\n tag: 'div',\n style: `position:absolute;left:0;right:0;top:0;bottom:0;border:solid 2px ${resizeBorderColor};pointer-events:none;`,\n };\n}\n\nfunction getResizeHandleHTML(\n x: DNDDirectionX,\n y: DnDDirectionY,\n borderColor: string,\n handleTypes: HandleTypes\n): CreateElementData | null {\n const leftOrRight = x == 'w' ? 'left' : 'right';\n const topOrBottom = y == 'n' ? 'top' : 'bottom';\n const leftOrRightValue = x == '' ? '50%' : '0px';\n const topOrBottomValue = y == '' ? '50%' : '0px';\n const direction = y + x;\n return x == '' && y == ''\n ? null\n : {\n tag: 'div',\n style: `position:absolute;${leftOrRight}:${leftOrRightValue};${topOrBottom}:${topOrBottomValue}`,\n children: [\n {\n tag: 'div',\n style: setHandleStyle[handleTypes](\n direction,\n topOrBottom,\n leftOrRight,\n borderColor\n ),\n className: ImageEditElementClass.ResizeHandle,\n dataset: { x, y },\n },\n ],\n };\n}\n\nconst setHandleStyle: Record<\n HandleTypes,\n (direction: string, topOrBottom: string, leftOrRight: string, borderColor: string) => string\n> = {\n 0: (direction, leftOrRight, topOrBottom, borderColor) =>\n `position:relative;width:${RESIZE_HANDLE_SIZE}px;height:${RESIZE_HANDLE_SIZE}px;background-color: ${borderColor};cursor:${direction}-resize;${topOrBottom}:-${RESIZE_HANDLE_MARGIN}px;${leftOrRight}:-${RESIZE_HANDLE_MARGIN}px;`,\n 1: (direction, leftOrRight, topOrBottom) =>\n `position:relative;width:${RESIZE_HANDLE_SIZE}px;height:${RESIZE_HANDLE_SIZE}px;background-color: #FFFFFF;cursor:${direction}-resize;${topOrBottom}:-${RESIZE_HANDLE_MARGIN}px;${leftOrRight}:-${RESIZE_HANDLE_MARGIN}px;border-radius:100%;border: 2px solid #bfbfbf;box-shadow: 0px 0.36316px 1.36185px rgba(100, 100, 100, 0.25);`,\n};\n","import DragAndDropContext from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport ImageHtmlOptions from '../types/ImageHtmlOptions';\nimport { CreateElementData, Rect } from 'roosterjs-editor-types';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { RotateInfo } from '../types/ImageEditInfo';\nimport {\n DEFAULT_ROTATE_HANDLE_HEIGHT,\n DEG_PER_RAD,\n RESIZE_HANDLE_MARGIN,\n ROTATE_GAP,\n ROTATE_HANDLE_TOP,\n ROTATE_ICON_MARGIN,\n ROTATE_SIZE,\n ROTATE_WIDTH,\n} from '../constants/constants';\n\n/**\n * @internal\n * The rotate drag and drop handler\n */\nexport const Rotator: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ editInfo, options }, e, base, deltaX, deltaY) => {\n const distance = editInfo.heightPx / 2 + DEFAULT_ROTATE_HANDLE_HEIGHT;\n const newX = distance * Math.sin(base.angleRad) + deltaX;\n const newY = distance * Math.cos(base.angleRad) - deltaY;\n let angleInRad = Math.atan2(newX, newY);\n\n if (!e.altKey && options && options.minRotateDeg !== undefined) {\n const angleInDeg = angleInRad * DEG_PER_RAD;\n const adjustedAngleInDeg =\n Math.round(angleInDeg / options.minRotateDeg) * options.minRotateDeg;\n angleInRad = adjustedAngleInDeg / DEG_PER_RAD;\n }\n\n if (editInfo.angleRad != angleInRad) {\n editInfo.angleRad = angleInRad;\n return true;\n } else {\n return false;\n }\n },\n};\n\n/**\n * @internal\n * Move rotate handle. When image is very close to the border of editor, rotate handle may not be visible.\n * Fix it by reduce the distance from image to rotate handle\n */\nexport function updateRotateHandleState(\n editorRect: Rect,\n angleRad: number,\n wrapper: HTMLElement,\n rotateCenter: HTMLElement,\n rotateHandle: HTMLElement,\n isSmallImage: boolean\n) {\n if (isSmallImage) {\n rotateCenter.style.display = 'none';\n rotateHandle.style.display = 'none';\n return;\n } else {\n rotateCenter.style.display = '';\n rotateHandle.style.display = '';\n const rotateHandleRect = rotateHandle.getBoundingClientRect();\n const wrapperRect = wrapper.getBoundingClientRect();\n\n if (rotateHandleRect && wrapperRect) {\n let adjustedDistance = Number.MAX_SAFE_INTEGER;\n const angle = angleRad * DEG_PER_RAD;\n\n if (angle < 45 && angle > -45 && wrapperRect.top - editorRect.top < ROTATE_GAP) {\n const top = rotateHandleRect.top - editorRect.top;\n adjustedDistance = top;\n } else if (\n angle <= -80 &&\n angle >= -100 &&\n wrapperRect.left - editorRect.left < ROTATE_GAP\n ) {\n const left = rotateHandleRect.left - editorRect.left;\n adjustedDistance = left;\n } else if (\n angle >= 80 &&\n angle <= 100 &&\n editorRect.right - wrapperRect.right < ROTATE_GAP\n ) {\n const right = rotateHandleRect.right - editorRect.right;\n adjustedDistance = Math.min(editorRect.right - wrapperRect.right, right);\n } else if (\n (angle <= -160 || angle >= 160) &&\n editorRect.bottom - wrapperRect.bottom < ROTATE_GAP\n ) {\n const bottom = rotateHandleRect.bottom - editorRect.bottom;\n adjustedDistance = Math.min(editorRect.bottom - wrapperRect.bottom, bottom);\n }\n\n const rotateGap = Math.max(Math.min(ROTATE_GAP, adjustedDistance), 0);\n const rotateTop = Math.max(Math.min(ROTATE_SIZE, adjustedDistance - rotateGap), 0);\n rotateCenter.style.top = -rotateGap - RESIZE_HANDLE_MARGIN + 'px';\n rotateCenter.style.height = rotateGap + 'px';\n rotateHandle.style.top = -rotateTop + 'px';\n }\n }\n}\n\n/**\n * @internal\n * Get HTML for rotate elements, including the rotate handle with icon, and a line between the handle and the image\n */\nexport function getRotateHTML({\n borderColor,\n rotateHandleBackColor,\n}: ImageHtmlOptions): CreateElementData[] {\n const handleLeft = ROTATE_SIZE / 2;\n return [\n {\n tag: 'div',\n className: ImageEditElementClass.RotateCenter,\n style: `position:absolute;left:50%;width:1px;background-color:${borderColor};top:${-ROTATE_HANDLE_TOP}px;height:${ROTATE_GAP}px;margin-left:${-ROTATE_WIDTH}px;`,\n children: [\n {\n tag: 'div',\n className: ImageEditElementClass.RotateHandle,\n style: `position:absolute;background-color:${rotateHandleBackColor};border:solid 1px ${borderColor};border-radius:50%;width:${ROTATE_SIZE}px;height:${ROTATE_SIZE}px;left:-${\n handleLeft + ROTATE_WIDTH\n }px;cursor:move;top:${-ROTATE_SIZE}px;`,\n children: [getRotateIconHTML(borderColor)],\n },\n ],\n },\n ];\n}\n\nfunction getRotateIconHTML(borderColor: string): CreateElementData {\n return {\n tag: 'svg',\n namespace: 'http://www.w3.org/2000/svg',\n style: `width:16px;height:16px;margin: ${ROTATE_ICON_MARGIN}px ${ROTATE_ICON_MARGIN}px`,\n children: [\n {\n tag: 'path',\n namespace: 'http://www.w3.org/2000/svg',\n attributes: {\n d: 'M 10.5,10.0 A 3.8,3.8 0 1 1 6.7,6.3',\n transform: 'matrix(1.1 1.1 -1.1 1.1 11.6 -10.8)',\n ['fill-opacity']: '0',\n stroke: borderColor,\n },\n },\n {\n tag: 'path',\n namespace: 'http://www.w3.org/2000/svg',\n attributes: {\n d: 'M12.0 3.648l.884-.884.53 2.298-2.298-.53z',\n stroke: borderColor,\n },\n },\n ],\n };\n}\n","export { default as ImageEdit } from './ImageEdit';\nexport { default as canRegenerateImage } from './api/canRegenerateImage';\nexport { default as resizeByPercentage } from './api/resizeByPercentage';\nexport { default as isResizedTo } from './api/isResizedTo';\nexport { default as resetImage } from './api/resetImage';\nexport { OnShowResizeHandle } from './imageEditors/Resizer';\nexport { DNDDirectionX, DnDDirectionY } from './types/DragAndDropContext';\n","import ImageEdit from '../ImageEdit/ImageEdit';\nimport { ImageEditOperation } from 'roosterjs-editor-types';\n\n/**\n * @deprecated Use ImageEdit plugin instead\n */\nexport default class ImageResize extends ImageEdit {\n /**\n * Create a new instance of ImageResize\n * @param minWidth Minimum width of image when resize in pixel, default value is 10\n * @param minHeight Minimum height of image when resize in pixel, default value is 10\n * @param selectionBorderColor Color of resize border and handles, default value is #DB626C\n * @param forcePreserveRatio Whether always preserve width/height ratio when resize, default value is false\n * @param resizableImageSelector Selector for picking which image is resizable (e.g. for all images not placeholders), note\n * that the tag must be IMG regardless what the selector is\n */\n constructor(\n minWidth: number = 10,\n minHeight: number = 10,\n selectionBorderColor: string = '#DB626C',\n forcePreserveRatio: boolean = false,\n resizableImageSelector: string = 'img'\n ) {\n super({\n minHeight,\n minWidth,\n borderColor: selectionBorderColor,\n preserveRatio: forcePreserveRatio,\n imageSelector: resizableImageSelector,\n });\n }\n\n /**\n * @deprecated\n */\n showResizeHandle(img: HTMLImageElement) {\n this.setEditingImage(img, ImageEditOperation.Resize);\n }\n\n /**\n * @deprecated\n */\n hideResizeHandle(selectImageAfterUnSelect?: boolean) {\n this.setEditingImage(null /*image*/, selectImageAfterUnSelect);\n }\n}\n","export { default as ImageResize } from './ImageResize';\n","import convertPasteContentForSingleImage from './imageConverter/convertPasteContentForSingleImage';\nimport convertPastedContentForLI from './commonConverter/convertPastedContentForLI';\nimport convertPastedContentFromExcel from './excelConverter/convertPastedContentFromExcel';\nimport convertPastedContentFromOfficeOnline from './officeOnlineConverter/convertPastedContentFromOfficeOnline';\nimport convertPastedContentFromPowerPoint from './pptConverter/convertPastedContentFromPowerPoint';\nimport convertPastedContentFromWord from './wordConverter/convertPastedContentFromWord';\nimport handleLineMerge from './lineMerge/handleLineMerge';\nimport sanitizeHtmlColorsFromPastedContent from './sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent';\nimport sanitizeLinks from './sanitizeLinks/sanitizeLinks';\nimport { chainSanitizerCallback, getPasteSource } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions, KnownPasteSourceType } from 'roosterjs-editor-types';\nimport {\n EditorPlugin,\n IEditor,\n PasteType,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\nconst GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n\n/**\n * Paste plugin, handles BeforePaste event and reformat some special content, including:\n * 1. Content copied from Word\n * 2. Content copied from Excel\n * 3. Content copied from Word Online or OneNote Online\n */\nexport default class Paste implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Construct a new instance of Paste class\n * @param unknownTagReplacement Replace solution of unknown tags, default behavior is to replace with SPAN\n * @param convertSingleImageBody When enabled, if clipboard HTML contains a single image, we reuse the image without modifying the src attribute.\n * When disabled, pasted image src attribute will use the dataUri from clipboard data -- By Default disabled.\n */\n constructor(\n private unknownTagReplacement: string = 'SPAN',\n private convertSingleImageBody: boolean = false\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Paste';\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 /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == PluginEventType.BeforePaste) {\n const { fragment, sanitizingOption } = event;\n const trustedHTMLHandler = this.editor.getTrustedHTMLHandler();\n\n switch (getPasteSource(event, this.convertSingleImageBody)) {\n case KnownPasteSourceType.WordDesktop:\n // Handle HTML copied from Word\n convertPastedContentFromWord(event);\n break;\n case KnownPasteSourceType.ExcelDesktop:\n case KnownPasteSourceType.ExcelOnline:\n if (\n event.pasteType === PasteType.Normal ||\n event.pasteType === PasteType.MergeFormat\n ) {\n // Handle HTML copied from Excel\n convertPastedContentFromExcel(event, trustedHTMLHandler);\n }\n break;\n case KnownPasteSourceType.PowerPointDesktop:\n convertPastedContentFromPowerPoint(event, trustedHTMLHandler);\n break;\n case KnownPasteSourceType.WacComponents:\n convertPastedContentFromOfficeOnline(fragment, sanitizingOption);\n break;\n case KnownPasteSourceType.GoogleSheets:\n sanitizingOption.additionalTagReplacements[GOOGLE_SHEET_NODE_NAME] = '*';\n break;\n case KnownPasteSourceType.SingleImage:\n convertPasteContentForSingleImage(event, trustedHTMLHandler);\n break;\n case KnownPasteSourceType.Default:\n convertPastedContentForLI(fragment);\n handleLineMerge(fragment);\n break;\n }\n sanitizeLinks(sanitizingOption);\n sanitizeHtmlColorsFromPastedContent(sanitizingOption);\n sanitizeBlockStyles(sanitizingOption);\n\n // Replace unknown tags with SPAN\n sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;\n }\n }\n}\n\nfunction sanitizeBlockStyles(sanitizingOption: Required) {\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'display', (value: string) => {\n return value != 'flex'; // return whether we keep the style\n });\n}\n","import {\n changeElementTag,\n getTagOfNode,\n toArray,\n wrap,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert content copied from Teams to be well-formed\n */\nexport default function convertPastedContentForLI(fragment: DocumentFragment) {\n // Sometimes it is possible that we get LI nodes directly under DIV.\n // In that case we need to convert DIV to UL. It is also possible to be OL, but we don't know it.\n // So always assume it is UL here, and later user can change it.\n if (isPureLiNode(fragment)) {\n wrap(toArray(fragment.childNodes), 'UL');\n } else if (\n safeInstanceOf(fragment.firstChild, 'HTMLElement') &&\n isPureLiNode(fragment.firstChild)\n ) {\n changeElementTag(fragment.firstChild as HTMLElement, 'UL');\n }\n}\n\nfunction isPureLiNode(node: ParentNode & Node) {\n if (node && !node.nextSibling && ['OL', 'UL', 'MENU'].indexOf(getTagOfNode(node)) < 0) {\n let hasLi = false;\n if (\n toArray(node.childNodes).every(childNode => {\n if (safeInstanceOf(childNode, 'Text') && !childNode.nodeValue?.trim()) {\n return true;\n } else if (getTagOfNode(childNode) == 'LI') {\n hasLi = true;\n return true;\n } else {\n return false;\n }\n }) &&\n hasLi\n ) {\n return true;\n }\n }\n return false;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { chainSanitizerCallback, getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\n\nconst LAST_TD_END_REGEX = /<\\/\\s*td\\s*>((?!<\\/\\s*tr\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_END_REGEX = /<\\/\\s*tr\\s*>((?!<\\/\\s*table\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_REGEX = /]*>[^<]*/i;\nconst LAST_TABLE_REGEX = /]*>[^<]*/i;\nconst DEFAULT_BORDER_STYLE = 'solid 1px #d4d4d4';\n\n/**\n * @internal\n * Convert pasted content from Excel, add borders when source doc doesn't have a border\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromExcel(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, sanitizingOption, htmlBefore, clipboardData } = event;\n const html = clipboardData.html ? excelHandler(clipboardData.html, htmlBefore) : undefined;\n\n if (html && clipboardData.html != html) {\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n\n // For Excel Online\n const firstChild = fragment.firstChild;\n if (firstChild && firstChild.childNodes.length > 0 && getTagOfNode(firstChild) == 'DIV') {\n const tableFound = Array.from(firstChild.childNodes).every((child: Node) => {\n // Tables pasted from Excel Online should be of the format: 0 to N META tags and 1 TABLE tag\n return getTagOfNode(child) == 'META'\n ? true\n : getTagOfNode(child) == 'TABLE' && child == firstChild.lastChild;\n });\n\n // Extract Table from Div\n if (tableFound && firstChild.lastChild) {\n event.fragment.replaceChildren(firstChild.lastChild);\n }\n }\n\n chainSanitizerCallback(sanitizingOption.elementCallbacks, 'TD', element => {\n if (element.style.borderStyle == 'none') {\n element.style.border = DEFAULT_BORDER_STYLE;\n }\n return true;\n });\n}\n\n/**\n * @internal Export for test only\n * @param html Source html\n */\nexport function excelHandler(html: string, htmlBefore: string): string {\n if (html.match(LAST_TD_END_REGEX)) {\n const trMatch = htmlBefore.match(LAST_TR_REGEX);\n const tr = trMatch ? trMatch[0] : '';\n html = tr + html + '';\n }\n if (html.match(LAST_TR_END_REGEX)) {\n let tableMatch = htmlBefore.match(LAST_TABLE_REGEX);\n let table = tableMatch ? tableMatch[0] : '';\n html = table + html + '
                ';\n }\n\n return html;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content if there are HTML and Image data in the Clipboard\n * @param event The BeforePaste event\n */\nexport default function convertPasteContentForSingleImage(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n const { html, image } = clipboardData;\n\n if (html && image) {\n //If there are Html in the clipboard, and the html body only have one img children, use the HTML\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n}\n","export { default as Paste } from './Paste';\n","import {\n changeElementTag,\n ContentTraverser,\n findClosestElementAncestor,\n getBlockElementAtNode,\n getNextLeafSibling,\n getPreviousLeafSibling,\n getTagOfNode,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Process pasted content, if there are multiple blocks that are not wrapped by a shared ancestor node,\n * change the tag of first and last node to be SPAN so that it will be merged into current block\n * @param root Root node of content to process\n */\nexport default function handleLineMerge(root: Node) {\n const traverser = ContentTraverser.createBodyTraverser(root);\n const blocks: { start: Node; end: Node }[] = [];\n\n for (\n let block = traverser?.currentBlockElement;\n block;\n block = traverser.getNextBlockElement()\n ) {\n blocks.push({\n start: block.getStartNode(),\n end: block.getEndNode(),\n });\n }\n\n if (blocks.length > 0) {\n const blocksLength = blocks.length - 1;\n processBlock(blocks[0]);\n processBlock(blocks[blocksLength]);\n checkAndAddBr(root, blocks[0], true /*isFirst*/);\n checkAndAddBr(root, blocks[blocksLength], false /*isFirst*/, blocks[0]);\n }\n}\n\nfunction processBlock(block: { start: Node; end: Node }) {\n const { start, end } = block;\n\n if (start == end && getTagOfNode(start) == 'DIV') {\n const node = changeElementTag(start as HTMLElement, 'SPAN') as Node;\n block.start = node;\n block.end = node;\n\n if (node && node.lastChild && getTagOfNode(node.lastChild) == 'BR') {\n node.removeChild(node.lastChild);\n }\n } else if (getTagOfNode(end) == 'BR') {\n const node = end.ownerDocument?.createTextNode('');\n if (node) {\n end.parentNode?.insertBefore(node, end);\n block.end = node;\n end.parentNode?.removeChild(end);\n }\n }\n}\n\nfunction checkAndAddBr(\n root: Node,\n block: { start: Node; end: Node },\n isFirst: boolean,\n firstBlock?: { start: Node; end: Node }\n) {\n const blockElement = getBlockElementAtNode(root, block.start);\n const sibling = isFirst\n ? getNextLeafSibling(root, block.end)\n : getPreviousLeafSibling(root, block.start);\n\n if (!sibling) {\n return;\n }\n\n if (blockElement?.contains(sibling)) {\n const br = block.start.ownerDocument?.createElement('br');\n if (br) {\n const blockToUse = isFirst ? block.end : block.start;\n blockToUse.parentNode?.insertBefore(br, isFirst ? block.end.nextSibling : block.start);\n }\n } else if (\n firstBlock &&\n firstBlock.end == firstBlock.start &&\n getTagOfNode(firstBlock.end) == 'SPAN'\n ) {\n // If the first block and the last block are Siblings, add a BR before so the only two\n // lines that are being pasted are not merged.\n const previousSibling = getPreviousLeafSibling(root, block.start);\n if (\n firstBlock.end.contains(previousSibling) &&\n !findClosestElementAncestor(block.start, root, 'li')\n ) {\n const br = block.start.ownerDocument?.createElement('br');\n if (br) {\n block.start.parentNode?.insertBefore(br, block.start);\n }\n }\n }\n}\n","/**\n * @internal\n * Type that holds all the info of a consecutive list item block.\n */\nexport default interface ListItemBlock {\n /**\n * The first element in block of list item from pasted word online document.\n */\n startElement: Element | null;\n\n /**\n * The last element in block of list item from pasted word online document.\n */\n endElement: Element | null;\n\n /**\n * The position where the processed bulleted list should be inserted.\n */\n insertPositionNode: Node | null;\n\n /**\n * The list of containers that wraps each list item.\n */\n listItemContainers: Element[];\n}\n\n/**\n * @internal\n * Initialize an empty ListItemBlock\n */\nexport function createListItemBlock(listItem: Element | null = null): ListItemBlock {\n return {\n startElement: listItem,\n endElement: listItem,\n insertPositionNode: null,\n listItemContainers: listItem ? [listItem] : [],\n };\n}\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\nimport convertPastedContentFromWordOnline, {\n isWordOnlineWithList,\n} from './convertPastedContentFromWordOnline';\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer';\nconst TABLE_TEMP_ELEMENTS_QUERY = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n]\n .map(className => `.${className}`)\n .join(',');\n/**\n * @internal\n * Convert pasted content from Office Online\n * Once it is known that the document is from WAC\n * We need to remove the display property and margin from all the list item\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromOfficeOnline(\n fragment: DocumentFragment,\n sanitizingOption: Required\n) {\n fragment.querySelectorAll(WAC_IDENTIFY_SELECTOR).forEach((el: Element) => {\n const element = el as HTMLElement;\n element.style.removeProperty('display');\n element.style.removeProperty('margin');\n });\n // call conversion function if the pasted content is from word online and\n // has list element in the pasted content.\n if (isWordOnlineWithList(fragment)) {\n convertPastedContentFromWordOnline(fragment);\n }\n\n // Remove \"border:none\" for image to fix image resize behavior\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\n // displayed incorrectly when resize it. So we need to drop this style\n chainSanitizerCallback(\n sanitizingOption.cssStyleCallbacks,\n 'border',\n (value, element) => element.tagName != 'IMG' || value != 'none'\n );\n\n fragment\n .querySelectorAll(TABLE_TEMP_ELEMENTS_QUERY)\n .forEach(node => node.parentElement?.removeChild(node));\n}\n","import ListItemBlock, { createListItemBlock } from './ListItemBlock';\n\nimport {\n splitParentNode,\n getNextLeafSibling,\n getFirstLeafNode,\n getTagOfNode,\n collapseNodes,\n unwrap,\n toArray,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst WORD_ONLINE_IDENTIFYING_SELECTOR =\n 'div.ListContainerWrapper>ul[class^=\"BulletListStyle\"],div.ListContainerWrapper>ol[class^=\"NumberListStyle\"],span.WACImageContainer > img';\nconst LIST_CONTAINER_ELEMENT_CLASS_NAME = 'ListContainerWrapper';\nconst IMAGE_CONTAINER_ELEMENT_CLASS_NAME = 'WACImageContainer';\n\n//When the list style is a symbol and the value is not in the clipboard, WordOnline\nconst VALID_LIST_STYLE_CHAR_CODES = [\n '111', //'o'\n '9643', //'▫'\n '9830', //'♦'\n];\n\n/**\n * @internal\n */\nexport function isWordOnlineWithList(fragment: DocumentFragment): boolean {\n return !!(fragment && fragment.querySelector(WORD_ONLINE_IDENTIFYING_SELECTOR));\n}\n\n// Word Online pasted content DOM structure as of July 12th 2019\n//\n// \n//
                ----------> this layer may exist depend on the content user paste\n//
                ----------> text content\n//

                \n//
                \n//
                ----------> list items: for unordered list, all the items on the same level is under the same wrapper\n//
                  list items in the same list can be divided into different ListItemWrapper\n//
                • list items in the same list can also be divided into different Outline Group;\n//
                • \n//
                \n//
                \n//
                \n//
                \n//
                ----------> list items: for ordered list, each items has it's own wrapper\n//
                  \n//
                1. \n//
                \n//
                \n//
                \n//
                  \n//
                1. \n//
                \n//
                \n//
                \n// \n//\n//\n\n/**\n * @internal\n * Convert text copied from word online into text that's workable with rooster editor\n * @param fragment Document fragment that is being pasted into editor.\n */\nexport default function convertPastedContentFromWordOnline(fragment: DocumentFragment) {\n sanitizeListItemContainer(fragment);\n const listItemBlocks: ListItemBlock[] = getListItemBlocks(fragment);\n\n listItemBlocks.forEach(itemBlock => {\n // There are cases where consecutive List Elements are separated into different nodes:\n //
                \n //
                \n //
                  \n //
                  \n //
                  \n //
                    \n //
                    \n //
                    \n //
                    \n //
                    \n //
                      \n //
                      \n //
                      \n // in the above case we want to collapse the two root level div into one and unwrap the list item nodes.\n // after the following flattening the list will become following:\n //\n //
                      \n //
                        \n //
                        \n //
                        \n //
                          \n //
                          \n //
                          \n //
                            \n //
                            \n // Then we are start processing.\n flattenListBlock(fragment, itemBlock);\n\n // Find the node to insertBefore, which is next sibling node of the end of a listItemBlock.\n itemBlock.insertPositionNode = itemBlock.endElement?.nextSibling ?? null;\n\n let convertedListElement: Element | undefined = undefined;\n const doc = fragment.ownerDocument;\n\n itemBlock.listItemContainers.forEach(listItemContainer => {\n let listType: 'OL' | 'UL' | null = getContainerListType(listItemContainer); // list type that is contained by iterator.\n if (listType) {\n // Initialize processed element with proper listType if this is the first element\n if (!convertedListElement) {\n convertedListElement = createNewList(listItemContainer, doc, listType);\n }\n\n // Get all list items(
                          1. ) in the current iterator element.\n const currentListItems = toArray(listItemContainer.querySelectorAll('li'));\n currentListItems.forEach(item => {\n // If item is in root level and the type of list changes then\n // insert the current list into body and then reinitialize the convertedListElement\n // Word Online is using data-aria-level to determine the the depth of the list item.\n const itemLevel = parseInt(item.getAttribute('data-aria-level') ?? '');\n // In first level list, there are cases where a consecutive list item DIV may have different list type\n // When that happens we need to insert the processed elements into the document, then change the list type\n // and keep the processing going.\n if (\n convertedListElement &&\n getTagOfNode(convertedListElement) != listType &&\n itemLevel == 1 &&\n listType\n ) {\n insertConvertedListToDoc(convertedListElement, fragment, itemBlock);\n convertedListElement = createNewList(listItemContainer, doc, listType);\n }\n if (convertedListElement && listType) {\n insertListItem(convertedListElement, item, listType, doc);\n }\n });\n }\n });\n if (convertedListElement) {\n insertConvertedListToDoc(convertedListElement, fragment, itemBlock);\n }\n\n // Once we finish the process the list items and put them into a list.\n // After inserting the processed element,\n // we need to remove all the non processed node from the parent node.\n const parentContainer = itemBlock.startElement?.parentNode;\n if (parentContainer) {\n itemBlock.listItemContainers.forEach(listItemContainer => {\n parentContainer.removeChild(listItemContainer);\n });\n }\n });\n\n const imageNodes = getImageNodes(fragment);\n imageNodes.forEach(node => {\n // Structure when pasting Word Wac Image as of 10/22/2021\n // \n // \n // \n // \n // \n //\n // Since the second span inside of WACImageContainer have style display block it displays an additional space at the bottom of the image.\n // Removing the nodes that are not img will resolve the additional space\n if (safeInstanceOf(node, 'HTMLSpanElement')) {\n node.childNodes.forEach(childNode => {\n if (getTagOfNode(childNode) != 'IMG') {\n childNode.parentElement?.removeChild(childNode);\n }\n });\n }\n });\n}\n\nfunction createNewList(listItemContainer: Element, doc: Document, tag: 'OL' | 'UL') {\n const newList = doc.createElement(tag);\n const startAttribute = listItemContainer.firstElementChild?.getAttribute('start');\n if (startAttribute) {\n newList.setAttribute('start', startAttribute);\n }\n return newList;\n}\n\n/**\n * The node processing is based on the premise of only ol/ul is in ListContainerWrapper class\n * However the html might be malformed, this function is to split all the other elements out of ListContainerWrapper\n * @param fragment pasted document that contains all the list element.\n */\nfunction sanitizeListItemContainer(fragment: DocumentFragment) {\n const listItemContainerListEl = toArray(\n fragment.querySelectorAll(WORD_ONLINE_IDENTIFYING_SELECTOR)\n );\n listItemContainerListEl.forEach(el => {\n const replaceRegex = new RegExp(`\\\\b${LIST_CONTAINER_ELEMENT_CLASS_NAME}\\\\b`, 'g');\n if (el.previousSibling) {\n const prevParent = splitParentNode(el, true) as HTMLElement;\n prevParent.className = prevParent.className.replace(replaceRegex, '');\n }\n if (el.nextSibling) {\n const nextParent = splitParentNode(el, false) as HTMLElement;\n nextParent.className = nextParent.className.replace(replaceRegex, '');\n }\n });\n}\n\n/**\n * Take all the list items in the document, and group the consecutive list times in a list block;\n * @param fragment pasted document that contains all the list element.\n */\nfunction getListItemBlocks(fragment: DocumentFragment): ListItemBlock[] {\n const listElements = fragment.querySelectorAll('.' + LIST_CONTAINER_ELEMENT_CLASS_NAME);\n const result: ListItemBlock[] = [];\n let curListItemBlock: ListItemBlock | null = null;\n for (let i = 0; i < listElements.length; i++) {\n let curItem = listElements[i];\n if (!curListItemBlock) {\n curListItemBlock = createListItemBlock(curItem);\n } else {\n const { listItemContainers } = curListItemBlock;\n const lastItemInCurBlock = listItemContainers[listItemContainers.length - 1];\n if (\n curItem == lastItemInCurBlock.nextSibling ||\n (lastItemInCurBlock.parentNode &&\n getFirstLeafNode(curItem) ==\n getNextLeafSibling(lastItemInCurBlock.parentNode, lastItemInCurBlock))\n ) {\n listItemContainers.push(curItem);\n curListItemBlock.endElement = curItem;\n } else {\n curListItemBlock.endElement = lastItemInCurBlock;\n result.push(curListItemBlock);\n curListItemBlock = createListItemBlock(curItem);\n }\n }\n }\n\n if (curListItemBlock && curListItemBlock.listItemContainers.length > 0) {\n result.push(curListItemBlock);\n }\n\n return result;\n}\n\n/**\n * Flatten the list items, so that all the consecutive list items are under the same parent.\n * @param fragment Root element of that contains the element.\n * @param listItemBlock The list item block needed to be flattened.\n */\nfunction flattenListBlock(fragment: DocumentFragment, listItemBlock: ListItemBlock) {\n if (listItemBlock.startElement && listItemBlock.endElement) {\n const collapsedListItemSections = collapseNodes(\n fragment,\n listItemBlock.startElement,\n listItemBlock.endElement,\n true\n );\n collapsedListItemSections.forEach(section => {\n if (getTagOfNode(section.firstChild) == 'DIV') {\n unwrap(section);\n }\n });\n }\n}\n\n/**\n * Get the list type that the container contains. If there is no list in the container\n * return null;\n * @param listItemContainer Container that contains a list\n */\nfunction getContainerListType(listItemContainer: Element): 'OL' | 'UL' | null {\n const tag = getTagOfNode(listItemContainer.firstChild);\n return tag == 'UL' || tag == 'OL' ? tag : null;\n}\n\n/**\n * Insert list item into the correct position of a list\n * @param listRootElement Root element of the list that is accepting a coming element.\n * @param itemToInsert List item that needed to be inserted.\n * @param listType Type of list(ul/ol)\n */\nfunction insertListItem(\n listRootElement: Element,\n itemToInsert: HTMLElement,\n listType: 'UL' | 'OL',\n doc: HTMLDocument\n): void {\n if (!listType) {\n return;\n }\n // Get item level from 'data-aria-level' attribute\n let itemLevel = parseInt(itemToInsert.getAttribute('data-aria-level') ?? '');\n\n // Try to reuse the List Marker\n let style = itemToInsert.getAttribute('data-leveltext');\n if (\n listType == 'UL' &&\n style &&\n VALID_LIST_STYLE_CHAR_CODES.indexOf(style.charCodeAt(0).toString()) > -1\n ) {\n itemToInsert.style.listStyleType = `\"${style} \"`;\n }\n\n let curListLevel = listRootElement; // Level iterator to find the correct place for the current element.\n // if the itemLevel is 1 it means the level iterator is at the correct place.\n while (itemLevel > 1) {\n if (!curListLevel.firstChild) {\n // If the current level is empty, create empty list within the current level\n // then move the level iterator into the next level.\n curListLevel.appendChild(doc.createElement(listType));\n if (curListLevel.firstElementChild) {\n curListLevel = curListLevel.firstElementChild;\n }\n } else {\n // If the current level is not empty, the last item in the needs to be a UL or OL\n // and the level iterator should move to the UL/OL at the last position.\n let lastChild = curListLevel.lastElementChild;\n let lastChildTag = getTagOfNode(lastChild);\n if (lastChild && (lastChildTag == 'UL' || lastChildTag == 'OL')) {\n // If the last child is a list(UL/OL), then move the level iterator to last child.\n curListLevel = lastChild;\n } else {\n // If the last child is not a list, then append a new list to the level\n // and move the level iterator to the new level.\n curListLevel.appendChild(doc.createElement(listType));\n if (curListLevel.lastElementChild) {\n curListLevel = curListLevel.lastElementChild;\n }\n }\n }\n itemLevel--;\n }\n\n // Once the level iterator is at the right place, then append the list item in the level.\n curListLevel.appendChild(itemToInsert);\n}\n\n/**\n * Insert the converted list item into the correct place.\n * @param convertedListElement List element that is converted from list item block\n * @param fragment Root element of that contains the converted listItemBlock\n * @param listItemBlock List item block that was converted.\n */\nfunction insertConvertedListToDoc(\n convertedListElement: Element,\n fragment: DocumentFragment,\n listItemBlock: ListItemBlock\n) {\n if (!convertedListElement) {\n return;\n }\n\n const { insertPositionNode } = listItemBlock;\n if (insertPositionNode) {\n const parentNode = insertPositionNode.parentNode;\n if (parentNode) {\n parentNode.insertBefore(convertedListElement, insertPositionNode);\n }\n } else {\n const parentNode = listItemBlock.startElement?.parentNode;\n if (parentNode) {\n parentNode.appendChild(convertedListElement);\n } else {\n fragment.appendChild(convertedListElement);\n }\n }\n}\n\nfunction getImageNodes(fragment: DocumentFragment) {\n return fragment.querySelectorAll('.' + IMAGE_CONTAINER_ELEMENT_CLASS_NAME);\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content from PowerPoint\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromPowerPoint(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n\n if (clipboardData.html && !clipboardData.text && clipboardData.image) {\n // It is possible that PowerPoint copied both image and HTML but not plain text.\n // We always prefer HTML if any.\n const doc = new DOMParser().parseFromString(\n trustedHTMLHandler(clipboardData.html),\n 'text/html'\n );\n\n moveChildNodes(fragment, doc?.body);\n }\n}\n","/**\n * @internal\n * List of deprecated colors that should be removed\n */\n\nexport const DeprecatedColorList: string[] = [\n 'activeborder',\n 'activecaption',\n 'appworkspace',\n 'background',\n 'buttonhighlight',\n 'buttonshadow',\n 'captiontext',\n 'inactiveborder',\n 'inactivecaption',\n 'inactivecaptiontext',\n 'infobackground',\n 'infotext',\n 'menu',\n 'menutext',\n 'scrollbar',\n 'threeddarkshadow',\n 'threedface',\n 'threedhighlight',\n 'threedlightshadow',\n 'threedfhadow',\n 'window',\n 'windowframe',\n 'windowtext',\n];\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { DeprecatedColorList } from './deprecatedColorList';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Remove the deprecated colors from pasted content\n * @param sanitizingOption the sanitizingOption of BeforePasteEvent\n * */\nexport default function sanitizeHtmlColorsFromPastedContent(\n sanitizingOption: Required\n) {\n ['color', 'background-color'].forEach(property => {\n chainSanitizerCallback(\n sanitizingOption.cssStyleCallbacks,\n property,\n (value: string) => DeprecatedColorList.indexOf(value) < 0\n );\n });\n}\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];\n\n/**\n * @internal\n * Clear local paths and remove link\n * @param sanitizingOption the sanitizingOption of BeforePasteEvent\n * */\nexport default function sanitizeLinks(sanitizingOption: Required) {\n chainSanitizerCallback(\n sanitizingOption.attributeCallbacks,\n 'href',\n (value: string, element: HTMLElement) => validateLink(value, element)\n );\n}\n\nfunction validateLink(link: string, htmlElement: HTMLElement) {\n let url;\n try {\n url = new URL(link);\n } catch {\n url = undefined;\n }\n\n /* whitelist supported protocols */\n if (url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) > -1) {\n return link;\n }\n htmlElement.removeAttribute('href');\n return '';\n}\n","import ListMetadata from './ListMetadata';\n\n/**\n * @internal\n * Holds the ids for the lists already seen for a specified level\n */\nexport default interface LevelLists {\n /**\n * The metadata for the lists seen at this level\n * key: word list id, value: list metadata\n */\n listsMetadata: { [key: string]: ListMetadata };\n\n /** Unique id of the list currently at this level */\n currentUniqueListId: number;\n}\n\n/**\n * @internal\n * create an empty LevelLists\n */\nexport function createLevelLists(): LevelLists {\n return {\n listsMetadata: {},\n currentUniqueListId: -1,\n };\n}\n","import LevelLists, { createLevelLists } from './LevelLists';\nimport ListItemMetadata from './ListItemMetadata';\nimport ListMetadata from './ListMetadata';\n\n/**\n * @internal\n * Contains the state of the WordConverter when called back after yielding\n */\nexport default interface WordConverterArguments {\n /** The list of element nodes being processed */\n nodes: NodeListOf;\n\n /** The index of the element currently being processed */\n currentIndex: number;\n\n /**\n * Holds the metadata for all the lists we have found\n * key: unique list id, value: list metadata\n */\n lists: { [key: string]: ListMetadata };\n\n /**\n * Stores the list item meta data of the items we\n * have found that need to be converted\n */\n listItems: ListItemMetadata[];\n\n /**\n * This array holds the list id of the lists we are processing\n * that are next to each other.. This list will be used to determine\n * if list items are next to each other or if they are separated...\n * Separated items are ignored from the conversion\n */\n\n currentListIdsByLevels: LevelLists[];\n\n /** Remembers the item that was last processed */\n lastProcessedItem: HTMLElement | null;\n}\n\n/**\n * @internal\n * create an empty WordConverterArguments\n */\nexport function createWordConverterArguments(\n nodes: NodeListOf\n): WordConverterArguments {\n return {\n nodes: nodes,\n currentIndex: 0,\n lists: {},\n listItems: [],\n currentListIdsByLevels: [createLevelLists()],\n lastProcessedItem: null,\n };\n}\n","import { NodeType } from 'roosterjs-editor-types';\n\n/** NodeId attribute */\nconst NODE_ID_ATTRIBUTE_NAME = 'NodeId';\n\n/**\n * @internal\n * Custom data for dom elements\n */\nexport default interface WordCustomData {\n /** The dict storing custom data, key is element Id, value is dictionary */\n dict: { [key: string]: { [key: string]: number } };\n\n /** Next node Id to use */\n nextNodeId: number;\n}\n\n/**\n * @internal\n * Create an empty WordCustomData\n */\nexport function createCustomData(): WordCustomData {\n return {\n dict: {},\n nextNodeId: 1,\n };\n}\n\n/**\n * @internal\n * Sets the specified object data\n */\nexport function setObject(wordCustomData: WordCustomData, element: Node, key: string, value: any) {\n // Get the id for the element\n if (element.nodeType == NodeType.Element) {\n let id = getAndSetNodeId(wordCustomData, element as HTMLElement);\n if (id != '') {\n // Get the values for the element\n if (!wordCustomData.dict[id]) {\n // First time dictionary creation\n wordCustomData.dict[id] = {};\n }\n wordCustomData.dict[id][key] = value;\n }\n }\n}\n\n/**\n * @internal\n * Reads the specified object data\n */\nexport function getObject(wordCustomData: WordCustomData, element: Node, key: string): any {\n if (element.nodeType == NodeType.Element) {\n let id = getAndSetNodeId(wordCustomData, element as HTMLElement);\n if (id != '') {\n return wordCustomData.dict[id] && wordCustomData.dict[id][key];\n }\n }\n\n return null;\n}\n\n/**\n * Get the unique id for the specified node...\n */\nfunction getAndSetNodeId(wordCustomData: WordCustomData, element: HTMLElement): string {\n let id = element.getAttribute(NODE_ID_ATTRIBUTE_NAME);\n if (!id) {\n id = wordCustomData.nextNodeId.toString();\n wordCustomData.nextNodeId++;\n element.setAttribute(NODE_ID_ATTRIBUTE_NAME, id);\n }\n return id;\n}\n","import { CssStyleCallbackMap, ElementCallbackMap } from 'roosterjs-editor-types';\nimport {\n chainSanitizerCallback,\n getStyles,\n moveChildNodes,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst MSO_COMMENT_PARENT = 'mso-comment-parent';\nconst MSO_COMMENT_REFERENCE = 'mso-comment-reference';\nconst MSO_COMMENT_DATE = 'mso-comment-date';\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\nconst MSO_COMMENT_CONTINUATION = 'mso-comment-continuation';\nconst MSO_ELEMENT = 'mso-element';\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\nconst MSO_COMMENT_DONE = 'mso-comment-done';\n\n/**\n * @internal\n * Removes comments when pasting Word content.\n */\nexport default function commentsRemoval(\n elementCallbacks: ElementCallbackMap,\n styleCallbacks: CssStyleCallbackMap\n) {\n // 1st Step, Remove SPAN elements added after each comment.\n // Word adds multiple elements for comments as SPAN elements.\n // In this step we remove these elements:\n // Structure as of 4/18/2022\n // 1.  \n // 2. \n // \n // \n // [RS2]\n //  \n // \n // \n // \n chainSanitizerCallback(elementCallbacks, 'SPAN', element => {\n const styles = getStyles(element);\n if (styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT) {\n element.parentElement?.removeChild(element);\n }\n return true;\n });\n\n // 2nd Step, Modify Anchor elements.\n // 1. When the element was selected to add a comment in Word, the selection is converted to\n // an anchor element, so we change the tag to span.\n // 2. Word also adds some Anchor elements with the following structure:\n // Structure as of 4/18/2022\n // [SS3]\n // In this step we remove this Anchor elements.\n chainSanitizerCallback(elementCallbacks, 'A', element => {\n if (\n safeInstanceOf(element, 'HTMLAnchorElement') &&\n MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)\n ) {\n element.parentElement?.removeChild(element);\n }\n return true;\n });\n\n // 3rd Step, remove List of comments.\n // When the document have a long thread of comments, these comments are appended\n // at the end of the copied fragment, we also need to remove it.\n // Structure as of 4/18/2022\n //\n //
                            \n //
                            \n //
                            ...
                            \n //
                            ...
                            \n //
                            ...
                            \n //
                            \n //
                          2. \n chainSanitizerCallback(elementCallbacks, 'DIV', element => {\n const styles = getStyles(element);\n if (styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST) {\n moveChildNodes(element);\n }\n return true;\n });\n\n /**\n * Remove styles related to Office Comments that can cause unwanted behaviors\n * depending on the user client\n */\n [\n MSO_COMMENT_REFERENCE,\n MSO_COMMENT_DATE,\n MSO_COMMENT_PARENT,\n MSO_COMMENT_CONTINUATION,\n MSO_COMMENT_DONE,\n ].forEach(style => chainSanitizerCallback(styleCallbacks, style, () => false));\n}\n","import commentsRemoval from './commentsRemoval';\nimport { BeforePasteEvent } from 'roosterjs-editor-types';\nimport { chainSanitizerCallback, moveChildNodes } from 'roosterjs-editor-dom';\nimport { createWordConverter } from './wordConverter';\nimport { createWordConverterArguments } from './WordConverterArguments';\nimport { processNodeConvert, processNodesDiscovery } from './converterUtils';\n\nconst PERCENTAGE_REGEX = /%/;\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\nconst LIST_ELEMENTS_SELECTOR = 'p,h1,h2,h3,h4,h5,h6';\n\n/**\n * @internal\n * Converts all the Word generated list items in the specified node into standard HTML UL and OL tags\n */\nexport default function convertPastedContentFromWord(event: BeforePasteEvent) {\n const { sanitizingOption, fragment } = event;\n\n // Preserve when its innerHTML is \" \" to avoid dropping an empty line\n chainSanitizerCallback(sanitizingOption.elementCallbacks, 'O:P', element => {\n moveChildNodes(element);\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); //  \n return true;\n });\n\n let wordConverter = createWordConverter();\n\n // First find all the nodes that we need to check for list item information\n // This call will return all the p and heading elements under the root node.. These are the elements that\n // Word uses a list items, so we'll only process them and avoid walking the whole tree.\n let elements = fragment.querySelectorAll(LIST_ELEMENTS_SELECTOR) as NodeListOf;\n if (elements.length > 0) {\n wordConverter.wordConverterArgs = createWordConverterArguments(elements);\n if (processNodesDiscovery(wordConverter)) {\n processNodeConvert(wordConverter);\n }\n }\n\n // If the List style contains marginBottom = 0in, the space after the list is going to be too narrow.\n // Remove this style so the list displays correctly.\n ['OL', 'UL'].forEach(tag => {\n chainSanitizerCallback(sanitizingOption.elementCallbacks, tag, element => {\n if (element.style.marginBottom == '0in') {\n element.style.marginBottom = '';\n }\n\n return true;\n });\n });\n\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'line-height', (value: string) => {\n let parsedLineHeight: number;\n if (\n PERCENTAGE_REGEX.test(value) &&\n !isNaN((parsedLineHeight = parseInt(value))) &&\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\n ) {\n return false;\n }\n return true;\n });\n\n commentsRemoval(sanitizingOption.elementCallbacks, sanitizingOption.cssStyleCallbacks);\n}\n","import ListItemMetadata from './ListItemMetadata';\nimport ListMetadata from './ListMetadata';\nimport WordConverter from './wordConverter';\nimport WordConverterArguments from './WordConverterArguments';\nimport { createLevelLists } from './LevelLists';\nimport { getObject, setObject } from './WordCustomData';\nimport { getStyles, getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/** Word list metadata style name */\nconst LOOKUP_DEPTH = 5;\n\n/** Name for the word list id property in the custom data */\nconst UNIQUE_LIST_ID_CUSTOM_DATA = 'UniqueListId';\n\n/** Word list metadata style name */\nconst MSO_LIST_STYLE_NAME = 'mso-list';\n\n/** Regular expression to match line breaks */\nconst LINE_BREAKS = /[\\n|\\r]/gi;\n\n/**\n * @internal\n * Handles the pass 1: Discovery\n * During discovery, we'll parse the metadata out of the elements and store it in the list items dictionary.\n * We'll detect cases where the list items for a particular ordered list are not next to each other. Word does these\n * for numbered headers, and we don't want to convert those, because the numbering would be completely wrong.\n */\nexport function processNodesDiscovery(wordConverter: WordConverter): boolean {\n let args = wordConverter.wordConverterArgs;\n if (!args) {\n return false;\n }\n while (args.currentIndex < args.nodes.length) {\n let node = args.nodes.item(args.currentIndex);\n\n // Try to get the list metadata for the specified node\n let itemMetadata = getListItemMetadata(node);\n if (itemMetadata) {\n let levelInfo =\n args.currentListIdsByLevels[itemMetadata.level - 1] || createLevelLists();\n args.currentListIdsByLevels[itemMetadata.level - 1] = levelInfo;\n\n // We need to drop some list information if this is not an item next to another\n if (args.lastProcessedItem && getRealPreviousSibling(node) != args.lastProcessedItem) {\n // This list item is not next to the previous one. This means that there is some content in between them\n // so we need to reset our list of list ids per level\n resetCurrentLists(args);\n }\n\n // Get the list metadata for the list that will hold this item\n let listMetadata = levelInfo.listsMetadata[itemMetadata.wordListId];\n if (!listMetadata) {\n // Get the first item fake bullet.. This will be used later to check what is the right type of list\n let firstFakeBullet = getFakeBulletText(node, LOOKUP_DEPTH);\n\n // This is a the first item of a list.. We'll create the list metadata using the information\n // we already have from this first item\n listMetadata = {\n numberOfItems: 0,\n uniqueListId: wordConverter.nextUniqueId++,\n firstFakeBullet: firstFakeBullet,\n\n // If the bullet we got is empty or not found, we ignore the list out.. this means\n // that this is not an item we need to convert of that the format doesn't match what\n // we are expecting\n ignore: !firstFakeBullet || firstFakeBullet.length == 0,\n\n // We'll use the first fake bullet to try to figure out which type of list we create. If this list has a second\n // item, we'll perform a better comparison, but for one item lists, this will be check that will determine the list type\n tagName: getFakeBulletTagName(firstFakeBullet),\n };\n levelInfo.listsMetadata[itemMetadata.wordListId] = listMetadata;\n args.lists[listMetadata.uniqueListId.toString()] = listMetadata;\n } else if (!listMetadata.ignore && listMetadata.numberOfItems == 1) {\n // This is the second item we've seen for this list.. we'll compare the 2 fake bullet\n // items we have an decide if we create ordered or unordered lists based on this.\n // This is the best way we can do this since we cannot read the metadata that Word\n // puts in the head of the HTML...\n let secondFakeBullet = getFakeBulletText(node, LOOKUP_DEPTH);\n listMetadata.tagName =\n listMetadata.firstFakeBullet == secondFakeBullet ? 'UL' : 'OL';\n }\n\n // Set the unique id to the list\n itemMetadata.uniqueListId = listMetadata.uniqueListId;\n\n // Check if we need to ignore this list... we'll either know already that we need to ignore\n // it, or we'll know it because the previous list items are not next to this one\n if (\n listMetadata.ignore ||\n (listMetadata.tagName == 'OL' &&\n listMetadata.numberOfItems > 0 &&\n levelInfo.currentUniqueListId != itemMetadata.uniqueListId)\n ) {\n // We need to ignore this item... and we also need to forget about the lists that\n // are not at the root level\n listMetadata.ignore = true;\n args.currentListIdsByLevels[0].currentUniqueListId = -1;\n args.currentListIdsByLevels = args.currentListIdsByLevels.slice(0, 1);\n } else {\n // This is an item we don't need to ignore... If added lists deep under this one before\n // we'll drop their ids from the list of ids per level.. this is because this list item\n // breaks the deeper lists.\n if (args.currentListIdsByLevels.length > itemMetadata.level) {\n args.currentListIdsByLevels = args.currentListIdsByLevels.slice(\n 0,\n itemMetadata.level\n );\n }\n\n levelInfo.currentUniqueListId = itemMetadata.uniqueListId;\n\n // Add the list item into the list of items to be processed\n args.listItems.push(itemMetadata);\n listMetadata.numberOfItems++;\n }\n\n args.lastProcessedItem = node;\n } else {\n // Here, we know that this is not a list item, but we'll want to check if it is one \"no bullet\" list items...\n // these can be created by creating a bullet and hitting delete on it it... The content will continue to be indented, but there will\n // be no bullet and the list will continue correctly after that. Visually, it looks like the previous item has multiple lines, but\n // the HTML generated has multiple paragraphs with the same class. We'll merge these when we find them, so the logic doesn't skips\n // the list conversion thinking that the list items are not together...\n let last = args.lastProcessedItem;\n if (\n last &&\n getRealPreviousSibling(node) == last &&\n node.tagName == last.tagName &&\n node.className == last.className\n ) {\n // Add 2 line breaks and move all the nodes to the last item\n last.appendChild(last.ownerDocument.createElement('br'));\n last.appendChild(last.ownerDocument.createElement('br'));\n moveChildNodes(last, node, true /*keepExistingChildren*/);\n\n // Remove the item that we don't need anymore\n node.parentNode?.removeChild(node);\n }\n }\n\n // Move to the next element are return true if more elements need to be processed\n args.currentIndex++;\n }\n return args.listItems.length > 0;\n}\n\n/**\n * @internal\n * Handles the pass 2: Conversion\n * During conversion, we'll go over the elements that belong to a list that we've marked as a list to convert, and we'll perform the\n * conversion needed\n */\nexport function processNodeConvert(wordConverter: WordConverter): boolean {\n let args = wordConverter.wordConverterArgs;\n if (args) {\n args.currentIndex = 0;\n\n while (args.currentIndex < args.listItems.length) {\n let metadata = args.listItems[args.currentIndex];\n let node = metadata.originalNode;\n let listMetadata = args.lists[metadata.uniqueListId.toString()];\n if (!listMetadata.ignore) {\n // We have a list item that we need to convert, get or create the list\n // that hold this item out\n let list = getOrCreateListForNode(wordConverter, node, metadata, listMetadata);\n if (list) {\n // Clean the element out.. this call gets rid of the fake bullet and unneeded nodes\n cleanupListIgnore(node, LOOKUP_DEPTH);\n\n // Create a new list item and transfer the children\n let li = node.ownerDocument.createElement('LI');\n if (getTagOfNode(node).startsWith('H')) {\n const clone = node.cloneNode(true /* deep */) as HTMLHeadingElement;\n clone.style.textIndent = '';\n clone.style.marginLeft = '';\n clone.style.marginRight = '';\n li.appendChild(clone);\n } else {\n moveChildNodes(li, node);\n }\n\n // Append the list item into the list\n list.appendChild(li);\n\n // Remove the node we just converted\n node.parentNode?.removeChild(node);\n\n if (listMetadata.tagName == 'UL') {\n wordConverter.numBulletsConverted++;\n } else {\n wordConverter.numNumberedConverted++;\n }\n }\n }\n args.currentIndex++;\n }\n }\n return wordConverter.numBulletsConverted > 0 || wordConverter.numNumberedConverted > 0;\n}\n\n/**\n * Gets or creates the list (UL or OL) that holds this item out based on the\n * items content and the specified metadata\n */\nfunction getOrCreateListForNode(\n wordConverter: WordConverter,\n node: HTMLElement,\n metadata: ListItemMetadata,\n listMetadata: ListMetadata\n): Node {\n // First get the last list next to this node under the specified level. This code\n // path will return the list or will create lists if needed\n let list = recurringGetOrCreateListAtNode(node, metadata.level, listMetadata);\n\n // Here use the unique list ID to detect if we have the right list...\n // it is possible to have 2 different lists next to each other with different formats, so\n // we want to detect this an create separate lists for those cases\n let listId = getObject(wordConverter.wordCustomData, list, UNIQUE_LIST_ID_CUSTOM_DATA);\n\n // If we have a list with and ID, but the ID is different than the ID for this list item, this\n // is a completely new list, so we'll append a new list for that\n if ((listId && listId != metadata.uniqueListId) || (!listId && list.firstChild)) {\n let newList = node.ownerDocument.createElement(listMetadata.tagName);\n list.parentNode?.insertBefore(newList, list.nextSibling);\n list = newList;\n }\n\n // Set the list id into the custom data\n setObject(\n wordConverter.wordCustomData,\n list,\n UNIQUE_LIST_ID_CUSTOM_DATA,\n metadata.uniqueListId\n );\n\n // This call will convert the list if needed to the right type of list required. This can happen\n // on the cases where the first list item for this list is located after a deeper list. for that\n // case, we will have created a UL for it, and we may need to convert it\n return convertListIfNeeded(wordConverter, list, listMetadata);\n}\n\n/**\n * Converts the list between UL and OL if needed, by using the fake bullet and\n * information already stored in the list itself\n */\nfunction convertListIfNeeded(\n wordConverter: WordConverter,\n list: Node,\n listMetadata: ListMetadata\n): Node {\n // Check if we need to convert the list out\n if (listMetadata.tagName != getTagOfNode(list)) {\n // We have the wrong list type.. convert it, set the id again and transfer all the children\n let newList = list.ownerDocument?.createElement(listMetadata.tagName);\n if (newList) {\n setObject(\n wordConverter.wordCustomData,\n newList,\n UNIQUE_LIST_ID_CUSTOM_DATA,\n getObject(wordConverter.wordCustomData, list, UNIQUE_LIST_ID_CUSTOM_DATA)\n );\n moveChildNodes(newList, list);\n\n list.parentNode?.insertBefore(newList, list);\n list.parentNode?.removeChild(list);\n list = newList;\n }\n }\n\n return list;\n}\n\n/**\n * Gets or creates the specified list\n */\nfunction recurringGetOrCreateListAtNode(\n node: HTMLElement,\n level: number,\n listMetadata: ListMetadata | null\n): Node {\n let parent: Node | null = null;\n let possibleList: Node | null = null;\n if (level == 1) {\n // Root case, we'll check if the list is the previous sibling of the node\n possibleList = getRealPreviousSibling(node);\n } else {\n // If we get here, we are looking for level 2 or deeper... get the upper list\n // and check if the last element is a list\n parent = recurringGetOrCreateListAtNode(node, level - 1, null);\n if (parent.lastChild) {\n possibleList = parent.lastChild;\n }\n }\n\n // Check the element that we got and verify that it is a list\n if (possibleList && possibleList.nodeType == NodeType.Element) {\n let tag = getTagOfNode(possibleList);\n if (tag == 'UL' || tag == 'OL') {\n // We have a list.. use it\n return possibleList;\n }\n }\n\n // If we get here, it means we don't have a list and we need to create one\n // this code path will always create new lists as UL lists\n let newList = node.ownerDocument?.createElement(listMetadata ? listMetadata.tagName : 'UL');\n if (level == 1) {\n // For level 1, we'll insert the list before the node\n node.parentNode?.insertBefore(newList, node);\n } else {\n // Any level 2 or above, we insert the list as the last\n // child of the upper level list\n parent?.appendChild(newList);\n }\n\n return newList;\n}\n\n/**\n * Cleans up the node children by removing the children marked as mso-list: Ignore.\n * This nodes hold the fake bullet information that Word puts in and when\n * conversion is happening, we want to get rid of these elements\n */\nfunction cleanupListIgnore(node: Node, levels: number) {\n let nodesToRemove: Node[] = [];\n\n for (let child: Node | null = node.firstChild; child; child = child.nextSibling) {\n if (child) {\n // Clean up the item internally first if we need to based on the number of levels\n if (child && child.nodeType == NodeType.Element && levels > 1) {\n cleanupListIgnore(child, levels - 1);\n }\n\n // Try to convert word comments into ignore elements if we haven't done so for this element\n child = fixWordListComments(child, true /*removeComments*/);\n\n // Check if we can remove this item out\n if (isEmptySpan(child) || isIgnoreNode(child)) {\n nodesToRemove.push(child);\n }\n }\n }\n\n nodesToRemove.forEach(child => node.removeChild(child));\n}\n\n/**\n * Reads the word list meta dada out of the specified node. If the node\n * is not a Word list item, it returns null.\n */\nfunction getListItemMetadata(node: HTMLElement): ListItemMetadata | null {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyleValue(node, MSO_LIST_STYLE_NAME);\n if (listAttribute && listAttribute.length > 0) {\n try {\n // Word mso-list property holds 3 space separated values in the following format: lst1 level1 lfo0\n // Where:\n // (0) List identified for the metadata in the <head> of the document. We cannot read the <head> meta data\n // (1) Level of the list. This also maps to the <head> metadata that we cannot read, but\n // for almost all cases, it maps to the list indentation (or level). We'll use it as the\n // list indentation value\n // (2) Contains a specific list identifier.\n // Example value: \"l0 level1 lfo1\"\n let listProps = listAttribute.split(' ');\n if (listProps.length == 3) {\n return {\n level: parseInt(listProps[1].substr('level'.length)),\n wordListId: listAttribute,\n originalNode: node,\n uniqueListId: 0,\n };\n }\n } catch (e) {}\n }\n }\n return null;\n}\n\nfunction isFakeBullet(fakeBullet: string): boolean {\n return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;\n}\n\n/** Given a fake bullet text, returns the type of list that should be used for it */\nfunction getFakeBulletTagName(fakeBullet: string): string {\n return isFakeBullet(fakeBullet) ? 'UL' : 'OL';\n}\n\n/**\n * Finds the fake bullet text out of the specified node and returns it. For images, it will return\n * a bullet string. If not found, it returns null...\n */\nfunction getFakeBulletText(node: Node, levels: number): string {\n // Word uses the following format for their bullets:\n // <p style=\"mso-list:l1 level1 lfo2\">\n // <span style=\"...\">\n // <span style=\"mso-list:Ignore\">1.<span style=\"...\">      </span></span>\n // </span>\n // Content here...\n // </p>\n //\n // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That\n // text or image node will be the fake bullet we are looking for\n let result: string = '';\n let child: Node | null = node.firstChild;\n while (!result && child) {\n // First, check if we need to convert the Word list comments into real elements\n child = fixWordListComments(child, true /*removeComments*/);\n\n // Check if this is the node that holds the fake bullets (mso-list: Ignore)\n if (isIgnoreNode(child)) {\n // Yes... this is the node that holds either the text or image data\n result = child.textContent?.trim() ?? '';\n\n // This is the case for image case\n if (result.length == 0) {\n result = 'o';\n }\n } else if (child.nodeType == NodeType.Element && levels > 1) {\n // If this is an element and we are not in the last level, try to get the fake bullet\n // out of the child\n result = getFakeBulletText(child, levels - 1);\n }\n\n child = child.nextSibling;\n }\n\n return result;\n}\n\n/**\n * If the specified element is a Word List comments, this code verifies and fixes\n * the markup when needed to ensure that Chrome bullet conversions work as expected\n * -----\n * We'll convert <!--[if !supportLists]--> and <!--[endif]--> comments into\n * <span style=\"mso-list:Ignore\"></span>... Chrome has a bug where it drops the\n * styles of the span, but we'll use these comments to recreate them out\n */\nfunction fixWordListComments(child: Node, removeComments: boolean): Node {\n if (child.nodeType == NodeType.Comment) {\n let value = (child as Comment).data;\n if (value && value.trim().toLowerCase() == '[if !supportlists]') {\n // We have a list ignore start, find the end.. We know is not more than\n // 3 nodes away, so we'll optimize our checks\n let nextElement: Node | null = child;\n let endComment: Node | null = null;\n for (let j = 0; j < 4; j++) {\n nextElement = getRealNextSibling(nextElement);\n if (!nextElement) {\n break;\n }\n if (nextElement.nodeType == NodeType.Comment) {\n value = (nextElement as Comment).data;\n if (value && value.trim().toLowerCase() == '[endif]') {\n endComment = nextElement;\n break;\n }\n }\n }\n\n // if we found the end node, wrap everything out\n if (endComment) {\n let newSpan = child.ownerDocument?.createElement('span');\n newSpan?.setAttribute('style', 'mso-list: ignore');\n\n nextElement = getRealNextSibling(child);\n while (nextElement != endComment) {\n nextElement = nextElement?.nextSibling as HTMLElement;\n if (nextElement.previousSibling) {\n newSpan?.appendChild(nextElement.previousSibling);\n }\n }\n\n // Insert the element out and use that one as the current child\n if (newSpan) {\n endComment.parentNode?.insertBefore(newSpan, endComment);\n }\n\n // Remove the comments out if the call specified it out\n if (removeComments) {\n child.parentNode?.removeChild(child);\n endComment.parentNode?.removeChild(endComment);\n }\n\n // Last, make sure we return the new element out instead of the comment\n if (newSpan) {\n child = newSpan;\n }\n }\n }\n }\n\n return child;\n}\n\n/** Finds the real previous sibling, ignoring empty text nodes */\nfunction getRealPreviousSibling(node: Node): Node | null {\n let prevSibling: Node | null = node;\n do {\n prevSibling = prevSibling.previousSibling;\n } while (prevSibling && isEmptyTextNode(prevSibling));\n return prevSibling;\n}\n\n/** Finds the real next sibling, ignoring empty text nodes */\nfunction getRealNextSibling(node: Node): Node | null {\n let nextSibling: Node | null = node;\n do {\n nextSibling = nextSibling.nextSibling;\n } while (nextSibling && isEmptyTextNode(nextSibling));\n\n return nextSibling;\n}\n\n/**\n * Checks if the specified node is marked as a mso-list: Ignore. These\n * nodes need to be ignored when a list item is converted into standard\n * HTML lists\n */\nfunction isIgnoreNode(node: Node): boolean {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyleValue(node as HTMLElement, MSO_LIST_STYLE_NAME);\n if (\n listAttribute &&\n listAttribute.length > 0 &&\n listAttribute.trim().toLowerCase() == 'ignore'\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/** Checks if the specified node is an empty span. */\nfunction isEmptySpan(node: Node): boolean {\n return getTagOfNode(node) == 'SPAN' && !node.firstChild;\n}\n\n/** Reads the specified style value from the node */\nfunction getStyleValue(node: HTMLElement, styleName: string): string | null {\n // Word uses non-standard names for the metadata that puts in the style of the element...\n // Most browsers will not provide the information for those nonstandard values through the node.style\n // property, so the only reliable way to read them is to get the attribute directly and do\n // the required parsing..\n return getStyles(node)[styleName] || null;\n}\n\n/** Checks if the node is an empty text node that can be ignored */\nfunction isEmptyTextNode(node: Node): boolean {\n // No node is empty\n if (!node) {\n return true;\n }\n\n // Empty text node is empty\n if (node.nodeType == NodeType.Text) {\n let value = node.nodeValue;\n value = value?.replace(LINE_BREAKS, '') ?? '';\n return value?.trim().length == 0;\n }\n\n // Span or Font with an empty child node is empty\n let tagName = getTagOfNode(node);\n if (\n node.firstChild &&\n node.firstChild == node.lastChild &&\n (tagName == 'SPAN' || tagName == 'FONT')\n ) {\n return isEmptyTextNode(node.firstChild);\n }\n\n // If not found, then this is not empty\n return false;\n}\n\n/** Resets the list */\nfunction resetCurrentLists(args: WordConverterArguments) {\n for (let i = 0; i < args.currentListIdsByLevels.length; i++) {\n let ll = args.currentListIdsByLevels[i];\n if (ll) {\n ll.currentUniqueListId = -1;\n }\n }\n}\n","import WordConverterArguments from './WordConverterArguments';\nimport WordCustomData, { createCustomData } from './WordCustomData';\n\n/**\n * @internal\n * Processes HTML generated by Word, converting Word Lists into standard HTML UL and OL tags\n */\nexport default interface WordConverter {\n /** Next unique id to be assigned to a list */\n nextUniqueId: number;\n\n /** Number of bullets converted */\n numBulletsConverted: number;\n\n /** Number of numbering converted */\n numNumberedConverted: number;\n\n /** The structure that records the status of the conversion */\n wordConverterArgs: WordConverterArguments | null;\n\n /** Custom data storage for list items */\n wordCustomData: WordCustomData;\n}\n\n/**\n * @internal\n * create an empty WordConverter\n */\nexport function createWordConverter(): WordConverter {\n return {\n nextUniqueId: 1,\n numBulletsConverted: 0,\n numNumberedConverted: 0,\n wordConverterArgs: null,\n wordCustomData: createCustomData(),\n };\n}\n","import { replaceWithNode } from 'roosterjs-editor-api';\nimport {\n Browser,\n createRange,\n isCharacterValue,\n isModifierKey,\n PartialInlineElement,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n EditorPlugin,\n IEditor,\n NodePosition,\n PickerDataProvider,\n PickerPluginOptions,\n PluginDomEvent,\n PluginEvent,\n PluginEventType,\n PluginInputEvent,\n PluginKeyboardEvent,\n PositionType,\n} from 'roosterjs-editor-types';\n\n// Character codes.\n// IE11 uses different character codes. which are noted below.\n// If adding a new key, test in IE to figure out what the code is.\nconst BACKSPACE_CHAR_CODE = 'Backspace';\nconst TAB_CHAR_CODE = 'Tab';\nconst ENTER_CHAR_CODE = 'Enter';\nconst ESC_CHAR_CODE = !Browser.isIE ? 'Escape' : 'Esc';\nconst LEFT_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowLeft' : 'Left';\nconst UP_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowUp' : 'Up';\nconst RIGHT_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowRight' : 'Right';\nconst DOWN_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowDown' : 'Down';\nconst DELETE_CHAR_CODE = !Browser.isIE ? 'Delete' : 'Del';\n\n// Input event input types.\nconst DELETE_CONTENT_BACKWARDS_INPUT_TYPE = 'deleteContentBackwards';\n\n// Unidentified key, the code for Android keyboard events.\nconst UNIDENTIFIED_KEY = 'Unidentified';\n// the char code for Android keyboard events on Webview below 51.\nconst UNIDENTIFIED_CODE = [0, 229];\n\n/**\n * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including\n * - Show picker when special trigger key is pressed\n * - Hide picker\n * - Change selection in picker by Up/Down/Left/Right\n * - Apply selected item in picker\n *\n * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.\n */\nexport default class PickerPlugin\n implements EditorPlugin {\n private editor: IEditor | null = null;\n private eventHandledOnKeyDown: boolean = false;\n private blockSuggestions: boolean = false;\n private isSuggesting: boolean = false;\n private lastKnownRange: Range | null = null;\n\n // For detecting backspace in Android\n private isPendingInputEventHandling: boolean = false;\n private currentInputLength: number = 0;\n private newInputLength: number = 0;\n\n constructor(public readonly dataProvider: T, private pickerOptions: PickerPluginOptions) {}\n\n /**\n * Get a friendly name\n */\n getName() {\n return 'Picker';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n public initialize(editor: IEditor) {\n this.editor = editor;\n this.dataProvider.onInitalize(\n (htmlNode: Node) => {\n if (this.editor) {\n this.editor.focus();\n\n let wordToReplace = this.getWord(null);\n\n // Safari drops our focus out so we get an empty word to replace when we call getWord.\n // We fall back to using the lastKnownRange to try to get around this.\n if ((!wordToReplace || wordToReplace.length == 0) && this.lastKnownRange) {\n this.editor.select(this.lastKnownRange);\n wordToReplace = this.getWord(null);\n }\n\n let insertNode = () => {\n if (wordToReplace && this.editor) {\n replaceWithNode(\n this.editor,\n wordToReplace,\n htmlNode,\n true /* exactMatch */\n );\n } else {\n this.editor?.insertNode(htmlNode);\n }\n this.setIsSuggesting(false);\n };\n\n this.editor.addUndoSnapshot(\n insertNode,\n this.pickerOptions.changeSource,\n this.pickerOptions.handleAutoComplete\n );\n }\n },\n (isSuggesting: boolean) => {\n this.setIsSuggesting(isSuggesting);\n },\n editor\n );\n }\n\n /**\n * Dispose this plugin\n */\n public dispose() {\n this.editor = null;\n this.isSuggesting = false;\n this.blockSuggestions = false;\n this.eventHandledOnKeyDown = false;\n this.lastKnownRange = null;\n this.isPendingInputEventHandling = false;\n this.currentInputLength = 0;\n this.newInputLength = 0;\n this.dataProvider.onDispose();\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check\n */\n public willHandleEventExclusively(event: PluginEvent) {\n return (\n this.isSuggesting &&\n (event.eventType == PluginEventType.KeyDown ||\n event.eventType == PluginEventType.KeyUp ||\n event.eventType == PluginEventType.Input)\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case PluginEventType.ContentChanged:\n if (event.source == ChangeSource.SetContent && this.dataProvider.onContentChanged) {\n // Stop suggesting since content is fully changed\n if (this.isSuggesting) {\n this.setIsSuggesting(false);\n }\n\n // Undo and other major changes to document content fire this type of event.\n // Inform the data provider of the current picker placed elements in the body.\n let elementIds: string[] = [];\n this.editor?.queryElements(\n \"[id^='\" + this.pickerOptions.elementIdPrefix + \"']\",\n element => {\n if (element.id) {\n elementIds.push(element.id);\n }\n }\n );\n this.dataProvider.onContentChanged(elementIds);\n }\n break;\n\n case PluginEventType.KeyDown:\n this.eventHandledOnKeyDown = false;\n if (this.isAndroidKeyboardEvent(event)) {\n // On Android, the key for KeyboardEvent is \"Unidentified\" or undefined,\n // so handling should be done using the input rather than key down event\n // Since the key down event happens right before the input event, calculate the input\n // length here in preparation for onAndroidInputEvent\n this.currentInputLength = this.calcInputLength(event);\n this.isPendingInputEventHandling = true;\n } else {\n this.onKeyDownEvent(event);\n this.isPendingInputEventHandling = false;\n }\n break;\n\n case PluginEventType.Input:\n if (this.isPendingInputEventHandling) {\n this.onAndroidInputEvent(event);\n }\n break;\n\n case PluginEventType.KeyUp:\n if (!this.eventHandledOnKeyDown && this.shouldHandleKeyUpEvent(event)) {\n this.onKeyUpDomEvent(event);\n this.isPendingInputEventHandling = false;\n }\n break;\n\n case PluginEventType.MouseUp:\n if (this.isSuggesting) {\n this.setIsSuggesting(false);\n }\n break;\n\n case PluginEventType.Scroll:\n if (this.dataProvider.onScroll) {\n // Dispatch scroll event to data provider\n this.dataProvider.onScroll(event.scrollContainer);\n }\n break;\n }\n }\n\n private setLastKnownRange(range: Range | null) {\n this.lastKnownRange = range;\n }\n\n private setIsSuggesting(isSuggesting: boolean) {\n this.isSuggesting = isSuggesting;\n\n if (!isSuggesting) {\n this.setLastKnownRange(null);\n }\n this.dataProvider.onIsSuggestingChanged(isSuggesting);\n\n this.setAriaOwns(isSuggesting);\n this.setAriaActiveDescendant(isSuggesting ? 0 : null);\n }\n\n private cancelDefaultKeyDownEvent(event: PluginKeyboardEvent) {\n this.eventHandledOnKeyDown = true;\n event.rawEvent.preventDefault();\n event.rawEvent.stopImmediatePropagation();\n }\n\n private getIdValue(node: Node): string | null {\n if (safeInstanceOf(node, 'HTMLElement')) {\n const attribute = node.attributes.getNamedItem('id');\n return attribute ? (attribute.value as string) : null;\n } else {\n return null;\n }\n }\n\n private getWordBeforeCursor(event: PluginKeyboardEvent | null): string | null {\n let searcher = this.editor?.getContentSearcherOfCursor(event);\n return searcher ? searcher.getWordBefore() : null;\n }\n\n private replaceNode(currentNode: Node | null, replacementNode: Node | null) {\n if (currentNode) {\n this.editor?.deleteNode(currentNode);\n }\n if (replacementNode) {\n this.editor?.insertNode(replacementNode);\n }\n }\n\n private getRangeUntilAt(event: PluginKeyboardEvent | null): Range | null {\n let positionContentSearcher = this.editor?.getContentSearcherOfCursor(event);\n let startPos: NodePosition | undefined = undefined;\n let endPos: NodePosition | undefined = undefined;\n positionContentSearcher?.forEachTextInlineElement(textInline => {\n let hasMatched = false;\n let nodeContent = textInline.getTextContent();\n let nodeIndex = nodeContent ? nodeContent.length : -1;\n while (nodeIndex >= 0) {\n if (nodeContent[nodeIndex] == this.pickerOptions.triggerCharacter) {\n startPos = textInline.getStartPosition().move(nodeIndex);\n hasMatched = true;\n break;\n }\n nodeIndex--;\n }\n\n if (hasMatched) {\n endPos = textInline.getEndPosition();\n }\n\n return hasMatched;\n });\n return startPos\n ? createRange(startPos, endPos)\n : this.editor?.getDocument().createRange() ?? null;\n }\n\n private shouldHandleKeyUpEvent(event: PluginKeyboardEvent) {\n // onKeyUpDomEvent should only be called when a key that produces a character value is pressed\n // This check will always fail on Android since the KeyboardEvent's key is \"Unidentified\" or undefined\n // However, we don't need to check for modifier events on mobile, so can ignore this check\n return (\n this.isAndroidKeyboardEvent(event) ||\n isCharacterValue(event.rawEvent) ||\n (this.isSuggesting && !isModifierKey(event.rawEvent))\n );\n }\n\n private onKeyUpDomEvent(event: PluginKeyboardEvent) {\n if (this.editor) {\n if (this.isSuggesting) {\n // Word before cursor represents the text prior to the cursor, up to and including the trigger symbol.\n const wordBeforeCursor = this.getWord(event);\n if (wordBeforeCursor !== null) {\n const wordBeforeCursorWithoutTriggerChar = wordBeforeCursor.substring(1);\n const trimmedWordBeforeCursor = wordBeforeCursorWithoutTriggerChar.trim();\n\n // If we hit a case where wordBeforeCursor is just the trigger character,\n // that means we've gotten a onKeyUp event right after it's been typed.\n // Otherwise, update the query string when:\n // 1. There's an actual value\n // 2. That actual value isn't just pure whitespace\n // 3. That actual value isn't more than 4 words long (at which point we assume the person kept typing)\n // Otherwise, we want to dismiss the picker plugin's UX.\n if (\n wordBeforeCursor == this.pickerOptions.triggerCharacter ||\n (trimmedWordBeforeCursor &&\n trimmedWordBeforeCursor.length > 0 &&\n trimmedWordBeforeCursor.split(' ').length <= 4)\n ) {\n this.dataProvider.queryStringUpdated(\n trimmedWordBeforeCursor,\n wordBeforeCursorWithoutTriggerChar == trimmedWordBeforeCursor\n );\n this.setLastKnownRange(this.editor.getSelectionRange() ?? null);\n } else {\n this.setIsSuggesting(false);\n }\n }\n } else {\n let wordBeforeCursor = this.getWordBeforeCursor(event);\n if (!this.blockSuggestions) {\n if (\n wordBeforeCursor != null &&\n wordBeforeCursor.split(' ').length <= 4 &&\n wordBeforeCursor[0] == this.pickerOptions.triggerCharacter\n ) {\n this.setIsSuggesting(true);\n const wordBeforeCursorWithoutTriggerChar = wordBeforeCursor.substring(1);\n let trimmedWordBeforeCursor = wordBeforeCursorWithoutTriggerChar.trim();\n this.dataProvider.queryStringUpdated(\n trimmedWordBeforeCursor,\n wordBeforeCursorWithoutTriggerChar == trimmedWordBeforeCursor\n );\n this.setLastKnownRange(this.editor.getSelectionRange() ?? null);\n if (this.dataProvider.setCursorPoint) {\n // Determine the bounding rectangle for the @mention\n let searcher = this.editor.getContentSearcherOfCursor(event);\n let rangeNode = this.editor.getDocument().createRange();\n\n if (rangeNode) {\n let nodeBeforeCursor =\n searcher?.getInlineElementBefore()?.getContainerNode() ?? null;\n\n let rangeStartSuccessfullySet = this.setRangeStart(\n rangeNode,\n nodeBeforeCursor,\n wordBeforeCursor\n );\n if (!rangeStartSuccessfullySet) {\n // VSO 24891: Out of range error is occurring because nodeBeforeCursor\n // is not including the trigger character. In this case, the node before\n // the node before cursor is the trigger character, and this is where the range should start.\n let nodeBeforeNodeBeforeCursor =\n nodeBeforeCursor?.previousSibling ?? null;\n this.setRangeStart(\n rangeNode,\n nodeBeforeNodeBeforeCursor,\n this.pickerOptions.triggerCharacter\n );\n }\n let rect = rangeNode.getBoundingClientRect();\n\n // Safari's support for range.getBoundingClientRect is incomplete.\n // We perform this check to fall back to getClientRects in case it's at the page origin.\n if (rect.left == 0 && rect.bottom == 0 && rect.top == 0) {\n rect = rangeNode.getClientRects()[0];\n }\n\n if (rect) {\n rangeNode.detach();\n\n // Display the @mention popup in the correct place\n let targetPoint = {\n x: rect.left,\n y: (rect.bottom + rect.top) / 2,\n };\n let bufferZone = (rect.bottom - rect.top) / 2;\n this.dataProvider.setCursorPoint(targetPoint, bufferZone);\n }\n }\n }\n }\n } else {\n if (\n wordBeforeCursor != null &&\n wordBeforeCursor[0] != this.pickerOptions.triggerCharacter\n ) {\n this.blockSuggestions = false;\n }\n }\n }\n }\n }\n\n private onKeyDownEvent(event: PluginKeyboardEvent) {\n let keyboardEvent = event.rawEvent;\n if (this.isSuggesting) {\n if (keyboardEvent.key == ESC_CHAR_CODE) {\n this.setIsSuggesting(false);\n this.blockSuggestions = true;\n this.cancelDefaultKeyDownEvent(event);\n } else if (keyboardEvent.key == BACKSPACE_CHAR_CODE) {\n // #483: If we are backspacing over the trigger character that triggered this Picker\n // then we need to hide the Picker\n const wordBeforeCursor = this.getWord(event);\n if (wordBeforeCursor == this.pickerOptions.triggerCharacter) {\n this.setIsSuggesting(false);\n }\n } else if (\n this.dataProvider.shiftHighlight &&\n (this.pickerOptions.isHorizontal\n ? keyboardEvent.key == LEFT_ARROW_CHAR_CODE ||\n keyboardEvent.key == RIGHT_ARROW_CHAR_CODE\n : keyboardEvent.key == UP_ARROW_CHAR_CODE ||\n keyboardEvent.key == DOWN_ARROW_CHAR_CODE)\n ) {\n this.dataProvider.shiftHighlight(\n this.pickerOptions.isHorizontal\n ? keyboardEvent.key == RIGHT_ARROW_CHAR_CODE\n : keyboardEvent.key == DOWN_ARROW_CHAR_CODE\n );\n\n if (this.dataProvider.getSelectedIndex) {\n this.setAriaActiveDescendant(this.dataProvider.getSelectedIndex());\n }\n\n this.cancelDefaultKeyDownEvent(event);\n } else if (\n this.dataProvider.selectOption &&\n (keyboardEvent.key == ENTER_CHAR_CODE || keyboardEvent.key == TAB_CHAR_CODE)\n ) {\n this.dataProvider.selectOption();\n this.cancelDefaultKeyDownEvent(event);\n } else {\n // Currently no op.\n }\n } else {\n if (keyboardEvent.key == BACKSPACE_CHAR_CODE) {\n const nodeRemoved = this.tryRemoveNode(event);\n if (nodeRemoved) {\n this.cancelDefaultKeyDownEvent(event);\n }\n } else if (keyboardEvent.key == DELETE_CHAR_CODE) {\n let searcher = this.editor?.getContentSearcherOfCursor(event);\n if (searcher) {\n let nodeAfterCursor = searcher.getInlineElementAfter()\n ? searcher.getInlineElementAfter()?.getContainerNode()\n : null;\n let nodeId = nodeAfterCursor ? this.getIdValue(nodeAfterCursor) : null;\n if (\n nodeId &&\n nodeId.indexOf(this.pickerOptions.elementIdPrefix) == 0 &&\n nodeAfterCursor\n ) {\n let replacementNode = this.dataProvider.onRemove(nodeAfterCursor, false);\n this.replaceNode(nodeAfterCursor, replacementNode);\n this.cancelDefaultKeyDownEvent(event);\n }\n }\n }\n }\n }\n\n private onAndroidInputEvent(event: PluginInputEvent) {\n this.newInputLength = this.calcInputLength(event);\n\n if (\n this.newInputLength < this.currentInputLength ||\n (event.rawEvent as any).inputType === DELETE_CONTENT_BACKWARDS_INPUT_TYPE\n ) {\n const nodeRemoved = this.tryRemoveNode(event);\n if (nodeRemoved) {\n this.eventHandledOnKeyDown = true;\n }\n }\n }\n\n private calcInputLength(event: PluginEvent) {\n const wordBeforeCursor = this.getInlineElementBeforeCursor(event);\n return wordBeforeCursor ? wordBeforeCursor.length : 0;\n }\n\n private tryRemoveNode(event: PluginDomEvent): boolean {\n if (!this.editor) {\n return false;\n }\n\n const searcher = this.editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return false;\n }\n\n const inlineElementBefore = searcher.getInlineElementBefore();\n const nodeBeforeCursor = inlineElementBefore\n ? inlineElementBefore.getContainerNode()\n : null;\n const nodeId = nodeBeforeCursor ? this.getIdValue(nodeBeforeCursor) : null;\n const inlineElementAfter = searcher.getInlineElementAfter();\n\n if (\n nodeBeforeCursor &&\n nodeId &&\n nodeId.indexOf(this.pickerOptions.elementIdPrefix) == 0 &&\n (inlineElementAfter == null || !(inlineElementAfter instanceof PartialInlineElement))\n ) {\n const replacementNode = this.dataProvider.onRemove(nodeBeforeCursor, true);\n if (replacementNode) {\n this.replaceNode(nodeBeforeCursor, replacementNode);\n if (this.isPendingInputEventHandling) {\n this.editor.runAsync(editor => {\n editor.select(replacementNode, PositionType.After);\n });\n } else {\n this.editor.select(replacementNode, PositionType.After);\n }\n\n return true;\n } else {\n // Select the node then let browser delete it\n this.editor.select(nodeBeforeCursor);\n return false;\n }\n }\n return false;\n }\n\n private getWord(event: PluginKeyboardEvent | null) {\n let wordFromRange = this.getRangeUntilAt(event)?.toString() ?? '';\n let wordFromCache = this.getWordBeforeCursor(event);\n // VSO 24891: In picker, trigger and mention are separated into two nodes.\n // In this case, wordFromRange is the trigger character while wordFromCache is the whole string,\n // so wordFromCache is what we want to return.\n if (\n wordFromRange == this.pickerOptions.triggerCharacter &&\n wordFromRange != wordFromCache\n ) {\n return wordFromCache;\n }\n return wordFromRange;\n }\n\n private setRangeStart(rangeNode: Range, node: Node | null, target: string) {\n let nodeOffset = node?.textContent ? node.textContent.lastIndexOf(target) : -1;\n if (node && nodeOffset > -1) {\n rangeNode.setStart(node, nodeOffset);\n return true;\n }\n return false;\n }\n\n private setAriaOwns(isSuggesting: boolean) {\n this.editor?.setEditorDomAttribute(\n 'aria-owns',\n isSuggesting && this.pickerOptions.suggestionsLabel\n ? this.pickerOptions.suggestionsLabel\n : null\n );\n }\n\n private setAriaActiveDescendant(selectedIndex: number | null) {\n this.editor?.setEditorDomAttribute(\n 'aria-activedescendant',\n selectedIndex != null && this.pickerOptions.suggestionLabelPrefix\n ? this.pickerOptions.suggestionLabelPrefix + selectedIndex.toString()\n : null\n );\n }\n\n private getInlineElementBeforeCursor(event: PluginEvent): string | null {\n const searcher = this.editor?.getContentSearcherOfCursor(event);\n const element = searcher ? searcher.getInlineElementBefore() : null;\n return element ? element.getTextContent() : null;\n }\n\n private isAndroidKeyboardEvent(event: PluginKeyboardEvent): boolean {\n // Check keyboard events on Android for further handling.\n // On Android Webview later 51, the KeyboardEvent's key is \"Unidentified\".\n // On Android Webview below 51, the KeyboardEvent's key is not supported and always returns undefined,\n // so using the charCode property, which is 0 or 229.\n return (\n event.rawEvent.key == UNIDENTIFIED_KEY ||\n (event.rawEvent.key == undefined &&\n UNIDENTIFIED_CODE.indexOf(event.rawEvent.charCode) > -1)\n );\n }\n}\n","export { default as PickerPlugin } from './PickerPlugin';\n","import { clearState } from './utils/clearState';\nimport { DeleteTableContents } from './features/DeleteTableContents';\nimport { handleKeyDownEvent } from './keyUtils/handleKeyDownEvent';\nimport { handleKeyUpEvent } from './keyUtils/handleKeyUpEvent';\nimport { handleMouseDownEvent } from './mouseUtils/handleMouseDownEvent';\nimport { handleScrollEvent } from './mouseUtils/handleScrollEvent';\nimport { TableCellSelectionState } from './TableCellSelectionState';\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n SelectionRangeTypes,\n TableSelection,\n} from 'roosterjs-editor-types';\n\n/**\n * TableCellSelectionPlugin help highlight table cells\n */\nexport default class TableCellSelection implements EditorPlugin {\n private editor: IEditor | null = null;\n private state: TableCellSelectionState | null;\n private shadowEditCoordinatesBackup: TableSelection | null = null;\n\n constructor() {\n this.state = {\n firstTable: null,\n lastTarget: null,\n firstTarget: null,\n preventKeyUp: false,\n startedSelection: false,\n tableSelection: false,\n targetTable: null,\n vTable: null,\n mouseMoveDisposer: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TableCellSelection';\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 this.editor.addContentEditFeature(DeleteTableContents);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n clearState(this.state, this.editor);\n this.state = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && this.state) {\n switch (event.eventType) {\n case PluginEventType.EnteredShadowEdit:\n this.handleEnteredShadowEdit(this.state, this.editor);\n break;\n case PluginEventType.LeavingShadowEdit:\n this.handleLeavingShadowEdit(this.state, this.editor);\n break;\n case PluginEventType.MouseDown:\n if (!this.state.startedSelection) {\n handleMouseDownEvent(event, this.state, this.editor);\n }\n break;\n case PluginEventType.KeyDown:\n if (!this.state.startedSelection) {\n handleKeyDownEvent(event, this.state, this.editor);\n } else {\n event.rawEvent.preventDefault();\n }\n break;\n case PluginEventType.KeyUp:\n if (!this.state.startedSelection) {\n handleKeyUpEvent(event, this.state, this.editor);\n } else {\n event.rawEvent.preventDefault();\n }\n break;\n case PluginEventType.Scroll:\n if (this.state.startedSelection) {\n handleScrollEvent(this.state, this.editor);\n }\n break;\n case PluginEventType.BeforeSetContent:\n this.state.firstTable = null;\n this.state.tableSelection = false;\n this.editor.select(null);\n break;\n }\n }\n }\n\n private handleLeavingShadowEdit(state: TableCellSelectionState, editor: IEditor) {\n if (state.firstTable && state.tableSelection && state.firstTable) {\n const table = editor.queryElements('#' + state.firstTable.id);\n if (table.length == 1) {\n state.firstTable = table[0] as HTMLTableElement;\n editor.select(state.firstTable, this.shadowEditCoordinatesBackup);\n this.shadowEditCoordinatesBackup = null;\n }\n }\n }\n\n private handleEnteredShadowEdit(state: TableCellSelectionState, editor: IEditor) {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.TableSelection) {\n this.shadowEditCoordinatesBackup = selection.coordinates ?? null;\n state.firstTable = selection.table;\n state.tableSelection = true;\n editor.select(selection.table, null);\n }\n }\n}\n","/**\n * @internal\n * Table cell query selector\n */\nexport const TABLE_CELL_SELECTOR = 'td,th';\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport {\n GenericContentEditFeature,\n IEditor,\n Keys,\n PluginEvent,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Feature that when Backspace is pressed and there is Table Selection, delete the contents inside of the selection\n */\nexport const DeleteTableContents: GenericContentEditFeature = {\n keys: [Keys.DELETE, Keys.BACKSPACE],\n shouldHandleEvent: (_, editor: IEditor) => {\n const selection = editor.getSelectionRangeEx();\n return selection.type == SelectionRangeTypes.TableSelection;\n },\n handleEvent: (_, editor) => {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.TableSelection) {\n editor.addUndoSnapshot(() => {\n if (selection.isWholeTableSelected) {\n selection.table\n .querySelectorAll(TABLE_CELL_SELECTOR)\n .forEach(td => deleteNodeContents(td, editor));\n } else {\n editor\n .getSelectedRegions()\n .forEach(region => deleteNodeContents(region.rootNode, editor));\n }\n });\n }\n },\n};\n\nfunction deleteNodeContents(element: Node, editor: IEditor) {\n if (safeInstanceOf(element, 'HTMLTableCellElement')) {\n const range = new Range();\n range.selectNodeContents(element);\n range.deleteContents();\n element.appendChild(editor.getDocument().createElement('br'));\n }\n}\n","export { default as TableCellSelection } from './TableCellSelection';\n","import { getCellAtCursor } from '../utils/getCellAtCursor';\nimport { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { isAfter } from '../utils/isAfter';\nimport { prepareSelection } from '../utils/prepareSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\nimport {\n contains,\n createRange,\n isCtrlOrMetaPressed,\n Position,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n Coordinates,\n IEditor,\n Keys,\n PluginKeyDownEvent,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function handleKeyDownEvent(\n event: PluginKeyDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { shiftKey, ctrlKey, metaKey, which, defaultPrevented } = event.rawEvent;\n if ((shiftKey && (ctrlKey || metaKey)) || which == Keys.SHIFT || defaultPrevented) {\n state.preventKeyUp = defaultPrevented;\n return;\n }\n\n const range = editor.getSelectionRangeEx();\n if (shiftKey) {\n if (!state.firstTarget) {\n const pos = editor.getFocusedPosition();\n const cell = pos && getCellAtCursor(editor, pos.node);\n\n state.firstTarget = cell;\n }\n\n //If first target is not a table cell, we should ignore this plugin\n if (!safeInstanceOf(state.firstTarget, 'HTMLTableCellElement')) {\n return;\n }\n editor.runAsync(editor => {\n const pos = editor.getFocusedPosition();\n const newTarget = state.tableSelection ? state.lastTarget : pos?.node;\n if (newTarget) {\n setData(newTarget, state, editor);\n }\n\n if (state.firstTable! == state.targetTable!) {\n if (!shouldConvertToTableSelection(state, editor) && !state.tableSelection) {\n return;\n }\n //When selection start and end is inside of the same table\n handleKeySelectionInsideTable(event, state, editor);\n } else if (state.tableSelection) {\n if (state.firstTable) {\n editor.select(state.firstTable, null /* coordinates */);\n }\n state.tableSelection = false;\n }\n });\n } else if (\n range?.type == SelectionRangeTypes.TableSelection &&\n (!isCtrlOrMetaPressed(event.rawEvent) || which == Keys.HOME || which == Keys.END)\n ) {\n // Select all content in the first cell\n const row = range.ranges[0];\n const firstCell = row.startContainer.childNodes[row.startOffset];\n const children = firstCell.childNodes;\n const contentRange = createRange(children[0], children[children.length - 1]);\n editor.select(contentRange);\n }\n}\n\n/**\n * @internal\n */\nfunction handleKeySelectionInsideTable(\n event: PluginKeyDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n state.firstTarget = getCellAtCursor(editor, state.firstTarget);\n state.lastTarget = getCellAtCursor(editor, state.lastTarget);\n\n updateSelection(editor, state.firstTarget, 0);\n state.vTable = state.vTable || new VTable(state.firstTable as HTMLTableElement);\n\n const firstCell = getCellCoordinates(state.vTable, state.firstTarget as Element);\n const lastCell = getNextTD(event, editor, state);\n\n if (!firstCell || !lastCell) {\n return;\n }\n state.vTable.selection = {\n firstCell,\n lastCell,\n };\n\n const { selection } = state.vTable;\n\n if (\n !selection.lastCell ||\n (state.vTable.cells && selection.lastCell.y > state.vTable.cells.length - 1) ||\n selection.lastCell.y == -1\n ) {\n //When selection is moving from inside of a table to outside\n state.lastTarget = editor.getElementAtCursor(\n TABLE_CELL_SELECTOR + ',div',\n state.firstTable ?? undefined\n );\n if (safeInstanceOf(state.lastTarget, 'HTMLTableCellElement')) {\n prepareSelection(state, editor);\n } else {\n const position =\n state.targetTable &&\n new Position(\n state.targetTable,\n selection.lastCell.y == null || selection.lastCell.y == -1\n ? PositionType.Before\n : PositionType.After\n );\n\n const sel = editor.getDocument().defaultView?.getSelection();\n const { anchorNode, anchorOffset } = sel || {};\n if (\n sel &&\n anchorNode &&\n anchorOffset != undefined &&\n anchorOffset != null &&\n position\n ) {\n editor.select(sel.getRangeAt(0));\n sel.setBaseAndExtent(anchorNode, anchorOffset, position.node, position.offset);\n state.lastTarget = position.node;\n event.rawEvent.preventDefault();\n return;\n }\n }\n }\n\n selectTable(editor, state);\n\n const isBeginAboveEnd = isAfter(state.firstTarget, state.lastTarget);\n if (state.lastTarget) {\n const targetPosition = new Position(\n state.lastTarget,\n isBeginAboveEnd ? PositionType.Begin : PositionType.End\n );\n updateSelection(editor, targetPosition.node, targetPosition.offset);\n }\n\n state.tableSelection = true;\n event.rawEvent.preventDefault();\n}\n\nfunction getNextTD(\n event: PluginKeyDownEvent,\n editor: IEditor,\n state: TableCellSelectionState\n): Coordinates | undefined {\n state.lastTarget =\n state.lastTarget && editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.lastTarget);\n\n if (safeInstanceOf(state.lastTarget, 'HTMLTableCellElement') && state.vTable?.cells) {\n let coordinates = getCellCoordinates(state.vTable, state.lastTarget);\n\n if (state.tableSelection && coordinates) {\n switch (event.rawEvent.which) {\n case Keys.RIGHT:\n coordinates.x += state.lastTarget.colSpan;\n if (state.vTable.cells[coordinates.y][coordinates.x] == null) {\n coordinates.x = state.vTable.cells[coordinates.y].length - 1;\n coordinates.y++;\n }\n break;\n case Keys.LEFT:\n if (coordinates.x == 0) {\n coordinates.y--;\n } else {\n coordinates.x--;\n }\n break;\n case Keys.UP:\n coordinates.y--;\n break;\n case Keys.DOWN:\n coordinates.y++;\n break;\n }\n }\n\n if (coordinates && coordinates.y >= 0 && coordinates.x >= 0) {\n state.lastTarget = state.vTable.getTd(coordinates.y, coordinates.x);\n }\n return coordinates;\n }\n return undefined;\n}\n\nfunction shouldConvertToTableSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.firstTable || !editor) {\n return false;\n }\n const regions = editor.getSelectedRegions();\n if (regions.length == 1) {\n return false;\n }\n\n let result = true;\n\n regions.forEach(value => {\n if (!contains(state.firstTable, value.rootNode)) {\n result = false;\n }\n });\n\n return result;\n}\n","import { clearState } from '../utils/clearState';\nimport { IEditor, Keys, PluginKeyUpEvent } from 'roosterjs-editor-types';\nimport { isCharacterValue } from 'roosterjs-editor-dom';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\nconst IGNORE_KEY_UP_KEYS = [\n Keys.SHIFT,\n Keys.ALT,\n Keys.META_LEFT,\n Keys.CTRL_LEFT,\n Keys.PRINT_SCREEN,\n];\n\n/**\n * @internal\n */\nexport function handleKeyUpEvent(\n event: PluginKeyUpEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { shiftKey, which, ctrlKey } = event.rawEvent;\n if (\n !shiftKey &&\n !ctrlKey &&\n state.firstTarget &&\n !state.preventKeyUp &&\n IGNORE_KEY_UP_KEYS.indexOf(which) == -1\n ) {\n if (isCharacterValue(event.rawEvent)) {\n editor.addUndoSnapshot();\n }\n clearState(state, editor);\n }\n state.preventKeyUp = false;\n}\n","import normalizeTableSelection from '../utils/normalizeTableSelection';\nimport { clearState } from '../utils/clearState';\nimport { contains, getTagOfNode, safeInstanceOf, VTable } from 'roosterjs-editor-dom';\nimport { getCellAtCursor } from '../utils/getCellAtCursor';\nimport { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { getTableAtCursor } from '../utils/getTableAtCursor';\nimport { IEditor, PluginMouseDownEvent } from 'roosterjs-editor-types';\nimport { prepareSelection } from '../utils/prepareSelection';\nimport { restoreSelection } from '../utils/restoreSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\n\nconst LEFT_CLICK = 1;\nconst RIGHT_CLICK = 3;\n\n/**\n * @internal\n */\nexport function handleMouseDownEvent(\n event: PluginMouseDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { which, shiftKey, target, detail } = event.rawEvent;\n const table = editor.getElementAtCursor('table', target as Node, event);\n const tripleClick = detail >= 3;\n\n if (table && !table.isContentEditable) {\n return;\n }\n\n const td = editor.getElementAtCursor(TABLE_CELL_SELECTOR);\n if (which == RIGHT_CLICK && state.tableSelection && state.vTable && td) {\n //If the user is right clicking To open context menu\n const coord = getCellCoordinates(state.vTable, td);\n if (coord) {\n const { firstCell, lastCell } = normalizeTableSelection(state.vTable) || {};\n if (\n firstCell &&\n lastCell &&\n coord.y >= firstCell.y &&\n coord.y <= lastCell.y &&\n coord.x >= firstCell.x &&\n coord.x <= lastCell.x\n ) {\n state.firstTarget = state.vTable.getCell(firstCell.y, firstCell.x).td;\n state.lastTarget = state.vTable.getCell(lastCell.y, lastCell.x).td;\n\n if (state.firstTarget && state.lastTarget) {\n const selection = editor.getDocument().defaultView?.getSelection();\n selection?.setBaseAndExtent(state.firstTarget, 0, state.lastTarget, 0);\n selectTable(editor, state);\n }\n\n return;\n }\n }\n }\n if (which == LEFT_CLICK) {\n if (!shiftKey && !tripleClick) {\n clearState(state, editor);\n\n if (getTableAtCursor(editor, event.rawEvent.target)) {\n const doc = editor.getDocument() || document;\n\n const mouseUpListener = getOnMouseUp(state);\n const mouseMoveListener = onMouseMove(state, editor);\n doc.addEventListener('mouseup', mouseUpListener, true /*setCapture*/);\n doc.addEventListener('mousemove', mouseMoveListener, true /*setCapture*/);\n\n state.mouseMoveDisposer = () => {\n doc.removeEventListener('mouseup', mouseUpListener, true /*setCapture*/);\n doc.removeEventListener('mousemove', mouseMoveListener, true /*setCapture*/);\n };\n\n state.startedSelection = true;\n }\n }\n\n if (shiftKey || tripleClick) {\n editor.runAsync(editor => {\n const sel = editor.getDocument().defaultView?.getSelection();\n const first = getCellAtCursor(editor, sel?.anchorNode);\n // Triple clicking a cell will select that cell only\n // Assign last the same as first to make sure we can select the cell\n const last = tripleClick ? first : getCellAtCursor(editor, sel?.focusNode);\n const firstTable = getTableAtCursor(editor, first);\n if (\n firstTable &&\n safeInstanceOf(first, 'HTMLTableCellElement') &&\n safeInstanceOf(last, 'HTMLTableCellElement')\n ) {\n state.vTable = new VTable(first);\n const firstCord = getCellCoordinates(state.vTable, first);\n const lastCord = getCellCoordinates(state.vTable, last);\n\n if (!firstCord || !lastCord) {\n return;\n }\n state.vTable.selection = {\n firstCell: firstCord,\n lastCell: lastCord,\n };\n\n state.firstTarget = first;\n state.lastTarget = last;\n selectTable(editor, state);\n\n state.tableSelection = true;\n state.firstTable = firstTable as HTMLTableElement;\n state.targetTable = firstTable;\n updateSelection(editor, first, 0);\n }\n });\n }\n }\n}\n\nfunction getOnMouseUp(state: TableCellSelectionState) {\n return () => {\n removeMouseUpEventListener(state);\n };\n}\n\nfunction onMouseMove(state: TableCellSelectionState, editor: IEditor) {\n return (event: MouseEvent) => {\n if (!editor.contains(event.target as Node)) {\n return;\n }\n\n //If already in table selection and the new target is contained in the last target cell, no need to\n //Apply selection styles again.\n if (\n state.tableSelection &&\n state.firstTarget &&\n contains(state.lastTarget, event.target as Node, true)\n ) {\n updateSelection(editor, state.firstTarget, 0);\n event.preventDefault();\n return;\n }\n\n if (getTagOfNode(event.target as Node) == 'TABLE') {\n event.preventDefault();\n return;\n }\n\n setData(event.target as Node, state, editor);\n\n // If there is a first target, but is not inside a table, no more actions to perform.\n if (state.firstTarget && !state.firstTable) {\n return;\n }\n\n //Ignore if\n // Is a DIV that only contains a Table\n // If the event target is not contained in the editor.\n if (\n state.lastTarget &&\n ((state.lastTarget.lastChild == state.lastTarget.firstChild &&\n getTagOfNode(state.lastTarget.lastChild) == 'TABLE' &&\n getTagOfNode(state.lastTarget) == 'DIV') ||\n !editor.contains(state.lastTarget))\n ) {\n event.preventDefault();\n return;\n }\n\n prepareSelection(state, editor);\n const isNewTDContainingFirstTable = safeInstanceOf(state.lastTarget, 'HTMLTableCellElement')\n ? contains(state.lastTarget, state.firstTable)\n : false;\n\n if (\n (state.firstTable && state.firstTable == state.targetTable) ||\n isNewTDContainingFirstTable\n ) {\n //When starting selection inside of a table and ends inside of the same table.\n selectionInsideTableMouseMove(event, state, editor);\n } else if (state.tableSelection) {\n restoreSelection(state, editor);\n }\n\n if (state.tableSelection && state.firstTarget) {\n updateSelection(editor, state.firstTarget, 0);\n event.preventDefault();\n }\n };\n}\n\n/**\n * @internal\n */\nexport function selectionInsideTableMouseMove(\n event: MouseEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n if (\n state.firstTarget &&\n state.firstTable &&\n state.lastTarget != state.firstTarget &&\n state.lastTarget\n ) {\n updateSelection(editor, state.firstTarget, 0);\n if (\n state.firstTable != state.targetTable &&\n state.targetTable?.contains(state.firstTable)\n ) {\n //If selection started in a table that is inside of another table and moves to parent table\n //Make the firstTarget the TD of the parent table.\n state.firstTarget = editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.lastTarget);\n }\n\n if (state.firstTable && state.firstTarget) {\n state.tableSelection = true;\n\n state.vTable = state.vTable || new VTable(state.firstTable);\n\n const firstCell = getCellCoordinates(state.vTable, state.firstTarget);\n const lastCell = getCellCoordinates(state.vTable, state.lastTarget);\n\n if (!firstCell || !lastCell) {\n return;\n }\n\n state.vTable.selection = {\n firstCell,\n lastCell,\n };\n selectTable(editor, state);\n }\n\n event.preventDefault();\n } else if (\n state.lastTarget == state.firstTarget &&\n state.tableSelection &&\n state.firstTable &&\n state.firstTarget\n ) {\n state.vTable = new VTable(state.firstTable);\n const cell = getCellCoordinates(state.vTable, state.firstTarget);\n if (cell) {\n state.vTable.selection = {\n firstCell: cell,\n lastCell: cell,\n };\n }\n\n selectTable(editor, state);\n }\n}\n\nfunction removeMouseUpEventListener(state: TableCellSelectionState): void {\n if (state.startedSelection) {\n state.startedSelection = false;\n state.mouseMoveDisposer?.();\n }\n}\n","import { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { restoreSelection } from '../utils/restoreSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\n\n/**\n * Handle Scroll Event and mantains the selection range,\n * Since when we scroll the cursor does not trigger the on Mouse Move event\n * The table selection gets removed.\n */\nexport function handleScrollEvent(state: TableCellSelectionState, editor: IEditor) {\n const eventTarget = editor.getElementAtCursor();\n if (!eventTarget) {\n return;\n }\n setData(eventTarget, state, editor);\n if (\n state.firstTable == state.targetTable &&\n state.firstTarget &&\n state.vTable?.selection &&\n state.lastTarget &&\n state.tableSelection\n ) {\n const newCell = getCellCoordinates(state.vTable, state.lastTarget);\n if (newCell) {\n state.vTable.selection.lastCell = newCell;\n selectTable(editor, state);\n updateSelection(editor, state.firstTarget, 0);\n }\n } else if (state.tableSelection) {\n restoreSelection(state, editor);\n }\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function clearState(state: TableCellSelectionState | null, editor: IEditor | null): void {\n editor?.select(null);\n if (state) {\n state.vTable = null;\n state.firstTarget = null;\n state.lastTarget = null;\n state.tableSelection = false;\n state.firstTable = null;\n state.targetTable = null;\n state.mouseMoveDisposer?.();\n state.mouseMoveDisposer = null;\n }\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { Nullable } from '../TableCellSelectionState';\nimport { TABLE_CELL_SELECTOR } from '../constants';\n\n/**\n * @internal\n */\nexport function getCellAtCursor(editor: IEditor, node: Nullable): HTMLElement {\n if (editor) {\n return (\n editor.getElementAtCursor(TABLE_CELL_SELECTOR, node ?? undefined) ||\n (node as HTMLElement)\n );\n }\n return node as HTMLElement;\n}\n","import { Coordinates } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Gets the coordinates of a cell\n * @param cellInput The cell the to find the coordinates\n * @returns Coordinates of the cell, null if not found\n */\nexport function getCellCoordinates(vTable: VTable, cellInput: Node): Coordinates | undefined {\n let result: Coordinates | undefined;\n if (vTable?.cells) {\n for (let indexY = 0; indexY < vTable.cells.length; indexY++) {\n for (let indexX = 0; indexX < vTable.cells[indexY].length; indexX++) {\n if (cellInput == vTable.cells[indexY][indexX].td) {\n result = {\n x: indexX,\n y: indexY,\n };\n }\n }\n }\n }\n\n return result;\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { Nullable } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function getTableAtCursor(\n editor: IEditor,\n node: Nullable\n): HTMLTableElement | null {\n if (editor) {\n return editor.getElementAtCursor('table', node as Node) as HTMLTableElement;\n }\n return null;\n}\n","import { Nullable } from '../TableCellSelectionState';\nimport { Position } from 'roosterjs-editor-dom';\nimport { PositionType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function isAfter(node1: Nullable, node2: Nullable) {\n if (node1 && node2) {\n if (node2.contains(node1)) {\n const r1 = (node1 as Element).getBoundingClientRect?.();\n const r2 = (node2 as Element).getBoundingClientRect?.();\n if (r1 && r2) {\n return r1.top > r2.top && r1.bottom < r2.bottom;\n }\n }\n\n const position = new Position(node1, PositionType.End);\n return position.isAfter(new Position(node2, PositionType.End));\n }\n return false;\n}\n","import { Coordinates, TableSelection } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Make the first Cell of a table selection always be on top of the last cell.\n * @param input Table selection\n * @returns Table Selection where the first cell is always going to be first selected in the table\n * and the last cell always going to be last selected in the table.\n */\nexport default function normalizeTableSelection(vTable: VTable): TableSelection | null {\n const { firstCell, lastCell } = vTable?.selection || {};\n if (!vTable?.cells || !vTable.selection || !firstCell || !lastCell) {\n return null;\n }\n\n const cells = vTable.cells;\n\n let newFirst = {\n x: Math.min(firstCell.x, lastCell.x),\n y: Math.min(firstCell.y, lastCell.y),\n };\n let newLast = {\n x: Math.max(firstCell.x, lastCell.x),\n y: Math.max(firstCell.y, lastCell.y),\n };\n\n const fixCoordinates = (coord: Coordinates) => {\n if (coord.x < 0) {\n coord.x = 0;\n }\n if (coord.y < 0) {\n coord.y = 0;\n }\n\n if (coord.y >= cells.length) {\n coord.y = cells.length - 1;\n }\n\n const rowsCells = cells[coord.y].length;\n if (coord.x >= rowsCells) {\n coord.x = rowsCells - 1;\n }\n };\n\n fixCoordinates(newFirst);\n fixCoordinates(newLast);\n\n return { firstCell: newFirst, lastCell: newLast };\n}\n","import { findClosestElementAncestor } from 'roosterjs-editor-dom';\nimport { getTableAtCursor } from './getTableAtCursor';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n * Check if the selection started in a inner table.\n */\nexport function prepareSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.firstTable || !state.targetTable) {\n return;\n }\n let isNewTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.firstTable?.contains(\n findClosestElementAncestor(state.targetTable, state.firstTable, TABLE_CELL_SELECTOR)\n );\n\n if (isNewTargetTableContained && state.tableSelection) {\n while (isNewTargetTableContained) {\n state.lastTarget = findClosestElementAncestor(\n state.targetTable,\n state.firstTable,\n TABLE_CELL_SELECTOR\n );\n state.targetTable = getTableAtCursor(editor, state.lastTarget);\n isNewTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.firstTable?.contains(\n findClosestElementAncestor(\n state.targetTable,\n state.firstTable,\n TABLE_CELL_SELECTOR\n )\n );\n }\n }\n\n let isFirstTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.targetTable?.contains(\n findClosestElementAncestor(state.firstTable, state.targetTable, TABLE_CELL_SELECTOR)\n );\n\n if (isFirstTargetTableContained && state.tableSelection && state.targetTable) {\n while (isFirstTargetTableContained) {\n state.firstTarget = findClosestElementAncestor(\n state.firstTable,\n state.targetTable,\n TABLE_CELL_SELECTOR\n );\n if (!state.firstTarget) {\n return;\n }\n state.firstTable = getTableAtCursor(editor, state.firstTarget);\n isFirstTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.targetTable?.contains(\n findClosestElementAncestor(\n state.firstTable,\n state.targetTable,\n TABLE_CELL_SELECTOR\n )\n );\n }\n }\n}\n","import { IEditor, PositionType } from 'roosterjs-editor-types';\nimport { isAfter } from './isAfter';\nimport { Position } from 'roosterjs-editor-dom';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from './updateSelection';\n\n/**\n * @internal\n */\nexport function restoreSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.lastTarget || !state.firstTarget) {\n return;\n }\n\n if (state.firstTable) {\n editor.select(state.firstTable, null /* coordinates */);\n }\n state.tableSelection = false;\n const isBeginAboveEnd = isAfter(state.firstTarget, state.lastTarget);\n const targetPosition = new Position(\n state.lastTarget,\n isBeginAboveEnd ? PositionType.End : PositionType.Begin\n );\n\n const firstTargetRange = new Range();\n if (state.firstTarget) {\n firstTargetRange.selectNodeContents(state.firstTarget);\n }\n updateSelection(\n editor,\n state.firstTarget,\n isBeginAboveEnd\n ? Position.getEnd(firstTargetRange).offset\n : Position.getStart(firstTargetRange).offset,\n targetPosition.element,\n targetPosition.offset\n );\n}\n","import normalizeTableSelection from './normalizeTableSelection';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function selectTable(editor: IEditor, state: TableCellSelectionState) {\n if (editor && state.vTable) {\n editor?.select(state.vTable.table, normalizeTableSelection(state.vTable));\n }\n}\n","import { getCellAtCursor } from './getCellAtCursor';\nimport { getTableAtCursor } from './getTableAtCursor';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function setData(eventTarget: Node, state: TableCellSelectionState, editor: IEditor) {\n const pos = editor.getFocusedPosition();\n if (pos) {\n state.firstTarget = state.firstTarget || getCellAtCursor(editor, pos.node);\n\n if (state.firstTarget.nodeType == Node.TEXT_NODE) {\n state.firstTarget = editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.firstTarget);\n }\n if (!editor.contains(state.firstTarget) && state.lastTarget) {\n state.firstTarget = state.lastTarget;\n }\n }\n\n state.firstTable = getTableAtCursor(editor, state.firstTarget) as HTMLTableElement;\n state.lastTarget = getCellAtCursor(editor, eventTarget as Node);\n state.targetTable = getTableAtCursor(editor, state.lastTarget);\n}\n","import { IEditor } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Use SetBaseAndExtend to update the selection without losing the order that was used in the selection.\n * Using editor.select may lose the order of the selection if the start of the selection is After\n * the end container of the selection.\n */\nexport function updateSelection(\n editor: IEditor,\n start: Node,\n offset: number,\n end?: Node,\n endOffset?: number\n) {\n const selection = editor.getDocument().defaultView?.getSelection();\n if (selection) {\n end = end || start;\n endOffset = endOffset || offset;\n selection.setBaseAndExtent(start, offset, end, endOffset);\n }\n}\n","import TableEditor from './editors/TableEditor';\nimport { normalizeRect, safeInstanceOf } from 'roosterjs-editor-dom';\nimport {\n CreateElementData,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n Rect,\n} from 'roosterjs-editor-types';\n\nconst TABLE_RESIZER_LENGTH = 12;\n\n/**\n * TableResize plugin, provides the ability to resize a table by drag-and-drop\n */\nexport default class TableResize implements EditorPlugin {\n private editor: IEditor | null = null;\n private onMouseMoveDisposer: (() => void) | null = null;\n private tableRectMap: { table: HTMLTableElement; rect: Rect }[] | null = null;\n private tableEditor: TableEditor | null = null;\n\n /**\n * Construct a new instance of TableResize plugin\n * @param onShowHelperElement An optional callback to allow customize helper element of table resizing.\n * To customize the helper element, add this callback and change the attributes of elementData then it\n * will be picked up by TableResize code\n * @param anchorContainerSelector An optional selector string to specify the container to host the plugin.\n * The container must not be affected by transform: scale(), otherwise the position calculation will be wrong.\n * If not specified, the plugin will be inserted in document.body\n */\n constructor(\n private onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n private anchorContainerSelector?: string\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TableResize';\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 this.onMouseMoveDisposer = this.editor.addDomEventHandler({\n mousemove: this.onMouseMove,\n mouseout: e => this.onMouseOut(e),\n });\n }\n\n private onMouseOut = (ev: Event) => {\n if (\n isMouseEvent(ev) &&\n safeInstanceOf(ev.relatedTarget, 'HTMLElement') &&\n this.tableEditor &&\n !this.tableEditor.isOwnedElement(ev.relatedTarget) &&\n !this.editor?.contains(ev.relatedTarget)\n ) {\n this.setTableEditor(null);\n }\n };\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.onMouseMoveDisposer?.();\n this.invalidateTableRects();\n this.disposeTableEditor();\n this.editor = null;\n this.onMouseMoveDisposer = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(e: PluginEvent) {\n switch (e.eventType) {\n case PluginEventType.Input:\n case PluginEventType.ContentChanged:\n case PluginEventType.Scroll:\n case PluginEventType.ZoomChanged:\n this.setTableEditor(null);\n this.invalidateTableRects();\n break;\n }\n }\n\n private onMouseMove = (event: Event) => {\n const e = event as MouseEvent;\n\n if (e.buttons > 0 || !this.editor) {\n return;\n }\n\n this.ensureTableRects();\n\n const editorWindow = this.editor.getDocument().defaultView || window;\n const x = e.pageX - editorWindow.scrollX;\n const y = e.pageY - editorWindow.scrollY;\n let currentTable: HTMLTableElement | null = null;\n\n if (this.tableRectMap) {\n for (let i = this.tableRectMap.length - 1; i >= 0; i--) {\n const { table, rect } = this.tableRectMap[i];\n\n if (\n x >= rect.left - TABLE_RESIZER_LENGTH &&\n x <= rect.right + TABLE_RESIZER_LENGTH &&\n y >= rect.top - TABLE_RESIZER_LENGTH &&\n y <= rect.bottom + TABLE_RESIZER_LENGTH\n ) {\n currentTable = table;\n break;\n }\n }\n }\n\n this.setTableEditor(currentTable, e);\n this.tableEditor?.onMouseMove(x, y);\n };\n\n private setTableEditor(table: HTMLTableElement | null, e?: MouseEvent) {\n if (this.tableEditor && !this.tableEditor.isEditing() && table != this.tableEditor.table) {\n this.disposeTableEditor();\n }\n\n if (!this.tableEditor && table && this.editor && table.rows.length > 0) {\n const container = this.anchorContainerSelector\n ? this.editor.getDocument().querySelector(this.anchorContainerSelector)\n : undefined;\n\n this.tableEditor = new TableEditor(\n this.editor,\n table,\n this.invalidateTableRects,\n this.onShowHelperElement,\n safeInstanceOf(container, 'HTMLElement') ? container : undefined,\n e?.currentTarget\n );\n }\n }\n\n private invalidateTableRects = () => {\n this.tableRectMap = null;\n };\n\n private disposeTableEditor() {\n this.tableEditor?.dispose();\n this.tableEditor = null;\n }\n\n private ensureTableRects() {\n if (!this.tableRectMap && this.editor) {\n this.tableRectMap = [];\n this.editor.queryElements('table', table => {\n if (table.isContentEditable) {\n const rect = normalizeRect(table.getBoundingClientRect());\n if (rect && this.tableRectMap) {\n this.tableRectMap.push({\n table,\n rect,\n });\n }\n }\n });\n }\n }\n}\n\nfunction isMouseEvent(e: Event): e is MouseEvent {\n return !!(e as MouseEvent).pageX;\n}\n","import DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditFeature from './TableEditorFeature';\nimport { createElement, normalizeRect, VTable } from 'roosterjs-editor-dom';\nimport { CreateElementData, Rect } from 'roosterjs-editor-types';\n\nconst CELL_RESIZER_WIDTH = 4;\nconst MIN_CELL_WIDTH = 30;\n\n/**\n * @internal\n */\nexport default function createCellResizer(\n td: HTMLTableCellElement,\n zoomScale: number,\n isRTL: boolean,\n isHorizontal: boolean,\n onStart: () => void,\n onEnd: () => false,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const document = td.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${isHorizontal ? 'row' : 'col'}-resize; user-select: none`,\n };\n\n onShowHelperElement?.(createElementData, 'CellResizer');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = { td, isRTL, zoomScale, onStart };\n const setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;\n setPosition(context, div);\n\n const handler: DragAndDropHandler = {\n onDragStart,\n onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,\n onDragEnd: onEnd,\n };\n\n const featureHandler = new DragAndDropHelper(\n div,\n context,\n setPosition,\n handler,\n zoomScale\n );\n\n return { node: td, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n td: HTMLTableCellElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n}\n\ninterface DragAndDropInitValue {\n vTable: VTable;\n currentCells: HTMLTableCellElement[];\n nextCells: HTMLTableCellElement[];\n initialX: number;\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent): DragAndDropInitValue {\n const { td, isRTL, zoomScale, onStart } = context;\n const vTable = new VTable(td, true /*normalizeSize*/, zoomScale);\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n onStart();\n\n // calculate and retrieve the cells of the two columns shared by the current vertical resizer\n const currentCells = vTable.getCellsWithBorder(isRTL ? rect.left : rect.right, !isRTL);\n const nextCells = vTable.getCellsWithBorder(isRTL ? rect.left : rect.right, isRTL);\n\n return {\n vTable,\n currentCells,\n nextCells,\n initialX: event.pageX,\n };\n } else {\n return { vTable, currentCells: [], nextCells: [], initialX: 0 }; // Just a fallback\n }\n}\n\nfunction onDraggingHorizontal(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { td, zoomScale } = context;\n const { vTable } = initValue;\n\n vTable.table.removeAttribute('height');\n vTable.table.style.setProperty('height', null);\n vTable.forEachCellOfCurrentRow(cell => {\n if (cell.td) {\n cell.td.style.setProperty(\n 'height',\n cell.td == td ? `${(cell.height ?? 0) / zoomScale + deltaY}px` : null\n );\n }\n });\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n}\n\nfunction onDraggingVertical(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number\n) {\n const { isRTL, zoomScale } = context;\n const { vTable, nextCells, currentCells, initialX } = initValue;\n\n if (!canResizeColumns(event.pageX, currentCells, nextCells, isRTL, zoomScale)) {\n return false;\n }\n\n // Since we allow the user to resize the table width on adjusting the border of the last cell,\n // we need to make the table width resizable by setting it as null;\n // We also allow the user to resize the table width if Shift key is pressed\n const isLastCell = nextCells.length == 0;\n const isShiftPressed = event.shiftKey;\n\n if (isLastCell || isShiftPressed) {\n vTable.table.style.setProperty('width', null);\n }\n\n const newWidthList = new Map();\n currentCells.forEach(td => {\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n td.style.wordBreak = 'break-word';\n td.style.whiteSpace = 'normal';\n td.style.boxSizing = 'border-box';\n const newWidth = getHorizontalDistance(rect, event.pageX, !isRTL) / zoomScale;\n newWidthList.set(td, newWidth);\n }\n });\n newWidthList.forEach((newWidth, td) => {\n td.style.width = `${newWidth}px`;\n });\n if (!isShiftPressed) {\n nextCells.forEach(td => {\n const width = td.rowSpan > 1 ? 0 : td.getBoundingClientRect().right - initialX;\n td.style.wordBreak = 'break-word';\n td.style.whiteSpace = 'normal';\n td.style.boxSizing = 'border-box';\n td.style.width = td.rowSpan > 1 ? '' : width / zoomScale - deltaX + 'px';\n });\n }\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n}\n\nfunction getHorizontalDistance(rect: Rect, pos: number, toLeft: boolean): number {\n return toLeft ? pos - rect.left : rect.right - pos;\n}\n\nfunction setHorizontalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';\n trigger.style.left = rect.left + 'px';\n trigger.style.width = rect.right - rect.left + 'px';\n trigger.style.height = CELL_RESIZER_WIDTH + 'px';\n }\n}\n\nfunction setVerticalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td, isRTL } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.style.top = rect.top + 'px';\n trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';\n trigger.style.width = CELL_RESIZER_WIDTH + 'px';\n trigger.style.height = rect.bottom - rect.top + 'px';\n }\n}\n\n/**\n *\n * @param newPos The position to where we want to move the vertical border\n * @returns if the move is allowed, or, if any of the cells on either side of the vertical border is smaller than\n * the minimum width, such move is not allowed\n */\nfunction canResizeColumns(\n newPos: number,\n currentCells: HTMLTableCellElement[],\n nextCells: HTMLTableCellElement[],\n isRTL: boolean,\n zoomScale: number\n) {\n for (let i = 0; i < currentCells.length; i++) {\n const td = currentCells[i];\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n const width = getHorizontalDistance(rect, newPos, !isRTL) / zoomScale;\n if (width < MIN_CELL_WIDTH) {\n return false;\n }\n }\n }\n\n for (let i = 0; i < nextCells.length; i++) {\n const td = nextCells[i];\n let width: number = Number.MAX_SAFE_INTEGER;\n if (td) {\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n width = getHorizontalDistance(rect, newPos, isRTL) / zoomScale;\n }\n }\n\n if (width < MIN_CELL_WIDTH) {\n return false;\n }\n }\n\n return true;\n}\n","import createCellResizer from './CellResizer';\nimport createTableInserter from './TableInserter';\nimport createTableResizer from './TableResizer';\nimport createTableSelector from './TableSelector';\nimport TableEditFeature, { disposeTableEditFeature } from './TableEditorFeature';\nimport {\n contains,\n getComputedStyle,\n normalizeRect,\n Position,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n IEditor,\n NodePosition,\n TableSelection,\n CreateElementData,\n} from 'roosterjs-editor-types';\n\nconst INSERTER_HOVER_OFFSET = 6;\nconst enum TOP_OR_SIDE {\n top = 0,\n side = 1,\n}\n/**\n * @internal\n *\n * A table has 6 hot areas to be resized/edited (take LTR example):\n *\n * [6] [ ]\n * +[ 1 ]+--------------------+\n * |[ ]| |\n * [ ] [ ] |\n * [ ] [ ] |\n * [2] [3] |\n * [ ] [ ] |\n * [ ][ 4 ]| |\n * +------------------+--------------------+\n * | | |\n * | | |\n * | | |\n * +------------------+--------------------+\n * [5]\n *\n * 1 - Hover area to show insert column button\n * 2 - Hover area to show insert row button\n * 3 - Hover area to show vertical resizing bar\n * 4 - Hover area to show horizontal resizing bar\n * 5 - Hover area to show whole table resize button\n * 6 - Hover area to show whole table selector button\n *\n * When set a different current table or change current TD, we need to update these areas\n */\nexport default class TableEditor {\n // 1, 2 - Insert a column or a row\n private horizontalInserter: TableEditFeature | null = null;\n private verticalInserter: TableEditFeature | null = null;\n\n // 3, 4 - Resize a column or a row from a cell\n private horizontalResizer: TableEditFeature | null = null;\n private verticalResizer: TableEditFeature | null = null;\n\n // 5 - Resize whole table\n private tableResizer: TableEditFeature | null = null;\n\n // 6 - Select whole table\n private tableSelector: TableEditFeature | null = null;\n\n private isRTL: boolean;\n private start: NodePosition | null = null;\n private end: NodePosition | null = null;\n private isCurrentlyEditing: boolean;\n\n constructor(\n private editor: IEditor,\n public readonly table: HTMLTableElement,\n private onChanged: () => void,\n private onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n private anchorContainer?: HTMLElement,\n private contentDiv?: EventTarget | null\n ) {\n this.isRTL = getComputedStyle(table, 'direction') == 'rtl';\n this.setEditorFeatures();\n this.isCurrentlyEditing = false;\n }\n\n dispose() {\n this.disposeTableResizer();\n this.disposeCellResizers();\n this.disposeTableInserter();\n this.disposeTableSelector();\n }\n\n isEditing(): boolean {\n return this.isCurrentlyEditing;\n }\n\n isOwnedElement(node: Node) {\n return [\n this.tableResizer,\n this.tableSelector,\n this.horizontalInserter,\n this.verticalInserter,\n this.horizontalResizer,\n this.verticalResizer,\n ]\n .filter(feature => !!feature?.div)\n .some(feature => contains(feature?.div, node, true /* treatSameNodeAsContain */));\n }\n\n onMouseMove(x: number, y: number) {\n //Get Cell [0,0]\n const firstCell = this.table.rows[0]?.cells[0];\n\n if (!firstCell) {\n return;\n }\n\n const firstCellRect = normalizeRect(firstCell.getBoundingClientRect());\n\n if (!firstCellRect) {\n return;\n }\n\n // Determine if cursor is on top or side\n const topOrSide =\n y <= firstCellRect.top + INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.top\n : this.isRTL\n ? x >= firstCellRect.right - INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.side\n : undefined\n : x <= firstCellRect.left + INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.side\n : undefined;\n const topOrSideBinary = topOrSide ? 1 : 0;\n\n // Get whole table rect\n const tableRect = normalizeRect(this.table.getBoundingClientRect());\n // i is row index, j is column index\n for (let i = 0; i < this.table.rows.length; i++) {\n const tr = this.table.rows[i];\n let j = 0;\n for (; j < tr.cells.length; j++) {\n const td = tr.cells[j];\n const tdRect = normalizeRect(td.getBoundingClientRect());\n\n if (!tdRect || !tableRect) {\n continue;\n }\n\n // Determine the cell the cursor is in range of\n // Offset is only used for first row and column\n const lessThanBottom = y <= tdRect.bottom;\n const lessThanRight = this.isRTL\n ? x <= tdRect.right + INSERTER_HOVER_OFFSET * topOrSideBinary\n : x <= tdRect.right;\n const moreThanLeft = this.isRTL\n ? x >= tdRect.left\n : x >= tdRect.left - INSERTER_HOVER_OFFSET * topOrSideBinary;\n\n if (lessThanBottom && lessThanRight && moreThanLeft) {\n const isOnLeftOrRight = this.isRTL\n ? tdRect.right <= tableRect.right && tdRect.right >= tableRect.right - 1\n : tdRect.left >= tableRect.left && tdRect.left <= tableRect.left + 1;\n if (i === 0 && topOrSide == TOP_OR_SIDE.top) {\n const center = (tdRect.left + tdRect.right) / 2;\n const isOnRightHalf = this.isRTL ? x < center : x > center;\n this.setInserterTd(\n isOnRightHalf ? td : tr.cells[j - 1],\n false /*isHorizontal*/\n );\n } else if (j === 0 && topOrSide == TOP_OR_SIDE.side && isOnLeftOrRight) {\n const tdAbove = this.table.rows[i - 1]?.cells[0];\n const tdAboveRect = tdAbove\n ? normalizeRect(tdAbove.getBoundingClientRect())\n : null;\n\n const isTdNotAboveMerged = !tdAboveRect\n ? null\n : this.isRTL\n ? tdAboveRect.right === tdRect.right\n : tdAboveRect.left === tdRect.left;\n\n this.setInserterTd(\n y < (tdRect.top + tdRect.bottom) / 2 && isTdNotAboveMerged\n ? tdAbove\n : td,\n true /*isHorizontal*/\n );\n } else {\n this.setInserterTd(null);\n }\n\n this.setResizingTd(td);\n\n //Cell found\n break;\n }\n }\n\n if (j < tr.cells.length) {\n break;\n }\n }\n\n // Create Selector and Resizer\n this.setEditorFeatures();\n }\n\n private setEditorFeatures() {\n if (!this.tableSelector) {\n this.tableSelector = createTableSelector(\n this.table,\n this.editor,\n this.onSelect,\n this.getOnMouseOut,\n this.onShowHelperElement,\n this.contentDiv,\n this.anchorContainer\n );\n }\n\n if (!this.tableResizer) {\n this.tableResizer = createTableResizer(\n this.table,\n this.editor,\n this.onStartTableResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.contentDiv,\n this.anchorContainer\n );\n }\n }\n\n private setResizingTd(td: HTMLTableCellElement) {\n if (this.horizontalResizer && this.horizontalResizer.node != td) {\n this.disposeCellResizers();\n }\n\n if (!this.horizontalResizer && td) {\n const zoomScale = this.editor.getZoomScale();\n this.horizontalResizer = createCellResizer(\n td,\n zoomScale,\n this.isRTL,\n true /*isHorizontal*/,\n this.onStartCellResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.anchorContainer\n );\n this.verticalResizer = createCellResizer(\n td,\n zoomScale,\n this.isRTL,\n false /*isHorizontal*/,\n this.onStartCellResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.anchorContainer\n );\n }\n }\n\n /**\n * create or remove TableInserter\n * @param td td to attach to, set this to null to remove inserters (both horizontal and vertical)\n */\n private setInserterTd(td: HTMLTableCellElement | null, isHorizontal?: boolean) {\n const inserter = isHorizontal ? this.horizontalInserter : this.verticalInserter;\n if (td === null || (inserter && inserter.node != td)) {\n this.disposeTableInserter();\n }\n\n if (!this.horizontalInserter && !this.verticalInserter && td) {\n const newInserter = createTableInserter(\n this.editor,\n td,\n this.isRTL,\n !!isHorizontal,\n this.onInserted,\n this.getOnMouseOut,\n this.onShowHelperElement,\n this.anchorContainer\n );\n if (isHorizontal) {\n this.horizontalInserter = newInserter;\n } else {\n this.verticalInserter = newInserter;\n }\n }\n }\n\n private disposeTableResizer() {\n if (this.tableResizer) {\n disposeTableEditFeature(this.tableResizer);\n this.tableResizer = null;\n }\n }\n\n private disposeTableInserter() {\n if (this.horizontalInserter) {\n disposeTableEditFeature(this.horizontalInserter);\n this.horizontalInserter = null;\n }\n if (this.verticalInserter) {\n disposeTableEditFeature(this.verticalInserter);\n this.verticalInserter = null;\n }\n }\n\n private disposeCellResizers() {\n if (this.horizontalResizer) {\n disposeTableEditFeature(this.horizontalResizer);\n this.horizontalResizer = null;\n }\n if (this.verticalResizer) {\n disposeTableEditFeature(this.verticalResizer);\n this.verticalResizer = null;\n }\n }\n\n private disposeTableSelector() {\n if (this.tableSelector) {\n disposeTableEditFeature(this.tableSelector);\n this.tableSelector = null;\n }\n }\n\n private onFinishEditing = (): false => {\n this.editor.focus();\n\n if (this.start && this.end) {\n this.editor.select(this.start, this.end);\n }\n\n this.editor.addUndoSnapshot(() => {}, ChangeSource.Format); // Pass in an empty callback to make sure ContentChangedEvent is triggered\n this.onChanged();\n this.isCurrentlyEditing = false;\n\n return false;\n };\n\n private onStartTableResize = () => {\n this.isCurrentlyEditing = true;\n this.onStartResize();\n };\n\n private onStartCellResize = () => {\n this.isCurrentlyEditing = true;\n this.disposeTableResizer();\n this.onStartResize();\n };\n\n private onStartResize() {\n this.isCurrentlyEditing = true;\n const range = this.editor.getSelectionRange();\n\n if (range) {\n this.start = Position.getStart(range);\n this.end = Position.getEnd(range);\n }\n\n this.editor.addUndoSnapshot();\n }\n\n private onInserted = (table: HTMLTableElement) => {\n this.editor.transformToDarkColor(table);\n this.disposeTableResizer();\n this.onFinishEditing();\n };\n\n /**\n * Public only for testing purposes\n * @param table the table to select\n */\n public onSelect = (table: HTMLTableElement) => {\n this.editor.focus();\n if (table) {\n const vTable = new VTable(table);\n if (vTable.cells) {\n const rows = vTable.cells.length - 1;\n let lastCellIndex: number = 0;\n vTable.cells[rows].forEach((cell, index) => {\n lastCellIndex = index;\n });\n\n const selection: TableSelection = {\n firstCell: {\n x: 0,\n y: 0,\n },\n lastCell: {\n y: rows,\n x: lastCellIndex,\n },\n };\n this.editor.select(table, selection);\n }\n }\n };\n\n private getOnMouseOut = (feature: HTMLElement) => {\n return (ev: MouseEvent) => {\n if (\n feature &&\n ev.relatedTarget != feature &&\n safeInstanceOf(this.contentDiv, 'HTMLElement') &&\n safeInstanceOf(ev.relatedTarget, 'HTMLElement') &&\n !contains(this.contentDiv, ev.relatedTarget, true /* treatSameNodeAsContain */)\n ) {\n this.dispose();\n }\n };\n };\n}\n","import Disposable from '../../../pluginUtils/Disposable';\n\n/**\n * @internal\n */\nexport default interface TableEditFeature {\n node: Node;\n div: HTMLDivElement | null;\n featureHandler: Disposable | null;\n}\n\n/**\n * @internal\n */\nexport function disposeTableEditFeature(resizer: TableEditFeature | null) {\n if (resizer) {\n resizer.div?.parentNode?.removeChild(resizer.div);\n resizer.div = null;\n resizer.featureHandler?.dispose();\n resizer.featureHandler = null;\n }\n}\n","import Disposable from '../../../pluginUtils/Disposable';\nimport TableEditFeature from './TableEditorFeature';\nimport { createElement, getIntersectedRect, normalizeRect, VTable } from 'roosterjs-editor-dom';\nimport { CreateElementData, IEditor, TableOperation } from 'roosterjs-editor-types';\n\nconst INSERTER_COLOR = '#4A4A4A';\nconst INSERTER_COLOR_DARK_MODE = 'white';\nconst INSERTER_SIDE_LENGTH = 12;\nconst INSERTER_BORDER_SIZE = 1;\n\n/**\n * @internal\n */\nexport default function createTableInserter(\n editor: IEditor,\n td: HTMLTableCellElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onInsert: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const table = editor.getElementAtCursor('table', td);\n\n const tdRect = normalizeRect(td.getBoundingClientRect());\n const viewPort = editor.getVisibleViewport();\n const tableRect = table && viewPort ? getIntersectedRect([table], [viewPort]) : null;\n\n // set inserter position\n if (tdRect && tableRect) {\n const document = td.ownerDocument;\n const createElementData = getInsertElementData(\n isHorizontal,\n editor.isDarkMode(),\n isRTL,\n editor.getDefaultFormat().backgroundColor || 'white'\n );\n\n onShowHelperElement?.(createElementData, 'TableInserter');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n if (isHorizontal) {\n // tableRect.left/right is used because the Inserter is always intended to be on the side\n div.style.left = `${\n isRTL\n ? tableRect.right\n : tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n div.style.top = `${tdRect.bottom - 8}px`;\n (div.firstChild as HTMLElement).style.width = `${tableRect.right - tableRect.left}px`;\n } else {\n div.style.left = `${isRTL ? tdRect.left - 8 : tdRect.right - 8}px`;\n // tableRect.top is used because the Inserter is always intended to be on top\n div.style.top = `${\n tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n (div.firstChild as HTMLElement).style.height = `${tableRect.bottom - tableRect.top}px`;\n }\n\n (anchorContainer || document.body).appendChild(div);\n\n const handler = new TableInsertHandler(\n div,\n td,\n isHorizontal,\n editor,\n onInsert,\n getOnMouseOut\n );\n\n return { div, featureHandler: handler, node: td };\n }\n\n return null;\n}\n\nclass TableInsertHandler implements Disposable {\n private onMouseOutEvent: null | ((ev: MouseEvent) => void);\n constructor(\n private div: HTMLDivElement,\n private td: HTMLTableCellElement,\n private isHorizontal: boolean,\n private editor: IEditor,\n private onInsert: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void\n ) {\n this.div.addEventListener('click', this.insertTd);\n this.onMouseOutEvent = getOnMouseOut(div);\n this.div.addEventListener('mouseout', this.onMouseOutEvent);\n }\n\n dispose() {\n this.div.removeEventListener('click', this.insertTd);\n\n if (this.onMouseOutEvent) {\n this.div.removeEventListener('mouseout', this.onMouseOutEvent);\n }\n\n this.onMouseOutEvent = null;\n }\n\n private insertTd = () => {\n let vtable = new VTable(this.td);\n if (!this.isHorizontal) {\n vtable.normalizeTableCellSize(this.editor.getZoomScale());\n\n // Since adding new column will cause table width to change, we need to remove width properties\n vtable.table.removeAttribute('width');\n vtable.table.style.setProperty('width', null);\n }\n\n vtable.edit(this.isHorizontal ? TableOperation.InsertBelow : TableOperation.InsertRight);\n vtable.writeBack();\n\n this.onInsert(vtable.table);\n };\n}\n\nfunction getInsertElementData(\n isHorizontal: boolean,\n isDark: boolean,\n isRTL: boolean,\n backgroundColor: string\n): CreateElementData {\n const inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;\n const outerDivStyle = `position: fixed; width: ${INSERTER_SIDE_LENGTH}px; height: ${INSERTER_SIDE_LENGTH}px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid ${INSERTER_BORDER_SIZE}px ${inserterColor}; border-radius: 50%; background-color: ${backgroundColor}`;\n const leftOrRight = isRTL ? 'right' : 'left';\n const childBaseStyles = `position: absolute; box-sizing: border-box; background-color: ${backgroundColor};`;\n const childInfo: CreateElementData = {\n tag: 'div',\n style:\n childBaseStyles +\n (isHorizontal\n ? `${leftOrRight}: 12px; top: 5px; height: 3px; border-top: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-left: 0px;`\n : `left: 5px; top: 12px; width: 3px; border-left: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-top: 0px;`),\n };\n\n return {\n tag: 'div',\n style: outerDivStyle,\n children: [childInfo, '+'],\n };\n}\n","import DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditFeature from './TableEditorFeature';\nimport { CreateElementData, IEditor, Rect } from 'roosterjs-editor-types';\nimport {\n createElement,\n getComputedStyle,\n normalizeRect,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\n\nconst TABLE_RESIZER_LENGTH = 12;\nconst MIN_CELL_WIDTH = 30;\nconst MIN_CELL_HEIGHT = 20;\n\n/**\n * @internal\n */\nexport default function createTableResizer(\n table: HTMLTableElement,\n editor: IEditor,\n onStart: () => void,\n onEnd: () => false,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableBottomVisible(editor, rect, contentDiv)) {\n return null;\n }\n\n const document = table.ownerDocument;\n const isRTL = getComputedStyle(table, 'direction') == 'rtl';\n const zoomScale = editor.getZoomScale();\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${\n isRTL ? 'ne' : 'nw'\n }-resize; user-select: none; border: 1px solid #808080`,\n };\n\n onShowHelperElement?.(createElementData, 'TableResizer');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.style.width = `${TABLE_RESIZER_LENGTH}px`;\n div.style.height = `${TABLE_RESIZER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = {\n isRTL,\n table,\n zoomScale,\n onStart,\n onEnd,\n div,\n editor,\n contentDiv,\n };\n\n setDivPosition(context, div);\n\n const featureHandler = new DragAndDropHelper(\n div,\n context,\n hideResizer, // Resizer is hidden while dragging only\n {\n onDragStart,\n onDragging,\n onDragEnd,\n },\n zoomScale\n );\n\n return { node: table, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n onEnd: () => false;\n div: HTMLDivElement;\n editor: IEditor;\n contentDiv?: EventTarget | null;\n}\n\ninterface DragAndDropInitValue {\n originalRect: DOMRect;\n vTable: VTable;\n}\n\nfunction onDragStart(context: DragAndDropContext) {\n context.onStart();\n\n return {\n originalRect: context.table.getBoundingClientRect(),\n vTable: new VTable(context.table, true /*normalizeTable*/, context.zoomScale),\n };\n}\n\nfunction onDragging(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { isRTL, zoomScale } = context;\n const { originalRect, vTable } = initValue;\n const ratioX = 1.0 + (deltaX / originalRect.width) * zoomScale * (isRTL ? -1 : 1);\n const ratioY = 1.0 + (deltaY / originalRect.height) * zoomScale;\n const shouldResizeX = Math.abs(ratioX - 1.0) > 1e-3;\n const shouldResizeY = Math.abs(ratioY - 1.0) > 1e-3;\n\n if (vTable.cells && (shouldResizeX || shouldResizeY)) {\n for (let i = 0; i < vTable.cells.length; i++) {\n for (let j = 0; j < vTable.cells[i].length; j++) {\n const cell = vTable.cells[i][j];\n if (cell.td) {\n if (shouldResizeX) {\n // the width of some external table is fixed, we need to make it resizable\n vTable.table.style.setProperty('width', null);\n const newWidth = ((cell.width ?? 0) * ratioX) / zoomScale;\n cell.td.style.boxSizing = 'border-box';\n if (newWidth >= MIN_CELL_WIDTH) {\n cell.td.style.wordBreak = 'break-word';\n cell.td.style.whiteSpace = 'normal';\n cell.td.style.width = `${newWidth}px`;\n }\n }\n\n if (shouldResizeY) {\n // the height of some external table is fixed, we need to make it resizable\n vTable.table.style.setProperty('height', null);\n if (j == 0) {\n const newHeight = ((cell.height ?? 0) * ratioY) / zoomScale;\n if (newHeight >= MIN_CELL_HEIGHT) {\n cell.td.style.height = `${newHeight}px`;\n }\n } else {\n cell.td.style.setProperty('height', null);\n }\n }\n }\n }\n }\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDragEnd(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue | undefined\n) {\n if (\n isTableBottomVisible(\n context.editor,\n normalizeRect(context.table.getBoundingClientRect()),\n context.contentDiv\n )\n ) {\n context.div.style.visibility = 'visible';\n setDivPosition(context, context.div);\n }\n context.onEnd();\n return false;\n}\n\nfunction setDivPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { table, isRTL } = context;\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (rect) {\n trigger.style.top = `${rect.bottom}px`;\n trigger.style.left = isRTL\n ? `${rect.left - TABLE_RESIZER_LENGTH - 2}px`\n : `${rect.right}px`;\n }\n}\n\nfunction hideResizer(context: DragAndDropContext, trigger: HTMLElement) {\n trigger.style.visibility = 'hidden';\n}\n\nfunction isTableBottomVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: EventTarget | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (contentDiv && safeInstanceOf(contentDiv, 'HTMLElement') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return (\n !!containerRect &&\n containerRect.bottom >= rect.bottom &&\n visibleViewport.bottom >= rect.bottom\n );\n }\n\n return true;\n}\n","import DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditorFeature from './TableEditorFeature';\nimport { CreateElementData, IEditor, Rect } from 'roosterjs-editor-types';\nimport {\n createElement,\n normalizeRect,\n safeInstanceOf,\n getComputedStyle,\n} from 'roosterjs-editor-dom';\n\nconst TABLE_SELECTOR_LENGTH = 12;\nconst TABLE_SELECTOR_ID = '_Table_Selector';\n\n/**\n * @internal\n */\nexport default function createTableSelector(\n table: HTMLTableElement,\n editor: IEditor,\n onFinishDragging: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditorFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableTopVisible(editor, rect, contentDiv)) {\n return null;\n }\n\n const zoomScale = editor.getZoomScale();\n const document = table.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n };\n\n onShowHelperElement?.(createElementData, 'TableSelector');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_SELECTOR_ID;\n div.style.width = `${TABLE_SELECTOR_LENGTH}px`;\n div.style.height = `${TABLE_SELECTOR_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: TableSelectorContext = {\n table,\n zoomScale,\n rect,\n isRTL: getComputedStyle(table, 'direction') == 'rtl',\n };\n\n setDivPosition(context, div);\n\n const onDragEnd = (context: TableSelectorContext, event: MouseEvent): false => {\n if (event.target == div) {\n onFinishDragging(context.table);\n }\n return false;\n };\n\n const featureHandler = new TableSelectorFeature(\n div,\n context,\n setDivPosition,\n {\n onDragEnd,\n },\n context.zoomScale,\n getOnMouseOut\n );\n\n return { div, featureHandler, node: table };\n}\n\ninterface TableSelectorContext {\n table: HTMLTableElement;\n zoomScale: number;\n rect: Rect | null;\n isRTL: boolean;\n}\n\ninterface TableSelectorInitValue {\n event: MouseEvent;\n}\n\nclass TableSelectorFeature extends DragAndDropHelper {\n private onMouseOut: ((ev: MouseEvent) => void) | null;\n\n constructor(\n private div: HTMLElement,\n context: TableSelectorContext,\n onSubmit: (\n context: TableSelectorContext,\n trigger: HTMLElement,\n container?: HTMLElement\n ) => void,\n handler: DragAndDropHandler,\n zoomScale: number,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n forceMobile?: boolean | undefined,\n container?: HTMLElement\n ) {\n super(div, context, onSubmit, handler, zoomScale, forceMobile);\n this.onMouseOut = getOnMouseOut(div);\n div.addEventListener('mouseout', this.onMouseOut);\n }\n\n dispose(): void {\n super.dispose();\n if (this.onMouseOut) {\n this.div.removeEventListener('mouseout', this.onMouseOut);\n }\n this.onMouseOut = null;\n }\n}\n\nfunction setDivPosition(context: TableSelectorContext, trigger: HTMLElement) {\n const { rect } = context;\n if (rect) {\n trigger.style.top = `${rect.top - TABLE_SELECTOR_LENGTH}px`;\n trigger.style.left = `${rect.left - TABLE_SELECTOR_LENGTH - 2}px`;\n }\n}\n\nfunction isTableTopVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: EventTarget | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (contentDiv && safeInstanceOf(contentDiv, 'HTMLElement') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;\n }\n\n return true;\n}\n","export { default as TableResize } from './TableResize';\n","import { applyFormat, getEntitySelector, getTagOfNode } from 'roosterjs-editor-dom';\nimport { insertEntity } from 'roosterjs-editor-api';\nimport {\n DefaultFormat,\n EditorPlugin,\n Entity,\n EntityOperation,\n IEditor,\n PluginEvent,\n PluginEventType,\n ContentPosition,\n} from 'roosterjs-editor-types';\n\nconst ENTITY_TYPE = 'WATERMARK_WRAPPER';\n\n/**\n * A watermark plugin to manage watermark string for roosterjs\n */\nexport default class Watermark implements EditorPlugin {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private format: DefaultFormat;\n\n /**\n * Create an instance of Watermark plugin\n * @param watermark The watermark string\n */\n constructor(private watermark: string, format?: DefaultFormat, private customClass?: string) {\n this.format = format || {\n fontSize: '14px',\n textColors: {\n lightModeColor: '#AAAAAA',\n darkModeColor: '#6B6B6B',\n },\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Watermark';\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 this.disposer = this.editor.addDomEventHandler({\n focus: this.showHideWatermark,\n blur: this.showHideWatermark,\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n event.eventType == PluginEventType.EditorReady ||\n (event.eventType == PluginEventType.ContentChanged &&\n (event.data)?.type != ENTITY_TYPE)\n ) {\n this.showHideWatermark();\n } else if (\n event.eventType == PluginEventType.EntityOperation &&\n event.entity.type == ENTITY_TYPE &&\n this.editor\n ) {\n const {\n operation,\n entity: { wrapper },\n } = event;\n if (operation == EntityOperation.ReplaceTemporaryContent) {\n this.removeWatermark(wrapper);\n } else if (event.operation == EntityOperation.NewEntity) {\n applyFormat(\n wrapper,\n this.format,\n this.editor.isDarkMode(),\n this.editor.getDarkColorHandler()\n );\n wrapper.spellcheck = false;\n }\n }\n }\n\n private showHideWatermark = () => {\n if (!this.editor) {\n return;\n }\n const hasFocus = this.editor.hasFocus();\n const watermarks = this.editor.queryElements(getEntitySelector(ENTITY_TYPE));\n const isShowing = watermarks.length > 0;\n\n if (hasFocus && isShowing) {\n watermarks.forEach(this.removeWatermark);\n this.editor.focus();\n } else if (!hasFocus && !isShowing && this.editor.isEmpty()) {\n const newEntity = insertEntity(\n this.editor,\n ENTITY_TYPE,\n this.editor.getDocument().createTextNode(this.watermark),\n false /*isBlock*/,\n false /*isReadonly*/,\n ContentPosition.Begin\n );\n if (this.customClass) {\n newEntity.wrapper.classList.add(this.customClass);\n }\n }\n };\n\n private removeWatermark = (wrapper: HTMLElement) => {\n const parentNode = wrapper.parentNode;\n parentNode?.removeChild(wrapper);\n\n // After remove watermark node, if it leaves an empty DIV, append a BR node into it to make it a regular empty line\n if (\n parentNode &&\n this.editor?.contains(parentNode) &&\n getTagOfNode(parentNode) == 'DIV' &&\n !parentNode.firstChild\n ) {\n parentNode.appendChild(this.editor.getDocument().createElement('BR'));\n }\n };\n}\n","export { default as Watermark } from './Watermark';\n","export * from 'roosterjs-editor-types/lib/compatibleTypes';\n","/**\r\n * enum for setting block alignment, used by setAlignment API\r\n */\r\nexport enum CompatibleAlignment {\r\n\r\n /**\r\n * Align left\r\n */\r\n Left,\r\n\r\n /**\r\n * Align center\r\n */\r\n Center,\r\n\r\n /**\r\n * Align right\r\n */\r\n Right,\r\n}\r\n","/**\n * Enum used to control the different types of bullet list\n */\r\nexport enum CompatibleBulletListType {\r\n\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Bullet triggered by *\n */\n Disc = 1,\n\n /**\n * Bullet triggered by -\n */\n Dash = 2,\n\n /**\n * Bullet triggered by --\n */\n Square = 3,\n\n /**\n * Bullet triggered by >\n */\n ShortArrow = 4,\n\n /**\n * Bullet triggered by ->\n */\n LongArrow = 5,\n\n /**\n * Bullet triggered by =>\n */\n UnfilledArrow = 6,\n\n /**\n * Bullet triggered by —\n */\n Hyphen = 7,\n\n /**\n * Bullet triggered by -->\n */\n DoubleLongArrow = 8,\n\n /**\n * Bullet type circle\n */\n Circle = 9,\n\n /**\n * Maximum value of the enum\n */\n Max = 9,\n}\r\n","/**\n * The enum used for controlling the capitalization of text.\n * Used by changeCapitalization API\n */\r\nexport enum CompatibleCapitalization {\r\n\n /**\n * Transforms the first character after punctuation mark followed by space\n * to uppercase and the rest of characters to lowercase.\n */\n Sentence = 'sentence',\n\n /**\n * Transforms all characters to lowercase\n */\n Lowercase = 'lowercase',\n\n /**\n * Transforms all characters to uppercase\n */\n Uppercase = 'uppercase',\n\n /**\n * Transforms the first character of each word to uppercase\n */\n CapitalizeEachWord = 'capitalize',\n}\r\n","/**\r\n * Possible change sources. Here are the predefined sources.\r\n * It can also be other string if the change source can't fall into these sources.\r\n */\r\nexport enum CompatibleChangeSource {\r\n\r\n /**\r\n * Content changed by auto link\r\n */\r\n AutoLink = 'AutoLink',\r\n\r\n /**\r\n * Content changed by create link\r\n */\r\n CreateLink = 'CreateLink',\r\n\r\n /**\r\n * Content changed by format\r\n */\r\n Format = 'Format',\r\n\r\n /**\r\n * Content changed by image resize\r\n */\r\n ImageResize = 'ImageResize',\r\n\r\n /**\r\n * Content changed by paste\r\n */\r\n Paste = 'Paste',\r\n\r\n /**\r\n * Content changed by setContent API\r\n */\r\n SetContent = 'SetContent',\r\n\r\n /**\r\n * Content changed by cut operation\r\n */\r\n Cut = 'Cut',\r\n\r\n /**\r\n * Content changed by drag & drop operation\r\n */\r\n Drop = 'Drop',\r\n\r\n /**\r\n * Insert a new entity into editor\r\n */\r\n InsertEntity = 'InsertEntity',\r\n\r\n /**\r\n * Editor is switched to dark mode, content color is changed\r\n */\r\n SwitchToDarkMode = 'SwitchToDarkMode',\r\n\r\n /**\r\n * Editor is switched to light mode, content color is changed\r\n */\r\n SwitchToLightMode = 'SwitchToLightMode',\r\n\r\n /**\r\n * List chain reorganized numbers of lists\r\n */\r\n ListChain = 'ListChain',\r\n\r\n /**\r\n * Keyboard event, used by Content Model.\r\n * Data of this event will be the key code number\r\n */\r\n Keyboard = 'Keyboard',\r\n}\r\n","/**\n * Represents the strategy to clear the format of the current editor selection\n */\r\nexport enum CompatibleClearFormatMode {\r\n\n /**\n * Inline format. Remove text format.\n */\n Inline,\n\n /**\n * BLock format. Remove text and structure format of the block.\n */\n Block,\n\n /**\n * Detect Inline or Block format based on the current editor selector.\n */\n AutoDetect,\n}\r\n","/**\n * Represents the mode of color transformation\n */\r\nexport enum CompatibleColorTransformDirection {\r\n\n /**\n * Transform from light to dark\n */\n LightToDark = 0,\n\n /**\n * Transform from dark to light\n */\n DarkToLight = 1,\n}\r\n","/**\r\n * The position. Mostly used for content insertion and traversing\r\n * On insertion, we will need to specify where we want the content to be placed (begin, end, selection or outside)\r\n * On content traversing, we will need to specify the start position of traversing\r\n */\r\nexport enum CompatibleContentPosition {\r\n\r\n /**\r\n * Begin of the container\r\n */\r\n Begin,\r\n\r\n /**\r\n * End of the container\r\n */\r\n End,\r\n\r\n /**\r\n * End of the content div domain.\r\n */\r\n DomEnd,\r\n\r\n /**\r\n * Selection start\r\n */\r\n SelectionStart,\r\n\r\n /**\r\n * Outside of editor\r\n */\r\n Outside,\r\n\r\n /**\r\n * Manually defined range\r\n */\r\n Range,\r\n}\r\n","/**\n * Prefix of content types\n */\r\nexport enum CompatibleContentTypePrefix {\r\n\n /**\n * Text type prefix\n */\n Text = 'text/',\n\n /**\n * Image type prefix\n */\n Image = 'image/',\n}\r\n\r\n\n/**\n * Known content types\n */\r\nexport enum CompatibleContentType {\r\n\n /**\n * Plain text content type\n */\n PlainText = 'text/plain',\n\n /**\n * HTML content type\n */\n HTML = 'text/html',\n}\r\n","/**\n * @deprecated\n * Constants string for dataset names used by dark mode\n */\r\nexport enum CompatibleDarkModeDatasetNames {\r\n\n /**\n * Original style text color\n */\n OriginalStyleColor = 'ogsc',\n\n /**\n * Original style background color\n */\n OriginalStyleBackgroundColor = 'ogsb',\n\n /**\n * Original attribute text color\n */\n OriginalAttributeColor = 'ogac',\n\n /**\n * Original attribute background color\n */\n OriginalAttributeBackgroundColor = 'ogab',\n}\r\n","/**\n * Types of definitions, used by Definition type\n */\r\nexport enum CompatibleDefinitionType {\r\n\n /**\n * Boolean type definition, represents a boolean type value\n */\n Boolean,\n\n /**\n * Number type definition, represents a number type value\n */\n Number,\n\n /**\n * String type definition, represents a string type value\n */\n String,\n\n /**\n * Array type definition, represents an array with a given item type\n */\n Array,\n\n /**\n * Object type definition, represents an object with the given property types\n */\n Object,\n\n /**\n * Customize type definition, represents a customized type with a validator function\n */\n Customize,\n}\r\n","/**\n * Class names for Delimiter\n */\r\nexport enum CompatibleDelimiterClasses {\r\n\n /**\n * Class name to specify this delimiter is before an entity\n */\n DELIMITER_BEFORE = 'entityDelimiterBefore',\n\n /**\n * Class name to specify this delimiter is after an entity\n */\n DELIMITER_AFTER = 'entityDelimiterAfter',\n}\r\n","/**\r\n * enum for setting block direction, used by setDirection API\r\n */\r\nexport enum CompatibleDirection {\r\n\r\n /**\r\n * Left to right\r\n */\r\n LeftToRight,\r\n\r\n /**\r\n * Right to left\r\n */\r\n RightToLeft,\r\n}\r\n","/**\n * Command strings for Document.execCommand() API\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand\n */\r\nexport enum CompatibleDocumentCommand {\r\n\n /**\n * Changes the browser auto-link behavior (Internet Explorer only)\n */\n AutoUrlDetect = 'AutoUrlDetect',\n\n /**\n * Changes the document background color. In styleWithCss mode, it affects the background color of the containing block instead.\n * This requires a <color> value string to be passed in as a value argument. Note that Internet Explorer uses this to set the\n * text background color.\n */\n BackColor = 'backColor',\n\n /**\n * Toggles bold on/off for the selection or at the insertion point. Internet Explorer uses the <strong> tag instead of <b>.\n */\n Bold = 'bold',\n\n /**\n * Clears all authentication credentials from the cache.\n */\n ClearAuthenticationCache = 'ClearAuthenticationCache',\n\n /**\n * Makes the content document either read-only or editable. This requires a boolean true/false as the value argument.\n * (Not supported by Internet Explorer.)\n */\n ContentReadOnly = 'contentReadOnly',\n\n /**\n * Copies the current selection to the clipboard. Conditions of having this behavior enabled vary from one browser to another,\n * and have evolved over time. Check the compatibility table to determine if you can use it in your case.\n */\n Copy = 'copy',\n\n /**\n * Creates an hyperlink from the selection, but only if there is a selection. Requires a URI string as a value argument for the\n * hyperlink's href. The URI must contain at least a single character, which may be whitespace.\n * (Internet Explorer will create a link with a null value.)\n */\n CreateLink = 'createLink',\n\n /**\n * Removes the current selection and copies it to the clipboard. When this behavior is enabled varies between browsers,\n * and its conditions have evolved over time. Check the compatibility table for usage details.\n */\n Cut = 'cut',\n\n /**\n * Adds a <small> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n DecreaseFontSize = 'decreaseFontSize',\n\n /**\n * Changes the paragraph separator used when new paragraphs are created in editable text regions. See Differences in markup\n * generation for more details.\n */\n DefaultParagraphSeparator = 'defaultParagraphSeparator',\n\n /**\n * Deletes the current selection.\n */\n Delete = 'delete',\n\n /**\n * Enables or disables the table row/column insertion and deletion controls. (Not supported by Internet Explorer.)\n */\n EnableInlineTableEditing = 'enableInlineTableEditing',\n\n /**\n * Enables or disables the resize handles on images and other resizable objects. (Not supported by Internet Explorer.)\n */\n EnableObjectResizing = 'enableObjectResizing',\n\n /**\n * Changes the font name for the selection or at the insertion point. This requires a font name string (like \"Arial\")\n * as a value argument.\n */\n FontName = 'fontName',\n\n /**\n * Changes the font size for the selection or at the insertion point. This requires an integer from 1-7 as a value argument.\n */\n FontSize = 'fontSize',\n\n /**\n * Changes a font color for the selection or at the insertion point. This requires a hexadecimal color value string\n * as a value argument.\n */\n ForeColor = 'foreColor',\n\n /**\n * Adds an HTML block-level element around the line containing the current selection, replacing the block element containing\n * the line if one exists (in Firefox, <blockquote> is the exception — it will wrap any containing block element).\n * Requires a tag-name string as a value argument. Virtually all block-level elements can be used.\n * (Internet Explorer supports only heading tags H1–H6, ADDRESS, and PRE, which must be wrapped in angle brackets, such as \"<H1>\".)\n */\n FormatBlock = 'formatBlock',\n\n /**\n * Deletes the character ahead of the cursor's position, identical to hitting the Delete key on a Windows keyboard.\n */\n ForwardDelete = 'forwardDelete',\n\n /**\n * Adds a heading element around a selection or insertion point line. Requires the tag-name strings a value argument (i.e. \"H1\", \"H6\").\n * (Not supported by Internet Explorer and Safari.)\n */\n Heading = 'heading',\n\n /**\n * Changes the background color for the selection or at the insertion point. Requires a color value string as a value argument.\n * useCSS must be true for this to function. (Not supported by Internet Explorer.)\n */\n HiliteColor = 'hiliteColor',\n\n /**\n * Adds a <big> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n IncreaseFontSize = 'increaseFontSize',\n\n /**\n * Indents the line containing the selection or insertion point. In Firefox, if the selection spans multiple lines at different\n * levels of indentation, only the least indented lines in the selection will be indented.\n */\n Indent = 'indent',\n\n /**\n * Controls whether the Enter key inserts a <br> element, or splits the current block element into two.\n * (Not supported by Internet Explorer.)\n */\n InsertBrOnReturn = 'insertBrOnReturn',\n\n /**\n * Inserts a <hr> element at the insertion point, or replaces the selection with it.\n */\n InsertHorizontalRule = 'insertHorizontalRule',\n\n /**\n * Inserts an HTML string at the insertion point (deletes selection). Requires a valid HTML string as a value argument.\n * (Not supported by Internet Explorer.)\n */\n InsertHTML = 'insertHTML',\n\n /**\n * Inserts an image at the insertion point (deletes selection). Requires a URL string for the image's src as a value argument.\n * The requirements for this string are the same as createLink.\n */\n InsertImage = 'insertImage',\n\n /**\n * Creates a numbered ordered list for the selection or at the insertion point.\n */\n InsertOrderedList = 'insertOrderedList',\n\n /**\n * Creates a bulleted unordered list for the selection or at the insertion point.\n */\n InsertUnorderedList = 'insertUnorderedList',\n\n /**\n * Inserts a paragraph around the selection or the current line.\n * (Internet Explorer inserts a paragraph at the insertion point and deletes the selection.)\n */\n InsertParagraph = 'insertParagraph',\n\n /**\n * Inserts the given plain text at the insertion point (deletes selection).\n */\n InsertText = 'insertText',\n\n /**\n * Toggles italics on/off for the selection or at the insertion point.\n * (Internet Explorer uses the <em> element instead of <i>.)\n */\n Italic = 'italic',\n\n /**\n * Centers the selection or insertion point.\n */\n JustifyCenter = 'justifyCenter',\n\n /**\n * Justifies the selection or insertion point.\n */\n JustifyFull = 'justifyFull',\n\n /**\n * Justifies the selection or insertion point to the left.\n */\n JustifyLeft = 'justifyLeft',\n\n /**\n * Right-justifies the selection or the insertion point.\n */\n JustifyRight = 'justifyRight',\n\n /**\n * Outdents the line containing the selection or insertion point.\n */\n Outdent = 'outdent',\n\n /**\n * Pastes the clipboard contents at the insertion point (replaces current selection). Disabled for web content. See [1].\n */\n Paste = 'paste',\n\n /**\n * Redoes the previous undo command.\n */\n Redo = 'redo',\n\n /**\n * Removes all formatting from the current selection.\n */\n RemoveFormat = 'removeFormat',\n\n /**\n * Selects all of the content of the editable region.\n */\n SelectAll = 'selectAll',\n\n /**\n * Toggles strikethrough on/off for the selection or at the insertion point.\n */\n StrikeThrough = 'strikeThrough',\n\n /**\n * Toggles subscript on/off for the selection or at the insertion point.\n */\n Subscript = 'subscript',\n\n /**\n * Toggles superscript on/off for the selection or at the insertion point.\n */\n Superscript = 'superscript',\n\n /**\n * Toggles underline on/off for the selection or at the insertion point.\n */\n Underline = 'underline',\n\n /**\n * Undoes the last executed command.\n */\n Undo = 'undo',\n\n /**\n * Removes the anchor element from a selected hyperlink.\n */\n Unlink = 'unlink',\n\n /**\n * Replaces the useCSS command. true modifies/generates style attributes in markup, false generates presentational elements.\n */\n StyleWithCSS = 'styleWithCSS',\n}\r\n","/**\n * The is essentially an enum representing result from browser compareDocumentPosition API\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n */\r\nexport enum CompatibleDocumentPosition {\r\n\n /**\n * Same node\n */\n Same = 0,\n\n /**\n * Node is disconnected from document\n */\n Disconnected = 1,\n\n /**\n * Node is preceding the comparing node\n */\n Preceding = 2,\n\n /**\n * Node is following the comparing node\n */\n Following = 4,\n\n /**\n * Node contains the comparing node\n */\n Contains = 8,\n\n /**\n * Node is contained by the comparing node\n */\n ContainedBy = 16,\n}\r\n","/**\n * CSS Class names for Entity\n */\r\nexport enum CompatibleEntityClasses {\r\n\n /**\n * Class name to specify this is an entity\n */\n ENTITY_INFO_NAME = '_Entity',\n\n /**\n * Class name to specify the type of an entity\n */\n ENTITY_TYPE_PREFIX = '_EType_',\n\n /**\n * Class name to specify the ID of an entity\n */\n ENTITY_ID_PREFIX = '_EId_',\n\n /**\n * Class name to specify if the entity is readonly\n */\n ENTITY_READONLY_PREFIX = '_EReadonly_',\n}\r\n","/**\n * Define possible operations to an entity\n */\r\nexport enum CompatibleEntityOperation {\r\n\n /**\n * Notify plugins that there is a new plugin was added into editor.\n * Plugin can handle this event to entity hydration.\n * This event will be only fired once for each entity DOM node.\n * After undo, or copy/paste, since new DOM nodes were added, this event will be fired\n * for those entities represented by newly added nodes.\n */\n NewEntity,\n\n /**\n * Notify plugins that user is clicking target to an entity\n */\n Click,\n\n /**\n * Notify plugins that user is triggering context menu to an entity\n */\n ContextMenu,\n\n /**\n * Notify plugins that user is escaping from an entity by pressing ESC key\n */\n Escape,\n\n /**\n * Notify plugins that user is removing an entity from its start position using DELETE key\n */\n RemoveFromStart,\n\n /**\n * Notify plugins that user is remove an entity from its end position using BACKSPACE key\n */\n RemoveFromEnd,\n\n /**\n * Notify plugins that an entity is being overwritten.\n * This can be caused by key in, cut, paste, delete, backspace ... on a selection\n * which contains some entities.\n */\n Overwrite,\n\n /**\n * Notify plugins that an entity is being partially overwritten.\n * This happens when user selected part of the entity then do key press, or cut, paste, delete, backspace, ...\n */\n PartialOverwrite,\n\n /**\n * Notify plugins that editor is generating HTML content for save.\n * Plugin should use this event to remove any temporary content, and only leave DOM nodes that\n * should be saved as HTML string.\n * This event will provide a cloned DOM tree for each entity, do NOT compare the DOM nodes with cached nodes\n * because it will always return false.\n */\n ReplaceTemporaryContent,\n\n /**\n * @deprecated\n */\n AddShadowRoot,\n\n /**\n * @deprecated\n */\n RemoveShadowRoot,\n\n /**\n * Notify plugins that a new entity state need to be updated to an entity.\n * This is normally happened when user undo/redo the content with an entity snapshot added by a plugin that handles entity\n */\n UpdateEntityState,\n}\r\n","/**\n * Experimental feature flags\n */\r\nexport enum CompatibleExperimentalFeatures {\r\n\n // #region Graduated and deprecated features.\n // These features will be removed in next major release\n /**\n * @deprecated This feature is always enabled\n */\n NewIndentation = 'NewIndentation',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewBullet = 'NewBullet',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewNumbering = 'NewNumbering',\n\n /**\n * @deprecated This feature is always enabled\n */\n ListChain = 'ListChain',\n\n /**\n * @deprecated This feature is always enabled\n */\n MergePastedLine = 'MergePastedLine',\n\n /**\n * @deprecated This feature is always enabled\n */\n SingleDirectionResize = 'SingleDirectionResize',\n\n /**\n * @deprecated This feature is always enabled\n */\n PasteWithLinkPreview = 'PasteWithLinkPreview',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageRotate = 'ImageRotate',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageCrop = 'ImageCrop',\n\n /**\n * @deprecated This feature is always enabled\n * Check if the element has a style attribute, if not, apply the default format\n */\n AlwaysApplyDefaultFormat = 'AlwaysApplyDefaultFormat',\n\n /**\n * @deprecated This feature can be enabled/disabled using Paste Plugin contructor param\n * Paste the Html instead of the Img when the Html Body only have one IMG Child node\n */\n ConvertSingleImageBody = 'ConvertSingleImageBody',\n\n /**\n * @deprecated This feature is always enabled\n * Align table elements to left, center and right using setAlignment API\n */\n TableAlignment = 'TableAlignment',\n\n /**\n * @deprecated this feature is always enabled\n * Provide a circular resize handles that adaptive the number od handles to the size of the image\n */\n AdaptiveHandlesResizer = 'AdaptiveHandlesResizer',\n\n /**\n * @deprecated this feature is always disabled\n * Automatically transform -- into hyphen, if typed between two words.\n */\n AutoHyphen = 'AutoHyphen',\n\n /**\n * @deprecated this feature is always disabled\n * Use pending format strategy to do style based format, e.g. Font size, Color.\n * With this feature enabled, we don't need to insert temp ZeroWidthSpace character to hold pending format\n * when selection is collapsed. Instead, we will hold the pending format in memory and only apply it when type something\n */\n PendingStyleBasedFormat = 'PendingStyleBasedFormat',\n\n /**\n * @deprecated this feature is always disabled\n * Normalize list to make sure it can be displayed correctly in other client\n * e.g. We will move list items with \"display: block\" into previous list item and change tag to be DIV\n */\n NormalizeList = 'NormalizeList',\n\n /**\n * @deprecated this feature is always enabled\n * When a html image is selected, the selected image data will be stored by editor core.\n */\n ImageSelection = 'ImageSelection',\n\n /**\n * @deprecated this feature is always enabled\n * Use variable-based dark mode solution rather than dataset-based solution.\n * When enable this feature, need to pass in a DarkModelHandler object to each call of setColor and applyFormat\n * if you need them work for dark mode\n */\n VariableBasedDarkColor = 'VariableBasedDarkColor',\n\n /**\n * @deprecated this feature is always enabled\n * Align list elements elements to left, center and right using setAlignment API\n */\n ListItemAlignment = 'ListItemAlignment',\n\n /**\n * @deprecated\n */\n DefaultFormatInSpan = 'DefaultFormatInSpan',\n\n /**\n * @deprecated\n */\n DefaultFormatOnContainer = 'DefaultFormatOnContainer',\n\n /**\n * @deprecated This feature is always enabled\n * Reuse existing DOM structure if possible when convert Content Model back to DOM tree\n */\n ReusableContentModel = 'ReusableContentModel',\n\n /**\n * @deprecated This feature is always enabled\n * Handle keyboard editing event with Content Model\n */\n EditWithContentModel = 'EditWithContentModel',\n\n //#endregion\n\n /**\n * Provide additional Tab Key Features. Requires Text Features Content Editable Features\n */\n TabKeyTextFeatures = 'TabKeyTextFeatures',\n\n /**\n * Trigger formatting by a especial characters. Ex: (A), 1. i).\n */\n AutoFormatList = 'AutoFormatList',\n\n /**\n * With this feature enabled, when writing back a list item we will re-use all\n * ancestor list elements, even if they don't match the types currently in the\n * listTypes array for that item. The only list that we will ensure is correct\n * is the one closest to the item.\n */\n ReuseAllAncestorListElements = 'ReuseAllAncestorListElements',\n\n /**\n * Delete table with Backspace key with the whole was selected with table selector\n */\n DeleteTableWithBackspace = 'DeleteTableWithBackspace',\n\n /**\n * Add entities around a Read Only Inline entity to prevent cursor to be hidden when cursor is next of it.\n */\n InlineEntityReadOnlyDelimiters = 'InlineEntityReadOnlyDelimiters',\n\n /**\n * Paste with Content model\n */\n ContentModelPaste = 'ContentModelPaste',\n\n /**\n * Disable list chain functionality\n */\n DisableListChain = 'DisableListChain',\n}\r\n","/**\r\n * The enum used for increase or decrease font size\r\n * Used by setFontSize API\r\n */\r\nexport enum CompatibleFontSizeChange {\r\n\r\n /**\r\n * Increase font size\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease font size\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Represents a mode number to indicate what kind of content to retrieve when call Editor.getContent()\n */\r\nexport enum CompatibleGetContentMode {\r\n\n /**\n * The clean content without any temporary content only for editor.\n * This is the default value. Call to Editor.getContent() with trigger an ExtractContentWithDom event\n * so that plugins can remove their temporary content, and will return the HTML content\n * which is ready for save to storage.\n */\n CleanHTML = 0,\n\n /**\n * Retrieve the raw HTML string in current editor. Temporary content will be included.\n */\n RawHTMLOnly = 1,\n\n /**\n * Retrieve the raw HTML string in current editor with a selection marker. This can be used for\n * save current editor state and call to SetContent with this result can fully restore editor state\n * including current selection\n */\n RawHTMLWithSelection = 2,\n\n /**\n * Get plain text content only, all format will be ignored\n */\n PlainText,\n\n /**\n * A fast way to get plain text content, the line-end positions may not be exactly same with HTML content,\n * but the text content should be the same. This is used for quickly retrieve text content and check\n * text only\n */\n PlainTextFast,\n}\r\n","/**\n * Operation flags for ImageEdit plugin\n */\r\nexport enum CompatibleImageEditOperation {\r\n\n /**\n * No operation\n */\n None = 0,\n\n /**\n * Resize image from corner ( horizontal and vertical resize)\n */\n CornerResize = 1,\n\n /**\n * Resize image from side ( either horizontal or vertical resize)\n */\n SideResize = 2,\n\n /**\n * Image resize\n */\n Resize = CornerResize | SideResize,\n\n /**\n * Image rotate\n */\n Rotate = 4,\n\n /**\n * Image resize and rotate\n */\n ResizeAndRotate = Resize | Rotate,\n\n /**\n * Image crop\n */\n Crop = 8,\n\n /**\n * All operations\n */\n All = ResizeAndRotate | Crop,\n}\r\n","/**\r\n * The enum used for increase or decrease indentation of a block\r\n * Used by setIndentation API\r\n */\r\nexport enum CompatibleIndentation {\r\n\r\n /**\r\n * Increase indentation\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease indentation\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Key numbers common used keys\n */\r\nexport enum CompatibleKeys {\r\n\n NULL = 0,\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL_LEFT = 17,\n ALT = 18,\n ESCAPE = 27,\n SPACE = 32,\n PAGEUP = 33,\n END = 35,\n HOME = 36,\n LEFT = 37,\n UP = 38,\n RIGHT = 39,\n DOWN = 40,\n PRINT_SCREEN = 44,\n DELETE = 46,\n /**\n * @deprecated Just for backward compatibility\n */\n EIGHT_ASTIRISK = 56,\n EIGHT_ASTERISK = 56,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n META_LEFT = 91,\n COMMA = 188,\n DASH_UNDERSCORE = 189,\n PERIOD = 190,\n /**\n * @deprecated Just for backward compatibility\n */\n FORWARDSLASH = 191,\n FORWARD_SLASH = 191,\n GRAVE_TILDE = 192,\n\n /**\n * Keys below are non-standard, and should be used in ContentEditFeatures only\n */\n CONTENTCHANGED = 0x101,\n RANGE = 0x102,\n\n Ctrl = 0x1000,\n Meta = 0x2000,\n Shift = 0x4000,\n}\r\n","/**\n * Index of known CreateElementData used by createElement function\n */\r\nexport enum CompatibleKnownCreateElementDataIndex {\r\n\n /**\n * Set a none value to help createElement function ignore falsy value\n */\n None = 0,\n\n /**\n * An empty line without format\n */\n EmptyLine = 1,\n\n /**\n * Wrapper for blockquote\n */\n BlockquoteWrapper = 2,\n\n /**\n * Temp DIV for copy/paste\n */\n CopyPasteTempDiv = 3,\n\n /**\n * ListItem with block style\n */\n BlockListItem = 4,\n\n /**\n * Wrapper element for context menu\n */\n ContextMenuWrapper = 5,\n\n /**\n * Wrapper element for image edit\n */\n ImageEditWrapper = 6,\n\n /**\n * @deprecated\n */\n TableHorizontalResizer = 7,\n\n /**\n * @deprecated\n */\n TableVerticalResizer = 8,\n\n /**\n * @deprecated\n */\n TableResizerLTR = 9,\n\n /**\n * @deprecated\n */\n TableResizerRTL = 10,\n\n /**\n * @deprecated\n */\n TableSelector = 11,\n\n /**\n * @deprecated\n */\n EmptyLineFormatInSpan = 12,\n}\r\n","/**\n * Represent the types of sources to handle in the Paste Plugin\n */\r\nexport enum CompatibleKnownPasteSourceType {\r\n\n WordDesktop,\n ExcelDesktop,\n ExcelOnline,\n PowerPointDesktop,\n GoogleSheets,\n WacComponents,\n Default,\n SingleImage,\n}\r\n","/**\n * Type of list (numbering or bullet)\n */\r\nexport enum CompatibleListType {\r\n\n /**\n * None list type\n * It means this is not a list\n */\n None = 0,\n\n /**\n * Ordered List type (numbering list)\n * Represented by \"OL\" tag\n */\n Ordered = 1,\n\n /**\n * Unordered List type (bullet list)\n * Represented by \"UL\" tag\n */\n Unordered = 2,\n}\r\n","/**\n * The is essentially an enum represents the type of the node\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n * Values not listed here are deprecated.\n */\r\nexport enum CompatibleNodeType {\r\n\n /**\n * An Element node such as <p> or <div>.\n */\n Element = 1,\n\n /**\n * An Attribute node such as name=\"value\".\n */\n Attribute = 2,\n\n /**\n * The actual Text of Element or Attr.\n */\n Text = 3,\n\n /**\n * A ProcessingInstruction of an XML document such as <?xml-stylesheet ... ?> declaration.\n */\n ProcessingInstruction = 7,\n\n /**\n * A Comment node.\n */\n Comment = 8,\n\n /**\n * A Document node.\n */\n Document = 9,\n\n /**\n * A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents.\n */\n DocumentType = 10,\n\n /**\n * A DocumentFragment node.\n */\n DocumentFragment = 11,\n}\r\n","/**\n * Enum used to control the different types of numbering list\n */\r\nexport enum CompatibleNumberingListType {\r\n\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Numbering triggered by 1.\n */\n Decimal = 1,\n\n /**\n * Numbering triggered by 1-\n */\n DecimalDash = 2,\n\n /**\n * Numbering triggered by 1)\n */\n DecimalParenthesis = 3,\n\n /**\n * Numbering triggered by (1)\n */\n DecimalDoubleParenthesis = 4,\n\n /**\n * Numbering triggered by a.\n */\n LowerAlpha = 5,\n\n /**\n * Numbering triggered by a)\n */\n LowerAlphaParenthesis = 6,\n\n /**\n * Numbering triggered by (a)\n */\n LowerAlphaDoubleParenthesis = 7,\n\n /**\n * Numbering triggered by a-\n */\n LowerAlphaDash = 8,\n\n /**\n * Numbering triggered by A.\n */\n UpperAlpha = 9,\n\n /**\n * Numbering triggered by A)\n */\n UpperAlphaParenthesis = 10,\n\n /**\n * Numbering triggered by (A)\n */\n UpperAlphaDoubleParenthesis = 11,\n\n /**\n * Numbering triggered by A-\n */\n UpperAlphaDash = 12,\n\n /**\n * Numbering triggered by i.\n */\n LowerRoman = 13,\n\n /**\n * Numbering triggered by i)\n */\n LowerRomanParenthesis = 14,\n\n /**\n * Numbering triggered by (i)\n */\n LowerRomanDoubleParenthesis = 15,\n\n /**\n * Numbering triggered by i-\n */\n LowerRomanDash = 16,\n\n /**\n * Numbering triggered by I.\n */\n UpperRoman = 17,\n\n /**\n * Numbering triggered by I)\n */\n UpperRomanParenthesis = 18,\n\n /**\n * Numbering triggered by (I)\n */\n UpperRomanDoubleParenthesis = 19,\n\n /**\n * Numbering triggered by I-\n */\n UpperRomanDash = 20,\n\n /**\n * Maximum value of the enum\n */\n Max = 20,\n}\r\n","/**\n * Enum for paste options\n */\r\nexport enum CompatiblePasteType {\r\n\n /**\n * Default paste behavior\n */\n Normal,\n\n /**\n * Paste only the plain text\n */\n AsPlainText,\n\n /**\n * Apply the current style to pasted content\n */\n MergeFormat,\n\n /**\n * If there is a image uri in the clipboard, paste the content as image element\n */\n AsImage,\n}\r\n","/**\n * Editor plugin event type\n */\r\nexport enum CompatiblePluginEventType {\r\n\n /**\n * HTML KeyDown event\n */\n KeyDown = 0,\n\n /**\n * HTML KeyPress event\n */\n KeyPress = 1,\n\n /**\n * HTML KeyUp event\n */\n KeyUp = 2,\n\n /**\n * HTML Input / TextInput event\n */\n Input = 3,\n\n /**\n * HTML CompositionEnd event\n */\n CompositionEnd = 4,\n\n /**\n * HTML MouseDown event\n */\n MouseDown = 5,\n\n /**\n * HTML MouseUp event\n */\n MouseUp = 6,\n\n /**\n * Content changed event\n */\n ContentChanged = 7,\n\n /**\n * Extract Content with a DOM tree event\n * This event is triggered when getContent() is called with triggerExtractContentEvent = true\n * Plugin can handle this event to remove the UI only markups to return clean HTML\n * by operating on a cloned DOM tree\n */\n ExtractContentWithDom = 8,\n\n /**\n * Before Paste event, provide a chance to change copied content\n */\n BeforeCutCopy = 9,\n\n /**\n * Before Paste event, provide a chance to change paste content\n */\n BeforePaste = 10,\n\n /**\n * Let plugin know editor is ready now\n */\n EditorReady = 11,\n\n /**\n * Let plugin know editor is about to dispose\n */\n BeforeDispose = 12,\n\n /**\n * Pending format state (bold, italic, underline, ... with collapsed selection) is changed\n */\n PendingFormatStateChanged = 13,\n\n /**\n * Scroll event triggered by scroll container\n */\n Scroll = 14,\n\n /**\n * Operating on an entity. See enum EntityOperation for more details about each operation\n */\n EntityOperation = 15,\n\n /**\n * HTML ContextMenu event\n */\n ContextMenu = 16,\n\n /**\n * Editor has entered shadow edit mode\n */\n EnteredShadowEdit = 17,\n\n /**\n * Editor is about to leave shadow edit mode\n */\n LeavingShadowEdit = 18,\n\n /**\n * Content of image is being changed from client side\n */\n EditImage = 19,\n\n /**\n * Content of editor is about to be cleared by SetContent API, handle this event to cache anything you need\n * before it is gone\n */\n BeforeSetContent = 20,\n\n /**\n * Zoom scale value is changed, triggered by Editor.setZoomScale() when set a different scale number\n */\n ZoomChanged = 21,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor changed the selection.\n */\n SelectionChanged = 22,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor content is about to be changed by keyboard event.\n * This is only used by Content Model editing\n */\n BeforeKeyboardEditing = 23,\n}\r\n","/**\r\n * Represent the type of a position\r\n */\r\nexport enum CompatiblePositionType {\r\n\r\n /**\r\n * At the beginning of a node\r\n */\r\n Begin = 0,\r\n\r\n /**\r\n * At the end of a node\r\n */\r\n End = -1,\r\n\r\n /**\r\n * Before a node\r\n */\r\n Before = -2,\r\n\r\n /**\r\n * After a node\r\n */\r\n After = -3,\r\n}\r\n","/**\r\n * Query scope for queryElements() API\r\n */\r\nexport enum CompatibleQueryScope {\r\n\r\n /**\r\n * Query from the whole body of root node. This is default value.\r\n */\r\n Body,\r\n\r\n /**\r\n * Query elements on a given selection (intersect)\r\n * The result element can contain the selection, contain part of selection, or inside selection\r\n */\r\n OnSelection,\r\n\r\n /**\r\n * Query elements inside a given selection only\r\n */\r\n InSelection,\r\n}\r\n","/**\n * Type of all possible regions. Currently we only support region of Table\n */\r\nexport enum CompatibleRegionType {\r\n\n /**\n * Region split by Table\n */\n Table,\n}\r\n","/**\n * Types of Selection Ranges that the SelectionRangeEx can return\n */\r\nexport enum CompatibleSelectionRangeTypes {\r\n\n /**\n * Normal selection range provided by browser.\n */\n Normal,\n /**\n * Selection made inside of a single table.\n */\n TableSelection,\n /**\n * Selection made in a image.\n */\n ImageSelection,\n}\r\n","/**\n * Table format border\n */\r\nexport enum CompatibleTableBorderFormat {\r\n\n /**\n * All border of the table are displayed\n * __ __ __\n * |__|__|__|\n * |__|__|__|\n * |__|__|__|\n */\n DEFAULT,\n\n /**\n * Middle vertical border are not displayed\n * __ __ __\n * |__ __ __|\n * |__ __ __|\n * |__ __ __|\n */\n LIST_WITH_SIDE_BORDERS,\n\n /**\n * All borders except header rows borders are displayed\n * __ __ __\n * __|__|__\n * __|__|__\n */\n NO_HEADER_BORDERS,\n\n /**\n * The left and right border of the table are not displayed\n * __ __ __\n * __|__|__\n * __|__|__\n * __|__|__\n */\n NO_SIDE_BORDERS,\n\n /**\n * Only the borders that divides the header row, first column and externals are displayed\n * __ __ __\n * |__ __ __|\n * | | |\n * |__|__ __|\n */\n FIRST_COLUMN_HEADER_EXTERNAL,\n\n /**\n * The header row has no vertical border, except for the first one\n * The first column has no horizontal border, except for the first one\n * __ __ __\n * |__ __ __\n * | |__|__|\n * | |__|__|\n */\n ESPECIAL_TYPE_1,\n\n /**\n * The header row has no vertical border, except for the first one\n * The only horizontal border of the table is the top and bottom of header row\n * __ __ __\n * |__ __ __\n * | | |\n * | | |\n */\n ESPECIAL_TYPE_2,\n\n /**\n * The only borders are the bottom of header row and the right border of first column\n * __ __ __\n * |\n * |\n */\n ESPECIAL_TYPE_3,\n\n /**\n * No border\n */\n CLEAR,\n}\r\n","/**\r\n * Operations used by editTable() API\r\n */\r\nexport enum CompatibleTableOperation {\r\n\r\n /**\r\n * Insert a row above current row\r\n */\r\n InsertAbove,\r\n\r\n /**\r\n * Insert a row below current row\r\n */\r\n InsertBelow,\r\n\r\n /**\r\n * Insert a column on the left of current column\r\n */\r\n InsertLeft,\r\n\r\n /**\r\n * Insert a column on the right of current column\r\n */\r\n InsertRight,\r\n\r\n /**\r\n * Delete the whole table\r\n */\r\n DeleteTable,\r\n\r\n /**\r\n * Delete current column\r\n */\r\n DeleteColumn,\r\n\r\n /**\r\n * Delete current row\r\n */\r\n DeleteRow,\r\n\r\n /**\r\n * Merge current row with the row above\r\n */\r\n MergeAbove,\r\n\r\n /**\r\n * Merge current row with the row below\r\n */\r\n MergeBelow,\r\n\r\n /**\r\n * Merge current column with the column on the left\r\n */\r\n MergeLeft,\r\n\r\n /**\r\n * Merge current column with the column on the right\r\n */\r\n MergeRight,\r\n\r\n /**\r\n * Merge all selected cells\r\n */\r\n MergeCells,\r\n\r\n /**\r\n * Split current table cell horizontally\r\n */\r\n SplitHorizontally,\r\n\r\n /**\r\n * Split current table cell vertically\r\n */\r\n SplitVertically,\r\n\r\n /**\r\n * Align current table at the center\r\n */\r\n AlignCenter,\r\n\r\n /**\r\n * Align current table at the left\r\n */\r\n AlignLeft,\r\n\r\n /**\r\n * Align current table at the right\r\n */\r\n AlignRight,\r\n\r\n /**\r\n * Align current content table cell at the left\r\n */\r\n AlignCellLeft,\r\n\r\n /**\r\n * Align current content table cell at the center\r\n */\r\n AlignCellCenter,\r\n\r\n /**\r\n * Align current content table cell at the right\r\n */\r\n AlignCellRight,\r\n\r\n /**\r\n * Align current content table cell at the top\r\n */\r\n AlignCellTop,\r\n\r\n /**\r\n * Align current table cell at the middle\r\n */\r\n AlignCellMiddle,\r\n\r\n /**\r\n * Align current table cell at the bottom\r\n */\r\n AlignCellBottom,\r\n}\r\n","export { CompatibleAlignment } from './Alignment'\r\nexport { CompatibleBulletListType } from './BulletListType'\r\nexport { CompatibleCapitalization } from './Capitalization'\r\nexport { CompatibleChangeSource } from './ChangeSource'\r\nexport { CompatibleClearFormatMode } from './ClearFormatMode'\r\nexport { CompatibleColorTransformDirection } from './ColorTransformDirection'\r\nexport { CompatibleContentPosition } from './ContentPosition'\r\nexport { CompatibleContentTypePrefix, CompatibleContentType } from './ContentType'\r\nexport { CompatibleDarkModeDatasetNames } from './DarkModeDatasetNames'\r\nexport { CompatibleDefinitionType } from './DefinitionType'\r\nexport { CompatibleDelimiterClasses } from './DelimiterClasses'\r\nexport { CompatibleDirection } from './Direction'\r\nexport { CompatibleDocumentCommand } from './DocumentCommand'\r\nexport { CompatibleDocumentPosition } from './DocumentPosition'\r\nexport { CompatibleEntityClasses } from './EntityClasses'\r\nexport { CompatibleEntityOperation } from './EntityOperation'\r\nexport { CompatibleExperimentalFeatures } from './ExperimentalFeatures'\r\nexport { CompatibleFontSizeChange } from './FontSizeChange'\r\nexport { CompatibleGetContentMode } from './GetContentMode'\r\nexport { CompatibleImageEditOperation } from './ImageEditOperation'\r\nexport { CompatibleIndentation } from './Indentation'\r\nexport { CompatibleKeys } from './Keys'\r\nexport { CompatibleKnownCreateElementDataIndex } from './KnownCreateElementDataIndex'\r\nexport { CompatibleKnownPasteSourceType } from './KnownPasteSourceType'\r\nexport { CompatibleListType } from './ListType'\r\nexport { CompatibleNodeType } from './NodeType'\r\nexport { CompatibleNumberingListType } from './NumberingListType'\r\nexport { CompatiblePasteType } from './PasteType'\r\nexport { CompatiblePluginEventType } from './PluginEventType'\r\nexport { CompatiblePositionType } from './PositionType'\r\nexport { CompatibleQueryScope } from './QueryScope'\r\nexport { CompatibleRegionType } from './RegionType'\r\nexport { CompatibleSelectionRangeTypes } from './SelectionRangeTypes'\r\nexport { CompatibleTableBorderFormat } from './TableBorderFormat'\r\nexport { CompatibleTableOperation } from './TableOperation'\r\n","export * from './browser/index';\nexport * from './corePluginState/index';\nexport * from './compatibleEnum/index';\nexport * from './event/index';\nexport * from './interface/index';\nexport * from './type/index';\n","/**\r\n * enum for setting block alignment, used by setAlignment API\r\n */\r\nexport const enum Alignment {\r\n /**\r\n * Align left\r\n */\r\n Left,\r\n\r\n /**\r\n * Align center\r\n */\r\n Center,\r\n\r\n /**\r\n * Align right\r\n */\r\n Right,\r\n}\r\n","/**\n * Enum used to control the different types of bullet list\n */\nexport const enum BulletListType {\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Bullet triggered by *\n */\n Disc = 1,\n\n /**\n * Bullet triggered by -\n */\n Dash = 2,\n\n /**\n * Bullet triggered by --\n */\n Square = 3,\n\n /**\n * Bullet triggered by >\n */\n ShortArrow = 4,\n\n /**\n * Bullet triggered by ->\n */\n LongArrow = 5,\n\n /**\n * Bullet triggered by =>\n */\n UnfilledArrow = 6,\n\n /**\n * Bullet triggered by —\n */\n Hyphen = 7,\n\n /**\n * Bullet triggered by -->\n */\n DoubleLongArrow = 8,\n\n /**\n * Bullet type circle\n */\n Circle = 9,\n\n /**\n * Maximum value of the enum\n */\n Max = 9,\n}\n","/**\n * The enum used for controlling the capitalization of text.\n * Used by changeCapitalization API\n */\nexport const enum Capitalization {\n /**\n * Transforms the first character after punctuation mark followed by space\n * to uppercase and the rest of characters to lowercase.\n */\n Sentence = 'sentence',\n\n /**\n * Transforms all characters to lowercase\n */\n Lowercase = 'lowercase',\n\n /**\n * Transforms all characters to uppercase\n */\n Uppercase = 'uppercase',\n\n /**\n * Transforms the first character of each word to uppercase\n */\n CapitalizeEachWord = 'capitalize',\n}\n","/**\r\n * Possible change sources. Here are the predefined sources.\r\n * It can also be other string if the change source can't fall into these sources.\r\n */\r\nexport const enum ChangeSource {\r\n /**\r\n * Content changed by auto link\r\n */\r\n AutoLink = 'AutoLink',\r\n\r\n /**\r\n * Content changed by create link\r\n */\r\n CreateLink = 'CreateLink',\r\n\r\n /**\r\n * Content changed by format\r\n */\r\n Format = 'Format',\r\n\r\n /**\r\n * Content changed by image resize\r\n */\r\n ImageResize = 'ImageResize',\r\n\r\n /**\r\n * Content changed by paste\r\n */\r\n Paste = 'Paste',\r\n\r\n /**\r\n * Content changed by setContent API\r\n */\r\n SetContent = 'SetContent',\r\n\r\n /**\r\n * Content changed by cut operation\r\n */\r\n Cut = 'Cut',\r\n\r\n /**\r\n * Content changed by drag & drop operation\r\n */\r\n Drop = 'Drop',\r\n\r\n /**\r\n * Insert a new entity into editor\r\n */\r\n InsertEntity = 'InsertEntity',\r\n\r\n /**\r\n * Editor is switched to dark mode, content color is changed\r\n */\r\n SwitchToDarkMode = 'SwitchToDarkMode',\r\n\r\n /**\r\n * Editor is switched to light mode, content color is changed\r\n */\r\n SwitchToLightMode = 'SwitchToLightMode',\r\n\r\n /**\r\n * List chain reorganized numbers of lists\r\n */\r\n ListChain = 'ListChain',\r\n\r\n /**\r\n * Keyboard event, used by Content Model.\r\n * Data of this event will be the key code number\r\n */\r\n Keyboard = 'Keyboard',\r\n}\r\n","/**\n * Represents the strategy to clear the format of the current editor selection\n */\nexport const enum ClearFormatMode {\n /**\n * Inline format. Remove text format.\n */\n Inline,\n\n /**\n * BLock format. Remove text and structure format of the block.\n */\n Block,\n\n /**\n * Detect Inline or Block format based on the current editor selector.\n */\n AutoDetect,\n}\n","/**\n * Represents the mode of color transformation\n */\nexport const enum ColorTransformDirection {\n /**\n * Transform from light to dark\n */\n LightToDark = 0,\n\n /**\n * Transform from dark to light\n */\n DarkToLight = 1,\n}\n","/**\r\n * The position. Mostly used for content insertion and traversing\r\n * On insertion, we will need to specify where we want the content to be placed (begin, end, selection or outside)\r\n * On content traversing, we will need to specify the start position of traversing\r\n */\r\nexport const enum ContentPosition {\r\n /**\r\n * Begin of the container\r\n */\r\n Begin,\r\n\r\n /**\r\n * End of the container\r\n */\r\n End,\r\n\r\n /**\r\n * End of the content div domain.\r\n */\r\n DomEnd,\r\n\r\n /**\r\n * Selection start\r\n */\r\n SelectionStart,\r\n\r\n /**\r\n * Outside of editor\r\n */\r\n Outside,\r\n\r\n /**\r\n * Manually defined range\r\n */\r\n Range,\r\n}\r\n","/**\n * Prefix of content types\n */\nexport const enum ContentTypePrefix {\n /**\n * Text type prefix\n */\n Text = 'text/',\n\n /**\n * Image type prefix\n */\n Image = 'image/',\n}\n\n/**\n * Known content types\n */\nexport const enum ContentType {\n /**\n * Plain text content type\n */\n PlainText = 'text/plain',\n\n /**\n * HTML content type\n */\n HTML = 'text/html',\n}\n","/**\n * @deprecated\n * Constants string for dataset names used by dark mode\n */\nexport const enum DarkModeDatasetNames {\n /**\n * Original style text color\n */\n OriginalStyleColor = 'ogsc',\n\n /**\n * Original style background color\n */\n OriginalStyleBackgroundColor = 'ogsb',\n\n /**\n * Original attribute text color\n */\n OriginalAttributeColor = 'ogac',\n\n /**\n * Original attribute background color\n */\n OriginalAttributeBackgroundColor = 'ogab',\n}\n","/**\n * Types of definitions, used by Definition type\n */\nexport const enum DefinitionType {\n /**\n * Boolean type definition, represents a boolean type value\n */\n Boolean,\n\n /**\n * Number type definition, represents a number type value\n */\n Number,\n\n /**\n * String type definition, represents a string type value\n */\n String,\n\n /**\n * Array type definition, represents an array with a given item type\n */\n Array,\n\n /**\n * Object type definition, represents an object with the given property types\n */\n Object,\n\n /**\n * Customize type definition, represents a customized type with a validator function\n */\n Customize,\n}\n","/**\n * Class names for Delimiter\n */\nexport const enum DelimiterClasses {\n /**\n * Class name to specify this delimiter is before an entity\n */\n DELIMITER_BEFORE = 'entityDelimiterBefore',\n\n /**\n * Class name to specify this delimiter is after an entity\n */\n DELIMITER_AFTER = 'entityDelimiterAfter',\n}\n","/**\r\n * enum for setting block direction, used by setDirection API\r\n */\r\nexport const enum Direction {\r\n /**\r\n * Left to right\r\n */\r\n LeftToRight,\r\n\r\n /**\r\n * Right to left\r\n */\r\n RightToLeft,\r\n}\r\n","/**\n * Command strings for Document.execCommand() API\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand\n */\nexport const enum DocumentCommand {\n /**\n * Changes the browser auto-link behavior (Internet Explorer only)\n */\n AutoUrlDetect = 'AutoUrlDetect',\n\n /**\n * Changes the document background color. In styleWithCss mode, it affects the background color of the containing block instead.\n * This requires a <color> value string to be passed in as a value argument. Note that Internet Explorer uses this to set the\n * text background color.\n */\n BackColor = 'backColor',\n\n /**\n * Toggles bold on/off for the selection or at the insertion point. Internet Explorer uses the <strong> tag instead of <b>.\n */\n Bold = 'bold',\n\n /**\n * Clears all authentication credentials from the cache.\n */\n ClearAuthenticationCache = 'ClearAuthenticationCache',\n\n /**\n * Makes the content document either read-only or editable. This requires a boolean true/false as the value argument.\n * (Not supported by Internet Explorer.)\n */\n ContentReadOnly = 'contentReadOnly',\n\n /**\n * Copies the current selection to the clipboard. Conditions of having this behavior enabled vary from one browser to another,\n * and have evolved over time. Check the compatibility table to determine if you can use it in your case.\n */\n Copy = 'copy',\n\n /**\n * Creates an hyperlink from the selection, but only if there is a selection. Requires a URI string as a value argument for the\n * hyperlink's href. The URI must contain at least a single character, which may be whitespace.\n * (Internet Explorer will create a link with a null value.)\n */\n CreateLink = 'createLink',\n\n /**\n * Removes the current selection and copies it to the clipboard. When this behavior is enabled varies between browsers,\n * and its conditions have evolved over time. Check the compatibility table for usage details.\n */\n Cut = 'cut',\n\n /**\n * Adds a <small> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n DecreaseFontSize = 'decreaseFontSize',\n\n /**\n * Changes the paragraph separator used when new paragraphs are created in editable text regions. See Differences in markup\n * generation for more details.\n */\n DefaultParagraphSeparator = 'defaultParagraphSeparator',\n\n /**\n * Deletes the current selection.\n */\n Delete = 'delete',\n\n /**\n * Enables or disables the table row/column insertion and deletion controls. (Not supported by Internet Explorer.)\n */\n EnableInlineTableEditing = 'enableInlineTableEditing',\n\n /**\n * Enables or disables the resize handles on images and other resizable objects. (Not supported by Internet Explorer.)\n */\n EnableObjectResizing = 'enableObjectResizing',\n\n /**\n * Changes the font name for the selection or at the insertion point. This requires a font name string (like \"Arial\")\n * as a value argument.\n */\n FontName = 'fontName',\n\n /**\n * Changes the font size for the selection or at the insertion point. This requires an integer from 1-7 as a value argument.\n */\n FontSize = 'fontSize',\n\n /**\n * Changes a font color for the selection or at the insertion point. This requires a hexadecimal color value string\n * as a value argument.\n */\n ForeColor = 'foreColor',\n\n /**\n * Adds an HTML block-level element around the line containing the current selection, replacing the block element containing\n * the line if one exists (in Firefox, <blockquote> is the exception — it will wrap any containing block element).\n * Requires a tag-name string as a value argument. Virtually all block-level elements can be used.\n * (Internet Explorer supports only heading tags H1–H6, ADDRESS, and PRE, which must be wrapped in angle brackets, such as \"<H1>\".)\n */\n FormatBlock = 'formatBlock',\n\n /**\n * Deletes the character ahead of the cursor's position, identical to hitting the Delete key on a Windows keyboard.\n */\n ForwardDelete = 'forwardDelete',\n\n /**\n * Adds a heading element around a selection or insertion point line. Requires the tag-name strings a value argument (i.e. \"H1\", \"H6\").\n * (Not supported by Internet Explorer and Safari.)\n */\n Heading = 'heading',\n\n /**\n * Changes the background color for the selection or at the insertion point. Requires a color value string as a value argument.\n * useCSS must be true for this to function. (Not supported by Internet Explorer.)\n */\n HiliteColor = 'hiliteColor',\n\n /**\n * Adds a <big> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n IncreaseFontSize = 'increaseFontSize',\n\n /**\n * Indents the line containing the selection or insertion point. In Firefox, if the selection spans multiple lines at different\n * levels of indentation, only the least indented lines in the selection will be indented.\n */\n Indent = 'indent',\n\n /**\n * Controls whether the Enter key inserts a <br> element, or splits the current block element into two.\n * (Not supported by Internet Explorer.)\n */\n InsertBrOnReturn = 'insertBrOnReturn',\n\n /**\n * Inserts a <hr> element at the insertion point, or replaces the selection with it.\n */\n InsertHorizontalRule = 'insertHorizontalRule',\n\n /**\n * Inserts an HTML string at the insertion point (deletes selection). Requires a valid HTML string as a value argument.\n * (Not supported by Internet Explorer.)\n */\n InsertHTML = 'insertHTML',\n\n /**\n * Inserts an image at the insertion point (deletes selection). Requires a URL string for the image's src as a value argument.\n * The requirements for this string are the same as createLink.\n */\n InsertImage = 'insertImage',\n\n /**\n * Creates a numbered ordered list for the selection or at the insertion point.\n */\n InsertOrderedList = 'insertOrderedList',\n\n /**\n * Creates a bulleted unordered list for the selection or at the insertion point.\n */\n InsertUnorderedList = 'insertUnorderedList',\n\n /**\n * Inserts a paragraph around the selection or the current line.\n * (Internet Explorer inserts a paragraph at the insertion point and deletes the selection.)\n */\n InsertParagraph = 'insertParagraph',\n\n /**\n * Inserts the given plain text at the insertion point (deletes selection).\n */\n InsertText = 'insertText',\n\n /**\n * Toggles italics on/off for the selection or at the insertion point.\n * (Internet Explorer uses the <em> element instead of <i>.)\n */\n Italic = 'italic',\n\n /**\n * Centers the selection or insertion point.\n */\n JustifyCenter = 'justifyCenter',\n\n /**\n * Justifies the selection or insertion point.\n */\n JustifyFull = 'justifyFull',\n\n /**\n * Justifies the selection or insertion point to the left.\n */\n JustifyLeft = 'justifyLeft',\n\n /**\n * Right-justifies the selection or the insertion point.\n */\n JustifyRight = 'justifyRight',\n\n /**\n * Outdents the line containing the selection or insertion point.\n */\n Outdent = 'outdent',\n\n /**\n * Pastes the clipboard contents at the insertion point (replaces current selection). Disabled for web content. See [1].\n */\n Paste = 'paste',\n\n /**\n * Redoes the previous undo command.\n */\n Redo = 'redo',\n\n /**\n * Removes all formatting from the current selection.\n */\n RemoveFormat = 'removeFormat',\n\n /**\n * Selects all of the content of the editable region.\n */\n SelectAll = 'selectAll',\n\n /**\n * Toggles strikethrough on/off for the selection or at the insertion point.\n */\n StrikeThrough = 'strikeThrough',\n\n /**\n * Toggles subscript on/off for the selection or at the insertion point.\n */\n Subscript = 'subscript',\n\n /**\n * Toggles superscript on/off for the selection or at the insertion point.\n */\n Superscript = 'superscript',\n\n /**\n * Toggles underline on/off for the selection or at the insertion point.\n */\n Underline = 'underline',\n\n /**\n * Undoes the last executed command.\n */\n Undo = 'undo',\n\n /**\n * Removes the anchor element from a selected hyperlink.\n */\n Unlink = 'unlink',\n\n /**\n * Replaces the useCSS command. true modifies/generates style attributes in markup, false generates presentational elements.\n */\n StyleWithCSS = 'styleWithCSS',\n}\n","/**\n * The is essentially an enum representing result from browser compareDocumentPosition API\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n */\nexport const enum DocumentPosition {\n /**\n * Same node\n */\n Same = 0,\n\n /**\n * Node is disconnected from document\n */\n Disconnected = 1,\n\n /**\n * Node is preceding the comparing node\n */\n Preceding = 2,\n\n /**\n * Node is following the comparing node\n */\n Following = 4,\n\n /**\n * Node contains the comparing node\n */\n Contains = 8,\n\n /**\n * Node is contained by the comparing node\n */\n ContainedBy = 16,\n}\n","/**\n * CSS Class names for Entity\n */\nexport const enum EntityClasses {\n /**\n * Class name to specify this is an entity\n */\n ENTITY_INFO_NAME = '_Entity',\n\n /**\n * Class name to specify the type of an entity\n */\n ENTITY_TYPE_PREFIX = '_EType_',\n\n /**\n * Class name to specify the ID of an entity\n */\n ENTITY_ID_PREFIX = '_EId_',\n\n /**\n * Class name to specify if the entity is readonly\n */\n ENTITY_READONLY_PREFIX = '_EReadonly_',\n}\n","/**\n * Define possible operations to an entity\n */\nexport const enum EntityOperation {\n /**\n * Notify plugins that there is a new plugin was added into editor.\n * Plugin can handle this event to entity hydration.\n * This event will be only fired once for each entity DOM node.\n * After undo, or copy/paste, since new DOM nodes were added, this event will be fired\n * for those entities represented by newly added nodes.\n */\n NewEntity,\n\n /**\n * Notify plugins that user is clicking target to an entity\n */\n Click,\n\n /**\n * Notify plugins that user is triggering context menu to an entity\n */\n ContextMenu,\n\n /**\n * Notify plugins that user is escaping from an entity by pressing ESC key\n */\n Escape,\n\n /**\n * Notify plugins that user is removing an entity from its start position using DELETE key\n */\n RemoveFromStart,\n\n /**\n * Notify plugins that user is remove an entity from its end position using BACKSPACE key\n */\n RemoveFromEnd,\n\n /**\n * Notify plugins that an entity is being overwritten.\n * This can be caused by key in, cut, paste, delete, backspace ... on a selection\n * which contains some entities.\n */\n Overwrite,\n\n /**\n * Notify plugins that an entity is being partially overwritten.\n * This happens when user selected part of the entity then do key press, or cut, paste, delete, backspace, ...\n */\n PartialOverwrite,\n\n /**\n * Notify plugins that editor is generating HTML content for save.\n * Plugin should use this event to remove any temporary content, and only leave DOM nodes that\n * should be saved as HTML string.\n * This event will provide a cloned DOM tree for each entity, do NOT compare the DOM nodes with cached nodes\n * because it will always return false.\n */\n ReplaceTemporaryContent,\n\n /**\n * @deprecated\n */\n AddShadowRoot,\n\n /**\n * @deprecated\n */\n RemoveShadowRoot,\n\n /**\n * Notify plugins that a new entity state need to be updated to an entity.\n * This is normally happened when user undo/redo the content with an entity snapshot added by a plugin that handles entity\n */\n UpdateEntityState,\n}\n","/**\n * Experimental feature flags\n */\nexport const enum ExperimentalFeatures {\n // #region Graduated and deprecated features.\n // These features will be removed in next major release\n /**\n * @deprecated This feature is always enabled\n */\n NewIndentation = 'NewIndentation',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewBullet = 'NewBullet',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewNumbering = 'NewNumbering',\n\n /**\n * @deprecated This feature is always enabled\n */\n ListChain = 'ListChain',\n\n /**\n * @deprecated This feature is always enabled\n */\n MergePastedLine = 'MergePastedLine',\n\n /**\n * @deprecated This feature is always enabled\n */\n SingleDirectionResize = 'SingleDirectionResize',\n\n /**\n * @deprecated This feature is always enabled\n */\n PasteWithLinkPreview = 'PasteWithLinkPreview',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageRotate = 'ImageRotate',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageCrop = 'ImageCrop',\n\n /**\n * @deprecated This feature is always enabled\n * Check if the element has a style attribute, if not, apply the default format\n */\n AlwaysApplyDefaultFormat = 'AlwaysApplyDefaultFormat',\n\n /**\n * @deprecated This feature can be enabled/disabled using Paste Plugin contructor param\n * Paste the Html instead of the Img when the Html Body only have one IMG Child node\n */\n ConvertSingleImageBody = 'ConvertSingleImageBody',\n\n /**\n * @deprecated This feature is always enabled\n * Align table elements to left, center and right using setAlignment API\n */\n TableAlignment = 'TableAlignment',\n\n /**\n * @deprecated this feature is always enabled\n * Provide a circular resize handles that adaptive the number od handles to the size of the image\n */\n AdaptiveHandlesResizer = 'AdaptiveHandlesResizer',\n\n /**\n * @deprecated this feature is always disabled\n * Automatically transform -- into hyphen, if typed between two words.\n */\n AutoHyphen = 'AutoHyphen',\n\n /**\n * @deprecated this feature is always disabled\n * Use pending format strategy to do style based format, e.g. Font size, Color.\n * With this feature enabled, we don't need to insert temp ZeroWidthSpace character to hold pending format\n * when selection is collapsed. Instead, we will hold the pending format in memory and only apply it when type something\n */\n PendingStyleBasedFormat = 'PendingStyleBasedFormat',\n\n /**\n * @deprecated this feature is always disabled\n * Normalize list to make sure it can be displayed correctly in other client\n * e.g. We will move list items with \"display: block\" into previous list item and change tag to be DIV\n */\n NormalizeList = 'NormalizeList',\n\n /**\n * @deprecated this feature is always enabled\n * When a html image is selected, the selected image data will be stored by editor core.\n */\n ImageSelection = 'ImageSelection',\n\n /**\n * @deprecated this feature is always enabled\n * Use variable-based dark mode solution rather than dataset-based solution.\n * When enable this feature, need to pass in a DarkModelHandler object to each call of setColor and applyFormat\n * if you need them work for dark mode\n */\n VariableBasedDarkColor = 'VariableBasedDarkColor',\n\n /**\n * @deprecated this feature is always enabled\n * Align list elements elements to left, center and right using setAlignment API\n */\n ListItemAlignment = 'ListItemAlignment',\n\n /**\n * @deprecated\n */\n DefaultFormatInSpan = 'DefaultFormatInSpan',\n\n /**\n * @deprecated\n */\n DefaultFormatOnContainer = 'DefaultFormatOnContainer',\n\n /**\n * @deprecated This feature is always enabled\n * Reuse existing DOM structure if possible when convert Content Model back to DOM tree\n */\n ReusableContentModel = 'ReusableContentModel',\n\n /**\n * @deprecated This feature is always enabled\n * Handle keyboard editing event with Content Model\n */\n EditWithContentModel = 'EditWithContentModel',\n\n //#endregion\n\n /**\n * Provide additional Tab Key Features. Requires Text Features Content Editable Features\n */\n TabKeyTextFeatures = 'TabKeyTextFeatures',\n\n /**\n * Trigger formatting by a especial characters. Ex: (A), 1. i).\n */\n AutoFormatList = 'AutoFormatList',\n\n /**\n * With this feature enabled, when writing back a list item we will re-use all\n * ancestor list elements, even if they don't match the types currently in the\n * listTypes array for that item. The only list that we will ensure is correct\n * is the one closest to the item.\n */\n ReuseAllAncestorListElements = 'ReuseAllAncestorListElements',\n\n /**\n * Delete table with Backspace key with the whole was selected with table selector\n */\n DeleteTableWithBackspace = 'DeleteTableWithBackspace',\n\n /**\n * Add entities around a Read Only Inline entity to prevent cursor to be hidden when cursor is next of it.\n */\n InlineEntityReadOnlyDelimiters = 'InlineEntityReadOnlyDelimiters',\n\n /**\n * Paste with Content model\n */\n ContentModelPaste = 'ContentModelPaste',\n\n /**\n * Disable list chain functionality\n */\n DisableListChain = 'DisableListChain',\n}\n","/**\r\n * The enum used for increase or decrease font size\r\n * Used by setFontSize API\r\n */\r\nexport const enum FontSizeChange {\r\n /**\r\n * Increase font size\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease font size\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Represents a mode number to indicate what kind of content to retrieve when call Editor.getContent()\n */\nexport const enum GetContentMode {\n /**\n * The clean content without any temporary content only for editor.\n * This is the default value. Call to Editor.getContent() with trigger an ExtractContentWithDom event\n * so that plugins can remove their temporary content, and will return the HTML content\n * which is ready for save to storage.\n */\n CleanHTML = 0,\n\n /**\n * Retrieve the raw HTML string in current editor. Temporary content will be included.\n */\n RawHTMLOnly = 1,\n\n /**\n * Retrieve the raw HTML string in current editor with a selection marker. This can be used for\n * save current editor state and call to SetContent with this result can fully restore editor state\n * including current selection\n */\n RawHTMLWithSelection = 2,\n\n /**\n * Get plain text content only, all format will be ignored\n */\n PlainText,\n\n /**\n * A fast way to get plain text content, the line-end positions may not be exactly same with HTML content,\n * but the text content should be the same. This is used for quickly retrieve text content and check\n * text only\n */\n PlainTextFast,\n}\n","/**\n * Operation flags for ImageEdit plugin\n */\nexport const enum ImageEditOperation {\n /**\n * No operation\n */\n None = 0,\n\n /**\n * Resize image from corner ( horizontal and vertical resize)\n */\n CornerResize = 1,\n\n /**\n * Resize image from side ( either horizontal or vertical resize)\n */\n SideResize = 2,\n\n /**\n * Image resize\n */\n Resize = CornerResize | SideResize,\n\n /**\n * Image rotate\n */\n Rotate = 4,\n\n /**\n * Image resize and rotate\n */\n ResizeAndRotate = Resize | Rotate,\n\n /**\n * Image crop\n */\n Crop = 8,\n\n /**\n * All operations\n */\n All = ResizeAndRotate | Crop,\n}\n","/**\r\n * The enum used for increase or decrease indentation of a block\r\n * Used by setIndentation API\r\n */\r\nexport const enum Indentation {\r\n /**\r\n * Increase indentation\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease indentation\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Key numbers common used keys\n */\nexport const enum Keys {\n NULL = 0,\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL_LEFT = 17,\n ALT = 18,\n ESCAPE = 27,\n SPACE = 32,\n PAGEUP = 33,\n END = 35,\n HOME = 36,\n LEFT = 37,\n UP = 38,\n RIGHT = 39,\n DOWN = 40,\n PRINT_SCREEN = 44,\n DELETE = 46,\n /**\n * @deprecated Just for backward compatibility\n */\n EIGHT_ASTIRISK = 56,\n EIGHT_ASTERISK = 56,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n META_LEFT = 91,\n COMMA = 188,\n DASH_UNDERSCORE = 189,\n PERIOD = 190,\n /**\n * @deprecated Just for backward compatibility\n */\n FORWARDSLASH = 191,\n FORWARD_SLASH = 191,\n GRAVE_TILDE = 192,\n\n /**\n * Keys below are non-standard, and should be used in ContentEditFeatures only\n */\n CONTENTCHANGED = 0x101,\n RANGE = 0x102,\n\n Ctrl = 0x1000,\n Meta = 0x2000,\n Shift = 0x4000,\n}\n","/**\n * Index of known CreateElementData used by createElement function\n */\nexport const enum KnownCreateElementDataIndex {\n /**\n * Set a none value to help createElement function ignore falsy value\n */\n None = 0,\n\n /**\n * An empty line without format\n */\n EmptyLine = 1,\n\n /**\n * Wrapper for blockquote\n */\n BlockquoteWrapper = 2,\n\n /**\n * Temp DIV for copy/paste\n */\n CopyPasteTempDiv = 3,\n\n /**\n * ListItem with block style\n */\n BlockListItem = 4,\n\n /**\n * Wrapper element for context menu\n */\n ContextMenuWrapper = 5,\n\n /**\n * Wrapper element for image edit\n */\n ImageEditWrapper = 6,\n\n /**\n * @deprecated\n */\n TableHorizontalResizer = 7,\n\n /**\n * @deprecated\n */\n TableVerticalResizer = 8,\n\n /**\n * @deprecated\n */\n TableResizerLTR = 9,\n\n /**\n * @deprecated\n */\n TableResizerRTL = 10,\n\n /**\n * @deprecated\n */\n TableSelector = 11,\n\n /**\n * @deprecated\n */\n EmptyLineFormatInSpan = 12,\n}\n","/**\n * Represent the types of sources to handle in the Paste Plugin\n */\nexport const enum KnownPasteSourceType {\n WordDesktop,\n ExcelDesktop,\n ExcelOnline,\n PowerPointDesktop,\n GoogleSheets,\n WacComponents,\n Default,\n SingleImage,\n}\n","/**\n * Type of list (numbering or bullet)\n */\nexport const enum ListType {\n /**\n * None list type\n * It means this is not a list\n */\n None = 0,\n\n /**\n * Ordered List type (numbering list)\n * Represented by \"OL\" tag\n */\n Ordered = 1,\n\n /**\n * Unordered List type (bullet list)\n * Represented by \"UL\" tag\n */\n Unordered = 2,\n}\n","/**\n * The is essentially an enum represents the type of the node\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n * Values not listed here are deprecated.\n */\nexport const enum NodeType {\n /**\n * An Element node such as <p> or <div>.\n */\n Element = 1,\n\n /**\n * An Attribute node such as name=\"value\".\n */\n Attribute = 2,\n\n /**\n * The actual Text of Element or Attr.\n */\n Text = 3,\n\n /**\n * A ProcessingInstruction of an XML document such as <?xml-stylesheet ... ?> declaration.\n */\n ProcessingInstruction = 7,\n\n /**\n * A Comment node.\n */\n Comment = 8,\n\n /**\n * A Document node.\n */\n Document = 9,\n\n /**\n * A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents.\n */\n DocumentType = 10,\n\n /**\n * A DocumentFragment node.\n */\n DocumentFragment = 11,\n}\n","/**\n * Enum used to control the different types of numbering list\n */\nexport const enum NumberingListType {\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Numbering triggered by 1.\n */\n Decimal = 1,\n\n /**\n * Numbering triggered by 1-\n */\n DecimalDash = 2,\n\n /**\n * Numbering triggered by 1)\n */\n DecimalParenthesis = 3,\n\n /**\n * Numbering triggered by (1)\n */\n DecimalDoubleParenthesis = 4,\n\n /**\n * Numbering triggered by a.\n */\n LowerAlpha = 5,\n\n /**\n * Numbering triggered by a)\n */\n LowerAlphaParenthesis = 6,\n\n /**\n * Numbering triggered by (a)\n */\n LowerAlphaDoubleParenthesis = 7,\n\n /**\n * Numbering triggered by a-\n */\n LowerAlphaDash = 8,\n\n /**\n * Numbering triggered by A.\n */\n UpperAlpha = 9,\n\n /**\n * Numbering triggered by A)\n */\n UpperAlphaParenthesis = 10,\n\n /**\n * Numbering triggered by (A)\n */\n UpperAlphaDoubleParenthesis = 11,\n\n /**\n * Numbering triggered by A-\n */\n UpperAlphaDash = 12,\n\n /**\n * Numbering triggered by i.\n */\n LowerRoman = 13,\n\n /**\n * Numbering triggered by i)\n */\n LowerRomanParenthesis = 14,\n\n /**\n * Numbering triggered by (i)\n */\n LowerRomanDoubleParenthesis = 15,\n\n /**\n * Numbering triggered by i-\n */\n LowerRomanDash = 16,\n\n /**\n * Numbering triggered by I.\n */\n UpperRoman = 17,\n\n /**\n * Numbering triggered by I)\n */\n UpperRomanParenthesis = 18,\n\n /**\n * Numbering triggered by (I)\n */\n UpperRomanDoubleParenthesis = 19,\n\n /**\n * Numbering triggered by I-\n */\n UpperRomanDash = 20,\n\n /**\n * Maximum value of the enum\n */\n Max = 20,\n}\n","/**\n * Enum for paste options\n */\nexport const enum PasteType {\n /**\n * Default paste behavior\n */\n Normal,\n\n /**\n * Paste only the plain text\n */\n AsPlainText,\n\n /**\n * Apply the current style to pasted content\n */\n MergeFormat,\n\n /**\n * If there is a image uri in the clipboard, paste the content as image element\n */\n AsImage,\n}\n","/**\n * Editor plugin event type\n */\nexport const enum PluginEventType {\n /**\n * HTML KeyDown event\n */\n KeyDown = 0,\n\n /**\n * HTML KeyPress event\n */\n KeyPress = 1,\n\n /**\n * HTML KeyUp event\n */\n KeyUp = 2,\n\n /**\n * HTML Input / TextInput event\n */\n Input = 3,\n\n /**\n * HTML CompositionEnd event\n */\n CompositionEnd = 4,\n\n /**\n * HTML MouseDown event\n */\n MouseDown = 5,\n\n /**\n * HTML MouseUp event\n */\n MouseUp = 6,\n\n /**\n * Content changed event\n */\n ContentChanged = 7,\n\n /**\n * Extract Content with a DOM tree event\n * This event is triggered when getContent() is called with triggerExtractContentEvent = true\n * Plugin can handle this event to remove the UI only markups to return clean HTML\n * by operating on a cloned DOM tree\n */\n ExtractContentWithDom = 8,\n\n /**\n * Before Paste event, provide a chance to change copied content\n */\n BeforeCutCopy = 9,\n\n /**\n * Before Paste event, provide a chance to change paste content\n */\n BeforePaste = 10,\n\n /**\n * Let plugin know editor is ready now\n */\n EditorReady = 11,\n\n /**\n * Let plugin know editor is about to dispose\n */\n BeforeDispose = 12,\n\n /**\n * Pending format state (bold, italic, underline, ... with collapsed selection) is changed\n */\n PendingFormatStateChanged = 13,\n\n /**\n * Scroll event triggered by scroll container\n */\n Scroll = 14,\n\n /**\n * Operating on an entity. See enum EntityOperation for more details about each operation\n */\n EntityOperation = 15,\n\n /**\n * HTML ContextMenu event\n */\n ContextMenu = 16,\n\n /**\n * Editor has entered shadow edit mode\n */\n EnteredShadowEdit = 17,\n\n /**\n * Editor is about to leave shadow edit mode\n */\n LeavingShadowEdit = 18,\n\n /**\n * Content of image is being changed from client side\n */\n EditImage = 19,\n\n /**\n * Content of editor is about to be cleared by SetContent API, handle this event to cache anything you need\n * before it is gone\n */\n BeforeSetContent = 20,\n\n /**\n * Zoom scale value is changed, triggered by Editor.setZoomScale() when set a different scale number\n */\n ZoomChanged = 21,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor changed the selection.\n */\n SelectionChanged = 22,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor content is about to be changed by keyboard event.\n * This is only used by Content Model editing\n */\n BeforeKeyboardEditing = 23,\n}\n","/**\r\n * Represent the type of a position\r\n */\r\nexport const enum PositionType {\r\n /**\r\n * At the beginning of a node\r\n */\r\n Begin = 0,\r\n\r\n /**\r\n * At the end of a node\r\n */\r\n End = -1,\r\n\r\n /**\r\n * Before a node\r\n */\r\n Before = -2,\r\n\r\n /**\r\n * After a node\r\n */\r\n After = -3,\r\n}\r\n","/**\r\n * Query scope for queryElements() API\r\n */\r\nexport const enum QueryScope {\r\n /**\r\n * Query from the whole body of root node. This is default value.\r\n */\r\n Body,\r\n\r\n /**\r\n * Query elements on a given selection (intersect)\r\n * The result element can contain the selection, contain part of selection, or inside selection\r\n */\r\n OnSelection,\r\n\r\n /**\r\n * Query elements inside a given selection only\r\n */\r\n InSelection,\r\n}\r\n","/**\n * Type of all possible regions. Currently we only support region of Table\n */\nexport const enum RegionType {\n /**\n * Region split by Table\n */\n Table,\n}\n","/**\n * Types of Selection Ranges that the SelectionRangeEx can return\n */\nexport const enum SelectionRangeTypes {\n /**\n * Normal selection range provided by browser.\n */\n Normal,\n /**\n * Selection made inside of a single table.\n */\n TableSelection,\n /**\n * Selection made in a image.\n */\n ImageSelection,\n}\n","/**\n * Table format border\n */\nexport const enum TableBorderFormat {\n /**\n * All border of the table are displayed\n * __ __ __\n * |__|__|__|\n * |__|__|__|\n * |__|__|__|\n */\n DEFAULT,\n\n /**\n * Middle vertical border are not displayed\n * __ __ __\n * |__ __ __|\n * |__ __ __|\n * |__ __ __|\n */\n LIST_WITH_SIDE_BORDERS,\n\n /**\n * All borders except header rows borders are displayed\n * __ __ __\n * __|__|__\n * __|__|__\n */\n NO_HEADER_BORDERS,\n\n /**\n * The left and right border of the table are not displayed\n * __ __ __\n * __|__|__\n * __|__|__\n * __|__|__\n */\n NO_SIDE_BORDERS,\n\n /**\n * Only the borders that divides the header row, first column and externals are displayed\n * __ __ __\n * |__ __ __|\n * | | |\n * |__|__ __|\n */\n FIRST_COLUMN_HEADER_EXTERNAL,\n\n /**\n * The header row has no vertical border, except for the first one\n * The first column has no horizontal border, except for the first one\n * __ __ __\n * |__ __ __\n * | |__|__|\n * | |__|__|\n */\n ESPECIAL_TYPE_1,\n\n /**\n * The header row has no vertical border, except for the first one\n * The only horizontal border of the table is the top and bottom of header row\n * __ __ __\n * |__ __ __\n * | | |\n * | | |\n */\n ESPECIAL_TYPE_2,\n\n /**\n * The only borders are the bottom of header row and the right border of first column\n * __ __ __\n * |\n * |\n */\n ESPECIAL_TYPE_3,\n\n /**\n * No border\n */\n CLEAR,\n}\n","/**\r\n * Operations used by editTable() API\r\n */\r\nexport const enum TableOperation {\r\n /**\r\n * Insert a row above current row\r\n */\r\n InsertAbove,\r\n\r\n /**\r\n * Insert a row below current row\r\n */\r\n InsertBelow,\r\n\r\n /**\r\n * Insert a column on the left of current column\r\n */\r\n InsertLeft,\r\n\r\n /**\r\n * Insert a column on the right of current column\r\n */\r\n InsertRight,\r\n\r\n /**\r\n * Delete the whole table\r\n */\r\n DeleteTable,\r\n\r\n /**\r\n * Delete current column\r\n */\r\n DeleteColumn,\r\n\r\n /**\r\n * Delete current row\r\n */\r\n DeleteRow,\r\n\r\n /**\r\n * Merge current row with the row above\r\n */\r\n MergeAbove,\r\n\r\n /**\r\n * Merge current row with the row below\r\n */\r\n MergeBelow,\r\n\r\n /**\r\n * Merge current column with the column on the left\r\n */\r\n MergeLeft,\r\n\r\n /**\r\n * Merge current column with the column on the right\r\n */\r\n MergeRight,\r\n\r\n /**\r\n * Merge all selected cells\r\n */\r\n MergeCells,\r\n\r\n /**\r\n * Split current table cell horizontally\r\n */\r\n SplitHorizontally,\r\n\r\n /**\r\n * Split current table cell vertically\r\n */\r\n SplitVertically,\r\n\r\n /**\r\n * Align current table at the center\r\n */\r\n AlignCenter,\r\n\r\n /**\r\n * Align current table at the left\r\n */\r\n AlignLeft,\r\n\r\n /**\r\n * Align current table at the right\r\n */\r\n AlignRight,\r\n\r\n /**\r\n * Align current content table cell at the left\r\n */\r\n AlignCellLeft,\r\n\r\n /**\r\n * Align current content table cell at the center\r\n */\r\n AlignCellCenter,\r\n\r\n /**\r\n * Align current content table cell at the right\r\n */\r\n AlignCellRight,\r\n\r\n /**\r\n * Align current content table cell at the top\r\n */\r\n AlignCellTop,\r\n\r\n /**\r\n * Align current table cell at the middle\r\n */\r\n AlignCellMiddle,\r\n\r\n /**\r\n * Align current table cell at the bottom\r\n */\r\n AlignCellBottom,\r\n}\r\n","export { DocumentCommand } from './DocumentCommand';\nexport { DocumentPosition } from './DocumentPosition';\nexport { Keys } from './Keys';\nexport { NodeType } from './NodeType';\nexport { ContentTypePrefix, ContentType } from './ContentType';\nexport { Alignment } from './Alignment';\nexport { ChangeSource } from './ChangeSource';\nexport { ColorTransformDirection } from './ColorTransformDirection';\nexport { ContentPosition } from './ContentPosition';\nexport { DarkModeDatasetNames } from './DarkModeDatasetNames';\nexport { DelimiterClasses } from './DelimiterClasses';\nexport { Direction } from './Direction';\nexport { EntityClasses } from './EntityClasses';\nexport { EntityOperation } from './EntityOperation';\nexport { ExperimentalFeatures } from './ExperimentalFeatures';\nexport { FontSizeChange } from './FontSizeChange';\nexport { GetContentMode } from './GetContentMode';\nexport { Indentation } from './Indentation';\nexport { Capitalization } from './Capitalization';\nexport { ListType } from './ListType';\nexport { PositionType } from './PositionType';\nexport { QueryScope } from './QueryScope';\nexport { RegionType } from './RegionType';\nexport { TableOperation } from './TableOperation';\nexport { ImageEditOperation } from './ImageEditOperation';\nexport { ClearFormatMode } from './ClearFormatMode';\nexport { KnownCreateElementDataIndex } from './KnownCreateElementDataIndex';\nexport { KnownPasteSourceType } from './KnownPasteSourceType';\nexport { TableBorderFormat } from './TableBorderFormat';\nexport { PluginEventType } from './PluginEventType';\nexport { SelectionRangeTypes } from './SelectionRangeTypes';\nexport { NumberingListType } from './NumberingListType';\nexport { BulletListType } from './BulletListType';\nexport { DefinitionType } from './DefinitionType';\nexport { PasteType } from './PasteType';\n","export * from './browser/index';\r\nexport * from './corePluginState/index';\r\nexport * from './enum/index';\r\nexport * from './event/index';\r\nexport * from './interface/index';\r\nexport * from './type/index';\r\n","import { Editor } from 'roosterjs-editor-core';\r\nimport { EditorOptions, EditorPlugin, IEditor } from 'roosterjs-editor-types';\r\nimport { getDarkColor } from 'roosterjs-color-utils';\r\nimport { ContentEdit, HyperLink, Paste } from 'roosterjs-editor-plugins';\r\n\r\n/**\r\n * Create an editor instance with most common options\r\n * @param contentDiv The html div element needed for creating the editor\r\n * @param additionalPlugins The additional user defined plugins. Currently the default plugins that are already included are\r\n * ContentEdit, HyperLink and Paste, user don't need to add those.\r\n * @param initialContent The initial content to show in editor. It can't be removed by undo, user need to manually remove it if needed.\r\n * @returns The editor instance\r\n */\r\nexport default function createEditor(\r\n contentDiv: HTMLDivElement,\r\n additionalPlugins?: EditorPlugin[],\r\n initialContent?: string\r\n): IEditor {\r\n let plugins: EditorPlugin[] = [new HyperLink(), new Paste(), new ContentEdit()];\r\n\r\n if (additionalPlugins) {\r\n plugins = plugins.concat(additionalPlugins);\r\n }\r\n\r\n let options: EditorOptions = {\r\n plugins: plugins,\r\n initialContent: initialContent,\r\n getDarkColor: getDarkColor,\r\n defaultFormat: {\r\n fontFamily: 'Calibri,Arial,Helvetica,sans-serif',\r\n fontSize: '11pt',\r\n textColor: '#000000',\r\n },\r\n };\r\n return new Editor(contentDiv, options);\r\n}\r\n","export { default as createEditor } from './createEditor';\r\nexport * from 'roosterjs-editor-types';\r\nexport * from 'roosterjs-editor-types-compatible';\r\nexport * from 'roosterjs-editor-dom';\r\nexport * from 'roosterjs-editor-core';\r\nexport * from 'roosterjs-editor-api';\r\nexport * from 'roosterjs-editor-plugins';\r\nexport * from 'roosterjs-color-utils';\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8608);\n"],"names":["cssKeywords","reverseKeywords","key","hasOwnProperty","convert","module","exports","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","Error","length","Object","defineProperty","value","h","l","r","g","b","min","Math","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","val","i","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","args","arguments","round","ansi","color","mult","rem","string","toString","toUpperCase","substring","match","colorString","split","map","char","join","integer","parseInt","hue","chroma","mg","pure","w","conversions","route","keys","forEach","fromModel","routes","toModel","fn","wrappedFn","Array","prototype","slice","call","result","len","conversion","wrapRounded","raw","wrapRaw","link","from","to","wrapConversion","graph","path","parent","cur","unshift","models","buildGraph","queue","current","pop","adjacents","adjacent","node","deriveBFS","colorNames","swizzle","reverseNames","name","cs","get","clamp","num","hexDouble","str","toLowerCase","hexAlpha","i2","parseFloat","alpha","isNaN","rgba","percent","hsla","hwba","_slice","skippedModels","hashedModelKeys","sort","limiters","Color","obj","this","valpha","newArr","zeroArray","splice","indexOf","hashedKeys","JSON","stringify","push","limit","freeze","getset","channel","modifier","isArray","maxfn","arr","toJSON","places","self","concat","percentString","array","object","unitArray","unitObject","Number","toFixed","roundTo","roundToPlace","red","green","blue","saturationl","lightness","saturationv","white","wblack","cyan","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","undefined","w1","w2","newAlpha","Function","getOwnPropertyDescriptor","constructor","isArrayish","results","arg","wrap","default","baseLValue","computedColor","colorLab","newLValue","editor","capitalization","language","getCapitalizedText","originalText","toLocaleLowerCase","toLocaleUpperCase","wordArray","charAt","regex","RegExp","replace","element","getFirstLeafNode","getNextLeafSibling","nodeType","textContent","FONT_SIZES","getNewFontSize","pt","changeBase","fontSizes","ceil","last","change","getComputedStyle","style","fontSize","lineHeight","STYLES_TO_REMOVE","TAGS_TO_UNWRAP","ATTRIBUTES_TO_PRESERVE","TAGS_TO_STOP_UNWRAP","clearNodeFormat","areAllChildrenBlock","toArray","childNodes","every","returnBlockElement","isBlockElement","tag","getTagOfNode","isVoidHtmlElement","unwrap","isTableCell","safeInstanceOf","isTable","attributes","attr","removeNonBorderStyles","removeNotTableDefaultStyles","removeAttribute","clearAttribute","updateStyles","callbackfn","styles","getStyles","getObjectKeys","setStyles","clearBlockFormat","region","blocks","getSelectedBlockElementsInRegion","nodes","collapseNodesInRegion","contains","rootNode","nonborderStyles","wrapper","parentNode","isNodeInRegion","balancedNodes","splitBalancedNodeRange","setDefaultFormat","defaultFormat","getDefaultFormat","isDefaultFormatEmpty","queryElements","removeStyles","cNode","fontFamily","textColor","shouldApplyInlineStyle","textColors","backgroundColor","backgroundColors","bold","fontWeight","setDefaultFontWeight","italic","underline","removeProperty","getAttribute","clearFormat","formatType","focus","addUndoSnapshot","clearInlineFormat","isMultiBlock","transverser","getSelectionTraverser","currentBlockElement","getNextBlockElement","isMultiBlockSelection","inlineElement","currentInlineElement","isPartial","PartialInlineElement","NodeInlineElement","currentNode","nextSibling","previousSibling","isNodeWholeBlock","getContainerNode","clearAutoDetectFormat","URI_REGEX","MAILTO_REGEX","FTP_REGEX","getAnchorNodeAtCursor","updateAnchorDisplayText","anchor","displayText","altText","target","url","sanitizer","HtmlSanitizer","document","createElement","href","sanitize","checkXss","trim","linkData","matchLink","normalizedUrl","prefix","search","applyLinkPrefix","originalUrl","selection","getSelectionRangeEx","type","range","ranges","collapsed","getDocument","insertNode","execCommand","traverser","currentInline","getNextInlineElement","deletionInlineList","deleteNode","image","title","updateAnchorTarget","getElementBasedFormatState","event","listTag","getElementAtCursor","getSelectionRange","multiline","startingBlock","getBlockElementAtNode","startContainer","endingBlock","endContainer","equals","headingTag","table","tableFormat","getTableFormatInfo","hasTableHeader","rows","cells","cell","headingLevel","isBullet","isNumbering","isMultilineSelection","headerLevel","canUnlink","canAddImageAltText","isBlockQuote","isCodeInline","isCodeBlock","isInTable","tableHasHeader","canMergeTableCell","getPendableFormatState","getStyleBasedFormatState","getUndoState","isDarkMode","zoomScale","getZoomScale","coordinates","firstCell","lastCell","contentNode","isBlock","isReadonly","position","insertToRegionRoot","focusAfterEntity","display","commitEntity","currentRange","contentPosition","normalize","existingEntity","getEntitySelector","Position","select","regions","getSelectedRegions","chains","VListChain","createListChains","updateCursor","insertOnNewLine","replaceSelection","entity","getEntityFromElement","newLine","insertBefore","applyFormat","getDarkColorHandler","br","querySelector","pos","isFeatureEnabled","addDelimiters","nextElementSibling","triggerContentChangedEvent","insertImageWithSrc","src","attribute","setAttribute","imageFileOrSrc","readFile","dataUrl","isDisposed","start","end","textOrRange","exactMatch","searcher","getContentSearcherOfCursor","getRangeFromText","backupRange","endOffset","startOffset","angle","transform","alignment","isATable","elementAtCursor","isWholeTableSelected","VTable","marginLeft","marginRight","alignTable","findClosestElementAncestor","startNode","getStartNode","vList","createVListFromRegion","setAlignment","alignList","align","command","elements","textAlign","alignText","isInnerNode","setColor","direction","fontName","setHeadingLevel","wrapped","heading","div","moveChildNodes","replaceNode","blockElement","cssStyleCallbacks","collapseToSingleElement","toggleHeader","outdent","quote","isFirstItem","items","getNode","getListItemIndex","getStart","shouldHandleWithBlockquotes","indentation","handler","quotesHandled","blockGroups","isTabKeyTextFeaturesEnabled","block","rootList","setIndentation","writeBack","group","separator","startNumber","DEFAULT_STYLER","borderLeft","borderColor","paddingLeft","styler","listStyle","apiNameOverride","CODE_TAG","SELECTOR","PRE_TAG","code","pre","experimentCommitListChains","meta","getTableCellMetadata","saveTableCellMetadata","bgColorOverride","isUndefined","operation","td","vtable","saveTableSelection","edit","transformToDarkColor","row","col","currentRow","currentCol","newRow","newCol","calculateCellToSelect","newTd","getCell","format","getTableCellWidth","columns","cellSpacing","cellPadding","tr","appendChild","j","width","verticalAlign","runAsync","callback","apiName","safeCallback","isContentEditable","areAllCollapsed","firstChild","triggerPluginEvent","formatState","formatCallback","firstNode","lastNode","contentTraverser","nextInlineElement","applyStyle","styleName","parentNodes","setListItemStyle","applyStyleToListItems","beforeRunCallback","wrapFunction","NodeTag","some","isEmptyBlockUnderTR","getEndNode","forEachCallback","commitListChains","getEnd","chain","commit","formatter","formatName","PendableFormatCommandMap","filter","needToSwitchSelection","formatApiName","isNodeRTL","el","marginInlineStart","marginInlineEnd","parentElement","listType","includeSiblingLists","orderedStyle","unorderedStyle","canAppendAtCursor","equalTo","createVListAtBlock","changeListType","setListStyleType","addUndoSnapshotInternal","core","canUndoByBackspace","entityStates","lifecycle","shadowEditFragment","rangeEx","api","metadata","root","tableId","id","imageId","getSelectionPath","createContentMetadata","contentDiv","undo","snapshotsService","addSnapshot","html","innerHTML","knownColors","darkColorHandler","getKnownColorsCopy","hasNewContent","changeSource","additionalData","data","undoState","isNested","getEntityState","eventType","source","triggerEvent","autoCompletePosition","attachDomEvent","eventMap","disposers","handlerObj","pluginEventType","beforeDispatch","eventName","onEvent","rawEvent","addEventListener","removeEventListener","coreApiMap","createPasteFragment","ensureTypeInContainer","getContent","hasFocus","restoreUndoSnapshot","selectRange","setContent","switchShadowEdit","transformColor","selectTable","selectImage","clipboardData","pasteAsText","applyCurrentStyle","pasteAsImage","pasteType","options","createDefaultHtmlSanitizerOptions","fragment","ownerDocument","createDocumentFragment","sanitizingOption","htmlBefore","htmlAfter","htmlAttributes","createBeforePasteEvent","getPasteType","rawHtml","text","imageDataUri","doc","DOMParser","parseFromString","trustedHTMLHandler","retrieveMetadataFromClipboard","handleImagePaste","body","pendableFormat","styleBasedFormat","isBold","isItalic","isUnderline","getCurrentFormat","applyTextStyle","handleTextPaste","sanitizePasteContent","createFragmentFromClipboardData","keyboardEvent","formatNode","isNodeEmpty","brEl","append","shouldSetNodeStyles","innerText","wasNodeJustCreatedByKeyboardEvent","createRange","domEvent","selectionRange","mode","clonedNode","content","triggerExtractContentEvent","includeSelectionMarker","getTextContent","clonedRoot","cloneNode","originalRange","shadowEditSelectionPath","getHtmlWithSelectionPath","forceGetStateFromDOM","cachedPendableFormatState","pendingFormatState","pendableFormatState","cachedPosition","pendableFormatPosition","currentPosition","isSamePosition","pendableKeys","PendableStyleCheckers","CssFalsyCheckers","queryCommandStateFromDOM","textDecoration","fontStyle","isSubscript","isSuperscript","isStrikeThrough","tryGetFromCache","defaultView","getSelection","rangeCount","getRangeAt","createNormalSelectionEx","checkAllCollapsed","shadowEditTableSelectionPath","shadowEditImageSelectionPath","shadowRange","tableSelectionRange","imageSelectionRange","override","pendableFormatSpan","styleTextColor","styleBackColor","getComputedStyles","getPropertyValue","parseColorValue","backColor","lightModeColor","darkModeColor","marginTop","marginBottom","activeElement","option","isBegin","getFirstLastBlockElement","refNode","insertedNode","rangeToRestore","cloneRange","getInitialRange","deleteContents","getRegionsFromRange","isAtEnd","splitTextNode","offset","splitParentNode","adjustInsertPositionRegionRoot","tempPos","adjustInsertPositionNewLine","adjustInsertPosition","nodeForCursor","lastChild","step","snapshot","move","isRestoring","registerColor","entityState","state","arg1","arg2","arg3","arg4","isSelectionRangeEx","isNodePosition","selectionRangeEx","STYLE_ID","unselect","removeImportantStyleRule","borderCSS","buildBorderCSS","setGlobalCssStyles","imageSelectionBorderColor","removeGlobalCssStyle","skipSameRange","addRangeToSelection","restorePendingFormatState","input","coordinate","isValidCoordinate","areValidCoordinates","contentDivSelector","selectors","vTable","isAllTableSelected","tableSelector","tableRange","Range","selectNode","handleAllTableSelected","tr1","td1","tr2","td2","firstSelected","lastSelected","tableChildren","cont","indexes","rowIndex","tdCount","midElement","ind","middleElSelector","cellIndex","removeImportant","selector","generateCssFromCell","elementsSelector","rowRange","setStartBefore","setEndAfter","handleTableSelected","cssRules","currentRules","shift","buildCss","css","item","isMergedCell","cellToSelect","cellTag","index","contentChanged","newContent","entities","entityMap","restoreContentWithEntityPlaceholder","metadataFromContent","extractContentMetadata","selectContentMetadata","isOn","shadowEditEntities","wasInShadowEdit","getShadowEditSelectionPath","selectionType","shadowEditSelection","moveContentWithEntityPlaceholders","selectionPath","tableElement","iterateElements","transformer","includeSelf","isHTMLElement","child","htmlElement","Node","ELEMENT_NODE","forceTransform","fromDarkMode","onExternalContentTransform","toDarkMode","transformElementColor","allowedEventsInShadowEdit","pluginEvent","broadcast","plugins","plugin","onPluginEvent","willHandleEventExclusively","handledExclusively","applyId","idPrefix","getElement","getElementById","querySelectorAll","disposer","onPaste","extractClipboardEvent","paste","allowedCustomPasteType","getTempDiv","removeTempDiv","cleanUpAndRestoreSelection","getName","initialize","addDomEventHandler","e","copy","onCutCopy","cut","dispose","getState","isCut","setHtmlWithMetadata","getTrustedHTMLHandler","newRange","createTableRange","deleteTableContent","deleteImage","deleteSelectedContent","forceInLightMode","getCustomData","tempDiv","removeChild","isCopy","restoreRange","Browser","isAndroid","collapse","clonedVTable","removeCellsOutsideSelection","selectedVTable","forEachSelectedCell","wholeTableSelected","isWholeColumnSelected","onDragStart","dragEvent","preventDefault","onDrop","onFocus","onKeyDownDocument","which","defaultPrevented","cacheSelection","onMouseDownDocument","onScroll","scrollContainer","onKeyboardEvent","isCharacterValue","stopPropagation","onInputEvent","onContextMenuEvent","allItems","elementBeforeCursor","getInlineElementBefore","eventTargetNode","button","contextMenuProviders","provider","getContextMenuItems","arrayPush","isInIME","stopPrintableKeyboardEventPropagation","allowKeyboardEventPropagation","isContextMenuProvider","eventHandlers","keypress","getEventHandler","keydown","keyup","mousedown","contextmenu","compositionstart","compositionend","dragstart","drop","isIE","isSafari","isIEOrEdge","beforedeactivate","blur","features","hasFunctionKey","ctrlOrMeta","isKeyDownEvent","isCtrlOrMetaPressed","altKey","feature","allowFunctionKeys","shouldHandleEvent","handleEvent","handledByEditFeature","ENTITY_ID_REGEX","ALLOWED_CSS_CLASSES","REMOVE_ENTITY_OPERATIONS","handleCutEvent","checkRemoveEntityForRange","handleMouseUpEvent","handleKeyDownEvent","handleBeforePasteEvent","handleContentChangedEvent","handleExtractContentWithDomEvent","handleContextMenuEvent","handleEntityOperationEvent","inlineEntityOnPluginEvent","entityElement","isClicking","workaroundSelectionIssueForIE","additionalAllowedCssClasses","shouldNormalizeDelimiters","isDeleted","getExistingEntities","ensureUniqueId","handleNewEntity","normalizeDelimitersInEditor","editableEntityElements","isFullyCovered","newItem","shouldPersist","canPersist","exec","baseId","substr","newId","workaroundButton","onblur","mouseTarget","mouseSelection","keyDownSelection","contextMenuTarget","actualSelection","CONTENT_EDITABLE_ATTRIBUTE_NAME","COMMANDS","isFirefox","DARK_MODE_DEFAULT_FORMAT","initializer","initialContent","contentEditable","userSelect","webkitUserSelect","adjustColor","doNotAdjustEditorColor","getDarkColor","customData","inDarkMode","experimentalFeatures","adjustBrowserBehavior","mouseUpEventListerAdded","mouseDownX","mouseDownY","onMouseUp","removeMouseUpEventListener","pageX","pageY","normalizeTables","normalizeTableFromEvent","shiftKey","li","prevElement","changeElementTag","tables","isChanged","isDOMChanged","tbody","colgroups","thead","colgroup","clear","getCurrentPosition","createPendingFormatSpan","span","currentStyle","createTextNode","setProperty","isRangeEmpty","styledAncestor","focusedPosition","getFocusedPosition","isMobileOrTablet","setTimeout","snapshots","service","lastKeyPress","undoMetadataSnapshotService","undoSnapshotService","canMove","isAutoCompleteSnapshot","clearRedo","canUndoAutoComplete","createSnapshots","canMoveCurrentSnapshot","moveCurrentSnapshot","addSnapshotV2","clearProceedingSnapshotsV2","ctrlKey","canUndo","canRedo","onKeyDown","onKeyPress","clearRedoForInput","onContentChanged","onBeforeKeyboardEditing","evt","metaKey","corePluginOverride","typeInContainer","_placeholder","typeAfterLink","mouseUp","copyPaste","imageSelection","normalizeTable","corePlugins","DELIMITER_SELECTOR","ZERO_WIDTH_SPACE","INLINE_ENTITY_SELECTOR","preventTypeInDelimiter","delimiter","textNode","nodeValue","className","setPosition","getDelimiterFromElement","sibling","classList","previousElementSibling","removeNode","removeDelimiterAttr","addDelimitersIfNeeded","isEntityElement","checkEntity","entitySibling","remove","cn","isAfter","getBlock","blockToCheck","delimiters","matchesSelector","handleCollapsedEnter","startElement","endElement","startUpdate","getPosition","endUpdate","aEditor","handleSelectionNotCollapsed","container","_","ColorAttributeEnum","VARIABLE_REGEX","ColorAttributeName","values","colorKey","parsedColor","reset","isInDarkMode","startsWith","findLightColorFromDarkColor","darkColor","rgbSearch","parseColor","find","rgbCurrent","names","createEditorCore","Editor","EditorBase","coreCreator","getCore","existingNode","toNode","transformColorForDarkMode","replaceChild","scopeOrCallback","scope","selectionEx","collapseNodes","canSplitParent","isEmpty","insertContent","allNodes","applyCurrentFormat","snapshotBeforePaste","sel","focusNode","focusOffset","startFrom","cacheGetEventData","isPositionAtBeginning","isPositionAtBeginningOf","nameOrMap","eventsToMap","redo","getScrollContainer","getter","getBodyTraverser","ContentTraverser","createBodyTraverser","createSelectionTraverser","getBlockTraverser","createBlockTraverser","PositionContentSearcher","win","window","handle","requestAnimationFrame","cancelAnimationFrame","setEditorDomAttribute","getEditorDomAttribute","getRelativeDistanceToEditor","addScroll","editorRect","getBoundingClientRect","elementRect","left","top","scrollLeft","scrollTop","addContentEditFeature","removeContentEditFeature","featureSet","setDarkModeState","nextDarkMode","startShadowEdit","stopShadowEdit","isInShadowEdit","getSizeTransformer","sizeTransformer","setZoomScale","scale","oldValue","oldZoomScale","newZoomScale","getVisibleViewport","pluginState","getPluginState","getIntersectedRect","coreApiOverride","originalApi","size","STRUCTURE_NODE_TAGS","endNode","getBlockContext","nodeContext","StartEndBlockElement","blockContext","newNode","findHeadTailLeafNode","containerBlockNode","isTail","headNode","tailNode","isFirst","rangeBeforePaste","dataTransfer","then","CLIPBOARD_HTML_HEADER_REGEX","OTHER_TEXT_TYPE","EDGE_LINK_PREVIEW","ContentHandlers","isEdge","headerValues","workaroundForEdge","customValues","linkPreview","parse","pasteNativeEvent","types","files","Promise","all","kind","resolve","file","getAsFile","textType","getAllowedCustomType","getAsString","getData","nextStep","img","maxWidth","transformTabCharacters","initialOffset","tIndex","line","lineBefore","lineAfter","tabCount","fill","lines","includes","processStyles","reduce","attrs","htmlFirstLevelChildTags","TEXT_NODE","nodeTag","COMMENT_NODE","head","additionalGlobalStyleNodes","startIndex","endIndex","lastIndexOf","START_FRAGMENT","END_FRAGMENT","convertGlobalCssToInlineCss","getStartBlockElement","getStartInlineElement","getFirstInlineElement","isBlockInScope","trimInlineElement","scoper","skipTags","currentBlock","getPreviousNextBlockElement","getPreviousBlockElement","isNext","leaf","getLeafSibling","newBlock","getPreviousNextInlineElement","getPreviousInlineElement","newInline","getInlineElementBeforeAfter","getStartPosition","getParentBlock","previousInlineElement","getNextPreviousInlineElement","WHITESPACE_REGEX","word","inlineBefore","inlineAfter","traversingComplete","inlineElements","nearestNonTextInlineElement","getWordBefore","traverse","getInlineElementAfter","getSubStringBefore","startPosition","endPosition","textIndex","forEachTextInlineElement","textInline","nodeContent","nodeIndex","charCodeAt","getNearestNonTextInlineElement","previousInline","isTextualInlineElement","matches","blockNode","getLastInlineElement","getFirstLastInlineElementFromBlockElement","startInline","startBlock","inScope","selStartBlock","selEndBlock","inline","getEndPosition","startPartial","endPartial","addDelimiterAfter","insertDelimiter","addDelimiterBefore","isDelimiter","delimiterClass","children","insertPosition","insertAdjacentElement","entityWrapper","delimiterAfter","delimiterBefore","NOT_EDITABLE_SELECTOR","adjustSteps","nodeToInsert","safeRemove","normalizedPosition","nextNode","splitter","rootNodeToInsert","isFragment","rootNodes","hasBrNextToRoot","listItem","listNode","tdNode","shouldInsertListAsText","inlineElementBefore","inlineElementAfter","adjustInsertPositionForNotEditableNode","nonEditableElement","lastNonEditableElement","posBefore","rangeToTraverse","nextBlockElement","tempRange","ensureBeforeAndAfter","isStart","nodeBefore","nodeAfter","emptyNode","nodesToDelete","nodesPairToMerge","regionRange","commonAncestorContainer","beforeEnd","afterEnd","beforeStart","afterStart","CONTENT_EDITABLE","removeUntil","nodeToStop","nodeToRemove","tryGetWrapperFromEntityPlaceholder","getPlaceholder","placeholder","entitySelector","next","nodeToAppend","insertClonedNode","isEntity","eventDataCache","isCtrlOrMetaPressedImpl","isMac","isCtrlKey","isAltKey","isMetaKey","elementCallbacks","cloneObject","styleCallbacks","getStyleCallbacks","attributeCallbacks","tagReplacements","getTagReplacement","additionalTagReplacements","allowedAttributes","getAllowedAttributes","additionalAllowedAttributes","allowedCssClassesRegex","getAllowedCssClassesRegex","defaultStyleValues","getDefaultStyleValues","additionalDefaultStyleValues","additionalPredefinedCssForElement","preserveHtmlComments","unknownTagReplacement","convertInlineCss","additionalStyleNodes","sanitizeHtml","currentStyles","currentElementOrStyle","convertCssOnly","processNode","styleNodes","styleSheets","reverse","sheet","styleSheet","styleRule","cssText","CSSRule","STYLE_RULE","selectorText","context","isElement","isText","isComment","shouldKeep","replacement","test","whiteSpace","thisStyle","processAttributes","preprocessCss","processCss","predefinedStyles","isInheritable","keep","isCssVariable","processCssVariable","newValue","processCssClass","originalValue","calculatedValue","originalClasses","calculatedClasses","newCallback","cloneObjectImpl","assign","existingObj","HTML_TAG_REPLACEMENT","abbr","address","area","article","aside","bdi","bdo","blockquote","canvas","caption","center","cite","datalist","dd","del","details","dfn","dialog","dir","dl","dt","em","fieldset","figcaption","figure","font","footer","h1","h2","h3","h4","h5","h6","header","hgroup","ins","kbd","label","legend","main","mark","menu","menuitem","meter","nav","ol","optgroup","output","picture","progress","rp","rt","ruby","samp","section","small","strike","strong","sub","summary","sup","textarea","tfoot","th","time","tt","u","ul","var","wbr","xmp","form","applet","audio","base","basefont","embed","frame","frameset","iframe","noscript","param","script","slot","template","track","video","ALLOWED_HTML_ATTRIBUTES","DEFAULT_STYLE_VALUES","overflow","padding","border","float","removeValue","removeWidthForLiAndDiv","tagName","additionalReplacements","replacements","additionalAttributes","additionalCssClasses","patterns","additionalDefaultStyles","callbacks","INHERITABLE_PROPERTIES","PREDEFINED_CSS_FOR_ELEMENT","B","EM","I","U","P","PRE","S","STRIKE","SUB","SUP","getBrowserInfo","getPreviousLeafSibling","getLastLeafNode","KnownCreateElementData","moveCurrentSnapsnot","createEntityPlaceholder","createNumberDefinition","createBooleanDefinition","createStringDefinition","createArrayDefinition","createObjectDefinition","getMetadata","setMetadata","removeMetadata","parentBlock","containerNode","getDecoratedInline","thisStart","otherEnd","previousNode","STYLET_AGS","callStylerWithInnerNode","formatNodes","fromPosition","toPosition","parentTag","newNodeValue","startingNode","nodeChain","resolveInlineElement","mainArray","itemsArray","apply","collection","moveChildNodesToLi","moveLiToList","populateItems","getLastItemNumber","getListType","getLevel","isDummy","shouldReuseAllAncestorListElements","disableListChain","lastList","listStack","newListStart","getNewListStart","topList","applyListStyle","setNewListStart","softOutdent","preventItemRemoval","shouldAddMargin","findListItems","setIsDummy","indent","addNegativeMargins","flexDirection","alignSelf","targetType","needChangeType","styleMetadata","orderedStyleType","getValidValue","unorderedStyleType","createListStyleMetadata","ListStyleDefinitionMetadata","appendItem","mergeVList","list","listIndex","listStartPos","listEndPos","listTypes","newListTypes","isListElement","currentItem","furtherNodes","CHAIN_DATASET_NAME","AFTER_CURSOR_DATASET_NAME","lastChainIndex","lastNumber","lastNumberBeforeCursor","nameGenerator","canAppendToTail","createListChainName","afterCurrentNode","applyChainName","lists","getLists","vlist","dataset","isAfterCurrentNode","orderListStyles","unorderedListStyles","NEGATIVE_MARGIN","stylesToInherit","attrsToInherit","dummy","isOrphanItem","canMerge","mergeItems","wrapIfNotBlockNode","margin","expectedLength","isFirstLevel","originalRoot","nextLevel","listStackEndIndex","stackLength","newList","createListElement","getDeepChildIndex","listStyleType","isLi","stylesToApply","attrValue","deepIndex","newRoot","checkFirst","checkLast","ALPHABET","decimal","isLowerCase","RomanValues","M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","romanValue","timesRomanCharAppear","repeat","ListSelector","tryIncludeSiblingNode","fullSelectionStart","fullSelectionEnd","nodeForItem","createVListFromItemNode","getListTypeFromNode","ancestor","marker","bulletListStyle","isDisc","isCssStyle","elementsStyles","styleValue","getInlineChildElementsStyle","styleValues","Set","MarkerTypes","numberingListStyle","markerSeparator","markerSecondSeparator","markerType","lowerCase","markerNumber","Roman","Alpha","Decimal","isOptional","minValue","maxValue","allowNull","itemDef","minLength","maxLength","propertyDef","MetadataDataSetName","definition","defaultValue","def","metadataKey","currentMetadata","validate","n1","n2","abs","validator","GOOGLE_SHEET_NODE_NAME","PROG_ID_NAME","EXCEL_DESKTOP_ATTRIBUTE_NAME","WAC_IDENTIFY_SELECTOR","props","getSourceFunctions","Map","shouldConvertSingleImage","func","nodesOrBlockElements","regionTypeData","outerSelector","innerSelector","getRegionCreator","fullRange","firstNodeOfRegion","lastNodeOfRegion","firstNodeValid","lastNodeValid","bothValid","areNodesValid","iterateNodes","creator","boundary","started","innerNode","ended","outerNode","boundaries","previousOuterNode","newRegions","boundaryTree","allBoundaries","inSelectionOuterNode","thisInnerNode","thisOuterNode","buildBoundaryTree","regionBase","createBlockIfEmpty","deprecated","isRegion","regionStart","regionEnd","compareDocumentPosition","targetNode","blockRoot","commonContainer","nodeToMerge","nodeOrPosition","offsetOrPosType","isFromEndOfRange","getIndexOfNode","getEndOffset","newOffset","needAddRange","removeAllRanges","addRange","getFocusablePosition","getPositionFromPath","setStart","setEnd","rect","rects","getClientRects","getPositionPath","isPreviousText","areAllPreviousNodesEmpty","NumberArrayDefinition","CoordinatesDefinition","IsDarkModeDefinition","NormalContentMetadataDefinition","TableContentMetadataDefinition","ImageContentMetadataDefinition","potentialMetadataComment","getLength","compare","defaultCompare","currentSnapshot","currentIndex","isSameSnapshot","totalSize","removeCount","maxSize","autoCompleteIndex","compareSnapshots","s1","s2","newIndex","clearProceedingSnapshots","removedSize","pair","valueIndex","styleId","styleTag","styleProperties","modifiedStyles","cssRule","insertRule","trimmedName","trimmedValue","DEFAULT_FORMAT","topBorderColor","bottomBorderColor","verticalBorderColor","hasHeaderRow","hasFirstColumn","hasBandedRows","hasBandedColumns","bgColorEven","bgColorOdd","headerRowColor","tableBorderFormat","keepCellShade","normalizeSize","formatInfo","trs","tableSelection","getTableFromTd","sourceCol","targetCol","colSpan","rowSpan","hasTd","spanLeft","spanAbove","height","skipApplyFormat","recalculateSpans","recalculateCellHeight","saveTableInfo","isEmptyCell","deleteCellShadeDataset","currentCell","firstRow","lastRow","firstColumn","lastColumn","cloneCell","countSpanAbove","colIndex","nextCell","newCell","getTd","forEachCellOfCurrentColumn","countSpanLeft","forEachCellOfColumn","forEachCellOfRow","removedRows","removedColumns","rowStep","aboveCell","belowCell","mergeCells","colStep","leftCell","rightCell","nextCellBelow","nextCellRight","splitRow","setAlignmentToSelectedCells","alignmentType","isVertical","vAlignOverride","horizontally","checkSpans","mergeCellContents","childElementCount","cellTd","nextCellTd","getCellsWithBorder","borderPos","getLeftCells","cellRect","found","right","forEachCellOfCurrentRow","getCurrentTd","normalizeEmptyTableCells","normalizeTableCellSize","setHTMLElementSizeInPx","newWidth","newHeight","boxSizing","TRANSPARENT","hasCellShade","getBorderStyle","borderCollapse","isFirstRow","isLastRow","isFirstColumn","isLastColumn","borderTop","borderRight","borderBottom","setBorderColors","borderLeftColor","borderRightColor","borderTopColor","borderBottomColor","formatBorders","setBordersType","shouldColorWholeTable","hasValign","setCellFormat","setFirstColumnFormat","setHeaderRowFormat","styledCell","rowsLength","rowCells","firstX","firstY","lastX","lastY","currentTd","newTable","currentTable","cursorRow","cursorCol","BooleanDefinition","TableCellFormatMetadata","NullStringDefinition","TableFormatMetadata","isAndroidRegex","userAgent","appVersion","vendor","userAgentOrVendor","isIE11OrGreater","isChrome","isWebKit","isWin","navigator","elementStyle","newTag","origianlTag","newElement","ref","contained","treatSameNodeAsContain","internalContains","contenteditable","elementData","namespace","createElementNS","datasetName","attrName","childElement","closest","styleNames","px","tempNode","additionalRects","bottom","getLeafNode","getChild","ignoreSpace","getSibling","curNode","shouldContinue","queryCommandState","BLOCK_ELEMENT_TAGS","BLOCK_DISPLAY_STYLES","node1","node2","VISIBLE_ELEMENT_TAGS","VISIBLE_CHILD_ELEMENT_SELECTOR","trimContent","shouldCountBrAsVisible","visibleSelector","HTML_VOID_ELEMENTS","httpExcludeRegEx","labelRegEx","domainPortWithUrlRegEx","domainPortRegEx","linkMatchRules","http","except","normalizeUrl","https","mailto","notes","unc","ftp","news","telnet","gopher","wais","schema","rule","scheme","msMatchesSelector","keepExistingChildren","clientRect","HEX3_REGEX","HEX6_REGEX","RGB_REGEX","RGBA_REGEX","checkPosition","targets","nodeContainedByRangeOnly","targetPositions","FileReader","onload","onerror","readAsDataURL","getTargetWindow","typeName","targetWindow","mainWindow","mainWindowType","ColorTones","WHITE","isBackgroundColor","shouldAdaptTheFontColor","modeIndependentColor","cssName","colorValue","lightModeBackgroundColor","colorValues","calculateLightness","isADarkOrBrightColor","adaptFontColorToBackgroundColor","CRLF","CRLF_SPACE","shouldSkipNode","splitBefore","newParent","temp","returnFirstPart","firstPart","secondPart","MOUSE_EVENT_INFO_DESKTOP","MOUSEDOWN","MOUSEMOVE","MOUSEUP","getPageXY","MOUSE_EVENT_INFO_MOBILE","targetTouches","touch","trigger","onSubmit","forceMobile","initX","initY","initValue","onMouseDown","addDocumentEvents","dndMouse","onMouseMove","deltaX","deltaY","onDragging","removeDocumentEvents","onDragEnd","specialCharacters","lastKeyTyped","keyTyped","textBeforeCursor","dashes","isPrecededByADash","isPrecededByASpace","settingsOverride","additionalFeatures","allFeatures","hasSettingForKey","defaultDisabled","disposeFeatures","TRAILING_PUNCTUATION_REGEX","AutoLink","cacheGetLinkData","replaceWithNode","clearEventDataCache","UnlinkWhenBackspaceAfterLink","contentSearcher","LinkInlineElement","removeLink","trailingPunctuation","AutoLinkFeatures","autoLink","unlinkWhenBackspaceAfterLink","RemoveCodeWhenEnterOnEmptyLine","childOfCode","cacheGetCodeChild","splitCode","RemoveCodeWhenBackspaceOnEmptyFirstLine","codeElement","currentContainer","codeChild","codeParent","preParent","CodeFeatures","removeCodeWhenEnterOnEmptyLine","removeCodeWhenBackspaceOnEmptyFirstLine","NoCycleCursorMove","rtl","CursorFeatures","noCycleCursorMove","ClickOnEntityFeature","cacheGetReadonlyEntityElement","EscapeFromEntityFeature","EnterBeforeReadonlyEntityFeature","cacheGetNeighborEntityElement","newContainer","BackspaceAfterEntityFeature","DeleteBeforeEntityFeature","collapseOnly","regionRoot","entityNode","triggerOperation","MoveBetweenDelimitersFeature","getIsDelimiterAtCursor","checkBefore","cacheGetCheckBefore","cacheDelimiter","getRelatedElements","delimiterPair","positionType","extend","RemoveEntityBetweenDelimitersFeature","cacheEntityBetweenDelimiter","focusedElement","class","pairClass","isAtEndOrBeginning","getNextSibling","elAtCursor","shouldHandle","removeDelimiters","getElementFromInline","EntityFeatures","clickOnEntity","escapeFromEntity","enterBeforeReadonlyEntity","backspaceAfterEntity","deleteBeforeEntity","moveBetweenDelimitersFeature","removeEntityBetweenDelimiters","PREVIOUS_BLOCK_CACHE_KEY","NEXT_BLOCK_CACHE_KEY","shouldHandleIndentationEvent","indenting","keyCode","cacheGetListElement","handleIndentationEvent","currentElement","isRTL","IndentWhenTab","OutdentWhenShiftTab","IndentWhenAltShiftRight","OutdentWhenAltShiftLeft","MergeInNewLine","blockFormat","toggleListAndPreventDefault","OutdentWhenBackOn1stEmptyLine","getElementsByTagName","MaintainListChainWhenDelete","getCacheNextSibling","getListChains","OutdentWhenEnterOnEmptyLine","isAListPattern","AutoBullet","textRange","prepareAutoBullet","toggleBullet","toggleNumbering","AutoBulletList","shouldTriggerList","AutoNumberingList","number","isFirstItemOfAList","getPreviousListItem","getPreviousListType","letter","MaintainListChain","listInfo","listElement","toggleListType","getListStyle","isATheBeginning","listChains","previousListType","shouldTriggerNewListStyle","MergeListOnBackspaceAfterList","cursorBlock","isList","nearestInline","tempBlock","nextElement","previousList","targetBlock","rangeBeforeWriteBack","fvList","VList","ListFeatures","autoBullet","indentWhenTab","outdentWhenShiftTab","outdentWhenBackspaceOnEmptyFirstLine","outdentWhenEnterOnEmptyLine","mergeInNewLineWhenBackspaceOnFirstChar","maintainListChain","maintainListChainWhenDelete","autoNumberingList","autoBulletList","mergeListOnBackspaceAfterList","outdentWhenAltShiftLeft","indentWhenAltShiftRight","generateBasicMarkdownFeature","triggerCharacter","elementTag","useShiftKey","cacheGetRangeForMarkdownOperation","lastTypedTriggerPosition","hasLastTypedTrigger","textContentRange","extractContents","elementToWrap","nonPrintedSpaceTextNode","handleMarkdownEvent","textInlineElement","inlineTextContent","parentBlockText","contentIndex","MarkdownBold","MarkdownItalic","MarkdownStrikethrough","MarkdownInlineCode","MarkdownFeatures","markdownBold","markdownItalic","markdownStrikethru","markdownInlineCode","QUOTE_TAG","STRUCTURED_TAGS","UnquoteWhenBackOnEmpty1stLine","childOfQuote","cacheGetQuoteChild","splitQuote","UnquoteWhenEnterOnEmptyLine","shouldClearFormat","isStyledBlockquote","QuoteFeatures","unquoteWhenBackspaceOnEmptyFirstLine","unquoteWhenEnterOnEmptyLine","createCommand","winKey","macKey","action","disabled","commands","toggleBold","toggleItalic","toggleUnderline","changeFontSize","DefaultShortcut","cacheGetCommand","getModifierState","cmd","ShortcutFeatures","defaultShortcut","CHILD_PARENT_TAG_MAP","TD","TH","LI","CHILD_SELECTOR","InsertLineBeforeStructuredNodeFeature","cacheGetStructuredElement","StructuredNodeFeatures","insertLineBeforeStructuredNodeFeature","TabInTable","cacheGetTableCell","cacheIsWholeTableSelected","cacheVTable","tableCells","editTable","newPos","IndentTableOnTab","UpDownInTable","isUp","hasShiftKey","targetTd","setBaseAndExtent","DeleteTableWithBackspace","firstTd","TableFeatures","tabInTable","upDownInTable","indentTableOnTab","deleteTableWithBackspace","IndentWhenTabText","listOrTable","insertTab","shouldSetIndentation","OutdentWhenTabText","firstBlock","lastBlock","blockStart","blockEnd","rangeBefore","rangeAfter","numberOfChars","MAX_SAFE_INTEGER","span2","TextFeatures","indentWhenTabText","outdentWhenTabText","autoHyphen","bulletListType","NumberingTypes","Character","characters","lowerRomanTypes","upperRomanTypes","numberingTriggers","lowerRomanNumbers","upperRomanNumbers","numberingListTypes","DecimalsTypes","LowerAlphaTypes","UpperAlphaTypes","LowerRomanTypes","UpperRomanTypes","previousListChain","previousListStyle","isDoubleParenthesis","indexNumber","isValidNumbering","numbering","separatorCharacter","numberingType","identifyNumberingType","identifyNumberingListType","isMenuShowing","onDismiss","dismiss","allowDefaultMenu","initContainer","render","makeReplacement","sourceString","replacementHTML","matchSourceCaseSensitive","shouldReplace","defaultReplacements","longestReplacementLength","replacementEndCharacters","updateReplacements","newReplacements","endChars","lastChar","add","getReplacementEndCharacters","has","stringToSearch","getMatchingReplacement","matchingText","matchingRange","parsingSpan","originalStringToSearch","lowerCaseStringToSearch","sourceMatch","replacementMatch","expectedChangeSource","cacheListChains","selectedRegions","getTooltipCallback","onLinkClick","originalHref","trackedLink","onMouse","tryGetHref","onBlur","updateLinkHrefIfShouldUpdate","resetLinkTracking","mouseover","mouseout","isContentEditValue","shouldCheckUpdateLink","doesLinkDisplayMatchHref","srcElement","open","updateLinkHref","escapedDisplay","DIRECTIONS","DirectionRad","DirectionOrder","DefaultOptions","minWidth","minHeight","preserveRatio","minRotateDeg","imageSelector","rotateIconHTML","disableCrop","disableRotate","disableSideResize","onSelectState","ImageEditHTMLMap","getCornerResizeHTML","getSideResizeHTML","getRotateHTML","getCropHTML","onShowResizeHandle","clonedImage","editInfo","lastSrc","dndHelpers","wasResized","shadowSpan","isCropping","pngSource","setEditingImage","removeWrapper","updateWrapper","cropContainers","getEditElements","cropOverlays","resizeHandles","rotateCenter","rotateHandle","cropHandles","angleRad","bottomPercent","leftPercent","rightPercent","topPercent","flippedHorizontal","flippedVertical","targetWidth","targetHeight","originalWidth","originalHeight","visibleWidth","visibleHeight","marginHorizontal","marginVertical","cropLeftPx","cropRightPx","cropTopPx","cropBottomPx","borderStyle","borderWidth","getPx","setWrapperSizeDimensions","flippedHorizontally","flippedVertically","setFlipped","setSize","updateHandleCursor","elementClass","clientWidth","clientHeight","doubleCheckResize","viewport","isSmall","isASmallImage","updateRotateHandleState","handles","isSideHandle","updateSideHandlesVisibility","allowedOperations","clearDndHelpers","deleteEditInfo","isOperationAllowed","operationOrSelect","getEditInfoFromImage","tryToConvertGifToPng","isFixedNumberValue","checkIfImageWasResized","createWrapper","createDndHelpers","Resizer","Rotator","Cropper","flipImage","rotateImage","widthPx","heightPx","rotateHandleBackColor","isSmallImage","getResizeBordersHTML","thisOperation","insertImageWrapper","shadowRoot","attachShadow","dragAndDrop","helper","cursor","radIndex","idx","handleRadIndexCalculator","originalDirection","originalIndex","rotatedIndex","rotateHandles","numberValue","MIN_HEIGHT_WIDTH","getContext","drawImage","getImageData","percentage","RESIZE_HANDLE_SIZE","RESIZE_HANDLE_MARGIN","ROTATE_SIZE","ROTATE_GAP","DEG_PER_RAD","DEFAULT_ROTATE_HANDLE_HEIGHT","ROTATE_ICON_MARGIN","ROTATION","sw","nw","ne","se","Xs","Ys","ROTATE_WIDTH","ROTATE_HANDLE_TOP","CROP_HANDLE_SIZE","CROP_HANDLE_WIDTH","XS_CROP","YS_CROP","previousSrc","wasResizedOrCropped","editingImage","newSrc","initEditInfo","originalSrc","saveEditInfo","ImageEditInfoState","ROTATE_KEYS","CROP_KEYS","ROTATE_CROP_KEYS","ALL_KEYS","areSameNumber","compareTo","naturalWidth","naturalHeight","getInitialEditInfo","imageWidth","imageHeight","devicePixelRatio","translate","toDataURL","beforeCrop","newEditInfo","crop","basePercentage","deltaValue","fullValue","currentPercentage","dx","dy","rotateCoordinate","widthPercent","heightPercent","fullWidth","fullHeight","newLeft","newRight","newTop","newBottom","overlayHTML","containerHTML","leftOrRight","topOrBottom","rotation","layer","getCropHandleHTMLInternal","getCropHTMLInternal","HandleTypes","hypotenuse","getResizeHandleHTML","handleTypes","setHandleStyle","horizontalOnly","verticalOnly","shouldPreserveRatio","actualWidth","actualHeight","resizeBorderColor","getRotateIconHTML","d","stroke","newX","newY","angleInRad","angleInDeg","rotateHandleRect","wrapperRect","adjustedDistance","rotateGap","rotateTop","handleLeft","selectionBorderColor","forcePreserveRatio","resizableImageSelector","showResizeHandle","hideResizeHandle","selectImageAfterUnSelect","convertSingleImageBody","getPasteSource","chainSanitizerCallback","sanitizeBlockStyles","isPureLiNode","childNode","LAST_TD_END_REGEX","LAST_TR_END_REGEX","LAST_TR_REGEX","LAST_TABLE_REGEX","excelHandler","trMatch","tableMatch","replaceChildren","processBlock","checkAndAddBr","blocksLength","insertPositionNode","listItemContainers","TABLE_TEMP_ELEMENTS_QUERY","isWordOnlineWithList","WORD_ONLINE_IDENTIFYING_SELECTOR","LIST_CONTAINER_ELEMENT_CLASS_NAME","VALID_LIST_STYLE_CHAR_CODES","createNewList","listItemContainer","startAttribute","firstElementChild","insertConvertedListToDoc","convertedListElement","listItemBlock","replaceRegex","prevParent","nextParent","sanitizeListItemContainer","listElements","curListItemBlock","curItem","lastItemInCurBlock","createListItemBlock","getListItemBlocks","itemBlock","flattenListBlock","getContainerListType","itemLevel","listRootElement","itemToInsert","curListLevel","lastElementChild","lastChildTag","insertListItem","parentContainer","getImageNodes","DeprecatedColorList","property","SUPPORTED_PROTOCOLS","URL","protocol","validateLink","listsMetadata","currentUniqueListId","listItems","currentListIdsByLevels","createLevelLists","lastProcessedItem","NODE_ID_ATTRIBUTE_NAME","getAndSetNodeId","wordCustomData","nextNodeId","dict","MSO_COMMENT_PARENT","MSO_COMMENT_REFERENCE","MSO_COMMENT_DATE","MSO_COMMENT_ANCHOR_HREF_REGEX","MSO_COMMENT_CONTINUATION","MSO_COMMENT_DONE","PERCENTAGE_REGEX","wordConverter","createWordConverter","wordConverterArgs","createWordConverterArguments","processNodesDiscovery","processNodeConvert","parsedLineHeight","UNIQUE_LIST_ID_CUSTOM_DATA","MSO_LIST_STYLE_NAME","LINE_BREAKS","getOrCreateListForNode","listMetadata","recurringGetOrCreateListAtNode","listId","getObject","uniqueListId","setObject","convertListIfNeeded","possibleList","getRealPreviousSibling","cleanupListIgnore","levels","nodesToRemove","isEmptySpan","fixWordListComments","isIgnoreNode","getListItemMetadata","listAttribute","getStyleValue","listProps","wordListId","originalNode","isFakeBullet","fakeBullet","getFakeBulletText","removeComments","endComment","getRealNextSibling","newSpan","prevSibling","isEmptyTextNode","resetCurrentLists","ll","itemMetadata","levelInfo","ignore","numberOfItems","secondFakeBullet","firstFakeBullet","nextUniqueId","clone","textIndent","numBulletsConverted","numNumberedConverted","createCustomData","BACKSPACE_CHAR_CODE","ESC_CHAR_CODE","LEFT_ARROW_CHAR_CODE","UP_ARROW_CHAR_CODE","RIGHT_ARROW_CHAR_CODE","DOWN_ARROW_CHAR_CODE","DELETE_CHAR_CODE","UNIDENTIFIED_CODE","dataProvider","pickerOptions","eventHandledOnKeyDown","blockSuggestions","isSuggesting","lastKnownRange","isPendingInputEventHandling","currentInputLength","newInputLength","onInitalize","htmlNode","getWord","setIsSuggesting","handleAutoComplete","onDispose","elementIdPrefix","isAndroidKeyboardEvent","calcInputLength","onKeyDownEvent","onAndroidInputEvent","shouldHandleKeyUpEvent","onKeyUpDomEvent","setLastKnownRange","onIsSuggestingChanged","setAriaOwns","setAriaActiveDescendant","cancelDefaultKeyDownEvent","stopImmediatePropagation","getIdValue","getNamedItem","getWordBeforeCursor","replacementNode","getRangeUntilAt","positionContentSearcher","startPos","endPos","hasMatched","isModifierKey","wordBeforeCursor","trimmedWordBeforeCursor","wordBeforeCursorWithoutTriggerChar","queryStringUpdated","setCursorPoint","rangeNode","nodeBeforeCursor","setRangeStart","nodeBeforeNodeBeforeCursor","detach","targetPoint","bufferZone","shiftHighlight","isHorizontal","getSelectedIndex","selectOption","tryRemoveNode","nodeAfterCursor","nodeId","onRemove","inputType","getInlineElementBeforeCursor","wordFromRange","wordFromCache","nodeOffset","suggestionsLabel","selectedIndex","suggestionLabelPrefix","charCode","shadowEditCoordinatesBackup","firstTable","lastTarget","firstTarget","preventKeyUp","startedSelection","targetTable","mouseMoveDisposer","DeleteTableContents","clearState","handleEnteredShadowEdit","handleLeavingShadowEdit","handleMouseDownEvent","handleKeyUpEvent","handleScrollEvent","TABLE_CELL_SELECTOR","deleteNodeContents","selectNodeContents","getCellAtCursor","newTarget","setData","shouldConvertToTableSelection","updateSelection","getCellCoordinates","getNextTD","prepareSelection","anchorNode","anchorOffset","isBeginAboveEnd","targetPosition","handleKeySelectionInsideTable","contentRange","IGNORE_KEY_UP_KEYS","selectionInsideTableMouseMove","detail","tripleClick","coord","getTableAtCursor","getOnMouseUp","isNewTDContainingFirstTable","restoreSelection","first","firstCord","lastCord","eventTarget","cellInput","indexY","indexX","r1","r2","newFirst","newLast","fixCoordinates","rowsCells","isNewTargetTableContained","isFirstTargetTableContained","firstTargetRange","onShowHelperElement","anchorContainerSelector","onMouseMoveDisposer","tableRectMap","tableEditor","onMouseOut","ev","relatedTarget","isOwnedElement","setTableEditor","buttons","ensureTableRects","editorWindow","scrollX","scrollY","invalidateTableRects","mousemove","disposeTableEditor","isEditing","currentTarget","normalizeRect","onStart","currentCells","nextCells","initialX","onDraggingHorizontal","onDraggingVertical","getHorizontalDistance","canResizeColumns","isLastCell","isShiftPressed","newWidthList","wordBreak","set","toLeft","setHorizontalPosition","CELL_RESIZER_WIDTH","setVerticalPosition","onEnd","anchorContainer","createElementData","featureHandler","TOP_OR_SIDE","onChanged","horizontalInserter","verticalInserter","horizontalResizer","verticalResizer","tableResizer","onFinishEditing","isCurrentlyEditing","onStartTableResize","onStartResize","onStartCellResize","disposeTableResizer","onInserted","onSelect","getOnMouseOut","setEditorFeatures","disposeCellResizers","disposeTableInserter","disposeTableSelector","firstCellRect","topOrSide","topOrSideBinary","tableRect","tdRect","lessThanBottom","lessThanRight","moreThanLeft","isOnLeftOrRight","isOnRightHalf","setInserterTd","tdAbove","tdAboveRect","isTdNotAboveMerged","setResizingTd","inserter","newInserter","disposeTableEditFeature","resizer","onInsert","viewPort","inserterColor","getInsertElementData","TableInsertHandler","insertTd","onMouseOutEvent","TABLE_RESIZER_LENGTH","originalRect","ratioX","ratioY","shouldResizeX","shouldResizeY","isTableBottomVisible","visibility","setDivPosition","hideResizer","visibleViewport","containerRect","onFinishDragging","isTableTopVisible","TABLE_SELECTOR_LENGTH","TableSelectorFeature","ENTITY_TYPE","watermark","customClass","showHideWatermark","watermarks","isShowing","removeWatermark","newEntity","insertEntity","spellcheck","CompatibleAlignment","CompatibleBulletListType","CompatibleCapitalization","CompatibleChangeSource","CompatibleClearFormatMode","CompatibleColorTransformDirection","CompatibleContentPosition","CompatibleContentType","CompatibleContentTypePrefix","CompatibleDarkModeDatasetNames","CompatibleDefinitionType","CompatibleDelimiterClasses","CompatibleDirection","CompatibleDocumentCommand","CompatibleDocumentPosition","CompatibleEntityClasses","CompatibleEntityOperation","CompatibleExperimentalFeatures","CompatibleFontSizeChange","CompatibleGetContentMode","CompatibleImageEditOperation","CompatibleIndentation","CompatibleKeys","CompatibleKnownCreateElementDataIndex","CompatibleKnownPasteSourceType","CompatibleListType","CompatibleNodeType","CompatibleNumberingListType","CompatiblePasteType","CompatiblePluginEventType","CompatiblePositionType","CompatibleQueryScope","CompatibleRegionType","CompatibleSelectionRangeTypes","CompatibleTableBorderFormat","CompatibleTableOperation","Alignment","BulletListType","Capitalization","ChangeSource","ClearFormatMode","ColorTransformDirection","ContentPosition","ContentType","ContentTypePrefix","DarkModeDatasetNames","DefinitionType","DelimiterClasses","Direction","DocumentCommand","DocumentPosition","EntityClasses","EntityOperation","ExperimentalFeatures","FontSizeChange","GetContentMode","ImageEditOperation","Indentation","Keys","KnownCreateElementDataIndex","KnownPasteSourceType","ListType","NodeType","NumberingListType","PasteType","PluginEventType","PositionType","QueryScope","RegionType","SelectionRangeTypes","TableBorderFormat","TableOperation","additionalPlugins","HyperLink","Paste","ContentEdit","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","String","__","create","__assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","Reflect","decorate","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","descriptor","done","access","addInitializer","init","__runInitializers","thisArg","useValue","__propKey","__setFunctionName","description","configurable","__metadata","metadataValue","__awaiter","_arguments","generator","reject","fulfilled","rejected","__generator","sent","trys","ops","verb","Symbol","iterator","op","__createBinding","o","k2","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","__classPrivateFieldSet","__classPrivateFieldIn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","toStringTag","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rooster-min.js","mappings":"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","sources":["webpack://roosterjs/./node_modules/color-convert/conversions.js","webpack://roosterjs/./node_modules/color-convert/index.js","webpack://roosterjs/./node_modules/color-convert/route.js","webpack://roosterjs/./node_modules/color-name/index.js","webpack://roosterjs/./node_modules/color-string/index.js","webpack://roosterjs/./node_modules/color/index.js","webpack://roosterjs/./node_modules/is-arrayish/index.js","webpack://roosterjs/./node_modules/simple-swizzle/index.js","webpack://roosterjs/./packages/roosterjs-color-utils/lib/index.ts","webpack://roosterjs/./packages/roosterjs-color-utils/lib/utils/getDarkColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/changeCapitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/changeFontSize.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/clearFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/createLink.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/getFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/insertEntity.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/insertImage.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/removeLink.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/replaceWithNode.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/rotateElement.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setAlignment.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setFontName.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setFontSize.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setImageAltText.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setIndentation.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/setTextColor.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBlockQuote.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBold.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleBullet.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleCodeBlock.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleItalic.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleNumbering.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleStrikethrough.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleSubscript.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleSuperscript.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/format/toggleUnderline.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/applyCellShading.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/editTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/formatTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/table/insertTable.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/applyInlineStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/applyListItemWrap.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/blockFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/blockWrap.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/commitListChains.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/execCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts","webpack://roosterjs/./packages/roosterjs-editor-api/lib/utils/toggleListType.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/focus.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getContent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/insertNode.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/select.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectImage.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectRange.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/selectTable.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/setContent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/transformColor.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/triggerEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/Editor.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/EditorBase.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/createEditorCore.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts","webpack://roosterjs/./packages/roosterjs-editor-core/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/getPasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/edit/getTextContent.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/commitEntity.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/clearEventDataCache.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isCharacterValue.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/event/isModifierKey.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VList.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/VListItem.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/getRootListNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/metadata.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/metadata/validate.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/Position.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/createRange.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getPositionRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/getSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/getStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/style/setStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/VTable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/cloneCellStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/pasteTable.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/tableCellInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/Browser.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/applyFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/collapseNodes.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/contains.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/createElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/fromHtml.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getInnerHTML.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getLeafNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/matchLink.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/matchesSelector.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/parseColor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/queryElements.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/readFile.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/setColor.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/unwrap.ts","webpack://roosterjs/./packages/roosterjs-editor-dom/lib/utils/wrap.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/AutoFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ContentEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ContextMenu.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/CustomReplace.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/CutPasteListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/HyperLink.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ImageEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/ImageResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Paste.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Picker.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/TableCellSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/TableResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/Watermark.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/tryToConvertGifToPng.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Picker/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts","webpack://roosterjs/./packages/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types-compatible/lib/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ClearFormatMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ColorTransformDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ContentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ContentType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DelimiterClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/DocumentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/EntityClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/EntityOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ExperimentalFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/FontSizeChange.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/GetContentMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ImageEditOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Indentation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/Keys.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/KnownCreateElementDataIndex.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/KnownPasteSourceType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/ListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/QueryScope.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/RegionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/SelectionRangeTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/TableBorderFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/TableOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleEnum/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/compatibleTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Alignment.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/BulletListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Capitalization.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ChangeSource.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ClearFormatMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ColorTransformDirection.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ContentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ContentType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DarkModeDatasetNames.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DefinitionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DelimiterClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Direction.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DocumentCommand.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/DocumentPosition.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/EntityClasses.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/EntityOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ExperimentalFeatures.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/FontSizeChange.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/GetContentMode.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ImageEditOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Indentation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/Keys.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/KnownCreateElementDataIndex.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/KnownPasteSourceType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/ListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/NodeType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/NumberingListType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PasteType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PluginEventType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/PositionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/QueryScope.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/RegionType.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/SelectionRangeTypes.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/TableBorderFormat.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/TableOperation.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/enum/index.ts","webpack://roosterjs/./packages/roosterjs-editor-types/lib/index.ts","webpack://roosterjs/./packages/roosterjs/lib/createEditor.ts","webpack://roosterjs/./packages/roosterjs/lib/index.ts","webpack://roosterjs/./node_modules/tslib/tslib.es6.mjs","webpack://roosterjs/webpack/bootstrap","webpack://roosterjs/webpack/runtime/define property getters","webpack://roosterjs/webpack/runtime/hasOwnProperty shorthand","webpack://roosterjs/webpack/runtime/make namespace object","webpack://roosterjs/webpack/startup"],"sourcesContent":["/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","export { default as getDarkColor } from './utils/getDarkColor';\n","import * as Color from 'color';\n\nconst DefaultBaseLValue = 21.247; // L-value of #333333\n\n/**\n * Get dark mode color for a given color\n * @param color The color to calculate from\n * @param baseLValue The Light value for base dark color in LAB format. @default the Light value for #333333\n */\nexport default function getDarkColor(\n color: string,\n baseLValue: number = DefaultBaseLValue\n): string {\n try {\n const computedColor = Color(color || undefined);\n const colorLab = computedColor.lab().array();\n const newLValue = (100 - colorLab[0]) * ((100 - baseLValue) / 100) + baseLValue;\n color = Color.lab(newLValue, colorLab[1], colorLab[2])\n .rgb()\n .alpha(computedColor.alpha())\n .toString();\n } catch {}\n\n return color;\n}\n","import applyInlineStyle from '../utils/applyInlineStyle';\nimport { Capitalization, IEditor, NodeType } from 'roosterjs-editor-types';\nimport { getFirstLeafNode, getNextLeafSibling } from 'roosterjs-editor-dom';\nimport type { CompatibleCapitalization } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Change the capitalization of text in the selection\n * @param editor The editor instance\n * @param capitalization The case option\n * @param language Optional parameter for language string that should comply to \"IETF BCP 47 Tags for\n * Identifying Languages\". For example: 'en' or 'en-US' for English, 'tr' for Turkish.\n * Default is the host environment’s current locale.\n */\nexport default function changeCapitalization(\n editor: IEditor,\n capitalization: Capitalization | CompatibleCapitalization,\n language?: string\n) {\n applyInlineStyle(\n editor,\n element => {\n for (\n let node = getFirstLeafNode(element);\n node;\n node = getNextLeafSibling(element, node)\n ) {\n if (node.nodeType == NodeType.Text) {\n try {\n node.textContent = getCapitalizedText(node.textContent, language);\n } catch {\n node.textContent = getCapitalizedText(node.textContent, undefined);\n }\n }\n }\n },\n 'changeCapitalization'\n );\n\n function getCapitalizedText(\n originalText: string | null,\n language: string | undefined\n ): string | null {\n if (originalText === null) {\n return originalText;\n }\n switch (capitalization) {\n case Capitalization.Lowercase:\n return originalText.toLocaleLowerCase(language);\n case Capitalization.Uppercase:\n return originalText.toLocaleUpperCase(language);\n case Capitalization.CapitalizeEachWord:\n const wordArray = originalText.toLocaleLowerCase(language).split(' ');\n for (let i = 0; i < wordArray.length; i++) {\n wordArray[i] =\n wordArray[i].charAt(0).toLocaleUpperCase(language) + wordArray[i].slice(1);\n }\n return wordArray.join(' ');\n case Capitalization.Sentence:\n // TODO: Add rules on punctuation for internationalization - TASK 104769\n const punctuationMarks = '[\\\\.\\\\!\\\\?]';\n // Find a match of a word character either:\n // - At the beginning of a string with or without preceding whitespace, for\n // example: ' hello world' and 'hello world' strings would both match 'h'.\n // - Or preceded by a punctuation mark and at least one whitespace, for\n // example 'yes. hello world' would match 'y' and 'h'.\n const regex = new RegExp('^\\\\s*\\\\w|' + punctuationMarks + '\\\\s+\\\\w', 'g');\n return originalText.toLocaleLowerCase(language).replace(regex, match => {\n return match.toLocaleUpperCase(language);\n });\n default:\n return originalText;\n }\n }\n}\n","import applyInlineStyle from '../utils/applyInlineStyle';\r\nimport { FontSizeChange, IEditor } from 'roosterjs-editor-types';\r\nimport { getComputedStyle } from 'roosterjs-editor-dom';\r\nimport type { CompatibleFontSizeChange } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Default font size sequence, in pt. Suggest editor UI use this sequence as your font size list,\r\n * So that when increase/decrease font size, the font size can match the sequence of your font size picker\r\n */\r\nexport const FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\r\nconst MIN_FONT_SIZE = 1;\r\nconst MAX_FONT_SIZE = 1000;\r\n\r\n/**\r\n * Increase or decrease font size in selection\r\n * @param editor The editor instance\r\n * @param change Whether increase or decrease font size\r\n * @param fontSizes A sorted font size array, in pt. Default value is FONT_SIZES\r\n */\r\nexport default function changeFontSize(\r\n editor: IEditor,\r\n change: FontSizeChange | CompatibleFontSizeChange,\r\n fontSizes: number[] = FONT_SIZES\r\n) {\r\n let changeBase: 1 | -1 = change == FontSizeChange.Increase ? 1 : -1;\r\n applyInlineStyle(\r\n editor,\r\n element => {\r\n let pt = parseFloat(getComputedStyle(element, 'font-size') || element.style.fontSize);\r\n element.style.fontSize = getNewFontSize(pt, changeBase, fontSizes) + 'pt';\r\n let lineHeight = getComputedStyle(element, 'line-height');\r\n if (lineHeight && lineHeight != 'normal') {\r\n element.style.lineHeight = 'normal';\r\n }\r\n },\r\n 'changeFontSize'\r\n );\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get new font size after increase/decrease. This is exported for test only\r\n * @param pt Original font size, in Point\r\n * @param changeBase Changed value, 1 means increase, -1 means decrease\r\n * @param fontSizes Known font size array\r\n */\r\nexport function getNewFontSize(pt: number, changeBase: 1 | -1, fontSizes: number[]): number {\r\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\r\n let last = fontSizes[fontSizes.length - 1];\r\n if (pt <= fontSizes[0]) {\r\n pt = Math.max(pt + changeBase, MIN_FONT_SIZE);\r\n } else if (pt > last || (pt == last && changeBase == 1)) {\r\n pt = pt / 10;\r\n pt = changeBase == 1 ? Math.floor(pt) : Math.ceil(pt);\r\n pt = Math.min(Math.max((pt + changeBase) * 10, last), MAX_FONT_SIZE);\r\n } else if (changeBase == 1) {\r\n for (let i = 0; i < fontSizes.length; i++) {\r\n if (pt < fontSizes[i]) {\r\n pt = fontSizes[i];\r\n break;\r\n }\r\n }\r\n } else {\r\n for (let i = fontSizes.length - 1; i >= 0; i--) {\r\n if (pt > fontSizes[i]) {\r\n pt = fontSizes[i];\r\n break;\r\n }\r\n }\r\n }\r\n return pt;\r\n}\r\n","import clearFormat from './clearFormat';\r\nimport { ClearFormatMode, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @deprecated Use clearFormat instead and pass the ClearFormatMode.Block as parameter\r\n * @param editor The editor instance\r\n */\r\nexport default function clearBlockFormat(editor: IEditor) {\r\n clearFormat(editor, ClearFormatMode.Block);\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport blockFormat from '../utils/blockFormat';\r\nimport execCommand from '../utils/execCommand';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport setBackgroundColor from './setBackgroundColor';\r\nimport setFontName from './setFontName';\r\nimport setFontSize from './setFontSize';\r\nimport setTextColor from './setTextColor';\r\nimport toggleBold from './toggleBold';\r\nimport toggleItalic from './toggleItalic';\r\nimport toggleUnderline from './toggleUnderline';\r\nimport {\r\n ChangeSource,\r\n ClearFormatMode,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n} from 'roosterjs-editor-types';\r\nimport {\r\n collapseNodesInRegion,\r\n getObjectKeys,\r\n getSelectedBlockElementsInRegion,\r\n getStyles,\r\n getTagOfNode,\r\n isBlockElement,\r\n isNodeInRegion,\r\n isVoidHtmlElement,\r\n PartialInlineElement,\r\n NodeInlineElement,\r\n safeInstanceOf,\r\n setStyles,\r\n splitBalancedNodeRange,\r\n toArray,\r\n unwrap,\r\n wrap,\r\n} from 'roosterjs-editor-dom';\r\nimport type { CompatibleClearFormatMode } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\nconst STYLES_TO_REMOVE = ['font', 'text-decoration', 'color', 'background'];\r\nconst TAGS_TO_UNWRAP = 'B,I,U,STRONG,EM,SUB,SUP,STRIKE,FONT,CENTER,H1,H2,H3,H4,H5,H6,UL,OL,LI,SPAN,P,BLOCKQUOTE,CODE,S,PRE'.split(\r\n ','\r\n);\r\nconst ATTRIBUTES_TO_PRESERVE = ['href', 'src', 'cellpadding', 'cellspacing'];\r\nconst TAGS_TO_STOP_UNWRAP = ['TD', 'TH', 'TR', 'TABLE', 'TBODY', 'THEAD'];\r\n\r\n/**\r\n * @param editor The editor instance\r\n * @returns if the current selection is composed of two or more block elements\r\n */\r\nfunction isMultiBlockSelection(editor: IEditor): boolean {\r\n let transverser = editor.getSelectionTraverser();\r\n let blockElement = transverser?.currentBlockElement;\r\n if (!blockElement) {\r\n return false;\r\n }\r\n\r\n let nextBlockElement = transverser?.getNextBlockElement();\r\n\r\n //At least two blocks are selected\r\n return !!nextBlockElement;\r\n}\r\n\r\nfunction clearNodeFormat(node: Node): boolean {\r\n // 1. Recursively clear format of all its child nodes\r\n const areBlockElements = toArray(node.childNodes).map(clearNodeFormat);\r\n let areAllChildrenBlock = areBlockElements.every(b => b);\r\n let returnBlockElement = isBlockElement(node);\r\n\r\n // 2. Unwrap the tag if necessary\r\n const tag = getTagOfNode(node);\r\n if (tag) {\r\n if (\r\n TAGS_TO_UNWRAP.indexOf(tag) >= 0 ||\r\n (areAllChildrenBlock &&\r\n !isVoidHtmlElement(node) &&\r\n TAGS_TO_STOP_UNWRAP.indexOf(tag) < 0)\r\n ) {\r\n if (returnBlockElement && !areAllChildrenBlock) {\r\n wrap(node);\r\n }\r\n unwrap(node);\r\n } else {\r\n // 3. Otherwise, remove all attributes\r\n clearAttribute(node as HTMLElement);\r\n }\r\n }\r\n\r\n return returnBlockElement;\r\n}\r\n\r\nfunction clearAttribute(element: HTMLElement) {\r\n const isTableCell = safeInstanceOf(element, 'HTMLTableCellElement');\r\n const isTable = safeInstanceOf(element, 'HTMLTableElement');\r\n\r\n for (let attr of toArray(element.attributes)) {\r\n if (isTableCell && attr.name == 'style') {\r\n removeNonBorderStyles(element);\r\n } else if (isTable && attr.name == 'style') {\r\n removeNotTableDefaultStyles(element);\r\n } else if (\r\n ATTRIBUTES_TO_PRESERVE.indexOf(attr.name.toLowerCase()) < 0 &&\r\n attr.name.indexOf('data-') != 0\r\n ) {\r\n element.removeAttribute(attr.name);\r\n }\r\n }\r\n}\r\n\r\nfunction updateStyles(\r\n element: HTMLElement,\r\n callbackfn: (\r\n value: string,\r\n styles: Record,\r\n result: Record\r\n ) => void\r\n) {\r\n const styles = getStyles(element);\r\n const result: Record = {};\r\n\r\n getObjectKeys(styles).forEach(style => callbackfn(style, styles, result));\r\n\r\n setStyles(element, styles);\r\n\r\n return result;\r\n}\r\n\r\nfunction removeNonBorderStyles(element: HTMLElement): Record {\r\n return updateStyles(element, (name, styles, result) => {\r\n if (name.indexOf('border') < 0) {\r\n result[name] = styles[name];\r\n delete styles[name];\r\n }\r\n });\r\n}\r\n\r\nfunction removeNotTableDefaultStyles(element: HTMLTableElement) {\r\n return updateStyles(element, (name, styles, result) => {\r\n if (name != 'border-collapse') {\r\n result[name] = styles[name];\r\n delete styles[name];\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Verifies recursively if a node and its parents have any siblings with text content\r\n * Ignoring the children of contentDiv and returning true if any node is LI\r\n * @returns `true` if this node, and its parents (minus the children of the contentDiv) have no siblings with text content\r\n */\r\nfunction isNodeWholeBlock(node: Node, editor: IEditor) {\r\n let currentNode: ParentNode | Node | null = node;\r\n while (currentNode && editor.contains(currentNode.parentNode)) {\r\n if (currentNode.nextSibling || currentNode.previousSibling) {\r\n if (safeInstanceOf(currentNode, 'HTMLLIElement')) {\r\n return true;\r\n }\r\n let isOnlySiblingWithContent = true;\r\n currentNode.parentNode?.childNodes.forEach(node => {\r\n if (node != currentNode && node.textContent?.length) {\r\n isOnlySiblingWithContent = false;\r\n }\r\n });\r\n return isOnlySiblingWithContent;\r\n }\r\n currentNode = currentNode.parentNode;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * Clear the format of the selected text or list of blocks\r\n * If the current selection is compose of multiple block elements then remove the text and struture format for all the selected blocks\r\n * If the current selection is compose of a partial inline element then only the text format is removed from the current selection\r\n * @param editor The editor instance\r\n */\r\nfunction clearAutoDetectFormat(editor: IEditor) {\r\n const isMultiBlock = isMultiBlockSelection(editor);\r\n if (!isMultiBlock) {\r\n const transverser = editor.getSelectionTraverser();\r\n const inlineElement = transverser?.currentInlineElement;\r\n const isPartial =\r\n inlineElement instanceof PartialInlineElement ||\r\n (inlineElement instanceof NodeInlineElement &&\r\n !isNodeWholeBlock(inlineElement.getContainerNode(), editor));\r\n if (isPartial) {\r\n clearFormat(editor);\r\n return;\r\n }\r\n }\r\n clearBlockFormat(editor);\r\n}\r\n\r\n/**\r\n * Clear all formats of selected blocks.\r\n * When selection is collapsed, only clear format of current block.\r\n * @param editor The editor instance\r\n */\r\nfunction clearBlockFormat(editor: IEditor) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n blockFormat(editor, region => {\r\n const blocks = getSelectedBlockElementsInRegion(region);\r\n let nodes = collapseNodesInRegion(region, blocks);\r\n\r\n if (editor.contains(region.rootNode)) {\r\n // If there are styles on table cell, wrap all its children and move down all non-border styles.\r\n // So that we can preserve styles for unselected blocks as well as border styles for table\r\n const nonborderStyles = removeNonBorderStyles(region.rootNode);\r\n if (getObjectKeys(nonborderStyles).length > 0) {\r\n const wrapper = wrap(toArray(region.rootNode.childNodes));\r\n setStyles(wrapper, nonborderStyles);\r\n }\r\n }\r\n\r\n while (\r\n nodes.length > 0 &&\r\n nodes[0].parentNode &&\r\n isNodeInRegion(region, nodes[0].parentNode)\r\n ) {\r\n const balancedNodes = splitBalancedNodeRange(nodes);\r\n nodes = balancedNodes ? [balancedNodes] : [];\r\n }\r\n\r\n nodes.forEach(clearNodeFormat);\r\n });\r\n setDefaultFormat(editor);\r\n },\r\n 'clearBlockFormat'\r\n );\r\n}\r\n\r\nfunction clearInlineFormat(editor: IEditor) {\r\n editor.focus();\r\n editor.addUndoSnapshot(() => {\r\n execCommand(editor, DocumentCommand.RemoveFormat);\r\n editor.queryElements('[class]', QueryScope.OnSelection, node =>\r\n node.removeAttribute('class')\r\n );\r\n\r\n setDefaultFormat(editor);\r\n\r\n return 'clearInlineFormat';\r\n }, ChangeSource.Format);\r\n}\r\n\r\nfunction setDefaultFontWeight(editor: IEditor, fontWeight: string = '400') {\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-weight',\r\n element => (element.style.fontWeight = fontWeight),\r\n 'setDefaultFontWeight'\r\n );\r\n}\r\n\r\nfunction setDefaultFormat(editor: IEditor) {\r\n const defaultFormat = editor.getDefaultFormat();\r\n const isDefaultFormatEmpty = getObjectKeys(defaultFormat).length === 0;\r\n editor.queryElements('[style]', QueryScope.InSelection, node => {\r\n const tag = getTagOfNode(node);\r\n if (TAGS_TO_STOP_UNWRAP.indexOf(tag) == -1) {\r\n removeStyles(tag, node, isDefaultFormatEmpty);\r\n } else {\r\n node.childNodes.forEach(node => {\r\n node.childNodes.forEach(cNode => {\r\n const tag = getTagOfNode(cNode);\r\n if (safeInstanceOf(cNode, 'HTMLElement')) {\r\n removeStyles(tag, cNode, isDefaultFormatEmpty);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n if (!isDefaultFormatEmpty) {\r\n if (defaultFormat.fontFamily) {\r\n setFontName(editor, defaultFormat.fontFamily);\r\n }\r\n if (defaultFormat.fontSize) {\r\n setFontSize(editor, defaultFormat.fontSize);\r\n }\r\n if (defaultFormat.textColor) {\r\n const setColorIgnoredElements = editor.queryElements(\r\n 'a *, a',\r\n QueryScope.OnSelection\r\n );\r\n\r\n let shouldApplyInlineStyle =\r\n setColorIgnoredElements.length > 0\r\n ? (element: HTMLElement) => setColorIgnoredElements.indexOf(element) == -1\r\n : undefined;\r\n\r\n if (defaultFormat.textColors) {\r\n setTextColor(editor, defaultFormat.textColors, shouldApplyInlineStyle);\r\n } else {\r\n setTextColor(editor, defaultFormat.textColor, shouldApplyInlineStyle);\r\n }\r\n }\r\n if (defaultFormat.backgroundColor) {\r\n if (defaultFormat.backgroundColors) {\r\n setBackgroundColor(editor, defaultFormat.backgroundColors);\r\n } else {\r\n setBackgroundColor(editor, defaultFormat.backgroundColor);\r\n }\r\n }\r\n if (defaultFormat.bold) {\r\n toggleBold(editor);\r\n } else {\r\n setDefaultFontWeight(editor);\r\n }\r\n if (defaultFormat.italic) {\r\n toggleItalic(editor);\r\n }\r\n if (defaultFormat.underline) {\r\n toggleUnderline(editor);\r\n }\r\n }\r\n}\r\n\r\nfunction removeStyles(tag: string, node: HTMLElement, isDefaultFormatEmpty: boolean) {\r\n if (TAGS_TO_STOP_UNWRAP.indexOf(tag) == -1) {\r\n STYLES_TO_REMOVE.forEach(style => node.style.removeProperty(style));\r\n\r\n // when default format is empty, keep the HTML minimum by removing style attribute if there's no style\r\n // (note: because default format is empty, we're not adding style back in)\r\n if (isDefaultFormatEmpty && node.getAttribute('style') === '') {\r\n node.removeAttribute('style');\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Clear the format in current selection, after cleaning, the format will be\r\n * changed to default format. The format that get cleaned include B/I/U/font name/\r\n * font size/text color/background color/align left/align right/align center/superscript/subscript\r\n * @param editor The editor instance\r\n * @param formatType type of format to apply\r\n */\r\nexport default function clearFormat(\r\n editor: IEditor,\r\n formatType: ClearFormatMode | CompatibleClearFormatMode = ClearFormatMode.Inline\r\n) {\r\n switch (formatType) {\r\n case ClearFormatMode.Inline:\r\n clearInlineFormat(editor);\r\n break;\r\n case ClearFormatMode.Block:\r\n clearBlockFormat(editor);\r\n break;\r\n default:\r\n clearAutoDetectFormat(editor);\r\n }\r\n}\r\n","import { HtmlSanitizer, matchLink, wrap } from 'roosterjs-editor-dom';\r\nimport {\r\n ChangeSource,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n// Regex matching Uri scheme\r\nconst URI_REGEX = /^[a-zA-Z]+:/i;\r\n// Regex matching begin of email address\r\nconst MAILTO_REGEX = /^[\\w.%+-]+@/i;\r\n// Regex matching begin of ftp, i.e. ftp.microsoft.com\r\nconst FTP_REGEX = /^ftp\\./i;\r\n\r\nfunction applyLinkPrefix(url: string): string {\r\n if (!url) {\r\n return url;\r\n }\r\n\r\n // Add link prefix per rule:\r\n // (a) if the url always starts with a URI scheme, leave it as it is\r\n // (b) if the url is an email address, xxx@... add mailto: prefix\r\n // (c) if the url starts with ftp., add ftp:// prefix\r\n // (d) rest, add http:// prefix\r\n let prefix = '';\r\n if (url.search(URI_REGEX) < 0) {\r\n if (url.search(MAILTO_REGEX) == 0) {\r\n prefix = 'mailto:';\r\n } else if (url.search(FTP_REGEX) == 0) {\r\n prefix = 'ftp://';\r\n } else {\r\n // fallback to http://\r\n prefix = 'http://';\r\n }\r\n }\r\n\r\n return prefix + url;\r\n}\r\n\r\n/**\r\n * Insert a hyperlink at cursor.\r\n * When there is a selection, hyperlink will be applied to the selection,\r\n * otherwise a hyperlink will be inserted to the cursor position.\r\n * @param editor Editor object\r\n * @param link Link address, can be http(s), mailto, notes, file, unc, ftp, news, telnet, gopher, wais.\r\n * When protocol is not specified, a best matched protocol will be predicted.\r\n * @param altText Optional alt text of the link, will be shown when hover on the link\r\n * @param displayText Optional display text for the link.\r\n * @param target Optional display target for the link (\"_blank\"|\"_self\"|\"_parent\"|\"_top\"|\"{framename}\")\r\n * If specified, the display text of link will be replaced with this text.\r\n * If not specified and there wasn't a link, the link url will be used as display text.\r\n */\r\nexport default function createLink(\r\n editor: IEditor,\r\n link: string,\r\n altText?: string,\r\n displayText?: string,\r\n target?: string\r\n) {\r\n editor.focus();\r\n let url = (checkXss(link) || '').trim();\r\n if (url) {\r\n let linkData = matchLink(url);\r\n // matchLink can match most links, but not all, i.e. if you pass link a link as \"abc\", it won't match\r\n // we know in that case, users will want to insert a link like http://abc\r\n // so we have separate logic in applyLinkPrefix to add link prefix depending on the format of the link\r\n // i.e. if the link starts with something like abc@xxx, we will add mailto: prefix\r\n // if the link starts with ftp.xxx, we will add ftp:// link. For more, see applyLinkPrefix\r\n let normalizedUrl = linkData ? linkData.normalizedUrl : applyLinkPrefix(url);\r\n let originalUrl = linkData ? linkData.originalUrl : url;\r\n\r\n editor.addUndoSnapshot(() => {\r\n const selection = editor.getSelectionRangeEx();\r\n let anchor: HTMLAnchorElement | null = null;\r\n if (selection.type === SelectionRangeTypes.Normal) {\r\n const range = selection.ranges[0];\r\n if (range && range.collapsed) {\r\n anchor = getAnchorNodeAtCursor(editor);\r\n\r\n // If there is already a link, just change its href\r\n if (anchor) {\r\n anchor.href = normalizedUrl;\r\n // Change text content if it is specified\r\n updateAnchorDisplayText(anchor, displayText);\r\n } else {\r\n anchor = editor.getDocument().createElement('A') as HTMLAnchorElement;\r\n anchor.textContent = displayText || originalUrl;\r\n anchor.href = normalizedUrl;\r\n editor.insertNode(anchor);\r\n }\r\n } else {\r\n // the selection is not collapsed, use browser execCommand\r\n editor\r\n .getDocument()\r\n .execCommand(DocumentCommand.CreateLink, false, normalizedUrl);\r\n const traverser = editor.getSelectionTraverser();\r\n\r\n let currentInline = traverser?.getNextInlineElement();\r\n\r\n // list for removing unwanted lines\r\n let deletionInlineList: Node[] = [];\r\n\r\n while (currentInline) {\r\n deletionInlineList.push(currentInline.getContainerNode());\r\n currentInline = traverser?.getNextInlineElement();\r\n }\r\n\r\n deletionInlineList.forEach(node => editor.deleteNode(node));\r\n\r\n anchor = getAnchorNodeAtCursor(editor);\r\n updateAnchorDisplayText(anchor, displayText);\r\n }\r\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\r\n anchor = wrap(selection.image, 'A') as HTMLAnchorElement;\r\n anchor.href = normalizedUrl;\r\n }\r\n\r\n if (altText && anchor) {\r\n anchor.title = altText;\r\n }\r\n if (anchor) {\r\n updateAnchorTarget(anchor, target);\r\n }\r\n return anchor;\r\n }, ChangeSource.CreateLink);\r\n }\r\n}\r\n\r\nfunction getAnchorNodeAtCursor(editor: IEditor): HTMLAnchorElement {\r\n return editor.queryElements('a[href]', QueryScope.OnSelection)[0] as HTMLAnchorElement;\r\n}\r\n\r\nfunction updateAnchorDisplayText(anchor: HTMLAnchorElement, displayText?: string) {\r\n if (displayText && anchor.textContent != displayText) {\r\n anchor.textContent = displayText;\r\n }\r\n}\r\n\r\nfunction updateAnchorTarget(anchor: HTMLAnchorElement, target?: string) {\r\n if (target) {\r\n anchor.target = target;\r\n } else if (!target && anchor.getAttribute('target')) {\r\n anchor.removeAttribute('target');\r\n }\r\n}\r\n\r\nfunction checkXss(link: string): string | null {\r\n const sanitizer = new HtmlSanitizer();\r\n const a = document.createElement('a');\r\n\r\n a.href = link || '';\r\n sanitizer.sanitize(a);\r\n // We use getAttribute because some browsers will try to make the href property a valid link.\r\n // This has unintended side effects when the link lacks a protocol.\r\n return a.getAttribute('href');\r\n}\r\n","import { getTableFormatInfo, getTagOfNode, toArray } from 'roosterjs-editor-dom';\r\nimport {\r\n ElementBasedFormatState,\r\n FormatState,\r\n IEditor,\r\n PluginEvent,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get element based Format State at cursor\r\n * @param editor The editor instance\r\n * @param event (Optional) The plugin event, it stores the event cached data for looking up.\r\n * In this function the event cache is used to get list state and heading level. If not passed,\r\n * it will query the node within selection to get the info\r\n * @returns An ElementBasedFormatState object\r\n */\r\nexport function getElementBasedFormatState(\r\n editor: IEditor,\r\n event?: PluginEvent\r\n): ElementBasedFormatState {\r\n const listTag = getTagOfNode(\r\n editor.getElementAtCursor('OL,UL', undefined /*startFrom*/, event)\r\n );\r\n\r\n // Check if selection is multiline, spans more than one block\r\n const range = editor.getSelectionRange();\r\n let multiline = false;\r\n\r\n if (range && !range.collapsed) {\r\n let startingBlock = editor.getBlockElementAtNode(range.startContainer);\r\n let endingBlock = editor.getBlockElementAtNode(range.endContainer);\r\n multiline = endingBlock && startingBlock ? !endingBlock.equals(startingBlock) : false;\r\n }\r\n\r\n const headingTag = getTagOfNode(\r\n editor.getElementAtCursor('H1,H2,H3,H4,H5,H6', undefined /*startFrom*/, event)\r\n );\r\n\r\n const table = editor.queryElements('table', QueryScope.OnSelection)[0];\r\n const tableFormat = table ? getTableFormatInfo(table) : undefined;\r\n const hasTableHeader = table?.rows[0]\r\n ? toArray(table.rows[0].cells).every(cell => getTagOfNode(cell) == 'TH')\r\n : undefined;\r\n const headingLevel = (headingTag && parseInt(headingTag[1])) || 0;\r\n\r\n return {\r\n isBullet: listTag == 'UL',\r\n isNumbering: listTag == 'OL',\r\n isMultilineSelection: multiline,\r\n headingLevel: headingLevel,\r\n headerLevel: headingLevel,\r\n canUnlink: !!editor.queryElements('a[href]', QueryScope.OnSelection)[0],\r\n canAddImageAltText: !!editor.queryElements('img', QueryScope.OnSelection)[0],\r\n isBlockQuote: !!editor.queryElements('blockquote', QueryScope.OnSelection)[0],\r\n isCodeInline: !!editor.queryElements('code', QueryScope.OnSelection)[0],\r\n isCodeBlock: !!editor.queryElements('pre>code', QueryScope.OnSelection)[0],\r\n isInTable: !!table,\r\n tableFormat: tableFormat || {},\r\n tableHasHeader: hasTableHeader,\r\n canMergeTableCell: canMergeTableCell(editor),\r\n };\r\n}\r\n\r\n/**\r\n * Get format state at cursor\r\n * A format state is a collection of all format related states, e.g.,\r\n * bold, italic, underline, font name, font size, etc.\r\n * @param editor The editor instance\r\n * @param event (Optional) The plugin event, it stores the event cached data for looking up.\r\n * In this function the event cache is used to get list state and heading level. If not passed,\r\n * it will query the node within selection to get the info\r\n * @returns The format state at cursor\r\n */\r\nexport default function getFormatState(editor: IEditor, event?: PluginEvent): FormatState {\r\n return {\r\n ...editor.getPendableFormatState(false /* forceGetStateFromDom */),\r\n ...getElementBasedFormatState(editor, event),\r\n ...editor.getStyleBasedFormatState(),\r\n ...editor.getUndoState(),\r\n isDarkMode: editor.isDarkMode(),\r\n zoomScale: editor.getZoomScale(),\r\n };\r\n}\r\n\r\n/**\r\n * Checks whether the editor selection range is starting and ending at a table element.\r\n * @param editor Editor Instance\r\n * @returns\r\n */\r\n\r\nconst canMergeTableCell = (editor: IEditor): boolean => {\r\n const selection = editor.getSelectionRangeEx();\r\n const isATable = selection && selection.type === SelectionRangeTypes.TableSelection;\r\n if (isATable && selection.coordinates) {\r\n const { firstCell, lastCell } = selection.coordinates;\r\n if (firstCell.x !== lastCell.x || firstCell.y !== lastCell.y) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n};\r\n","import commitListChains from '../utils/commitListChains';\nimport {\n addDelimiters,\n applyFormat,\n commitEntity,\n createElement,\n getEntityFromElement,\n getEntitySelector,\n Position,\n VListChain,\n wrap,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContentPosition,\n Entity,\n ExperimentalFeatures,\n IEditor,\n KnownCreateElementDataIndex,\n NodePosition,\n PositionType,\n} from 'roosterjs-editor-types';\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Insert an entity into editor.\n * @param editor The editor to insert entity into.\n * @param type Type of the entity\n * @param contentNode Root element of the entity\n * @param isBlock Whether the entity will be shown as a block\n * @param isReadonly Whether the entity will be a readonly entity\n * @param position @optional The position to insert into. If not specified, current position will be used.\n * If isBlock is true, entity will be insert below this position\n * @param insertToRegionRoot @optional When pass true, insert the entity at the root level of current region.\n * Parent nodes will be split if need\n * @param focusAfterEntity @optional When pass true, focus will be moved next to the entity. For inline entity,\n * focus will be after right after the entity (and the delimiter if exist). For block entity, focus will be in\n * the new empty line below the entity\n */\nexport default function insertEntity(\n editor: IEditor,\n type: string,\n contentNode: Node,\n isBlock: boolean,\n isReadonly: boolean,\n position?:\n | NodePosition\n | ContentPosition.Begin\n | ContentPosition.End\n | ContentPosition.DomEnd\n | CompatibleContentPosition.Begin\n | CompatibleContentPosition.End\n | CompatibleContentPosition.DomEnd,\n insertToRegionRoot?: boolean,\n focusAfterEntity?: boolean\n): Entity {\n const wrapper = wrap(contentNode, isBlock ? 'div' : 'span');\n\n // For inline & readonly entity, we need to set display to \"inline-block\" otherwise\n // there will be some weird behavior when move cursor around the entity node.\n // And we should only do this for readonly entity since \"inline-block\" has some side effect\n // in IE that there will be a resize border around the inline-block element. We made some\n // workaround for readonly entity for this issue but for editable entity, keep it as \"inline\"\n // will just work fine.\n if (!isBlock && isReadonly) {\n wrapper.style.display = 'inline-block';\n }\n\n commitEntity(wrapper, type, isReadonly);\n\n if (!editor.contains(wrapper)) {\n let currentRange: Range | null = null;\n let contentPosition:\n | ContentPosition.Begin\n | ContentPosition.End\n | ContentPosition.DomEnd\n | ContentPosition.SelectionStart\n | CompatibleContentPosition.Begin\n | CompatibleContentPosition.End\n | CompatibleContentPosition.DomEnd\n | CompatibleContentPosition.SelectionStart;\n\n if (typeof position == 'number') {\n contentPosition = position;\n } else if (position) {\n currentRange = editor.getSelectionRange();\n const node = position.normalize().node;\n const existingEntity = node && editor.getElementAtCursor(getEntitySelector(), node);\n\n // Do not insert entity into another entity\n if (existingEntity) {\n position = new Position(existingEntity, PositionType.After);\n }\n\n editor.select(position);\n contentPosition = ContentPosition.SelectionStart;\n } else {\n editor.focus();\n contentPosition = ContentPosition.SelectionStart;\n }\n\n const regions = insertToRegionRoot && editor.getSelectedRegions();\n const chains = regions && VListChain.createListChains(regions);\n\n editor.insertNode(wrapper, {\n updateCursor: false,\n insertOnNewLine: isBlock,\n replaceSelection: true,\n position: contentPosition,\n insertToRegionRoot: insertToRegionRoot,\n });\n\n if (chains) {\n commitListChains(editor, chains);\n }\n\n if (contentPosition == ContentPosition.SelectionStart) {\n if (currentRange) {\n editor.select(currentRange);\n } else if (!isBlock) {\n editor.select(wrapper, PositionType.After);\n }\n }\n }\n\n const entity = getEntityFromElement(wrapper)!;\n\n if (isBlock) {\n // Insert an extra empty line for block entity to make sure\n // user can still put cursor below the entity.\n const newLine = createElement(KnownCreateElementDataIndex.EmptyLine, editor.getDocument());\n\n wrapper.parentNode?.insertBefore(newLine!, wrapper.nextSibling);\n\n if (newLine) {\n applyFormat(\n newLine as HTMLElement,\n editor.getDefaultFormat(),\n editor.isDarkMode(),\n editor.getDarkColorHandler()\n );\n }\n\n if (focusAfterEntity) {\n const br = newLine?.querySelector('br');\n const pos = br && new Position(br, PositionType.Before);\n\n if (pos) {\n editor.select(pos);\n }\n }\n } else if (\n isReadonly &&\n editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n addDelimiters(entity.wrapper);\n if (entity.wrapper.nextElementSibling) {\n editor.select(new Position(entity.wrapper.nextElementSibling, PositionType.After));\n }\n }\n\n editor.triggerContentChangedEvent(ChangeSource.InsertEntity, entity);\n\n return entity;\n}\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { getObjectKeys, readFile } from 'roosterjs-editor-dom';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Insert an image to editor at current selection\r\n * @param editor The editor instance\r\n * @param imageFileOrSrc Either the image file blob or source string of the image.\r\n * @param attributes Optional image element attributes\r\n */\r\nexport default function insertImage(\r\n editor: IEditor,\r\n imageFileOrSrc: File | string,\r\n attributes?: Record\r\n): void {\r\n if (typeof imageFileOrSrc == 'string') {\r\n insertImageWithSrc(editor, imageFileOrSrc, attributes);\r\n } else {\r\n readFile(imageFileOrSrc, dataUrl => {\r\n if (dataUrl && !editor.isDisposed()) {\r\n insertImageWithSrc(editor, dataUrl, attributes);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction insertImageWithSrc(editor: IEditor, src: string, attributes?: Record) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const image = editor.getDocument().createElement('img');\r\n image.src = src;\r\n\r\n if (attributes) {\r\n getObjectKeys(attributes).forEach(attribute =>\r\n image.setAttribute(attribute, attributes[attribute])\r\n );\r\n }\r\n editor.insertNode(image);\r\n },\r\n 'insertImage'\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Remove link at selection. If no links at selection, do nothing.\r\n * If selection contains multiple links, all of the link styles will be removed.\r\n * If only part of a link is selected, the whole link style will be removed.\r\n * @param editor The editor instance\r\n */\r\nexport default function removeLink(editor: IEditor) {\r\n editor.focus();\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n editor.queryElements('a[href]', QueryScope.OnSelection, unwrap);\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'removeLink'\r\n );\r\n}\r\n","import { ContentPosition, IEditor, IPositionContentSearcher } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Replace text before current selection with a node, current selection will be kept if possible\r\n * @param editor The editor instance\r\n * @param text The text for matching. We will try to match the text with the text before cursor\r\n * @param node The node to replace the text with\r\n * @param exactMatch True if the text must appear exactly before selection,\r\n * otherwise there can be some text between the target text and selection\r\n * @param searcher Optional PositionContentSearcher of current selection to help search text\r\n */\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n text: string,\r\n node: Node,\r\n exactMatch: boolean,\r\n searcher?: IPositionContentSearcher\r\n): boolean;\r\n\r\n/**\r\n * Replace a given range with a node, current selection will be kept if possible\r\n * @param editor The editor instance\r\n * @param range The range to replace from\r\n * @param node The node to replace the text with\r\n * @param exactMatch True if the text must appear exactly before selection,\r\n * otherwise there can be some text between the target text and selection\r\n */\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n range: Range,\r\n node: Node,\r\n exactMatch: boolean\r\n): boolean;\r\n\r\nexport default function replaceWithNode(\r\n editor: IEditor,\r\n textOrRange: string | Range,\r\n node: Node,\r\n exactMatch: boolean,\r\n searcher?: IPositionContentSearcher\r\n): boolean {\r\n // Make sure the text and node is valid\r\n if (!textOrRange || !node) {\r\n return false;\r\n }\r\n\r\n let range: Range | null;\r\n\r\n if (typeof textOrRange == 'string') {\r\n searcher = (searcher || editor.getContentSearcherOfCursor()) ?? undefined;\r\n range = searcher?.getRangeFromText(textOrRange, exactMatch) ?? null;\r\n } else {\r\n range = textOrRange;\r\n }\r\n\r\n if (range) {\r\n const backupRange = editor.getSelectionRange();\r\n\r\n // If the range to replace is right before current cursor, it is actually an exact match\r\n if (\r\n backupRange?.collapsed &&\r\n range.endContainer == backupRange.startContainer &&\r\n range.endOffset == backupRange.startOffset\r\n ) {\r\n exactMatch = true;\r\n }\r\n\r\n editor.insertNode(node, {\r\n position: ContentPosition.Range,\r\n updateCursor: exactMatch,\r\n replaceSelection: true,\r\n insertOnNewLine: false,\r\n range: range,\r\n });\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { IEditor } from 'roosterjs-editor-types';\n\n/**\n * Rotate an element visually\n * @param editor The editor instance\n * @param element The element that should be rotated\n * @param angle The degree at which to rotate the element from it's center\n */\nexport default function rotateElement(editor: IEditor, element: HTMLElement, angle: number): void {\n if (element) {\n formatUndoSnapshot(\n editor,\n () => {\n element.style.transform = `rotate(${angle}deg)`;\n },\n 'rotateElement'\n );\n }\n}\n","import blockFormat from '../utils/blockFormat';\r\nimport execCommand from '../utils/execCommand';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport normalizeBlockquote from '../utils/normalizeBlockquote';\r\nimport {\r\n createVListFromRegion,\r\n findClosestElementAncestor,\r\n getSelectedBlockElementsInRegion,\r\n isWholeTableSelected,\r\n VTable,\r\n} from 'roosterjs-editor-dom';\r\nimport {\r\n Alignment,\r\n DocumentCommand,\r\n IEditor,\r\n QueryScope,\r\n SelectionRangeTypes,\r\n TableSelectionRange,\r\n} from 'roosterjs-editor-types';\r\nimport type { CompatibleAlignment } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Set content alignment\r\n * @param editor The editor instance\r\n * @param alignment The alignment option:\r\n * Alignment.Center, Alignment.Left, Alignment.Right\r\n */\r\nexport default function setAlignment(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const selection = editor.getSelectionRangeEx();\r\n const isATable = selection && selection.type === SelectionRangeTypes.TableSelection;\r\n const elementAtCursor = editor.getElementAtCursor();\r\n\r\n if (\r\n isATable &&\r\n selection.coordinates &&\r\n isWholeTableSelected(new VTable(selection.table), selection.coordinates)\r\n ) {\r\n alignTable(selection, alignment);\r\n } else if (elementAtCursor && isList(elementAtCursor)) {\r\n alignList(editor, alignment);\r\n } else {\r\n alignText(editor, alignment);\r\n }\r\n },\r\n 'setAlignment'\r\n );\r\n}\r\n\r\n/**\r\n * Align text using the margins\r\n * @param editor\r\n * @param element\r\n * @param alignment\r\n * @param addUndoSnapshot\r\n * @returns\r\n */\r\nfunction alignTable(selection: TableSelectionRange, alignment: Alignment | CompatibleAlignment) {\r\n const table = selection.table;\r\n if (alignment == Alignment.Center) {\r\n table.style.marginLeft = 'auto';\r\n table.style.marginRight = 'auto';\r\n } else if (alignment == Alignment.Right) {\r\n table.style.marginLeft = 'auto';\r\n table.style.marginRight = '';\r\n } else {\r\n table.style.marginLeft = '';\r\n table.style.marginRight = 'auto';\r\n }\r\n}\r\n\r\n/**\r\n * Align text using the text-align\r\n * @param editor\r\n * @param alignment\r\n * @returns\r\n */\r\nfunction alignText(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n let align = 'left';\r\n let command = DocumentCommand.JustifyLeft;\r\n if (alignment == Alignment.Center) {\r\n command = DocumentCommand.JustifyCenter;\r\n align = 'center';\r\n } else if (alignment == Alignment.Right) {\r\n command = DocumentCommand.JustifyRight;\r\n align = 'right';\r\n }\r\n execCommand(editor, command);\r\n const elements = editor.queryElements('[align]', QueryScope.OnSelection, node => {\r\n node.style.textAlign = align;\r\n normalizeBlockquote(node);\r\n });\r\n\r\n if (elements.length == 0) {\r\n const node = editor.getElementAtCursor();\r\n if (node) {\r\n normalizeBlockquote(node);\r\n }\r\n }\r\n}\r\n\r\nfunction isList(element: HTMLElement) {\r\n return findClosestElementAncestor(element, undefined /** root */, 'LI');\r\n}\r\n\r\nfunction alignList(editor: IEditor, alignment: Alignment | CompatibleAlignment) {\r\n blockFormat(\r\n editor,\r\n (region, start, end) => {\r\n const blocks = getSelectedBlockElementsInRegion(region);\r\n const startNode = blocks[0].getStartNode();\r\n const vList = createVListFromRegion(region, true /*includeSiblingLists*/, startNode);\r\n if (start && end) {\r\n vList?.setAlignment(start, end, alignment);\r\n }\r\n },\r\n undefined /* beforeRunCallback */,\r\n 'alignList'\r\n );\r\n}\r\n","import applyInlineStyle from '../utils/applyInlineStyle';\r\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\r\nimport { setColor } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Set background color at current selection\r\n * @param editor The editor instance\r\n * @param color One of two options:\r\n * The color string, can be any of the predefined color names (e.g, 'red')\r\n * or hexadecimal color string (e.g, '#FF0000') or rgb value (e.g, 'rgb(255, 0, 0)') supported by browser.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take effect\r\n * Alternatively, you can pass a @typedef ModeIndependentColor. If in light mode, the lightModeColor property will be used.\r\n * If in dark mode, the darkModeColor will be used and the lightModeColor will be used when converting back to light mode.\r\n **/\r\nexport default function setBackgroundColor(editor: IEditor, color: string | ModeIndependentColor) {\r\n applyInlineStyle(\r\n editor,\r\n (element, isInnerNode) => {\r\n setColor(\r\n element,\r\n isInnerNode ? '' : color,\r\n true /*isBackground*/,\r\n editor.isDarkMode(),\r\n false /*shouldAdaptFontColor*/,\r\n editor.getDarkColorHandler()\r\n );\r\n },\r\n 'setBackgroundColor'\r\n );\r\n}\r\n","import collapseSelectedBlocks from '../utils/collapseSelectedBlocks';\r\nimport formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { Direction, IEditor } from 'roosterjs-editor-types';\r\nimport type { CompatibleDirection } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Change direction for the blocks/paragraph at selection\r\n * @param editor The editor instance\r\n * @param direction The direction option:\r\n * Direction.LeftToRight refers to 'ltr', Direction.RightToLeft refers to 'rtl'\r\n */\r\nexport default function setDirection(editor: IEditor, direction: Direction | CompatibleDirection) {\r\n editor.focus();\r\n\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n collapseSelectedBlocks(editor, element => {\r\n element.setAttribute('dir', direction == Direction.LeftToRight ? 'ltr' : 'rtl');\r\n element.style.textAlign = direction == Direction.LeftToRight ? 'left' : 'right';\r\n });\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'setDirection'\r\n );\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set font name at selection\r\n * @param editor The editor instance\r\n * @param fontName The fontName string, should be a valid CSS font-family style.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n */\r\nexport default function setFontName(editor: IEditor, fontName: string) {\r\n // The browser provided execCommand creates a HTML tag with face attribute. is not HTML5 standard\r\n // (http://www.w3schools.com/tags/tag_font.asp).\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-family',\r\n (element, isInnerNode) => {\r\n element.style.fontFamily = isInnerNode ? '' : fontName;\r\n },\r\n 'setFontName'\r\n );\r\n}\r\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { getComputedStyle } from 'roosterjs-editor-dom';\r\nimport { IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set font size at selection\r\n * @param editor The editor instance\r\n * @param fontSize The fontSize string, should be a valid CSS font-size style.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n */\r\nexport default function setFontSize(editor: IEditor, fontSize: string) {\r\n // The browser provided execCommand only accepts 1-7 point value. In addition, it uses HTML tag with size attribute.\r\n // is not HTML5 standard (http://www.w3schools.com/tags/tag_font.asp).\r\n applyListItemStyleWrap(\r\n editor,\r\n 'font-size',\r\n (element, isInnerNode) => {\r\n element.style.fontSize = isInnerNode ? '' : fontSize;\r\n let lineHeight = getComputedStyle(element, 'line-height');\r\n if (lineHeight && lineHeight != 'normal') {\r\n element.style.lineHeight = 'normal';\r\n }\r\n },\r\n 'setFontSize'\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { DocumentCommand, IEditor, QueryScope } from 'roosterjs-editor-types';\nimport { HtmlSanitizer, moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * Set heading level at selection\n * @param editor The editor instance\n * @param level The heading level, can be a number from 0 to 6, in which 1 ~ 6 refers to\n * the HTML heading element <H1> to <H6>, 0 means no heading\n * if passed in param is outside the range, will be rounded to nearest number in the range\n */\nexport default function setHeadingLevel(editor: IEditor, level: number) {\n level = Math.min(Math.max(Math.round(level), 0), 6);\n\n formatUndoSnapshot(\n editor,\n () => {\n editor.focus();\n\n let wrapped = false;\n editor.queryElements('H1,H2,H3,H4,H5,H6', QueryScope.OnSelection, heading => {\n if (!wrapped) {\n editor.getDocument().execCommand(DocumentCommand.FormatBlock, false, '
                            ');\n wrapped = true;\n }\n\n const div = editor.getDocument().createElement('div');\n moveChildNodes(div, heading);\n editor.replaceNode(heading, div);\n });\n\n if (level > 0) {\n let traverser = editor.getSelectionTraverser();\n let blockElement = traverser?.currentBlockElement;\n let sanitizer = new HtmlSanitizer({\n cssStyleCallbacks: {\n 'font-size': () => false,\n },\n });\n while (blockElement) {\n let element = blockElement.collapseToSingleElement();\n sanitizer.sanitize(element);\n blockElement = traverser?.getNextBlockElement();\n }\n editor.getDocument().execCommand(DocumentCommand.FormatBlock, false, ``);\n }\n },\n 'toggleHeader'\n );\n}\n\n/**\n * @deprecated Use setHeadingLevel instead\n * Keep this for compatibility only, will be removed in next major release\n */\nexport const toggleHeader = setHeadingLevel;\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Set image alt text for all selected images at selection. If no images is contained\r\n * in selection, do nothing.\r\n * The alt attribute provides alternative information for an image if a user for some reason\r\n * cannot view it (because of slow connection, an error in the src attribute, or if the user\r\n * uses a screen reader). See https://www.w3schools.com/tags/att_img_alt.asp\r\n * @param editor The editor instance\r\n * @param altText The image alt text\r\n */\r\nexport default function setImageAltText(editor: IEditor, altText: string) {\r\n editor.focus();\r\n\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n editor.queryElements('img', QueryScope.OnSelection, node =>\r\n node.setAttribute('alt', altText)\r\n );\r\n },\r\n 'setImageAltText'\r\n );\r\n}\r\n","import blockFormat from '../utils/blockFormat';\r\nimport normalizeBlockquote from '../utils/normalizeBlockquote';\r\nimport {\r\n BlockElement,\r\n ExperimentalFeatures,\r\n IEditor,\r\n Indentation,\r\n KnownCreateElementDataIndex,\r\n RegionBase,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\nimport {\r\n collapseNodesInRegion,\r\n createVListFromRegion,\r\n findClosestElementAncestor,\r\n getSelectedBlockElementsInRegion,\r\n getTagOfNode,\r\n isNodeInRegion,\r\n isWholeTableSelected,\r\n splitBalancedNodeRange,\r\n toArray,\r\n unwrap,\r\n VList,\r\n VTable,\r\n wrap,\r\n} from 'roosterjs-editor-dom';\r\nimport type { CompatibleIndentation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Set indentation at selection\r\n * If selection contains bullet/numbering list, increase/decrease indentation will\r\n * increase/decrease the list level by one.\r\n * @param editor The editor instance\r\n * @param indentation The indentation option:\r\n * Indentation.Increase to increase indentation or Indentation.Decrease to decrease indentation\r\n */\r\nexport default function setIndentation(\r\n editor: IEditor,\r\n indentation: Indentation | CompatibleIndentation\r\n) {\r\n const handler = indentation == Indentation.Increase ? indent : outdent;\r\n\r\n blockFormat(\r\n editor,\r\n (region, start, end) => {\r\n const blocks = getSelectedBlockElementsInRegion(region, true /*createBlockIfEmpty*/);\r\n const blockGroups: BlockElement[][] = [[]];\r\n\r\n for (let i = 0; i < blocks.length; i++) {\r\n const startNode = blocks[i].getStartNode();\r\n const vList = createVListFromRegion(\r\n region,\r\n true /*includeSiblingLists*/,\r\n startNode\r\n );\r\n\r\n if (vList) {\r\n while (blocks[i + 1] && vList.contains(blocks[i + 1].getStartNode())) {\r\n i++;\r\n }\r\n\r\n const isTabKeyTextFeaturesEnabled = editor.isFeatureEnabled(\r\n ExperimentalFeatures.TabKeyTextFeatures\r\n );\r\n\r\n if (\r\n isTabKeyTextFeaturesEnabled &&\r\n isFirstItem(vList, startNode) &&\r\n shouldHandleWithBlockquotes(indentation, editor, startNode)\r\n ) {\r\n const block = editor.getBlockElementAtNode(vList.rootList);\r\n if (block) {\r\n blockGroups.push([block]);\r\n }\r\n } else {\r\n if (start && end) {\r\n indentation == Indentation.Decrease\r\n ? vList.setIndentation(\r\n start,\r\n end,\r\n indentation,\r\n false /* softOutdent */,\r\n isTabKeyTextFeaturesEnabled /* preventItemRemoval */\r\n )\r\n : vList.setIndentation(start, end, indentation);\r\n vList.writeBack(\r\n editor.isFeatureEnabled(\r\n ExperimentalFeatures.ReuseAllAncestorListElements\r\n ),\r\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\r\n );\r\n blockGroups.push([]);\r\n }\r\n }\r\n } else {\r\n blockGroups[blockGroups.length - 1].push(blocks[i]);\r\n }\r\n }\r\n\r\n blockGroups.forEach(group => handler(region, group));\r\n },\r\n () => {\r\n const selection = editor.getSelectionRangeEx();\r\n if (\r\n selection.type == SelectionRangeTypes.TableSelection &&\r\n selection.coordinates &&\r\n isWholeTableSelected(new VTable(selection.table), selection.coordinates)\r\n ) {\r\n if (indentation == Indentation.Decrease) {\r\n const quote = editor.getElementAtCursor('blockquote', selection.table);\r\n if (quote) {\r\n unwrap(quote);\r\n }\r\n } else if (indentation == Indentation.Increase) {\r\n wrap(selection.table, KnownCreateElementDataIndex.BlockquoteWrapper);\r\n }\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'setIndentation'\r\n );\r\n\r\n function indent(region: RegionBase, blocks: BlockElement[]) {\r\n const nodes = collapseNodesInRegion(region, blocks);\r\n wrap(nodes, KnownCreateElementDataIndex.BlockquoteWrapper);\r\n const quotesHandled: Node[] = [];\r\n nodes.forEach(node => normalizeBlockquote(node, quotesHandled));\r\n }\r\n}\r\n\r\nfunction outdent(region: RegionBase, blocks: BlockElement[]) {\r\n blocks.forEach(blockElement => {\r\n let node: Node | null = blockElement.collapseToSingleElement();\r\n const quote = findClosestElementAncestor(node, region.rootNode, 'blockquote');\r\n if (quote) {\r\n if (node == quote) {\r\n node = wrap(toArray(node.childNodes));\r\n }\r\n\r\n while (node && isNodeInRegion(region, node) && getTagOfNode(node) != 'BLOCKQUOTE') {\r\n node = splitBalancedNodeRange(node);\r\n }\r\n\r\n if (node && isNodeInRegion(region, node)) {\r\n unwrap(node);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction isFirstItem(vList: VList, startNode: Node) {\r\n return (\r\n vList.items[0]?.getNode() == startNode &&\r\n vList.getListItemIndex(startNode) == (vList.getStart() || 1)\r\n );\r\n}\r\n\r\nfunction shouldHandleWithBlockquotes(\r\n indentation: Indentation | CompatibleIndentation,\r\n editor: IEditor,\r\n startNode: Node\r\n) {\r\n return (\r\n indentation == Indentation.Increase || editor.getElementAtCursor('blockquote', startNode)\r\n );\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { createVListFromRegion } from 'roosterjs-editor-dom';\nimport { ExperimentalFeatures, IEditor } from 'roosterjs-editor-types';\n\n/**\n * Resets Ordered List Numbering back to the value of the parameter startNumber\n * @param editor The editor instance\n * @param separator The HTML element that indicates when to split the VList\n * @param startNumber The number of that the splitted list should start\n */\nexport default function setOrderedListNumbering(\n editor: IEditor,\n separator: HTMLLIElement,\n startNumber: number = 1\n) {\n formatUndoSnapshot(\n editor,\n () => {\n editor.focus();\n const regions = editor.getSelectedRegions();\n if (regions[0]) {\n const vList = createVListFromRegion(\n regions[0],\n false /*includeSiblingLists*/,\n separator\n );\n if (vList) {\n vList.split(separator, startNumber);\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n }\n }\n },\n 'setOrderedListNumbering'\n );\n}\n","import applyListItemStyleWrap from '../utils/applyListItemWrap';\r\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\r\nimport { setColor } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Set text color at selection\r\n * @param editor The editor instance\r\n * @param color One of two options:\r\n * The color string, can be any of the predefined color names (e.g, 'red')\r\n * or hexadecimal color string (e.g, '#FF0000') or rgb value (e.g, 'rgb(255, 0, 0)') supported by browser.\r\n * Currently there's no validation to the string, if the passed string is invalid, it won't take affect\r\n * Alternatively, you can pass a @typedef ModeIndependentColor. If in light mode, the lightModeColor property will be used.\r\n * If in dark mode, the darkModeColor will be used and the lightModeColor will be used when converting back to light mode.\r\n * @param shouldApplyInlineStyle Optional callback function to be invoked to verify if the current element should have the inline Style applied\r\n */\r\nexport default function setTextColor(\r\n editor: IEditor,\r\n color: string | ModeIndependentColor,\r\n shouldApplyInlineStyle?: (element: HTMLElement) => boolean\r\n) {\r\n applyListItemStyleWrap(\r\n editor,\r\n 'color',\r\n (element, isInnerNode) => {\r\n if (!shouldApplyInlineStyle || shouldApplyInlineStyle(element)) {\r\n setColor(\r\n element,\r\n isInnerNode ? '' : color,\r\n false /*isBackground*/,\r\n editor.isDarkMode(),\r\n false /*shouldAdaptFontColor*/,\r\n editor.getDarkColorHandler()\r\n );\r\n }\r\n },\r\n 'setTextColor'\r\n );\r\n}\r\n","import blockWrap from '../utils/blockWrap';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap, wrap } from 'roosterjs-editor-dom';\r\n\r\nconst BLOCKQUOTE_TAG = 'blockquote';\r\nconst DEFAULT_STYLER = (element: HTMLElement): void => {\r\n element.style.borderLeft = '3px solid';\r\n element.style.borderColor = '#C8C8C8';\r\n element.style.paddingLeft = '10px';\r\n element.style.color = '#666666';\r\n};\r\n\r\n/**\r\n * Toggle blockquote at selection, if selection already contains any blockquote elements,\r\n * the blockquote elements will be unquote and other elements will take no effect\r\n * @param editor The editor instance\r\n * @param styler (Optional) The custom styler for setting the style for the blockquote element\r\n */\r\nexport default function toggleBlockQuote(editor: IEditor, styler?: (element: HTMLElement) => void) {\r\n blockWrap(\r\n editor,\r\n nodes => {\r\n const wrapper = wrap(nodes, BLOCKQUOTE_TAG);\r\n (styler || DEFAULT_STYLER)(wrapper);\r\n },\r\n () => editor.queryElements('blockquote', QueryScope.OnSelection, unwrap).length == 0,\r\n 'toggleBlockQuote'\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle bold at selection\r\n * If selection is collapsed, it will only affect the following input after caret\r\n * If selection contains only bold text, the bold style will be removed\r\n * If selection contains only normal text, bold style will be added to the whole selected text\r\n * If selection contains both bold and normal text, bold style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleBold(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Bold, 'toggleBold');\r\n}\r\n","import toggleListType from '../utils/toggleListType';\r\nimport { BulletListType, IEditor, ListType } from 'roosterjs-editor-types';\r\nimport type { CompatibleBulletListType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Toggle bullet at selection\r\n * If selection contains bullet in deep level, toggle bullet will decrease the bullet level by one\r\n * If selection contains number list, toggle bullet will convert the number list into bullet list\r\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\r\n * browser execCommand API\r\n * @param editor The editor instance\r\n * @param listStyle (Optional) the style of the bullet list. If not defined, the style will be set to disc.\r\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\r\n */\r\nexport default function toggleBullet(\r\n editor: IEditor,\r\n listStyle?: BulletListType | CompatibleBulletListType,\r\n apiNameOverride?: string\r\n) {\r\n toggleListType(\r\n editor,\r\n ListType.Unordered,\r\n undefined /* startNumber */,\r\n false /* includeSiblingLists */,\r\n undefined /** orderedStyle */,\r\n listStyle,\r\n apiNameOverride\r\n );\r\n}\r\n","import blockWrap from '../utils/blockWrap';\r\nimport { IEditor, QueryScope } from 'roosterjs-editor-types';\r\nimport { unwrap, wrap } from 'roosterjs-editor-dom';\r\n\r\nconst PRE_TAG = 'pre';\r\nconst CODE_TAG = 'code';\r\nconst SELECTOR = `${PRE_TAG}>${CODE_TAG}`;\r\n\r\n/**\r\n * Toggle code block at selection, if selection already contains any code blocked elements,\r\n * the code block elements will be no longer be code blocked and other elements will take no affect\r\n * @param editor The editor instance\r\n * @param styler (Optional) The custom styler for setting the style for the code block element\r\n */\r\nexport default function toggleCodeBlock(\r\n editor: IEditor,\r\n styler?: (element: HTMLElement) => void\r\n): void {\r\n blockWrap(\r\n editor,\r\n nodes => {\r\n const code = wrap(nodes, CODE_TAG);\r\n const pre = wrap(code, PRE_TAG);\r\n styler?.(pre);\r\n },\r\n () =>\r\n editor.queryElements(SELECTOR, QueryScope.OnSelection, code => {\r\n if (!code.previousSibling && !code.nextSibling) {\r\n const parent = code.parentNode;\r\n unwrap(code);\r\n if (parent) {\r\n unwrap(parent);\r\n }\r\n }\r\n }).length == 0,\r\n 'toggleCodeBlock'\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle italic at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only italic text, the italic style will be removed\r\n * If selection contains only normal text, italic style will be added to the whole selected text\r\n * If selection contains both italic and normal text, italic style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleItalic(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Italic, 'toggleItalic');\r\n}\r\n","import toggleListType from '../utils/toggleListType';\r\nimport { IEditor, ListType, NumberingListType } from 'roosterjs-editor-types';\r\nimport type { CompatibleNumberingListType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Toggle numbering at selection\r\n * If selection contains numbering in deep level, toggle numbering will decrease the numbering level by one\r\n * If selection contains bullet list, toggle numbering will convert the bullet list into number list\r\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\r\n * realization of browser execCommand API\r\n * @param editor The editor instance\r\n * @param startNumber (Optional) Start number of the list\r\n * @param listStyle (Optional) The style of the numbering list. If not defined, the style will be set to decimal.\r\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\r\n */\r\nexport default function toggleNumbering(\r\n editor: IEditor,\r\n startNumber?: number,\r\n listStyle?: NumberingListType | CompatibleNumberingListType,\r\n apiNameOverride?: string\r\n) {\r\n toggleListType(\r\n editor,\r\n ListType.Ordered,\r\n startNumber,\r\n undefined /* includeSiblingLists */,\r\n listStyle,\r\n undefined /* unorderedStyle */,\r\n apiNameOverride\r\n );\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle strikethrough at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only strikethrough text, the strikethrough style will be removed\r\n * If selection contains only normal text, strikethrough style will be added to the whole selected text\r\n * If selection contains both strikethrough and normal text, strikethrough style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleStrikethrough(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.StrikeThrough, 'toggleStrikethrough');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle subscript at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only subscript text, the subscript style will be removed\r\n * If selection contains only normal text, subscript style will be added to the whole selected text\r\n * If selection contains both subscript and normal text, the subscript style will be removed from whole selected text\r\n * If selection contains any superscript text, the behavior is determined by corresponding realization of browser\r\n * execCommand API\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleSubscript(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Subscript, 'toggleSubscript');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle superscript at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only superscript text, the superscript style will be removed\r\n * If selection contains only normal text, superscript style will be added to the whole selected text\r\n * If selection contains both superscript and normal text, the superscript style will be removed from whole selected text\r\n * If selection contains any subscript text, the behavior is determined by corresponding realization of browser\r\n * execCommand API\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleSuperscript(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Superscript, 'toggleSuperscript');\r\n}\r\n","import execCommand from '../utils/execCommand';\r\nimport { DocumentCommand, IEditor } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Toggle underline at selection\r\n * If selection is collapsed, it will only affect the input after caret\r\n * If selection contains only underlined text, the underline style will be removed\r\n * If selection contains only normal text, underline style will be added to the whole selected text\r\n * If selection contains both underlined and normal text, the underline style will be added to the whole selected text\r\n * @param editor The editor instance\r\n */\r\nexport default function toggleUnderline(editor: IEditor) {\r\n execCommand(editor, DocumentCommand.Underline, 'toggleUnderline');\r\n}\r\n","export { default as changeFontSize, FONT_SIZES } from './format/changeFontSize';\r\nexport { default as clearBlockFormat } from './format/clearBlockFormat';\r\nexport { default as clearFormat } from './format/clearFormat';\r\nexport { default as createLink } from './format/createLink';\r\nexport { default as getFormatState, getElementBasedFormatState } from './format/getFormatState';\r\nexport { default as insertEntity } from './format/insertEntity';\r\nexport { default as insertImage } from './format/insertImage';\r\nexport { default as insertTable } from './table/insertTable';\r\nexport { default as editTable } from './table/editTable';\r\nexport { default as formatTable } from './table/formatTable';\r\nexport { default as removeLink } from './format/removeLink';\r\nexport { default as replaceWithNode } from './format/replaceWithNode';\r\nexport { default as rotateElement } from './format/rotateElement';\r\nexport { default as setAlignment } from './format/setAlignment';\r\nexport { default as setBackgroundColor } from './format/setBackgroundColor';\r\nexport { default as setTextColor } from './format/setTextColor';\r\nexport { default as setDirection } from './format/setDirection';\r\nexport { default as setFontName } from './format/setFontName';\r\nexport { default as setFontSize } from './format/setFontSize';\r\nexport { default as setImageAltText } from './format/setImageAltText';\r\nexport { default as setIndentation } from './format/setIndentation';\r\nexport { default as changeCapitalization } from './format/changeCapitalization';\r\nexport { default as toggleBold } from './format/toggleBold';\r\nexport { default as toggleBullet } from './format/toggleBullet';\r\nexport { default as toggleItalic } from './format/toggleItalic';\r\nexport { default as toggleNumbering } from './format/toggleNumbering';\r\nexport { default as setOrderedListNumbering } from './format/setOrderedListNumbering';\r\nexport { default as toggleBlockQuote } from './format/toggleBlockQuote';\r\nexport { default as toggleCodeBlock } from './format/toggleCodeBlock';\r\nexport { default as toggleStrikethrough } from './format/toggleStrikethrough';\r\nexport { default as toggleSubscript } from './format/toggleSubscript';\r\nexport { default as toggleSuperscript } from './format/toggleSuperscript';\r\nexport { default as toggleUnderline } from './format/toggleUnderline';\r\nexport { default as setHeadingLevel, toggleHeader } from './format/setHeadingLevel';\r\nexport { default as applyCellShading } from './table/applyCellShading';\r\n\r\nexport { default as toggleListType } from './utils/toggleListType';\r\nexport { default as blockFormat } from './utils/blockFormat';\r\nexport { default as commitListChains, experimentCommitListChains } from './utils/commitListChains';\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\nimport { IEditor, ModeIndependentColor } from 'roosterjs-editor-types';\nimport {\n getTableCellMetadata,\n safeInstanceOf,\n saveTableCellMetadata,\n setColor,\n} from 'roosterjs-editor-dom';\n\n/**\n * Set background color of cells.\n * @param editor The editor instance\n * @param color One of two options:\n **/\nexport default function applyCellShading(editor: IEditor, color: string | ModeIndependentColor) {\n editor.focus();\n formatUndoSnapshot(\n editor,\n () => {\n const regions = editor.getSelectedRegions();\n regions.forEach(region => {\n if (safeInstanceOf(region.rootNode, 'HTMLTableCellElement')) {\n setColor(\n region.rootNode,\n color,\n true /* isBackgroundColor */,\n editor.isDarkMode(),\n true /** shouldAdaptFontColor */,\n editor.getDarkColorHandler()\n );\n const meta = getTableCellMetadata(region.rootNode);\n saveTableCellMetadata(region.rootNode, {\n ...meta,\n bgColorOverride: true,\n });\n }\n });\n },\n 'applyCellShading'\n );\n}\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, PositionType, SelectionRangeTypes, TableOperation } from 'roosterjs-editor-types';\r\nimport { VTable } from 'roosterjs-editor-dom';\r\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Edit table with given operation. If there is no table at cursor then no op.\r\n * @param editor The editor instance\r\n * @param operation Table operation\r\n */\r\nexport default function editTable(\r\n editor: IEditor,\r\n operation: TableOperation | CompatibleTableOperation\r\n) {\r\n let td = editor.getElementAtCursor('TD,TH') as HTMLTableCellElement;\r\n if (td) {\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n let vtable = new VTable(td);\r\n\r\n saveTableSelection(editor, vtable);\r\n vtable.edit(operation);\r\n vtable.writeBack(false /** skipApplyFormat */, editor.getDarkColorHandler());\r\n editor.transformToDarkColor(vtable.table);\r\n\r\n editor.focus();\r\n if (isUndefined(vtable.row) || isUndefined(vtable.col)) {\r\n return;\r\n }\r\n let { newCol, newRow } = calculateCellToSelect(operation, vtable.row, vtable.col);\r\n const newTd = vtable.getCell(newRow, newCol).td;\r\n if (newTd) {\r\n editor.select(newTd, PositionType.Begin);\r\n }\r\n },\r\n 'editTable'\r\n );\r\n }\r\n}\r\n\r\nfunction isUndefined(n: number | undefined): n is undefined {\r\n return n == undefined;\r\n}\r\n\r\nfunction calculateCellToSelect(\r\n operation: TableOperation | CompatibleTableOperation,\r\n currentRow: number,\r\n currentCol: number\r\n) {\r\n let newRow = currentRow;\r\n let newCol = currentCol;\r\n switch (operation) {\r\n case TableOperation.InsertAbove:\r\n newCol = 0;\r\n break;\r\n case TableOperation.InsertBelow:\r\n newRow += 1;\r\n newCol = 0;\r\n break;\r\n case TableOperation.InsertLeft:\r\n newRow = 0;\r\n break;\r\n case TableOperation.InsertRight:\r\n newRow = 0;\r\n newCol += 1;\r\n break;\r\n }\r\n\r\n return {\r\n newRow,\r\n newCol,\r\n };\r\n}\r\n\r\nfunction saveTableSelection(editor: IEditor, vtable: VTable) {\r\n const selection = editor.getSelectionRangeEx();\r\n if (selection && selection.type === SelectionRangeTypes.TableSelection) {\r\n vtable.selection = selection.coordinates ?? null;\r\n }\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport { IEditor, TableFormat } from 'roosterjs-editor-types';\r\nimport { VTable } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Format table\r\n * @param editor The editor which contains the table to format\r\n * @param format A TableFormat object contains format information we want to apply to the table\r\n * @param table The table to format. This is optional. When not passed, the current table (if any) will be formatted\r\n */\r\nexport default function formatTable(\r\n editor: IEditor,\r\n format: TableFormat,\r\n table?: HTMLTableElement\r\n) {\r\n table = table || (editor.getElementAtCursor('TABLE') as HTMLTableElement);\r\n if (table) {\r\n formatUndoSnapshot(\r\n editor,\r\n (start, end) => {\r\n if (!table) {\r\n return;\r\n }\r\n\r\n let vtable = new VTable(table);\r\n vtable.applyFormat(format);\r\n vtable.writeBack(false /** skipApplyFormat */, editor.getDarkColorHandler());\r\n editor.transformToDarkColor(vtable.table);\r\n editor.focus();\r\n if (start && end) {\r\n editor.select(start, end);\r\n }\r\n },\r\n 'formatTable'\r\n );\r\n }\r\n}\r\n","import formatUndoSnapshot from '../utils/formatUndoSnapshot';\r\nimport setBackgroundColor from '../format/setBackgroundColor';\r\nimport { IEditor, PositionType, TableFormat } from 'roosterjs-editor-types';\r\nimport { Position, VTable } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * Insert table into editor at current selection\r\n * @param editor The editor instance\r\n * @param columns Number of columns in table, it also controls the default table cell width:\r\n * if columns <= 4, width = 120px; if columns <= 6, width = 100px; else width = 70px\r\n * @param rows Number of rows in table\r\n * @param format (Optional) The table format. If not passed, the default format will be applied:\r\n * background color: #FFF; border color: #ABABAB\r\n */\r\nexport default function insertTable(\r\n editor: IEditor,\r\n columns: number,\r\n rows: number,\r\n format?: TableFormat\r\n) {\r\n let document = editor.getDocument();\r\n let table = document.createElement('table') as HTMLTableElement;\r\n table.cellSpacing = '0';\r\n table.cellPadding = '1';\r\n for (let i = 0; i < rows; i++) {\r\n let tr = document.createElement('tr') as HTMLTableRowElement;\r\n table.appendChild(tr);\r\n for (let j = 0; j < columns; j++) {\r\n let td = document.createElement('td') as HTMLTableCellElement;\r\n tr.appendChild(td);\r\n td.appendChild(document.createElement('br'));\r\n td.style.width = getTableCellWidth(columns);\r\n }\r\n }\r\n\r\n editor.focus();\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n const element = editor.getElementAtCursor();\r\n if (element?.style.backgroundColor) {\r\n setBackgroundColor(editor, 'transparent');\r\n }\r\n let vtable = new VTable(table);\r\n // Assign default vertical align\r\n format = format || { verticalAlign: 'top' };\r\n vtable.applyFormat(format || {});\r\n vtable.writeBack();\r\n editor.insertNode(table);\r\n editor.runAsync(editor =>\r\n editor.select(new Position(table, PositionType.Begin).normalize())\r\n );\r\n },\r\n 'insertTable'\r\n );\r\n}\r\n\r\nfunction getTableCellWidth(columns: number): string {\r\n if (columns <= 4) {\r\n return '120px';\r\n } else if (columns <= 6) {\r\n return '100px';\r\n } else {\r\n return '70px';\r\n }\r\n}\r\n","import formatUndoSnapshot from './formatUndoSnapshot';\r\nimport { getTagOfNode } from 'roosterjs-editor-dom';\r\nimport {\r\n ChangeSource,\r\n IEditor,\r\n PluginEventType,\r\n PositionType,\r\n SelectionRangeTypes,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Apply inline style to current selection\r\n * @param editor The editor instance\r\n * @param callback The callback function to apply style\r\n */\r\nexport default function applyInlineStyle(\r\n editor: IEditor,\r\n callback: (element: HTMLElement, isInnerNode?: boolean) => any,\r\n apiName: string\r\n) {\r\n editor.focus();\r\n let selection = editor.getSelectionRangeEx();\r\n\r\n const safeCallback = (element: HTMLElement, isInnerNode?: boolean) =>\r\n element.isContentEditable && callback(element, isInnerNode);\r\n\r\n if (selection && selection.areAllCollapsed) {\r\n const range = selection.ranges[0];\r\n let node = range.startContainer;\r\n let isEmptySpan =\r\n getTagOfNode(node) == 'SPAN' &&\r\n (!node.firstChild ||\r\n (getTagOfNode(node.firstChild) == 'BR' && !node.firstChild.nextSibling));\r\n if (isEmptySpan) {\r\n editor.addUndoSnapshot();\r\n safeCallback(node as HTMLElement);\r\n } else {\r\n editor.triggerPluginEvent(PluginEventType.PendingFormatStateChanged, {\r\n formatState: {},\r\n // Here we use callback instead of safeCallback because we know it's contentEditable.\r\n // In addition, for elements that are not added to the DOM tree, isContentEditable always returns false on Safari.\r\n formatCallback: callback,\r\n });\r\n editor.triggerContentChangedEvent(ChangeSource.Format);\r\n }\r\n } else {\r\n // This is start and end node that get the style. The start and end needs to be recorded so that selection\r\n // can be re-applied post-applying style\r\n formatUndoSnapshot(\r\n editor,\r\n () => {\r\n let firstNode: Node | undefined;\r\n let lastNode: Node | undefined;\r\n selection.ranges.forEach(range => {\r\n let contentTraverser = editor.getSelectionTraverser(range);\r\n if (!contentTraverser) {\r\n return;\r\n }\r\n let inlineElement = contentTraverser && contentTraverser.currentInlineElement;\r\n while (inlineElement) {\r\n let nextInlineElement = contentTraverser.getNextInlineElement();\r\n inlineElement.applyStyle((element, isInnerNode) => {\r\n safeCallback(element, isInnerNode);\r\n firstNode = firstNode || element;\r\n lastNode = element;\r\n });\r\n inlineElement = nextInlineElement;\r\n }\r\n });\r\n\r\n if (firstNode && lastNode && selection.type == SelectionRangeTypes.Normal) {\r\n editor.select(firstNode, PositionType.Before, lastNode, PositionType.After);\r\n }\r\n },\r\n apiName\r\n );\r\n }\r\n}\r\n","import applyInlineStyle from '../utils/applyInlineStyle';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { safeInstanceOf, setListItemStyle } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Set the List Item Style when all inner inline element have the same style\n * @param editor The editor instance\n * @param styleName Name of the style to apply to the list item\n * @param formatCallback callback to apply the style to each element\n */\nexport default function applyListItemStyleWrap(\n editor: IEditor,\n styleName: string,\n formatCallback: (element: HTMLElement, isInnerNode?: boolean) => any,\n apiName: string\n) {\n const parentNodes: Node[] = [];\n applyInlineStyle(\n editor,\n (element, isInnerNode) => {\n formatCallback(element, isInnerNode);\n\n let parent = editor.getElementAtCursor('LI', element);\n if (parent && parentNodes.indexOf(parent) === -1) {\n parentNodes.push(parent);\n }\n },\n apiName\n );\n\n applyStyleToListItems(parentNodes, [styleName]);\n}\n\n/**\n * @internal\n * Checks if the parent element is a List Item, if it is, apply the style elements to the list item\n * @param parentNodes parentNodes to apply the style\n * @param styles styles to apply to the List Item Element\n */\nfunction applyStyleToListItems(parentNodes: Node[], styles: string[]) {\n parentNodes.forEach(node => {\n if (safeInstanceOf(node, 'HTMLLIElement')) {\n setListItemStyle(node, styles);\n }\n });\n}\n","import commitListChains from '../utils/commitListChains';\nimport formatUndoSnapshot from './formatUndoSnapshot';\nimport { IEditor, NodePosition, Region, SelectionRangeTypes } from 'roosterjs-editor-types';\nimport { VListChain } from 'roosterjs-editor-dom';\n\n/**\n * Split selection into regions, and perform a block-wise formatting action for each region.\n */\nexport default function blockFormat(\n editor: IEditor,\n callback: (\n region: Region,\n start: NodePosition | null,\n end: NodePosition | null,\n chains: VListChain[]\n ) => void,\n beforeRunCallback?: () => boolean,\n apiName?: string\n) {\n editor.focus();\n const selection = editor.getSelectionRangeEx();\n\n formatUndoSnapshot(\n editor,\n (start, end) => {\n if (!beforeRunCallback || beforeRunCallback()) {\n const regions = editor.getSelectedRegions();\n if (regions.length > 0) {\n const chains = VListChain.createListChains(regions, start?.node);\n regions.forEach(region => callback(region, start, end, chains));\n commitListChains(editor, chains);\n }\n }\n if (selection.type == SelectionRangeTypes.Normal && start && end) {\n editor.select(start, end);\n } else {\n editor.select(selection);\n }\n },\n apiName\n );\n}\n","import blockFormat from './blockFormat';\nimport { IEditor } from 'roosterjs-editor-types';\nimport {\n collapseNodesInRegion,\n getSelectedBlockElementsInRegion,\n getTagOfNode,\n isNodeInRegion,\n splitBalancedNodeRange,\n toArray,\n wrap,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Toggle a tag at selection, if selection already contains elements of such tag,\n * the elements will be untagged and other elements will take no effect\n * @param editor The editor instance\n * @param wrapFunction The wrap function\n * @param beforeRunCallback A callback function to run before looping all regions. If it returns false,\n * the loop for regions will be skipped\n */\nexport default function blockWrap(\n editor: IEditor,\n wrapFunction: (nodes: Node[]) => void,\n beforeRunCallback: () => boolean,\n apiName?: string\n): void {\n blockFormat(\n editor,\n region => {\n const blocks = getSelectedBlockElementsInRegion(region, true /*createBlockIfEmpty*/);\n let nodes = collapseNodesInRegion(region, blocks);\n if (nodes.length > 0) {\n if (nodes.length == 1) {\n const NodeTag = getTagOfNode(nodes[0]);\n if (NodeTag == 'BR') {\n nodes = [wrap(nodes[0])];\n } else if (NodeTag == 'LI' || NodeTag == 'TD') {\n nodes = toArray(nodes[0].childNodes);\n }\n }\n\n while (\n nodes[0] &&\n nodes[0].parentNode &&\n isNodeInRegion(region, nodes[0].parentNode) &&\n nodes.some(node => getTagOfNode(node) == 'LI')\n ) {\n const result = splitBalancedNodeRange(nodes);\n nodes = result ? [result] : [];\n }\n\n wrapFunction(nodes);\n }\n },\n beforeRunCallback,\n apiName\n );\n}\n","import { BlockElement, IEditor, NodeType } from 'roosterjs-editor-types';\r\nimport { getTagOfNode } from 'roosterjs-editor-dom';\r\n\r\n/**\r\n * @internal\r\n * Collapse all selected blocks, return single HTML elements for each block\r\n * @param editor The editor instance\r\n * @param forEachCallback A callback function to invoke for each of the collapsed element\r\n */\r\nexport default function collapseSelectedBlocks(\r\n editor: IEditor,\r\n forEachCallback: (element: HTMLElement) => any\r\n) {\r\n let traverser = editor.getSelectionTraverser();\r\n if (!traverser) {\r\n return;\r\n }\r\n let block = traverser.currentBlockElement;\r\n let blocks: BlockElement[] = [];\r\n while (block) {\r\n if (!isEmptyBlockUnderTR(block)) {\r\n blocks.push(block);\r\n }\r\n block = traverser.getNextBlockElement();\r\n }\r\n\r\n blocks.forEach(block => {\r\n let element = block.collapseToSingleElement();\r\n forEachCallback(element);\r\n });\r\n}\r\n\r\nfunction isEmptyBlockUnderTR(block: BlockElement): boolean {\r\n let startNode = block.getStartNode();\r\n\r\n return (\r\n startNode == block.getEndNode() &&\r\n startNode.nodeType == NodeType.Text &&\r\n ['TR', 'TABLE'].indexOf(getTagOfNode(startNode.parentNode)) >= 0\r\n );\r\n}\r\n","import { ExperimentalFeatures, IEditor } from 'roosterjs-editor-types';\nimport { Position, VListChain } from 'roosterjs-editor-dom';\n\n/**\n * Commit changes of all list changes when experiment features are allowed\n * @param editor The Editor object\n * @param chains List chains to commit\n */\nexport default function commitListChains(editor: IEditor, chains: VListChain[]) {\n if (chains?.length > 0) {\n const range = editor.getSelectionRange();\n const start = range && Position.getStart(range);\n const end = range && Position.getEnd(range);\n const shouldReuseAllAncestorListElements = editor.isFeatureEnabled(\n ExperimentalFeatures.ReuseAllAncestorListElements\n );\n const shouldDisableListChain = editor.isFeatureEnabled(\n ExperimentalFeatures.DisableListChain\n );\n\n chains.forEach(chain =>\n chain.commit(shouldReuseAllAncestorListElements, shouldDisableListChain)\n );\n\n if (start && end) {\n editor.select(start, end);\n }\n }\n}\n\n/**\n * @deprecated\n * Same with commitListChains, keep this export just for backward compatibility\n */\nexport const experimentCommitListChains = commitListChains;\n","import formatUndoSnapshot from './formatUndoSnapshot';\nimport { getObjectKeys, PendableFormatCommandMap, PendableFormatNames } from 'roosterjs-editor-dom';\nimport {\n DocumentCommand,\n IEditor,\n PluginEventType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport type { CompatibleDocumentCommand } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Execute a document command\n * @param editor The editor instance\n * @param command The command to execute\n * @param addUndoSnapshotWhenCollapsed Optional, set to true to always add undo snapshot even current selection is collapsed.\n * Default value is false.\n * @param doWorkaroundForList Optional, set to true to do workaround for list in order to keep current format.\n * Default value is false.\n */\nexport default function execCommand(\n editor: IEditor,\n command: DocumentCommand | CompatibleDocumentCommand,\n apiName?: string\n) {\n editor.focus();\n\n let formatter = () => editor.getDocument().execCommand(command, false, undefined);\n\n let selection = editor.getSelectionRangeEx();\n if (selection && selection.areAllCollapsed) {\n editor.addUndoSnapshot();\n const formatState = editor.getPendableFormatState(false /* forceGetStateFromDom */);\n formatter();\n const formatName = getObjectKeys(PendableFormatCommandMap).filter(\n x => PendableFormatCommandMap[x] == command\n )[0] as PendableFormatNames;\n\n if (formatName) {\n formatState[formatName] = !formatState[formatName];\n editor.triggerPluginEvent(PluginEventType.PendingFormatStateChanged, {\n formatState: formatState,\n });\n }\n } else {\n formatUndoSnapshot(\n editor,\n () => {\n const needToSwitchSelection = selection.type != SelectionRangeTypes.Normal;\n\n selection.ranges.forEach(range => {\n if (needToSwitchSelection) {\n editor.select(range);\n }\n formatter();\n });\n\n if (needToSwitchSelection) {\n editor.select(selection);\n }\n },\n apiName\n );\n }\n}\n","import { ChangeSource, IEditor, NodePosition } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Execute add undo snapshot for the Format APIs\n * @param editor The editor instance\n * @param command Optional, The callback function to perform formatting, returns a data object which will be used as the data field in ContentChangedEvent if changeSource is not null.\n * @param apiName Optional, name of the API that was is going to be executed.\n * Default value is false.\n */\nexport default function formatUndoSnapshot(\n editor: IEditor,\n callback?: (start: NodePosition | null, end: NodePosition | null) => any,\n apiName?: string\n) {\n editor.addUndoSnapshot(\n callback,\n ChangeSource.Format,\n undefined /* canUndoByBackspace */,\n apiName && apiName != ''\n ? {\n formatApiName: apiName,\n }\n : undefined\n );\n}\n","import { findClosestElementAncestor, getComputedStyle, safeInstanceOf } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * @param node start node to normalize\n * @param quotesHandled Optional parameter to prevent already modified quotes to be rechecked.\n * @returns\n */\nexport default function normalizeBlockquote(node: Node, quotesHandled?: Node[]): void {\n if (safeInstanceOf(node, 'HTMLElement')) {\n const alignment = node.style.textAlign;\n\n let quote = findClosestElementAncestor(node, undefined /* root */, 'blockquote');\n if (!quote) {\n return;\n }\n const isNodeRTL = isRTL(node);\n\n if (quotesHandled) {\n if (quotesHandled.indexOf(quote) > -1) {\n return;\n }\n quotesHandled.push(quote);\n }\n\n while (quote) {\n if (alignment == 'center') {\n if (isNodeRTL) {\n quote.style.removeProperty('marginInlineEnd');\n quote.style.marginInlineStart = 'auto';\n } else {\n quote.style.removeProperty('marginInlineStart');\n quote.style.marginInlineEnd = 'auto';\n }\n } else {\n quote.style.removeProperty('marginInlineEnd');\n quote.style.removeProperty('marginInlineStart');\n }\n\n quote = findClosestElementAncestor(\n quote.parentElement,\n undefined /* root */,\n 'blockquote'\n );\n }\n }\n}\n\nfunction isRTL(el: Element) {\n return getComputedStyle(el, 'direction') == 'rtl' || el.getAttribute('dir') == 'rtl';\n}\n","import blockFormat from '../utils/blockFormat';\nimport { createVListFromRegion, getBlockElementAtNode } from 'roosterjs-editor-dom';\nimport {\n BulletListType,\n ExperimentalFeatures,\n IEditor,\n ListType,\n NumberingListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleBulletListType,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Toggle List Type at selection\n * If ListType Provided is Ordered:\n * If selection contains numbering in deep level, toggle numbering will decrease the numbering level by one\n * If selection contains bullet list, toggle numbering will convert the bullet list into number list\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\n * realization of browser execCommand API\n * If ListType Provided is Unordered:\n * If selection contains bullet in deep level, toggle bullet will decrease the bullet level by one\n * If selection contains number list, toggle bullet will convert the number list into bullet list\n * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding\n * browser execCommand API\n * @param editor The editor instance\n * @param listType The list type to toggle\n * @param startNumber (Optional) Start number of the list\n * @param includeSiblingLists Sets wether the operation should include Sibling Lists, by default true\n * @param orderedStyle (Optional) the style of an ordered. If not defined, the style will be set to decimal.\n * @param unorderedStyle (Optional) the style of an unordered list. If not defined, the style will be set to disc.\n * @param apiNameOverride (Optional) Set a new api name, if empty the api name will be 'toggleListType'.\n */\nexport default function toggleListType(\n editor: IEditor,\n listType: ListType | CompatibleListType,\n startNumber: number = 0,\n includeSiblingLists: boolean = true,\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType,\n apiNameOverride?: string\n) {\n blockFormat(\n editor,\n (region, start, end, chains) => {\n const chain =\n startNumber > 0 && chains.filter(chain => chain.canAppendAtCursor(startNumber))[0];\n const block = getBlockElementAtNode(\n region.rootNode,\n start?.node ?? null\n )?.collapseToSingleElement();\n if (!block) {\n return;\n }\n const vList =\n chain && end && start?.equalTo(end)\n ? chain.createVListAtBlock(block, startNumber)\n : createVListFromRegion(\n region,\n startNumber === 1 ? false : includeSiblingLists\n );\n\n if (vList && start && end) {\n vList.changeListType(start, end, listType);\n if (editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)) {\n vList.setListStyleType(orderedStyle, unorderedStyle);\n }\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n }\n },\n undefined /* beforeRunCallback */,\n apiNameOverride || 'toggleListType'\n );\n}\n","import { EntityState } from 'roosterjs-editor-types';\nimport { getSelectionPath, Position } from 'roosterjs-editor-dom';\nimport {\n AddUndoSnapshot,\n ChangeSource,\n ContentChangedData,\n ContentChangedEvent,\n ContentMetadata,\n EditorCore,\n NodePosition,\n PluginEventType,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\nimport type { CompatibleChangeSource } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Call an editing callback with adding undo snapshots around, and trigger a ContentChanged event if change source is specified.\n * Undo snapshot will not be added if this call is nested inside another addUndoSnapshot() call.\n * @param core The EditorCore object\n * @param callback The editing callback, accepting current selection start and end position, returns an optional object used as the data field of ContentChangedEvent.\n * @param changeSource The ChangeSource string of ContentChangedEvent. @default ChangeSource.Format. Set to null to avoid triggering ContentChangedEvent\n * @param canUndoByBackspace True if this action can be undone when user press Backspace key (aka Auto Complete).\n * @param additionalData @optional parameter to provide additional data related to the ContentChanged Event.\n */\nexport const addUndoSnapshot: AddUndoSnapshot = (\n core: EditorCore,\n callback: ((start: NodePosition | null, end: NodePosition | null) => any) | null,\n changeSource: ChangeSource | CompatibleChangeSource | string | null,\n canUndoByBackspace: boolean,\n additionalData?: ContentChangedData\n) => {\n const undoState = core.undo;\n const isNested = undoState.isNested;\n let data: any;\n\n if (!isNested) {\n undoState.isNested = true;\n\n // When there is getEntityState, it means this is triggered by an entity change.\n // So if HTML content is not changed (hasNewContent is false), no need to add another snapshot before change\n if (core.undo.hasNewContent || !additionalData?.getEntityState || !callback) {\n addUndoSnapshotInternal(core, canUndoByBackspace, additionalData?.getEntityState?.());\n }\n }\n\n try {\n if (callback) {\n let range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n data = callback(\n range && Position.getStart(range).normalize(),\n range && Position.getEnd(range).normalize()\n );\n\n if (!isNested) {\n const entityStates = additionalData?.getEntityState?.();\n addUndoSnapshotInternal(core, false /*isAutoCompleteSnapshot*/, entityStates);\n }\n }\n } finally {\n if (!isNested) {\n undoState.isNested = false;\n }\n }\n\n if (callback && changeSource) {\n let event: ContentChangedEvent = {\n eventType: PluginEventType.ContentChanged,\n source: changeSource,\n data: data,\n additionalData,\n };\n core.api.triggerEvent(core, event, true /*broadcast*/);\n }\n\n if (canUndoByBackspace) {\n const range = core.api.getSelectionRange(core, false /*tryGetFromCache*/);\n\n if (range) {\n core.undo.hasNewContent = false;\n core.undo.autoCompletePosition = Position.getStart(range);\n }\n }\n};\n\nfunction addUndoSnapshotInternal(\n core: EditorCore,\n canUndoByBackspace: boolean,\n entityStates?: EntityState[]\n) {\n if (!core.lifecycle.shadowEditFragment) {\n const rangeEx = core.api.getSelectionRangeEx(core);\n const isDarkMode = core.lifecycle.isDarkMode;\n const metadata = createContentMetadata(core.contentDiv, rangeEx, isDarkMode) || null;\n\n core.undo.snapshotsService.addSnapshot(\n {\n html: core.contentDiv.innerHTML,\n metadata,\n knownColors: core.darkColorHandler?.getKnownColorsCopy() || [],\n entityStates,\n },\n canUndoByBackspace\n );\n core.undo.hasNewContent = false;\n }\n}\n\nfunction createContentMetadata(\n root: HTMLElement,\n rangeEx: SelectionRangeEx,\n isDarkMode: boolean\n): ContentMetadata | undefined {\n switch (rangeEx?.type) {\n case SelectionRangeTypes.TableSelection:\n return {\n type: SelectionRangeTypes.TableSelection,\n tableId: rangeEx.table.id,\n isDarkMode: !!isDarkMode,\n ...rangeEx.coordinates!,\n };\n case SelectionRangeTypes.ImageSelection:\n return {\n type: SelectionRangeTypes.ImageSelection,\n imageId: rangeEx.image.id,\n isDarkMode: !!isDarkMode,\n };\n case SelectionRangeTypes.Normal:\n return {\n type: SelectionRangeTypes.Normal,\n isDarkMode: !!isDarkMode,\n start: [],\n end: [],\n ...(getSelectionPath(root, rangeEx.ranges[0]) || {}),\n };\n }\n}\n","import { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n AttachDomEvent,\n DOMEventHandler,\n DOMEventHandlerObject,\n EditorCore,\n PluginDomEvent,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Attach a DOM event to the editor content DIV\n * @param core The EditorCore object\n * @param eventName The DOM event name\n * @param pluginEventType Optional event type. When specified, editor will trigger a plugin event with this name when the DOM event is triggered\n * @param beforeDispatch Optional callback function to be invoked when the DOM event is triggered before trigger plugin event\n */\nexport const attachDomEvent: AttachDomEvent = (\n core: EditorCore,\n eventMap: Record\n) => {\n const disposers = getObjectKeys(eventMap || {}).map(key => {\n const { pluginEventType, beforeDispatch } = extractHandler(eventMap[key]);\n const eventName = key as keyof HTMLElementEventMap;\n let onEvent = (event: HTMLElementEventMap[typeof eventName]) => {\n if (beforeDispatch) {\n beforeDispatch(event);\n }\n if (pluginEventType != null) {\n core.api.triggerEvent(\n core,\n {\n eventType: pluginEventType,\n rawEvent: event,\n },\n false /*broadcast*/\n );\n }\n };\n\n core.contentDiv.addEventListener(eventName, onEvent);\n\n return () => {\n core.contentDiv.removeEventListener(eventName, onEvent);\n };\n });\n return () => disposers.forEach(disposers => disposers());\n};\n\nfunction extractHandler(handlerObj: DOMEventHandler): DOMEventHandlerObject {\n let result: DOMEventHandlerObject = {\n pluginEventType: null,\n beforeDispatch: null,\n };\n\n if (typeof handlerObj === 'number') {\n result.pluginEventType = handlerObj;\n } else if (typeof handlerObj === 'function') {\n result.beforeDispatch = handlerObj;\n } else if (typeof handlerObj === 'object') {\n result = handlerObj;\n }\n return result;\n}\n","import { addUndoSnapshot } from './addUndoSnapshot';\nimport { attachDomEvent } from './attachDomEvent';\nimport { CoreApiMap } from 'roosterjs-editor-types';\nimport { createPasteFragment } from './createPasteFragment';\nimport { ensureTypeInContainer } from './ensureTypeInContainer';\nimport { focus } from './focus';\nimport { getContent } from './getContent';\nimport { getPendableFormatState } from './getPendableFormatState';\nimport { getSelectionRange } from './getSelectionRange';\nimport { getSelectionRangeEx } from './getSelectionRangeEx';\nimport { getStyleBasedFormatState } from './getStyleBasedFormatState';\nimport { hasFocus } from './hasFocus';\nimport { insertNode } from './insertNode';\nimport { restoreUndoSnapshot } from './restoreUndoSnapshot';\nimport { select } from './select';\nimport { selectImage } from './selectImage';\nimport { selectRange } from './selectRange';\nimport { selectTable } from './selectTable';\nimport { setContent } from './setContent';\nimport { switchShadowEdit } from './switchShadowEdit';\nimport { transformColor } from './transformColor';\nimport { triggerEvent } from './triggerEvent';\n\n/**\n * @internal\n */\nexport const coreApiMap: CoreApiMap = {\n attachDomEvent,\n addUndoSnapshot,\n createPasteFragment,\n ensureTypeInContainer,\n focus,\n getContent,\n getSelectionRange,\n getSelectionRangeEx,\n getStyleBasedFormatState,\n getPendableFormatState,\n hasFocus,\n insertNode,\n restoreUndoSnapshot,\n select,\n selectRange,\n setContent,\n switchShadowEdit,\n transformColor,\n triggerEvent,\n selectTable,\n selectImage,\n};\n","import {\n applyFormat,\n applyTextStyle,\n createDefaultHtmlSanitizerOptions,\n getPasteType,\n handleImagePaste,\n handleTextPaste,\n moveChildNodes,\n retrieveMetadataFromClipboard,\n sanitizePasteContent,\n} from 'roosterjs-editor-dom';\nimport {\n BeforePasteEvent,\n ClipboardData,\n CreatePasteFragment,\n EditorCore,\n PluginEventType,\n NodePosition,\n PasteType,\n DefaultFormat,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Create a DocumentFragment for paste from a ClipboardData\n * @param core The EditorCore object.\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param position The position to paste to\n * @param pasteAsText True to force use plain text as the content to paste, false to choose HTML or Image if any\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format\n * @param pasteAsImage True if the image should be pasted as image\n */\nexport const createPasteFragment: CreatePasteFragment = (\n core: EditorCore,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean = false\n) => {\n if (!clipboardData) {\n return null;\n }\n\n const pasteType = getPasteType(pasteAsText, applyCurrentStyle, pasteAsImage);\n\n // Step 1: Prepare BeforePasteEvent object\n const event = createBeforePasteEvent(core, clipboardData, pasteType);\n return createFragmentFromClipboardData(\n core,\n clipboardData,\n position,\n pasteAsText,\n applyCurrentStyle,\n pasteAsImage,\n event\n );\n};\n\nfunction createBeforePasteEvent(\n core: EditorCore,\n clipboardData: ClipboardData,\n pasteType: PasteType\n): BeforePasteEvent {\n const options = createDefaultHtmlSanitizerOptions();\n\n // Remove \"caret-color\" style generated by Safari to make sure caret shows in right color after paste\n options.cssStyleCallbacks['caret-color'] = () => false;\n\n return {\n eventType: PluginEventType.BeforePaste,\n clipboardData,\n fragment: core.contentDiv.ownerDocument.createDocumentFragment(),\n sanitizingOption: options,\n htmlBefore: '',\n htmlAfter: '',\n htmlAttributes: {},\n pasteType: pasteType,\n };\n}\n\n/**\n * Create a DocumentFragment for paste from a ClipboardData\n * @param core The EditorCore object.\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param position The position to paste to\n * @param pasteAsText True to force use plain text as the content to paste, false to choose HTML or Image if any\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * @param pasteAsImage Whether to force paste as image\n * @param event Event to trigger.\n * false to keep original format\n */\nfunction createFragmentFromClipboardData(\n core: EditorCore,\n clipboardData: ClipboardData,\n position: NodePosition | null,\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean,\n event: BeforePasteEvent\n) {\n const { fragment } = event;\n const { rawHtml, text, imageDataUri } = clipboardData;\n let doc: Document | undefined = rawHtml\n ? new DOMParser().parseFromString(core.trustedHTMLHandler(rawHtml), 'text/html')\n : undefined;\n\n // Step 2: Retrieve Metadata from Html and the Html that was copied.\n retrieveMetadataFromClipboard(doc, event, core.trustedHTMLHandler);\n\n // Step 3: Fill the BeforePasteEvent object, especially the fragment for paste\n if ((pasteAsImage && imageDataUri) || (!pasteAsText && !text && imageDataUri)) {\n // Paste image\n handleImagePaste(imageDataUri, fragment);\n } else if (!pasteAsText && rawHtml && doc ? doc.body : false) {\n moveChildNodes(fragment, doc?.body);\n\n if (applyCurrentStyle && position) {\n const format = getCurrentFormat(core, position.node);\n applyTextStyle(fragment, node => applyFormat(node, format));\n }\n } else if (text) {\n // Paste text\n handleTextPaste(text, position, fragment);\n }\n\n // Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste, when the type of paste is different than Plain Text\n if (event.pasteType !== PasteType.AsPlainText) {\n core.api.triggerEvent(core, event, true /*broadcast*/);\n }\n\n // Step 5. Sanitize the fragment before paste to make sure the content is safe\n sanitizePasteContent(event, position);\n\n return fragment;\n}\n\nfunction getCurrentFormat(core: EditorCore, node: Node): DefaultFormat {\n const pendableFormat = core.api.getPendableFormatState(core, true /** forceGetStateFromDOM*/);\n const styleBasedFormat = core.api.getStyleBasedFormatState(core, node);\n return {\n fontFamily: styleBasedFormat.fontName,\n fontSize: styleBasedFormat.fontSize,\n textColor: styleBasedFormat.textColor,\n backgroundColor: styleBasedFormat.backgroundColor,\n textColors: styleBasedFormat.textColors,\n backgroundColors: styleBasedFormat.backgroundColors,\n bold: pendableFormat.isBold,\n italic: pendableFormat.isItalic,\n underline: pendableFormat.isUnderline,\n };\n}\n","import {\n ContentPosition,\n EditorCore,\n EnsureTypeInContainer,\n KnownCreateElementDataIndex,\n NodePosition,\n PositionType,\n} from 'roosterjs-editor-types';\nimport {\n applyFormat,\n createElement,\n createRange,\n findClosestElementAncestor,\n getBlockElementAtNode,\n isNodeEmpty,\n Position,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * When typing goes directly under content div, many things can go wrong\n * We fix it by wrapping it with a div and reposition cursor within the div\n */\nexport const ensureTypeInContainer: EnsureTypeInContainer = (\n core: EditorCore,\n position: NodePosition,\n keyboardEvent?: KeyboardEvent\n) => {\n const table = findClosestElementAncestor(position.node, core.contentDiv, 'table');\n let td: HTMLElement | null;\n\n if (table && (td = table.querySelector('td,th'))) {\n position = new Position(td, PositionType.Begin);\n }\n position = position.normalize();\n\n const block = getBlockElementAtNode(core.contentDiv, position.node);\n let formatNode: HTMLElement | null;\n\n if (block) {\n formatNode = block.collapseToSingleElement();\n if (isNodeEmpty(formatNode, false /* trimContent */, true /* shouldCountBrAsVisible */)) {\n const brEl = formatNode.ownerDocument.createElement('br');\n formatNode.append(brEl);\n }\n // if the block is empty, apply default format\n // Otherwise, leave it as it is as we don't want to change the style for existing data\n // unless the block was just created by the keyboard event (e.g. ctrl+a & start typing)\n const shouldSetNodeStyles =\n isNodeEmpty(formatNode) ||\n (keyboardEvent && wasNodeJustCreatedByKeyboardEvent(keyboardEvent, formatNode));\n formatNode = formatNode && shouldSetNodeStyles ? formatNode : null;\n } else {\n // Only reason we don't get the selection block is that we have an empty content div\n // which can happen when users removes everything (i.e. select all and DEL, or backspace from very end to begin)\n // The fix is to add a DIV wrapping, apply default format and move cursor over\n formatNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n core.contentDiv.ownerDocument\n ) as HTMLElement;\n core.api.insertNode(core, formatNode, {\n position: ContentPosition.End,\n updateCursor: false,\n replaceSelection: false,\n insertOnNewLine: false,\n });\n\n // element points to a wrapping node we added \"

                            \". We should move the selection left to
                            \n position = new Position(formatNode, PositionType.Begin);\n }\n\n if (formatNode && core.lifecycle.defaultFormat) {\n applyFormat(\n formatNode,\n core.lifecycle.defaultFormat,\n core.lifecycle.isDarkMode,\n core.darkColorHandler\n );\n }\n\n // If this is triggered by a keyboard event, let's select the new position\n if (keyboardEvent) {\n core.api.selectRange(core, createRange(new Position(position)));\n }\n};\n\nfunction wasNodeJustCreatedByKeyboardEvent(event: KeyboardEvent, formatNode: HTMLElement) {\n return (\n safeInstanceOf(event.target, 'Node') &&\n event.target.contains(formatNode) &&\n event.key === formatNode.innerText\n );\n}\n","import { createRange, getFirstLeafNode } from 'roosterjs-editor-dom';\nimport { EditorCore, Focus, PositionType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Focus to editor. If there is a cached selection range, use it as current selection\n * @param core The EditorCore object\n */\nexport const focus: Focus = (core: EditorCore) => {\n if (!core.lifecycle.shadowEditFragment) {\n if (\n !core.api.hasFocus(core) ||\n !core.api.getSelectionRange(core, false /*tryGetFromCache*/)\n ) {\n // Focus (document.activeElement indicates) and selection are mostly in sync, but could be out of sync in some extreme cases.\n // i.e. if you programmatically change window selection to point to a non-focusable DOM element (i.e. tabindex=-1 etc.).\n // On Chrome/Firefox, it does not change document.activeElement. On Edge/IE, it change document.activeElement to be body\n // Although on Chrome/Firefox, document.activeElement points to editor, you cannot really type which we don't want (no cursor).\n // So here we always do a live selection pull on DOM and make it point in Editor. The pitfall is, the cursor could be reset\n // to very begin to of editor since we don't really have last saved selection (created on blur which does not fire in this case).\n // It should be better than the case you cannot type\n if (\n !core.domEvent.selectionRange ||\n !core.api.selectRange(core, core.domEvent.selectionRange, true /*skipSameRange*/)\n ) {\n let node = getFirstLeafNode(core.contentDiv) || core.contentDiv;\n core.api.selectRange(\n core,\n createRange(node, PositionType.Begin),\n true /*skipSameRange*/\n );\n }\n }\n\n // remember to clear cached selection range\n core.domEvent.selectionRange = null;\n\n // This is more a fallback to ensure editor gets focus if it didn't manage to move focus to editor\n if (!core.api.hasFocus(core)) {\n core.contentDiv.focus();\n }\n }\n};\n","import {\n ColorTransformDirection,\n EditorCore,\n GetContent,\n GetContentMode,\n PluginEventType,\n} from 'roosterjs-editor-types';\nimport {\n createRange,\n getHtmlWithSelectionPath,\n getSelectionPath,\n getTextContent,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport type { CompatibleGetContentMode } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Get current editor content as HTML string\n * @param core The EditorCore object\n * @param mode specify what kind of HTML content to retrieve\n * @returns HTML string representing current editor content\n */\nexport const getContent: GetContent = (\n core: EditorCore,\n mode: GetContentMode | CompatibleGetContentMode\n): string => {\n let content: string | null = '';\n const triggerExtractContentEvent = mode == GetContentMode.CleanHTML;\n const includeSelectionMarker = mode == GetContentMode.RawHTMLWithSelection;\n\n // When there is fragment for shadow edit, always use the cached fragment as document since HTML node in editor\n // has been changed by uncommitted shadow edit which should be ignored.\n const root = core.lifecycle.shadowEditFragment || core.contentDiv;\n\n if (mode == GetContentMode.PlainTextFast) {\n content = root.textContent;\n } else if (mode == GetContentMode.PlainText) {\n content = getTextContent(root);\n } else {\n const clonedRoot = cloneNode(root);\n clonedRoot.normalize();\n\n const originalRange = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n const path = !includeSelectionMarker\n ? null\n : core.lifecycle.shadowEditFragment\n ? core.lifecycle.shadowEditSelectionPath\n : originalRange\n ? getSelectionPath(core.contentDiv, originalRange)\n : null;\n const range = path && createRange(clonedRoot, path.start, path.end);\n\n core.api.transformColor(\n core,\n clonedRoot,\n false /*includeSelf*/,\n null /*callback*/,\n ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n core.lifecycle.isDarkMode\n );\n\n if (triggerExtractContentEvent) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.ExtractContentWithDom,\n clonedRoot,\n },\n true /*broadcast*/\n );\n\n content = clonedRoot.innerHTML;\n } else if (range) {\n // range is not null, which means we want to include a selection path in the content\n content = getHtmlWithSelectionPath(clonedRoot, range);\n } else {\n content = clonedRoot.innerHTML;\n }\n }\n\n return content ?? '';\n};\n\nfunction cloneNode(node: HTMLElement | DocumentFragment): HTMLElement {\n let clonedNode: HTMLElement;\n if (safeInstanceOf(node, 'DocumentFragment')) {\n clonedNode = node.ownerDocument.createElement('div');\n clonedNode.appendChild(node.cloneNode(true /*deep*/));\n } else {\n clonedNode = node.cloneNode(true /*deep*/) as HTMLElement;\n }\n\n return clonedNode;\n}\n","import {\n contains,\n getObjectKeys,\n getTagOfNode,\n PendableFormatNames,\n Position,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n GetPendableFormatState,\n NodePosition,\n NodeType,\n PendableFormatState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * @param core The EditorCore object\n * @param forceGetStateFromDOM If set to true, will force get the format state from DOM tree.\n * @returns The cached format state if it exists. If the cached position do not exist, search for pendable elements in the DOM tree and return the pendable format state.\n */\nexport const getPendableFormatState: GetPendableFormatState = (\n core: EditorCore,\n forceGetStateFromDOM: boolean\n): PendableFormatState => {\n const range = core.api.getSelectionRange(core, true /* tryGetFromCache*/);\n const cachedPendableFormatState = core.pendingFormatState.pendableFormatState;\n const cachedPosition = core.pendingFormatState.pendableFormatPosition?.normalize();\n const currentPosition = range && Position.getStart(range).normalize();\n const isSamePosition =\n currentPosition &&\n cachedPosition &&\n range.collapsed &&\n currentPosition.equalTo(cachedPosition);\n\n if (range && cachedPendableFormatState && isSamePosition && !forceGetStateFromDOM) {\n return cachedPendableFormatState;\n } else {\n return currentPosition ? queryCommandStateFromDOM(core, currentPosition) : {};\n }\n};\n\nconst PendableStyleCheckers: Record<\n PendableFormatNames,\n (tagName: string, style: CSSStyleDeclaration) => boolean\n> = {\n isBold: (tag, style) =>\n tag == 'B' ||\n tag == 'STRONG' ||\n tag == 'H1' ||\n tag == 'H2' ||\n tag == 'H3' ||\n tag == 'H4' ||\n tag == 'H5' ||\n tag == 'H6' ||\n parseInt(style.fontWeight) >= 700 ||\n ['bold', 'bolder'].indexOf(style.fontWeight) >= 0,\n isUnderline: (tag, style) => tag == 'U' || style.textDecoration.indexOf('underline') >= 0,\n isItalic: (tag, style) => tag == 'I' || tag == 'EM' || style.fontStyle === 'italic',\n isSubscript: (tag, style) => tag == 'SUB' || style.verticalAlign === 'sub',\n isSuperscript: (tag, style) => tag == 'SUP' || style.verticalAlign === 'super',\n isStrikeThrough: (tag, style) =>\n tag == 'S' || tag == 'STRIKE' || style.textDecoration.indexOf('line-through') >= 0,\n};\n\n/**\n * CssFalsyCheckers checks for non pendable format that might overlay a pendable format, then it can prevent getPendableFormatState return falsy pendable format states.\n */\n\nconst CssFalsyCheckers: Record boolean> = {\n isBold: style =>\n (style.fontWeight !== '' && parseInt(style.fontWeight) < 700) ||\n style.fontWeight === 'normal',\n isUnderline: style =>\n style.textDecoration !== '' && style.textDecoration.indexOf('underline') < 0,\n isItalic: style => style.fontStyle !== '' && style.fontStyle !== 'italic',\n isSubscript: style => style.verticalAlign !== '' && style.verticalAlign !== 'sub',\n isSuperscript: style => style.verticalAlign !== '' && style.verticalAlign !== 'super',\n isStrikeThrough: style =>\n style.textDecoration !== '' && style.textDecoration.indexOf('line-through') < 0,\n};\n\nfunction queryCommandStateFromDOM(\n core: EditorCore,\n currentPosition: NodePosition\n): PendableFormatState {\n let node: Node | null = currentPosition.node;\n let formatState: PendableFormatState = {};\n let pendableKeys: PendableFormatNames[] = [];\n while (node && contains(core.contentDiv, node)) {\n const tag = getTagOfNode(node);\n const style = node.nodeType == NodeType.Element && (node as HTMLElement).style;\n if (tag && style) {\n getObjectKeys(PendableStyleCheckers).forEach(key => {\n if (!(pendableKeys.indexOf(key) >= 0)) {\n formatState[key] = formatState[key] || PendableStyleCheckers[key](tag, style);\n if (CssFalsyCheckers[key](style)) {\n pendableKeys.push(key);\n }\n }\n });\n }\n node = node.parentNode;\n }\n return formatState;\n}\n","import { contains, createRange } from 'roosterjs-editor-dom';\nimport { EditorCore, GetSelectionRange } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get current or cached selection range\n * @param core The EditorCore object\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now\n * @returns A Range object of the selection range\n */\nexport const getSelectionRange: GetSelectionRange = (\n core: EditorCore,\n tryGetFromCache: boolean\n) => {\n let result: Range | null = null;\n\n if (core.lifecycle.shadowEditFragment) {\n result =\n core.lifecycle.shadowEditSelectionPath &&\n createRange(\n core.contentDiv,\n core.lifecycle.shadowEditSelectionPath.start,\n core.lifecycle.shadowEditSelectionPath.end\n );\n\n return result;\n } else {\n if (!tryGetFromCache || core.api.hasFocus(core)) {\n let selection = core.contentDiv.ownerDocument.defaultView?.getSelection();\n if (selection && selection.rangeCount > 0) {\n let range = selection.getRangeAt(0);\n if (contains(core.contentDiv, range)) {\n result = range;\n }\n }\n }\n\n if (!result && tryGetFromCache) {\n result = core.domEvent.selectionRange;\n }\n\n return result;\n }\n};\n","import { contains, createRange, findClosestElementAncestor } from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n GetSelectionRangeEx,\n SelectionRangeEx,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Get current or cached selection range\n * @param core The EditorCore object\n * @returns A Range object of the selection range\n */\nexport const getSelectionRangeEx: GetSelectionRangeEx = (core: EditorCore) => {\n let result: SelectionRangeEx | null = null;\n if (core.lifecycle.shadowEditFragment) {\n const {\n shadowEditTableSelectionPath,\n shadowEditSelectionPath,\n shadowEditImageSelectionPath,\n } = core.lifecycle;\n\n if ((shadowEditTableSelectionPath?.length || 0) > 0) {\n const ranges = core.lifecycle.shadowEditTableSelectionPath!.map(path =>\n createRange(core.contentDiv, path.start, path.end)\n );\n\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n table: findClosestElementAncestor(\n ranges[0].startContainer,\n core.contentDiv,\n 'table'\n ) as HTMLTableElement,\n coordinates: undefined,\n };\n } else if ((shadowEditImageSelectionPath?.length || 0) > 0) {\n const ranges = core.lifecycle.shadowEditImageSelectionPath!.map(path =>\n createRange(core.contentDiv, path.start, path.end)\n );\n return {\n type: SelectionRangeTypes.ImageSelection,\n ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n image: findClosestElementAncestor(\n ranges[0].startContainer,\n core.contentDiv,\n 'img'\n ) as HTMLImageElement,\n imageId: undefined,\n };\n } else {\n const shadowRange =\n shadowEditSelectionPath &&\n createRange(\n core.contentDiv,\n shadowEditSelectionPath.start,\n shadowEditSelectionPath.end\n );\n\n return createNormalSelectionEx(shadowRange ? [shadowRange] : []);\n }\n } else {\n if (core.api.hasFocus(core)) {\n if (core.domEvent.tableSelectionRange) {\n return core.domEvent.tableSelectionRange;\n }\n\n if (core.domEvent.imageSelectionRange) {\n return core.domEvent.imageSelectionRange;\n }\n\n let selection = core.contentDiv.ownerDocument.defaultView?.getSelection();\n if (!result && selection && selection.rangeCount > 0) {\n let range = selection.getRangeAt(0);\n if (contains(core.contentDiv, range)) {\n return createNormalSelectionEx([range]);\n }\n }\n }\n\n return (\n core.domEvent.tableSelectionRange ??\n core.domEvent.imageSelectionRange ??\n createNormalSelectionEx(\n core.domEvent.selectionRange ? [core.domEvent.selectionRange] : []\n )\n );\n }\n};\n\nfunction createNormalSelectionEx(ranges: Range[]): SelectionRangeEx {\n return {\n type: SelectionRangeTypes.Normal,\n ranges: ranges,\n areAllCollapsed: checkAllCollapsed(ranges),\n };\n}\n\nfunction checkAllCollapsed(ranges: Range[]): boolean {\n return ranges.filter(range => range?.collapsed).length == ranges.length;\n}\n","import { contains, getComputedStyles } from 'roosterjs-editor-dom';\r\nimport { EditorCore, GetStyleBasedFormatState, NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get style based format state from current selection, including font name/size and colors\r\n * @param core The EditorCore objects\r\n * @param node The node to get style from\r\n */\r\nexport const getStyleBasedFormatState: GetStyleBasedFormatState = (\r\n core: EditorCore,\r\n node: Node | null\r\n) => {\r\n if (!node) {\r\n return {};\r\n }\r\n\r\n let override: string[] = [];\r\n const pendableFormatSpan = core.pendingFormatState.pendableFormatSpan;\r\n\r\n if (pendableFormatSpan) {\r\n override = [\r\n pendableFormatSpan.style.fontFamily,\r\n pendableFormatSpan.style.fontSize,\r\n pendableFormatSpan.style.color,\r\n pendableFormatSpan.style.backgroundColor,\r\n ];\r\n }\r\n\r\n const styles = node\r\n ? getComputedStyles(node, [\r\n 'font-family',\r\n 'font-size',\r\n 'color',\r\n 'background-color',\r\n 'line-height',\r\n 'margin-top',\r\n 'margin-bottom',\r\n 'text-align',\r\n 'direction',\r\n ])\r\n : [];\r\n const { contentDiv, darkColorHandler } = core;\r\n\r\n let styleTextColor: string | undefined;\r\n let styleBackColor: string | undefined;\r\n\r\n while (\r\n node &&\r\n contains(contentDiv, node, true /*treatSameNodeAsContain*/) &&\r\n !(styleTextColor && styleBackColor)\r\n ) {\r\n if (node.nodeType == NodeType.Element) {\r\n const element = node as HTMLElement;\r\n\r\n styleTextColor = styleTextColor || element.style.getPropertyValue('color');\r\n styleBackColor = styleBackColor || element.style.getPropertyValue('background-color');\r\n }\r\n node = node.parentNode;\r\n }\r\n\r\n if (!core.lifecycle.isDarkMode && node == core.contentDiv) {\r\n styleTextColor = styleTextColor || styles[2];\r\n styleBackColor = styleBackColor || styles[3];\r\n }\r\n\r\n const textColor = darkColorHandler.parseColorValue(override[2] || styleTextColor);\r\n const backColor = darkColorHandler.parseColorValue(override[3] || styleBackColor);\r\n\r\n return {\r\n fontName: override[0] || styles[0],\r\n fontSize: override[1] || styles[1],\r\n textColor: textColor.lightModeColor,\r\n backgroundColor: backColor.lightModeColor,\r\n textColors: textColor.darkModeColor\r\n ? {\r\n lightModeColor: textColor.lightModeColor,\r\n darkModeColor: textColor.darkModeColor,\r\n }\r\n : undefined,\r\n backgroundColors: backColor.darkModeColor\r\n ? {\r\n lightModeColor: backColor.lightModeColor,\r\n darkModeColor: backColor.darkModeColor,\r\n }\r\n : undefined,\r\n lineHeight: styles[4],\r\n marginTop: styles[5],\r\n marginBottom: styles[6],\r\n textAlign: styles[7],\r\n direction: styles[8],\r\n };\r\n};\r\n","import { contains } from 'roosterjs-editor-dom';\nimport { EditorCore, HasFocus } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Check if the editor has focus now\n * @param core The EditorCore object\n * @returns True if the editor has focus, otherwise false\n */\nexport const hasFocus: HasFocus = (core: EditorCore) => {\n let activeElement = core.contentDiv.ownerDocument.activeElement;\n return !!(\n activeElement && contains(core.contentDiv, activeElement, true /*treatSameNodeAsContain*/)\n );\n};\n","import {\n BlockElement,\n ContentPosition,\n ColorTransformDirection,\n EditorCore,\n InsertNode,\n InsertOption,\n NodeType,\n PositionType,\n NodePosition,\n RegionType,\n} from 'roosterjs-editor-types';\nimport {\n createRange,\n getBlockElementAtNode,\n getFirstLastBlockElement,\n isBlockElement,\n isVoidHtmlElement,\n Position,\n safeInstanceOf,\n toArray,\n wrap,\n adjustInsertPosition,\n getRegionsFromRange,\n splitTextNode,\n splitParentNode,\n} from 'roosterjs-editor-dom';\n\nfunction getInitialRange(\n core: EditorCore,\n option: InsertOption\n): { range: Range | null; rangeToRestore: Range | null } {\n // Selection start replaces based on the current selection.\n // Range inserts based on a provided range.\n // Both have the potential to use the current selection to restore cursor position\n // So in both cases we need to store the selection state.\n let range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n let rangeToRestore = null;\n if (option.position == ContentPosition.Range) {\n rangeToRestore = range;\n range = option.range;\n } else if (range) {\n rangeToRestore = range.cloneRange();\n }\n\n return { range, rangeToRestore };\n}\n\n/**\n * @internal\n * Insert a DOM node into editor content\n * @param core The EditorCore object. No op if null.\n * @param option An insert option object to specify how to insert the node\n */\nexport const insertNode: InsertNode = (\n core: EditorCore,\n node: Node,\n option: InsertOption | null\n) => {\n option = option || {\n position: ContentPosition.SelectionStart,\n insertOnNewLine: false,\n updateCursor: true,\n replaceSelection: true,\n insertToRegionRoot: false,\n };\n let contentDiv = core.contentDiv;\n\n if (option.updateCursor) {\n core.api.focus(core);\n }\n\n if (option.position == ContentPosition.Outside) {\n contentDiv.parentNode?.insertBefore(node, contentDiv.nextSibling);\n return true;\n }\n\n core.api.transformColor(\n core,\n node,\n true /*includeSelf*/,\n () => {\n if (!option) {\n return;\n }\n switch (option.position) {\n case ContentPosition.Begin:\n case ContentPosition.End: {\n let isBegin = option.position == ContentPosition.Begin;\n let block = getFirstLastBlockElement(contentDiv, isBegin);\n let insertedNode: Node | Node[] | undefined;\n if (block) {\n let refNode = isBegin ? block.getStartNode() : block.getEndNode();\n if (\n option.insertOnNewLine ||\n refNode.nodeType == NodeType.Text ||\n isVoidHtmlElement(refNode)\n ) {\n // For insert on new line, or refNode is text or void html element (HR, BR etc.)\n // which cannot have children, i.e.
                            hello
                            world
                            . 'hello', 'world' are the\n // first and last node. Insert before 'hello' or after 'world', but still inside DIV\n if (safeInstanceOf(node, 'DocumentFragment')) {\n // if the node to be inserted is DocumentFragment, use its childNodes as insertedNode\n // because insertBefore() returns an empty DocumentFragment\n insertedNode = toArray(node.childNodes);\n refNode.parentNode?.insertBefore(\n node,\n isBegin ? refNode : refNode.nextSibling\n );\n } else {\n insertedNode = refNode.parentNode?.insertBefore(\n node,\n isBegin ? refNode : refNode.nextSibling\n );\n }\n } else {\n // if the refNode can have child, use appendChild (which is like to insert as first/last child)\n // i.e.
                            hello
                            , the content will be inserted before/after hello\n insertedNode = refNode.insertBefore(\n node,\n isBegin ? refNode.firstChild : null\n );\n }\n } else {\n // No first block, this can happen when editor is empty. Use appendChild to insert the content in contentDiv\n insertedNode = contentDiv.appendChild(node);\n }\n\n // Final check to see if the inserted node is a block. If not block and the ask is to insert on new line,\n // add a DIV wrapping\n if (insertedNode && option.insertOnNewLine) {\n const nodes = Array.isArray(insertedNode) ? insertedNode : [insertedNode];\n if (!isBlockElement(nodes[0]) || !isBlockElement(nodes[nodes.length - 1])) {\n wrap(nodes);\n }\n }\n\n break;\n }\n case ContentPosition.DomEnd:\n // Use appendChild to insert the node at the end of the content div.\n let insertedNode = contentDiv.appendChild(node);\n // Final check to see if the inserted node is a block. If not block and the ask is to insert on new line,\n // add a DIV wrapping\n if (insertedNode && option.insertOnNewLine && !isBlockElement(insertedNode)) {\n wrap(insertedNode);\n }\n break;\n case ContentPosition.Range:\n case ContentPosition.SelectionStart:\n let { range, rangeToRestore } = getInitialRange(core, option);\n if (!range) {\n return;\n }\n\n // if to replace the selection and the selection is not collapsed, remove the the content at selection first\n if (option.replaceSelection && !range.collapsed) {\n range.deleteContents();\n }\n\n let pos: NodePosition = Position.getStart(range);\n let blockElement: BlockElement | null;\n\n if (option.insertOnNewLine && option.insertToRegionRoot) {\n pos = adjustInsertPositionRegionRoot(core, range, pos);\n } else if (\n option.insertOnNewLine &&\n (blockElement = getBlockElementAtNode(contentDiv, pos.normalize().node))\n ) {\n pos = adjustInsertPositionNewLine(blockElement, core, pos);\n } else {\n pos = adjustInsertPosition(contentDiv, node, pos, range);\n }\n\n let nodeForCursor =\n node.nodeType == NodeType.DocumentFragment ? node.lastChild : node;\n\n range = createRange(pos);\n range.insertNode(node);\n\n if (option.updateCursor && nodeForCursor) {\n rangeToRestore = createRange(\n new Position(nodeForCursor, PositionType.After).normalize()\n );\n }\n\n if (rangeToRestore) {\n core.api.selectRange(core, rangeToRestore);\n }\n\n break;\n }\n },\n ColorTransformDirection.LightToDark\n );\n\n return true;\n};\n\nfunction adjustInsertPositionRegionRoot(core: EditorCore, range: Range, position: NodePosition) {\n const region = getRegionsFromRange(core.contentDiv, range, RegionType.Table)[0];\n let node: Node | null = position.node;\n\n if (region) {\n if (node.nodeType == NodeType.Text && !position.isAtEnd) {\n node = splitTextNode(node as Text, position.offset, true /*returnFirstPart*/);\n }\n\n if (node != region.rootNode) {\n while (node && node.parentNode != region.rootNode) {\n splitParentNode(node, false /*splitBefore*/);\n node = node.parentNode;\n }\n }\n\n if (node) {\n position = new Position(node, PositionType.After);\n }\n }\n\n return position;\n}\n\nfunction adjustInsertPositionNewLine(blockElement: BlockElement, core: EditorCore, pos: Position) {\n let tempPos = new Position(blockElement.getEndNode(), PositionType.After);\n if (safeInstanceOf(tempPos.node, 'HTMLTableRowElement')) {\n const div = core.contentDiv.ownerDocument.createElement('div');\n const range = createRange(pos);\n range.insertNode(div);\n tempPos = new Position(div, PositionType.Begin);\n }\n return tempPos;\n}\n","import { getEntityFromElement, getEntitySelector, queryElements } from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n EntityOperation,\n PluginEventType,\n RestoreUndoSnapshot,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Restore an undo snapshot into editor\n * @param core The editor core object\n * @param step Steps to move, can be 0, positive or negative\n */\nexport const restoreUndoSnapshot: RestoreUndoSnapshot = (core: EditorCore, step: number) => {\n if (core.undo.hasNewContent && step < 0) {\n core.api.addUndoSnapshot(\n core,\n null /*callback*/,\n null /*changeSource*/,\n false /*canUndoByBackspace*/\n );\n }\n\n const snapshot = core.undo.snapshotsService.move(step);\n\n if (snapshot && snapshot.html != null) {\n try {\n core.undo.isRestoring = true;\n core.api.setContent(\n core,\n snapshot.html,\n true /*triggerContentChangedEvent*/,\n snapshot.metadata ?? undefined\n );\n\n const darkColorHandler = core.darkColorHandler;\n const isDarkModel = core.lifecycle.isDarkMode;\n\n snapshot.knownColors.forEach(color => {\n darkColorHandler.registerColor(\n color.lightModeColor,\n isDarkModel,\n color.darkModeColor\n );\n });\n\n snapshot.entityStates?.forEach(entityState => {\n const { type, id, state } = entityState;\n const wrapper = queryElements(\n core.contentDiv,\n getEntitySelector(type, id)\n )[0] as HTMLElement;\n const entity = wrapper && getEntityFromElement(wrapper);\n\n if (entity) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EntityOperation,\n operation: EntityOperation.UpdateEntityState,\n entity: entity,\n state,\n },\n false\n );\n }\n });\n } finally {\n core.undo.isRestoring = false;\n }\n }\n};\n","import { contains, createRange, safeInstanceOf } from 'roosterjs-editor-dom';\nimport {\n NodePosition,\n PluginEventType,\n PositionType,\n Select,\n SelectionPath,\n SelectionRangeEx,\n SelectionRangeTypes,\n TableSelection,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Select content according to the given information.\n * There are a bunch of allowed combination of parameters. See IEditor.select for more details\n * @param core The editor core object\n * @param arg1 A DOM Range, or SelectionRangeEx, or NodePosition, or Node, or Selection Path\n * @param arg2 (optional) A NodePosition, or an offset number, or a PositionType, or a TableSelection\n * @param arg3 (optional) A Node\n * @param arg4 (optional) An offset number, or a PositionType\n */\nexport const select: Select = (core, arg1, arg2, arg3, arg4) => {\n let rangeEx: SelectionRangeEx | null = null;\n\n if (isSelectionRangeEx(arg1)) {\n rangeEx = arg1;\n } else if (safeInstanceOf(arg1, 'HTMLTableElement') && isTableSelectionOrNull(arg2)) {\n rangeEx = {\n type: SelectionRangeTypes.TableSelection,\n ranges: [],\n areAllCollapsed: false,\n table: arg1,\n coordinates: arg2 ?? undefined,\n };\n } else if (safeInstanceOf(arg1, 'HTMLImageElement') && typeof arg2 == 'undefined') {\n rangeEx = {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [],\n areAllCollapsed: false,\n image: arg1,\n };\n } else {\n let range = !arg1\n ? null\n : safeInstanceOf(arg1, 'Range')\n ? arg1\n : isSelectionPath(arg1)\n ? createRange(core.contentDiv, arg1.start, arg1.end)\n : isNodePosition(arg1) || safeInstanceOf(arg1, 'Node')\n ? createRange(\n arg1,\n arg2,\n arg3,\n arg4\n )\n : null;\n\n rangeEx = range\n ? {\n type: SelectionRangeTypes.Normal,\n ranges: [range],\n areAllCollapsed: range.collapsed,\n }\n : null;\n }\n\n if (rangeEx) {\n switch (rangeEx.type) {\n case SelectionRangeTypes.TableSelection:\n if (contains(core.contentDiv, rangeEx.table)) {\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n core.domEvent.tableSelectionRange = core.api.selectTable(\n core,\n rangeEx.table,\n rangeEx.coordinates\n );\n rangeEx = core.domEvent.tableSelectionRange;\n }\n break;\n case SelectionRangeTypes.ImageSelection:\n if (contains(core.contentDiv, rangeEx.image)) {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, rangeEx.image);\n rangeEx = core.domEvent.imageSelectionRange;\n }\n break;\n case SelectionRangeTypes.Normal:\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n\n if (contains(core.contentDiv, rangeEx.ranges[0])) {\n core.api.selectRange(core, rangeEx.ranges[0]);\n } else {\n rangeEx = null;\n }\n break;\n }\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.SelectionChanged,\n selectionRangeEx: rangeEx,\n },\n true /** broadcast **/\n );\n } else {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, null);\n core.domEvent.imageSelectionRange = core.api.selectImage(core, null);\n }\n\n return !!rangeEx;\n};\n\nfunction isSelectionRangeEx(obj: any): obj is SelectionRangeEx {\n const rangeEx = obj as SelectionRangeEx;\n return (\n rangeEx &&\n typeof rangeEx == 'object' &&\n typeof rangeEx.type == 'number' &&\n Array.isArray(rangeEx.ranges)\n );\n}\n\nfunction isTableSelectionOrNull(obj: any): obj is TableSelection | null {\n const selection = obj as TableSelection | null;\n\n return (\n selection === null ||\n (selection &&\n typeof selection == 'object' &&\n typeof selection.firstCell == 'object' &&\n typeof selection.lastCell == 'object')\n );\n}\n\nfunction isSelectionPath(obj: any): obj is SelectionPath {\n const path = obj as SelectionPath;\n\n return path && typeof path == 'object' && Array.isArray(path.start) && Array.isArray(path.end);\n}\n\nfunction isNodePosition(obj: any): obj is NodePosition {\n const pos = obj as NodePosition;\n\n return (\n pos &&\n typeof pos == 'object' &&\n typeof pos.node == 'object' &&\n typeof pos.offset == 'number'\n );\n}\n","import addUniqueId from './utils/addUniqueId';\nimport {\n createRange,\n Position,\n removeGlobalCssStyle,\n removeImportantStyleRule,\n setGlobalCssStyles,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n ImageSelectionRange,\n PositionType,\n SelectImage,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst IMAGE_ID = 'imageSelected';\nconst CONTENT_DIV_ID = 'contentDiv_';\nconst STYLE_ID = 'imageStyle';\nconst DEFAULT_SELECTION_BORDER_COLOR = '#DB626C';\n\n/**\n * @internal\n * Select a image and save data of the selected range\n * @param image Image to select\n * @returns Selected image information\n */\nexport const selectImage: SelectImage = (core: EditorCore, image: HTMLImageElement | null) => {\n unselect(core);\n\n let selection: ImageSelectionRange | null = null;\n\n if (image) {\n const range = createRange(image);\n\n addUniqueId(image, IMAGE_ID);\n addUniqueId(core.contentDiv, CONTENT_DIV_ID);\n\n core.api.selectRange(core, createRange(new Position(image, PositionType.After)));\n\n select(core, image);\n\n selection = {\n type: SelectionRangeTypes.ImageSelection,\n ranges: [range],\n image: image,\n areAllCollapsed: range.collapsed,\n };\n }\n\n return selection;\n};\n\nconst select = (core: EditorCore, image: HTMLImageElement) => {\n removeImportantStyleRule(image, ['border', 'margin']);\n const borderCSS = buildBorderCSS(core, image.id);\n setGlobalCssStyles(core.contentDiv.ownerDocument, borderCSS, STYLE_ID + core.contentDiv.id);\n};\n\nconst buildBorderCSS = (core: EditorCore, imageId: string): string => {\n const divId = core.contentDiv.id;\n const color = core.imageSelectionBorderColor || DEFAULT_SELECTION_BORDER_COLOR;\n\n return `#${divId} #${imageId} {outline-style: auto!important;outline-color: ${color}!important;caret-color: transparent!important;}`;\n};\n\nconst unselect = (core: EditorCore) => {\n const doc = core.contentDiv.ownerDocument;\n removeGlobalCssStyle(doc, STYLE_ID + core.contentDiv.id);\n};\n","import { EditorCore, SelectRange } from 'roosterjs-editor-types';\nimport { hasFocus } from './hasFocus';\nimport {\n contains,\n getPendableFormatState,\n Position,\n PendableFormatCommandMap,\n addRangeToSelection,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Change the editor selection to the given range\n * @param core The EditorCore object\n * @param range The range to select\n * @param skipSameRange When set to true, do nothing if the given range is the same with current selection\n * in editor, otherwise it will always remove current selection range and set to the given one.\n * This parameter is always treat as true in Edge to avoid some weird runtime exception.\n */\nexport const selectRange: SelectRange = (\n core: EditorCore,\n range: Range,\n skipSameRange?: boolean\n) => {\n if (!core.lifecycle.shadowEditSelectionPath && contains(core.contentDiv, range)) {\n addRangeToSelection(range, skipSameRange);\n\n if (!hasFocus(core)) {\n core.domEvent.selectionRange = range;\n }\n\n if (range.collapsed) {\n // If selected, and current selection is collapsed,\n // need to restore pending format state if exists.\n restorePendingFormatState(core);\n }\n\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * Restore cached pending format state (if exist) to current selection\n */\nfunction restorePendingFormatState(core: EditorCore) {\n const {\n contentDiv,\n pendingFormatState,\n api: { getSelectionRange },\n } = core;\n\n if (pendingFormatState.pendableFormatState) {\n const document = contentDiv.ownerDocument;\n let formatState = getPendableFormatState(document);\n getObjectKeys(PendableFormatCommandMap).forEach(key => {\n if (!!pendingFormatState.pendableFormatState?.[key] != formatState[key]) {\n document.execCommand(\n PendableFormatCommandMap[key],\n false /* showUI */,\n undefined /* value */\n );\n }\n });\n\n const range = getSelectionRange(core, true /*tryGetFromCache*/);\n let position: Position | null = range && Position.getStart(range);\n if (position) {\n pendingFormatState.pendableFormatPosition = position;\n }\n }\n}\n","import addUniqueId from './utils/addUniqueId';\nimport {\n createRange,\n getTagOfNode,\n isWholeTableSelected,\n Position,\n removeGlobalCssStyle,\n removeImportantStyleRule,\n setGlobalCssStyles,\n toArray,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n SelectionRangeTypes,\n TableSelection,\n SelectTable,\n PositionType,\n Coordinates,\n} from 'roosterjs-editor-types';\n\nconst TABLE_ID = 'tableSelected';\nconst CONTENT_DIV_ID = 'contentDiv_';\nconst STYLE_ID = 'tableStyle';\nconst SELECTED_CSS_RULE =\n '{background-color: rgb(198,198,198) !important; caret-color: transparent}';\nconst MAX_RULE_SELECTOR_LENGTH = 9000;\n\n/**\n * @internal\n * Select a table and save data of the selected range\n * @param core The EditorCore object\n * @param table table to select\n * @param coordinates first and last cell of the selection, if this parameter is null, instead of\n * selecting, will unselect the table.\n * @returns true if successful\n */\nexport const selectTable: SelectTable = (\n core: EditorCore,\n table: HTMLTableElement | null,\n coordinates?: TableSelection\n) => {\n unselect(core);\n\n if (areValidCoordinates(coordinates) && table) {\n addUniqueId(table, TABLE_ID);\n addUniqueId(core.contentDiv, CONTENT_DIV_ID);\n\n const { ranges, isWholeTableSelected } = select(core, table, coordinates);\n if (!isMergedCell(table, coordinates)) {\n const cellToSelect = table.rows\n .item(coordinates.firstCell.y)\n ?.cells.item(coordinates.firstCell.x);\n\n if (cellToSelect) {\n core.api.selectRange(\n core,\n createRange(new Position(cellToSelect, PositionType.Begin))\n );\n }\n }\n\n return {\n type: SelectionRangeTypes.TableSelection,\n ranges,\n table,\n areAllCollapsed: ranges.filter(range => range?.collapsed).length == ranges.length,\n coordinates,\n isWholeTableSelected,\n };\n }\n\n return null;\n};\n\nfunction buildCss(\n table: HTMLTableElement,\n coordinates: TableSelection,\n contentDivSelector: string\n): { cssRules: string[]; ranges: Range[]; isWholeTableSelected: boolean } {\n const ranges: Range[] = [];\n const selectors: string[] = [];\n\n const vTable = new VTable(table);\n const isAllTableSelected = isWholeTableSelected(vTable, coordinates);\n if (isAllTableSelected) {\n handleAllTableSelected(contentDivSelector, vTable, selectors, ranges);\n } else {\n handleTableSelected(coordinates, vTable, contentDivSelector, selectors, ranges);\n }\n\n const cssRules: string[] = [];\n let currentRules: string = '';\n while (selectors.length > 0) {\n currentRules += (currentRules.length > 0 ? ',' : '') + selectors.shift() || '';\n if (\n currentRules.length + (selectors[0]?.length || 0) > MAX_RULE_SELECTOR_LENGTH ||\n selectors.length == 0\n ) {\n cssRules.push(currentRules + ' ' + SELECTED_CSS_RULE);\n currentRules = '';\n }\n }\n\n return { cssRules, ranges, isWholeTableSelected: isAllTableSelected };\n}\n\nfunction handleAllTableSelected(\n contentDivSelector: string,\n vTable: VTable,\n selectors: string[],\n ranges: Range[]\n) {\n const table = vTable.table;\n const tableSelector = contentDivSelector + ' #' + table.id;\n selectors.push(tableSelector, `${tableSelector} *`);\n\n const tableRange = new Range();\n tableRange.selectNode(table);\n ranges.push(tableRange);\n}\n\nfunction handleTableSelected(\n coordinates: TableSelection,\n vTable: VTable,\n contentDivSelector: string,\n selectors: string[],\n ranges: Range[]\n) {\n const tr1 = coordinates.firstCell.y;\n const td1 = coordinates.firstCell.x;\n const tr2 = coordinates.lastCell.y;\n const td2 = coordinates.lastCell.x;\n const table = vTable.table;\n\n let firstSelected: HTMLTableCellElement | null = null;\n let lastSelected: HTMLTableCellElement | null = null;\n // Get whether table has thead, tbody or tfoot.\n const tableChildren = toArray(table.childNodes).filter(\n node => ['THEAD', 'TBODY', 'TFOOT'].indexOf(getTagOfNode(node)) > -1\n );\n // Set the start and end of each of the table children, so we can build the selector according the element between the table and the row.\n let cont = 0;\n const indexes = tableChildren.map(node => {\n const result = {\n el: getTagOfNode(node),\n start: cont,\n end: node.childNodes.length + cont,\n };\n\n cont = result.end;\n return result;\n });\n\n vTable.cells?.forEach((row, rowIndex) => {\n let tdCount = 0;\n firstSelected = null;\n lastSelected = null;\n\n //Get current TBODY/THEAD/TFOOT\n const midElement = indexes.filter(ind => ind.start <= rowIndex && ind.end > rowIndex)[0];\n\n const middleElSelector = midElement ? '>' + midElement.el + '>' : '>';\n const currentRow =\n midElement && rowIndex + 1 >= midElement.start\n ? rowIndex + 1 - midElement.start\n : rowIndex + 1;\n\n for (let cellIndex = 0; cellIndex < row.length; cellIndex++) {\n const cell = row[cellIndex].td;\n if (cell) {\n tdCount++;\n if (rowIndex >= tr1 && rowIndex <= tr2 && cellIndex >= td1 && cellIndex <= td2) {\n removeImportant(cell);\n\n const selector = generateCssFromCell(\n contentDivSelector,\n table.id,\n middleElSelector,\n currentRow,\n getTagOfNode(cell),\n tdCount\n );\n const elementsSelector = selector + ' *';\n\n selectors.push(selector, elementsSelector);\n firstSelected = firstSelected || table.querySelector(selector);\n lastSelected = table.querySelector(selector);\n }\n }\n }\n\n if (firstSelected && lastSelected) {\n const rowRange = new Range();\n rowRange.setStartBefore(firstSelected);\n rowRange.setEndAfter(lastSelected);\n ranges.push(rowRange);\n }\n });\n}\n\nfunction select(\n core: EditorCore,\n table: HTMLTableElement,\n coordinates: TableSelection\n): { ranges: Range[]; isWholeTableSelected: boolean } {\n const contentDivSelector = '#' + core.contentDiv.id;\n let { cssRules, ranges, isWholeTableSelected } = buildCss(\n table,\n coordinates,\n contentDivSelector\n );\n cssRules.forEach(css =>\n setGlobalCssStyles(core.contentDiv.ownerDocument, css, STYLE_ID + core.contentDiv.id)\n );\n\n return { ranges, isWholeTableSelected };\n}\n\nconst unselect = (core: EditorCore) => {\n const doc = core.contentDiv.ownerDocument;\n removeGlobalCssStyle(doc, STYLE_ID + core.contentDiv.id);\n};\n\nfunction generateCssFromCell(\n contentDivSelector: string,\n tableId: string,\n middleElSelector: string,\n rowIndex: number,\n cellTag: string,\n index: number\n): string {\n return (\n contentDivSelector +\n ' #' +\n tableId +\n middleElSelector +\n ' tr:nth-child(' +\n rowIndex +\n ')>' +\n cellTag +\n ':nth-child(' +\n index +\n ')'\n );\n}\n\nfunction removeImportant(cell: HTMLTableCellElement) {\n if (cell) {\n removeImportantStyleRule(cell, ['background-color', 'background']);\n }\n}\n\nfunction areValidCoordinates(input?: TableSelection): input is TableSelection {\n if (input) {\n const { firstCell, lastCell } = input || {};\n if (firstCell && lastCell) {\n const handler = (coordinate: Coordinates) =>\n isValidCoordinate(coordinate.x) && isValidCoordinate(coordinate.y);\n return handler(firstCell) && handler(lastCell);\n }\n }\n\n return false;\n}\n\nfunction isValidCoordinate(input: number): boolean {\n return (!!input || input == 0) && input > -1;\n}\n\nfunction isMergedCell(table: HTMLTableElement, coordinates: TableSelection): boolean {\n const { firstCell } = coordinates;\n return !(table.rows.item(firstCell.y) && table.rows.item(firstCell.y)?.cells.item(firstCell.x));\n}\n","import {\n createRange,\n extractContentMetadata,\n queryElements,\n restoreContentWithEntityPlaceholder,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ColorTransformDirection,\n ContentMetadata,\n EditorCore,\n PluginEventType,\n SelectionRangeTypes,\n SetContent,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Set HTML content to this editor. All existing content will be replaced. A ContentChanged event will be triggered\n * if triggerContentChangedEvent is set to true\n * @param core The EditorCore object\n * @param content HTML content to set in\n * @param triggerContentChangedEvent True to trigger a ContentChanged event. Default value is true\n * @param metadata @optional Metadata of the content that helps editor know the selection and color mode.\n * If not passed, we will treat content as in light mode without selection\n */\nexport const setContent: SetContent = (\n core: EditorCore,\n content: string,\n triggerContentChangedEvent: boolean,\n metadata?: ContentMetadata\n) => {\n let contentChanged = false;\n if (core.contentDiv.innerHTML != content) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.BeforeSetContent,\n newContent: content,\n },\n true /*broadcast*/\n );\n\n const entities = core.entity.entityMap;\n const html = content || '';\n const body = new DOMParser().parseFromString(\n core.trustedHTMLHandler?.(html) ?? html,\n 'text/html'\n ).body;\n\n restoreContentWithEntityPlaceholder(body, core.contentDiv, entities);\n\n const metadataFromContent = extractContentMetadata(core.contentDiv);\n metadata = metadata || metadataFromContent;\n selectContentMetadata(core, metadata);\n contentChanged = true;\n }\n\n const isDarkMode = core.lifecycle.isDarkMode;\n\n if ((!metadata && isDarkMode) || (metadata && !!metadata.isDarkMode != !!isDarkMode)) {\n core.api.transformColor(\n core,\n core.contentDiv,\n false /*includeSelf*/,\n null /*callback*/,\n isDarkMode ? ColorTransformDirection.LightToDark : ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n metadata?.isDarkMode\n );\n contentChanged = true;\n }\n\n if (triggerContentChangedEvent && contentChanged) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.ContentChanged,\n source: ChangeSource.SetContent,\n },\n false /*broadcast*/\n );\n }\n};\n\nfunction selectContentMetadata(core: EditorCore, metadata: ContentMetadata | undefined) {\n if (!core.lifecycle.shadowEditSelectionPath && metadata) {\n core.domEvent.tableSelectionRange = null;\n core.domEvent.imageSelectionRange = null;\n core.domEvent.selectionRange = null;\n\n switch (metadata.type) {\n case SelectionRangeTypes.Normal:\n core.api.selectTable(core, null);\n core.api.selectImage(core, null);\n\n const range = createRange(core.contentDiv, metadata.start, metadata.end);\n core.api.selectRange(core, range);\n break;\n case SelectionRangeTypes.TableSelection:\n const table = queryElements(\n core.contentDiv,\n '#' + metadata.tableId\n )[0] as HTMLTableElement;\n\n if (table) {\n core.domEvent.tableSelectionRange = core.api.selectTable(core, table, metadata);\n }\n break;\n case SelectionRangeTypes.ImageSelection:\n const image = queryElements(\n core.contentDiv,\n '#' + metadata.imageId\n )[0] as HTMLImageElement;\n\n if (image) {\n core.domEvent.imageSelectionRange = core.api.selectImage(core, image);\n }\n break;\n }\n }\n}\n","import {\n createRange,\n getSelectionPath,\n moveContentWithEntityPlaceholders,\n restoreContentWithEntityPlaceholder,\n} from 'roosterjs-editor-dom';\nimport {\n EditorCore,\n PluginEventType,\n SelectionRangeEx,\n SelectionRangeTypes,\n SwitchShadowEdit,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport const switchShadowEdit: SwitchShadowEdit = (core: EditorCore, isOn: boolean): void => {\n const { lifecycle, contentDiv } = core;\n let {\n shadowEditEntities,\n shadowEditFragment,\n shadowEditSelectionPath,\n shadowEditTableSelectionPath,\n shadowEditImageSelectionPath,\n } = lifecycle;\n const wasInShadowEdit = !!shadowEditFragment;\n\n const getShadowEditSelectionPath = (\n selectionType: SelectionRangeTypes,\n shadowEditSelection?: SelectionRangeEx\n ) => {\n return (\n (shadowEditSelection?.type == selectionType &&\n shadowEditSelection.ranges\n .map(range => getSelectionPath(contentDiv, range))\n .map(w => w!!)) ||\n null\n );\n };\n\n if (isOn) {\n if (!wasInShadowEdit) {\n const selection = core.api.getSelectionRangeEx(core);\n const range = core.api.getSelectionRange(core, true /*tryGetFromCache*/);\n\n shadowEditSelectionPath = range && getSelectionPath(contentDiv, range);\n shadowEditTableSelectionPath = getShadowEditSelectionPath(\n SelectionRangeTypes.TableSelection,\n selection\n );\n shadowEditImageSelectionPath = getShadowEditSelectionPath(\n SelectionRangeTypes.ImageSelection,\n selection\n );\n\n shadowEditEntities = {};\n shadowEditFragment = moveContentWithEntityPlaceholders(contentDiv, shadowEditEntities);\n\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.EnteredShadowEdit,\n fragment: shadowEditFragment,\n selectionPath: shadowEditSelectionPath,\n },\n false /*broadcast*/\n );\n\n lifecycle.shadowEditFragment = shadowEditFragment;\n lifecycle.shadowEditSelectionPath = shadowEditSelectionPath;\n lifecycle.shadowEditTableSelectionPath = shadowEditTableSelectionPath;\n lifecycle.shadowEditImageSelectionPath = shadowEditImageSelectionPath;\n lifecycle.shadowEditEntities = shadowEditEntities;\n }\n\n if (lifecycle.shadowEditFragment) {\n restoreContentWithEntityPlaceholder(\n lifecycle.shadowEditFragment,\n contentDiv,\n lifecycle.shadowEditEntities,\n true /*insertClonedNode*/\n );\n }\n } else {\n lifecycle.shadowEditFragment = null;\n lifecycle.shadowEditSelectionPath = null;\n lifecycle.shadowEditEntities = null;\n\n if (wasInShadowEdit) {\n core.api.triggerEvent(\n core,\n {\n eventType: PluginEventType.LeavingShadowEdit,\n },\n false /*broadcast*/\n );\n\n if (shadowEditFragment) {\n restoreContentWithEntityPlaceholder(\n shadowEditFragment,\n contentDiv,\n shadowEditEntities\n );\n }\n core.api.focus(core);\n\n if (shadowEditSelectionPath) {\n core.api.selectRange(\n core,\n createRange(\n contentDiv,\n shadowEditSelectionPath.start,\n shadowEditSelectionPath.end\n )\n );\n }\n\n if (core.domEvent.imageSelectionRange) {\n const { image } = core.domEvent.imageSelectionRange;\n const imageElement = core.contentDiv.querySelector('#' + image.id);\n if (imageElement) {\n core.api.selectImage(core, image);\n }\n }\n\n if (core.domEvent.tableSelectionRange) {\n const { table, coordinates } = core.domEvent.tableSelectionRange;\n const tableId = table.id;\n const tableElement = core.contentDiv.querySelector('#' + tableId);\n if (table) {\n core.domEvent.tableSelectionRange = core.api.selectTable(\n core,\n tableElement as HTMLTableElement,\n coordinates\n );\n }\n }\n }\n }\n};\n","import { ColorTransformDirection, EditorCore, TransformColor } from 'roosterjs-editor-types';\nimport type { CompatibleColorTransformDirection } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Edit and transform color of elements between light mode and dark mode\n * @param core The EditorCore object\n * @param rootNode The root HTML elements to transform\n * @param includeSelf True to transform the root node as well, otherwise false\n * @param callback The callback function to invoke before do color transformation\n * @param direction To specify the transform direction, light to dark, or dark to light\n * @param forceTransform By default this function will only work when editor core is in dark mode.\n * Pass true to this value to force do color transformation even editor core is in light mode\n */\nexport const transformColor: TransformColor = (\n core: EditorCore,\n rootNode: Node | null,\n includeSelf: boolean,\n callback: (() => void) | null,\n direction: ColorTransformDirection | CompatibleColorTransformDirection,\n forceTransform?: boolean,\n fromDarkMode: boolean = false\n) => {\n const {\n darkColorHandler,\n lifecycle: { onExternalContentTransform },\n } = core;\n const toDarkMode = direction == ColorTransformDirection.LightToDark;\n if (rootNode && (forceTransform || core.lifecycle.isDarkMode)) {\n const transformer = onExternalContentTransform\n ? (element: HTMLElement) => {\n onExternalContentTransform(element, fromDarkMode, toDarkMode, darkColorHandler);\n }\n : (element: HTMLElement) => {\n darkColorHandler.transformElementColor(element, fromDarkMode, toDarkMode);\n };\n\n iterateElements(rootNode, transformer, includeSelf);\n }\n\n callback?.();\n};\n\nfunction iterateElements(\n root: Node,\n transformer: (element: HTMLElement) => void,\n includeSelf?: boolean\n) {\n if (includeSelf && isHTMLElement(root)) {\n transformer(root);\n }\n\n for (let child = root.firstChild; child; child = child.nextSibling) {\n if (isHTMLElement(child)) {\n transformer(child);\n }\n\n iterateElements(child, transformer);\n }\n}\n\n// This is not a strict check, we just need to make sure this element has style so that we can set style to it\n// We don't use safeInstanceOf() here since this function will be called very frequently when extract html content\n// in dark mode, so we need to make sure this check is fast enough\nfunction isHTMLElement(node: Node): node is HTMLElement {\n const htmlElement = node;\n return node.nodeType == Node.ELEMENT_NODE && !!htmlElement.style;\n}\n","import {\n EditorCore,\n EditorPlugin,\n PluginEvent,\n PluginEventType,\n TriggerEvent,\n} from 'roosterjs-editor-types';\nimport type { CompatiblePluginEventType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst allowedEventsInShadowEdit: (PluginEventType | CompatiblePluginEventType)[] = [\n PluginEventType.EditorReady,\n PluginEventType.BeforeDispose,\n PluginEventType.ExtractContentWithDom,\n PluginEventType.ZoomChanged,\n];\n\n/**\n * @internal\n * Trigger a plugin event\n * @param core The EditorCore object\n * @param pluginEvent The event object to trigger\n * @param broadcast Set to true to skip the shouldHandleEventExclusively check\n */\nexport const triggerEvent: TriggerEvent = (\n core: EditorCore,\n pluginEvent: PluginEvent,\n broadcast: boolean\n) => {\n if (\n (!core.lifecycle.shadowEditFragment ||\n allowedEventsInShadowEdit.indexOf(pluginEvent.eventType) >= 0) &&\n (broadcast || !core.plugins.some(plugin => handledExclusively(pluginEvent, plugin)))\n ) {\n core.plugins.forEach(plugin => {\n if (plugin.onPluginEvent) {\n plugin.onPluginEvent(pluginEvent);\n }\n });\n }\n};\n\nfunction handledExclusively(event: PluginEvent, plugin: EditorPlugin): boolean {\n if (plugin.onPluginEvent && plugin.willHandleEventExclusively?.(event)) {\n plugin.onPluginEvent(event);\n return true;\n }\n\n return false;\n}\n","/**\n * Add an unique id to element and ensure that is unique\n * @param el The HTMLElement that will receive the id\n * @param idPrefix The prefix that will antecede the id (Ex: tableSelected01)\n */\nexport default function addUniqueId(el: HTMLElement, idPrefix: string) {\n const doc = el.ownerDocument;\n if (!el.id) {\n applyId(el, idPrefix, doc);\n } else {\n const elements = doc.querySelectorAll(`#${el.id}`);\n if (elements.length > 1) {\n el.removeAttribute('id');\n applyId(el, idPrefix, doc);\n }\n }\n}\n\nfunction applyId(el: HTMLElement, idPrefix: string, doc: Document) {\n let cont = 0;\n const getElement = () => doc.getElementById(idPrefix + cont);\n //Ensure that there are no elements with the same ID\n let element = getElement();\n while (element) {\n cont++;\n element = getElement();\n }\n\n el.id = idPrefix + cont;\n}\n","import { forEachSelectedCell } from './utils/forEachSelectedCell';\nimport { removeCellsOutsideSelection } from './utils/removeCellsOutsideSelection';\nimport {\n addRangeToSelection,\n createElement,\n extractClipboardEvent,\n moveChildNodes,\n Browser,\n setHtmlWithMetadata,\n createRange,\n VTable,\n isWholeTableSelected,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n CopyPastePluginState,\n EditorOptions,\n GetContentMode,\n IEditor,\n PluginEventType,\n PluginWithState,\n KnownCreateElementDataIndex,\n SelectionRangeEx,\n SelectionRangeTypes,\n TableSelection,\n TableOperation,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Copy and paste plugin for handling onCopy and onPaste event\n */\nexport default class CopyPastePlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private state: CopyPastePluginState;\n\n /**\n * Construct a new instance of CopyPastePlugin\n * @param options The editor options\n */\n constructor(options: EditorOptions) {\n this.state = {\n allowedCustomPasteType: options.allowedCustomPasteType || [],\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CopyPaste';\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 this.disposer = this.editor.addDomEventHandler({\n paste: e => this.onPaste(e),\n copy: e => this.onCutCopy(e, false /*isCut*/),\n cut: e => this.onCutCopy(e, true /*isCut*/),\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.disposer) {\n this.disposer();\n }\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onCutCopy(event: Event, isCut: boolean) {\n if (this.editor) {\n const selection = this.editor.getSelectionRangeEx();\n if (selection && !selection.areAllCollapsed) {\n const html = this.editor.getContent(GetContentMode.RawHTMLWithSelection);\n const tempDiv = this.getTempDiv(this.editor, true /*forceInLightMode*/);\n const metadata = setHtmlWithMetadata(\n tempDiv,\n html,\n this.editor.getTrustedHTMLHandler()\n );\n let newRange: Range | null = null;\n\n if (\n selection.type === SelectionRangeTypes.TableSelection &&\n selection.coordinates\n ) {\n const table = tempDiv.querySelector(\n `#${selection.table.id}`\n ) as HTMLTableElement;\n newRange = this.createTableRange(table, selection.coordinates);\n if (isCut) {\n this.deleteTableContent(\n this.editor,\n selection.table,\n selection.coordinates\n );\n }\n } else if (selection.type === SelectionRangeTypes.ImageSelection) {\n const image = tempDiv.querySelector('#' + selection.image.id);\n\n if (image) {\n newRange = createRange(image);\n if (isCut) {\n this.deleteImage(this.editor, selection.image.id);\n }\n }\n } else {\n newRange =\n metadata?.type === SelectionRangeTypes.Normal\n ? createRange(tempDiv, metadata.start, metadata.end)\n : null;\n }\n if (newRange) {\n const cutCopyEvent = this.editor.triggerPluginEvent(\n PluginEventType.BeforeCutCopy,\n {\n clonedRoot: tempDiv,\n range: newRange,\n rawEvent: event as ClipboardEvent,\n isCut,\n }\n );\n\n if (cutCopyEvent.range) {\n addRangeToSelection(newRange);\n }\n\n this.editor.runAsync(editor => {\n this.cleanUpAndRestoreSelection(tempDiv, selection, !isCut /* isCopy */);\n\n if (isCut) {\n editor.addUndoSnapshot(() => {\n const position = editor.deleteSelectedContent();\n editor.focus();\n editor.select(position);\n }, ChangeSource.Cut);\n }\n });\n }\n }\n }\n }\n\n private onPaste = (event: Event) => {\n let range: Range | null = null;\n if (this.editor) {\n const editor = this.editor;\n extractClipboardEvent(\n event as ClipboardEvent,\n clipboardData => {\n if (editor && !editor.isDisposed()) {\n editor.paste(clipboardData);\n }\n },\n {\n allowedCustomPasteType: this.state.allowedCustomPasteType,\n getTempDiv: () => {\n range = editor.getSelectionRange() ?? null;\n return this.getTempDiv(editor);\n },\n removeTempDiv: div => {\n if (range) {\n this.cleanUpAndRestoreSelection(div, range, false /* isCopy */);\n }\n },\n },\n this.editor.getSelectionRange() ?? undefined\n );\n }\n };\n\n private getTempDiv(editor: IEditor, forceInLightMode?: boolean) {\n const div = editor.getCustomData(\n 'CopyPasteTempDiv',\n () => {\n const tempDiv = createElement(\n KnownCreateElementDataIndex.CopyPasteTempDiv,\n editor.getDocument()\n ) as HTMLDivElement;\n\n editor.getDocument().body.appendChild(tempDiv);\n\n return tempDiv;\n },\n tempDiv => tempDiv.parentNode?.removeChild(tempDiv)\n );\n\n if (forceInLightMode) {\n div.style.backgroundColor = 'white';\n div.style.color = 'black';\n }\n\n div.style.display = '';\n div.focus();\n\n return div;\n }\n\n private cleanUpAndRestoreSelection(\n tempDiv: HTMLDivElement,\n range: Range | SelectionRangeEx,\n isCopy: boolean\n ) {\n if (!!(range)?.type || (range).type == 0) {\n const selection = range;\n switch (selection.type) {\n case SelectionRangeTypes.TableSelection:\n case SelectionRangeTypes.ImageSelection:\n this.editor?.select(selection);\n break;\n case SelectionRangeTypes.Normal:\n const range = selection.ranges?.[0];\n this.restoreRange(range, isCopy);\n break;\n }\n } else {\n this.restoreRange(range, isCopy);\n }\n\n tempDiv.style.backgroundColor = '';\n tempDiv.style.color = '';\n tempDiv.style.display = 'none';\n moveChildNodes(tempDiv);\n }\n\n private restoreRange(range: Range, isCopy: boolean) {\n if (range && this.editor) {\n if (isCopy && Browser.isAndroid) {\n range.collapse();\n }\n this.editor.select(range);\n }\n }\n\n private createTableRange(table: HTMLTableElement, selection: TableSelection) {\n const clonedVTable = new VTable(table as HTMLTableElement);\n clonedVTable.selection = selection;\n removeCellsOutsideSelection(clonedVTable);\n clonedVTable.writeBack();\n return createRange(clonedVTable.table);\n }\n\n private deleteTableContent(\n editor: IEditor,\n table: HTMLTableElement,\n selection: TableSelection\n ) {\n const selectedVTable = new VTable(table);\n selectedVTable.selection = selection;\n\n forEachSelectedCell(selectedVTable, cell => {\n if (cell?.td) {\n cell.td.innerHTML = editor.getTrustedHTMLHandler()('
                            ');\n }\n });\n\n const wholeTableSelected = isWholeTableSelected(selectedVTable, selection);\n const isWholeColumnSelected =\n table.rows.length - 1 === selection.lastCell.y && selection.firstCell.y === 0;\n if (wholeTableSelected) {\n selectedVTable.edit(TableOperation.DeleteTable);\n selectedVTable.writeBack();\n } else if (isWholeColumnSelected) {\n selectedVTable.edit(TableOperation.DeleteColumn);\n selectedVTable.writeBack();\n }\n if (wholeTableSelected || isWholeColumnSelected) {\n table.style.removeProperty('width');\n table.style.removeProperty('height');\n }\n }\n\n private deleteImage(editor: IEditor, imageId: string) {\n editor.queryElements('#' + imageId, node => {\n editor.deleteNode(node);\n });\n }\n}\n","import { arrayPush, Browser, isCharacterValue } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContextMenuProvider,\n DOMEventHandler,\n DOMEventPluginState,\n EditorOptions,\n EditorPlugin,\n IEditor,\n Keys,\n PluginEventType,\n PluginWithState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * DOMEventPlugin handles customized DOM events, including:\n * 1. Keyboard event\n * 2. Mouse event\n * 3. IME state\n * 4. Drop event\n * 5. Focus and blur event\n * 6. Input event\n * 7. Scroll event\n * It contains special handling for Safari since Safari cannot get correct selection when onBlur event is triggered in editor.\n */\nexport default class DOMEventPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private state: DOMEventPluginState;\n\n /**\n * Construct a new instance of DOMEventPlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor(options: EditorOptions, contentDiv: HTMLDivElement) {\n this.state = {\n isInIME: false,\n scrollContainer: options.scrollContainer || contentDiv,\n selectionRange: null,\n stopPrintableKeyboardEventPropagation: !options.allowKeyboardEventPropagation,\n contextMenuProviders:\n options.plugins?.filter>(isContextMenuProvider) || [],\n tableSelectionRange: null,\n imageSelectionRange: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'DOMEvent';\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 const document = this.editor.getDocument();\n //Record\n const eventHandlers: Partial<\n { [P in keyof HTMLElementEventMap]: DOMEventHandler }\n > = {\n // 1. Keyboard event\n keypress: this.getEventHandler(PluginEventType.KeyPress),\n keydown: this.getEventHandler(PluginEventType.KeyDown),\n keyup: this.getEventHandler(PluginEventType.KeyUp),\n\n // 2. Mouse event\n mousedown: PluginEventType.MouseDown,\n contextmenu: this.onContextMenuEvent,\n\n // 3. IME state management\n compositionstart: () => (this.state.isInIME = true),\n compositionend: (rawEvent: CompositionEvent) => {\n this.state.isInIME = false;\n editor.triggerPluginEvent(PluginEventType.CompositionEnd, {\n rawEvent,\n });\n },\n\n // 4. Drag and Drop event\n dragstart: this.onDragStart,\n drop: this.onDrop,\n\n // 5. Focus management\n focus: this.onFocus,\n\n // 6. Input event\n [Browser.isIE ? 'textinput' : 'input']: this.getEventHandler(PluginEventType.Input),\n };\n\n // 7. onBlur handlers\n if (Browser.isSafari) {\n document.addEventListener('mousedown', this.onMouseDownDocument, true /*useCapture*/);\n document.addEventListener('keydown', this.onKeyDownDocument);\n document.defaultView?.addEventListener('blur', this.cacheSelection);\n } else if (Browser.isIEOrEdge) {\n type EventHandlersIE = {\n beforedeactivate: DOMEventHandler;\n };\n (eventHandlers as EventHandlersIE).beforedeactivate = this.cacheSelection;\n } else {\n eventHandlers.blur = this.cacheSelection;\n }\n\n this.disposer = editor.addDomEventHandler(>eventHandlers);\n\n // 8. Scroll event\n this.state.scrollContainer.addEventListener('scroll', this.onScroll);\n document.defaultView?.addEventListener('scroll', this.onScroll);\n document.defaultView?.addEventListener('resize', this.onScroll);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n const document = this.editor?.getDocument();\n if (document && Browser.isSafari) {\n document.removeEventListener(\n 'mousedown',\n this.onMouseDownDocument,\n true /*useCapture*/\n );\n document.removeEventListener('keydown', this.onKeyDownDocument);\n document.defaultView?.removeEventListener('blur', this.cacheSelection);\n }\n\n document?.defaultView?.removeEventListener('resize', this.onScroll);\n document?.defaultView?.removeEventListener('scroll', this.onScroll);\n this.state.scrollContainer.removeEventListener('scroll', this.onScroll);\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n private onDragStart = (e: Event) => {\n const dragEvent = e as DragEvent;\n const element = this.editor?.getElementAtCursor('*', dragEvent.target as Node);\n\n if (element && !element.isContentEditable) {\n dragEvent.preventDefault();\n }\n };\n private onDrop = () => {\n this.editor?.runAsync(editor => {\n editor.addUndoSnapshot(() => {}, ChangeSource.Drop);\n });\n };\n\n private onFocus = () => {\n const { table, coordinates } = this.state.tableSelectionRange || {};\n const { image } = this.state.imageSelectionRange || {};\n\n if (table && coordinates) {\n this.editor?.select(table, coordinates);\n } else if (image) {\n this.editor?.select(image);\n } else if (this.state.selectionRange) {\n this.editor?.select(this.state.selectionRange);\n }\n\n this.state.selectionRange = null;\n };\n private onKeyDownDocument = (event: KeyboardEvent) => {\n if (event.which == Keys.TAB && !event.defaultPrevented) {\n this.cacheSelection();\n }\n };\n\n private onMouseDownDocument = (event: MouseEvent) => {\n if (\n this.editor &&\n !this.state.selectionRange &&\n !this.editor.contains(event.target as Node)\n ) {\n this.cacheSelection();\n }\n };\n\n private cacheSelection = () => {\n if (!this.state.selectionRange && this.editor) {\n this.state.selectionRange = this.editor.getSelectionRange(false /*tryGetFromCache*/);\n }\n };\n private onScroll = (e: Event) => {\n this.editor?.triggerPluginEvent(PluginEventType.Scroll, {\n rawEvent: e,\n scrollContainer: this.state.scrollContainer,\n });\n };\n\n private getEventHandler(eventType: PluginEventType): DOMEventHandler {\n const beforeDispatch = (event: Event) =>\n eventType == PluginEventType.Input\n ? this.onInputEvent(event)\n : this.onKeyboardEvent(event);\n\n return this.state.stopPrintableKeyboardEventPropagation\n ? {\n pluginEventType: eventType,\n beforeDispatch,\n }\n : eventType;\n }\n\n private onKeyboardEvent = (event: KeyboardEvent) => {\n if (isCharacterValue(event) || (event.which >= Keys.PAGEUP && event.which <= Keys.DOWN)) {\n // Stop propagation for Character keys and Up/Down/Left/Right/Home/End/PageUp/PageDown\n // since editor already handles these keys and no need to propagate to parents\n event.stopPropagation();\n }\n };\n\n private onInputEvent = (event: InputEvent) => {\n event.stopPropagation();\n };\n\n private onContextMenuEvent = (event: MouseEvent) => {\n const allItems: any[] = [];\n const searcher = this.editor?.getContentSearcherOfCursor();\n const elementBeforeCursor = searcher?.getInlineElementBefore();\n\n let eventTargetNode = event.target as Node;\n if (event.button != 2 && elementBeforeCursor) {\n eventTargetNode = elementBeforeCursor.getContainerNode();\n }\n this.state.contextMenuProviders.forEach(provider => {\n const items = provider.getContextMenuItems(eventTargetNode) ?? [];\n if (items?.length > 0) {\n if (allItems.length > 0) {\n allItems.push(null);\n }\n arrayPush(allItems, items);\n }\n });\n this.editor?.triggerPluginEvent(PluginEventType.ContextMenu, {\n rawEvent: event,\n items: allItems,\n });\n };\n}\n\nfunction isContextMenuProvider(source: EditorPlugin): source is ContextMenuProvider {\n return !!(>source)?.getContextMenuItems;\n}\n","import { isCtrlOrMetaPressed } from 'roosterjs-editor-dom';\nimport {\n EditPluginState,\n GenericContentEditFeature,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Edit Component helps handle Content edit features\n */\nexport default class EditPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: EditPluginState;\n\n /**\n * Construct a new instance of EditPlugin\n * @param options The editor options\n */\n constructor() {\n this.state = {\n features: {},\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Edit';\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 /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n let hasFunctionKey = false;\n let features: GenericContentEditFeature[] | null = null;\n let ctrlOrMeta = false;\n const isKeyDownEvent = event.eventType == PluginEventType.KeyDown;\n\n if (isKeyDownEvent) {\n const rawEvent = event.rawEvent;\n const range = this.editor?.getSelectionRange();\n\n ctrlOrMeta = isCtrlOrMetaPressed(rawEvent);\n hasFunctionKey = ctrlOrMeta || rawEvent.altKey;\n features =\n this.state.features[rawEvent.which] ||\n (range && !range.collapsed && this.state.features[Keys.RANGE]);\n } else if (event.eventType == PluginEventType.ContentChanged) {\n features = this.state.features[Keys.CONTENTCHANGED];\n }\n\n for (let i = 0; features && i < features?.length; i++) {\n const feature = features[i];\n if (\n (feature.allowFunctionKeys || !hasFunctionKey) &&\n this.editor &&\n feature.shouldHandleEvent(event, this.editor, ctrlOrMeta)\n ) {\n feature.handleEvent(event, this.editor);\n if (isKeyDownEvent) {\n event.handledByEditFeature = true;\n }\n break;\n }\n }\n }\n}\n","import {\n inlineEntityOnPluginEvent,\n normalizeDelimitersInEditor,\n} from './utils/inlineEntityOnPluginEvent';\nimport {\n Browser,\n commitEntity,\n getEntityFromElement,\n getEntitySelector,\n isCharacterValue,\n toArray,\n arrayPush,\n createElement,\n addRangeToSelection,\n createRange,\n isBlockElement,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n ContentChangedEvent,\n ContentPosition,\n Entity,\n EntityClasses,\n EntityOperation,\n EntityOperationEvent,\n EntityPluginState,\n KnownEntityItem,\n ExperimentalFeatures,\n HtmlSanitizerOptions,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginMouseUpEvent,\n PluginWithState,\n QueryScope,\n} from 'roosterjs-editor-types';\nimport type { CompatibleEntityOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst ENTITY_ID_REGEX = /_(\\d{1,8})$/;\n\nconst ENTITY_CSS_REGEX = '^' + EntityClasses.ENTITY_INFO_NAME + '$';\nconst ENTITY_ID_CSS_REGEX = '^' + EntityClasses.ENTITY_ID_PREFIX;\nconst ENTITY_TYPE_CSS_REGEX = '^' + EntityClasses.ENTITY_TYPE_PREFIX;\nconst ENTITY_READONLY_CSS_REGEX = '^' + EntityClasses.ENTITY_READONLY_PREFIX;\nconst ALLOWED_CSS_CLASSES = [\n ENTITY_CSS_REGEX,\n ENTITY_ID_CSS_REGEX,\n ENTITY_TYPE_CSS_REGEX,\n ENTITY_READONLY_CSS_REGEX,\n];\nconst REMOVE_ENTITY_OPERATIONS: (EntityOperation | CompatibleEntityOperation)[] = [\n EntityOperation.Overwrite,\n EntityOperation.PartialOverwrite,\n EntityOperation.RemoveFromStart,\n EntityOperation.RemoveFromEnd,\n];\n\n/**\n * @internal\n * Entity Plugin helps handle all operations related to an entity and generate entity specified events\n */\nexport default class EntityPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: EntityPluginState;\n\n /**\n * Construct a new instance of EntityPlugin\n */\n constructor() {\n this.state = {\n entityMap: {},\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Entity';\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 this.state.entityMap = {};\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\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 PluginEventType.MouseUp:\n this.handleMouseUpEvent(event);\n break;\n case PluginEventType.KeyDown:\n this.handleKeyDownEvent(event.rawEvent);\n break;\n case PluginEventType.BeforeCutCopy:\n if (event.isCut) {\n this.handleCutEvent(event.rawEvent);\n }\n break;\n case PluginEventType.BeforePaste:\n this.handleBeforePasteEvent(event.sanitizingOption);\n break;\n case PluginEventType.ContentChanged:\n this.handleContentChangedEvent(event);\n break;\n case PluginEventType.EditorReady:\n this.handleContentChangedEvent();\n break;\n case PluginEventType.ExtractContentWithDom:\n this.handleExtractContentWithDomEvent(event.clonedRoot);\n break;\n case PluginEventType.ContextMenu:\n this.handleContextMenuEvent(event.rawEvent);\n break;\n case PluginEventType.EntityOperation:\n this.handleEntityOperationEvent(event);\n break;\n }\n\n if (this.editor?.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)) {\n inlineEntityOnPluginEvent(event, this.editor);\n }\n }\n\n private handleContextMenuEvent(event: UIEvent) {\n const node = event.target as Node;\n const entityElement = node && this.editor?.getElementAtCursor(getEntitySelector(), node);\n\n if (entityElement) {\n event.preventDefault();\n this.triggerEvent(entityElement, EntityOperation.ContextMenu, event);\n }\n }\n\n private handleCutEvent = (event: ClipboardEvent) => {\n const range = this.editor?.getSelectionRange();\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(event);\n }\n };\n\n private handleMouseUpEvent(event: PluginMouseUpEvent) {\n const { rawEvent, isClicking } = event;\n const node = rawEvent.target as Node;\n let entityElement: HTMLElement | null;\n\n if (\n this.editor &&\n isClicking &&\n node &&\n !!(entityElement = this.editor.getElementAtCursor(getEntitySelector(), node))\n ) {\n this.triggerEvent(entityElement, EntityOperation.Click, rawEvent);\n\n workaroundSelectionIssueForIE(this.editor);\n }\n }\n\n private handleKeyDownEvent(event: KeyboardEvent) {\n if (\n isCharacterValue(event) ||\n event.which == Keys.BACKSPACE ||\n event.which == Keys.DELETE ||\n event.which == Keys.ENTER\n ) {\n const range = this.editor?.getSelectionRange();\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(event);\n }\n }\n }\n\n private handleBeforePasteEvent(sanitizingOption: HtmlSanitizerOptions) {\n const range = this.editor?.getSelectionRange();\n\n if (range && !range.collapsed) {\n this.checkRemoveEntityForRange(null! /*rawEvent*/);\n }\n\n if (sanitizingOption.additionalAllowedCssClasses) {\n arrayPush(sanitizingOption.additionalAllowedCssClasses, ALLOWED_CSS_CLASSES);\n }\n }\n\n private handleContentChangedEvent(event?: ContentChangedEvent) {\n let shouldNormalizeDelimiters: boolean = false;\n // 1. find removed entities\n getObjectKeys(this.state.entityMap).forEach(id => {\n const item = this.state.entityMap[id];\n const element = item.element;\n\n if (this.editor && !item.isDeleted && !this.editor.contains(element)) {\n item.isDeleted = true;\n\n this.triggerEvent(element, EntityOperation.Overwrite);\n\n if (\n !shouldNormalizeDelimiters &&\n !element.isContentEditable &&\n !isBlockElement(element)\n ) {\n shouldNormalizeDelimiters = true;\n }\n }\n });\n\n // 2. collect all new entities\n const newEntities =\n event?.source == ChangeSource.InsertEntity && event.data\n ? [event.data as Entity]\n : this.getExistingEntities().filter(entity => {\n const item = this.state.entityMap[entity.id];\n\n return !item || item.element != entity.wrapper || item.isDeleted;\n });\n\n // 3. Add new entities to known entity list, and hydrate\n newEntities.forEach(entity => {\n const { wrapper, type, id, isReadonly } = entity;\n\n entity.id = this.ensureUniqueId(type, id, wrapper);\n commitEntity(wrapper, type, isReadonly, entity.id); // Use entity.id here because it is newly updated\n this.handleNewEntity(entity);\n });\n\n if (\n shouldNormalizeDelimiters &&\n this.editor?.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n normalizeDelimitersInEditor(this.editor);\n }\n }\n\n private handleEntityOperationEvent(event: EntityOperationEvent) {\n if (this.editor && REMOVE_ENTITY_OPERATIONS.indexOf(event.operation) >= 0) {\n const item = this.state.entityMap[event.entity.id];\n\n if (item) {\n item.isDeleted = true;\n }\n }\n }\n\n private handleExtractContentWithDomEvent(root: HTMLElement) {\n toArray(root.querySelectorAll(getEntitySelector())).forEach(element => {\n element.removeAttribute('contentEditable');\n\n this.triggerEvent(element as HTMLElement, EntityOperation.ReplaceTemporaryContent);\n });\n }\n\n private checkRemoveEntityForRange(event: Event) {\n const editableEntityElements: HTMLElement[] = [];\n const selector = getEntitySelector();\n this.editor?.queryElements(selector, QueryScope.OnSelection, element => {\n if (element.isContentEditable) {\n editableEntityElements.push(element);\n } else {\n this.triggerEvent(element, EntityOperation.Overwrite, event);\n }\n });\n\n // For editable entities, we need to check if it is fully or partially covered by current selection,\n // and trigger different events;\n if (this.editor && editableEntityElements.length > 0) {\n const inSelectionEntityElements = this.editor.queryElements(\n selector,\n QueryScope.InSelection\n );\n editableEntityElements.forEach(element => {\n const isFullyCovered = inSelectionEntityElements.indexOf(element) >= 0;\n this.triggerEvent(\n element,\n isFullyCovered ? EntityOperation.Overwrite : EntityOperation.PartialOverwrite,\n event\n );\n });\n }\n }\n\n private triggerEvent(element: HTMLElement, operation: EntityOperation, rawEvent?: Event) {\n const entity = element && getEntityFromElement(element);\n\n return entity\n ? this.editor?.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent,\n entity,\n })\n : null;\n }\n\n private handleNewEntity(entity: Entity) {\n const { wrapper } = entity;\n const event = this.triggerEvent(wrapper, EntityOperation.NewEntity);\n\n const newItem: KnownEntityItem = {\n element: entity.wrapper,\n };\n\n if (event?.shouldPersist) {\n newItem.canPersist = true;\n }\n\n this.state.entityMap[entity.id] = newItem;\n }\n\n private getExistingEntities(): Entity[] {\n return (\n this.editor\n ?.queryElements(getEntitySelector())\n .map(getEntityFromElement)\n .filter((x): x is Entity => !!x) ?? []\n );\n }\n\n private ensureUniqueId(type: string, id: string, wrapper: HTMLElement) {\n const match = ENTITY_ID_REGEX.exec(id);\n const baseId = (match ? id.substr(0, id.length - match[0].length) : id) || type;\n\n // Make sure entity id is unique\n let newId = '';\n\n for (let num = (match && parseInt(match[1])) || 0; ; num++) {\n newId = num > 0 ? `${baseId}_${num}` : baseId;\n\n const item = this.state.entityMap[newId];\n\n if (!item || item.element == wrapper) {\n break;\n }\n }\n\n return newId;\n }\n}\n\n/**\n * IE will show a resize border around the readonly content within content editable DIV\n * This is a workaround to remove it by temporarily move focus out of editor\n */\nconst workaroundSelectionIssueForIE = Browser.isIE\n ? (editor: IEditor) => {\n editor.runAsync(editor => {\n const workaroundButton = editor.getCustomData('ENTITY_IE_FOCUS_BUTTON', () => {\n const button = createElement(\n {\n tag: 'button',\n style: 'overflow:hidden;position:fixed;width:0;height:0;top:-1000px',\n },\n editor.getDocument()\n ) as HTMLElement;\n button.onblur = () => {\n button.style.display = 'none';\n };\n\n editor.insertNode(button, {\n position: ContentPosition.Outside,\n });\n\n return button;\n });\n\n workaroundButton.style.display = '';\n addRangeToSelection(createRange(workaroundButton, 0));\n });\n }\n : () => {};\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\n\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst Escape = 'Escape';\nconst Delete = 'Delete';\nconst mouseLeftButton = 0;\n\n/**\n * Detect image selection and help highlight the image\n */\nexport default class ImageSelection implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ImageSelection';\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?.select(null);\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (this.editor) {\n switch (event.eventType) {\n case PluginEventType.EnteredShadowEdit:\n case PluginEventType.LeavingShadowEdit:\n const selection = this.editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.ImageSelection) {\n this.editor.select(selection.image);\n }\n break;\n\n case PluginEventType.MouseUp:\n const target = event.rawEvent.target;\n if (\n safeInstanceOf(target, 'HTMLImageElement') &&\n target.isContentEditable &&\n event.rawEvent.button === mouseLeftButton\n ) {\n this.editor.select(target);\n }\n break;\n case PluginEventType.MouseDown:\n const mouseTarget = event.rawEvent.target;\n const mouseSelection = this.editor.getSelectionRangeEx();\n if (\n mouseSelection &&\n mouseSelection.type === SelectionRangeTypes.ImageSelection &&\n mouseSelection.image !== mouseTarget\n ) {\n this.editor.select(null);\n }\n break;\n case PluginEventType.KeyUp:\n const key = event.rawEvent.key;\n const keyDownSelection = this.editor.getSelectionRangeEx();\n if (keyDownSelection.type === SelectionRangeTypes.ImageSelection) {\n if (key === Escape) {\n this.editor.select(keyDownSelection.image, PositionType.Before);\n this.editor.getSelectionRange()?.collapse();\n event.rawEvent.stopPropagation();\n } else if (key === Delete) {\n this.editor.deleteNode(keyDownSelection.image);\n event.rawEvent.preventDefault();\n } else {\n this.editor.select(keyDownSelection.ranges[0]);\n }\n }\n break;\n case PluginEventType.ContextMenu:\n const contextMenuTarget = event.rawEvent.target;\n const actualSelection = this.editor.getSelectionRangeEx();\n if (\n safeInstanceOf(contextMenuTarget, 'HTMLImageElement') &&\n (actualSelection.type !== SelectionRangeTypes.ImageSelection ||\n actualSelection.image !== contextMenuTarget)\n ) {\n this.editor.select(contextMenuTarget);\n }\n }\n }\n }\n}\n","import { Browser, getObjectKeys, setColor } from 'roosterjs-editor-dom';\nimport {\n DocumentCommand,\n EditorOptions,\n IEditor,\n LifecyclePluginState,\n PluginEventType,\n PluginWithState,\n PluginEvent,\n ChangeSource,\n} from 'roosterjs-editor-types';\n\nconst CONTENT_EDITABLE_ATTRIBUTE_NAME = 'contenteditable';\nconst COMMANDS: Record = Browser.isFirefox\n ? {\n /**\n * Disable these object resizing for firefox since other browsers don't have these behaviors\n */\n [DocumentCommand.EnableObjectResizing]: (false as any) as string,\n [DocumentCommand.EnableInlineTableEditing]: (false as any) as string,\n }\n : Browser.isIE\n ? {\n /**\n * Change the default paragraph separator to DIV. This is mainly for IE since its default setting is P\n */\n [DocumentCommand.DefaultParagraphSeparator]: 'div',\n\n /**\n * Disable auto link feature in IE since we have our own implementation\n */\n [DocumentCommand.AutoUrlDetect]: (false as any) as string,\n }\n : {};\n\nconst DARK_MODE_DEFAULT_FORMAT = {\n backgroundColors: {\n darkModeColor: 'rgb(51,51,51)',\n lightModeColor: 'rgb(255,255,255)',\n },\n textColors: {\n darkModeColor: 'rgb(255,255,255)',\n lightModeColor: 'rgb(0,0,0)',\n },\n};\n\n/**\n * @internal\n * Lifecycle plugin handles editor initialization and disposing\n */\nexport default class LifecyclePlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private state: LifecyclePluginState;\n private initialContent: string;\n private initializer: (() => void) | null = null;\n private disposer: (() => void) | null = null;\n private adjustColor: () => void;\n\n /**\n * Construct a new instance of LifecyclePlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor(options: EditorOptions, contentDiv: HTMLDivElement) {\n this.initialContent = options.initialContent || contentDiv.innerHTML || '';\n\n // Make the container editable and set its selection styles\n if (contentDiv.getAttribute(CONTENT_EDITABLE_ATTRIBUTE_NAME) === null) {\n this.initializer = () => {\n contentDiv.contentEditable = 'true';\n contentDiv.style.userSelect = 'text';\n contentDiv.style.webkitUserSelect = 'text';\n };\n this.disposer = () => {\n contentDiv.style.userSelect = '';\n contentDiv.style.webkitUserSelect = '';\n contentDiv.removeAttribute(CONTENT_EDITABLE_ATTRIBUTE_NAME);\n };\n }\n this.adjustColor = options.doNotAdjustEditorColor\n ? () => {}\n : () => {\n const { textColors, backgroundColors } = DARK_MODE_DEFAULT_FORMAT;\n const { isDarkMode } = this.state;\n const darkColorHandler = this.editor?.getDarkColorHandler();\n setColor(\n contentDiv,\n textColors,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n setColor(\n contentDiv,\n backgroundColors,\n true /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n };\n\n const getDarkColor = options.getDarkColor ?? ((color: string) => color);\n const defaultFormat = options.defaultFormat ? { ...options.defaultFormat } : null;\n\n if (defaultFormat) {\n if (defaultFormat.textColor && !defaultFormat.textColors) {\n defaultFormat.textColors = {\n lightModeColor: defaultFormat.textColor,\n darkModeColor: getDarkColor(defaultFormat.textColor),\n };\n delete defaultFormat.textColor;\n }\n\n if (defaultFormat.backgroundColor && !defaultFormat.backgroundColors) {\n defaultFormat.backgroundColors = {\n lightModeColor: defaultFormat.backgroundColor,\n darkModeColor: getDarkColor(defaultFormat.backgroundColor),\n };\n delete defaultFormat.backgroundColor;\n }\n }\n\n this.state = {\n customData: {},\n defaultFormat,\n isDarkMode: !!options.inDarkMode,\n getDarkColor,\n onExternalContentTransform: options.onExternalContentTransform ?? null,\n experimentalFeatures: options.experimentalFeatures || [],\n shadowEditFragment: null,\n shadowEditEntities: null,\n shadowEditSelectionPath: null,\n shadowEditTableSelectionPath: null,\n shadowEditImageSelectionPath: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Lifecycle';\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 // Ensure initial content and its format\n this.editor.setContent(this.initialContent, false /*triggerContentChangedEvent*/);\n\n // Set content DIV to be editable\n this.initializer?.();\n\n // Set editor background color for dark mode\n this.adjustColor();\n\n // Do proper change for browsers to disable some browser-specified behaviors.\n this.adjustBrowserBehavior();\n\n // Let other plugins know that we are ready\n this.editor.triggerPluginEvent(PluginEventType.EditorReady, {}, true /*broadcast*/);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor?.triggerPluginEvent(PluginEventType.BeforeDispose, {}, true /*broadcast*/);\n\n getObjectKeys(this.state.customData).forEach(key => {\n const data = this.state.customData[key];\n\n if (data && data.disposer) {\n data.disposer(data.value);\n }\n\n delete this.state.customData[key];\n });\n\n if (this.disposer) {\n this.disposer();\n this.disposer = null;\n this.initializer = null;\n }\n\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n event.eventType == PluginEventType.ContentChanged &&\n (event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode)\n ) {\n this.state.isDarkMode = event.source == ChangeSource.SwitchToDarkMode;\n this.adjustColor();\n }\n }\n\n private adjustBrowserBehavior() {\n getObjectKeys(COMMANDS).forEach(command => {\n // Catch any possible exception since this should not block the initialization of editor\n try {\n this.editor?.getDocument().execCommand(command, false, COMMANDS[command]);\n } catch {}\n });\n }\n}\n","import { EditorPlugin, IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * MouseUpPlugin help trigger MouseUp event even when mouse up happens outside editor\n * as long as the mouse was pressed within Editor before\n */\nexport default class MouseUpPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private mouseUpEventListerAdded: boolean = false;\n private mouseDownX: number | null = null;\n private mouseDownY: number | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'MouseUp';\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.removeMouseUpEventListener();\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n this.editor &&\n event.eventType == PluginEventType.MouseDown &&\n !this.mouseUpEventListerAdded\n ) {\n this.editor\n .getDocument()\n .addEventListener('mouseup', this.onMouseUp, true /*setCapture*/);\n this.mouseUpEventListerAdded = true;\n this.mouseDownX = event.rawEvent.pageX;\n this.mouseDownY = event.rawEvent.pageY;\n }\n }\n private removeMouseUpEventListener() {\n if (this.editor && this.mouseUpEventListerAdded) {\n this.mouseUpEventListerAdded = false;\n this.editor.getDocument().removeEventListener('mouseup', this.onMouseUp, true);\n }\n }\n\n private onMouseUp = (rawEvent: MouseEvent) => {\n if (this.editor) {\n this.removeMouseUpEventListener();\n this.editor.triggerPluginEvent(PluginEventType.MouseUp, {\n rawEvent,\n isClicking: this.mouseDownX == rawEvent.pageX && this.mouseDownY == rawEvent.pageY,\n });\n }\n };\n}\n","import {\n changeElementTag,\n getTagOfNode,\n moveChildNodes,\n safeInstanceOf,\n toArray,\n} from 'roosterjs-editor-dom';\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * TODO: Rename this plugin since it is not only for table now\n *\n * NormalizeTable plugin makes sure each table in editor has TBODY/THEAD/TFOOT tag around TR tags\n *\n * When we retrieve HTML content using innerHTML, browser will always add TBODY around TR nodes if there is not.\n * This causes some issue when we restore the HTML content with selection path since the selection path is\n * deeply coupled with DOM structure. So we need to always make sure there is already TBODY tag whenever\n * new table is inserted, to make sure the selection path we created is correct.\n */\nexport default class NormalizeTablePlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'NormalizeTable';\n }\n\n /**\n * The first method that editor will call to a plugin when editor is initializing.\n * It will pass in the editor instance, plugin should take this chance to save the\n * editor reference so that it can call to any editor method or format API later.\n * @param editor The editor object\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * The last method that editor will call to a plugin before it is disposed.\n * Plugin can take this chance to clear the reference to editor. After this method is\n * called, plugin should not call to any editor method since it will result in error.\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Core method for a plugin. Once an event happens in editor, editor will call this\n * method of each plugin to handle the event as long as the event is not handled\n * exclusively by another plugin.\n * @param event The event to handle:\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case PluginEventType.EditorReady:\n case PluginEventType.ContentChanged:\n if (this.editor) {\n this.normalizeTables(this.editor.queryElements('table'));\n }\n break;\n\n case PluginEventType.BeforePaste:\n this.normalizeTables(toArray(event.fragment.querySelectorAll('table')));\n break;\n\n case PluginEventType.MouseDown:\n this.normalizeTableFromEvent(event.rawEvent);\n break;\n\n case PluginEventType.KeyDown:\n if (event.rawEvent.shiftKey) {\n this.normalizeTableFromEvent(event.rawEvent);\n }\n break;\n\n case PluginEventType.ExtractContentWithDom:\n normalizeListsForExport(event.clonedRoot);\n break;\n }\n }\n\n private normalizeTableFromEvent(event: KeyboardEvent | MouseEvent) {\n const table = this.editor?.getElementAtCursor('table', event.target as Node);\n\n if (table) {\n this.normalizeTables([table]);\n }\n }\n\n private normalizeTables(tables: HTMLTableElement[]) {\n if (this.editor && tables.length > 0) {\n const rangeEx = this.editor.getSelectionRangeEx();\n const { startContainer, endContainer, startOffset, endOffset } =\n (rangeEx?.type == SelectionRangeTypes.Normal && rangeEx.ranges[0]) || {};\n\n const isChanged = normalizeTables(tables);\n\n if (isChanged) {\n if (\n startContainer &&\n endContainer &&\n typeof startOffset === 'number' &&\n typeof endOffset === 'number'\n ) {\n this.editor.select(startContainer, startOffset, endContainer, endOffset);\n } else if (\n rangeEx?.type == SelectionRangeTypes.TableSelection &&\n rangeEx.coordinates\n ) {\n this.editor.select(rangeEx.table, rangeEx.coordinates);\n }\n }\n }\n }\n}\n\nfunction normalizeTables(tables: HTMLTableElement[]) {\n let isDOMChanged = false;\n tables.forEach(table => {\n let tbody: HTMLTableSectionElement | null = null;\n\n for (let child = table.firstChild; child; child = child.nextSibling) {\n const tag = getTagOfNode(child);\n switch (tag) {\n case 'TR':\n if (!tbody) {\n tbody = table.ownerDocument.createElement('tbody');\n table.insertBefore(tbody, child);\n }\n\n tbody.appendChild(child);\n child = tbody;\n isDOMChanged = true;\n\n break;\n case 'TBODY':\n if (tbody) {\n moveChildNodes(tbody, child, true /*keepExistingChildren*/);\n child.parentNode?.removeChild(child);\n child = tbody;\n isDOMChanged = true;\n } else {\n tbody = child as HTMLTableSectionElement;\n }\n break;\n default:\n tbody = null;\n break;\n }\n }\n\n const colgroups = table.querySelectorAll('colgroup');\n const thead = table.querySelector('thead');\n if (thead) {\n colgroups.forEach(colgroup => {\n if (!thead.contains(colgroup)) {\n thead.appendChild(colgroup);\n }\n });\n }\n });\n\n return isDOMChanged;\n}\n\nfunction normalizeListsForExport(root: ParentNode) {\n toArray(root.querySelectorAll('li')).forEach(li => {\n const prevElement = li.previousSibling;\n\n if (li.style.display == 'block' && safeInstanceOf(prevElement, 'HTMLLIElement')) {\n li.style.removeProperty('display');\n\n prevElement.appendChild(changeElementTag(li, 'div'));\n }\n });\n}\n","import { isCharacterValue, Position, setColor } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n IEditor,\n Keys,\n NodePosition,\n PendingFormatStatePluginState,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * @internal\n * PendingFormatStatePlugin handles pending format state management\n */\nexport default class PendingFormatStatePlugin\n implements PluginWithState {\n private editor: IEditor | null = null;\n private state: PendingFormatStatePluginState;\n\n /**\n * Construct a new instance of PendingFormatStatePlugin\n * @param options The editor options\n * @param contentDiv The editor content DIV\n */\n constructor() {\n this.state = {\n pendableFormatPosition: null,\n pendableFormatState: null,\n pendableFormatSpan: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'PendingFormatState';\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 this.clear();\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\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 PluginEventType.PendingFormatStateChanged:\n // Got PendingFormatStateChanged event, cache current position and pending format if a format is passed in\n // otherwise clear existing pending format.\n if (event.formatState) {\n this.state.pendableFormatPosition = this.getCurrentPosition();\n this.state.pendableFormatState = event.formatState;\n this.state.pendableFormatSpan = event.formatCallback\n ? this.createPendingFormatSpan(event.formatCallback)\n : null;\n } else {\n this.clear();\n }\n\n break;\n case PluginEventType.KeyDown:\n case PluginEventType.MouseDown:\n case PluginEventType.ContentChanged:\n let currentPosition: NodePosition | null = null;\n if (\n this.editor &&\n event.eventType == PluginEventType.KeyDown &&\n isCharacterValue(event.rawEvent) &&\n this.state.pendableFormatSpan\n ) {\n this.state.pendableFormatSpan.removeAttribute('contentEditable');\n this.editor.insertNode(this.state.pendableFormatSpan);\n this.editor.select(\n this.state.pendableFormatSpan,\n PositionType.Begin,\n this.state.pendableFormatSpan,\n PositionType.End\n );\n this.clear();\n } else if (\n (event.eventType == PluginEventType.KeyDown &&\n event.rawEvent.which >= Keys.PAGEUP &&\n event.rawEvent.which <= Keys.DOWN) ||\n (this.state.pendableFormatPosition &&\n (currentPosition = this.getCurrentPosition()) &&\n !this.state.pendableFormatPosition.equalTo(currentPosition)) ||\n (event.eventType == PluginEventType.ContentChanged &&\n (event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode))\n ) {\n // If content or position is changed (by keyboard, mouse, or code),\n // check if current position is still the same with the cached one (if exist),\n // and clear cached format if position is changed since it is out-of-date now\n this.clear();\n }\n\n break;\n }\n }\n\n private clear() {\n this.state.pendableFormatPosition = null;\n this.state.pendableFormatState = null;\n this.state.pendableFormatSpan = null;\n }\n\n private getCurrentPosition() {\n let range = this.editor?.getSelectionRange();\n return (range && Position.getStart(range).normalize()) ?? null;\n }\n\n private createPendingFormatSpan(\n callback: (element: HTMLElement, isInnerNode?: boolean) => any\n ) {\n let span = this.state.pendableFormatSpan;\n\n if (!span && this.editor) {\n const currentStyle = this.editor.getStyleBasedFormatState();\n const doc = this.editor.getDocument();\n const isDarkMode = this.editor.isDarkMode();\n\n span = doc.createElement('span');\n span.contentEditable = 'true';\n span.appendChild(doc.createTextNode(ZERO_WIDTH_SPACE));\n\n span.style.setProperty('font-family', currentStyle.fontName ?? null);\n span.style.setProperty('font-size', currentStyle.fontSize ?? null);\n\n const darkColorHandler = this.editor.getDarkColorHandler();\n\n if (currentStyle.textColors || currentStyle.textColor) {\n setColor(\n span,\n (currentStyle.textColors || currentStyle.textColor)!,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n }\n\n if (currentStyle.backgroundColors || currentStyle.backgroundColor) {\n setColor(\n span,\n (currentStyle.backgroundColors || currentStyle.backgroundColor)!,\n true /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n }\n }\n\n if (span) {\n callback(span);\n }\n\n return span;\n }\n}\n","import { EditorPlugin, IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport {\n Browser,\n findClosestElementAncestor,\n getTagOfNode,\n isCtrlOrMetaPressed,\n Position,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Typing Component helps to ensure typing is always happening under a DOM container\n */\nexport default class TypeInContainerPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TypeInContainer';\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 private isRangeEmpty(range: Range) {\n if (\n range.collapsed &&\n range.startContainer.nodeType === Node.ELEMENT_NODE &&\n getTagOfNode(range.startContainer) == 'DIV' &&\n !range.startContainer.firstChild\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n // We need to check if the ctrl key or the meta key is pressed,\n // browsers like Safari fire the \"keypress\" event when the meta key is pressed.\n if (\n event.eventType == PluginEventType.KeyPress &&\n this.editor &&\n !(event.rawEvent && isCtrlOrMetaPressed(event.rawEvent))\n ) {\n // If normalization was not possible before the keypress,\n // check again after the keyboard event has been processed by browser native behavior.\n //\n // This handles the case where the keyboard event that first inserts content happens when\n // there is already content under the selection (e.g. Ctrl+a -> type new content).\n //\n // Only schedule when the range is not collapsed to catch this edge case.\n let range = this.editor.getSelectionRange();\n\n const styledAncestor =\n range &&\n findClosestElementAncestor(range.startContainer, undefined /* root */, '[style]');\n\n if (!range || (!this.isRangeEmpty(range) && this.editor.contains(styledAncestor))) {\n return;\n }\n\n if (range.collapsed) {\n this.editor.ensureTypeInContainer(Position.getStart(range), event.rawEvent);\n } else {\n const callback = () => {\n const focusedPosition = this.editor?.getFocusedPosition();\n if (focusedPosition) {\n this.editor?.ensureTypeInContainer(focusedPosition, event.rawEvent);\n }\n };\n\n if (Browser.isMobileOrTablet) {\n this.editor.getDocument().defaultView?.setTimeout(callback, 100);\n } else {\n this.editor.runAsync(callback);\n }\n }\n }\n }\n}\n","import {\n ChangeSource,\n ContentChangedEvent,\n EditorOptions,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n PluginWithState,\n Snapshot,\n UndoPluginState,\n UndoSnapshotsService,\n} from 'roosterjs-editor-types';\nimport {\n addSnapshotV2,\n canMoveCurrentSnapshot,\n clearProceedingSnapshotsV2,\n createSnapshots,\n isCtrlOrMetaPressed,\n moveCurrentSnapshot,\n canUndoAutoComplete,\n} from 'roosterjs-editor-dom';\n\n// Max stack size that cannot be exceeded. When exceeded, old undo history will be dropped\n// to keep size under limit. This is kept at 10MB\nconst MAX_SIZE_LIMIT = 1e7;\n\n/**\n * @internal\n * Provides snapshot based undo service for Editor\n */\nexport default class UndoPlugin implements PluginWithState {\n private editor: IEditor | null = null;\n private lastKeyPress: number | null = null;\n private state: UndoPluginState;\n\n /**\n * Construct a new instance of UndoPlugin\n * @param options The wrapper of the state object\n */\n constructor(options: EditorOptions) {\n this.state = {\n snapshotsService:\n options.undoMetadataSnapshotService ||\n createUndoSnapshotServiceBridge(options.undoSnapshotService) ||\n createUndoSnapshots(),\n isRestoring: false,\n hasNewContent: false,\n isNested: false,\n autoCompletePosition: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Undo';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Get plugin state object\n */\n getState() {\n return this.state;\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * @param event The event to check\n */\n willHandleEventExclusively(event: PluginEvent) {\n return (\n event.eventType == PluginEventType.KeyDown &&\n event.rawEvent.which == Keys.BACKSPACE &&\n !event.rawEvent.ctrlKey &&\n this.canUndoAutoComplete()\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent): void {\n // if editor is in IME, don't do anything\n if (!this.editor || this.editor.isInIME()) {\n return;\n }\n\n switch (event.eventType) {\n case PluginEventType.EditorReady:\n const undoState = this.editor.getUndoState();\n if (!undoState.canUndo && !undoState.canRedo) {\n // Only add initial snapshot when there is no existing snapshot\n // Otherwise preserved undo/redo state may be ruined\n this.addUndoSnapshot();\n }\n break;\n case PluginEventType.KeyDown:\n this.onKeyDown(event.rawEvent);\n break;\n case PluginEventType.KeyPress:\n this.onKeyPress(event.rawEvent);\n break;\n case PluginEventType.CompositionEnd:\n this.clearRedoForInput();\n this.addUndoSnapshot();\n break;\n case PluginEventType.ContentChanged:\n this.onContentChanged(event);\n break;\n case PluginEventType.BeforeKeyboardEditing:\n this.onBeforeKeyboardEditing(event.rawEvent);\n break;\n }\n }\n\n private onKeyDown(evt: KeyboardEvent): void {\n // Handle backspace/delete when there is a selection to take a snapshot\n // since we want the state prior to deletion restorable\n // Ignore if keycombo is ALT+BACKSPACE\n if ((evt.which == Keys.BACKSPACE && !evt.altKey) || evt.which == Keys.DELETE) {\n if (evt.which == Keys.BACKSPACE && !evt.ctrlKey && this.canUndoAutoComplete()) {\n evt.preventDefault();\n this.editor?.undo();\n this.state.autoCompletePosition = null;\n this.lastKeyPress = evt.which;\n } else if (!evt.defaultPrevented) {\n let selectionRange = this.editor?.getSelectionRange();\n\n // Add snapshot when\n // 1. Something has been selected (not collapsed), or\n // 2. It has a different key code from the last keyDown event (to prevent adding too many snapshot when keeping press the same key), or\n // 3. Ctrl/Meta key is pressed so that a whole word will be deleted\n if (\n selectionRange &&\n (!selectionRange.collapsed ||\n this.lastKeyPress != evt.which ||\n isCtrlOrMetaPressed(evt))\n ) {\n this.addUndoSnapshot();\n }\n\n // Since some content is deleted, always set hasNewContent to true so that we will take undo snapshot next time\n this.state.hasNewContent = true;\n this.lastKeyPress = evt.which;\n }\n } else if (evt.which >= Keys.PAGEUP && evt.which <= Keys.DOWN) {\n // PageUp, PageDown, Home, End, Left, Right, Up, Down\n if (this.state.hasNewContent) {\n this.addUndoSnapshot();\n }\n this.lastKeyPress = 0;\n } else if (this.lastKeyPress == Keys.BACKSPACE || this.lastKeyPress == Keys.DELETE) {\n if (this.state.hasNewContent) {\n this.addUndoSnapshot();\n }\n }\n }\n\n private onKeyPress(evt: KeyboardEvent): void {\n if (evt.metaKey) {\n // if metaKey is pressed, simply return since no actual effect will be taken on the editor.\n // this is to prevent changing hasNewContent to true when meta + v to paste on Safari.\n return;\n }\n\n let range = this.editor?.getSelectionRange();\n if (\n (range && !range.collapsed) ||\n (evt.which == Keys.SPACE && this.lastKeyPress != Keys.SPACE) ||\n evt.which == Keys.ENTER\n ) {\n this.addUndoSnapshot();\n if (evt.which == Keys.ENTER) {\n // Treat ENTER as new content so if there is no input after ENTER and undo,\n // we restore the snapshot before ENTER\n this.state.hasNewContent = true;\n }\n } else {\n this.clearRedoForInput();\n }\n\n this.lastKeyPress = evt.which;\n }\n\n private onBeforeKeyboardEditing(event: KeyboardEvent) {\n // For keyboard event (triggered from Content Model), we can get its keycode from event.data\n // And when user is keep pressing the same key, mark editor with \"hasNewContent\" so that next time user\n // do some other action or press a different key, we will add undo snapshot\n if (event.which != this.lastKeyPress) {\n this.addUndoSnapshot();\n }\n\n this.lastKeyPress = event.which;\n this.state.hasNewContent = true;\n }\n\n private onContentChanged(event: ContentChangedEvent) {\n if (\n !(\n this.state.isRestoring ||\n event.source == ChangeSource.SwitchToDarkMode ||\n event.source == ChangeSource.SwitchToLightMode ||\n event.source == ChangeSource.Keyboard\n )\n ) {\n this.clearRedoForInput();\n }\n }\n\n private clearRedoForInput() {\n this.state.snapshotsService.clearRedo();\n this.lastKeyPress = 0;\n this.state.hasNewContent = true;\n }\n\n private canUndoAutoComplete() {\n const focusedPosition = this.editor?.getFocusedPosition();\n return (\n this.state.snapshotsService.canUndoAutoComplete() &&\n !!focusedPosition &&\n !!this.state.autoCompletePosition?.equalTo(focusedPosition)\n );\n }\n\n private addUndoSnapshot() {\n this.editor?.addUndoSnapshot();\n this.state.autoCompletePosition = null;\n }\n}\n\nfunction createUndoSnapshots(): UndoSnapshotsService {\n const snapshots = createSnapshots(MAX_SIZE_LIMIT);\n\n return {\n canMove: (delta: number): boolean => canMoveCurrentSnapshot(snapshots, delta),\n move: (delta: number): Snapshot | null => moveCurrentSnapshot(snapshots, delta),\n addSnapshot: (snapshot: Snapshot, isAutoCompleteSnapshot: boolean) =>\n addSnapshotV2(snapshots, snapshot, isAutoCompleteSnapshot),\n clearRedo: () => clearProceedingSnapshotsV2(snapshots),\n canUndoAutoComplete: () => canUndoAutoComplete(snapshots),\n };\n}\n\nfunction createUndoSnapshotServiceBridge(\n service: UndoSnapshotsService | undefined\n): UndoSnapshotsService | undefined {\n let html: string | null;\n return service\n ? {\n canMove: (delta: number) => service.canMove(delta),\n move: (delta: number): Snapshot | null =>\n (html = service.move(delta)) ? { html, metadata: null, knownColors: [] } : null,\n addSnapshot: (snapshot: Snapshot, isAutoCompleteSnapshot: boolean) =>\n service.addSnapshot(\n snapshot.html +\n (snapshot.metadata ? `` : ''),\n isAutoCompleteSnapshot\n ),\n clearRedo: () => service.clearRedo(),\n canUndoAutoComplete: () => service.canUndoAutoComplete(),\n }\n : undefined;\n}\n","import CopyPastePlugin from './CopyPastePlugin';\nimport DOMEventPlugin from './DOMEventPlugin';\nimport EditPlugin from './EditPlugin';\nimport EntityPlugin from './EntityPlugin';\nimport ImageSelection from './ImageSelection';\nimport LifecyclePlugin from './LifecyclePlugin';\nimport MouseUpPlugin from './MouseUpPlugin';\nimport NormalizeTablePlugin from './NormalizeTablePlugin';\nimport PendingFormatStatePlugin from './PendingFormatStatePlugin';\nimport TypeInContainerPlugin from './TypeInContainerPlugin';\nimport UndoPlugin from './UndoPlugin';\nimport { CorePlugins, EditorOptions, PluginState } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport interface CreateCorePluginResponse extends CorePlugins {\n _placeholder: null;\n}\n\n/**\n * @internal\n * Create Core Plugins\n * @param contentDiv Content DIV of editor\n * @param options Editor options\n */\nexport default function createCorePlugins(\n contentDiv: HTMLDivElement,\n options: EditorOptions\n): CreateCorePluginResponse {\n const map = options.corePluginOverride || {};\n // The order matters, some plugin needs to be put before/after others to make sure event\n // can be handled in right order\n return {\n typeInContainer: map.typeInContainer || new TypeInContainerPlugin(),\n edit: map.edit || new EditPlugin(),\n pendingFormatState: map.pendingFormatState || new PendingFormatStatePlugin(),\n _placeholder: null,\n typeAfterLink: null!, //deprecated after firefox update\n undo: map.undo || new UndoPlugin(options),\n domEvent: map.domEvent || new DOMEventPlugin(options, contentDiv),\n mouseUp: map.mouseUp || new MouseUpPlugin(),\n copyPaste: map.copyPaste || new CopyPastePlugin(options),\n entity: map.entity || new EntityPlugin(),\n imageSelection: map.imageSelection || new ImageSelection(),\n normalizeTable: map.normalizeTable || new NormalizeTablePlugin(),\n lifecycle: map.lifecycle || new LifecyclePlugin(options, contentDiv),\n };\n}\n\n/**\n * @internal\n * Get plugin state of core plugins\n * @param corePlugins CorePlugins object\n */\nexport function getPluginState(corePlugins: CorePlugins): PluginState {\n return {\n domEvent: corePlugins.domEvent.getState(),\n pendingFormatState: corePlugins.pendingFormatState.getState(),\n edit: corePlugins.edit.getState(),\n lifecycle: corePlugins.lifecycle.getState(),\n undo: corePlugins.undo.getState(),\n entity: corePlugins.entity.getState(),\n copyPaste: corePlugins.copyPaste.getState(),\n };\n}\n","import { VCell } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Executes an action to all the cells within the selection range.\n * @param callback action to apply on each selected cell\n * @returns the amount of cells modified\n */\nexport const forEachSelectedCell = (vTable: VTable, callback: (cell: VCell) => void): void => {\n if (vTable.selection) {\n const { lastCell, firstCell } = vTable.selection;\n\n for (let y = firstCell.y; y <= lastCell.y; y++) {\n for (let x = firstCell.x; x <= lastCell.x; x++) {\n if (vTable.cells && vTable.cells[y][x]?.td) {\n callback(vTable.cells[y][x]);\n }\n }\n }\n }\n};\n","import {\n addDelimiters,\n arrayPush,\n createRange,\n getDelimiterFromElement,\n getEntityFromElement,\n getEntitySelector,\n isBlockElement,\n isCharacterValue,\n matchesSelector,\n Position,\n safeInstanceOf,\n splitTextNode,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n DelimiterClasses,\n Entity,\n IEditor,\n Keys,\n NodeType,\n PluginEvent,\n PluginEventType,\n PluginKeyDownEvent,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\nconst DELIMITER_SELECTOR =\n '.' + DelimiterClasses.DELIMITER_AFTER + ',.' + DelimiterClasses.DELIMITER_BEFORE;\nconst ZERO_WIDTH_SPACE = '\\u200B';\nconst INLINE_ENTITY_SELECTOR = 'span' + getEntitySelector();\n\nexport function inlineEntityOnPluginEvent(event: PluginEvent, editor: IEditor) {\n switch (event.eventType) {\n case PluginEventType.ContentChanged:\n if (event.source === ChangeSource.SetContent) {\n normalizeDelimitersInEditor(editor);\n }\n break;\n case PluginEventType.EditorReady:\n normalizeDelimitersInEditor(editor);\n break;\n\n case PluginEventType.BeforePaste:\n const { fragment, sanitizingOption } = event;\n addDelimitersIfNeeded(fragment.querySelectorAll(INLINE_ENTITY_SELECTOR));\n\n if (sanitizingOption.additionalAllowedCssClasses) {\n arrayPush(sanitizingOption.additionalAllowedCssClasses, [\n DelimiterClasses.DELIMITER_AFTER,\n DelimiterClasses.DELIMITER_BEFORE,\n ]);\n }\n break;\n\n case PluginEventType.ExtractContentWithDom:\n case PluginEventType.BeforeCutCopy:\n event.clonedRoot.querySelectorAll(DELIMITER_SELECTOR).forEach(node => {\n if (getDelimiterFromElement(node)) {\n removeNode(node);\n } else {\n removeDelimiterAttr(node);\n }\n });\n break;\n\n case PluginEventType.KeyDown:\n handleKeyDownEvent(editor, event);\n break;\n }\n}\n\nfunction preventTypeInDelimiter(delimiter: HTMLElement) {\n delimiter.normalize();\n const textNode = delimiter.firstChild as Node;\n const index = textNode.nodeValue?.indexOf(ZERO_WIDTH_SPACE) ?? -1;\n if (index >= 0) {\n splitTextNode(textNode, index == 0 ? 1 : index, false /* returnFirstPart */);\n let nodeToMove: Node | undefined;\n delimiter.childNodes.forEach(node => {\n if (node.nodeValue !== ZERO_WIDTH_SPACE) {\n nodeToMove = node;\n }\n });\n if (nodeToMove) {\n delimiter.parentElement?.insertBefore(\n nodeToMove,\n delimiter.className == DelimiterClasses.DELIMITER_BEFORE\n ? delimiter\n : delimiter.nextSibling\n );\n const selection = nodeToMove.ownerDocument?.getSelection();\n\n if (selection) {\n selection.setPosition(\n nodeToMove,\n new Position(nodeToMove, PositionType.End).offset\n );\n }\n }\n }\n}\n\n/**\n * @internal\n */\nexport function normalizeDelimitersInEditor(editor: IEditor) {\n removeInvalidDelimiters(editor.queryElements(DELIMITER_SELECTOR));\n addDelimitersIfNeeded(editor.queryElements(INLINE_ENTITY_SELECTOR));\n}\n\nfunction addDelimitersIfNeeded(nodes: Element[] | NodeListOf) {\n nodes.forEach(node => {\n if (isEntityElement(node)) {\n addDelimiters(node);\n }\n });\n}\n\nfunction isEntityElement(node: Node | null): node is HTMLElement {\n return !!(\n node &&\n safeInstanceOf(node, 'HTMLElement') &&\n isReadOnly(getEntityFromElement(node))\n );\n}\n\nfunction removeNode(el: Node | undefined | null) {\n el?.parentElement?.removeChild(el);\n}\n\nfunction isReadOnly(entity: Entity | null) {\n return (\n entity?.isReadonly &&\n !isBlockElement(entity.wrapper) &&\n safeInstanceOf(entity.wrapper, 'HTMLElement')\n );\n}\n\nfunction removeInvalidDelimiters(nodes: Element[] | NodeListOf) {\n nodes.forEach(node => {\n if (getDelimiterFromElement(node)) {\n const sibling = node.classList.contains(DelimiterClasses.DELIMITER_BEFORE)\n ? node.nextElementSibling\n : node.previousElementSibling;\n if (!(safeInstanceOf(sibling, 'HTMLElement') && getEntityFromElement(sibling))) {\n removeNode(node);\n }\n } else {\n removeDelimiterAttr(node);\n }\n });\n}\n\nfunction removeDelimiterAttr(node: Element | undefined | null, checkEntity: boolean = true) {\n if (!node) {\n return;\n }\n\n const isAfter = node.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n const entitySibling = isAfter ? node.previousElementSibling : node.nextElementSibling;\n if (checkEntity && entitySibling && isEntityElement(entitySibling)) {\n return;\n }\n\n node.classList.remove(DelimiterClasses.DELIMITER_AFTER, DelimiterClasses.DELIMITER_BEFORE);\n\n node.normalize();\n node.childNodes.forEach(cn => {\n const index = cn.textContent?.indexOf(ZERO_WIDTH_SPACE) ?? -1;\n if (index >= 0) {\n createRange(cn, index, cn, index + 1)?.deleteContents();\n }\n });\n}\n\nfunction handleCollapsedEnter(editor: IEditor, delimiter: HTMLElement) {\n const isAfter = delimiter.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n const entity = !isAfter ? delimiter.nextSibling : delimiter.previousSibling;\n const block = getBlock(editor, delimiter);\n\n editor.runAsync(() => {\n if (!block) {\n return;\n }\n const blockToCheck = isAfter ? block.nextSibling : block.previousSibling;\n if (blockToCheck && safeInstanceOf(blockToCheck, 'HTMLElement')) {\n const delimiters = blockToCheck.querySelectorAll(DELIMITER_SELECTOR);\n // Check if the last or first delimiter still contain the delimiter class and remove it.\n const delimiterToCheck = delimiters.item(isAfter ? 0 : delimiters.length - 1);\n removeDelimiterAttr(delimiterToCheck);\n }\n\n if (isEntityElement(entity)) {\n const { nextElementSibling, previousElementSibling } = entity;\n [nextElementSibling, previousElementSibling].forEach(el => {\n // Check if after Enter the ZWS got removed but we still have a element with the class\n // Remove the attributes of the element if it is invalid now.\n if (el && matchesSelector(el, DELIMITER_SELECTOR) && !getDelimiterFromElement(el)) {\n removeDelimiterAttr(el, false /* checkEntity */);\n }\n });\n // Add delimiters to the entity if needed because on Enter we can sometimes lose the ZWS of the element.\n addDelimiters(entity);\n }\n });\n}\n\nconst getPosition = (container: HTMLElement | null) => {\n if (container && getDelimiterFromElement(container)) {\n const isAfter = container.classList.contains(DelimiterClasses.DELIMITER_AFTER);\n return new Position(container, isAfter ? PositionType.After : PositionType.Before);\n }\n return undefined;\n};\n\nfunction getBlock(editor: IEditor, element: Node | undefined) {\n if (!element) {\n return undefined;\n }\n\n let block = editor.getBlockElementAtNode(element)?.getStartNode();\n\n while (block && !isBlockElement(block)) {\n block = editor.contains(block.parentElement) ? block.parentElement! : undefined;\n }\n\n return block;\n}\n\nfunction handleSelectionNotCollapsed(editor: IEditor, range: Range, event: KeyboardEvent) {\n const { startContainer, endContainer, startOffset, endOffset } = range;\n\n const startElement = editor.getElementAtCursor(DELIMITER_SELECTOR, startContainer);\n const endElement = editor.getElementAtCursor(DELIMITER_SELECTOR, endContainer);\n\n const startUpdate = getPosition(startElement);\n const endUpdate = getPosition(endElement);\n\n if (startUpdate || endUpdate) {\n editor.select(\n startUpdate ?? new Position(startContainer, startOffset),\n endUpdate ?? new Position(endContainer, endOffset)\n );\n }\n editor.runAsync(aEditor => {\n const delimiter = aEditor.getElementAtCursor(DELIMITER_SELECTOR);\n if (delimiter) {\n preventTypeInDelimiter(delimiter);\n if (event.which === Keys.ENTER) {\n removeDelimiterAttr(delimiter);\n }\n }\n });\n}\n\nfunction handleKeyDownEvent(editor: IEditor, event: PluginKeyDownEvent) {\n const range = editor.getSelectionRangeEx();\n const { rawEvent } = event;\n if (range.type != SelectionRangeTypes.Normal) {\n return;\n }\n\n if (range.areAllCollapsed && (isCharacterValue(rawEvent) || rawEvent.which === Keys.ENTER)) {\n const position = editor.getFocusedPosition()?.normalize();\n if (!position) {\n return;\n }\n\n const { element, node } = position;\n const refNode = element == node ? element.childNodes.item(position.offset) : element;\n\n const delimiter = editor.getElementAtCursor(DELIMITER_SELECTOR, refNode);\n if (!delimiter) {\n return;\n }\n\n if (rawEvent.which === Keys.ENTER) {\n handleCollapsedEnter(editor, delimiter);\n } else if (delimiter.firstChild?.nodeType == NodeType.Text) {\n editor.runAsync(() => preventTypeInDelimiter(delimiter));\n }\n } else if (!range.areAllCollapsed && !rawEvent.shiftKey && rawEvent.which != Keys.SHIFT) {\n const currentRange = range.ranges[0];\n if (!currentRange) {\n return;\n }\n handleSelectionNotCollapsed(editor, currentRange, rawEvent);\n }\n}\n","import { isWholeTableSelected, VTable } from 'roosterjs-editor-dom';\nimport { VCell } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Remove the cells outside of the selection.\n * @param vTable VTable to remove selection\n */\nexport const removeCellsOutsideSelection = (vTable: VTable) => {\n if (vTable.selection) {\n if (isWholeTableSelected(vTable, vTable.selection)) {\n return;\n }\n\n vTable.table.style.removeProperty('width');\n vTable.table.style.removeProperty('height');\n\n const { firstCell, lastCell } = vTable.selection;\n const resultCells: VCell[][] = [];\n\n const firstX = firstCell.x;\n const firstY = firstCell.y;\n const lastX = lastCell.x;\n const lastY = lastCell.y;\n\n if (vTable.cells) {\n vTable.cells.forEach((row, y) => {\n row = row.filter((_, x) => y >= firstY && y <= lastY && x >= firstX && x <= lastX);\n if (row.length > 0) {\n resultCells.push(row);\n }\n });\n vTable.cells = resultCells;\n }\n }\n};\n","import { ColorKeyAndValue, DarkColorHandler, ModeIndependentColor } from 'roosterjs-editor-types';\nimport { getObjectKeys, parseColor, setColor } from 'roosterjs-editor-dom';\n\nconst VARIABLE_REGEX = /^\\s*var\\(\\s*(\\-\\-[a-zA-Z0-9\\-_]+)\\s*(?:,\\s*(.*))?\\)\\s*$/;\nconst VARIABLE_PREFIX = 'var(';\nconst COLOR_VAR_PREFIX = 'darkColor';\nconst enum ColorAttributeEnum {\n CssColor = 0,\n HtmlColor = 1,\n}\nconst ColorAttributeName: { [key in ColorAttributeEnum]: string }[] = [\n {\n [ColorAttributeEnum.CssColor]: 'color',\n [ColorAttributeEnum.HtmlColor]: 'color',\n },\n {\n [ColorAttributeEnum.CssColor]: 'background-color',\n [ColorAttributeEnum.HtmlColor]: 'bgcolor',\n },\n];\n\n/**\n * @internal\n */\nexport default class DarkColorHandlerImpl implements DarkColorHandler {\n private knownColors: Record> = {};\n\n constructor(private contentDiv: HTMLElement, private getDarkColor: (color: string) => string) {}\n\n /**\n * Get a copy of known colors\n * @returns\n */\n getKnownColorsCopy() {\n return Object.values(this.knownColors);\n }\n\n /**\n * Given a light mode color value and an optional dark mode color value, register this color\n * so that editor can handle it, then return the CSS color value for current color mode.\n * @param lightModeColor Light mode color value\n * @param isDarkMode Whether current color mode is dark mode\n * @param darkModeColor Optional dark mode color value. If not passed, we will calculate one.\n */\n registerColor(lightModeColor: string, isDarkMode: boolean, darkModeColor?: string): string {\n const parsedColor = this.parseColorValue(lightModeColor);\n let colorKey: string | undefined;\n\n if (parsedColor) {\n lightModeColor = parsedColor.lightModeColor;\n darkModeColor = parsedColor.darkModeColor || darkModeColor;\n colorKey = parsedColor.key;\n }\n\n if (isDarkMode && lightModeColor) {\n colorKey =\n colorKey || `--${COLOR_VAR_PREFIX}_${lightModeColor.replace(/[^\\d\\w]/g, '_')}`;\n\n if (!this.knownColors[colorKey]) {\n darkModeColor = darkModeColor || this.getDarkColor(lightModeColor);\n\n this.knownColors[colorKey] = { lightModeColor, darkModeColor };\n this.contentDiv.style.setProperty(colorKey, darkModeColor);\n }\n\n return `var(${colorKey}, ${lightModeColor})`;\n } else {\n return lightModeColor;\n }\n }\n\n /**\n * Reset known color record, clean up registered color variables.\n */\n reset(): void {\n getObjectKeys(this.knownColors).forEach(key => this.contentDiv.style.removeProperty(key));\n this.knownColors = {};\n }\n\n /**\n * Parse an existing color value, if it is in variable-based color format, extract color key,\n * light color and query related dark color if any\n * @param color The color string to parse\n * @param isInDarkMode Whether current content is in dark mode. When set to true, if the color value is not in dark var format,\n * we will treat is as a dark mode color and try to find a matched dark mode color.\n */\n parseColorValue(color: string | undefined | null, isInDarkMode?: boolean): ColorKeyAndValue {\n let key: string | undefined;\n let lightModeColor = '';\n let darkModeColor: string | undefined;\n\n if (color) {\n const match = color.startsWith(VARIABLE_PREFIX) ? VARIABLE_REGEX.exec(color) : null;\n\n if (match) {\n if (match[2]) {\n key = match[1];\n lightModeColor = match[2];\n darkModeColor = this.knownColors[key]?.darkModeColor;\n } else {\n lightModeColor = '';\n }\n } else if (isInDarkMode) {\n // If editor is in dark mode but the color is not in dark color format, it is possible the color was inserted from external code\n // without any light color info. So we first try to see if there is a known dark color can match this color, and use its related\n // light color as light mode color. Otherwise we need to drop this color to avoid show \"white on white\" content.\n lightModeColor = this.findLightColorFromDarkColor(color) || '';\n\n if (lightModeColor) {\n darkModeColor = color;\n }\n } else {\n lightModeColor = color;\n }\n }\n\n return { key, lightModeColor, darkModeColor };\n }\n\n /**\n * Find related light mode color from dark mode color.\n * @param darkColor The existing dark color\n */\n findLightColorFromDarkColor(darkColor: string): string | null {\n const rgbSearch = parseColor(darkColor);\n\n if (rgbSearch) {\n const key = getObjectKeys(this.knownColors).find(key => {\n const rgbCurrent = parseColor(this.knownColors[key].darkModeColor);\n\n return (\n rgbCurrent &&\n rgbCurrent[0] == rgbSearch[0] &&\n rgbCurrent[1] == rgbSearch[1] &&\n rgbCurrent[2] == rgbSearch[2]\n );\n });\n\n if (key) {\n return this.knownColors[key].lightModeColor;\n }\n }\n\n return null;\n }\n\n /**\n * Transform element color, from dark to light or from light to dark\n * @param element The element to transform color\n * @param fromDarkMode Whether this is transforming color from dark mode\n * @param toDarkMode Whether this is transforming color to dark mode\n */\n transformElementColor(element: HTMLElement, fromDarkMode: boolean, toDarkMode: boolean): void {\n ColorAttributeName.forEach((names, i) => {\n const color = this.parseColorValue(\n element.style.getPropertyValue(names[ColorAttributeEnum.CssColor]) ||\n element.getAttribute(names[ColorAttributeEnum.HtmlColor]),\n !!fromDarkMode\n ).lightModeColor;\n\n element.style.setProperty(names[ColorAttributeEnum.CssColor], null);\n element.removeAttribute(names[ColorAttributeEnum.HtmlColor]);\n\n if (color && color != 'inherit') {\n setColor(element, color, i != 0, toDarkMode, false /*shouldAdaptFontColor*/, this);\n }\n });\n }\n}\n","import { createEditorCore } from './createEditorCore';\r\nimport { EditorBase } from './EditorBase';\r\nimport { EditorCore, EditorOptions } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * RoosterJs core editor class\r\n */\r\nexport default class Editor extends EditorBase {\r\n /**\r\n * Creates an instance of EditorBase\r\n * @param contentDiv The DIV HTML element which will be the container element of editor\r\n * @param options An optional options object to customize the editor\r\n */\r\n constructor(contentDiv: HTMLDivElement, options: EditorOptions = {}) {\r\n super(contentDiv, options, createEditorCore);\r\n }\r\n}\r\n","import { isFeatureEnabled } from './isFeatureEnabled';\nimport {\n BlockElement,\n ChangeSource,\n ClipboardData,\n ColorTransformDirection,\n ContentChangedData,\n ContentPosition,\n CoreCreator,\n DarkColorHandler,\n DefaultFormat,\n DOMEventHandler,\n EditorCore,\n EditorOptions,\n EditorUndoState,\n ExperimentalFeatures,\n GenericContentEditFeature,\n GetContentMode,\n IContentTraverser,\n IEditor,\n InsertOption,\n IPositionContentSearcher,\n NodePosition,\n PendableFormatState,\n PluginEvent,\n PluginEventData,\n PluginEventFromType,\n PluginEventType,\n PositionType,\n QueryScope,\n Rect,\n Region,\n RegionType,\n SelectionPath,\n SelectionRangeEx,\n SizeTransformer,\n StyleBasedFormatState,\n TableSelection,\n TrustedHTMLHandler,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n collapseNodes,\n contains,\n ContentTraverser,\n deleteSelectedContent,\n getRegionsFromRange,\n findClosestElementAncestor,\n getBlockElementAtNode,\n getSelectionPath,\n getTagOfNode,\n isNodeEmpty,\n Position,\n PositionContentSearcher,\n queryElements,\n wrap,\n isPositionAtBeginningOf,\n toArray,\n} from 'roosterjs-editor-dom';\nimport type {\n CompatibleChangeSource,\n CompatibleColorTransformDirection,\n CompatibleContentPosition,\n CompatibleExperimentalFeatures,\n CompatibleGetContentMode,\n CompatiblePluginEventType,\n CompatibleQueryScope,\n CompatibleRegionType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Base class of editor\n */\nexport class EditorBase\n implements IEditor {\n private core: TEditorCore | null = null;\n\n //#region Lifecycle\n\n /**\n * Creates an instance of EditorBase\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\n constructor(\n contentDiv: HTMLDivElement,\n options: TEditorOptions,\n coreCreator: CoreCreator\n ) {\n // 1. Make sure all parameters are valid\n if (getTagOfNode(contentDiv) != 'DIV') {\n throw new Error('contentDiv must be an HTML DIV element');\n }\n\n // 2. Create editor core\n this.core = coreCreator(contentDiv, options);\n\n // 3. Initialize plugins\n this.core.plugins.forEach(plugin => plugin.initialize(this));\n\n // 4. Ensure user will type in a container node, not the editor content DIV\n this.ensureTypeInContainer(\n new Position(this.core.contentDiv, PositionType.Begin).normalize()\n );\n }\n\n /**\n * Dispose this editor, dispose all plugins and custom data\n */\n public dispose(): void {\n const core = this.getCore();\n for (let i = core.plugins.length - 1; i >= 0; i--) {\n core.plugins[i].dispose();\n }\n\n core.darkColorHandler.reset();\n\n this.core = null;\n }\n\n /**\n * Get whether this editor is disposed\n * @returns True if editor is disposed, otherwise false\n */\n public isDisposed(): boolean {\n return !this.core;\n }\n\n //#endregion\n\n //#region Node API\n\n /**\n * Insert node into editor\n * @param node The node to insert\n * @param option Insert options. Default value is:\n * position: ContentPosition.SelectionStart\n * updateCursor: true\n * replaceSelection: true\n * insertOnNewLine: false\n * @returns true if node is inserted. Otherwise false\n */\n public insertNode(node: Node, option?: InsertOption): boolean {\n const core = this.getCore();\n return node ? core.api.insertNode(core, node, option ?? null) : false;\n }\n\n /**\n * Delete a node from editor content\n * @param node The node to delete\n * @returns true if node is deleted. Otherwise false\n */\n public deleteNode(node: Node): boolean {\n // Only remove the node when it falls within editor\n if (node && this.contains(node) && node.parentNode) {\n node.parentNode.removeChild(node);\n return true;\n }\n\n return false;\n }\n\n /**\n * Replace a node in editor content with another node\n * @param existingNode The existing node to be replaced\n * @param toNode node to replace to\n * @param transformColorForDarkMode (optional) Whether to transform new node to dark mode. Default is false\n * @returns true if node is replaced. Otherwise false\n */\n public replaceNode(\n existingNode: Node,\n toNode: Node,\n transformColorForDarkMode?: boolean\n ): boolean {\n const core = this.getCore();\n // Only replace the node when it falls within editor\n if (this.contains(existingNode) && toNode) {\n core.api.transformColor(\n core,\n transformColorForDarkMode ? toNode : null,\n true /*includeSelf*/,\n () => existingNode.parentNode?.replaceChild(toNode, existingNode),\n ColorTransformDirection.LightToDark\n );\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Get BlockElement at given node\n * @param node The node to create InlineElement\n * @returns The BlockElement result\n */\n public getBlockElementAtNode(node: Node): BlockElement | null {\n return getBlockElementAtNode(this.getCore().contentDiv, node);\n }\n\n public contains(arg: Node | Range | null): boolean {\n if (!arg) {\n return false;\n }\n return contains(this.getCore().contentDiv, arg);\n }\n\n public queryElements(\n selector: string,\n scopeOrCallback:\n | QueryScope\n | CompatibleQueryScope\n | ((node: Node) => any) = QueryScope.Body,\n callback?: (node: Node) => any\n ) {\n const core = this.getCore();\n const result: HTMLElement[] = [];\n let scope = scopeOrCallback instanceof Function ? QueryScope.Body : scopeOrCallback;\n callback = scopeOrCallback instanceof Function ? scopeOrCallback : callback;\n\n let selectionEx = scope == QueryScope.Body ? null : this.getSelectionRangeEx();\n if (selectionEx) {\n selectionEx.ranges.forEach(range => {\n result.push(...queryElements(core.contentDiv, selector, callback, scope, range));\n });\n } else {\n return queryElements(core.contentDiv, selector, callback, scope, undefined /* range */);\n }\n\n return result;\n }\n\n /**\n * Collapse nodes within the given start and end nodes to their common ancestor node,\n * split parent nodes if necessary\n * @param start The start node\n * @param end The end node\n * @param canSplitParent True to allow split parent node there are nodes before start or after end under the same parent\n * and the returned nodes will be all nodes from start through end after splitting\n * False to disallow split parent\n * @returns When canSplitParent is true, returns all node from start through end after splitting,\n * otherwise just return start and end\n */\n public collapseNodes(start: Node, end: Node, canSplitParent: boolean): Node[] {\n return collapseNodes(this.getCore().contentDiv, start, end, canSplitParent);\n }\n\n //#endregion\n\n //#region Content API\n\n /**\n * Check whether the editor contains any visible content\n * @param trim Whether trim the content string before check. Default is false\n * @returns True if there's no visible content, otherwise false\n */\n public isEmpty(trim?: boolean): boolean {\n return isNodeEmpty(this.getCore().contentDiv, trim);\n }\n\n /**\n * Get current editor content as HTML string\n * @param mode specify what kind of HTML content to retrieve\n * @returns HTML string representing current editor content\n */\n public getContent(\n mode: GetContentMode | CompatibleGetContentMode = GetContentMode.CleanHTML\n ): string {\n const core = this.getCore();\n return core.api.getContent(core, mode);\n }\n\n /**\n * Set HTML content to this editor. All existing content will be replaced. A ContentChanged event will be triggered\n * @param content HTML content to set in\n * @param triggerContentChangedEvent True to trigger a ContentChanged event. Default value is true\n */\n public setContent(content: string, triggerContentChangedEvent: boolean = true) {\n const core = this.getCore();\n core.api.setContent(core, content, triggerContentChangedEvent);\n }\n\n /**\n * Insert HTML content into editor\n * @param HTML content to insert\n * @param option Insert options. Default value is:\n * position: ContentPosition.SelectionStart\n * updateCursor: true\n * replaceSelection: true\n * insertOnNewLine: false\n */\n public insertContent(content: string, option?: InsertOption) {\n if (content) {\n const doc = this.getDocument();\n const body = new DOMParser().parseFromString(\n this.getCore().trustedHTMLHandler(content),\n 'text/html'\n )?.body;\n let allNodes = body?.childNodes ? toArray(body.childNodes) : [];\n\n // If it is to insert on new line, and there are more than one node in the collection, wrap all nodes with\n // a parent DIV before calling insertNode on each top level sub node. Otherwise, every sub node may get wrapped\n // separately to show up on its own line\n if (option && option.insertOnNewLine && allNodes.length > 1) {\n allNodes = [wrap(allNodes)];\n }\n\n let fragment = doc.createDocumentFragment();\n allNodes.forEach(node => fragment.appendChild(node));\n\n this.insertNode(fragment, option);\n }\n }\n\n /**\n * Delete selected content\n */\n public deleteSelectedContent(): NodePosition | null {\n const range = this.getSelectionRange();\n if (range && !range.collapsed) {\n return deleteSelectedContent(this.getCore().contentDiv, range);\n }\n return null;\n }\n\n /**\n * Paste into editor using a clipboardData object\n * @param clipboardData Clipboard data retrieved from clipboard\n * @param pasteAsText Force pasting as plain text. Default value is false\n * @param applyCurrentStyle True if apply format of current selection to the pasted content,\n * false to keep original format. Default value is false. When pasteAsText is true, this parameter is ignored\n * @param pasteAsImage: When set to true, if the clipboardData contains a imageDataUri will paste the image to the editor\n */\n public paste(\n clipboardData: ClipboardData,\n pasteAsText: boolean = false,\n applyCurrentFormat: boolean = false,\n pasteAsImage: boolean = false\n ) {\n const core = this.getCore();\n if (!clipboardData) {\n return;\n }\n\n if (clipboardData.snapshotBeforePaste) {\n // Restore original content before paste a new one\n this.setContent(clipboardData.snapshotBeforePaste);\n } else {\n clipboardData.snapshotBeforePaste = this.getContent(\n GetContentMode.RawHTMLWithSelection\n );\n }\n\n const range = this.getSelectionRange();\n const pos = range && Position.getStart(range);\n const fragment = core.api.createPasteFragment(\n core,\n clipboardData,\n pos,\n pasteAsText,\n applyCurrentFormat,\n pasteAsImage\n );\n if (fragment) {\n this.addUndoSnapshot(() => {\n this.insertNode(fragment);\n return clipboardData;\n }, ChangeSource.Paste);\n }\n }\n\n //#endregion\n\n //#region Focus and Selection\n\n /**\n * Get current selection range from Editor.\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now.\n * Default value is true\n * @returns current selection range, or null if editor never got focus before\n */\n public getSelectionRange(tryGetFromCache: boolean = true): Range | null {\n const core = this.getCore();\n return core.api.getSelectionRange(core, tryGetFromCache);\n }\n\n /**\n * Get current selection range from Editor.\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @param tryGetFromCache Set to true to retrieve the selection range from cache if editor doesn't own the focus now.\n * Default value is true\n * @returns current selection range, or null if editor never got focus before\n */\n public getSelectionRangeEx(): SelectionRangeEx {\n const core = this.getCore();\n return core.api.getSelectionRangeEx(core);\n }\n\n /**\n * Get current selection in a serializable format\n * It does a live pull on the selection, if nothing retrieved, return whatever we have in cache.\n * @returns current selection path, or null if editor never got focus before\n */\n public getSelectionPath(): SelectionPath | null {\n const range = this.getSelectionRange();\n return range && getSelectionPath(this.getCore().contentDiv, range);\n }\n\n /**\n * Check if focus is in editor now\n * @returns true if focus is in editor, otherwise false\n */\n public hasFocus(): boolean {\n const core = this.getCore();\n return core.api.hasFocus(core);\n }\n\n /**\n * Focus to this editor, the selection was restored to where it was before, no unexpected scroll.\n */\n public focus() {\n const core = this.getCore();\n core.api.focus(core);\n }\n\n public select(\n arg1: Range | SelectionRangeEx | NodePosition | Node | SelectionPath | null,\n arg2?: NodePosition | number | PositionType | TableSelection | null,\n arg3?: Node,\n arg4?: number | PositionType\n ): boolean {\n const core = this.getCore();\n\n return core.api.select(core, arg1, arg2, arg3, arg4);\n }\n\n /**\n * Get current focused position. Return null if editor doesn't have focus at this time.\n */\n public getFocusedPosition(): NodePosition | null {\n let sel = this.getDocument().defaultView?.getSelection();\n if (sel?.focusNode && this.contains(sel.focusNode)) {\n return new Position(sel.focusNode, sel.focusOffset);\n }\n\n let range = this.getSelectionRange();\n if (range) {\n return Position.getStart(range);\n }\n\n return null;\n }\n\n /**\n * Get an HTML element from current cursor position.\n * When expectedTags is not specified, return value is the current node (if it is HTML element)\n * or its parent node (if current node is a Text node).\n * When expectedTags is specified, return value is the first ancestor of current node which has\n * one of the expected tags.\n * If no element found within editor by the given tag, return null.\n * @param selector Optional, an HTML selector to find HTML element with.\n * @param startFrom Start search from this node. If not specified, start from current focused position\n * @param event Optional, if specified, editor will try to get cached result from the event object first.\n * If it is not cached before, query from DOM and cache the result into the event object\n */\n public getElementAtCursor(\n selector?: string,\n startFrom?: Node,\n event?: PluginEvent\n ): HTMLElement | null {\n event = startFrom ? undefined : event; // Only use cache when startFrom is not specified, for different start position can have different result\n\n return (\n cacheGetEventData(event ?? null, 'GET_ELEMENT_AT_CURSOR_' + selector, () => {\n if (!startFrom) {\n let position = this.getFocusedPosition();\n startFrom = position?.node;\n }\n return (\n startFrom &&\n findClosestElementAncestor(startFrom, this.getCore().contentDiv, selector)\n );\n }) ?? null\n );\n }\n\n /**\n * Check if this position is at beginning of the editor.\n * This will return true if all nodes between the beginning of target node and the position are empty.\n * @param position The position to check\n * @returns True if position is at beginning of the editor, otherwise false\n */\n public isPositionAtBeginning(position: NodePosition): boolean {\n return isPositionAtBeginningOf(position, this.getCore().contentDiv);\n }\n\n /**\n * Get impacted regions from selection\n */\n public getSelectedRegions(\n type: RegionType | CompatibleRegionType = RegionType.Table\n ): Region[] {\n const selection = this.getSelectionRangeEx();\n const result: Region[] = [];\n const contentDiv = this.getCore().contentDiv;\n selection.ranges.forEach(range => {\n result.push(...(range ? getRegionsFromRange(contentDiv, range, type) : []));\n });\n return result.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n }\n\n //#endregion\n\n //#region EVENT API\n\n public addDomEventHandler(\n nameOrMap: string | Record,\n handler?: DOMEventHandler\n ): () => void {\n const eventsToMap = typeof nameOrMap == 'string' ? { [nameOrMap]: handler! } : nameOrMap;\n const core = this.getCore();\n return core.api.attachDomEvent(core, eventsToMap);\n }\n\n /**\n * Trigger an event to be dispatched to all plugins\n * @param eventType Type of the event\n * @param data data of the event with given type, this is the rest part of PluginEvent with the given type\n * @param broadcast indicates if the event needs to be dispatched to all plugins\n * True means to all, false means to allow exclusive handling from one plugin unless no one wants that\n * @returns the event object which is really passed into plugins. Some plugin may modify the event object so\n * the result of this function provides a chance to read the modified result\n */\n public triggerPluginEvent(\n eventType: T,\n data: PluginEventData,\n broadcast: boolean = false\n ): PluginEventFromType {\n const core = this.getCore();\n let event = ({\n eventType,\n ...data,\n } as any) as PluginEventFromType;\n core.api.triggerEvent(core, event, broadcast);\n\n return event;\n }\n\n /**\n * Trigger a ContentChangedEvent\n * @param source Source of this event, by default is 'SetContent'\n * @param data additional data for this event\n */\n public triggerContentChangedEvent(\n source: ChangeSource | CompatibleChangeSource | string = ChangeSource.SetContent,\n data?: any\n ) {\n this.triggerPluginEvent(PluginEventType.ContentChanged, {\n source,\n data,\n });\n }\n\n //#endregion\n\n //#region Undo API\n\n /**\n * Undo last edit operation\n */\n public undo() {\n this.focus();\n const core = this.getCore();\n core.api.restoreUndoSnapshot(core, -1 /*step*/);\n }\n\n /**\n * Redo next edit operation\n */\n public redo() {\n this.focus();\n const core = this.getCore();\n core.api.restoreUndoSnapshot(core, 1 /*step*/);\n }\n\n /**\n * Add undo snapshot, and execute a format callback function, then add another undo snapshot, then trigger\n * ContentChangedEvent with given change source.\n * If this function is called nested, undo snapshot will only be added in the outside one\n * @param callback The callback function to perform formatting, returns a data object which will be used as\n * the data field in ContentChangedEvent if changeSource is not null.\n * @param changeSource The change source to use when fire ContentChangedEvent. When the value is not null,\n * a ContentChangedEvent will be fired with change source equal to this value\n * @param canUndoByBackspace True if this action can be undone when user press Backspace key (aka Auto Complete).\n */\n public addUndoSnapshot(\n callback?: (start: NodePosition | null, end: NodePosition | null) => any,\n changeSource?: ChangeSource | CompatibleChangeSource | string,\n canUndoByBackspace?: boolean,\n additionalData?: ContentChangedData\n ) {\n const core = this.getCore();\n core.api.addUndoSnapshot(\n core,\n callback ?? null,\n changeSource ?? null,\n canUndoByBackspace ?? false,\n additionalData\n );\n }\n\n /**\n * Whether there is an available undo/redo snapshot\n */\n public getUndoState(): EditorUndoState {\n const { hasNewContent, snapshotsService } = this.getCore().undo;\n return {\n canUndo: hasNewContent || snapshotsService.canMove(-1 /*previousSnapshot*/),\n canRedo: snapshotsService.canMove(1 /*nextSnapshot*/),\n };\n }\n\n //#endregion\n\n //#region Misc\n\n /**\n * Get document which contains this editor\n * @returns The HTML document which contains this editor\n */\n public getDocument(): Document {\n return this.getCore().contentDiv.ownerDocument;\n }\n\n /**\n * Get the scroll container of the editor\n */\n public getScrollContainer(): HTMLElement {\n return this.getCore().domEvent.scrollContainer;\n }\n\n /**\n * Get custom data related to this editor\n * @param key Key of the custom data\n * @param getter Getter function. If custom data for the given key doesn't exist,\n * call this function to get one and store it if it is specified. Otherwise return undefined\n * @param disposer An optional disposer function to dispose this custom data when\n * dispose editor.\n */\n public getCustomData(key: string, getter?: () => T, disposer?: (value: T) => void): T {\n const core = this.getCore();\n return (core.lifecycle.customData[key] = core.lifecycle.customData[key] || {\n value: getter ? getter() : undefined,\n disposer,\n }).value as T;\n }\n\n /**\n * Check if editor is in IME input sequence\n * @returns True if editor is in IME input sequence, otherwise false\n */\n public isInIME(): boolean {\n return this.getCore().domEvent.isInIME;\n }\n\n /**\n * Get default format of this editor\n * @returns Default format object of this editor\n */\n public getDefaultFormat(): DefaultFormat {\n return this.getCore().lifecycle.defaultFormat ?? {};\n }\n\n /**\n * Get a content traverser for the whole editor\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\n */\n public getBodyTraverser(startNode?: Node): IContentTraverser {\n return ContentTraverser.createBodyTraverser(this.getCore().contentDiv, startNode);\n }\n\n /**\n * Get a content traverser for current selection\n * @returns A content traverser, or null if editor never got focus before\n */\n public getSelectionTraverser(range?: Range): IContentTraverser | null {\n range = range ?? this.getSelectionRange() ?? undefined;\n return range\n ? ContentTraverser.createSelectionTraverser(this.getCore().contentDiv, range)\n : null;\n }\n\n /**\n * Get a content traverser for current block element start from specified position\n * @param startFrom Start position of the traverser. Default value is ContentPosition.SelectionStart\n * @returns A content traverser, or null if editor never got focus before\n */\n public getBlockTraverser(\n startFrom: ContentPosition | CompatibleContentPosition = ContentPosition.SelectionStart\n ): IContentTraverser | null {\n let range = this.getSelectionRange();\n return range\n ? ContentTraverser.createBlockTraverser(this.getCore().contentDiv, range, startFrom)\n : null;\n }\n\n /**\n * Get a text traverser of current selection\n * @param event Optional, if specified, editor will try to get cached result from the event object first.\n * If it is not cached before, query from DOM and cache the result into the event object\n * @returns A content traverser, or null if editor never got focus before\n */\n public getContentSearcherOfCursor(event?: PluginEvent): IPositionContentSearcher | null {\n return cacheGetEventData(event ?? null, 'ContentSearcher', () => {\n let range = this.getSelectionRange();\n return (\n range &&\n new PositionContentSearcher(this.getCore().contentDiv, Position.getStart(range))\n );\n });\n }\n\n /**\n * Run a callback function asynchronously\n * @param callback The callback function to run\n * @returns a function to cancel this async run\n */\n public runAsync(callback: (editor: IEditor) => void) {\n let win = this.getCore().contentDiv.ownerDocument.defaultView || window;\n const handle = win.requestAnimationFrame(() => {\n if (!this.isDisposed() && callback) {\n callback(this);\n }\n });\n\n return () => {\n win.cancelAnimationFrame(handle);\n };\n }\n\n /**\n * Set DOM attribute of editor content DIV\n * @param name Name of the attribute\n * @param value Value of the attribute\n */\n public setEditorDomAttribute(name: string, value: string | null) {\n if (value === null) {\n this.getCore().contentDiv.removeAttribute(name);\n } else {\n this.getCore().contentDiv.setAttribute(name, value);\n }\n }\n\n /**\n * Get DOM attribute of editor content DIV, null if there is no such attribute.\n * @param name Name of the attribute\n */\n public getEditorDomAttribute(name: string): string | null {\n return this.getCore().contentDiv.getAttribute(name);\n }\n\n /**\n * @deprecated Use getVisibleViewport() instead.\n *\n * Get current relative distance from top-left corner of the given element to top-left corner of editor content DIV.\n * @param element The element to calculate from. If the given element is not in editor, return value will be null\n * @param addScroll When pass true, The return value will also add scrollLeft and scrollTop if any. So the value\n * may be different than what user is seeing from the view. When pass false, scroll position will be ignored.\n * @returns An [x, y] array which contains the left and top distances, or null if the given element is not in editor.\n */\n getRelativeDistanceToEditor(element: HTMLElement, addScroll?: boolean): number[] | null {\n if (this.contains(element)) {\n const contentDiv = this.getCore().contentDiv;\n const editorRect = contentDiv.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n if (editorRect && elementRect) {\n let x = elementRect.left - editorRect?.left;\n let y = elementRect.top - editorRect?.top;\n\n if (addScroll) {\n x += contentDiv.scrollLeft;\n y += contentDiv.scrollTop;\n }\n\n return [x, y];\n }\n }\n\n return null;\n }\n\n /**\n * Add a Content Edit feature.\n * @param feature The feature to add\n */\n public addContentEditFeature(feature: GenericContentEditFeature) {\n const core = this.getCore();\n feature?.keys.forEach(key => {\n let array = core.edit.features[key] || [];\n array.push(feature);\n core.edit.features[key] = array;\n });\n }\n\n /**\n * Remove a Content Edit feature.\n * @param feature The feature to remove\n */\n public removeContentEditFeature(feature: GenericContentEditFeature) {\n const core = this.getCore();\n feature?.keys.forEach(key => {\n const featureSet = core.edit.features[key];\n const index = featureSet?.indexOf(feature) ?? -1;\n if (index >= 0) {\n core.edit.features[key].splice(index, 1);\n if (core.edit.features[key].length < 1) {\n delete core.edit.features[key];\n }\n }\n });\n }\n\n /**\n * Get style based format state from current selection, including font name/size and colors\n */\n public getStyleBasedFormatState(node?: Node): StyleBasedFormatState {\n if (!node) {\n const range = this.getSelectionRange();\n node = (range && Position.getStart(range).normalize().node) ?? undefined;\n }\n const core = this.getCore();\n return core.api.getStyleBasedFormatState(core, node ?? null);\n }\n\n /**\n * Get the pendable format such as underline and bold\n * @param forceGetStateFromDOM If set to true, will force get the format state from DOM tree.\n * @returns The pending format state\n */\n public getPendableFormatState(forceGetStateFromDOM: boolean = false): PendableFormatState {\n const core = this.getCore();\n return core.api.getPendableFormatState(core, forceGetStateFromDOM);\n }\n\n /**\n * Ensure user will type into a container element rather than into the editor content DIV directly\n * @param position The position that user is about to type to\n * @param keyboardEvent Optional keyboard event object\n */\n public ensureTypeInContainer(position: NodePosition, keyboardEvent?: KeyboardEvent) {\n const core = this.getCore();\n core.api.ensureTypeInContainer(core, position, keyboardEvent);\n }\n\n //#endregion\n\n //#region Dark mode APIs\n\n /**\n * Set the dark mode state and transforms the content to match the new state.\n * @param nextDarkMode The next status of dark mode. True if the editor should be in dark mode, false if not.\n */\n public setDarkModeState(nextDarkMode?: boolean) {\n const isDarkMode = this.isDarkMode();\n\n if (isDarkMode == !!nextDarkMode) {\n return;\n }\n const core = this.getCore();\n\n core.api.transformColor(\n core,\n core.contentDiv,\n false /*includeSelf*/,\n null /*callback*/,\n nextDarkMode\n ? ColorTransformDirection.LightToDark\n : ColorTransformDirection.DarkToLight,\n true /*forceTransform*/,\n isDarkMode\n );\n\n this.triggerContentChangedEvent(\n nextDarkMode ? ChangeSource.SwitchToDarkMode : ChangeSource.SwitchToLightMode\n );\n }\n\n /**\n * Check if the editor is in dark mode\n * @returns True if the editor is in dark mode, otherwise false\n */\n public isDarkMode(): boolean {\n return this.getCore().lifecycle.isDarkMode;\n }\n\n /**\n * Transform the given node and all its child nodes to dark mode color if editor is in dark mode\n * @param node The node to transform\n * @param direction The transform direction. @default ColorTransformDirection.LightToDark\n */\n public transformToDarkColor(\n node: Node,\n direction:\n | ColorTransformDirection\n | CompatibleColorTransformDirection = ColorTransformDirection.LightToDark\n ) {\n const core = this.getCore();\n core.api.transformColor(core, node, true /*includeSelf*/, null /*callback*/, direction);\n }\n\n /**\n * Get a darkColorHandler object for this editor.\n */\n public getDarkColorHandler(): DarkColorHandler {\n return this.getCore().darkColorHandler;\n }\n\n /**\n * Make the editor in \"Shadow Edit\" mode.\n * In Shadow Edit mode, all format change will finally be ignored.\n * This can be used for building a live preview feature for format button, to allow user\n * see format result without really apply it.\n * This function can be called repeated. If editor is already in shadow edit mode, we can still\n * use this function to do more shadow edit operation.\n */\n public startShadowEdit() {\n const core = this.getCore();\n core.api.switchShadowEdit(core, true /*isOn*/);\n }\n\n /**\n * Leave \"Shadow Edit\" mode, all changes made during shadow edit will be discarded\n */\n public stopShadowEdit() {\n const core = this.getCore();\n core.api.switchShadowEdit(core, false /*isOn*/);\n }\n\n /**\n * Check if editor is in Shadow Edit mode\n */\n public isInShadowEdit() {\n return !!this.getCore().lifecycle.shadowEditFragment;\n }\n\n /**\n * Check if the given experimental feature is enabled\n * @param feature The feature to check\n */\n public isFeatureEnabled(\n feature: ExperimentalFeatures | CompatibleExperimentalFeatures\n ): boolean {\n return isFeatureEnabled(this.getCore().lifecycle.experimentalFeatures, feature);\n }\n\n /**\n * Get a function to convert HTML string to trusted HTML string.\n * By default it will just return the input HTML directly. To override this behavior,\n * pass your own trusted HTML handler to EditorOptions.trustedHTMLHandler\n * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\n */\n getTrustedHTMLHandler(): TrustedHTMLHandler {\n return this.getCore().trustedHTMLHandler;\n }\n\n /**\n * @deprecated Use getZoomScale() instead\n */\n getSizeTransformer(): SizeTransformer {\n return this.getCore().sizeTransformer;\n }\n\n /**\n * Get current zoom scale, default value is 1\n * When editor is put under a zoomed container, need to pass the zoom scale number using EditorOptions.zoomScale\n * to let editor behave correctly especially for those mouse drag/drop behaviors\n * @returns current zoom scale number\n */\n getZoomScale(): number {\n return this.getCore().zoomScale;\n }\n\n /**\n * Set current zoom scale, default value is 1\n * When editor is put under a zoomed container, need to pass the zoom scale number using EditorOptions.zoomScale\n * to let editor behave correctly especially for those mouse drag/drop behaviors\n * @param scale The new scale number to set. It should be positive number and no greater than 10, otherwise it will be ignored.\n */\n setZoomScale(scale: number): void {\n const core = this.getCore();\n if (scale > 0 && scale <= 10) {\n const oldValue = core.zoomScale;\n core.zoomScale = scale;\n\n if (oldValue != scale) {\n this.triggerPluginEvent(\n PluginEventType.ZoomChanged,\n {\n oldZoomScale: oldValue,\n newZoomScale: scale,\n },\n true /*broadcast*/\n );\n }\n }\n }\n\n /**\n * Retrieves the rect of the visible viewport of the editor.\n */\n getVisibleViewport(): Rect | null {\n return this.getCore().getVisibleViewport();\n }\n\n /**\n * @returns the current EditorCore object\n * @throws a standard Error if there's no core object\n */\n protected getCore(): TEditorCore {\n if (!this.core) {\n throw new Error('Editor is already disposed');\n }\n return this.core;\n }\n\n //#endregion\n}\n","import createCorePlugins, { getPluginState } from '../corePlugins/createCorePlugins';\nimport DarkColorHandlerImpl from './DarkColorHandlerImpl';\nimport { arrayPush, getIntersectedRect, getObjectKeys } from 'roosterjs-editor-dom';\nimport { coreApiMap } from '../coreApi/coreApiMap';\nimport { CoreCreator, EditorCore, EditorOptions, EditorPlugin } from 'roosterjs-editor-types';\n\n/**\n * Create a new instance of Editor Core\n * @param contentDiv The DIV HTML element which will be the container element of editor\n * @param options An optional options object to customize the editor\n */\nexport const createEditorCore: CoreCreator = (contentDiv, options) => {\n const corePlugins = createCorePlugins(contentDiv, options);\n const plugins: EditorPlugin[] = [];\n\n getObjectKeys(corePlugins).forEach(name => {\n if (name == '_placeholder') {\n if (options.plugins) {\n arrayPush(plugins, options.plugins);\n }\n } else {\n plugins.push(corePlugins[name]);\n }\n });\n\n const pluginState = getPluginState(corePlugins);\n const zoomScale: number = (options.zoomScale ?? -1) > 0 ? options.zoomScale! : 1;\n const getVisibleViewport =\n options.getVisibleViewport ||\n (() => {\n const scrollContainer = pluginState.domEvent.scrollContainer;\n\n return getIntersectedRect(\n scrollContainer == core.contentDiv\n ? [scrollContainer]\n : [scrollContainer, core.contentDiv]\n );\n });\n\n const core: EditorCore = {\n contentDiv,\n api: {\n ...coreApiMap,\n ...(options.coreApiOverride || {}),\n },\n originalApi: coreApiMap,\n plugins: plugins.filter(x => !!x),\n ...pluginState,\n trustedHTMLHandler: options.trustedHTMLHandler || ((html: string) => html),\n zoomScale: zoomScale,\n sizeTransformer: options.sizeTransformer || ((size: number) => size / zoomScale),\n getVisibleViewport,\n imageSelectionBorderColor: options.imageSelectionBorderColor,\n darkColorHandler: new DarkColorHandlerImpl(contentDiv, pluginState.lifecycle.getDarkColor),\n };\n\n return core;\n};\n","import { ExperimentalFeatures } from 'roosterjs-editor-types';\nimport type { CompatibleExperimentalFeatures } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Check if the given experimental feature is enabled\n * @param featureSet All enabled features\n * @param feature The feature to check\n * @returns True if the given feature is enabled, otherwise false\n */\nexport function isFeatureEnabled(\n featureSet: (ExperimentalFeatures | CompatibleExperimentalFeatures)[] | undefined,\n feature: ExperimentalFeatures | CompatibleExperimentalFeatures\n) {\n return (featureSet || []).indexOf(feature) >= 0;\n}\n","// Classes\r\nexport { default as Editor } from './editor/Editor';\r\nexport { EditorBase } from './editor/EditorBase';\r\nexport { isFeatureEnabled } from './editor/isFeatureEnabled';\r\nexport { createEditorCore } from './editor/createEditorCore';\r\n","import contains from '../utils/contains';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * This presents a content block that can be represented by a single html block type element.\r\n * In most cases, it corresponds to an HTML block level element, i.e. P, DIV, LI, TD etc.\r\n */\r\nexport default class NodeBlockElement implements BlockElement {\r\n constructor(private element: HTMLElement) {}\r\n\r\n /**\r\n * Collapse this element to a single DOM element.\r\n * If the content nodes are separated in different root nodes, wrap them to a single node\r\n * If the content nodes are included in root node with other nodes, split root node\r\n */\r\n public collapseToSingleElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Get the start node of the block\r\n * For NodeBlockElement, start and end essentially refers to same node\r\n */\r\n public getStartNode(): Node {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Get the end node of the block\r\n * For NodeBlockElement, start and end essentially refers to same node\r\n */\r\n public getEndNode(): Node {\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Checks if it refers to same block\r\n */\r\n public equals(blockElement: BlockElement): boolean {\r\n // Ideally there is only one unique way to generate a block so we only need to compare the startNode\r\n return this.element == blockElement.getStartNode();\r\n }\r\n\r\n /**\r\n * Checks if a block is after the current block\r\n */\r\n public isAfter(blockElement: BlockElement): boolean {\r\n // if the block's startNode is after current node endEnd, we say it is after\r\n return isNodeAfter(this.element, blockElement.getEndNode());\r\n }\r\n\r\n /**\r\n * Checks if a certain html node is within the block\r\n */\r\n public contains(node: Node): boolean {\r\n return contains(this.element, node, true /*treatSameNodeAsContain*/);\r\n }\r\n\r\n /**\r\n * Get the text content of this block element\r\n */\r\n public getTextContent(): string {\r\n return this.element?.textContent || '';\r\n }\r\n}\r\n","import collapseNodes from '../utils/collapseNodes';\r\nimport contains from '../utils/contains';\r\nimport createRange from '../selection/createRange';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isBlockElement from '../utils/isBlockElement';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport wrap from '../utils/wrap';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\r\n\r\nconst STRUCTURE_NODE_TAGS = ['TD', 'TH', 'LI', 'BLOCKQUOTE'];\r\n\r\n/**\r\n * @internal\r\n * This represents a block that is identified by a start and end node\r\n * This is for cases like <root>Hello<BR>World</root>\r\n * in that case, Hello<BR> is a block, World is another block\r\n * Such block cannot be represented by a NodeBlockElement since they don't chained up\r\n * to a single parent node, instead they have a start and end\r\n * This start and end must be in same sibling level and have same parent in DOM tree\r\n */\r\nexport default class StartEndBlockElement implements BlockElement {\r\n constructor(private rootNode: Node, private startNode: Node, private endNode: Node) {}\r\n\r\n static getBlockContext(node: Node): HTMLElement | null {\r\n let currentNode: Node | null = node;\r\n while (currentNode && !isBlockElement(currentNode)) {\r\n currentNode = currentNode.parentNode;\r\n }\r\n return currentNode as HTMLElement;\r\n }\r\n\r\n /**\r\n * Collapse this element to a single DOM element.\r\n * If the content nodes are separated in different root nodes, wrap them to a single node\r\n * If the content nodes are included in root node with other nodes, split root node\r\n */\r\n public collapseToSingleElement(): HTMLElement {\r\n const nodeContext = StartEndBlockElement.getBlockContext(this.startNode);\r\n let nodes = nodeContext\r\n ? collapseNodes(nodeContext, this.startNode, this.endNode, true /*canSplitParent*/)\r\n : [];\r\n let blockContext = StartEndBlockElement.getBlockContext(this.startNode);\r\n while (\r\n nodes[0] &&\r\n nodes[0] != blockContext &&\r\n nodes[0].parentNode != this.rootNode &&\r\n STRUCTURE_NODE_TAGS.indexOf(getTagOfNode(nodes[0].parentNode)) < 0\r\n ) {\r\n const newNode = splitBalancedNodeRange(nodes);\r\n if (newNode) {\r\n nodes = [newNode];\r\n } else {\r\n break;\r\n }\r\n }\r\n return nodes.length == 1 && isBlockElement(nodes[0])\r\n ? (nodes[0] as HTMLElement)\r\n : wrap(nodes);\r\n }\r\n\r\n /**\r\n * Gets the start node\r\n */\r\n public getStartNode(): Node {\r\n return this.startNode;\r\n }\r\n\r\n /**\r\n * Gets the end node\r\n */\r\n public getEndNode(): Node {\r\n return this.endNode;\r\n }\r\n\r\n /**\r\n * Checks equals of two blocks\r\n */\r\n public equals(blockElement: BlockElement): boolean {\r\n return (\r\n this.startNode == blockElement.getStartNode() &&\r\n this.endNode == blockElement.getEndNode()\r\n );\r\n }\r\n\r\n /**\r\n * Checks if another block is after this current\r\n */\r\n public isAfter(blockElement: BlockElement): boolean {\r\n return isNodeAfter(this.getStartNode(), blockElement.getEndNode());\r\n }\r\n\r\n /**\r\n * Checks if an Html node is contained within the block\r\n */\r\n public contains(node: Node): boolean {\r\n return (\r\n contains(this.startNode, node, true /*treatSameNodeAsContain*/) ||\r\n contains(this.endNode, node, true /*treatSameNodeAsContain*/) ||\r\n (isNodeAfter(node, this.startNode) && isNodeAfter(this.endNode, node))\r\n );\r\n }\r\n\r\n /**\r\n * Get the text content of this block element\r\n */\r\n public getTextContent(): string {\r\n const range = createRange(this.getStartNode(), this.getEndNode());\r\n return range ? range.toString() : '';\r\n }\r\n}\r\n","import collapseNodes from '../utils/collapseNodes';\r\nimport contains from '../utils/contains';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isBlockElement from '../utils/isBlockElement';\r\nimport NodeBlockElement from './NodeBlockElement';\r\nimport StartEndBlockElement from './StartEndBlockElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This produces a block element from a a node\r\n * It needs to account for various HTML structure. Examples:\r\n * 1) <root><div>abc</div></root>\r\n * This is most common the case, user passes in a node pointing to abc, and get back a block representing <div>abc</div>\r\n * 2) <root><p><br></p></root>\r\n * Common content for empty block, user passes node pointing to <br>, and get back a block representing <p><br></p>\r\n * 3) <root>abc</root>\r\n * Not common, but does happen. It is still a block in user's view. User passes in abc, and get back a start-end block representing abc\r\n * NOTE: abc could be just one node. However, since it is not a html block, it is more appropriate to use start-end block although they point to same node\r\n * 4) <root><div>abc<br>123</div></root>\r\n * A bit tricky, but can happen when user use Ctrl+Enter which simply inserts a <BR> to create a link break. There're two blocks:\r\n * block1: 1) abc<br> block2: 123\r\n * 5) <root><div>abc<div>123</div></div></root>\r\n * Nesting div and there is text node in same level as a DIV. Two blocks: 1) abc 2) <div>123</div>\r\n * 6) <root><div>abc<span>123<br>456</span></div></root>\r\n * This is really tricky. Essentially there is a <BR> in middle of a span breaking the span into two blocks;\r\n * block1: abc<span>123<br> block2: 456\r\n * In summary, given any arbitrary node (leaf), to identify the head and tail of the block, following rules need to be followed:\r\n * 1) to identify the head, it needs to crawl DOM tre left/up till a block node or BR is encountered\r\n * 2) same for identifying tail\r\n * 3) should also apply a block ceiling, meaning as it crawls up, it should stop at a block node\r\n * @param rootNode Root node of the scope, the block element will be inside of this node\r\n * @param node The node to get BlockElement start from\r\n */\r\nexport default function getBlockElementAtNode(\r\n rootNode: Node,\r\n node: Node | null\r\n): BlockElement | null {\r\n if (!contains(rootNode, node)) {\r\n return null;\r\n }\r\n\r\n // Identify the containing block. This serves as ceiling for traversing down below\r\n // NOTE: this container block could be just the rootNode,\r\n // which cannot be used to create block element. We will special case handle it later on\r\n let containerBlockNode = StartEndBlockElement.getBlockContext(node!);\r\n if (!containerBlockNode) {\r\n return null;\r\n } else if (containerBlockNode == node) {\r\n return new NodeBlockElement(containerBlockNode);\r\n }\r\n\r\n // Find the head and leaf node in the block\r\n let headNode = findHeadTailLeafNode(node!, containerBlockNode, false /*isTail*/);\r\n let tailNode = findHeadTailLeafNode(node!, containerBlockNode, true /*isTail*/);\r\n\r\n if (!headNode || !tailNode) {\r\n return null;\r\n }\r\n\r\n // At this point, we have the head and tail of a block, here are some examples and where head and tail point to\r\n // 1) <root><div>hello<br></div></root>, head: hello, tail: <br>\r\n // 2) <root><div>hello<span style=\"font-family: Arial\">world</span></div></root>, head: hello, tail: world\r\n // Both are actually completely and exclusively wrapped in a parent div, and can be represented with a Node block\r\n // So we shall try to collapse as much as we can to the nearest common ancestor\r\n let nodes = collapseNodes(rootNode, headNode, tailNode, false /*canSplitParent*/);\r\n\r\n if (nodes.length === 0) {\r\n return null;\r\n }\r\n\r\n headNode = nodes[0];\r\n tailNode = nodes[nodes.length - 1];\r\n\r\n if (headNode.parentNode != tailNode.parentNode) {\r\n // Un-Balanced start and end, create a start-end block\r\n return new StartEndBlockElement(rootNode, headNode, tailNode);\r\n } else {\r\n // Balanced start and end (point to same parent), need to see if further collapsing can be done\r\n while (!headNode.previousSibling && !tailNode.nextSibling) {\r\n let parentNode = headNode.parentNode;\r\n if (parentNode == containerBlockNode) {\r\n // Has reached the container block\r\n if (containerBlockNode != rootNode) {\r\n // If the container block is not the root, use the container block\r\n headNode = tailNode = parentNode;\r\n }\r\n break;\r\n } else if (parentNode && parentNode != rootNode) {\r\n // Continue collapsing to parent\r\n headNode = tailNode = parentNode;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // If head and tail are same and it is a block element, create NodeBlock, otherwise start-end block\r\n return headNode == tailNode && isBlockElement(headNode)\r\n ? new NodeBlockElement(headNode as HTMLElement)\r\n : new StartEndBlockElement(rootNode, headNode, tailNode);\r\n }\r\n}\r\n\r\n/**\r\n * Given a node and container block, identify the first/last leaf node\r\n * A leaf node is defined as deepest first/last node in a block\r\n * i.e. <div><span style=\"font-family: Arial\">abc</span></div>, abc is the head leaf of the block\r\n * Often <br> or a child <div> is used to create a block. In that case, the leaf after the sibling div or br should be the head leaf\r\n * i.e. <div>123<br>abc</div>, abc is the head of a block because of a previous sibling <br>\r\n * i.e. <div><div>123</div>abc</div>, abc is also the head of a block because of a previous sibling <div>\r\n */\r\nfunction findHeadTailLeafNode(node: Node, containerBlockNode: Node, isTail: boolean): Node {\r\n let result = node;\r\n\r\n if (getTagOfNode(result) == 'BR' && isTail) {\r\n return result;\r\n }\r\n\r\n while (result) {\r\n let sibling: Node | null = node;\r\n while (node.parentNode && !(sibling = isTail ? node.nextSibling : node.previousSibling)) {\r\n node = node.parentNode;\r\n if (node == containerBlockNode) {\r\n return result;\r\n }\r\n }\r\n\r\n while (sibling) {\r\n if (isBlockElement(sibling)) {\r\n return result;\r\n } else if (getTagOfNode(sibling) == 'BR') {\r\n return isTail ? sibling : result;\r\n }\r\n\r\n node = sibling;\r\n sibling = isTail ? node.firstChild : node.lastChild;\r\n }\r\n\r\n result = node;\r\n }\r\n return result;\r\n}\r\n","import getBlockElementAtNode from './getBlockElementAtNode';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the first/last BlockElement of under the root node.\r\n * If no suitable BlockElement found, returns null\r\n * @param rootNode The root node to get BlockElement from\r\n * @param isFirst True to get first BlockElement, false to get last BlockElement\r\n */\r\nexport default function getFirstLastBlockElement(\r\n rootNode: Node,\r\n isFirst: boolean\r\n): BlockElement | null {\r\n let node: Node | null = rootNode;\r\n do {\r\n node = node && (isFirst ? node.firstChild : node.lastChild);\r\n } while (node && node.firstChild);\r\n return (node && getBlockElementAtNode(rootNode, node)) || null;\r\n}\r\n","import extractClipboardItems from './extractClipboardItems';\nimport extractClipboardItemsForIE from './extractClipboardItemsForIE';\nimport toArray from '../jsUtils/toArray';\nimport { Browser } from '../utils/Browser';\nimport { ClipboardData, ExtractClipboardEventOption } from 'roosterjs-editor-types';\n\ninterface WindowForIE extends Window {\n clipboardData: DataTransfer;\n}\n\n/**\n * @deprecated Use extractClipboardItems and extractClipboardItemsForIE instead\n * Extract a Clipboard event\n * @param event The paste event\n * @param callback Callback function when data is ready\n * @param options Options to retrieve more items from the event, including HTML string and other customized items\n * @param rangeBeforePaste Optional range to be removed when pasting in Android\n * @returns An object with the following properties:\n * types: Available types from the clipboard event\n * text: Plain text from the clipboard event\n * image: Image file from the clipboard event\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\n * not supported by browser.\n */\nexport default function extractClipboardEvent(\n event: ClipboardEvent,\n callback: (clipboardData: ClipboardData) => void,\n options?: ExtractClipboardEventOption,\n rangeBeforePaste?: Range\n) {\n const dataTransfer =\n event.clipboardData ||\n (((event.target).ownerDocument?.defaultView)).clipboardData;\n\n if (dataTransfer.items) {\n event.preventDefault();\n extractClipboardItems(\n toArray(dataTransfer.items),\n options,\n true /** pasteNativeEvent */\n ).then((clipboardData: ClipboardData) => {\n removeContents(rangeBeforePaste);\n callback(clipboardData);\n });\n } else {\n extractClipboardItemsForIE(dataTransfer, callback, options);\n }\n}\n\nfunction removeContents(range?: Range) {\n if (Browser.isAndroid && range) {\n range.deleteContents();\n }\n}\n","import readFile from '../utils/readFile';\r\nimport { Browser } from '../utils/Browser';\r\nimport {\r\n ClipboardData,\r\n ContentType,\r\n ContentTypePrefix,\r\n EdgeLinkPreview,\r\n ExtractClipboardItemsOption,\r\n} from 'roosterjs-editor-types';\r\n\r\n// HTML header to indicate where is the HTML content started from.\r\n// Sample header:\r\n// Version:0.9\r\n// StartHTML:71\r\n// EndHTML:170\r\n// StartFragment:140\r\n// EndFragment:160\r\n// StartSelection:140\r\n// EndSelection:160\r\nconst CLIPBOARD_HTML_HEADER_REGEX = /^Version:[0-9\\.]+\\s+StartHTML:\\s*([0-9]+)\\s+EndHTML:\\s*([0-9]+)\\s+/i;\r\nconst OTHER_TEXT_TYPE = ContentTypePrefix.Text + '*';\r\nconst EDGE_LINK_PREVIEW = 'link-preview';\r\nconst ContentHandlers: {\r\n [contentType: string]: (data: ClipboardData, value: string, type?: string) => void;\r\n} = {\r\n [ContentType.HTML]: (data, value) =>\r\n (data.rawHtml = Browser.isEdge ? workaroundForEdge(value) : value),\r\n [ContentType.PlainText]: (data, value) => (data.text = value),\r\n [OTHER_TEXT_TYPE]: (data, value, type?) => !!type && (data.customValues[type] = value),\r\n [ContentTypePrefix.Text + EDGE_LINK_PREVIEW]: tryParseLinkPreview,\r\n};\r\n\r\n/**\r\n * Extract clipboard items to be a ClipboardData object for IE\r\n * @param items The clipboard items retrieve from a DataTransfer object\r\n * @param callback Callback function when data is ready\r\n * @returns An object with the following properties:\r\n * types: Available types from the clipboard event\r\n * text: Plain text from the clipboard event\r\n * image: Image file from the clipboard event\r\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\r\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\r\n * not supported by browser.\r\n */\r\nexport default function extractClipboardItems(\r\n items: DataTransferItem[],\r\n options?: ExtractClipboardItemsOption,\r\n pasteNativeEvent?: boolean\r\n): Promise {\r\n const data: ClipboardData = {\r\n types: [],\r\n text: '',\r\n image: null,\r\n files: [],\r\n rawHtml: null,\r\n customValues: {},\r\n pasteNativeEvent: pasteNativeEvent,\r\n };\r\n\r\n return Promise.all(\r\n (items || []).map(item => {\r\n const type = item.type;\r\n\r\n if (type.indexOf(ContentTypePrefix.Image) == 0 && !data.image && item.kind == 'file') {\r\n data.types.push(type);\r\n data.image = item.getAsFile();\r\n return new Promise(resolve => {\r\n if (data.image) {\r\n readFile(data.image, dataUrl => {\r\n data.imageDataUri = dataUrl;\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n } else if (item.kind == 'file') {\r\n return new Promise(resolve => {\r\n const file = item.getAsFile();\r\n if (!!file) {\r\n data.types.push(type);\r\n data.files!.push(file);\r\n }\r\n resolve();\r\n });\r\n } else {\r\n const customType = getAllowedCustomType(type, options?.allowedCustomPasteType);\r\n const handler =\r\n ContentHandlers[type] || (customType ? ContentHandlers[OTHER_TEXT_TYPE] : null);\r\n return new Promise(resolve =>\r\n handler\r\n ? item.getAsString(value => {\r\n data.types.push(type);\r\n handler(data, value, customType);\r\n resolve();\r\n })\r\n : resolve()\r\n );\r\n }\r\n })\r\n ).then(() => data);\r\n}\r\n\r\n/**\r\n * Edge sometimes doesn't remove the headers, which cause we paste more things then expected.\r\n * So we need to remove it in our code\r\n * @param html The HTML string got from clipboard\r\n */\r\nfunction workaroundForEdge(html: string) {\r\n const headerValues = CLIPBOARD_HTML_HEADER_REGEX.exec(html);\r\n\r\n if (headerValues?.length == 3) {\r\n const start = parseInt(headerValues[1]);\r\n const end = parseInt(headerValues[2]);\r\n if (start > 0 && end > start) {\r\n html = html.substring(start, end);\r\n }\r\n }\r\n\r\n return html;\r\n}\r\n\r\nfunction tryParseLinkPreview(data: ClipboardData, value: string) {\r\n try {\r\n data.customValues[EDGE_LINK_PREVIEW] = value;\r\n data.linkPreview = JSON.parse(value) as EdgeLinkPreview;\r\n } catch {}\r\n}\r\n\r\nfunction getAllowedCustomType(type: string, allowedCustomPasteType?: string[]) {\r\n const textType =\r\n type.indexOf(ContentTypePrefix.Text) == 0\r\n ? type.substring(ContentTypePrefix.Text.length)\r\n : null;\r\n const index =\r\n allowedCustomPasteType && textType ? allowedCustomPasteType.indexOf(textType) : -1;\r\n return textType && index >= 0 ? textType : undefined;\r\n}\r\n","import readFile from '../utils/readFile';\r\nimport toArray from '../jsUtils/toArray';\r\nimport {\r\n ClipboardData,\r\n ContentTypePrefix,\r\n ExtractClipboardItemsForIEOptions,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Extract clipboard items to be a ClipboardData object for IE\r\n * @param dataTransfer The clipboard items retrieve from a DataTransfer object\r\n * @param callback Callback function when data is ready\r\n * @returns An object with the following properties:\r\n * types: Available types from the clipboard event\r\n * text: Plain text from the clipboard event\r\n * image: Image file from the clipboard event\r\n * html: Html string from the clipboard event. When set to null, it means there's no HTML found from the event.\r\n * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is\r\n * not supported by browser.\r\n */\r\nexport default function extractClipboardItemsForIE(\r\n dataTransfer: DataTransfer,\r\n callback: (data: ClipboardData) => void,\r\n options?: ExtractClipboardItemsForIEOptions\r\n) {\r\n const clipboardData: ClipboardData = {\r\n types: dataTransfer.types ? toArray(dataTransfer.types) : [],\r\n text: dataTransfer.getData('text'),\r\n image: null,\r\n files: [],\r\n rawHtml: null,\r\n customValues: {},\r\n pasteNativeEvent: true,\r\n };\r\n\r\n for (let i = 0; i < (dataTransfer.files ? dataTransfer.files.length : 0); i++) {\r\n let file = dataTransfer.files.item(i);\r\n if (file?.type?.indexOf(ContentTypePrefix.Image) == 0) {\r\n clipboardData.image = file;\r\n break;\r\n }\r\n }\r\n\r\n const nextStep = () => {\r\n if (clipboardData.image) {\r\n readFile(clipboardData.image, dataUrl => {\r\n clipboardData.imageDataUri = dataUrl;\r\n callback(clipboardData);\r\n });\r\n } else {\r\n callback(clipboardData);\r\n }\r\n };\r\n\r\n if (options?.getTempDiv && options?.removeTempDiv) {\r\n const div = options.getTempDiv();\r\n div.contentEditable = 'true';\r\n div.innerHTML = '';\r\n div.focus();\r\n div.ownerDocument?.defaultView?.setTimeout(() => {\r\n clipboardData.rawHtml = div.innerHTML;\r\n options.removeTempDiv?.(div);\r\n nextStep();\r\n }, 0);\r\n } else {\r\n clipboardData.rawHtml = undefined;\r\n nextStep();\r\n }\r\n}\r\n","import { PasteType } from 'roosterjs-editor-types';\n\n/**\n * Get the paste type that will be used corresponding to the configuration\n * @param pasteAsText Whether to paste as Text\n * @param applyCurrentStyle Whether to apply the current format to the content\n * @param pasteAsImage Whether to only paste the image\n * @returns\n */\nexport default function getPasteType(\n pasteAsText: boolean,\n applyCurrentStyle: boolean,\n pasteAsImage: boolean\n) {\n if (pasteAsText) {\n return PasteType.AsPlainText;\n } else if (applyCurrentStyle) {\n return PasteType.MergeFormat;\n } else if (pasteAsImage) {\n return PasteType.AsImage;\n } else {\n return PasteType.Normal;\n }\n}\n","/**\n * Handles the content when using the Image Paste Option\n * @param imageDataUri the image uri to use for the image\n * @param fragment fragment that will contain the content to paste.\n */\nexport default function handleImagePaste(imageDataUri: string, fragment: DocumentFragment) {\n const img = fragment.ownerDocument.createElement('img');\n img.style.maxWidth = '100%';\n img.src = imageDataUri;\n fragment.appendChild(img);\n}\n","import wrap from '../utils/wrap';\nimport { NodePosition } from 'roosterjs-editor-types';\n\nconst NBSP_HTML = '\\u00A0';\nconst ENSP_HTML = '\\u2002';\nconst TAB_SPACES = 6;\n\n/**\n * handle the content when using the text only option\n * @param text Text from clipboard\n * @param position current position of the clipboard\n * @param fragment fragment that contains the paste content.\n */\nexport default function handleTextPaste(\n text: string,\n position: NodePosition | null,\n fragment: DocumentFragment\n) {\n const document = fragment.ownerDocument;\n text.split('\\n').forEach((line, index, lines) => {\n line = line\n .replace(/^ /g, NBSP_HTML)\n .replace(/\\r/g, '')\n .replace(/ {2}/g, ' ' + NBSP_HTML);\n\n if (line.includes('\\t')) {\n line = transformTabCharacters(line, index === 0 ? position?.offset : 0);\n }\n\n const textNode = document.createTextNode(line);\n\n // There are 3 scenarios:\n // 1. Single line: Paste as it is\n // 2. Two lines: Add
                            between the lines\n // 3. 3 or More lines, For first and last line, paste as it is. For middle lines, wrap with DIV, and add BR if it is empty line\n if (lines.length == 2 && index == 0) {\n // 1 of 2 lines scenario, add BR\n fragment.appendChild(textNode);\n fragment.appendChild(document.createElement('br'));\n } else if (index > 0 && index < lines.length - 1) {\n // Middle line of >=3 lines scenario, wrap with DIV\n fragment.appendChild(wrap(line == '' ? document.createElement('br') : textNode));\n } else {\n // All others, paste as it is\n fragment.appendChild(textNode);\n }\n });\n}\n\n/**\n * @internal\n * Transform \\t characters into EN SPACE characters\n * @param input string NOT containing \\n characters\n * @example t(\"\\thello\", 2) => \"    hello\"\n */\n\nexport function transformTabCharacters(input: string, initialOffset: number = 0) {\n let line = input;\n let tIndex: number;\n while ((tIndex = line.indexOf('\\t')) != -1) {\n const lineBefore = line.slice(0, tIndex);\n const lineAfter = line.slice(tIndex + 1);\n const tabCount = TAB_SPACES - ((lineBefore.length + initialOffset) % TAB_SPACES);\n const tabStr = Array(tabCount).fill(ENSP_HTML).join('');\n line = lineBefore + tabStr + lineAfter;\n }\n return line;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport toArray from '../jsUtils/toArray';\nimport { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\n\nconst START_FRAGMENT = '';\nconst END_FRAGMENT = '';\n\n/**\n * Retrieves the metadata from the content inside of the clipboard\n * @param doc Document parsed from the clipboard\n * @param event Before Paste event\n * @param trustedHTMLHandler the trusted html handler to sanitize the content.\n */\nexport default function retrieveMetadataFromClipboard(\n doc: Document | undefined,\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { clipboardData, sanitizingOption } = event;\n const { rawHtml } = clipboardData;\n if (rawHtml && doc?.body) {\n const attributes = doc.querySelector('html')?.attributes;\n (attributes ? toArray(attributes) : []).reduce((attrs, attr) => {\n attrs[attr.name] = attr.value;\n return attrs;\n }, event.htmlAttributes);\n toArray(doc.querySelectorAll('meta')).reduce((attrs, meta) => {\n attrs[meta.name] = meta.content;\n return attrs;\n }, event.htmlAttributes);\n\n clipboardData.htmlFirstLevelChildTags = [];\n doc?.body.normalize();\n\n for (let i = 0; i < doc?.body.childNodes.length; i++) {\n const node = doc?.body.childNodes.item(i);\n if (node.nodeType == Node.TEXT_NODE) {\n const trimmedString = node.nodeValue?.replace(/(\\r\\n|\\r|\\n)/gm, '').trim();\n if (!trimmedString) {\n continue;\n }\n }\n const nodeTag = getTagOfNode(node);\n if (node.nodeType != Node.COMMENT_NODE) {\n clipboardData.htmlFirstLevelChildTags.push(nodeTag);\n }\n }\n // Move all STYLE nodes into header, and save them into sanitizing options.\n // Because if we directly move them into a fragment, all sheets under STYLE will be lost.\n processStyles(doc, style => {\n doc?.head.appendChild(style);\n sanitizingOption.additionalGlobalStyleNodes.push(style);\n });\n\n const startIndex = rawHtml.indexOf(START_FRAGMENT);\n const endIndex = rawHtml.lastIndexOf(END_FRAGMENT);\n\n if (startIndex >= 0 && endIndex >= startIndex + START_FRAGMENT.length) {\n event.htmlBefore = rawHtml.substr(0, startIndex);\n event.htmlAfter = rawHtml.substr(endIndex + END_FRAGMENT.length);\n clipboardData.html = rawHtml.substring(startIndex + START_FRAGMENT.length, endIndex);\n doc.body.innerHTML = trustedHTMLHandler(clipboardData.html);\n\n // Remove style nodes just added by setting innerHTML of body since we already have all\n // style nodes in header.\n // Here we use doc.body instead of doc because we only want to remove STYLE nodes under BODY\n // and the nodes under HEAD are still used when convert global CSS to inline\n processStyles(doc.body, style => style.parentNode?.removeChild(style));\n }\n }\n}\n\nfunction processStyles(node: ParentNode, callback: (style: HTMLStyleElement) => void) {\n toArray(node.querySelectorAll('style')).forEach(callback);\n}\n","import getInheritableStyles from '../htmlSanitizer/getInheritableStyles';\nimport HtmlSanitizer from '../htmlSanitizer/HtmlSanitizer';\nimport { BeforePasteEvent, NodePosition } from 'roosterjs-editor-types';\n\n/**\n * Sanitize the content from the pasted content\n * @param event The before paste event\n * @param position the position of the cursor\n */\nexport default function sanitizePasteContent(\n event: BeforePasteEvent,\n position: NodePosition | null\n) {\n const { fragment } = event;\n const sanitizer = new HtmlSanitizer(event.sanitizingOption);\n sanitizer.convertGlobalCssToInlineCss(fragment);\n sanitizer.sanitize(fragment, position ? getInheritableStyles(position.element) : undefined);\n}\n","import contains from '../utils/contains';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getFirstLastBlockElement from '../blockElements/getFirstLastBlockElement';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, InlineElement } from 'roosterjs-editor-types';\r\nimport { getFirstInlineElement } from '../inlineElements/getFirstLastInlineElement';\r\n\r\n/**\r\n * @internal\r\n * provides a scope object for traversing the entire editor body starting from the beginning\r\n */\r\nexport default class BodyScoper implements TraversingScoper {\r\n private startNode: Node | null;\r\n\r\n /**\r\n * Construct a new instance of BodyScoper class\r\n * @param rootNode Root node of the body\r\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\r\n */\r\n constructor(public rootNode: Node, startNode?: Node) {\r\n this.startNode = contains(rootNode, startNode) ? startNode! : null;\r\n }\r\n\r\n /**\r\n * Get the start block element\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n return this.startNode\r\n ? getBlockElementAtNode(this.rootNode, this.startNode)\r\n : getFirstLastBlockElement(this.rootNode, true /*isFirst*/);\r\n }\r\n\r\n /**\r\n * Get the start inline element\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n return this.startNode\r\n ? getInlineElementAtNode(this.rootNode, this.startNode)\r\n : getFirstInlineElement(this.rootNode);\r\n }\r\n\r\n /**\r\n * Since the scope is global, all blocks under the root node are in scope\r\n */\r\n public isBlockInScope(blockElement: BlockElement): boolean {\r\n return contains(this.rootNode, blockElement.getStartNode());\r\n }\r\n\r\n /**\r\n * Since we're at body scope, inline elements never need to be trimmed\r\n */\r\n public trimInlineElement(inlineElement: InlineElement): InlineElement {\r\n return inlineElement;\r\n }\r\n}\r\n","import BodyScoper from './BodyScoper';\r\nimport EmptyInlineElement from '../inlineElements/EmptyInlineElement';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport PartialInlineElement from '../inlineElements/PartialInlineElement';\r\nimport SelectionBlockScoper from './SelectionBlockScoper';\r\nimport SelectionScoper from './SelectionScoper';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { getInlineElementBeforeAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\nimport { getLeafSibling } from '../utils/getLeafSibling';\r\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\r\nimport {\r\n BlockElement,\r\n ContentPosition,\r\n IContentTraverser,\r\n InlineElement,\r\n NodePosition,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * The provides traversing of content inside editor.\r\n * There are two ways to traverse, block by block, or inline element by inline element\r\n * Block and inline traversing is independent from each other, meaning if you traverse block by block, it does not change\r\n * the current inline element position\r\n */\r\nexport default class ContentTraverser implements IContentTraverser {\r\n private currentInline: InlineElement | null = null;\r\n private currentBlock: BlockElement | null = null;\r\n\r\n /**\r\n * Create a content traverser for the whole body of given root node\r\n * @param scoper Traversing scoper object to help scope the traversing\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n private constructor(private scoper: TraversingScoper, private skipTags?: string[]) {}\r\n\r\n /**\r\n * Create a content traverser for the whole body of given root node\r\n * @param rootNode The root node to traverse in\r\n * @param startNode The node to start from. If not passed, it will start from the beginning of the body\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createBodyTraverser(\r\n rootNode: Node,\r\n startNode?: Node,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new BodyScoper(rootNode, startNode));\r\n }\r\n\r\n /**\r\n * Create a content traverser for the given selection\r\n * @param rootNode The root node to traverse in\r\n * @param range The selection range to scope the traversing\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createSelectionTraverser(\r\n rootNode: Node,\r\n range: Range,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new SelectionScoper(rootNode, range), skipTags);\r\n }\r\n\r\n /**\r\n * Create a content traverser for a block element which contains the given position\r\n * @param rootNode The root node to traverse in\r\n * @param position A position inside a block, traversing will be scoped within this block.\r\n * If passing a range, the start position of this range will be used\r\n * @param startFrom Start position of traversing. The value can be Begin, End, SelectionStart\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\n public static createBlockTraverser(\r\n rootNode: Node,\r\n position: NodePosition | Range,\r\n start: ContentPosition | CompatibleContentPosition = ContentPosition.SelectionStart,\r\n skipTags?: string[]\r\n ): IContentTraverser {\r\n return new ContentTraverser(new SelectionBlockScoper(rootNode, position, start));\r\n }\r\n\r\n /**\r\n * Get current block\r\n */\r\n public get currentBlockElement(): BlockElement | null {\r\n // Prepare currentBlock from the scoper\r\n if (!this.currentBlock) {\r\n this.currentBlock = this.scoper.getStartBlockElement();\r\n }\r\n\r\n return this.currentBlock;\r\n }\r\n\r\n /**\r\n * Get next block element\r\n */\r\n public getNextBlockElement(): BlockElement | null {\r\n return this.getPreviousNextBlockElement(true /*isNext*/);\r\n }\r\n\r\n /**\r\n * Get previous block element\r\n */\r\n public getPreviousBlockElement(): BlockElement | null {\r\n return this.getPreviousNextBlockElement(false /*isNext*/);\r\n }\r\n\r\n private getPreviousNextBlockElement(isNext: boolean): BlockElement | null {\r\n let current = this.currentBlockElement;\r\n\r\n if (!current) {\r\n return null;\r\n }\r\n\r\n let leaf = getLeafSibling(\r\n this.scoper.rootNode,\r\n isNext ? current.getEndNode() : current.getStartNode(),\r\n isNext,\r\n this.skipTags\r\n );\r\n let newBlock = leaf ? getBlockElementAtNode(this.scoper.rootNode, leaf) : null;\r\n\r\n // Make sure this is right block:\r\n // 1) the block is in scope per scoper\r\n // 2) the block is after (for next) or before (for previous) the current block\r\n // Then:\r\n // 1) Re-position current block to newly found block\r\n if (\r\n newBlock &&\r\n this.scoper.isBlockInScope(newBlock) &&\r\n ((isNext && newBlock.isAfter(current)) || (!isNext && current.isAfter(newBlock)))\r\n ) {\r\n this.currentBlock = newBlock;\r\n return this.currentBlock;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Current inline element getter\r\n */\r\n public get currentInlineElement(): InlineElement | null {\r\n // Retrieve a start inline from scoper\r\n if (!this.currentInline) {\r\n this.currentInline = this.scoper.getStartInlineElement();\r\n }\r\n\r\n return this.currentInline instanceof EmptyInlineElement ? null : this.currentInline;\r\n }\r\n\r\n /**\r\n * Get next inline element\r\n */\r\n public getNextInlineElement(): InlineElement | null {\r\n return this.getPreviousNextInlineElement(true /*isNext*/);\r\n }\r\n\r\n /**\r\n * Get previous inline element\r\n */\r\n public getPreviousInlineElement(): InlineElement | null {\r\n return this.getPreviousNextInlineElement(false /*isNext*/);\r\n }\r\n\r\n private getPreviousNextInlineElement(isNext: boolean): InlineElement | null {\r\n let current = this.currentInlineElement || this.currentInline;\r\n let newInline: InlineElement | null;\r\n\r\n if (!current) {\r\n return null;\r\n }\r\n\r\n if (current instanceof EmptyInlineElement) {\r\n newInline = getInlineElementBeforeAfter(\r\n this.scoper.rootNode,\r\n current.getStartPosition(),\r\n isNext\r\n );\r\n if (newInline && !current.getParentBlock().contains(newInline.getContainerNode())) {\r\n newInline = null;\r\n }\r\n } else {\r\n newInline = getNextPreviousInlineElement(this.scoper.rootNode, current, isNext);\r\n newInline =\r\n newInline &&\r\n current &&\r\n ((isNext && newInline.isAfter(current)) || (!isNext && current.isAfter(newInline)))\r\n ? newInline\r\n : null;\r\n }\r\n\r\n // For inline, we need to make sure:\r\n // 1) it is really next/previous to current\r\n // 2) pass on the new inline to this.scoper to do the trimming and we still get back an inline\r\n // Then\r\n // 1) re-position current inline\r\n if (newInline && (newInline = this.scoper.trimInlineElement(newInline))) {\r\n this.currentInline = newInline;\r\n return this.currentInline;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nfunction getNextPreviousInlineElement(\r\n rootNode: Node,\r\n current: InlineElement,\r\n isNext: boolean\r\n): InlineElement | null {\r\n if (!current) {\r\n return null;\r\n }\r\n if (current instanceof PartialInlineElement) {\r\n // if current is partial, get the other half of the inline unless it is no more\r\n let result = isNext ? current.nextInlineElement : current.previousInlineElement;\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // Get a leaf node after startNode and use that base to find next inline\r\n let startNode: Node | null = current.getContainerNode();\r\n startNode = getLeafSibling(rootNode, startNode, isNext);\r\n return getInlineElementAtNode(rootNode, startNode);\r\n}\r\n","import ContentTraverser from './ContentTraverser';\r\nimport createRange from '../selection/createRange';\r\nimport {\r\n IContentTraverser,\r\n InlineElement,\r\n IPositionContentSearcher,\r\n NodePosition,\r\n} from 'roosterjs-editor-types';\r\n\r\n// White space matching regex. It matches following chars:\r\n// \\s: white space\r\n// \\u00A0: no-breaking white space\r\n// \\u200B: zero width space\r\n// \\u3000: full width space (which can come from JPN IME)\r\nconst WHITESPACE_REGEX = /[\\s\\u00A0\\u200B\\u3000]+([^\\s\\u00A0\\u200B\\u3000]*)$/i;\r\n\r\n/**\r\n * The class that helps search content around a position\r\n */\r\nexport default class PositionContentSearcher implements IPositionContentSearcher {\r\n // The cached text before position that has been read so far\r\n private text = '';\r\n\r\n // The cached word before position\r\n private word: string = '';\r\n\r\n // The inline element before position\r\n private inlineBefore: InlineElement | null = null;\r\n\r\n // The inline element after position\r\n private inlineAfter: InlineElement | null = null;\r\n\r\n // The content traverser used to traverse backwards\r\n private traverser: IContentTraverser | null = null;\r\n\r\n // Backward parsing has completed\r\n private traversingComplete: boolean = false;\r\n\r\n // All inline elements before position that have been read so far\r\n private inlineElements: InlineElement[] = [];\r\n\r\n // First non-text inline before position\r\n private nearestNonTextInlineElement: InlineElement | null = null;\r\n\r\n /**\r\n * Create a new CursorData instance\r\n * @param rootNode Root node of the whole scope\r\n * @param position Start position\r\n */\r\n constructor(private rootNode: Node, private position: NodePosition) {}\r\n\r\n /**\r\n * Get the word before position. The word is determined by scanning backwards till the first white space, the portion\r\n * between position and the white space is the word before position\r\n * @returns The word before position\r\n */\r\n public getWordBefore(): string {\r\n if (!this.word) {\r\n this.traverse(() => this.word);\r\n }\r\n\r\n return this.word || '';\r\n }\r\n\r\n /**\r\n * Get the inline element before position\r\n * @returns The inlineElement before position\r\n */\r\n public getInlineElementBefore(): InlineElement | null {\r\n if (!this.inlineBefore) {\r\n this.traverse(null);\r\n }\r\n\r\n return this.inlineBefore;\r\n }\r\n\r\n /**\r\n * Get the inline element after position\r\n * @returns The inline element after position\r\n */\r\n public getInlineElementAfter(): InlineElement | null {\r\n if (!this.inlineAfter) {\r\n this.inlineAfter = ContentTraverser.createBlockTraverser(\r\n this.rootNode,\r\n this.position\r\n ).currentInlineElement;\r\n }\r\n\r\n return this.inlineAfter;\r\n }\r\n\r\n /**\r\n * Get X number of chars before position\r\n * The actual returned chars may be less than what is requested.\r\n * @param length The length of string user want to get, the string always ends at the position,\r\n * so this length determines the start position of the string\r\n * @returns The actual string we get as a sub string, or the whole string before position when\r\n * there is not enough chars in the string\r\n */\r\n public getSubStringBefore(length: number): string {\r\n if (this.text.length < length) {\r\n this.traverse(() => this.text.length >= length);\r\n }\r\n\r\n return this.text.substr(Math.max(0, this.text.length - length));\r\n }\r\n\r\n /**\r\n * Try to get a range matches the given text before the position\r\n * @param text The text to match against\r\n * @param exactMatch Whether it is an exact match\r\n * @returns The range for the matched text, null if unable to find a match\r\n */\r\n public getRangeFromText(text: string, exactMatch: boolean): Range | null {\r\n if (!text) {\r\n return null;\r\n }\r\n\r\n let startPosition: NodePosition | null = null;\r\n let endPosition: NodePosition | null = null;\r\n let textIndex = text.length - 1;\r\n\r\n this.forEachTextInlineElement(textInline => {\r\n let nodeContent = textInline.getTextContent() || '';\r\n let nodeIndex = nodeContent.length - 1;\r\n for (; nodeIndex >= 0 && textIndex >= 0; nodeIndex--) {\r\n if (text.charCodeAt(textIndex) == nodeContent.charCodeAt(nodeIndex)) {\r\n textIndex--;\r\n\r\n // on first time when end is matched, set the end of range\r\n if (!endPosition) {\r\n endPosition = textInline.getStartPosition().move(nodeIndex + 1);\r\n }\r\n } else if (exactMatch || endPosition) {\r\n // Mismatch found when exact match or end already match, so return since matching failed\r\n return true;\r\n }\r\n }\r\n\r\n // when textIndex == -1, we have a successful complete match\r\n if (textIndex == -1) {\r\n startPosition = textInline.getStartPosition().move(nodeIndex + 1);\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return startPosition && endPosition && createRange(startPosition, endPosition);\r\n }\r\n\r\n /**\r\n * Get text section before position till stop condition is met.\r\n * This offers consumers to retrieve text section by section\r\n * The section essentially is just an inline element which has Container element\r\n * so that the consumer can remember it for anchoring popup or verification purpose\r\n * when position moves out of context etc.\r\n * @param stopFunc The callback stop function\r\n */\r\n public forEachTextInlineElement(callback: (textInlineElement: InlineElement) => any) {\r\n // We cache all text sections read so far\r\n // Every time when you ask for textSection, we start with the cached first\r\n // and resort to further reading once we exhausted with the cache\r\n if (!this.inlineElements.some(callback)) {\r\n this.traverse(callback);\r\n }\r\n }\r\n\r\n /**\r\n * Get first non textual inline element before position\r\n * @returns First non textual inline element before position or null if no such element exists\r\n */\r\n public getNearestNonTextInlineElement(): InlineElement | null {\r\n if (!this.nearestNonTextInlineElement) {\r\n this.traverse(() => this.nearestNonTextInlineElement);\r\n }\r\n\r\n return this.nearestNonTextInlineElement;\r\n }\r\n\r\n /**\r\n * Continue traversing backward till stop condition is met or begin of block is reached\r\n */\r\n private traverse(callback: null | ((inlineElement: InlineElement) => any)) {\r\n this.traverser =\r\n this.traverser || ContentTraverser.createBlockTraverser(this.rootNode, this.position);\r\n\r\n if (!this.traverser || this.traversingComplete) {\r\n return;\r\n }\r\n\r\n let previousInline = this.traverser.getPreviousInlineElement();\r\n while (!this.traversingComplete) {\r\n this.inlineBefore = this.inlineBefore || previousInline;\r\n\r\n if (previousInline && previousInline.isTextualInlineElement()) {\r\n let textContent = previousInline.getTextContent();\r\n\r\n // build the word before position if it is not built yet\r\n if (!this.word) {\r\n // Match on the white space, the portion after space is on the index of 1 of the matched result\r\n // (index at 0 is whole match result, index at 1 is the word)\r\n let matches = WHITESPACE_REGEX.exec(textContent);\r\n if (matches && matches.length == 2) {\r\n this.word = matches[1] + this.text;\r\n }\r\n }\r\n\r\n this.text = textContent + this.text;\r\n this.inlineElements.push(previousInline);\r\n\r\n // Check if stop condition is met\r\n if (callback && callback(previousInline)) {\r\n break;\r\n }\r\n } else {\r\n this.nearestNonTextInlineElement = previousInline;\r\n this.traversingComplete = true;\r\n if (!this.word) {\r\n // if parsing is done, whatever we get so far in this.cachedText should also be in this.cachedWordBeforeCursor\r\n this.word = this.text;\r\n }\r\n\r\n // When a non-textual inline element, or null is seen, we consider parsing complete\r\n // TODO: we may need to change this if there is a future need to parse beyond text, i.e.\r\n // we have aaa @someone bbb, and we want to read the text before @someone\r\n break;\r\n }\r\n\r\n previousInline = this.traverser.getPreviousInlineElement();\r\n }\r\n }\r\n}\r\n","import EmptyInlineElement from '../inlineElements/EmptyInlineElement';\r\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getInlineElementAtNode from '../inlineElements/getInlineElementAtNode';\r\nimport NodeBlockElement from '../blockElements/NodeBlockElement';\r\nimport Position from '../selection/Position';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, ContentPosition, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\nimport { getInlineElementAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\nimport {\r\n getFirstInlineElement,\r\n getLastInlineElement,\r\n} from '../inlineElements/getFirstLastInlineElement';\r\nimport type { CompatibleContentPosition } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * @internal\r\n * This provides traversing content in a selection start block\r\n * This is commonly used for those cursor context sensitive plugin,\r\n * they want to know text being typed at cursor\r\n * This provides a scope for parsing from cursor position up to begin of the selection block\r\n */\r\nexport default class SelectionBlockScoper implements TraversingScoper {\r\n private block: BlockElement | null;\r\n private position: NodePosition;\r\n\r\n /**\r\n * Create a new instance of SelectionBlockScoper class\r\n * @param rootNode The root node of the whole scope\r\n * @param position Position of the selection start\r\n * @param startFrom Where to start, can be Begin, End, SelectionStart\r\n */\r\n constructor(\r\n public rootNode: Node,\r\n position: NodePosition | Range,\r\n private startFrom: ContentPosition | CompatibleContentPosition\r\n ) {\r\n if (safeInstanceOf(position, 'Range')) {\r\n position = Position.getStart(position);\r\n }\r\n\r\n this.position = position.normalize();\r\n this.block = getBlockElementAtNode(this.rootNode, this.position.node);\r\n }\r\n\r\n /**\r\n * Get the start block element\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n return this.block;\r\n }\r\n\r\n /**\r\n * Get the start inline element\r\n * The start inline refers to inline before the selection start\r\n * The reason why we choose the one before rather after is, when cursor is at the end of a paragraph,\r\n * the one after likely will point to inline in next paragraph which may be null if the cursor is at bottom of editor\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n if (this.block) {\r\n switch (this.startFrom) {\r\n case ContentPosition.Begin:\r\n case ContentPosition.End:\r\n case ContentPosition.DomEnd:\r\n return getFirstLastInlineElementFromBlockElement(\r\n this.block,\r\n this.startFrom == ContentPosition.Begin\r\n );\r\n case ContentPosition.SelectionStart:\r\n // Get the inline before selection start point, and ensure it falls in the selection block\r\n let startInline = getInlineElementAfter(this.rootNode, this.position);\r\n return startInline && this.block.contains(startInline.getContainerNode())\r\n ? startInline\r\n : new EmptyInlineElement(this.position, this.block);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Check if the given block element is in current scope\r\n * @param blockElement The block element to check\r\n */\r\n public isBlockInScope(blockElement: BlockElement): boolean {\r\n return this.block && blockElement ? this.block.equals(blockElement) : false;\r\n }\r\n\r\n /**\r\n * Trim the incoming inline element, and return an inline element\r\n * This just tests and return the inline element if it is in block\r\n * This is a block scoper, which is not like selection scoper where it may cut an inline element in half\r\n * A block scoper does not cut an inline in half\r\n */\r\n public trimInlineElement(inlineElement: InlineElement): InlineElement | null {\r\n return this.block && inlineElement && this.block.contains(inlineElement.getContainerNode())\r\n ? inlineElement\r\n : null;\r\n }\r\n}\r\n\r\n/**\r\n * Get first/last InlineElement of the given BlockElement\r\n * @param block The BlockElement to get InlineElement from\r\n * @param isFirst True to get first InlineElement, false to get last InlineElement\r\n */\r\nfunction getFirstLastInlineElementFromBlockElement(\r\n block: BlockElement,\r\n isFirst: boolean\r\n): InlineElement | null {\r\n if (block instanceof NodeBlockElement) {\r\n let blockNode = block.getStartNode();\r\n return isFirst ? getFirstInlineElement(blockNode) : getLastInlineElement(blockNode);\r\n } else {\r\n return getInlineElementAtNode(block, isFirst ? block.getStartNode() : block.getEndNode());\r\n }\r\n}\r\n","import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport PartialInlineElement from '../inlineElements/PartialInlineElement';\r\nimport Position from '../selection/Position';\r\nimport TraversingScoper from './TraversingScoper';\r\nimport { BlockElement, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\nimport { getInlineElementAfter } from '../inlineElements/getInlineElementBeforeAfter';\r\n\r\n/**\r\n * @internal\r\n * This is selection scoper that provide a start inline as the start of the selection\r\n * and checks if a block falls in the selection (isBlockInScope)\r\n * last trimInlineElement to trim any inline element to return a partial that falls in the selection\r\n */\r\nexport default class SelectionScoper implements TraversingScoper {\r\n private start: NodePosition;\r\n private end: NodePosition;\r\n private startBlock: BlockElement | null = null;\r\n private startInline: InlineElement | null = null;\r\n\r\n /**\r\n * Create a new instance of SelectionScoper class\r\n * @param rootNode The root node of the content\r\n * @param range The selection range to scope to\r\n */\r\n constructor(public rootNode: Node, range: Range) {\r\n this.start = Position.getStart(range).normalize();\r\n this.end = Position.getEnd(range).normalize();\r\n }\r\n\r\n /**\r\n * Provide a start block as the first block after the cursor\r\n */\r\n public getStartBlockElement(): BlockElement | null {\r\n if (!this.startBlock) {\r\n this.startBlock = getBlockElementAtNode(this.rootNode, this.start.node);\r\n }\r\n\r\n return this.startBlock;\r\n }\r\n\r\n /**\r\n * Provide a start inline as the first inline after the cursor\r\n */\r\n public getStartInlineElement(): InlineElement | null {\r\n if (!this.startInline) {\r\n this.startInline = this.trimInlineElement(\r\n getInlineElementAfter(this.rootNode, this.start)\r\n );\r\n }\r\n\r\n return this.startInline;\r\n }\r\n\r\n /**\r\n * Checks if a block completely falls in the selection\r\n * @param block The BlockElement to check\r\n */\r\n public isBlockInScope(block: BlockElement): boolean {\r\n if (!block) {\r\n return false;\r\n }\r\n let inScope = false;\r\n let selStartBlock = this.getStartBlockElement();\r\n if (this.start.equalTo(this.end)) {\r\n inScope = !!selStartBlock && selStartBlock.equals(block);\r\n } else {\r\n let selEndBlock = getBlockElementAtNode(this.rootNode, this.end.node);\r\n\r\n // There are three cases that are considered as \"block in scope\"\r\n // 1) The start of selection falls on the block\r\n // 2) The end of selection falls on the block\r\n // 3) the block falls in-between selection start and end\r\n inScope =\r\n !!selStartBlock &&\r\n !!selEndBlock &&\r\n (block.equals(selStartBlock) ||\r\n block.equals(selEndBlock) ||\r\n (block.isAfter(selStartBlock) && selEndBlock.isAfter(block)));\r\n }\r\n\r\n return inScope;\r\n }\r\n\r\n /**\r\n * Trim an incoming inline. If it falls completely outside selection, return null\r\n * otherwise return a partial that represents the portion that falls in the selection\r\n * @param inline The InlineElement to check\r\n */\r\n public trimInlineElement(inline: InlineElement | null): InlineElement | null {\r\n if (!inline || this.start.equalTo(this.end)) {\r\n return null;\r\n }\r\n\r\n // Temp code. Will be changed to using InlineElement.getStart/EndPosition() soon\r\n let start = inline.getStartPosition();\r\n let end = inline.getEndPosition();\r\n\r\n if (start.isAfter(this.end) || this.start.isAfter(end)) {\r\n return null;\r\n }\r\n\r\n let startPartial = false;\r\n let endPartial = false;\r\n\r\n if (this.start.isAfter(start)) {\r\n start = this.start;\r\n startPartial = true;\r\n }\r\n\r\n if (end.isAfter(this.end)) {\r\n end = this.end;\r\n endPartial = true;\r\n }\r\n\r\n return start.isAfter(end) || start.equalTo(end)\r\n ? null\r\n : startPartial || endPartial\r\n ? new PartialInlineElement(\r\n inline,\r\n startPartial ? start : undefined,\r\n endPartial ? end : undefined\r\n )\r\n : inline;\r\n }\r\n}\r\n","import createElement from '../utils/createElement';\nimport getDelimiterFromElement from './getDelimiterFromElement';\nimport { DelimiterClasses } from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * Adds delimiters to the element provided. If the delimiters already exists, will not be added\n * @param node the node to add the delimiters\n */\nexport default function addDelimiters(node: Element): Element[] {\n let [delimiterAfter, delimiterBefore] = getDelimiters(node);\n\n if (!delimiterAfter) {\n delimiterAfter = addDelimiterAfter(node);\n }\n if (!delimiterBefore) {\n delimiterBefore = addDelimiterBefore(node);\n }\n return [delimiterAfter, delimiterBefore];\n}\n\n/**\n * Adds delimiter after the element provided.\n * @param element element to use\n */\nexport function addDelimiterAfter(element: Element) {\n return insertDelimiter(element, DelimiterClasses.DELIMITER_AFTER);\n}\n\n/**\n * Adds delimiter before the element provided.\n * @param element element to use\n */\nexport function addDelimiterBefore(element: Element) {\n return insertDelimiter(element, DelimiterClasses.DELIMITER_BEFORE);\n}\n\nfunction getDelimiters(entityWrapper: Element): (Element | undefined)[] {\n const result: (Element | undefined)[] = [];\n const { nextElementSibling, previousElementSibling } = entityWrapper;\n result.push(\n isDelimiter(nextElementSibling, DelimiterClasses.DELIMITER_AFTER),\n isDelimiter(previousElementSibling, DelimiterClasses.DELIMITER_BEFORE)\n );\n\n return result;\n}\n\nfunction isDelimiter(el: Element | null, className: string): Element | undefined {\n return el && getDelimiterFromElement(el) && el.classList.contains(className) ? el : undefined;\n}\n\nfunction insertDelimiter(element: Element, delimiterClass: DelimiterClasses) {\n const span = createElement(\n {\n tag: 'span',\n className: delimiterClass,\n children: [ZERO_WIDTH_SPACE],\n },\n element.ownerDocument\n ) as HTMLElement;\n if (span) {\n const insertPosition: InsertPosition =\n delimiterClass == DelimiterClasses.DELIMITER_AFTER ? 'afterend' : 'beforebegin';\n element.insertAdjacentElement(insertPosition, span);\n }\n\n return span;\n}\n","import safeInstanceOf from '../utils/safeInstanceOf';\nimport { DelimiterClasses } from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\n/**\n * Retrieves Delimiter information from a provided element.\n * @param element element to try to retrieve a delimiter\n * @returns delimiter info if it is a Delimiter, else null\n */\nexport default function getDelimiterFromElement(element: Node | null | undefined): Element | null {\n if (!element) {\n return null;\n }\n if (\n safeInstanceOf(element, 'HTMLSpanElement') &&\n (element.classList.contains(DelimiterClasses.DELIMITER_AFTER) ||\n element.classList.contains(DelimiterClasses.DELIMITER_BEFORE)) &&\n element.textContent === ZERO_WIDTH_SPACE\n ) {\n return element;\n }\n\n return null;\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport contains from '../utils/contains';\nimport ContentTraverser from '../contentTraverser/ContentTraverser';\nimport createRange from '../selection/createRange';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isNodeEmpty from '../utils/isNodeEmpty';\nimport isPositionAtBeginningOf from '../selection/isPositionAtBeginningOf';\nimport isVoidHtmlElement from '../utils/isVoidHtmlElement';\nimport LinkInlineElement from '../inlineElements/LinkInlineElement';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport pasteTable from '../table/pasteTable';\nimport Position from '../selection/Position';\nimport PositionContentSearcher from '../contentTraverser/PositionContentSearcher';\nimport queryElements from '../utils/queryElements';\nimport splitTextNode from '../utils/splitTextNode';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport wrap from '../utils/wrap';\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\nimport {\n BlockElement,\n NodePosition,\n NodeType,\n PositionType,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst NOT_EDITABLE_SELECTOR = '[contenteditable=false]';\n\nconst adjustSteps: ((\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n) => NodePosition)[] = [\n adjustInsertPositionForHyperLink,\n adjustInsertPositionForStructuredNode,\n adjustInsertPositionForParagraph,\n adjustInsertPositionForVoidElement,\n adjustInsertPositionForMoveCursorOutOfALink,\n adjustInsertPositionForNotEditableNode,\n adjustInsertPositionForTable,\n];\n\n/**\n * Adjust position for A tag don't be nested inside another A tag.\n */\nfunction adjustInsertPositionForHyperLink(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n let blockElement = getBlockElementAtNode(root, position.node);\n\n if (blockElement) {\n // Find the first tag within current block which covers current selection\n // If there are more than one nested, let's handle the first one only since that is not a common scenario.\n let anchor: HTMLElement | null = queryElements(\n root,\n 'a[href]',\n null /*forEachCallback*/,\n QueryScope.OnSelection,\n createRange(position)\n ).filter((a: HTMLElement) => blockElement!.contains(a))[0];\n\n // If this is about to insert node to an empty A tag, clear the A tag and reset position\n if (anchor && isNodeEmpty(anchor)) {\n position = new Position(anchor, PositionType.Before);\n safeRemove(anchor);\n anchor = null;\n }\n\n // If this is about to insert nodes which contains A tag into another A tag, need to break current A tag\n // otherwise we will have nested A tags which is a wrong HTML structure\n if (\n anchor &&\n ((nodeToInsert as HTMLElement))?.querySelector &&\n ((nodeToInsert as HTMLElement))?.querySelector('a[href]')\n ) {\n let normalizedPosition = position.normalize();\n let parentNode = normalizedPosition.node.parentNode!;\n let nextNode =\n normalizedPosition.node.nodeType == NodeType.Text\n ? splitTextNode(\n normalizedPosition.node,\n normalizedPosition.offset,\n false /*returnFirstPart*/\n )\n : normalizedPosition.isAtEnd\n ? normalizedPosition.node.nextSibling\n : normalizedPosition.node;\n let splitter: Node | null = root.ownerDocument.createTextNode('');\n parentNode.insertBefore(splitter, nextNode);\n\n while (splitter && contains(anchor, splitter)) {\n splitter = splitBalancedNodeRange(splitter);\n }\n\n if (splitter) {\n position = new Position(splitter, PositionType.Before);\n safeRemove(splitter);\n }\n }\n }\n\n return position;\n}\n\n/**\n * Adjust position for a node don't be nested inside tags like BR, LI, TD.\n */\nfunction adjustInsertPositionForStructuredNode(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n let rootNodeToInsert: Node | null = nodeToInsert;\n let isFragment: boolean = false;\n\n if (rootNodeToInsert.nodeType == NodeType.DocumentFragment) {\n isFragment = true;\n let rootNodes = toArray(rootNodeToInsert.childNodes).filter(\n (n: ChildNode) => getTagOfNode(n) != 'BR'\n );\n rootNodeToInsert = rootNodes.length == 1 ? rootNodes[0] : null;\n }\n\n let tag = getTagOfNode(rootNodeToInsert);\n let hasBrNextToRoot =\n tag && rootNodeToInsert && getTagOfNode(rootNodeToInsert.nextSibling) == 'BR';\n let listItem = findClosestElementAncestor(position.node, root, 'LI');\n let listNode = listItem && findClosestElementAncestor(listItem, root, 'OL,UL');\n let tdNode = findClosestElementAncestor(position.node, root, 'TD,TH');\n\n if (tag == 'LI') {\n tag = listNode ? getTagOfNode(listNode) : 'UL';\n rootNodeToInsert = wrap(rootNodeToInsert!, tag);\n }\n\n if (\n (tag == 'OL' || tag == 'UL') &&\n rootNodeToInsert &&\n getTagOfNode(rootNodeToInsert.firstChild) == 'LI'\n ) {\n let shouldInsertListAsText = !rootNodeToInsert.firstChild!.nextSibling && !hasBrNextToRoot;\n\n if (hasBrNextToRoot && rootNodeToInsert.parentNode) {\n safeRemove(rootNodeToInsert.nextSibling!);\n }\n\n if (shouldInsertListAsText) {\n unwrap(rootNodeToInsert.firstChild!);\n unwrap(rootNodeToInsert);\n } else if (getTagOfNode(listNode) == tag) {\n unwrap(rootNodeToInsert);\n position = new Position(\n listItem!,\n isPositionAtBeginningOf(position, listItem!)\n ? PositionType.Before\n : PositionType.After\n );\n }\n }\n\n if (isFragment && tag == 'TABLE' && tdNode) {\n pasteTable(\n tdNode,\n rootNodeToInsert,\n position,\n range\n );\n position = new Position(rootNodeToInsert!, 0);\n moveChildNodes(nodeToInsert);\n }\n\n return position;\n}\n\n/**\n * Change P tag to DIV, when a new node when insert node.\n */\n\nfunction adjustInsertPositionForParagraph(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (getTagOfNode(position.node) == 'P') {\n // Insert into a P tag may cause issues when the inserted content contains any block element.\n // Change P tag to DIV to make sure it works well\n let pos = position.normalize();\n let div = changeElementTag(position.node, 'div');\n if (pos.node != div) {\n position = pos;\n }\n }\n\n return position;\n}\n\n/**\n * Adjust position for a node that can have children.\n */\n\nfunction adjustInsertPositionForVoidElement(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (isVoidHtmlElement(position.node)) {\n position = new Position(\n position.node,\n position.isAtEnd ? PositionType.After : PositionType.Before\n );\n }\n return position;\n}\n\n/**\n * Adjust the position cursor out of link when a new node is inserted.\n */\n\nfunction adjustInsertPositionForMoveCursorOutOfALink(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (range && range.collapsed) {\n const searcher = new PositionContentSearcher(root, Position.getStart(range));\n const inlineElementBefore = searcher.getInlineElementBefore();\n const inlineElementAfter = searcher.getInlineElementAfter();\n if (inlineElementBefore instanceof LinkInlineElement) {\n position = new Position(inlineElementBefore.getContainerNode(), PositionType.After);\n } else if (inlineElementAfter instanceof LinkInlineElement) {\n position = new Position(inlineElementAfter.getContainerNode(), PositionType.Before);\n }\n }\n return position;\n}\n\n/**\n * Adjust the position cursor out of a not contenteditable element.\n */\nfunction adjustInsertPositionForNotEditableNode(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (!position.element?.isContentEditable) {\n let nonEditableElement: HTMLElement | undefined;\n let lastNonEditableElement: HTMLElement | null = findClosestElementAncestor(\n position.node,\n root,\n NOT_EDITABLE_SELECTOR\n );\n\n while (lastNonEditableElement) {\n nonEditableElement = lastNonEditableElement;\n lastNonEditableElement = nonEditableElement?.parentElement\n ? findClosestElementAncestor(\n nonEditableElement.parentElement,\n root,\n NOT_EDITABLE_SELECTOR\n )\n : null;\n }\n\n if (nonEditableElement) {\n position = new Position(nonEditableElement, PositionType.After);\n return adjustInsertPositionForNotEditableNode(root, nodeToInsert, position, range);\n }\n }\n\n return position;\n}\n\n/**\n * Adjust the position of a table to be one line after another table.\n */\nfunction adjustInsertPositionForTable(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n if (\n (nodeToInsert.childNodes.length == 1 &&\n getTagOfNode(nodeToInsert.childNodes[0]) == 'TABLE') ||\n getTagOfNode(nodeToInsert) == 'TABLE'\n ) {\n const { element } = position;\n\n const posBefore = new Position(element, PositionType.Before);\n const rangeToTraverse = createRange(posBefore, position);\n const contentTraverser = ContentTraverser.createSelectionTraverser(root, rangeToTraverse);\n\n let blockElement = contentTraverser && contentTraverser.currentBlockElement;\n\n if (blockElement) {\n let nextBlockElement: BlockElement | null = blockElement;\n\n while (!nextBlockElement) {\n nextBlockElement = contentTraverser.getNextBlockElement();\n if (nextBlockElement) {\n blockElement = nextBlockElement;\n }\n }\n\n const prevElement = blockElement?.getEndNode();\n\n if (prevElement && findClosestElementAncestor(prevElement, root, 'TABLE')) {\n let tempRange = createRange(position);\n tempRange.collapse(false /* toStart */);\n const br = root.ownerDocument.createElement('br');\n tempRange.insertNode(br);\n\n tempRange = createRange(br);\n position = Position.getEnd(tempRange);\n }\n }\n }\n return position;\n}\n\n/**\n *\n * @param root the contentDiv of the ditor\n * @param nodeToInsert the node to be inserted\n * @param position the position of the node to be inserted\n * @param range the range current or cached range of the editor\n * @returns the adjusted position of the inserted node\n */\n\nexport default function adjustInsertPositionBySteps(\n root: HTMLElement,\n nodeToInsert: Node,\n position: NodePosition,\n range: Range\n): NodePosition {\n adjustSteps.forEach(handler => {\n position = handler(root, nodeToInsert, position, range);\n });\n return position;\n}\n\nfunction safeRemove(node: Node) {\n node?.parentNode?.removeChild(node);\n}\n","import arrayPush from '../jsUtils/arrayPush';\nimport collapseNodesInRegion from '../region/collapseNodesInRegion';\nimport getRegionsFromRange from '../region/getRegionsFromRange';\nimport getSelectionRangeInRegion from '../region/getSelectionRangeInRegion';\nimport mergeBlocksInRegion from '../region/mergeBlocksInRegion';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport splitTextNode from '../utils/splitTextNode';\nimport { NodePosition, PositionType, QueryScope, RegionType } from 'roosterjs-editor-types';\n\n/**\n * Delete selected content, and return the new position to select\n * @param core The EditorCore object.\n * @param range The range to delete\n */\nexport default function deleteSelectedContent(\n root: HTMLElement,\n range: Range\n): NodePosition | null {\n let nodeBefore: Node | null = null;\n\n // 1. TABLE and TR node in selected should be deleted. It is possible we don't detect them from step 2\n // since table cells will fall in to different regions\n const nodesToDelete: Node[] = queryElements(\n root,\n 'table,tr',\n null /*callback*/,\n QueryScope.InSelection,\n range\n );\n\n // 2. Loop all selected regions, find out those nodes need to be deleted and merged.\n // We don't delete them directly here because delete node from one region may cause selection range\n // another region becomes invalid. So we delay the process of deletion.\n const regions = getRegionsFromRange(root, range, RegionType.Table);\n const nodesPairToMerge = regions\n .map(region => {\n const regionRange = getSelectionRangeInRegion(region);\n if (!regionRange) {\n return null;\n }\n\n const {\n startContainer,\n endContainer,\n startOffset,\n endOffset,\n commonAncestorContainer,\n } = regionRange;\n\n // Disallow merging of readonly elements\n if (\n safeInstanceOf(commonAncestorContainer, 'HTMLElement') &&\n !commonAncestorContainer.isContentEditable\n ) {\n return null;\n }\n\n // Make sure there are node before and after the merging point.\n // This is required by mergeBlocksInRegion API.\n // This may create some empty text node as anchor\n let [beforeEnd, afterEnd] = ensureBeforeAndAfter(\n endContainer,\n endOffset,\n false /*isStart*/\n );\n let [beforeStart, afterStart] = ensureBeforeAndAfter(\n startContainer,\n startOffset,\n true /*isStart*/\n );\n nodeBefore = nodeBefore || beforeStart;\n\n // Find out all nodes to be deleted\n const nodes = collapseNodesInRegion(region, [afterStart, beforeEnd]);\n arrayPush(nodesToDelete, nodes);\n return { region, beforeStart, afterEnd };\n })\n .filter(x => !!x);\n\n // 3. Delete all nodes that we found, whose parent is editable\n nodesToDelete.forEach(\n node => node.parentElement?.isContentEditable && node.parentElement.removeChild(node)\n );\n\n // 4. Merge lines for each region, so that after we don't see extra line breaks\n nodesPairToMerge.forEach(nodes => {\n if (nodes) {\n mergeBlocksInRegion(nodes.region, nodes.beforeStart, nodes.afterEnd);\n }\n });\n\n return nodeBefore && new Position(nodeBefore, PositionType.End);\n}\n\nfunction ensureBeforeAndAfter(node: Node, offset: number, isStart: boolean) {\n if (safeInstanceOf(node, 'Text')) {\n const newNode = splitTextNode(node, offset, isStart);\n return isStart ? [newNode, node] : [node, newNode];\n } else {\n let nodeBefore: Node | null = node.childNodes[offset - 1];\n let nodeAfter: Node | null = node.childNodes[offset];\n\n // Condition 1: node child nodes\n // (\"I\" means cursor; \"o\" means a DOM node, \"[ ]\" means a parent node)\n // [ I ]\n // need to use parent node instead to convert to condition 2\n if (!nodeBefore && !nodeAfter) {\n if (isStart) {\n nodeAfter = node;\n nodeBefore = nodeAfter.previousSibling;\n } else {\n nodeBefore = node;\n nodeAfter = nodeBefore.nextSibling;\n }\n }\n\n // Condition 2: Either nodeBefore or nodeAfter is null (XOR case)\n // [ o I ] or [ I o]\n // need to add empty text node to convert to condition 3\n if ((nodeBefore || nodeAfter) && (!nodeBefore || !nodeAfter)) {\n const emptyNode = node.ownerDocument!.createTextNode('');\n (nodeBefore || nodeAfter)?.parentNode?.insertBefore(emptyNode, nodeAfter);\n if (nodeBefore) {\n nodeAfter = emptyNode;\n } else {\n nodeBefore = emptyNode;\n }\n }\n\n // Condition 3: Both nodeBefore and nodeAfter are not null\n // [o I o]\n // return the nodes\n return [nodeBefore!, nodeAfter!];\n }\n}\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\n\n/**\n * get block element's text content.\n * @param rootNode Root node that the get the textContent of.\n * @returns text content of given text content.\n */\nexport default function getTextContent(rootNode: Node): string {\n const traverser = ContentTraverser.createBodyTraverser(rootNode);\n let block = traverser && traverser.currentBlockElement;\n let textContent: string[] = [];\n\n while (block) {\n textContent.push(block.getTextContent());\n block = traverser.getNextBlockElement();\n }\n\n return textContent.join('\\n');\n}\n","import { EntityClasses } from 'roosterjs-editor-types';\n\nconst CONTENT_EDITABLE = 'contenteditable';\n\n/**\n * Commit information of an entity (type, isReadonly, id) into the wrapper node as CSS Classes\n * @param wrapper The entity wrapper element\n * @param type Entity type\n * @param isReadonly Whether this is a readonly entity\n * @param id Optional Id of the entity\n */\nexport default function commitEntity(\n wrapper: HTMLElement,\n type: string,\n isReadonly: boolean,\n id?: string\n) {\n if (wrapper) {\n wrapper.className = `${EntityClasses.ENTITY_INFO_NAME} ${\n EntityClasses.ENTITY_TYPE_PREFIX\n }${type} ${id ? `${EntityClasses.ENTITY_ID_PREFIX}${id} ` : ''}${\n EntityClasses.ENTITY_READONLY_PREFIX\n }${isReadonly ? '1' : '0'}`;\n\n if (isReadonly) {\n wrapper.contentEditable = 'false';\n } else if (wrapper.getAttribute(CONTENT_EDITABLE)) {\n wrapper.removeAttribute(CONTENT_EDITABLE);\n }\n }\n}\n","import getEntityFromElement from './getEntityFromElement';\nimport getEntitySelector from './getEntitySelector';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { Entity, EntityClasses, KnownEntityItem } from 'roosterjs-editor-types';\n\nconst EntityPlaceHolderTagName = 'ENTITY-PLACEHOLDER';\n\n/**\n * @deprecated\n * Create a placeholder comment node for entity\n * @param entity The entity to create placeholder from\n * @returns A placeholder comment node as\n */\nexport function createEntityPlaceholder(entity: Entity): HTMLElement {\n const placeholder = entity.wrapper.ownerDocument.createElement(EntityPlaceHolderTagName);\n placeholder.id = entity.id;\n\n return placeholder;\n}\n\n/**\n * Move content from a container into a new Document fragment, and try keep entities to be reusable by creating placeholder\n * for them in the document fragment.\n * If an entity is directly under root container, the whole entity can be reused and no need to move it at all.\n * If an entity is not directly under root container, it is still reusable, but it may need some movement.\n * In any case, entities will be replaced with a placeholder in the target document fragment.\n * We will use an entity map (the \"entities\" parameter) to save the map from entity id to its wrapper element.\n * @param root The root element\n * @param entities A map from entity id to entity wrapper element\n * @returns A new document fragment contains all the content and entity placeholders\n */\nexport function moveContentWithEntityPlaceholders(\n root: HTMLDivElement,\n entities: Record\n) {\n const entitySelector = getEntitySelector();\n const fragment = root.ownerDocument.createDocumentFragment();\n let next: Node | null = null;\n\n for (let child: Node | null = root.firstChild; child; child = next) {\n let entity: Entity | null;\n let nodeToAppend = child;\n\n next = child.nextSibling;\n\n if (safeInstanceOf(child, 'HTMLElement')) {\n if ((entity = getEntityFromElement(child))) {\n nodeToAppend = getPlaceholder(entity, entities);\n } else {\n child.querySelectorAll(entitySelector).forEach(wrapper => {\n if ((entity = getEntityFromElement(wrapper))) {\n const placeholder = getPlaceholder(entity, entities);\n\n wrapper.parentNode?.replaceChild(placeholder, wrapper);\n }\n });\n }\n }\n\n fragment.appendChild(nodeToAppend);\n }\n\n fragment.normalize();\n\n return fragment;\n}\n\n/**\n * Restore HTML content from a document fragment that may contain entity placeholders.\n * @param source Source document fragment that contains HTML content and entity placeholders\n * @param target Target container, usually to be editor root container\n * @param entities A map from entity id to entity wrapper, used for reusing existing DOM structure for entity\n * @param insertClonedNode When pass true, merge with a cloned copy of the nodes from source fragment rather than the nodes themselves @default false\n */\nexport function restoreContentWithEntityPlaceholder(\n source: ParentNode,\n target: HTMLElement,\n entities: Record | null,\n insertClonedNode?: boolean\n) {\n let anchor = target.firstChild;\n\n const entitySelector = getEntitySelector();\n\n for (let current = source.firstChild; current; ) {\n const next = current.nextSibling;\n const wrapper = tryGetWrapperFromEntityPlaceholder(entities, current);\n\n if (wrapper) {\n anchor = removeUntil(anchor, wrapper);\n\n if (anchor) {\n anchor = anchor.nextSibling;\n } else {\n target.appendChild(wrapper);\n }\n } else {\n const nodeToInsert = insertClonedNode ? current.cloneNode(true /*deep*/) : current;\n target.insertBefore(nodeToInsert, anchor);\n\n if (safeInstanceOf(nodeToInsert, 'HTMLElement')) {\n nodeToInsert.querySelectorAll(entitySelector).forEach(placeholder => {\n const wrapper = tryGetWrapperFromEntityPlaceholder(entities, placeholder);\n\n if (wrapper) {\n placeholder.parentNode?.replaceChild(wrapper, placeholder);\n }\n });\n }\n }\n\n current = next;\n }\n\n removeUntil(anchor);\n}\n\nfunction removeUntil(anchor: ChildNode | null, nodeToStop?: HTMLElement) {\n while (anchor && (!nodeToStop || anchor != nodeToStop)) {\n const nodeToRemove = anchor;\n anchor = anchor.nextSibling;\n nodeToRemove.parentNode?.removeChild(nodeToRemove);\n }\n return anchor;\n}\n\nfunction tryGetWrapperFromEntityPlaceholder(\n entities: Record | null,\n node: Node\n): HTMLElement | null {\n const id =\n safeInstanceOf(node, 'HTMLElement') &&\n node.classList.contains(EntityClasses.ENTITY_INFO_NAME) &&\n getEntityFromElement(node as HTMLElement)?.id;\n const item = id ? entities?.[id] : null;\n\n return !item\n ? null\n : safeInstanceOf(item, 'HTMLElement')\n ? item\n : item?.canPersist\n ? item.element\n : null;\n}\n\nfunction getPlaceholder(entity: Entity, entities: Record) {\n entities[entity.id] = entity.wrapper;\n\n return entity.wrapper.cloneNode(true /*deep*/);\n}\n","import { Entity, EntityClasses } from 'roosterjs-editor-types';\n\n/**\n * Get Entity object from an entity root element\n * @param element The entity root element. If this element is not an entity root element,\n * it will return null\n */\nexport default function getEntityFromElement(element: HTMLElement): Entity | null {\n let isEntity = false;\n let type = '';\n let id = '';\n let isReadonly = false;\n\n element?.className?.split(' ').forEach(name => {\n if (name == EntityClasses.ENTITY_INFO_NAME) {\n isEntity = true;\n } else if (name.indexOf(EntityClasses.ENTITY_TYPE_PREFIX) == 0) {\n type = name.substr(EntityClasses.ENTITY_TYPE_PREFIX.length);\n } else if (name.indexOf(EntityClasses.ENTITY_ID_PREFIX) == 0) {\n id = name.substr(EntityClasses.ENTITY_ID_PREFIX.length);\n } else if (name.indexOf(EntityClasses.ENTITY_READONLY_PREFIX) == 0) {\n isReadonly = name.substr(EntityClasses.ENTITY_READONLY_PREFIX.length) == '1';\n }\n });\n\n return isEntity\n ? {\n wrapper: element,\n id,\n type,\n isReadonly,\n }\n : null;\n}\n","import { EntityClasses } from 'roosterjs-editor-types';\n\n/**\n * Get a selector string for specified entity type and id\n * @param type (Optional) Type of entity\n * @param id (Optional) Id of entity\n */\nexport default function getEntitySelector(type?: string, id?: string): string {\n const typeSelector = type ? `.${EntityClasses.ENTITY_TYPE_PREFIX}${type}` : '';\n const idSelector = id ? `.${EntityClasses.ENTITY_ID_PREFIX}${id}` : '';\n return '.' + EntityClasses.ENTITY_INFO_NAME + typeSelector + idSelector;\n}\n","import { PluginEvent } from 'roosterjs-editor-types';\n\n/**\n * Gets the cached event data by cache key from event object if there is already one.\n * Otherwise, call getter function to create one, and cache it.\n * @param event The event object\n * @param key Cache key string, need to be unique\n * @param getter Getter function to get the object when it is not in cache yet\n */\nexport default function cacheGetEventData(\n event: PluginEvent | null,\n key: string,\n getter: () => T\n): T {\n let result =\n event && event.eventDataCache && event.eventDataCache.hasOwnProperty(key)\n ? event.eventDataCache[key]\n : getter();\n if (event) {\n event.eventDataCache = event.eventDataCache || {};\n event.eventDataCache[key] = result;\n }\n\n return result;\n}\n","import { PluginEvent } from 'roosterjs-editor-types';\n\n/**\n * Clear a cached object by its key from an event object\n * @param event The event object\n * @param key The cache key\n */\nexport default function clearEventDataCache(event: PluginEvent, key?: string): void {\n if (event && event.eventDataCache) {\n if (key && event.eventDataCache.hasOwnProperty(key)) {\n delete event.eventDataCache[key];\n } else if (!key) {\n event.eventDataCache = {};\n }\n }\n}\n","import isModifierKey from './isModifierKey';\n\n/**\n * Returns true when the event was fired from a key that produces a character value, otherwise false\n * This detection is not 100% accurate. event.key is not fully supported by all browsers, and in some browsers (e.g. IE),\n * event.key is longer than 1 for num pad input. But here we just want to improve performance as much as possible.\n * So if we missed some case here it is still acceptable.\n * @param event The keyboard event object\n */\nexport default function isCharacterValue(event: KeyboardEvent): boolean {\n return !isModifierKey(event) && !!event.key && event.key.length == 1;\n}\n","import { Browser } from '../utils/Browser';\n\nconst isCtrlOrMetaPressedImpl: (event: KeyboardEvent | MouseEvent) => boolean = Browser.isMac\n ? event => event.metaKey\n : event => event.ctrlKey;\n\n/**\n * Check if Ctrl key (Windows) or Meta key (Mac) is pressed for the given Event\n * @param event A Keyboard event or Mouse event object\n * @returns True if Ctrl key is pressed on Windows or Meta key is pressed on Mac\n */\nexport default function isCtrlOrMetaPressed(event: KeyboardEvent | MouseEvent): boolean {\n return isCtrlOrMetaPressedImpl(event);\n}\n","const CTRL_CHAR_CODE = 'Control';\nconst ALT_CHAR_CODE = 'Alt';\nconst META_CHAR_CODE = 'Meta';\n\n/**\n * Returns true when the event was fired from a modifier key, otherwise false\n * @param event The keyboard event object\n */\nexport default function isModifierKey(event: KeyboardEvent): boolean {\n const isCtrlKey = event.ctrlKey || event.key === CTRL_CHAR_CODE;\n const isAltKey = event.altKey || event.key === ALT_CHAR_CODE;\n const isMetaKey = event.metaKey || event.key === META_CHAR_CODE;\n\n return isCtrlKey || isAltKey || isMetaKey;\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport getInheritableStyles from './getInheritableStyles';\nimport getObjectKeys from '../jsUtils/getObjectKeys';\nimport getPredefinedCssForElement from './getPredefinedCssForElement';\nimport getStyles from '../style/getStyles';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setStyles from '../style/setStyles';\nimport toArray from '../jsUtils/toArray';\nimport { cloneObject } from './cloneObject';\nimport { isCssVariable, processCssVariable } from './processCssVariable';\nimport {\n getAllowedAttributes,\n getAllowedCssClassesRegex,\n getTagReplacement,\n getDefaultStyleValues,\n getStyleCallbacks,\n} from './getAllowedValues';\nimport {\n AttributeCallbackMap,\n CssStyleCallbackMap,\n ElementCallbackMap,\n HtmlSanitizerOptions,\n NodeType,\n PredefinedCssMap,\n SanitizeHtmlOptions,\n StringMap,\n} from 'roosterjs-editor-types';\n\n/**\n * HTML sanitizer class provides two features:\n * 1. Convert global CSS to inline CSS\n * 2. Sanitize an HTML document, remove unnecessary/dangerous attribute/nodes\n */\nexport default class HtmlSanitizer {\n /**\n * @deprecated Use new HtmlSanitizer().convertGlobalCssToInlineCss() instead\n * Convert global CSS to inline CSS if any\n * @param html HTML source\n * @param additionalStyleNodes (Optional) additional HTML STYLE elements used as global CSS\n */\n static convertInlineCss(html: string, additionalStyleNodes?: HTMLStyleElement[]) {\n let sanitizer = new HtmlSanitizer({\n additionalGlobalStyleNodes: additionalStyleNodes,\n });\n return sanitizer.exec(html, true /*convertCssOnly*/);\n }\n\n /**\n * @deprecated Use new HtmlSanitizer().sanitize() instead\n * Sanitize HTML string, remove any unused HTML node/attribute/CSS.\n * @param html HTML source string\n * @param options Options used for this sanitizing process\n */\n static sanitizeHtml(html: string, options?: SanitizeHtmlOptions) {\n options = options || {};\n let sanitizer = new HtmlSanitizer(options);\n let currentStyles = safeInstanceOf(options.currentElementOrStyle, 'HTMLElement')\n ? getInheritableStyles(options.currentElementOrStyle)\n : options.currentElementOrStyle;\n return sanitizer.exec(html, options.convertCssOnly, currentStyles);\n }\n\n private elementCallbacks: ElementCallbackMap;\n private styleCallbacks: CssStyleCallbackMap;\n private attributeCallbacks: AttributeCallbackMap;\n private tagReplacements: Record;\n private allowedAttributes: string[];\n private allowedCssClassesRegex: RegExp | null;\n private defaultStyleValues: StringMap;\n private additionalPredefinedCssForElement: PredefinedCssMap | null;\n private additionalGlobalStyleNodes: HTMLStyleElement[];\n private preserveHtmlComments: boolean;\n private unknownTagReplacement: string | null;\n\n /**\n * Construct a new instance of HtmlSanitizer\n * @param options Options for HtmlSanitizer\n */\n constructor(options?: HtmlSanitizerOptions) {\n options = options || {};\n this.elementCallbacks = cloneObject(options.elementCallbacks);\n this.styleCallbacks = getStyleCallbacks(options.cssStyleCallbacks);\n this.attributeCallbacks = cloneObject(options.attributeCallbacks);\n this.tagReplacements = getTagReplacement(options.additionalTagReplacements);\n this.allowedAttributes = getAllowedAttributes(options.additionalAllowedAttributes);\n this.allowedCssClassesRegex = getAllowedCssClassesRegex(\n options.additionalAllowedCssClasses\n );\n this.defaultStyleValues = getDefaultStyleValues(options.additionalDefaultStyleValues);\n this.additionalPredefinedCssForElement = options.additionalPredefinedCssForElement || null;\n this.additionalGlobalStyleNodes = options.additionalGlobalStyleNodes || [];\n this.preserveHtmlComments = options.preserveHtmlComments || false;\n this.unknownTagReplacement = options.unknownTagReplacement || null;\n }\n\n /**\n * @deprecated Use HtmlSanitizer.convertGlobalCssToInlineCss() and HtmlSanitizer.sanitize() instead\n * Sanitize HTML string\n * This function will do the following work:\n * 1. Convert global CSS into inline CSS\n * 2. Remove dangerous HTML tags and attributes\n * 3. Remove useless CSS properties\n * @param html The input HTML\n * @param convertInlineCssOnly Whether only convert inline css and skip html content sanitizing\n * @param currentStyles Current inheritable CSS styles\n */\n exec(html: string, convertCssOnly?: boolean, currentStyles?: StringMap): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(html || '', 'text/html');\n\n if (doc && doc.body && doc.body.firstChild) {\n this.convertGlobalCssToInlineCss(doc);\n if (!convertCssOnly) {\n this.sanitize(doc.body, currentStyles);\n }\n }\n return (doc && doc.body && doc.body.innerHTML) || '';\n }\n\n /**\n * Sanitize an HTML element, remove unnecessary or dangerous elements/attribute/CSS rules\n * @param rootNode Root node to sanitize\n * @param currentStyles Current CSS styles. Inheritable styles in the given node which has\n * the same value with current styles will be ignored.\n */\n sanitize(rootNode: Node, currentStyles?: StringMap) {\n if (!rootNode) {\n return '';\n }\n currentStyles = cloneObject(currentStyles, getInheritableStyles(null));\n this.processNode(rootNode, currentStyles, {});\n }\n\n /**\n * Convert global CSS into inline CSS\n * @param rootNode The HTML Document\n */\n convertGlobalCssToInlineCss(rootNode: ParentNode) {\n let styleNodes = toArray(rootNode.querySelectorAll('style'));\n let styleSheets = this.additionalGlobalStyleNodes\n .reverse()\n .map(node => node.sheet as CSSStyleSheet)\n .concat(styleNodes.map(node => node.sheet as CSSStyleSheet).reverse())\n .filter(sheet => sheet);\n for (let styleSheet of styleSheets) {\n for (let j = styleSheet.cssRules.length - 1; j >= 0; j--) {\n // Skip any none-style rule, i.e. @page\n let styleRule = styleSheet.cssRules[j] as CSSStyleRule;\n let text = styleRule && styleRule.style ? styleRule.style.cssText : null;\n if (styleRule.type != CSSRule.STYLE_RULE || !text || !styleRule.selectorText) {\n continue;\n }\n // Make sure the selector is not empty\n for (let selector of styleRule.selectorText.split(',')) {\n if (!selector || !selector.trim() || selector.indexOf(':') >= 0) {\n continue;\n }\n let nodes = toArray(rootNode.querySelectorAll(selector));\n // Always put existing styles after so that they have higher priority\n // Which means if both global style and inline style apply to the same element,\n // inline style will have higher priority\n nodes.forEach(node =>\n node.setAttribute('style', text + (node.getAttribute('style') || ''))\n );\n }\n }\n }\n\n styleNodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n }\n\n private processNode(node: Node, currentStyle: StringMap, context: Object) {\n const nodeType = node.nodeType;\n const isElement = nodeType == NodeType.Element;\n const isText = nodeType == NodeType.Text;\n const isFragment = nodeType == NodeType.DocumentFragment;\n const isComment = nodeType == NodeType.Comment;\n\n let shouldKeep = false;\n\n if (isElement) {\n const tag = getTagOfNode(node);\n const callback = this.elementCallbacks[tag];\n let replacement: string | null | undefined = this.tagReplacements[tag.toLowerCase()];\n\n if (replacement === undefined) {\n replacement = this.unknownTagReplacement;\n }\n\n if (callback) {\n shouldKeep = callback(node as HTMLElement, context);\n } else if (tag.indexOf(':') > 0) {\n shouldKeep = true;\n } else if (tag == replacement || replacement == '*') {\n shouldKeep = true;\n } else if (replacement && /^[a-zA-Z][\\w\\-]*$/.test(replacement)) {\n node = changeElementTag(node as HTMLElement, replacement)!;\n shouldKeep = true;\n }\n } else if (isText) {\n const whiteSpace = currentStyle['white-space'];\n shouldKeep =\n whiteSpace == 'pre' ||\n whiteSpace == 'pre-line' ||\n whiteSpace == 'pre-wrap' ||\n !/^[\\r\\n]*$/g.test(node.nodeValue || '');\n } else if (isFragment) {\n shouldKeep = true;\n } else if (isComment) {\n shouldKeep = this.preserveHtmlComments;\n } else {\n shouldKeep = false;\n }\n\n if (!shouldKeep) {\n node.parentNode?.removeChild(node);\n } else if (\n isText &&\n (currentStyle['white-space'] == 'pre' || currentStyle['white-space'] == 'pre-wrap')\n ) {\n node.nodeValue = (node.nodeValue || '')\n .replace(/^ /gm, '\\u00A0')\n .replace(/ {2}/g, ' \\u00A0');\n } else if (isElement || isFragment) {\n let thisStyle = cloneObject(currentStyle);\n let element = node;\n if (isElement) {\n this.processAttributes(element, context);\n this.preprocessCss(element, thisStyle);\n this.processCss(element, thisStyle, context);\n }\n\n let child: Node | null = element.firstChild;\n let next: Node | null;\n for (; child; child = next) {\n next = child.nextSibling;\n this.processNode(child, thisStyle, context);\n }\n }\n }\n\n private preprocessCss(element: HTMLElement, thisStyle: StringMap) {\n const predefinedStyles = getPredefinedCssForElement(\n element,\n this.additionalPredefinedCssForElement\n );\n if (predefinedStyles) {\n getObjectKeys(predefinedStyles).forEach(name => {\n thisStyle[name] = predefinedStyles[name];\n });\n }\n }\n\n private processCss(element: HTMLElement, thisStyle: StringMap, context: Object) {\n const styles = getStyles(element);\n getObjectKeys(styles).forEach(name => {\n let value = styles[name];\n let callback = this.styleCallbacks[name];\n let isInheritable = thisStyle[name] != undefined;\n let keep = true;\n\n if (keep && !!callback) {\n keep = callback(value, element, thisStyle, context);\n }\n\n if (keep && isCssVariable(value)) {\n value = processCssVariable(value);\n keep = !!value;\n }\n\n keep =\n keep &&\n value != 'inherit' &&\n value.indexOf('expression') < 0 &&\n name.substr(0, 1) != '-' &&\n this.defaultStyleValues[name] != value &&\n ((isInheritable && value != thisStyle[name]) ||\n (!isInheritable && value != 'initial' && value != 'normal'));\n if (keep && isInheritable) {\n thisStyle[name] = value;\n }\n\n if (keep) {\n styles[name] = value;\n } else {\n delete styles[name];\n }\n });\n\n setStyles(element, styles);\n }\n\n private processAttributes(element: HTMLElement, context: Object) {\n for (let i = element.attributes.length - 1; i >= 0; i--) {\n let attribute = element.attributes[i];\n let name = attribute.name.toLowerCase().trim();\n let value = attribute.value;\n let callback = this.attributeCallbacks[name];\n\n let newValue = callback\n ? callback(value, element, context)\n : this.allowedAttributes.indexOf(name) >= 0 || name.indexOf('data-') == 0\n ? value\n : null;\n\n if (name == 'class' && this.allowedCssClassesRegex) {\n newValue = this.processCssClass(value, newValue);\n }\n\n if (\n newValue === null ||\n newValue === undefined ||\n newValue.match(/s\\n*c\\n*r\\n*i\\n*p\\n*t\\n*:/i) // match script: with any NewLine inside. Browser will ignore those NewLine char and still treat it as script prefix\n ) {\n element.removeAttribute(name);\n } else {\n attribute.value = newValue;\n }\n }\n }\n\n private processCssClass(originalValue: string, calculatedValue: string | null): string | null {\n const originalClasses = originalValue ? originalValue.split(' ') : [];\n const calculatedClasses = calculatedValue ? calculatedValue.split(' ') : [];\n\n originalClasses.forEach(className => {\n if (\n this.allowedCssClassesRegex?.test(className) &&\n calculatedClasses.indexOf(className) < 0\n ) {\n calculatedClasses.push(className);\n }\n });\n\n return calculatedClasses?.length > 0 ? calculatedClasses.join(' ') : null;\n }\n}\n","/**\n * Chain all callback for an attribute together\n * @param map The source callback map\n * @param name Name of the property to chain\n * @param newCallback A new callback to process the given name on the given map.\n * If the same property got multiple callbacks, the final return value will be the return\n * value of the latest callback\n */\nexport default function chainSanitizerCallback R, R>(\n map: Record R>,\n name: string,\n newCallback: TChainedFn\n) {\n if (!map[name]) {\n map[name] = newCallback;\n } else {\n const originalCallback = map[name];\n map[name] = (...args: TOriginalArgs) => {\n originalCallback(...args);\n return newCallback(...args);\n };\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\nfunction nativeClone(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n return Object.assign(existingObj || {}, source);\n}\n\nfunction customClone(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n let result: Record = existingObj || {};\n if (source) {\n for (let key of getObjectKeys(source)) {\n result[key] = source[key];\n }\n }\n return result;\n}\n\n// @ts-ignore Ignore this error for IE compatibility\nconst cloneObjectImpl = Object.assign ? nativeClone : customClone;\n\n/**\n * @internal\n */\nexport function cloneObject(\n source: Record | null | undefined,\n existingObj?: Record\n): Record {\n return cloneObjectImpl(source, existingObj);\n}\n","import { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\n/**\n * Create default value of HtmlSanitizerOptions with every property set\n */\nexport default function createDefaultHtmlSanitizerOptions(): Required {\n return {\n elementCallbacks: {},\n attributeCallbacks: {},\n cssStyleCallbacks: {},\n additionalTagReplacements: {},\n additionalAllowedAttributes: [],\n additionalAllowedCssClasses: [],\n additionalDefaultStyleValues: {},\n additionalGlobalStyleNodes: [],\n additionalPredefinedCssForElement: {},\n preserveHtmlComments: false,\n unknownTagReplacement: null,\n };\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport { cloneObject } from './cloneObject';\nimport { CssStyleCallbackMap, StringMap } from 'roosterjs-editor-types';\n\nconst HTML_TAG_REPLACEMENT: Record = {\n // Allowed tags\n a: '*',\n abbr: '*',\n address: '*',\n area: '*',\n article: '*',\n aside: '*',\n b: '*',\n bdi: '*',\n bdo: '*',\n blockquote: '*',\n body: '*',\n br: '*',\n button: '*',\n canvas: '*',\n caption: '*',\n center: '*',\n cite: '*',\n code: '*',\n col: '*',\n colgroup: '*',\n data: '*',\n datalist: '*',\n dd: '*',\n del: '*',\n details: '*',\n dfn: '*',\n dialog: '*',\n dir: '*',\n div: '*',\n dl: '*',\n dt: '*',\n em: '*',\n fieldset: '*',\n figcaption: '*',\n figure: '*',\n font: '*',\n footer: '*',\n h1: '*',\n h2: '*',\n h3: '*',\n h4: '*',\n h5: '*',\n h6: '*',\n head: '*',\n header: '*',\n hgroup: '*',\n hr: '*',\n html: '*',\n i: '*',\n img: '*',\n input: '*',\n ins: '*',\n kbd: '*',\n label: '*',\n legend: '*',\n li: '*',\n main: '*',\n map: '*',\n mark: '*',\n menu: '*',\n menuitem: '*',\n meter: '*',\n nav: '*',\n ol: '*',\n optgroup: '*',\n option: '*',\n output: '*',\n p: '*',\n picture: '*',\n pre: '*',\n progress: '*',\n q: '*',\n rp: '*',\n rt: '*',\n ruby: '*',\n s: '*',\n samp: '*',\n section: '*',\n select: '*',\n small: '*',\n span: '*',\n strike: '*',\n strong: '*',\n sub: '*',\n summary: '*',\n sup: '*',\n table: '*',\n tbody: '*',\n td: '*',\n textarea: '*',\n tfoot: '*',\n th: '*',\n thead: '*',\n time: '*',\n tr: '*',\n tt: '*',\n u: '*',\n ul: '*',\n var: '*',\n wbr: '*',\n xmp: '*',\n\n // Replaced tags:\n form: 'SPAN',\n\n // Disallowed tags\n applet: null,\n audio: null,\n base: null,\n basefont: null,\n embed: null,\n frame: null,\n frameset: null,\n iframe: null,\n link: null,\n meta: null,\n noscript: null,\n object: null,\n param: null,\n script: null,\n slot: null,\n source: null,\n style: null,\n template: null,\n title: null,\n track: null,\n video: null,\n};\n\nconst ALLOWED_HTML_ATTRIBUTES = (\n 'accept,align,alt,checked,cite,color,cols,colspan,contextmenu,' +\n 'coords,datetime,default,dir,dirname,disabled,download,face,headers,height,hidden,high,href,' +\n 'hreflang,ismap,kind,label,lang,list,low,max,maxlength,media,min,multiple,open,optimum,pattern,' +\n 'placeholder,readonly,rel,required,reversed,rows,rowspan,scope,selected,shape,size,sizes,span,' +\n 'spellcheck,src,srclang,srcset,start,step,style,tabindex,target,title,translate,type,usemap,valign,value,' +\n 'width,wrap,bgColor'\n).split(',');\n\nconst DEFAULT_STYLE_VALUES: { [name: string]: string } = {\n 'background-color': 'transparent',\n 'border-bottom-color': 'rgb(0, 0, 0)',\n 'border-bottom-style': 'none',\n 'border-bottom-width': '0px',\n 'border-image-outset': '0',\n 'border-image-repeat': 'stretch',\n 'border-image-slice': '100%',\n 'border-image-source': 'none',\n 'border-image-width': '1',\n 'border-left-color': 'rgb(0, 0, 0)',\n 'border-left-style': 'none',\n 'border-left-width': '0px',\n 'border-right-color': 'rgb(0, 0, 0)',\n 'border-right-style': 'none',\n 'border-right-width': '0px',\n 'border-top-color': 'rgb(0, 0, 0)',\n 'border-top-style': 'none',\n 'border-top-width': '0px',\n 'outline-color': 'transparent',\n 'outline-style': 'none',\n 'outline-width': '0px',\n overflow: 'visible',\n '-webkit-text-stroke-width': '0px',\n 'word-wrap': 'break-word',\n 'margin-left': '0px',\n 'margin-right': '0px',\n padding: '0px',\n 'padding-top': '0px',\n 'padding-left': '0px',\n 'padding-right': '0px',\n 'padding-bottom': '0px',\n border: '0px',\n 'border-top': '0px',\n 'border-left': '0px',\n 'border-right': '0px',\n 'border-bottom': '0px',\n 'vertical-align': 'baseline',\n float: 'none',\n};\n\n// This is to preserve entity related CSS classes when paste.\nconst ALLOWED_CSS_CLASSES: string[] = [];\n\n/**\n * @internal\n */\nexport function getTagReplacement(\n additionalReplacements: Record | undefined\n): Record {\n const result = { ...HTML_TAG_REPLACEMENT };\n const replacements = additionalReplacements || {};\n getObjectKeys(replacements).forEach(key => {\n if (key) {\n result[key.toLowerCase()] = replacements[key];\n }\n });\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getAllowedAttributes(additionalAttributes: string[] | undefined): string[] {\n return unique(ALLOWED_HTML_ATTRIBUTES.concat(additionalAttributes || [])).map(attr =>\n attr.toLocaleLowerCase()\n );\n}\n\n/**\n * @internal\n */\nexport function getAllowedCssClassesRegex(\n additionalCssClasses: string[] | undefined\n): RegExp | null {\n const patterns = ALLOWED_CSS_CLASSES.concat(additionalCssClasses || []);\n return patterns.length > 0 ? new RegExp(patterns.join('|')) : null;\n}\n\n/**\n * @internal\n */\nexport function getDefaultStyleValues(additionalDefaultStyles: StringMap | undefined): StringMap {\n let result = cloneObject(DEFAULT_STYLE_VALUES);\n if (additionalDefaultStyles) {\n Object.keys(additionalDefaultStyles).forEach(name => {\n let value = additionalDefaultStyles[name];\n if (value !== null && value !== undefined) {\n result[name] = value;\n } else {\n delete result[name];\n }\n });\n }\n\n return result;\n}\n\n/**\n * @internal\n */\nexport function getStyleCallbacks(\n callbacks: CssStyleCallbackMap | null | undefined\n): CssStyleCallbackMap {\n let result = cloneObject(callbacks);\n result.position = result.position || removeValue;\n result.width = result.width || removeWidthForLiAndDiv;\n return result;\n}\n\nfunction removeValue(): null {\n return null;\n}\n\nfunction removeWidthForLiAndDiv(value: string, element: HTMLElement) {\n let tag = element.tagName;\n return !(tag == 'LI' || tag == 'DIV');\n}\n\nfunction unique(array: T[]): T[] {\n return array.filter((value, index, self) => self.indexOf(value) == index);\n}\n","import { StringMap } from 'roosterjs-editor-types';\n\n// Inheritable CSS properties\n// Ref: https://www.w3.org/TR/CSS21/propidx.html\nconst INHERITABLE_PROPERTIES = (\n 'border-spacing,caption-side,color,' +\n 'cursor,direction,empty-cells,font-family,font-size,font-style,font-variant,font-weight,' +\n 'font,letter-spacing,line-height,list-style-image,list-style-position,list-style-type,' +\n 'list-style,orphans,quotes,text-align,text-indent,text-transform,visibility,white-space,' +\n 'widows,word-spacing'\n).split(',');\n\n/**\n * Get inheritable CSS style values from the given element\n * @param element The element to get style from\n */\nexport default function getInheritableStyles(element: HTMLElement | null): StringMap {\n let win = element && element.ownerDocument && element.ownerDocument.defaultView;\n let styles = win && element && win.getComputedStyle(element);\n let result: StringMap = {};\n INHERITABLE_PROPERTIES.forEach(\n name => (result[name] = (styles && styles.getPropertyValue(name)) || '')\n );\n return result;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport { PredefinedCssMap, StringMap } from 'roosterjs-editor-types';\n\nconst PREDEFINED_CSS_FOR_ELEMENT: PredefinedCssMap = {\n B: {\n 'font-weight': 'bold',\n },\n EM: {\n 'font-style': 'italic',\n },\n I: {\n 'font-style': 'italic',\n },\n U: {\n 'text-decoration': 'underline',\n },\n P: {\n 'margin-top': '1em',\n 'margin-bottom': '1em',\n },\n PRE: {\n 'white-space': 'pre',\n },\n S: {\n 'text-decoration': 'line-through',\n },\n STRIKE: {\n 'text-decoration': 'line-through',\n },\n SUB: {\n 'vertical-align': 'sub',\n 'font-size': 'smaller',\n },\n SUP: {\n 'vertical-align': 'super',\n 'font-size': 'smaller',\n },\n};\n\n/**\n * @internal\n * Get a map for browser built-in CSS definitions of elements\n */\nexport default function getPredefinedCssForElement(\n element: HTMLElement,\n additionalPredefinedCssForElement?: PredefinedCssMap | null\n): StringMap {\n const tag = getTagOfNode(element);\n return PREDEFINED_CSS_FOR_ELEMENT[tag] || (additionalPredefinedCssForElement || {})[tag];\n}\n","const VARIABLE_REGEX = /^\\s*var\\(\\s*[a-zA-Z0-9-_]+\\s*(,\\s*(.*))?\\)\\s*$/;\nconst VARIABLE_PREFIX = 'var(';\n\n/**\n * @internal\n * Handle CSS variable format. e.g.: var(--name, fallbackValue)\n */\nexport function processCssVariable(value: string): string {\n const match = VARIABLE_REGEX.exec(value);\n return match?.[2] || ''; // Without fallback value, we don't know what does the original value mean, so ignore it\n}\n\n/**\n * @internal\n */\nexport function isCssVariable(value: string): boolean {\n return value.indexOf(VARIABLE_PREFIX) == 0;\n}\n","export { default as getBlockElementAtNode } from './blockElements/getBlockElementAtNode';\nexport { default as getFirstLastBlockElement } from './blockElements/getFirstLastBlockElement';\n\nexport { default as ContentTraverser } from './contentTraverser/ContentTraverser';\nexport { default as PositionContentSearcher } from './contentTraverser/PositionContentSearcher';\n\nexport {\n default as addDelimiters,\n addDelimiterAfter,\n addDelimiterBefore,\n} from './delimiter/addDelimiters';\nexport { default as getDelimiterFromElement } from './delimiter/getDelimiterFromElement';\n\nexport { default as getInlineElementAtNode } from './inlineElements/getInlineElementAtNode';\nexport { default as ImageInlineElement } from './inlineElements/ImageInlineElement';\nexport { default as LinkInlineElement } from './inlineElements/LinkInlineElement';\nexport { default as NodeInlineElement } from './inlineElements/NodeInlineElement';\nexport { default as PartialInlineElement } from './inlineElements/PartialInlineElement';\nexport { default as applyTextStyle } from './inlineElements/applyTextStyle';\n\nexport { default as extractClipboardEvent } from './clipboard/extractClipboardEvent';\nexport { default as extractClipboardItems } from './clipboard/extractClipboardItems';\nexport { default as extractClipboardItemsForIE } from './clipboard/extractClipboardItemsForIE';\nexport { default as handleImagePaste } from './clipboard/handleImagePaste';\nexport { default as handleTextPaste } from './clipboard/handleTextPaste';\nexport { default as retrieveMetadataFromClipboard } from './clipboard/retrieveMetadataFromClipboard';\nexport { default as sanitizePasteContent } from './clipboard/sanitizePasteContent';\nexport { default as getPasteType } from './clipboard/getPasteType';\n\nexport { Browser, getBrowserInfo } from './utils/Browser';\nexport { default as applyFormat } from './utils/applyFormat';\nexport { default as changeElementTag } from './utils/changeElementTag';\nexport { default as collapseNodes } from './utils/collapseNodes';\nexport { default as contains } from './utils/contains';\nexport { default as findClosestElementAncestor } from './utils/findClosestElementAncestor';\nexport { default as fromHtml } from './utils/fromHtml';\nexport { default as getComputedStyles, getComputedStyle } from './utils/getComputedStyles';\nexport {\n default as getPendableFormatState,\n PendableFormatCommandMap,\n PendableFormatNames,\n} from './utils/getPendableFormatState';\nexport { default as getTagOfNode } from './utils/getTagOfNode';\nexport { default as isBlockElement } from './utils/isBlockElement';\nexport { default as isNodeEmpty } from './utils/isNodeEmpty';\nexport { default as isVoidHtmlElement } from './utils/isVoidHtmlElement';\nexport { default as matchLink } from './utils/matchLink';\nexport { default as queryElements } from './utils/queryElements';\nexport { default as splitParentNode, splitBalancedNodeRange } from './utils/splitParentNode';\nexport { default as unwrap } from './utils/unwrap';\nexport { default as wrap } from './utils/wrap';\nexport { getNextLeafSibling, getPreviousLeafSibling } from './utils/getLeafSibling';\nexport { getFirstLeafNode, getLastLeafNode } from './utils/getLeafNode';\nexport { default as splitTextNode } from './utils/splitTextNode';\nexport { default as normalizeRect } from './utils/normalizeRect';\nexport { default as safeInstanceOf } from './utils/safeInstanceOf';\nexport { default as readFile } from './utils/readFile';\nexport { default as getInnerHTML } from './utils/getInnerHTML';\nexport { default as setColor } from './utils/setColor';\nexport { default as matchesSelector } from './utils/matchesSelector';\nexport { default as createElement, KnownCreateElementData } from './utils/createElement';\nexport { default as moveChildNodes } from './utils/moveChildNodes';\nexport { default as getIntersectedRect } from './utils/getIntersectedRect';\nexport { default as isNodeAfter } from './utils/isNodeAfter';\nexport { default as parseColor } from './utils/parseColor';\n\nexport { default as VTable } from './table/VTable';\nexport { default as isWholeTableSelected } from './table/isWholeTableSelected';\n\nexport { default as VList } from './list/VList';\nexport { default as VListItem } from './list/VListItem';\nexport { default as createVListFromRegion } from './list/createVListFromRegion';\nexport { default as VListChain } from './list/VListChain';\nexport { default as setListItemStyle } from './list/setListItemStyle';\nexport { getTableFormatInfo } from './table/tableFormatInfo';\nexport { saveTableCellMetadata } from './table/tableCellInfo';\nexport { getTableCellMetadata } from './table/tableCellInfo';\n\nexport { default as getRegionsFromRange } from './region/getRegionsFromRange';\nexport { default as getSelectedBlockElementsInRegion } from './region/getSelectedBlockElementsInRegion';\nexport { default as collapseNodesInRegion } from './region/collapseNodesInRegion';\nexport { default as isNodeInRegion } from './region/isNodeInRegion';\nexport { default as getSelectionRangeInRegion } from './region/getSelectionRangeInRegion';\nexport { default as mergeBlocksInRegion } from './region/mergeBlocksInRegion';\n\nexport { default as Position } from './selection/Position';\nexport { default as createRange } from './selection/createRange';\nexport { default as getPositionRect } from './selection/getPositionRect';\nexport { default as isPositionAtBeginningOf } from './selection/isPositionAtBeginningOf';\nexport { default as getSelectionPath } from './selection/getSelectionPath';\nexport { default as getHtmlWithSelectionPath } from './selection/getHtmlWithSelectionPath';\nexport {\n default as setHtmlWithSelectionPath,\n setHtmlWithMetadata,\n extractContentMetadata,\n} from './selection/setHtmlWithSelectionPath';\nexport { default as addRangeToSelection } from './selection/addRangeToSelection';\n\nexport { default as addSnapshot, addSnapshotV2 } from './snapshots/addSnapshot';\nexport { default as canMoveCurrentSnapshot } from './snapshots/canMoveCurrentSnapshot';\nexport {\n default as clearProceedingSnapshots,\n clearProceedingSnapshotsV2,\n} from './snapshots/clearProceedingSnapshots';\nexport {\n default as moveCurrentSnapshot,\n moveCurrentSnapsnot,\n} from './snapshots/moveCurrentSnapshot';\nexport { default as createSnapshots } from './snapshots/createSnapshots';\nexport { default as canUndoAutoComplete } from './snapshots/canUndoAutoComplete';\n\nexport { default as HtmlSanitizer } from './htmlSanitizer/HtmlSanitizer';\nexport { default as getInheritableStyles } from './htmlSanitizer/getInheritableStyles';\nexport { default as createDefaultHtmlSanitizerOptions } from './htmlSanitizer/createDefaultHtmlSanitizerOptions';\nexport { default as chainSanitizerCallback } from './htmlSanitizer/chainSanitizerCallback';\n\nexport { default as commitEntity } from './entity/commitEntity';\nexport { default as getEntityFromElement } from './entity/getEntityFromElement';\nexport { default as getEntitySelector } from './entity/getEntitySelector';\nexport {\n createEntityPlaceholder,\n moveContentWithEntityPlaceholders,\n restoreContentWithEntityPlaceholder,\n} from './entity/entityPlaceholderUtils';\n\nexport { default as cacheGetEventData } from './event/cacheGetEventData';\nexport { default as clearEventDataCache } from './event/clearEventDataCache';\nexport { default as isModifierKey } from './event/isModifierKey';\nexport { default as isCharacterValue } from './event/isCharacterValue';\nexport { default as isCtrlOrMetaPressed } from './event/isCtrlOrMetaPressed';\n\nexport { default as getStyles } from './style/getStyles';\nexport { default as setStyles } from './style/setStyles';\nexport { default as removeImportantStyleRule } from './style/removeImportantStyleRule';\nexport { default as setGlobalCssStyles } from './style/setGlobalCssStyles';\nexport { default as removeGlobalCssStyle } from './style/removeGlobalCssStyle';\n\nexport { default as adjustInsertPosition } from './edit/adjustInsertPosition';\nexport { default as deleteSelectedContent } from './edit/deleteSelectedContent';\nexport { default as getTextContent } from './edit/getTextContent';\n\nexport { default as validate } from './metadata/validate';\nexport {\n createNumberDefinition,\n createBooleanDefinition,\n createStringDefinition,\n createArrayDefinition,\n createObjectDefinition,\n} from './metadata/definitionCreators';\nexport { getMetadata, setMetadata, removeMetadata } from './metadata/metadata';\n\nexport { default as arrayPush } from './jsUtils/arrayPush';\nexport { default as getObjectKeys } from './jsUtils/getObjectKeys';\nexport { default as toArray } from './jsUtils/toArray';\n\nexport { default as getPasteSource } from './pasteSourceValidations/getPasteSource';\n","import { BlockElement, InlineElement, NodePosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Represents an empty InlineElement.\r\n * This is used for ContentTraverser internally only.\r\n * An empty InlineElement means current position is at the end of a tag so nothing is included inside this element\r\n */\r\nexport default class EmptyInlineElement implements InlineElement {\r\n constructor(private position: NodePosition, private parentBlock: BlockElement) {}\r\n\r\n /**\r\n * Get the text content of this inline element\r\n */\r\n getTextContent(): string {\r\n return '';\r\n }\r\n\r\n /**\r\n * Get the container node of this inline element\r\n */\r\n getContainerNode(): Node {\r\n return this.position.node;\r\n }\r\n\r\n /**\r\n * Get the parent block element of this inline element\r\n */\r\n getParentBlock(): BlockElement {\r\n return this.parentBlock;\r\n }\r\n\r\n /**\r\n * Get the start position of this inline element\r\n */\r\n getStartPosition(): NodePosition {\r\n return this.position;\r\n }\r\n\r\n /**\r\n * Get the end position of this inline element\r\n */\r\n getEndPosition(): NodePosition {\r\n return this.position;\r\n }\r\n\r\n /**\r\n * Checks if the given inline element is after this inline element\r\n */\r\n isAfter(inlineElement: InlineElement): boolean {\r\n return inlineElement && this.position.isAfter(inlineElement.getEndPosition());\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n isTextualInlineElement(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the given editor position is contained in this inline element\r\n */\r\n contains(position: NodePosition): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Apply inline style to a region of an inline element.\r\n */\r\n applyStyle(styler: (element: HTMLElement) => any): void {}\r\n}\r\n","import NodeInlineElement from './NodeInlineElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This is an inline element representing an Html image\r\n */\r\nexport default class ImageInlineElement extends NodeInlineElement {\r\n constructor(containerNode: Node, parentBlock: BlockElement) {\r\n super(containerNode, parentBlock);\r\n }\r\n}\r\n","import NodeInlineElement from './NodeInlineElement';\r\nimport { BlockElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This is inline element presenting an html hyperlink\r\n */\r\nexport default class LinkInlineElement extends NodeInlineElement {\r\n constructor(containerNode: Node, parentBlock: BlockElement) {\r\n super(containerNode, parentBlock);\r\n }\r\n}\r\n","import applyTextStyle from './applyTextStyle';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport Position from '../selection/Position';\r\nimport {\r\n BlockElement,\r\n InlineElement,\r\n NodePosition,\r\n NodeType,\r\n PositionType,\r\n} from 'roosterjs-editor-types';\r\n\r\n/**\r\n * This presents an inline element that can be represented by a single html node.\r\n * This serves as base for most inline element as it contains most implementation\r\n * of all operations that can happen on an inline element. Other sub inline elements mostly\r\n * just identify themselves for a certain type\r\n */\r\nexport default class NodeInlineElement implements InlineElement {\r\n constructor(private containerNode: Node, private parentBlock: BlockElement) {}\r\n\r\n /**\r\n * The text content for this inline element\r\n */\r\n public getTextContent(): string {\r\n // nodeValue is better way to retrieve content for a text. Others, just use textContent\r\n return (\r\n (this.containerNode.nodeType == NodeType.Text\r\n ? this.containerNode.nodeValue\r\n : this.containerNode.textContent) || ''\r\n );\r\n }\r\n\r\n /**\r\n * Get the container node\r\n */\r\n public getContainerNode(): Node {\r\n return this.containerNode;\r\n }\r\n\r\n // Get the parent block\r\n public getParentBlock(): BlockElement {\r\n return this.parentBlock;\r\n }\r\n\r\n /**\r\n * Get the start position of the inline element\r\n */\r\n public getStartPosition(): NodePosition {\r\n // For a position, we always want it to point to a leaf node\r\n // We should try to go get the lowest first child node from the container\r\n return new Position(this.containerNode, 0).normalize();\r\n }\r\n\r\n /**\r\n * Get the end position of the inline element\r\n */\r\n public getEndPosition(): NodePosition {\r\n // For a position, we always want it to point to a leaf node\r\n // We should try to go get the lowest last child node from the container\r\n return new Position(this.containerNode, PositionType.End).normalize();\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n public isTextualInlineElement(): boolean {\r\n return this.containerNode && this.containerNode.nodeType == NodeType.Text;\r\n }\r\n\r\n /**\r\n * Checks if an inline element is after the current inline element\r\n */\r\n public isAfter(inlineElement: InlineElement): boolean {\r\n return inlineElement && isNodeAfter(this.containerNode, inlineElement.getContainerNode());\r\n }\r\n\r\n /**\r\n * Checks if the given position is contained in the inline element\r\n */\r\n public contains(pos: NodePosition): boolean {\r\n let start = this.getStartPosition();\r\n let end = this.getEndPosition();\r\n return pos && pos.isAfter(start) && end.isAfter(pos);\r\n }\r\n\r\n /**\r\n * Apply inline style to an inline element\r\n */\r\n public applyStyle(styler: (element: HTMLElement, isInnerNode?: boolean) => any): void {\r\n applyTextStyle(this.containerNode, styler);\r\n }\r\n}\r\n","import applyTextStyle from './applyTextStyle';\r\nimport createRange from '../selection/createRange';\r\nimport Position from '../selection/Position';\r\nimport { BlockElement, InlineElement, NodePosition, PositionType } from 'roosterjs-editor-types';\r\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\r\n\r\n/**\r\n * This is a special version of inline element that identifies a section of an inline element\r\n * We often have the need to cut an inline element in half and perform some operation only on half of an inline element\r\n * i.e. users select only some text of a text node and apply format, in that case, format has to happen on partial of an inline element\r\n * PartialInlineElement is implemented in a way that decorate another full inline element with its own override on methods like isAfter\r\n * It also offers some special methods that others don't have, i.e. nextInlineElement etc.\r\n */\r\nexport default class PartialInlineElement implements InlineElement {\r\n constructor(\r\n private inlineElement: InlineElement,\r\n private start: NodePosition | null = null,\r\n private end: NodePosition | null = null\r\n ) {}\r\n\r\n /**\r\n * Get the full inline element that this partial inline decorates\r\n */\r\n public getDecoratedInline(): InlineElement {\r\n return this.inlineElement;\r\n }\r\n\r\n /**\r\n * Gets the container node\r\n */\r\n public getContainerNode(): Node {\r\n return this.inlineElement.getContainerNode();\r\n }\r\n\r\n /**\r\n * Gets the parent block\r\n */\r\n public getParentBlock(): BlockElement {\r\n return this.inlineElement.getParentBlock();\r\n }\r\n\r\n /**\r\n * Gets the text content\r\n */\r\n public getTextContent(): string {\r\n let range = createRange(this.getStartPosition(), this.getEndPosition());\r\n\r\n return range.toString();\r\n }\r\n\r\n /**\r\n * Get start position of this inline element.\r\n */\r\n public getStartPosition(): NodePosition {\r\n return this.start || this.inlineElement.getStartPosition();\r\n }\r\n\r\n /**\r\n * Get end position of this inline element.\r\n */\r\n public getEndPosition(): NodePosition {\r\n return this.end || this.inlineElement.getEndPosition();\r\n }\r\n\r\n /**\r\n * Get next partial inline element if it is not at the end boundary yet\r\n */\r\n public get nextInlineElement(): PartialInlineElement | null {\r\n return this.end ? new PartialInlineElement(this.inlineElement, this.end) : null;\r\n }\r\n\r\n /**\r\n * Get previous partial inline element if it is not at the begin boundary yet\r\n */\r\n public get previousInlineElement(): PartialInlineElement | null {\r\n return this.start\r\n ? new PartialInlineElement(this.inlineElement, undefined, this.start)\r\n : null;\r\n }\r\n\r\n /**\r\n * Checks if it contains a position\r\n */\r\n public contains(pos: NodePosition): boolean {\r\n return pos && pos.isAfter(this.getStartPosition()) && this.getEndPosition().isAfter(pos);\r\n }\r\n\r\n /**\r\n * Checks if this inline element is a textual inline element\r\n */\r\n public isTextualInlineElement(): boolean {\r\n return this.inlineElement && this.inlineElement.isTextualInlineElement();\r\n }\r\n\r\n /**\r\n * Check if this inline element is after the other inline element\r\n */\r\n public isAfter(inlineElement: InlineElement): boolean {\r\n let thisStart = this.getStartPosition();\r\n let otherEnd = inlineElement && inlineElement.getEndPosition();\r\n return otherEnd && (thisStart.isAfter(otherEnd) || thisStart.equalTo(otherEnd));\r\n }\r\n\r\n /**\r\n * apply style\r\n */\r\n public applyStyle(styler: (element: HTMLElement, isInnerNode?: boolean) => any) {\r\n let from: NodePosition | null = this.getStartPosition().normalize();\r\n let to: NodePosition | null = this.getEndPosition().normalize();\r\n let container = this.getContainerNode();\r\n\r\n if (from.isAtEnd) {\r\n let nextNode = getNextLeafSibling(container, from.node);\r\n from = nextNode ? new Position(nextNode, PositionType.Begin) : null;\r\n }\r\n if (to.offset == 0) {\r\n let previousNode = getPreviousLeafSibling(container, to.node);\r\n to = previousNode ? new Position(previousNode, PositionType.End) : null;\r\n }\r\n\r\n applyTextStyle(container, styler, from || undefined, to || undefined);\r\n }\r\n}\r\n","import getTagOfNode from '../utils/getTagOfNode';\nimport Position from '../selection/Position';\nimport splitTextNode from '../utils/splitTextNode';\nimport wrap from '../utils/wrap';\nimport { getNextLeafSibling } from '../utils/getLeafSibling';\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\nimport { splitBalancedNodeRange } from '../utils/splitParentNode';\nimport safeInstanceOf from '../utils/safeInstanceOf';\n\nconst STYLET_AGS = 'SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL,SUP,SUB'.split(',');\n\n/**\n * Apply style using a styler function to the given container node in the given range\n * @param container The container node to apply style to\n * @param styler The styler function\n * @param fromPosition From position\n * @param toPosition To position\n */\nexport default function applyTextStyle(\n container: Node,\n styler: (node: HTMLElement, isInnerNode?: boolean) => any,\n from: NodePosition = new Position(container, PositionType.Begin).normalize(),\n to: NodePosition = new Position(container, PositionType.End).normalize()\n) {\n let formatNodes: Node[] = [];\n let fromPosition: NodePosition | null = from;\n let toPosition: NodePosition | null = to;\n\n while (fromPosition && toPosition && toPosition.isAfter(fromPosition)) {\n let formatNode = fromPosition.node;\n let parentTag = getTagOfNode(formatNode.parentNode);\n\n // The code below modifies DOM. Need to get the next sibling first otherwise you won't be able to reliably get a good next sibling node\n let nextNode = getNextLeafSibling(container, formatNode);\n\n if (formatNode.nodeType == NodeType.Text && ['TR', 'TABLE'].indexOf(parentTag) < 0) {\n if (formatNode == toPosition.node && !toPosition.isAtEnd) {\n formatNode = splitTextNode(\n formatNode,\n toPosition.offset,\n true /*returnFirstPart*/\n );\n }\n\n if (fromPosition.offset > 0) {\n formatNode = splitTextNode(\n formatNode,\n fromPosition.offset,\n false /*returnFirstPart*/\n );\n }\n\n formatNodes.push(formatNode);\n }\n\n fromPosition = nextNode && new Position(nextNode, PositionType.Begin);\n }\n\n if (formatNodes.length > 0) {\n if (formatNodes.every(node => node.parentNode == formatNodes[0].parentNode)) {\n let newNode = formatNodes.shift()!;\n formatNodes.forEach(node => {\n const newNodeValue = (newNode.nodeValue || '') + (node.nodeValue || '');\n newNode.nodeValue = newNodeValue;\n node.parentNode?.removeChild(node);\n });\n formatNodes = [newNode];\n }\n\n formatNodes.forEach(startingNode => {\n // When apply style within style tags like B/I/U/..., we split the tag and apply outside them\n // So that the inner style tag such as U, STRIKE can inherit the style we added\n let node: Node | null = startingNode;\n while (\n node &&\n getTagOfNode(node) != 'SPAN' &&\n STYLET_AGS.indexOf(getTagOfNode(node.parentNode)) >= 0\n ) {\n callStylerWithInnerNode(node, styler);\n node = splitBalancedNodeRange(node);\n }\n\n if (node && getTagOfNode(node) != 'SPAN') {\n callStylerWithInnerNode(node, styler);\n node = wrap(node, 'SPAN');\n }\n\n if (safeInstanceOf(node, 'HTMLElement')) {\n styler(node);\n }\n });\n }\n}\n\nfunction callStylerWithInnerNode(\n node: Node,\n styler: (node: HTMLElement, isInnerNode?: boolean) => any\n) {\n if (node && node.nodeType == NodeType.Element) {\n styler(node as HTMLElement, true /*isInnerNode*/);\n }\n}\n","import getInlineElementAtNode from './getInlineElementAtNode';\r\nimport { getFirstLeafNode, getLastLeafNode } from '../utils/getLeafNode';\r\nimport { InlineElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get the first inline element inside the given node\r\n */\r\nexport function getFirstInlineElement(rootNode: Node): InlineElement | null {\r\n // getFirstLeafNode can return null for empty container\r\n // do check null before passing on to get inline from the node\r\n let node = getFirstLeafNode(rootNode);\r\n return node ? getInlineElementAtNode(rootNode, node) : null;\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get the last inline element inside the given node\r\n */\r\nexport function getLastInlineElement(rootNode: Node): InlineElement | null {\r\n // getLastLeafNode can return null for empty container\r\n // do check null before passing on to get inline from the node\r\n let node = getLastLeafNode(rootNode);\r\n return node ? getInlineElementAtNode(rootNode, node) : null;\r\n}\r\n","import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport ImageInlineElement from './ImageInlineElement';\r\nimport LinkInlineElement from './LinkInlineElement';\r\nimport NodeInlineElement from './NodeInlineElement';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport { BlockElement, InlineElement } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the inline element at a node\r\n * @param rootNode The root node of current scope\r\n * @param node The node to get InlineElement from\r\n */\r\nexport default function getInlineElementAtNode(rootNode: Node, node: Node | null): InlineElement;\r\n\r\n/**\r\n * Get the inline element at a node\r\n * @param parentBlock Parent BlockElement of this node\r\n * @param node The node to get InlineElement from\r\n */\r\nexport default function getInlineElementAtNode(\r\n parentBlock: BlockElement,\r\n node: Node | null\r\n): InlineElement;\r\n\r\nexport default function getInlineElementAtNode(\r\n parent: Node | BlockElement,\r\n node: Node | null\r\n): InlineElement | null {\r\n // An inline element has to be in a block element, get the block first and then resolve through the factory\r\n let parentBlock = safeInstanceOf(parent, 'Node') ? getBlockElementAtNode(parent, node) : parent;\r\n return node && parentBlock && resolveInlineElement(node, parentBlock);\r\n}\r\n\r\n/**\r\n * Resolve an inline element by a leaf node\r\n * @param node The node to resolve from\r\n * @param parentBlock The parent block element\r\n */\r\nfunction resolveInlineElement(node: Node, parentBlock: BlockElement): InlineElement {\r\n let nodeChain = [node];\r\n for (\r\n let parent = node.parentNode;\r\n parent && parentBlock.contains(parent);\r\n parent = parent.parentNode\r\n ) {\r\n nodeChain.push(parent);\r\n }\r\n\r\n let inlineElement: InlineElement | undefined;\r\n\r\n for (let i = nodeChain.length - 1; i >= 0 && !inlineElement; i--) {\r\n let currentNode = nodeChain[i];\r\n let tag = getTagOfNode(currentNode);\r\n if (tag == 'A') {\r\n inlineElement = new LinkInlineElement(currentNode, parentBlock);\r\n } else if (tag == 'IMG') {\r\n inlineElement = new ImageInlineElement(currentNode, parentBlock);\r\n }\r\n }\r\n\r\n return inlineElement || new NodeInlineElement(node, parentBlock);\r\n}\r\n","import getInlineElementAtNode from './getInlineElementAtNode';\r\nimport PartialInlineElement from './PartialInlineElement';\r\nimport shouldSkipNode from '../utils/shouldSkipNode';\r\nimport { getLeafSibling } from '../utils/getLeafSibling';\r\nimport { InlineElement, NodePosition, NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * @internal\r\n * Get inline element before a position\r\n * This is mostly used when we want to get the inline element before selection/cursor\r\n * There is a possible that the cursor is in middle of an inline element (i.e. mid of a text node)\r\n * in this case, we only want to return what is before cursor (a partial of an inline) to indicate\r\n * that we're in middle.\r\n * @param root Root node of current scope, use for create InlineElement\r\n * @param position The position to get InlineElement before\r\n */\r\nexport function getInlineElementBefore(root: Node, position: NodePosition): InlineElement | null {\r\n return getInlineElementBeforeAfter(root, position, false /*isAfter*/);\r\n}\r\n\r\n/**\r\n * @internal\r\n * Get inline element after a position\r\n * This is mostly used when we want to get the inline element after selection/cursor\r\n * There is a possible that the cursor is in middle of an inline element (i.e. mid of a text node)\r\n * in this case, we only want to return what is before cursor (a partial of an inline) to indicate\r\n * that we're in middle.\r\n * @param root Root node of current scope, use for create InlineElement\r\n * @param position The position to get InlineElement after\r\n */\r\nexport function getInlineElementAfter(root: Node, position: NodePosition): InlineElement | null {\r\n return getInlineElementBeforeAfter(root, position, true /*isAfter*/);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function getInlineElementBeforeAfter(root: Node, position: NodePosition, isAfter: boolean) {\r\n if (!root || !position || !position.node) {\r\n return null;\r\n }\r\n\r\n position = position.normalize();\r\n let { offset, isAtEnd } = position;\r\n let node: Node | null = position.node;\r\n let isPartial = false;\r\n\r\n if ((!isAfter && offset == 0 && !isAtEnd) || (isAfter && isAtEnd)) {\r\n node = getLeafSibling(root, node, isAfter);\r\n } else if (\r\n node.nodeType == NodeType.Text &&\r\n ((!isAfter && !isAtEnd) || (isAfter && offset > 0))\r\n ) {\r\n isPartial = true;\r\n }\r\n\r\n if (node && shouldSkipNode(node)) {\r\n node = getLeafSibling(root, node, isAfter);\r\n }\r\n\r\n let inlineElement = getInlineElementAtNode(root, node);\r\n\r\n if (inlineElement && (isPartial || inlineElement.contains(position))) {\r\n inlineElement = isAfter\r\n ? new PartialInlineElement(inlineElement, position, undefined)\r\n : new PartialInlineElement(inlineElement, undefined, position);\r\n }\r\n\r\n return inlineElement;\r\n}\r\n","/**\n * A type-safe wrapper for Array.prototype.push.apply()\n * @param mainArray The main array to push items into\n * @param itemsArray The items to push to main array\n */\nexport default function arrayPush(mainArray: T[], itemsArray: T[]) {\n Array.prototype.push.apply(mainArray, itemsArray);\n}\n","/**\n * Provide a strong-typed version of Object.keys()\n * @param obj The source object\n * @returns Array of keys\n */\nexport default function getObjectKeys(\n obj: Record | Partial>\n): T[] {\n return Object.keys(obj) as T[];\n}\n","/**\n * Convert a named node map to an array\n * @param collection The map to convert\n */\nexport default function toArray(collection: NamedNodeMap): Attr[];\n\n/**\n * Convert a named node map to an array\n * @param collection The map to convert\n */\nexport default function toArray(collection: DataTransferItemList): DataTransferItem[];\n\n/**\n * Convert a collection to an array\n * @param collection The collection to convert\n */\nexport default function toArray(collection: NodeListOf): T[];\n\n/**\n * Convert a collection to an array\n * @param collection The collection to convert\n */\nexport default function toArray(collection: HTMLCollectionOf): T[];\n\n/**\n * Convert an array to an array.\n * This is to satisfy typescript compiler. For some cases the object can be a collection at runtime,\n * but the declaration is an array. e.g. ClipboardData.types\n * @param array The array to convert\n */\nexport default function toArray(array: readonly T[]): T[];\n\nexport default function toArray(collection: any): any[] {\n return [].slice.call(collection);\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport getListTypeFromNode, { isListElement } from './getListTypeFromNode';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isBlockElement from '../utils/isBlockElement';\nimport isNodeEmpty from '../utils/isNodeEmpty';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport splitParentNode from '../utils/splitParentNode';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport VListItem, { ListStyleDefinitionMetadata, ListStyleMetadata } from './VListItem';\nimport wrap from '../utils/wrap';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport {\n Indentation,\n ListType,\n NodePosition,\n PositionType,\n NodeType,\n Alignment,\n NumberingListType,\n BulletListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleAlignment,\n CompatibleBulletListType,\n CompatibleIndentation,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Represent a bullet or a numbering list\n *\n * @example\n * A VList is a logical representation of list items, it contains an item array with node and list type stack.\n * e.g. We have a list like this\n * ```html\n *
                              \n *
                            1. item 1
                            2. \n *
                            3. item 2
                            4. \n *
                                \n *
                              • item 2.1
                              • \n *
                              • item 2.2
                              • \n *
                                  \n *
                            \n * ```\n *\n * A VList of this list will be like this:\n * ```javascript\n * {\n * rootList: (OL node),\n * items: [{\n * node: (LI node with 'item 1'),\n * listTypes: [null, OL],\n * }, {\n * node: (LI node with 'item 2'),\n * listTypes: [null, OL],\n * }, {\n * node: (LI node with 'item 2.1),\n * listTypes: [null, OL, UL],\n * }, {\n * node: (LI node with 'item 2.2'),\n * listTypes: [null, OL, UL],\n * }\n * ]\n * }\n * ```\n *\n * When we want to outdent item 2.1, we just need to remove the last \"UL\" from listTypes of item 2.1, then\n * the writeBack() function will handle everything related to DOM change\n */\nexport default class VList {\n public readonly items: VListItem[] = [];\n\n /**\n * Create a new instance of VList class\n * @param rootList The root list element, can be either OL or UL tag\n */\n constructor(public rootList: HTMLOListElement | HTMLUListElement) {\n if (!rootList) {\n throw new Error('rootList must not be null');\n }\n\n // Before populate items, we need to normalize the list to make sure it is in a correct format\n // otherwise further action may mass thing up.\n //\n // There are two kinds of normalization to perform.\n // 1. Move nodes directly under OL/UL into a LI node, unless it is an orphan node\n // Please see comment for VListItem.isOrphanItem() for more information about orphan node\n // e.g.:\n // ```HTML\n //
                              \n //
                            1. item 1
                            2. \n //
                              item 2
                              \n //
                            \n // ```\n // After this step, it should become:\n // ```html\n //
                              \n //
                            1. item 1\n //
                              item 2
                              \n //
                            2. \n //
                            \n // ```\n moveChildNodesToLi(this.rootList);\n queryElements(this.rootList, 'ol,ul', moveChildNodesToLi);\n\n // 2. Move LI node embedded into another LI node out to directly under OL/UL node\n // Ideally browser we do this for us automatically when out the HTML into DOM. However after\n // step 1, it is possible that we move some LI node into another one. e.g:\n // ```HTML\n //
                              \n //
                            1. item 1
                            2. \n //
                              \n // item 1.1\n //
                            3. item 3
                            4. \n //
                              \n //
                            \n // ```\n // See that the second LI tag is not directly under OL, so after step 1, this will become:\n // ```html\n //
                              \n //
                            1. item 1\n //
                              \n // item 1.1\n //
                            2. item 2
                            3. \n //
                            \n //
                          3. \n // \n // ```\n // Now we have a LI tag embedded into another LI tag. So we need step 2 to move the inner LI tag out to be:\n // ```html\n //
                              \n //
                            1. item1\n //
                              item 1.1
                              \n //
                            2. \n //
                            3. item2
                            4. \n //
                            \n // ```\n queryElements(this.rootList, 'li', moveLiToList);\n\n this.populateItems(this.rootList);\n }\n\n /**\n * Check if this list contains the given node\n * @param node The node to check\n */\n contains(node: Node) {\n // We don't check if the node is contained by this.rootList here, because after some operation,\n // it is possible a node is logically contained by this list but the container list item hasn't\n // been put under this.rootList in DOM tree yet.\n return this.items.some(item => item.contains(node));\n }\n\n /**\n * Get list number of the last item in this VList.\n * If there is no order list item, result will be undefined\n */\n getLastItemNumber(): number | undefined {\n const start = this.getStart();\n\n return start === undefined\n ? start\n : start -\n 1 +\n this.items.filter(\n item =>\n item.getListType() == ListType.Ordered &&\n item.getLevel() == 1 &&\n !item.isDummy()\n ).length;\n }\n\n /**\n * Write the result back into DOM tree\n * After that, this VList becomes unavailable because we set this.rootList to null\n *\n * @param shouldReuseAllAncestorListElements Optional - defaults to false.\n * @param disableListChain Whether we want to disable list chain functionality. @default false\n */\n writeBack(shouldReuseAllAncestorListElements?: boolean, disableListChain?: boolean) {\n if (!this.rootList) {\n throw new Error('rootList must not be null');\n }\n\n const doc = this.rootList.ownerDocument;\n const listStack: Node[] = [doc.createDocumentFragment()];\n const placeholder = doc.createTextNode('');\n let start = this.getStart() || 1;\n let lastList: Node;\n\n // Use a placeholder to hold the position since the root list may be moved into document fragment later\n this.rootList.parentNode!.replaceChild(placeholder, this.rootList);\n\n this.items.forEach(item => {\n const newListStart = item.getNewListStart();\n\n if (newListStart && newListStart != start) {\n listStack.splice(1, listStack.length - 1);\n start = newListStart;\n }\n\n item.writeBack(listStack, this.rootList, shouldReuseAllAncestorListElements);\n const topList = listStack[1];\n\n item.applyListStyle(this.rootList, start);\n\n if (safeInstanceOf(topList, 'HTMLOListElement')) {\n if (lastList != topList) {\n if (start == 1) {\n topList.removeAttribute('start');\n } else {\n topList.start = start;\n }\n }\n\n if (item.getLevel() == 1 && !item.isDummy() && !disableListChain) {\n start++;\n }\n }\n\n lastList = topList;\n });\n\n // Restore the content to the position of placeholder\n placeholder.parentNode!.replaceChild(listStack[0], placeholder);\n }\n\n /**\n * Sets the New List Start Property, that is going to be used to create a new List in the WriteBack function\n * @param separator The HTML element that indicates when to split the VList\n * @param startNumber The start number of the new List\n */\n split(separator: HTMLElement, startNumber: number) {\n if (!this.rootList) {\n throw new Error('rootList must not be null');\n }\n\n //Traverse the items of the VList, when the separator is found, set the New List Start Property\n for (let index = 0; index < this.items.length; index++) {\n if (this.items[index].getNode() == separator) {\n this.items[index].setNewListStart(startNumber);\n return;\n }\n }\n }\n\n /**\n * Set indentation of the given range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param indentation Indent or outdent\n */\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation | CompatibleIndentation\n ): void;\n\n /**\n * Outdent the give range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param indentation Specify to outdent\n * @param softOutdent (Optional) True to make the item to by dummy (no bullet or number) if the item is not dummy,\n * otherwise outdent the item\n * @param preventItemRemoval (Optional) True to prevent the indentation to remove the bullet when outdenting a first\n * level list item, by default is false\n */\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation.Decrease | CompatibleIndentation.Decrease,\n softOutdent?: boolean,\n preventItemRemoval?: boolean\n ): void;\n\n setIndentation(\n start: NodePosition,\n end: NodePosition,\n indentation: Indentation | CompatibleIndentation,\n softOutdent?: boolean,\n preventItemRemoval: boolean = false\n ) {\n let shouldAddMargin = false;\n this.findListItems(start, end, item => {\n shouldAddMargin = shouldAddMargin || this.items.indexOf(item) == 0;\n indentation == Indentation.Decrease\n ? softOutdent && !item.isDummy()\n ? item.setIsDummy(true /*isDummy*/)\n : item.outdent(preventItemRemoval)\n : item.indent();\n });\n\n if (shouldAddMargin && preventItemRemoval) {\n for (let index = 0; index < this.items.length; index++) {\n this.items[index].addNegativeMargins();\n }\n }\n }\n\n /**\n * Set alignment of the given range of this list\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param alignment Align items left, center or right\n */\n\n setAlignment(\n start: NodePosition,\n end: NodePosition,\n alignment: Alignment | CompatibleAlignment\n ) {\n this.rootList.style.display = 'flex';\n this.rootList.style.flexDirection = 'column';\n this.findListItems(start, end, item => {\n let align = 'start';\n if (alignment == Alignment.Center) {\n align = 'center';\n } else if (alignment == Alignment.Right) {\n align = 'end';\n }\n item.getNode().style.alignSelf = align;\n });\n }\n\n /**\n * Change list type of the given range of this list.\n * If some of the items are not real list item yet, this will make them to be list item with given type\n * If all items in the given range are already in the type to change to, this becomes an outdent operation\n * @param start Start position to operate from\n * @param end End position to operate to\n * @param targetType Target list type\n */\n changeListType(\n start: NodePosition,\n end: NodePosition,\n targetType: ListType | CompatibleListType\n ) {\n let needChangeType = false;\n\n this.findListItems(start, end, item => {\n needChangeType = needChangeType || item.getListType() != targetType;\n });\n this.findListItems(start, end, item =>\n needChangeType ? item.changeListType(targetType) : item.outdent()\n );\n }\n\n /**\n * Change list style of the given range of this list.\n * If some of the items are not real list item yet, this will make them to be list item with given style\n * @param orderedStyle The style of ordered list\n * @param unorderedStyle The style of unordered list\n */\n setListStyleType(\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType\n ) {\n const style = getMetadata(this.rootList, ListStyleDefinitionMetadata);\n const styleMetadata = createListStyleMetadata(\n style,\n orderedStyle as NumberingListType,\n unorderedStyle as BulletListType\n );\n setMetadata(this.rootList, styleMetadata, ListStyleDefinitionMetadata);\n }\n\n /**\n * Append a new item to this VList\n * @param node node of the item to append. If it is not wrapped with LI tag, it will be wrapped\n * @param type Type of this list item, can be ListType.None\n */\n appendItem(node: Node, type: ListType | CompatibleListType) {\n const nodeTag = getTagOfNode(node);\n\n // Change DIV tag to SPAN. Otherwise we cannot create new list item by Enter key in Safari\n if (nodeTag == 'DIV') {\n node = changeElementTag(node, 'LI')!;\n } else if (nodeTag != 'LI') {\n node = wrap(node, 'LI');\n }\n\n this.items.push(\n type == ListType.None\n ? new VListItem(node)\n : new VListItem(node, (type))\n );\n }\n\n /**\n * Merge the given VList into current VList.\n * - All list items will be removed from the given VList and added into this list.\n * - The root node of the given VList will be removed from DOM tree\n * - If there are orphan items in the given VList, they will be merged into the last item\n * of this list if any.\n * @param list The vList to merge from\n */\n mergeVList(list: VList) {\n if (list && list != this) {\n list.items.forEach(item => this.items.push(item));\n list.items.splice(0, list.items.length);\n list.rootList.parentNode?.removeChild(list.rootList);\n }\n }\n\n /**\n * Get the index of the List Item in the current List\n * If the root list is:\n * Ordered list, the listIndex start count is going to be the start property of the OL - 1,\n * @example For example if we want to find the index of Item 2 in the list below, the returned index is going to be 6\n * * ```html\n *
                              \n *
                            1. item 1
                            2. \n *
                            3. item 2
                            4. \n *
                            5. item 3
                            6. \n *
                            \n * ```\n * Unordered list, the listIndex start count starts from 0\n * @example For example if we want to find the index of Item 2 in the list below, the returned index is going to be 2\n * ```html\n *
                              \n *
                            • item 1
                            • \n *
                            • item 2
                            • \n *
                            • item 3
                            • \n *
                            \n * ```\n * @param input List item to find in the root list\n */\n getListItemIndex(input: Node) {\n if (this.items) {\n let listIndex = (this.getStart() || 1) - 1;\n\n for (let index = 0; index < this.items.length; index++) {\n const child = this.items[index];\n if (child.getLevel() == 1 && !child.isDummy()) {\n listIndex++;\n }\n\n if (child.getNode() == input) {\n return listIndex;\n }\n }\n }\n return -1;\n }\n\n /**\n * Get the Start property of the root list of this VList\n * @returns Start number of the list\n */\n getStart(): number | undefined {\n return safeInstanceOf(this.rootList, 'HTMLOListElement') ? this.rootList.start : undefined;\n }\n\n private findListItems(\n start: NodePosition,\n end: NodePosition,\n callback?: (item: VListItem) => any\n ): VListItem[] {\n if (this.items.length == 0) {\n return [];\n }\n\n const listStartPos = new Position(this.items[0].getNode(), PositionType.Begin);\n const listEndPos = new Position(\n this.items[this.items.length - 1].getNode(),\n PositionType.End\n );\n\n let startIndex = listStartPos.isAfter(start) ? 0 : -1;\n let endIndex = this.items.length - (end.isAfter(listEndPos) ? 1 : 0);\n\n this.items.forEach((item, index) => {\n startIndex = item.contains(start.node) ? index : startIndex;\n endIndex = item.contains(end.node) ? index : endIndex;\n });\n\n startIndex = endIndex < this.items.length ? Math.max(0, startIndex) : startIndex;\n endIndex = startIndex >= 0 ? Math.min(this.items.length - 1, endIndex) : endIndex;\n\n const result = startIndex <= endIndex ? this.items.slice(startIndex, endIndex + 1) : [];\n\n if (callback) {\n result.forEach(callback);\n }\n\n return result;\n }\n\n private populateItems(\n list: HTMLOListElement | HTMLUListElement,\n listTypes: (\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered\n )[] = []\n ) {\n const type = getListTypeFromNode(list);\n const items = toArray(list.childNodes);\n\n items.forEach(item => {\n const newListTypes = [...listTypes, type];\n\n if (isListElement(item)) {\n this.populateItems(item, newListTypes);\n } else if (item.nodeType != NodeType.Text || (item.nodeValue || '').trim() != '') {\n this.items.push(new VListItem(item, ...newListTypes));\n }\n });\n }\n}\n\n//Normalization\n\n// Step 1: Move all non-LI direct children under list into LI\n// e.g.\n// From:
                            • line 1
                            • line 2
                            \n// To:
                            • line 1
                              line 2
                            \nfunction moveChildNodesToLi(list: HTMLElement) {\n let currentItem: HTMLLIElement | null = null;\n\n toArray(list.childNodes).forEach(child => {\n if (getTagOfNode(child) == 'LI') {\n currentItem = child as HTMLLIElement;\n } else if (isListElement(child)) {\n currentItem = null;\n } else if (currentItem && !isNodeEmpty(child, true /*trimContent*/)) {\n currentItem.appendChild(isBlockElement(child) ? child : wrap(child));\n }\n });\n}\n\n// Step 2: Move nested LI up to under list directly\n// e.g.\n// From:
                            • line 1
                            • line 2
                            • line 3
                            \n// To:
                            • line 1
                            • line 2
                              line 3
                            \nfunction moveLiToList(li: HTMLElement) {\n while (!isListElement(li.parentNode)) {\n splitParentNode(li, true /*splitBefore*/);\n let furtherNodes: Node[] = toArray(li.parentNode!.childNodes).slice(1);\n\n if (furtherNodes.length > 0) {\n if (!isBlockElement(furtherNodes[0])) {\n furtherNodes = [wrap(furtherNodes)];\n }\n furtherNodes.forEach(node => li.appendChild(node));\n }\n\n unwrap(li.parentNode!);\n }\n}\n\nfunction getValidValue(...values: (T | undefined)[]): T | undefined {\n return values.filter(x => x !== undefined)[0];\n}\n\nfunction createListStyleMetadata(\n style: ListStyleMetadata | null,\n orderedStyle?: NumberingListType | CompatibleNumberingListType,\n unorderedStyle?: BulletListType | CompatibleBulletListType\n): ListStyleMetadata {\n return {\n orderedStyleType: getValidValue(\n orderedStyle,\n style?.orderedStyleType,\n NumberingListType.Decimal\n ),\n unorderedStyleType: getValidValue(\n unorderedStyle,\n style?.unorderedStyleType,\n BulletListType.Disc\n ),\n };\n}\n","import arrayPush from '../jsUtils/arrayPush';\nimport getRootListNode from './getRootListNode';\nimport isNodeAfter from '../utils/isNodeAfter';\nimport isNodeInRegion from '../region/isNodeInRegion';\nimport queryElements from '../utils/queryElements';\nimport VList from './VList';\nimport { ListType, RegionBase } from 'roosterjs-editor-types';\n\nconst CHAIN_NAME_PREFIX = '__List_Chain_';\nconst CHAIN_DATASET_NAME = 'listchain';\nconst AFTER_CURSOR_DATASET_NAME = 'listchainafter';\nlet lastChainIndex = 0;\n\n/**\n * Represent a chain of list nodes.\n * A chain of lists is a virtual link of lists that have continuous numbers, when editor one of them,\n * all others should also be updated in order to main the list number to be continuous.\n */\nexport default class VListChain {\n private lastNumber = 0;\n private lastNumberBeforeCursor = 0;\n\n /**\n * Create an array of VListChain from current region in editor\n * @param region The region to create VListChain from\n * @param currentNode Optional current node, used for mark lists that are after this node\n * @param nameGenerator Used by test code only\n */\n static createListChains(\n region: RegionBase | RegionBase[],\n currentNode?: Node,\n nameGenerator?: () => string\n ): VListChain[] {\n const regions = Array.isArray(region) ? region : region ? [region] : [];\n const result: VListChain[] = [];\n regions.forEach(region => {\n const chains: VListChain[] = [];\n let lastList: HTMLOListElement;\n\n queryElements(region.rootNode, 'ol', ol => {\n const list = getRootListNode(region, 'ol', ol);\n\n if (lastList != list) {\n const chain =\n chains.filter(c => c.canAppendToTail(list))[0] ||\n new VListChain(region, (nameGenerator || createListChainName)());\n const index = chains.indexOf(chain);\n const afterCurrentNode = !!currentNode && isNodeAfter(list, currentNode);\n\n if (!afterCurrentNode) {\n // Make sure current one is at the front if current block has not been met, so that\n // the first chain is always the nearest one from current node\n if (index >= 0) {\n chains.splice(index, 1);\n }\n\n chains.unshift(chain);\n } else if (index < 0) {\n chains.push(chain);\n }\n\n chain.append(list, afterCurrentNode);\n lastList = list;\n }\n });\n\n arrayPush(result, chains);\n });\n\n return result;\n }\n\n /**\n * Check if a list with the given start number can be appended next to the last list before cursor\n * @param startNumber The start number of the new list\n */\n canAppendAtCursor(startNumber: number): boolean {\n return startNumber > 1 && this.lastNumberBeforeCursor + 1 == startNumber;\n }\n\n /**\n * Create a VList to wrap the block of the given node, and append to current chain\n * @param container The container node to create list at\n * @param startNumber Start number of the new list\n */\n createVListAtBlock(container: Node, startNumber: number): VList | null {\n if (container && container.parentNode) {\n const list = container.ownerDocument!.createElement('ol');\n\n list.start = startNumber;\n this.applyChainName(list);\n container.parentNode.insertBefore(list, container);\n\n const vList = new VList(list);\n\n vList.appendItem(container, ListType.None);\n return vList;\n } else {\n return null;\n }\n }\n\n /**\n * After change the lists, commit the change to all lists in this chain to update the list number,\n * and clear the temporary dataset values added to list node\n * @param shouldReuseAllAncestorListElements Whether we can parent list item (OL/UL) even if its list type does not match the previous one. @default false\n * @param disableListChain Whether we want to disable list chain functionality, so splitted list will always restart its number from 1 @default false\n */\n commit(shouldReuseAllAncestorListElements?: boolean, disableListChain?: boolean) {\n const lists = this.getLists();\n let lastNumber = 0;\n\n for (let i = 0; i < lists.length; i++) {\n const list = lists[i];\n\n if (!disableListChain) {\n //If there is a list chain sequence, ensure the list chain keep increasing correctly\n if (list.start > 1) {\n list.start = list.start === lastNumber ? lastNumber + 1 : list.start;\n } else {\n list.start = lastNumber + 1;\n }\n }\n\n const vlist = new VList(list);\n lastNumber = vlist.getLastItemNumber() || 0;\n\n delete list.dataset[CHAIN_DATASET_NAME];\n delete list.dataset[AFTER_CURSOR_DATASET_NAME];\n\n vlist.writeBack(shouldReuseAllAncestorListElements);\n }\n }\n\n /**\n * Construct a new instance of VListChain class\n * @param editor Editor object\n */\n private constructor(private region: RegionBase, private name: string) {}\n\n /**\n * Check if the given list node is can be appended into current list chain\n * @param list The list node to check\n */\n private canAppendToTail(list: HTMLOListElement) {\n return this.lastNumber + 1 == list.start;\n }\n\n /**\n * Append the given list node into this VListChain\n * @param list The list node to append\n * @param isAfterCurrentNode Whether this list is after current node\n */\n private append(list: HTMLOListElement, isAfterCurrentNode: boolean) {\n this.applyChainName(list);\n this.lastNumber = new VList(list).getLastItemNumber() || 0;\n\n if (isAfterCurrentNode) {\n list.dataset[AFTER_CURSOR_DATASET_NAME] = 'true';\n } else {\n this.lastNumberBeforeCursor = this.lastNumber;\n }\n }\n\n private applyChainName(list: HTMLOListElement) {\n list.dataset[CHAIN_DATASET_NAME] = this.name;\n }\n\n private getLists() {\n return queryElements(\n this.region.rootNode,\n `ol[data-${CHAIN_DATASET_NAME}=${this.name}]`\n ).filter(node => isNodeInRegion(this.region, node)) as HTMLOListElement[];\n }\n}\n\nfunction createListChainName() {\n return CHAIN_NAME_PREFIX + lastChainIndex++;\n}\n","import contains from '../utils/contains';\nimport getListTypeFromNode from './getListTypeFromNode';\nimport getStyles from '../style/getStyles';\nimport getTagOfNode from '../utils/getTagOfNode';\nimport isBlockElement from '../utils/isBlockElement';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setBulletListMarkers from './setBulletListMarkers';\nimport setListItemStyle from './setListItemStyle';\nimport setNumberingListMarkers from './setNumberingListMarkers';\nimport setStyles from '../style/setStyles';\nimport toArray from '../jsUtils/toArray';\nimport unwrap from '../utils/unwrap';\nimport wrap from '../utils/wrap';\nimport { createNumberDefinition, createObjectDefinition } from '../metadata/definitionCreators';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport {\n BulletListType,\n KnownCreateElementDataIndex,\n ListType,\n NumberingListType,\n} from 'roosterjs-editor-types';\nimport type {\n CompatibleBulletListType,\n CompatibleListType,\n CompatibleNumberingListType,\n} from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst orderListStyles = [null, 'lower-alpha', 'lower-roman'];\nconst unorderedListStyles = ['disc', 'circle', 'square'];\n\nconst MARGIN_BASE = '0in 0in 0in 0.5in';\nconst NEGATIVE_MARGIN = '-.25in';\n\nconst stylesToInherit = ['font-size', 'font-family', 'color'];\nconst attrsToInherit = ['data-ogsc', 'data-ogsb', 'data-ogac', 'data-ogab'];\n\n/**\n * @internal\n * The definition for the number of BulletListType or NumberingListType\n */\nexport const ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\n/**\n * @internal\n * Represents the metadata of the style of a list element\n */\nexport interface ListStyleMetadata {\n orderedStyleType?: NumberingListType | CompatibleNumberingListType;\n unorderedStyleType?: BulletListType | CompatibleBulletListType;\n}\n\n/**\n * !!! Never directly create instance of this class. It should be created within VList class !!!\n *\n * Represent a list item.\n *\n * A list item is normally wrapped using a LI tag. But this class is only a logical item,\n * it can be a LI tag, or another other type of node which means it is actually not a list item.\n * That can happen after we do \"outdent\" on a 1-level list item, then it becomes not a list item.\n */\nexport default class VListItem {\n private listTypes: (ListType | CompatibleListType)[];\n private node: HTMLLIElement;\n private dummy: boolean;\n private newListStart: number | undefined = undefined;\n\n /**\n * Construct a new instance of VListItem class\n * @param node The DOM node for this item\n * @param listTypes An array represents list types of all parent and current level.\n * Skip this parameter for a non-list item.\n */\n constructor(\n node: Node,\n ...listTypes: (\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered\n )[]\n ) {\n if (!node) {\n throw new Error('node must not be null');\n }\n\n this.node = safeInstanceOf(node, 'HTMLLIElement')\n ? node\n : (wrap(node, KnownCreateElementDataIndex.BlockListItem) as HTMLLIElement);\n const display = this.node.style.display;\n\n this.dummy = display != 'list-item' && display != '';\n\n // Always add a None list type in front of all other types to represent non-list scenario.\n this.listTypes = [ListType.None, ...listTypes];\n }\n\n /**\n * Get type of current list item\n */\n getListType(): ListType | CompatibleListType {\n return this.listTypes[this.listTypes.length - 1];\n }\n\n /**\n * Get the levels of this list item.\n */\n getLevel(): number {\n return this.listTypes.length - 1;\n }\n\n /**\n * Get DOM node of this list item\n */\n getNode(): HTMLLIElement {\n return this.node;\n }\n\n /**\n * Get the Start Number of the new List\n */\n getNewListStart(): number | undefined {\n return this.newListStart;\n }\n\n /**\n * Check if a given node is contained by this list item\n * @param node The node to check\n */\n contains(node: Node): boolean {\n return contains(this.node, node, true /*treatSameNodeAsContain*/);\n }\n\n /**\n * Check if this item is a dummy item.\n * A dummy item is also represented by LI tag, but it won't render a bullet (for Unordered list) or a number (for Ordered list)\n * normally it has CSS style display set to a value other than \"list-item\"\n */\n isDummy() {\n return this.dummy;\n }\n\n /**\n * @deprecated Always return false\n */\n isOrphanItem(): boolean {\n return false;\n }\n\n /**\n * @deprecated\n */\n canMerge(item: VListItem): boolean {\n if (!item?.isOrphanItem() || this.listTypes.length != item.listTypes.length) {\n return false;\n }\n\n return this.listTypes.every((type, index) => item.listTypes[index] == type);\n }\n\n /**\n * @deprecated\n */\n mergeItems(items: VListItem[]) {\n const nodesToWrap = items?.map(item => item.node) || [];\n const targetNodes = wrapIfNotBlockNode(\n nodesToWrap,\n true /*checkFirst*/,\n false /*checkLast*/\n );\n targetNodes.forEach(node => this.node.appendChild(node));\n }\n\n /**\n * Indent this item\n * If this is not an list item, it will be no op\n */\n indent() {\n if (this.node.style.marginLeft == NEGATIVE_MARGIN) {\n this.node.style.margin = '';\n this.node.style.marginLeft = '';\n return;\n }\n\n const listType = this.getListType();\n if (listType != ListType.None) {\n this.listTypes.push(listType);\n }\n }\n\n /**\n * Outdent this item\n * If this item is already not an list item, it will be no op\n * @param preventItemRemoval Whether prevent the list item to be removed for the listItem by default false\n */\n outdent(preventItemRemoval: boolean = false) {\n const expectedLength = preventItemRemoval ? 2 : 1;\n if (this.listTypes.length > expectedLength) {\n this.listTypes.pop();\n }\n }\n\n /**\n * Add negative margin to the List item\n */\n addNegativeMargins() {\n this.node.style.margin = MARGIN_BASE;\n this.node.style.marginLeft = NEGATIVE_MARGIN;\n }\n\n /**\n * Change list type of this item\n * @param targetType The target list type to change to\n */\n changeListType(targetType: ListType | CompatibleListType) {\n if (targetType == ListType.None) {\n this.listTypes = [targetType];\n } else {\n this.outdent();\n this.listTypes.push(targetType);\n }\n }\n\n /**\n * Set whether the item is a dummy item\n * @param isDummy Whether the item is a dummy item\n */\n setIsDummy(isDummy: boolean) {\n this.dummy = isDummy;\n }\n\n /**\n * Set the start Number of the new list\n * @param isDummy Whether the item is a dummy item\n */\n setNewListStart(startNumber: number) {\n this.newListStart = startNumber;\n }\n\n /**\n * Apply the list style type\n * @param rootList the vList that receives the style\n * @param index the list item index\n */\n applyListStyle(rootList: HTMLOListElement | HTMLUListElement, index: number) {\n const style = getMetadata(rootList, ListStyleDefinitionMetadata);\n // The list just need to be styled if it is at top level, so the listType length for this Vlist must be 2.\n const isFirstLevel = this.listTypes.length < 3;\n if (style) {\n if (\n isFirstLevel &&\n this.listTypes[1] === ListType.Unordered &&\n style.unorderedStyleType\n ) {\n setBulletListMarkers(this.node, style.unorderedStyleType);\n } else if (\n isFirstLevel &&\n this.listTypes[1] === ListType.Ordered &&\n style.orderedStyleType\n ) {\n setNumberingListMarkers(this.node, style.orderedStyleType, index);\n } else {\n this.node.style.removeProperty('list-style-type');\n }\n }\n }\n\n /**\n * Write the change result back into DOM\n * @param listStack current stack of list elements\n * @param originalRoot Original list root element. It will be reused when write back if possible\n * @param shouldReuseAllAncestorListElements Optional - defaults to false. If true, only make\n * sure the direct parent of this list matches the list types when writing back.\n */\n writeBack(\n listStack: Node[],\n originalRoot?: HTMLOListElement | HTMLUListElement,\n shouldReuseAllAncestorListElements: boolean = false\n ) {\n let nextLevel = 1;\n\n if (shouldReuseAllAncestorListElements) {\n // Remove any un-needed lists from the stack.\n if (listStack.length > this.listTypes.length) {\n listStack.splice(this.listTypes.length);\n }\n\n // 1. If the listStack is the same length as the listTypes for this item, check\n // if the last item needs to change, and remove it if needed. We can always re-use\n // the other lists even if the type doesn't match - since the display is the same\n // as long as the list immediately surrounding the item is correct.\n const listStackEndIndex = listStack.length - 1;\n if (\n listStackEndIndex === this.listTypes.length - 1 && // they are the same length\n getListTypeFromNode(listStack[listStackEndIndex]) !==\n this.listTypes[listStackEndIndex]\n ) {\n listStack.splice(listStackEndIndex);\n }\n\n nextLevel = listStack.length;\n } else {\n // 1. Determine list elements that we can reuse\n // e.g.:\n // passed in listStack: Fragment > OL > UL > OL\n // local listTypes: null > OL > UL > UL > OL\n // then Fragment > OL > UL can be reused\n for (; nextLevel < listStack.length; nextLevel++) {\n if (getListTypeFromNode(listStack[nextLevel]) !== this.listTypes[nextLevel]) {\n listStack.splice(nextLevel);\n break;\n }\n }\n }\n\n // 2. Add new list elements\n // e.g.:\n // passed in listStack: Fragment > OL > UL\n // local listTypes: null > OL > UL > UL > OL\n // then we need to create a UL and a OL tag\n for (; nextLevel < this.listTypes.length; nextLevel++) {\n const stackLength = listStack.length - 1;\n const newList = createListElement(\n listStack[0],\n this.listTypes[nextLevel],\n nextLevel,\n originalRoot\n );\n\n listStack[stackLength].appendChild(newList);\n listStack.push(newList);\n\n //If the current node parent is in the same deep child index,\n //apply the styles of the current parent list to the new list\n if (this.getDeepChildIndex(originalRoot) == stackLength) {\n const listStyleType = this.node.parentElement?.style.listStyleType;\n if (\n listStyleType &&\n getTagOfNode(this.node.parentElement) === getTagOfNode(newList)\n ) {\n newList.style.listStyleType = listStyleType;\n }\n }\n }\n // 3. Add current node into deepest list element\n listStack[listStack.length - 1].appendChild(this.node);\n this.node.style.setProperty('display', this.dummy ? 'block' : null);\n\n // 4. Inherit styles of the child element to the li, so we are able to apply the styles to the ::marker\n if (this.listTypes.length > 1) {\n setListItemStyle(this.node, stylesToInherit, true /*isCssStyle*/);\n setListItemStyle(this.node, attrsToInherit, false /*isCssStyle*/);\n }\n\n // 5. If this is not a list item now, need to unwrap the LI node and do proper handling\n if (this.listTypes.length <= 1) {\n // If original
                          4. node has styles for font and color, we need to apply it to new parent\n const isLi = getTagOfNode(this.node) == 'LI';\n const stylesToApply = isLi\n ? {\n 'font-family': this.node.style.fontFamily,\n 'font-size': this.node.style.fontSize,\n color: this.node.style.color,\n }\n : undefined;\n\n const childNodes = isLi ? getChildrenAndUnwrap(this.node) : [this.node];\n\n if (stylesToApply) {\n for (let i = 0; i < childNodes.length; i++) {\n if (safeInstanceOf(childNodes[i], 'Text')) {\n childNodes[i] = wrap(childNodes[i], 'span');\n }\n\n const node = childNodes[i];\n\n if (safeInstanceOf(node, 'HTMLElement')) {\n const styles = {\n ...stylesToApply,\n ...getStyles(node),\n };\n setStyles(node, styles);\n\n attrsToInherit.forEach(attr => {\n const attrValue = this.node.getAttribute(attr);\n\n if (attrValue) {\n node.setAttribute(attr, attrValue);\n }\n });\n }\n }\n }\n\n wrapIfNotBlockNode(childNodes, true /*checkFirst*/, true /*checkLast*/);\n }\n }\n\n /**\n * Get the index of how deep is the current node parent list inside of the original root list.\n * @example In the following structure this function would return 2\n * ```html\n *
                              \n *
                                \n *
                                  \n *
                                1. \n *
                                \n *
                              \n *
                            \n * ```\n * @param originalRoot The root list\n * @returns -1 if the node does not have parent element or if original root was not provided,\n * else, how deep is the parent element inside of the original root.\n */\n private getDeepChildIndex(originalRoot: HTMLOListElement | HTMLUListElement | undefined) {\n let parentElement = this.node.parentElement;\n if (originalRoot && parentElement) {\n let deepIndex = 0;\n while (parentElement && parentElement != originalRoot) {\n deepIndex++;\n parentElement = parentElement?.parentElement || null;\n }\n return deepIndex;\n }\n return -1;\n }\n}\n\nfunction createListElement(\n newRoot: Node,\n listType: ListType | CompatibleListType,\n nextLevel: number,\n originalRoot?: HTMLOListElement | HTMLUListElement\n): HTMLOListElement | HTMLUListElement {\n const doc = newRoot.ownerDocument!;\n let result: HTMLOListElement | HTMLUListElement;\n\n // Try to reuse the existing root element\n // It can be reused when\n // 1. Current list item is level 1 (top level), AND\n // 2. Original root exists, AND\n // 3. They have the same list type AND\n // 4. The original root is not used yet\n if (nextLevel == 1 && originalRoot && listType == getListTypeFromNode(originalRoot)) {\n if (contains(newRoot, originalRoot)) {\n // If it is already used, let's clone one and remove ID to avoid duplicating ID\n result = originalRoot.cloneNode(false /*deep*/) as HTMLOListElement | HTMLUListElement;\n (result).removeAttribute('id');\n } else {\n // Remove all child nodes, they will be added back later when write back other items\n moveChildNodes(originalRoot);\n result = originalRoot;\n }\n } else {\n // Can't be reused, can't clone, let's create a new one\n result = doc.createElement(listType == ListType.Ordered ? 'ol' : 'ul');\n }\n\n // Always maintain the metadata saved in the list\n if (originalRoot && nextLevel == 1 && listType != getListTypeFromNode(originalRoot)) {\n const style = getMetadata(originalRoot, ListStyleDefinitionMetadata);\n if (style) {\n setMetadata(result, style, ListStyleDefinitionMetadata);\n }\n }\n\n if (listType == ListType.Ordered && nextLevel > 1) {\n result.style.setProperty(\n 'list-style-type',\n orderListStyles[(nextLevel - 1) % orderListStyles.length]\n );\n }\n\n if (listType == ListType.Unordered && nextLevel > 1) {\n result.style.setProperty(\n 'list-style-type',\n unorderedListStyles[(nextLevel - 1) % unorderedListStyles.length]\n );\n }\n\n return result;\n}\n\nfunction wrapIfNotBlockNode(nodes: Node[], checkFirst: boolean, checkLast: boolean): Node[] {\n if (\n nodes.length > 0 &&\n (!checkFirst || !isBlockElement(nodes[0])) &&\n (!checkLast || !isBlockElement(nodes[nodes.length]))\n ) {\n nodes = [wrap(nodes)];\n }\n\n return nodes;\n}\n\nfunction getChildrenAndUnwrap(node: Node): Node[] {\n const result = toArray(node.childNodes);\n unwrap(node);\n return result;\n}\n","const ALPHABET: Record = {\n 0: 'A',\n 1: 'B',\n 2: 'C',\n 3: 'D',\n 4: 'E',\n 5: 'F',\n 6: 'G',\n 7: 'H',\n 8: 'I',\n 9: 'J',\n 10: 'K',\n 11: 'L',\n 12: 'M',\n 13: 'N',\n 14: 'O',\n 15: 'P',\n 16: 'Q',\n 17: 'R',\n 18: 'S',\n 19: 'T',\n 20: 'U',\n 21: 'V',\n 22: 'W',\n 23: 'X',\n 24: 'Y',\n 25: 'Z',\n};\n\n/**\n * @internal\n * Convert decimal numbers into english alphabet letters\n * @param decimal The decimal number that needs to be converted\n * @param isLowerCase if true the roman value will appear in lower case\n * @returns\n */\nexport default function convertDecimalsToAlpha(decimal: number, isLowerCase?: boolean): string {\n let alpha = '';\n while (decimal >= 0) {\n alpha = ALPHABET[decimal % 26] + alpha;\n decimal = Math.floor(decimal / 26) - 1;\n }\n return isLowerCase ? alpha.toLowerCase() : alpha;\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\nconst RomanValues: Record = {\n M: 1000,\n CM: 900,\n D: 500,\n CD: 400,\n C: 100,\n XC: 90,\n L: 50,\n XL: 40,\n X: 10,\n IX: 9,\n V: 5,\n IV: 4,\n I: 1,\n};\n\n/**\n * @internal\n * Convert decimal numbers into roman numbers\n * @param decimal The decimal number that needs to be converted\n * @param isLowerCase if true the roman value will appear in lower case\n * @returns\n */\nexport default function convertDecimalsToRoman(decimal: number, isLowerCase?: boolean) {\n let romanValue = '';\n for (let i of getObjectKeys(RomanValues)) {\n let timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);\n decimal = decimal - timesRomanCharAppear * RomanValues[i];\n romanValue = romanValue + i.repeat(timesRomanCharAppear);\n }\n return isLowerCase ? romanValue.toLocaleLowerCase() : romanValue;\n}\n","import createElement from '../utils/createElement';\nimport getRootListNode from './getRootListNode';\nimport getSelectedBlockElementsInRegion from '../region/getSelectedBlockElementsInRegion';\nimport isNodeInRegion from '../region/isNodeInRegion';\nimport Position from '../selection/Position';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport shouldSkipNode from '../utils/shouldSkipNode';\nimport toArray from '../jsUtils/toArray';\nimport VList from './VList';\nimport wrap from '../utils/wrap';\nimport { getLeafSibling } from '../utils/getLeafSibling';\nimport { isListElement } from './getListTypeFromNode';\nimport {\n KnownCreateElementDataIndex,\n ListType,\n Region,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ListSelector = 'ol,ul';\n\n/**\n * Create a VList object from the given region.\n * @param region The region to get VList from\n * @param includeSiblingLists True to also try get lists before and after the selection and merge them together,\n * false to only include the list for the selected blocks\n * @param startNode (Optional) When specified, try get VList which will contain this node.\n * If not specified, get VList from selection of this region\n */\nexport default function createVListFromRegion(\n region: Region,\n includeSiblingLists?: boolean,\n startNode?: Node\n): VList | null {\n if (!region) {\n return null;\n }\n\n let nodes: Node[] = [];\n\n if (startNode) {\n const list = getRootListNode(region, ListSelector, startNode);\n if (list) {\n nodes.push(list);\n }\n } else {\n const blocks = getSelectedBlockElementsInRegion(\n region,\n undefined,\n true /* shouldApplyFormatToSpan */\n );\n blocks.forEach(block => {\n const list = getRootListNode(region, ListSelector, block.getStartNode());\n\n if (list) {\n if (nodes[nodes.length - 1] != list) {\n nodes.push(list);\n }\n if (\n nodes.length == 1 &&\n safeInstanceOf(list, 'HTMLOListElement') &&\n list.start > 1\n ) {\n // Do not include sibling lists if this list is not start from 1\n includeSiblingLists = false;\n }\n } else {\n nodes.push(block.collapseToSingleElement());\n }\n });\n\n if (nodes.length == 0 && !region.rootNode.firstChild) {\n const newNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n region.rootNode.ownerDocument\n )!;\n region.rootNode.appendChild(newNode);\n nodes.push(newNode);\n region.fullSelectionStart = new Position(newNode, PositionType.Begin);\n region.fullSelectionEnd = new Position(newNode, PositionType.End);\n }\n\n if (includeSiblingLists) {\n tryIncludeSiblingNode(region, nodes, false /*isNext*/);\n tryIncludeSiblingNode(region, nodes, true /*isNext*/);\n }\n\n nodes = nodes.filter(node => !shouldSkipNode(node, true /*ignoreSpace*/));\n }\n\n let vList: VList | null = null;\n\n if (nodes.length > 0) {\n const firstNode = nodes.shift() || null;\n vList = isListElement(firstNode)\n ? new VList(firstNode)\n : firstNode\n ? createVListFromItemNode(firstNode)\n : null;\n\n if (vList) {\n nodes.forEach(node => {\n if (isListElement(node)) {\n vList!.mergeVList(new VList(node));\n } else {\n vList!.appendItem(node, ListType.None);\n }\n });\n }\n }\n\n return vList;\n}\n\nfunction tryIncludeSiblingNode(region: Region, nodes: Node[], isNext: boolean) {\n let node: Node | null = nodes[isNext ? nodes.length - 1 : 0];\n node = getLeafSibling(region.rootNode, node, isNext, region.skipTags, true /*ignoreSpace*/);\n node = getRootListNode(region, ListSelector, node);\n if (isNodeInRegion(region, node) && isListElement(node)) {\n if (isNext) {\n if (!safeInstanceOf(node, 'HTMLOListElement') || node.start == 1) {\n // Only include sibling list when\n // 1. This is a unordered list, OR\n // 2. This list starts from 1\n nodes.push(node);\n }\n } else {\n nodes.unshift(node);\n }\n }\n}\n\nfunction createVListFromItemNode(node: Node): VList {\n // Wrap all child nodes under a single one, and put the new list under original root node\n // so that the list can carry over styles under the root node.\n const childNodes = toArray(node.childNodes);\n const nodeForItem = childNodes.length == 1 ? childNodes[0] : wrap(childNodes, 'SPAN');\n\n // Create a temporary OL root element for this list.\n const listNode = node.ownerDocument!.createElement('ol'); // Either OL or UL is ok here\n node.appendChild(listNode);\n\n // Create the VList and append items\n const vList = new VList(listNode);\n vList.appendItem(nodeForItem, ListType.None);\n\n return vList;\n}\n","import getTagOfNode from '../utils/getTagOfNode';\nimport { ListType } from 'roosterjs-editor-types';\nimport type { CompatibleListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Get list type from a list element. The result will be either Ordered or Unordered ListType\n * @param listElement the element to get list type from\n */\nexport default function getListTypeFromNode(\n listElement: HTMLOListElement | HTMLUListElement\n):\n | ListType.Ordered\n | ListType.Unordered\n | CompatibleListType.Ordered\n | CompatibleListType.Unordered;\n\n/**\n * @internal\n * Get list type from a DOM node. It is possible to return ListType.None\n * @param node the node to get list type from\n */\nexport default function getListTypeFromNode(node: Node | null): ListType | CompatibleListType;\n\nexport default function getListTypeFromNode(node: Node | null): ListType | CompatibleListType {\n switch (getTagOfNode(node)) {\n case 'OL':\n return ListType.Ordered;\n case 'UL':\n return ListType.Unordered;\n default:\n return ListType.None;\n }\n}\n\n/**\n * @internal\n * Check if the given DOM node is a list element (OL or UL)\n * @param node The node to check\n */\nexport function isListElement(node: Node | null): node is HTMLUListElement | HTMLOListElement {\n return getListTypeFromNode(node) != ListType.None;\n}\n","import findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport { RegionBase } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * A type map from selector string to HTML element type\n */\nexport interface SelectorToTypeMap {\n ol: HTMLOListElement;\n ul: HTMLUListElement;\n 'ol,ul': HTMLOListElement | HTMLUListElement;\n}\n\n/**\n * @internal\n * Get Root list node from the given node within the given region\n * @param region Region to scope the search into\n * @param selector The selector to search\n * @param node The start node\n */\nexport default function getRootListNode(\n region: RegionBase,\n selector: TSelector,\n node: Node | null\n): SelectorToTypeMap[TSelector] {\n let list =\n region &&\n (findClosestElementAncestor(\n node,\n region.rootNode,\n selector\n ) as SelectorToTypeMap[TSelector]);\n\n if (list) {\n let ancestor: SelectorToTypeMap[TSelector];\n while (\n (ancestor = findClosestElementAncestor(\n list.parentNode,\n region.rootNode,\n selector\n ) as SelectorToTypeMap[TSelector])\n ) {\n list = ancestor;\n }\n }\n\n return list;\n}\n","import { BulletListType } from 'roosterjs-editor-types';\nimport type { CompatibleBulletListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * @internal\n * Set the marker of a bullet list\n * @param li\n * @param listStyleType\n */\nexport default function setBulletListMarkers(\n li: HTMLLIElement,\n listStyleType: BulletListType | CompatibleBulletListType\n) {\n const marker = bulletListStyle[listStyleType];\n const isDisc = listStyleType === BulletListType.Disc;\n li.style.listStyleType = isDisc ? marker : `\"${marker}\"`;\n}\n\nconst bulletListStyle: Record = {\n [BulletListType.Disc]: 'disc',\n [BulletListType.Square]: '∎ ',\n [BulletListType.Dash]: '- ',\n [BulletListType.LongArrow]: '➔ ',\n [BulletListType.DoubleLongArrow]: '➔ ',\n [BulletListType.ShortArrow]: '➢ ',\n [BulletListType.UnfilledArrow]: '➪ ',\n [BulletListType.Hyphen]: '— ',\n};\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { InlineElement } from 'roosterjs-editor-types';\n\n/**\n * Set the Style of a List Item provided, with the styles that the inline child elements have\n * If the child inline elements have different styles, it will not modify the styles of the list item\n * @param element the LI Element to set the styles\n * @param styles The styles that should be applied to the element.\n * @param isCssStyle True means the given styles are CSS style names, false means they are HTML attributes @default true\n */\nexport default function setListItemStyle(\n element: HTMLLIElement,\n styles: string[],\n isCssStyle: boolean = true\n) {\n const elementsStyles = getInlineChildElementsStyle(element, styles, isCssStyle);\n\n styles.forEach(styleName => {\n const styleValues = elementsStyles.map(style =>\n style[styleName] !== undefined ? style[styleName] : ''\n );\n\n if (\n styleValues &&\n (styleValues.length == 1 || new Set(styleValues).size == 1) &&\n styleValues[0]\n ) {\n if (isCssStyle) {\n element.style.setProperty(styleName, styleValues[0]);\n } else {\n element.setAttribute(styleName, styleValues[0]);\n }\n }\n });\n}\n\nfunction getInlineChildElementsStyle(element: HTMLElement, styles: string[], isCssStyle: boolean) {\n const result: Record[] = [];\n const contentTraverser = ContentTraverser.createBodyTraverser(element);\n let currentInlineElement: InlineElement | null = null;\n\n while (contentTraverser.currentInlineElement != currentInlineElement) {\n currentInlineElement = contentTraverser.currentInlineElement;\n let currentNode = currentInlineElement?.getContainerNode() || null;\n let currentStyle: Record | null = null;\n\n currentNode = currentNode ? findClosestElementAncestor(currentNode) : null;\n\n // we should consider of when it is the single child node of element, the parentNode's style should add\n // such as the \"i\", \"b\", \"span\" node in
                          5. aa
                          6. \n while (\n currentNode &&\n currentNode !== element &&\n safeInstanceOf(currentNode, 'HTMLElement') &&\n (result.length == 0 || (currentNode.textContent?.trim().length || 0) > 0)\n ) {\n const element: HTMLElement = currentNode;\n\n styles.forEach(styleName => {\n const styleValue = isCssStyle\n ? element.style.getPropertyValue(styleName)\n : element.getAttribute(styleName);\n\n if (!currentStyle) {\n currentStyle = {};\n }\n\n if (styleValue && !currentStyle[styleName]) {\n currentStyle[styleName] = styleValue;\n }\n });\n\n if (currentNode?.parentNode?.childNodes.length === 1) {\n currentNode = currentNode.parentNode;\n } else {\n currentNode = null;\n }\n }\n\n if (currentStyle) {\n result.push(currentStyle);\n }\n\n contentTraverser.getNextInlineElement();\n }\n\n return result;\n}\n","import convertDecimalsToAlpha from './convertDecimalsToAlpha';\nimport convertDecimalsToRoman from './convertDecimalsToRomans';\nimport { NumberingListType } from 'roosterjs-editor-types';\nimport type { CompatibleNumberingListType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\ninterface MarkerStyle {\n markerType: number;\n markerSeparator: string;\n markerSecondSeparator?: string;\n lowerCase?: boolean;\n}\n\nenum MarkerTypes {\n Decimal,\n Roman,\n Alpha,\n}\n\n/**\n * @internal\n * Set marker style of a numbering list\n * @param listStyleType\n * @param li\n */\nexport default function setNumberingListMarkers(\n li: HTMLLIElement,\n listStyleType: NumberingListType | CompatibleNumberingListType,\n level: number\n) {\n const { markerSeparator, markerSecondSeparator, markerType, lowerCase } = numberingListStyle[\n listStyleType\n ];\n\n let markerNumber = level.toString();\n if (markerType === MarkerTypes.Roman) {\n markerNumber = convertDecimalsToRoman(level, lowerCase);\n } else if (markerType === MarkerTypes.Alpha) {\n markerNumber = convertDecimalsToAlpha(level - 1, lowerCase);\n }\n\n const marker = markerSecondSeparator\n ? markerSecondSeparator + markerNumber + markerSeparator\n : markerNumber + markerSeparator;\n\n li.style.listStyleType = `\"${marker}\"`;\n}\n\nconst numberingListStyle: Record = {\n [NumberingListType.Decimal]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: '. ',\n },\n [NumberingListType.DecimalDash]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: '- ',\n },\n [NumberingListType.DecimalParenthesis]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: ') ',\n },\n [NumberingListType.DecimalDoubleParenthesis]: {\n markerType: MarkerTypes.Decimal,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n [NumberingListType.LowerAlpha]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '. ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaDash]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '- ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n lowerCase: true,\n },\n [NumberingListType.LowerAlphaDoubleParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n lowerCase: true,\n },\n [NumberingListType.UpperAlpha]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '. ',\n },\n [NumberingListType.UpperAlphaDash]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: '- ',\n },\n [NumberingListType.UpperAlphaParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n },\n [NumberingListType.UpperAlphaDoubleParenthesis]: {\n markerType: MarkerTypes.Alpha,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n [NumberingListType.LowerRoman]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '. ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanDash]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '- ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n lowerCase: true,\n },\n [NumberingListType.LowerRomanDoubleParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n lowerCase: true,\n },\n [NumberingListType.UpperRoman]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '. ',\n },\n [NumberingListType.UpperRomanDash]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: '- ',\n },\n [NumberingListType.UpperRomanParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n },\n [NumberingListType.UpperRomanDoubleParenthesis]: {\n markerType: MarkerTypes.Roman,\n markerSeparator: ') ',\n markerSecondSeparator: '(',\n },\n};\n","import {\n Definition,\n DefinitionType,\n NumberDefinition,\n ArrayDefinition,\n BooleanDefinition,\n StringDefinition,\n ObjectDefinition,\n ObjectPropertyDefinition,\n} from 'roosterjs-editor-types';\n\n/**\n * Create a number definition\n * @param isOptional Whether this property is optional\n * @param value Optional value of the number\n * @param minValue Optional minimum value\n * @param maxValue Optional maximum value\n * @param allowNull Allow the property to be null\n * @returns The number definition object\n */\nexport function createNumberDefinition(\n isOptional?: boolean,\n value?: number,\n minValue?: number,\n maxValue?: number,\n allowNull?: boolean\n): NumberDefinition {\n return {\n type: DefinitionType.Number,\n isOptional,\n value,\n maxValue,\n minValue,\n allowNull,\n };\n}\n\n/**\n * Create a boolean definition\n * @param isOptional Whether this property is optional\n * @param value Optional expected boolean value\n * @param allowNull Allow the property to be null\n * @returns The boolean definition object\n */\nexport function createBooleanDefinition(\n isOptional?: boolean,\n value?: boolean,\n allowNull?: boolean\n): BooleanDefinition {\n return {\n type: DefinitionType.Boolean,\n isOptional,\n value,\n allowNull,\n };\n}\n\n/**\n * Create a string definition\n * @param isOptional Whether this property is optional\n * @param value Optional expected string value\n * @param allowNull Allow the property to be null\n * @returns The string definition object\n */\nexport function createStringDefinition(\n isOptional?: boolean,\n value?: string,\n allowNull?: boolean\n): StringDefinition {\n return {\n type: DefinitionType.String,\n isOptional,\n value,\n allowNull,\n };\n}\n\n/**\n * Create an array definition\n * @param itemDef Definition of each item of the related array\n * @param isOptional Whether this property is optional\n * @param allowNull Allow the property to be null\n * @returns The array definition object\n */\nexport function createArrayDefinition(\n itemDef: Definition,\n isOptional?: boolean,\n minLength?: number,\n maxLength?: number,\n allowNull?: boolean\n): ArrayDefinition {\n return {\n type: DefinitionType.Array,\n isOptional,\n itemDef,\n minLength,\n maxLength,\n allowNull,\n };\n}\n\n/**\n * Create an object definition\n * @param propertyDef Definition of each property of the related object\n * @param isOptional Whether this property is optional\n * @param allowNull Allow the property to be null\n * @returns The object definition object\n */\nexport function createObjectDefinition(\n propertyDef: ObjectPropertyDefinition,\n isOptional?: boolean,\n allowNull?: boolean\n): ObjectDefinition {\n return {\n type: DefinitionType.Object,\n isOptional,\n propertyDef,\n allowNull,\n };\n}\n","import validate from './validate';\nimport { Definition } from 'roosterjs-editor-types';\n\nconst MetadataDataSetName = 'editingInfo';\n\n/**\n * Get metadata object from an HTML element\n * @param element The HTML element to get metadata object from\n * @param definition The type definition of this metadata used for validate this metadata object.\n * If not specified, no validation will be performed and always return whatever we get from the element\n * @param defaultValue The default value to return if the retrieved object cannot pass the validation,\n * or there is no metadata object at all\n * @returns The strong-type metadata object if it can be validated, or null\n */\nexport function getMetadata(\n element: HTMLElement,\n definition?: Definition,\n defaultValue?: T\n): 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 if (!definition) {\n return obj as T;\n } else if (validate(obj, definition)) {\n return obj;\n }\n }\n\n if (defaultValue) {\n return defaultValue;\n } else {\n return null;\n }\n}\n\n/**\n * Set metadata object into an HTML element\n * @param element The HTML element to set metadata object to\n * @param metadata The metadata object to set\n * @param def An optional type definition object used for validate this metadata object.\n * If not specified, metadata will be set without validation\n * @returns True if metadata is set, otherwise false\n */\nexport function setMetadata(element: HTMLElement, metadata: T, def?: Definition): boolean {\n if (!def || validate(metadata, def)) {\n element.dataset[MetadataDataSetName] = JSON.stringify(metadata);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Remove metadata from the given element if any\n * @param element The element to remove metadata from\n * @param metadataKey The metadata key to remove, if none provided it will delete all metadata\n */\nexport function removeMetadata(element: HTMLElement, metadataKey?: string) {\n if (metadataKey) {\n const currentMetadata: any = getMetadata(element);\n if (currentMetadata) {\n delete currentMetadata[metadataKey];\n element.dataset[MetadataDataSetName] = JSON.stringify(currentMetadata);\n }\n } else {\n delete element.dataset[MetadataDataSetName];\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport { Definition, DefinitionType } from 'roosterjs-editor-types';\n\n/**\n * Validate the given object with a type definition object\n * @param input The object to validate\n * @param def The type definition object used for validation\n * @returns True if the object passed the validation, otherwise false\n */\nexport default function validate(input: any, def: Definition): input is T {\n let result = false;\n if ((def.isOptional && typeof input === 'undefined') || (def.allowNull && input === null)) {\n result = true;\n } else if (\n (!def.isOptional && typeof input === 'undefined') ||\n (!def.allowNull && input === null)\n ) {\n return false;\n } else {\n switch (def.type) {\n case DefinitionType.String:\n result =\n typeof input === 'string' &&\n (typeof def.value === 'undefined' || input === def.value);\n break;\n\n case DefinitionType.Number:\n result =\n typeof input === 'number' &&\n (typeof def.value === 'undefined' || areSameNumbers(def.value, input)) &&\n (typeof def.minValue === 'undefined' || input >= def.minValue) &&\n (typeof def.maxValue === 'undefined' || input <= def.maxValue);\n break;\n\n case DefinitionType.Boolean:\n result =\n typeof input === 'boolean' &&\n (typeof def.value === 'undefined' || input === def.value);\n break;\n\n case DefinitionType.Array:\n result =\n Array.isArray(input) &&\n (typeof def.minLength === 'undefined' || input.length >= def.minLength) &&\n (typeof def.maxLength === 'undefined' || input.length <= def.maxLength) &&\n input.every(x => validate(x, def.itemDef));\n break;\n\n case DefinitionType.Object:\n result =\n typeof input === 'object' &&\n getObjectKeys(def.propertyDef).every(x =>\n validate(input[x], def.propertyDef[x])\n );\n break;\n\n case DefinitionType.Customize:\n result = def.validator(input);\n break;\n }\n }\n\n return result;\n}\n\nfunction areSameNumbers(n1: number, n2: number) {\n return Math.abs(n1 - n2) < 1e-3;\n}\n","/**\n * @internal\n * Node attribute used to identify if the content is from Google Sheets.\n */\nexport const GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n/**\n * @internal\n * Name of the HTMLMeta Property that provides the Office App Source of the pasted content\n */\nexport const PROG_ID_NAME = 'ProgId';\n/**\n * @internal\n * Name of the HTMLMeta Property that identifies pated content as from Excel Desktop\n */\nexport const EXCEL_DESKTOP_ATTRIBUTE_NAME = 'xmlns:x';\n","import type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst WORD_ONLINE_TABLE_TEMP_ELEMENT_CLASSES = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n];\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer,' +\n WORD_ONLINE_TABLE_TEMP_ELEMENT_CLASSES.map(c => `table div[class^=\"${c}\"]`).join(',');\n\n/**\n * @internal\n * Check whether the fragment provided contain Wac Elements\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst documentContainWacElements: getSourceFunction = (props: getSourceInputParams) => {\n const { fragment } = props;\n return !!fragment.querySelector(WAC_IDENTIFY_SELECTOR);\n};\nexport default documentContainWacElements;\n","import documentContainWacElements from './documentContainWacElements';\nimport isExcelDesktopDocument from './isExcelDesktopDocument';\nimport isExcelOnlineDocument from './isExcelOnlineDocument';\nimport isGoogleSheetDocument from './isGoogleSheetDocument';\nimport isPowerPointDesktopDocument from './isPowerPointDesktopDocument';\nimport isWordDesktopDocument from './isWordDesktopDocument';\nimport shouldConvertToSingleImage from './shouldConvertToSingleImage';\nimport { BeforePasteEvent, ClipboardData, KnownPasteSourceType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport type getSourceInputParams = {\n htmlAttributes: Record;\n fragment: DocumentFragment;\n shouldConvertSingleImage: boolean;\n clipboardData: ClipboardData;\n};\n\n/**\n * @internal\n */\nexport type getSourceFunction = (props: getSourceInputParams) => boolean;\n\nconst getSourceFunctions = new Map([\n [KnownPasteSourceType.WordDesktop, isWordDesktopDocument],\n [KnownPasteSourceType.ExcelDesktop, isExcelDesktopDocument],\n [KnownPasteSourceType.ExcelOnline, isExcelOnlineDocument],\n [KnownPasteSourceType.PowerPointDesktop, isPowerPointDesktopDocument],\n [KnownPasteSourceType.WacComponents, documentContainWacElements],\n [KnownPasteSourceType.GoogleSheets, isGoogleSheetDocument],\n [KnownPasteSourceType.SingleImage, shouldConvertToSingleImage],\n]);\n\n/**\n * This function tries to get the source of the Pasted content\n * @param event the before paste event\n * @param shouldConvertSingleImage Whether convert single image is enabled.\n * @returns The Type of pasted content, if no type found will return {KnownSourceType.Default}\n */\nexport default function getPasteSource(\n event: BeforePasteEvent,\n shouldConvertSingleImage: boolean\n): KnownPasteSourceType {\n const { htmlAttributes, clipboardData, fragment } = event;\n\n let result: KnownPasteSourceType | null = null;\n const param: getSourceInputParams = {\n htmlAttributes,\n fragment,\n shouldConvertSingleImage,\n clipboardData,\n };\n\n getSourceFunctions.forEach((func, key) => {\n if (!result && func(param)) {\n result = key;\n }\n });\n\n return result ?? KnownPasteSourceType.Default;\n}\n","import { EXCEL_DESKTOP_ATTRIBUTE_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst EXCEL_ATTRIBUTE_VALUE = 'urn:schemas-microsoft-com:office:excel';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Excel Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isExcelDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n // The presence of this attribute confirms its origin from Excel Desktop\n return htmlAttributes[EXCEL_DESKTOP_ATTRIBUTE_NAME] == EXCEL_ATTRIBUTE_VALUE;\n};\nexport default isExcelDesktopDocument;\n","import { EXCEL_DESKTOP_ATTRIBUTE_NAME, PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n// Excel Desktop also has this attribute\nconst EXCEL_ONLINE_ATTRIBUTE_VALUE = 'Excel.Sheet';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Excel Online documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isExcelOnlineDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n // The presence of Excel.Sheet confirms its origin from Excel, the absence of EXCEL_DESKTOP_ATTRIBUTE_NAME confirms it is from the Online version\n return (\n htmlAttributes[PROG_ID_NAME] == EXCEL_ONLINE_ATTRIBUTE_VALUE &&\n htmlAttributes[EXCEL_DESKTOP_ATTRIBUTE_NAME] == undefined\n );\n};\nexport default isExcelOnlineDocument;\n","import { GOOGLE_SHEET_NODE_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n/**\n * @internal\n * Checks whether the fragment provided contain elements from Google sheets\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isGoogleSheetDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { fragment } = props;\n return !!fragment.querySelector(GOOGLE_SHEET_NODE_NAME);\n};\n\nexport default isGoogleSheetDocument;\n","import { PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst POWERPOINT_ATTRIBUTE_VALUE = 'PowerPoint.Slide';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Power Point Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isPowerPointDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n return props.htmlAttributes[PROG_ID_NAME] == POWERPOINT_ATTRIBUTE_VALUE;\n};\nexport default isPowerPointDesktopDocument;\n","import { PROG_ID_NAME } from './constants';\nimport type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\nconst WORD_ATTRIBUTE_NAME = 'xmlns:w';\nconst WORD_ATTRIBUTE_VALUE = 'urn:schemas-microsoft-com:office:word';\nconst WORD_PROG_ID = 'Word.Document';\n\n/**\n * @internal\n * Checks whether the Array provided contains strings that identify Word Desktop documents\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst isWordDesktopDocument: getSourceFunction = (props: getSourceInputParams) => {\n const { htmlAttributes } = props;\n return (\n htmlAttributes[WORD_ATTRIBUTE_NAME] == WORD_ATTRIBUTE_VALUE ||\n htmlAttributes[PROG_ID_NAME] == WORD_PROG_ID\n );\n};\n\nexport default isWordDesktopDocument;\n","import type { getSourceFunction, getSourceInputParams } from './getPasteSource';\n\n/**\n * @internal\n * Checks whether the fragment only contains a single image to paste\n * and the editor have the ConvertSingleImageBody Experimental feature\n * @param props Properties related to the PasteEvent\n * @returns\n */\nconst shouldConvertToSingleImage: getSourceFunction = (props: getSourceInputParams) => {\n const { shouldConvertSingleImage, clipboardData } = props;\n return (\n shouldConvertSingleImage &&\n clipboardData.htmlFirstLevelChildTags?.length == 1 &&\n clipboardData.htmlFirstLevelChildTags[0] == 'IMG'\n );\n};\n\nexport default shouldConvertToSingleImage;\n","import collapseNode from '../utils/collapseNodes';\nimport isNodeInRegion from './isNodeInRegion';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport { BlockElement, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Collapse nodes within this region to their common ancestor node under this region\n * @param region The region to collapse nodes in.\n * @param nodesOrBlockElements Nodes or block elements to collapse. When take BlockElement[] as input,\n * start node of the first BlockElement and end node of the last BlockElement will be used as the nodes.\n * All nodes not contained by the given region will be ignored.\n */\nexport default function collapseNodesInRegion(\n region: RegionBase,\n nodesOrBlockElements: Node[] | BlockElement[]\n): Node[] {\n if (!nodesOrBlockElements || nodesOrBlockElements.length == 0) {\n return [];\n }\n\n let nodes = safeInstanceOf(nodesOrBlockElements[0], 'Node')\n ? nodesOrBlockElements\n : [\n nodesOrBlockElements[0].getStartNode(),\n (nodesOrBlockElements[nodesOrBlockElements.length - 1]).getEndNode(),\n ];\n\n nodes = nodes && nodes.filter(node => isNodeInRegion(region, node));\n\n const firstNode = nodes[0];\n const lastNode = nodes[nodes.length - 1];\n\n if (isNodeInRegion(region, firstNode) && isNodeInRegion(region, lastNode)) {\n return collapseNode(region.rootNode, firstNode, lastNode, true /*canSplitParent*/);\n } else {\n return [];\n }\n}\n","import contains from '../utils/contains';\nimport findClosestElementAncestor from '../utils/findClosestElementAncestor';\nimport Position from '../selection/Position';\nimport queryElements from '../utils/queryElements';\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\nimport { QueryScope, Region, RegionType } from 'roosterjs-editor-types';\nimport type { CompatibleRegionType } from 'roosterjs-editor-types/lib/compatibleTypes';\n\ninterface RegionTypeData {\n /**\n * Tags that child elements will be skipped\n */\n skipTags: string[];\n\n /**\n * Selector of outer node of a region\n */\n outerSelector: string;\n\n /**\n * Selector of inner node of a region\n */\n innerSelector: string;\n}\n\nconst regionTypeData: Record = {\n [RegionType.Table]: {\n skipTags: ['TABLE'],\n outerSelector: 'table',\n innerSelector: 'td,th',\n },\n};\n\n/**\n * Get regions impacted by the given range under the root node\n * @param root Root node to get regions from\n * @param range A selection range. Regions will be created according to this range. Each region will be\n * fully or partially covered by this range.\n * @param type Type of region. Currently we only support TABLE region.\n */\nexport default function getRegionsFromRange(\n root: HTMLElement,\n range: Range,\n type: RegionType | CompatibleRegionType\n): Region[] {\n let regions: Region[] = [];\n if (root && range) {\n const { innerSelector, skipTags } = regionTypeData[type];\n const boundaryTree = buildBoundaryTree(root, range, type);\n const start = findClosestElementAncestor(range.startContainer, root, innerSelector) || root;\n const end = findClosestElementAncestor(range.endContainer, root, innerSelector) || root;\n const creator = getRegionCreator(range, skipTags);\n [regions] = iterateNodes(creator, boundaryTree, start, end);\n }\n\n return regions.filter(r => !!r);\n}\n\n/**\n * @internal export for test only\n */\nexport function getRegionCreator(\n fullRange: Range,\n skipTags: string[]\n): (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => Region | null {\n const fullSelectionStart = Position.getStart(fullRange).normalize();\n const fullSelectionEnd = Position.getEnd(fullRange).normalize();\n return (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => {\n return areNodesValid(rootNode, nodeBefore, nodeAfter, skipTags)\n ? {\n rootNode,\n nodeBefore,\n nodeAfter,\n skipTags,\n fullSelectionStart,\n fullSelectionEnd,\n }\n : null;\n };\n}\n\n/**\n * This is a internal data structure used for build regions.\n * We firstly split the selection by some boundaries, then we can build region from these boundaries.\n */\ninterface Boundary {\n /**\n * inner node of this boundary\n */\n innerNode: HTMLElement;\n\n /**\n * Children of this boundary\n */\n children: {\n /**\n * Outer node of a boundary child\n */\n outerNode: Node;\n\n /**\n * Child boundaries\n */\n boundaries: Boundary[];\n }[];\n}\n\n/**\n * Step 1: Build boundary tree\n * @param root Root node of the whole scope, normally this will be the root of editable scope\n * @param range Existing selected full range\n * @param type Type of region to create\n */\nfunction buildBoundaryTree(\n root: HTMLElement,\n range: Range,\n type: RegionType | CompatibleRegionType\n): Boundary {\n const allBoundaries: Boundary[] = [{ innerNode: root, children: [] }];\n const { outerSelector, innerSelector } = regionTypeData[type];\n const inSelectionOuterNode = queryElements(\n root,\n outerSelector,\n null /*callback*/,\n QueryScope.InSelection,\n range\n );\n\n // According to https://www.w3.org/TR/selectors-api/#queryselectorall, the result of querySelectorAll\n // is in document order, which is what we expect. So we don't need to sort the result here.\n queryElements(\n root,\n innerSelector,\n thisInnerNode => {\n const thisOuterNode = findClosestElementAncestor(thisInnerNode, root, outerSelector);\n if (thisOuterNode && inSelectionOuterNode.indexOf(thisOuterNode) < 0) {\n const boundary: Boundary = { innerNode: thisInnerNode, children: [] };\n\n for (let i = allBoundaries.length - 1; i >= 0; i--) {\n const { innerNode, children } = allBoundaries[i];\n if (contains(innerNode, thisOuterNode)) {\n let child = children.filter(c => c.outerNode == thisOuterNode)[0];\n\n if (!child) {\n child = { outerNode: thisOuterNode, boundaries: [] };\n children.push(child);\n }\n\n child.boundaries.push(boundary);\n break;\n }\n }\n allBoundaries.push(boundary);\n }\n },\n QueryScope.OnSelection,\n range\n );\n\n return allBoundaries[0];\n}\n\n/**\n * Step 2: Recursively iterate all boundaries and create regions\n * @param creator A region creator function to help create region\n * @param boundary Current root boundary\n * @param start A node where full range start from. This may not be the direct node container of range.startContainer.\n * It is the nearest ancestor which satisfies the InnerSelector of the given region type\n * @param end A node where full range end from. This may not be the direct node container of range.endContainer.\n * It is the nearest ancestor which satisfies the InnerSelector of the given region type\n * @param started Whether we have already hit the start node\n */\nfunction iterateNodes(\n creator: (rootNode: HTMLElement, nodeBefore?: Node, nodeAfter?: Node) => Region | null,\n boundary: Boundary,\n start: Node,\n end: Node,\n started?: boolean\n): [Region[], boolean, boolean] {\n started = started || boundary.innerNode == start;\n let ended = false;\n const { children, innerNode } = boundary;\n let regions: Region[] = [];\n\n if (children.length == 0) {\n const region = creator(innerNode);\n if (region) {\n regions.push(region);\n }\n } else {\n // Need to run one more time to add region after all children\n for (let i = 0; i <= children.length && !ended; i++) {\n const { outerNode, boundaries } = children[i] || {};\n const previousOuterNode = children[i - 1]?.outerNode;\n if (started) {\n const region = creator(innerNode, previousOuterNode, outerNode);\n if (region) {\n regions.push(region);\n }\n }\n\n boundaries?.forEach(child => {\n let newRegions: Region[];\n [newRegions, started, ended] = iterateNodes(creator, child, start, end, started);\n regions = regions.concat(newRegions);\n });\n }\n }\n\n return [regions, started, ended || innerNode == end];\n}\n\n/**\n * Check if the given nodes combination is valid to create a region.\n * A combination is valid when:\n * 1. Root node is not null and is not empty. And\n * 2. For nodeBefore and nodeAfter, each of them should be either null or contained by root node. And\n * 3. If none of nodeBefore and nodeAfter is null, the should not contain each other, and there should be\n * node between them.\n * @param root Root node of region\n * @param nodeBefore The boundary node before the region under root\n * @param nodeAfter The boundary node after the region under root\n * @param skipTags Tags to skip\n */\nfunction areNodesValid(\n root: Node,\n nodeBefore: Node | undefined,\n nodeAfter: Node | undefined,\n skipTags: string[]\n) {\n if (!root) {\n return false;\n } else {\n const firstNodeOfRegion = nodeBefore && getNextLeafSibling(root, nodeBefore, skipTags);\n const lastNodeOfRegion = nodeAfter && getPreviousLeafSibling(root, nodeAfter, skipTags);\n const firstNodeValid =\n !nodeBefore || (contains(root, nodeBefore) && contains(root, firstNodeOfRegion));\n const lastNodeValid =\n !nodeAfter || (contains(root, nodeAfter) && contains(root, lastNodeOfRegion));\n const bothValid =\n !nodeBefore ||\n !nodeAfter ||\n (!contains(nodeBefore, nodeAfter, true /*treatSameAsContain*/) &&\n !contains(nodeBefore, lastNodeOfRegion, true /*treatSameAsContain*/) &&\n !contains(nodeAfter, nodeBefore, true /*treatSameAsContain*/) &&\n !contains(nodeAfter, firstNodeOfRegion, true /*treatSameAsContain*/));\n return firstNodeValid && lastNodeValid && bothValid;\n }\n}\n","import ContentTraverser from '../contentTraverser/ContentTraverser';\nimport createElement from '../utils/createElement';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getSelectionRangeInRegion from './getSelectionRangeInRegion';\nimport shouldSkipNode from '../utils/shouldSkipNode';\nimport { BlockElement, KnownCreateElementDataIndex, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Get all block elements covered by the selection under this region\n * @param regionBase The region to get block elements from\n * @param createBlockIfEmpty When set to true, a new empty block element will be created if there is not\n * any blocks in the region. Default value is false\n * @param deprecated Deprecated parameter, not used\n */\nexport default function getSelectedBlockElementsInRegion(\n regionBase: RegionBase,\n createBlockIfEmpty?: boolean,\n deprecated?: boolean\n): BlockElement[] {\n const range = getSelectionRangeInRegion(regionBase);\n let blocks: BlockElement[] = [];\n\n if (range) {\n const { rootNode, skipTags } = regionBase;\n const traverser = ContentTraverser.createSelectionTraverser(rootNode, range, skipTags);\n\n for (\n let block = traverser?.currentBlockElement;\n !!block;\n block = traverser.getNextBlockElement()\n ) {\n blocks.push(block);\n }\n\n // Remove meaningless nodes\n blocks = blocks.filter(block => {\n const startNode = block.getStartNode();\n const endNode = block.getEndNode();\n\n if (startNode == endNode && shouldSkipNode(startNode, true /*ignoreSpace*/)) {\n startNode.parentNode?.removeChild(startNode);\n return false;\n } else {\n return true;\n }\n });\n }\n\n if (blocks.length == 0 && regionBase && !regionBase.rootNode.firstChild && createBlockIfEmpty) {\n const newNode = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n regionBase.rootNode.ownerDocument\n );\n regionBase.rootNode.appendChild(newNode!);\n\n const block = getBlockElementAtNode(regionBase.rootNode, newNode);\n\n if (block) {\n blocks.push(block);\n }\n }\n\n return blocks;\n}\n","import createRange from '../selection/createRange';\nimport Position from '../selection/Position';\nimport { getNextLeafSibling, getPreviousLeafSibling } from '../utils/getLeafSibling';\nimport { Region, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Get the selection range in the given region.\n * The original range can cover multiple regions, this function will narrow the original selection\n * of a region into current region\n * @param regionBase The region to get range from\n */\nexport default function getSelectionRangeInRegion(regionBase: RegionBase): Range | null {\n if (!regionBase) {\n return null;\n }\n\n const { nodeBefore, nodeAfter, rootNode, skipTags } = regionBase;\n const startNode = nodeBefore\n ? getNextLeafSibling(regionBase.rootNode, nodeBefore, regionBase.skipTags)\n : rootNode.firstChild;\n const endNode = nodeAfter\n ? getPreviousLeafSibling(rootNode, nodeAfter, skipTags)\n : rootNode.lastChild;\n const regionRange = startNode && endNode && createRange(startNode, endNode);\n\n if (!isRegion(regionBase)) {\n return regionRange;\n } else if (regionRange) {\n const regionStart = Position.getStart(regionRange).normalize();\n const regionEnd = Position.getEnd(regionRange).normalize();\n const { fullSelectionEnd, fullSelectionStart } = regionBase;\n\n if (!fullSelectionStart.isAfter(regionEnd) && !regionStart.isAfter(fullSelectionEnd)) {\n const start = fullSelectionStart.isAfter(regionStart)\n ? fullSelectionStart\n : regionStart;\n const end = fullSelectionEnd.isAfter(regionEnd) ? regionEnd : fullSelectionEnd;\n\n return createRange(start, end);\n }\n }\n\n return null;\n}\n\nfunction isRegion(regionBase: RegionBase): regionBase is Region {\n const region = regionBase as Region;\n return !!region.fullSelectionEnd && !!region.fullSelectionStart;\n}\n","import contains from '../utils/contains';\nimport { DocumentPosition, RegionBase } from 'roosterjs-editor-types';\n\n/**\n * Check if a given node is contained by the given region\n * @param region The region to check from\n * @param node The node or block element to check\n */\nexport default function isNodeInRegion(region: RegionBase, node: Node): boolean {\n return !!(\n region &&\n contains(region.rootNode, node) &&\n (!region.nodeBefore ||\n region.nodeBefore.compareDocumentPosition(node) == DocumentPosition.Following) &&\n (!region.nodeAfter ||\n region.nodeAfter.compareDocumentPosition(node) == DocumentPosition.Preceding)\n );\n}\n","import changeElementTag from '../utils/changeElementTag';\nimport contains from '../utils/contains';\nimport getBlockElementAtNode from '../blockElements/getBlockElementAtNode';\nimport getPredefinedCssForElement from '../htmlSanitizer/getPredefinedCssForElement';\nimport getStyles from '../style/getStyles';\nimport isNodeInRegion from './isNodeInRegion';\nimport safeInstanceOf from '../utils/safeInstanceOf';\nimport setStyles from '../style/setStyles';\nimport { BlockElement, RegionBase } from 'roosterjs-editor-types';\nimport { collapse } from '../utils/collapseNodes';\n\n/**\n * Merge a BlockElement of given node after another node\n * @param region Region to operate in\n * @param refNode The node to merge after\n * @param targetNode The node of target block element\n */\nexport default function mergeBlocksInRegion(region: RegionBase, refNode: Node, targetNode: Node) {\n let block: BlockElement | null;\n\n if (\n !isNodeInRegion(region, refNode) ||\n !isNodeInRegion(region, targetNode) ||\n !(block = getBlockElementAtNode(region.rootNode, targetNode)) ||\n block.contains(refNode)\n ) {\n return;\n }\n\n const blockRoot = block.collapseToSingleElement();\n const commonContainer = collapse(\n region.rootNode,\n blockRoot,\n refNode,\n false /*isStart*/,\n true /*canSplitParent*/\n );\n\n // Copy styles of parent nodes into blockRoot\n for (let node: Node | null = blockRoot; contains(commonContainer, node); ) {\n const parent: Node | null = node!.parentNode;\n if (safeInstanceOf(parent, 'HTMLElement')) {\n const styles = {\n ...(getPredefinedCssForElement(parent) || {}),\n ...getStyles(parent),\n ...getStyles(blockRoot),\n };\n setStyles(blockRoot, styles);\n }\n node = parent;\n }\n\n let nodeToRemove: Node | null = null;\n let nodeToMerge =\n blockRoot.childNodes.length == 1 && blockRoot.attributes.length == 0\n ? blockRoot.firstChild!\n : changeElementTag(blockRoot, 'SPAN')!;\n\n // Remove empty node\n for (\n let node: Node | null = nodeToMerge;\n contains(commonContainer, node) && node.parentNode?.childNodes.length == 1;\n node = node!.parentNode\n ) {\n // If the only child is the one which is about to be removed, this node should also be removed\n nodeToRemove = node.parentNode;\n }\n\n // Finally, merge blocks, and remove empty nodes\n refNode.parentNode?.insertBefore(nodeToMerge, refNode.nextSibling);\n nodeToRemove?.parentNode?.removeChild(nodeToRemove);\n}\n","import findClosestElementAncestor from '../utils/findClosestElementAncestor';\r\nimport isNodeAfter from '../utils/isNodeAfter';\r\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\r\nimport type { CompatiblePositionType } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Represent a position in DOM tree by the node and its offset index\r\n */\r\nexport default class Position implements NodePosition {\r\n readonly node: Node;\r\n readonly element: HTMLElement;\r\n readonly offset: number;\r\n readonly isAtEnd: boolean;\r\n\r\n /**\r\n * Clone and validate a position from existing position.\r\n * If the given position has invalid offset, this function will return a corrected value.\r\n * @param position The original position to clone from\r\n */\r\n constructor(position: NodePosition);\r\n\r\n /**\r\n * Create a Position from node and an offset number\r\n * @param node The node of this position\r\n * @param offset Offset of this position\r\n * @param isFromEndOfRange Whether this position is created from end of a range. An position\r\n * created from end of range has different behavior when normalize, it will use the child node\r\n * before current position if any as a deeper level node and set isAtEnd to true.\r\n */\r\n constructor(node: Node, offset: number, isFromEndOfRange?: boolean);\r\n\r\n /**\r\n * Create a Position from node and a type of position\r\n * @param node The node of this position\r\n * @param positionType Type of the position, can be Begin, End, Before, After\r\n */\r\n constructor(node: Node, positionType: PositionType | CompatiblePositionType);\r\n\r\n constructor(\r\n nodeOrPosition: Node | NodePosition,\r\n offsetOrPosType: number = 0,\r\n private readonly isFromEndOfRange?: boolean\r\n ) {\r\n if ((nodeOrPosition).node) {\r\n this.node = (nodeOrPosition).node;\r\n offsetOrPosType = (nodeOrPosition).offset;\r\n } else {\r\n this.node = nodeOrPosition;\r\n }\r\n\r\n switch (offsetOrPosType) {\r\n case PositionType.Before:\r\n this.offset = getIndexOfNode(this.node);\r\n this.node = this.node.parentNode!; // TODO: how to handle parentNode is null?\r\n this.isAtEnd = false;\r\n break;\r\n\r\n case PositionType.After:\r\n this.offset = getIndexOfNode(this.node) + 1;\r\n this.isAtEnd = !this.node.nextSibling;\r\n this.node = this.node.parentNode!; // TODO: how to handle parentNode is null?\r\n break;\r\n\r\n case PositionType.End:\r\n this.offset = getEndOffset(this.node);\r\n this.isAtEnd = true;\r\n break;\r\n\r\n default:\r\n let endOffset = getEndOffset(this.node);\r\n this.offset = Math.max(0, Math.min(offsetOrPosType, endOffset));\r\n this.isAtEnd = offsetOrPosType > 0 && offsetOrPosType >= endOffset;\r\n break;\r\n }\r\n\r\n this.element = findClosestElementAncestor(this.node)!; // TODO: how to handle parent element is null?\r\n }\r\n\r\n /**\r\n * Normalize this position to the leaf node, return the normalize result.\r\n * If current position is already using leaf node, return this position object itself\r\n */\r\n normalize(): NodePosition {\r\n if (this.node.nodeType == NodeType.Text || !this.node.firstChild) {\r\n return this;\r\n }\r\n\r\n let node = this.node;\r\n let newOffset: number | PositionType.Begin | PositionType.End = this.isAtEnd\r\n ? PositionType.End\r\n : this.offset;\r\n while (node.nodeType == NodeType.Element || node.nodeType == NodeType.DocumentFragment) {\r\n const nextNode = this.isFromEndOfRange\r\n ? newOffset == PositionType.End\r\n ? node.lastChild\r\n : node.childNodes[newOffset - 1]\r\n : newOffset == PositionType.Begin\r\n ? node.firstChild\r\n : newOffset == PositionType.End\r\n ? node.lastChild\r\n : node.childNodes[newOffset];\r\n\r\n if (nextNode) {\r\n node = nextNode;\r\n newOffset =\r\n this.isAtEnd || this.isFromEndOfRange ? PositionType.End : PositionType.Begin;\r\n } else {\r\n break;\r\n }\r\n }\r\n return new Position(node, newOffset, this.isFromEndOfRange);\r\n }\r\n\r\n /**\r\n * Check if this position is equal to the given position\r\n * @param position The position to check\r\n */\r\n equalTo(position: NodePosition): boolean {\r\n return (\r\n position &&\r\n (this == position ||\r\n (this.node == position.node &&\r\n this.offset == position.offset &&\r\n this.isAtEnd == position.isAtEnd))\r\n );\r\n }\r\n\r\n /**\r\n * Checks if this position is after the given position\r\n */\r\n isAfter(position: NodePosition): boolean {\r\n return this.node == position.node\r\n ? (this.isAtEnd && !position.isAtEnd) || this.offset > position.offset\r\n : isNodeAfter(this.node, position.node);\r\n }\r\n\r\n /**\r\n * Move this position with offset, returns a new position with a valid offset in the same node\r\n * @param offset Offset to move with\r\n */\r\n move(offset: number) {\r\n return new Position(this.node, Math.max(this.offset + offset, 0));\r\n }\r\n\r\n /**\r\n * Get start position of the given Range\r\n * @param range The range to get position from\r\n */\r\n static getStart(range: Range) {\r\n return new Position(range.startContainer, range.startOffset);\r\n }\r\n\r\n /**\r\n * Get end position of the given Range\r\n * @param range The range to get position from\r\n */\r\n static getEnd(range: Range) {\r\n // For collapsed range, always return the same value of start container to make sure\r\n // end position is not before start position\r\n return range.collapsed\r\n ? Position.getStart(range)\r\n : new Position(range.endContainer, range.endOffset, true /*isFromEndOfRange*/);\r\n }\r\n}\r\n\r\nfunction getIndexOfNode(node: Node | null): number {\r\n let i = 0;\r\n while ((node = node?.previousSibling || null)) {\r\n i++;\r\n }\r\n return i;\r\n}\r\n\r\nfunction getEndOffset(node: Node): number {\r\n if (node.nodeType == NodeType.Text) {\r\n return node.nodeValue?.length || 0;\r\n } else if (node.nodeType == NodeType.Element || node.nodeType == NodeType.DocumentFragment) {\r\n return node.childNodes.length;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n","import { Browser } from '../utils/Browser';\n\n/**\n * Add the given range into selection of the given document\n * @param range The range to select\n * @param skipSameRange When set to true, do nothing if the given range is the same with current selection,\n * otherwise it will always remove current selection range and set to the given one.\n * This parameter is always treat as true in Edge to avoid some weird runtime exception.\n */\nexport default function addRangeToSelection(range: Range, skipSameRange?: boolean) {\n const selection = range?.commonAncestorContainer?.ownerDocument?.defaultView?.getSelection();\n if (selection) {\n let needAddRange = true;\n\n if (selection.rangeCount > 0) {\n // Workaround IE exception 800a025e\n try {\n let currentRange: Range | null = null;\n // Do not remove/add range if current selection is the same with target range\n // Without this check, execCommand() may fail in Edge since we changed the selection\n if (\n (skipSameRange || Browser.isEdge) &&\n (currentRange = selection.rangeCount == 1 ? selection.getRangeAt(0) : null) &&\n currentRange.startContainer == range.startContainer &&\n currentRange.startOffset == range.startOffset &&\n currentRange.endContainer == range.endContainer &&\n currentRange.endOffset == range.endOffset\n ) {\n needAddRange = false;\n } else {\n selection.removeAllRanges();\n }\n } catch (e) {}\n }\n\n if (needAddRange) {\n selection.addRange(range);\n }\n }\n}\n","import isVoidHtmlElement from '../utils/isVoidHtmlElement';\r\nimport Position from './Position';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport { NodePosition, NodeType, PositionType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Create a range around the given node(s)\r\n * @param startNode The start node to create range from\r\n * @param endNode The end node to create range from. If specified, the range will start before startNode and\r\n * end after endNode, otherwise, the range will start before and end after the start node\r\n * @returns A range start before the given node and end after the given node\r\n */\r\nexport default function createRange(startNode: Node, endNode?: Node): Range;\r\n\r\n/**\r\n * Create a collapsed range at the given node and offset\r\n * @param node The container node of the range\r\n * @param offset The offset of the range, can be a number or value of PositionType\r\n * @returns A range at the given node and offset\r\n */\r\nexport default function createRange(node: Node, offset: number | PositionType): Range;\r\n\r\n/**\r\n * Create a range with the given start/end container node and offset\r\n * @param startNode The start container node of the range\r\n * @param startOffset The start offset of the range\r\n * @param endNode The end container node of the range\r\n * @param endOffset The end offset of the range\r\n * @returns A range at the given start/end container node and offset\r\n */\r\nexport default function createRange(\r\n startNode: Node,\r\n startOffset: number | PositionType,\r\n endNode: Node,\r\n endOffset: number | PositionType\r\n): Range;\r\n\r\n/**\r\n * Create a range under the given rootNode with start and end selection paths\r\n * @param rootNode The root node that the selection paths start from\r\n * @param startPath The selection path of the start position of the range\r\n * @param endPath The selection path of the end position of the range\r\n * @returns A range with the given start and end selection paths\r\n */\r\nexport default function createRange(rootNode: Node, startPath: number[], endPath?: number[]): Range;\r\n\r\n/**\r\n * Create a range with the start and end position\r\n * @param startPosition The start position of the range\r\n * @param endPosition The end position of the range, if not specified, the range will be collapsed at start position\r\n * @returns A range start at startPosition, end at endPosition, or startPosition when endPosition is not specified\r\n */\r\nexport default function createRange(startPosition: NodePosition, endPosition?: NodePosition): Range;\r\n\r\nexport default function createRange(\r\n arg1: Node | NodePosition,\r\n arg2?: number | number[] | Node | NodePosition,\r\n arg3?: Node | number[],\r\n arg4?: number\r\n): Range | null {\r\n let start: NodePosition | null = null;\r\n let end: NodePosition | null = null;\r\n\r\n if (isNodePosition(arg1)) {\r\n // function createRange(startPosition: NodePosition, endPosition?: NodePosition): Range;\r\n start = arg1;\r\n end = isNodePosition(arg2) ? arg2 : null;\r\n } else if (safeInstanceOf(arg1, 'Node')) {\r\n if (Array.isArray(arg2)) {\r\n // function createRange(rootNode: Node, startPath: number[], endPath?: number[]): Range;\r\n start = getPositionFromPath(arg1, arg2);\r\n end = Array.isArray(arg3) ? getPositionFromPath(arg1, arg3) : null;\r\n } else if (typeof arg2 == 'number') {\r\n // function createRange(node: Node, offset: number | PositionType): Range;\r\n // function createRange(startNode: Node, startOffset: number | PositionType, endNode: Node, endOffset: number | PositionType): Range;\r\n start = new Position(arg1, arg2);\r\n end = safeInstanceOf(arg3, 'Node') ? new Position(arg3, arg4!) : null;\r\n } else if (safeInstanceOf(arg2, 'Node') || !arg2) {\r\n // function createRange(startNode: Node, endNode?: Node): Range;\r\n start = new Position(arg1, PositionType.Before);\r\n end = new Position(arg2 || arg1, PositionType.After);\r\n }\r\n }\r\n\r\n if (start?.node?.ownerDocument) {\r\n let range = start.node.ownerDocument.createRange();\r\n start = getFocusablePosition(start);\r\n end = getFocusablePosition(end || start);\r\n range.setStart(start.node, start.offset);\r\n range.setEnd(end.node, end.offset);\r\n\r\n return range;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Convert to focusable position\r\n * If current node is a void element, we need to move up one level to put cursor outside void element\r\n */\r\nfunction getFocusablePosition(position: NodePosition) {\r\n return position.node.nodeType == NodeType.Element && isVoidHtmlElement(position.node)\r\n ? new Position(position.node, position.isAtEnd ? PositionType.After : PositionType.Before)\r\n : position;\r\n}\r\n\r\nfunction isNodePosition(arg: any): arg is NodePosition {\r\n return arg && arg.node;\r\n}\r\n\r\nfunction getPositionFromPath(node: Node, path: number[]): NodePosition | null {\r\n if (!node || !path) {\r\n return null;\r\n }\r\n\r\n // Iterate with a for loop to avoid mutating the passed in element path stack\r\n // or needing to copy it.\r\n let offset: number = 0;\r\n\r\n for (let i = 0; i < path.length; i++) {\r\n offset = path[i];\r\n if (\r\n i < path.length - 1 &&\r\n node &&\r\n node.nodeType == NodeType.Element &&\r\n node.childNodes.length > offset\r\n ) {\r\n node = node.childNodes[offset];\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return new Position(node, offset);\r\n}\r\n","import getInnerHTML from '../utils/getInnerHTML';\nimport getSelectionPath from './getSelectionPath';\n\n/**\n * Get inner Html of a root node with a selection path which can be used for restore selection.\n * The result string can be used by setHtmlWithSelectionPath() to restore the HTML and selection.\n * @param rootNode Root node to get inner Html from\n * @param range The range of selection. If pass null, no selection path will be added\n * @returns Inner HTML of the root node, followed by HTML comment contains selection path if the given range is valid\n */\nexport default function getHtmlWithSelectionPath(\n rootNode: HTMLElement | DocumentFragment,\n range: Range | null\n): string {\n if (!rootNode) {\n return '';\n }\n\n const content = getInnerHTML(rootNode);\n const selectionPath = range && getSelectionPath(rootNode, range);\n\n return selectionPath ? `${content}` : content;\n}\n","import createElement from '../utils/createElement';\r\nimport createRange from './createRange';\r\nimport normalizeRect from '../utils/normalizeRect';\r\nimport { NodePosition, NodeType, Rect } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get bounding rect of this position\r\n * @param position The position to get rect from\r\n */\r\nexport default function getPositionRect(position: NodePosition): Rect | null {\r\n if (!position) {\r\n return null;\r\n }\r\n\r\n let range = createRange(position);\r\n\r\n // 1) try to get rect using range.getBoundingClientRect()\r\n let rect: Rect | null =\r\n range.getBoundingClientRect && normalizeRect(range.getBoundingClientRect());\r\n\r\n if (rect) {\r\n return rect;\r\n }\r\n\r\n // 2) try to get rect using range.getClientRects\r\n position = position.normalize();\r\n const rects = range.getClientRects && range.getClientRects();\r\n rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;\r\n if (rect) {\r\n return rect;\r\n }\r\n\r\n // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others\r\n if (position.node.nodeType == NodeType.Text && position.node.ownerDocument) {\r\n const span = createElement(\r\n { tag: 'span', children: ['\\u200b'] },\r\n position.node.ownerDocument\r\n );\r\n range = createRange(position);\r\n range.insertNode(span!);\r\n rect = span!.getBoundingClientRect && normalizeRect(span!.getBoundingClientRect());\r\n span!.parentNode?.removeChild(span!);\r\n if (rect) {\r\n return rect;\r\n }\r\n }\r\n\r\n // 4) try getBoundingClientRect on element\r\n let element = position.element;\r\n if (element && element.getBoundingClientRect) {\r\n rect = normalizeRect(element.getBoundingClientRect());\r\n if (rect) {\r\n return rect;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import contains from '../utils/contains';\r\nimport Position from './Position';\r\nimport { NodePosition, NodeType, SelectionPath } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get path of the given selection range related to the given rootNode\r\n * @param rootNode The root node where the path start from\r\n * @param range The range of selection\r\n */\r\nexport default function getSelectionPath(\r\n rootNode: Node,\r\n range: Range | null\r\n): SelectionPath | null {\r\n if (!range) {\r\n return null;\r\n }\r\n\r\n let selectionPath: SelectionPath = {\r\n start: getPositionPath(Position.getStart(range), rootNode),\r\n end: getPositionPath(Position.getEnd(range), rootNode),\r\n };\r\n\r\n return selectionPath;\r\n}\r\n\r\n/**\r\n * Get the path of the node relative to rootNode.\r\n * The path of the node is an array of integer indices into the childNodes of the given node.\r\n *\r\n * The node path will be what the node path will be on a _normalized_ dom\r\n * (e.g. empty text nodes will be ignored and adjacent text nodes will be concatenated)\r\n *\r\n * @param rootNode the node the path will be relative to\r\n * @param position the position to get indexes from. Follows the same semantics\r\n * as selectionRange (if node is of type Text, it is an offset into the text of that node.\r\n * If node is of type Element, it is the index of a child in that Element node.)\r\n */\r\nfunction getPositionPath(position: NodePosition, rootNode: Node): number[] {\r\n if (!position || !rootNode) {\r\n return [];\r\n }\r\n\r\n let node: Node | null = position.node;\r\n let offset = position.offset;\r\n let result: number[] = [];\r\n let parent: Node | null;\r\n\r\n if (!contains(rootNode, node, true)) {\r\n return [];\r\n }\r\n\r\n if (node.nodeType == NodeType.Text) {\r\n parent = node.parentNode;\r\n while (node.previousSibling && node.previousSibling.nodeType == NodeType.Text) {\r\n offset += node.previousSibling.nodeValue?.length || 0;\r\n node = node.previousSibling;\r\n }\r\n result.unshift(offset);\r\n } else {\r\n parent = node;\r\n node = node.childNodes[offset];\r\n }\r\n\r\n do {\r\n offset = 0;\r\n let isPreviousText = false;\r\n\r\n for (let c: Node | null = parent?.firstChild || null; c && c != node; c = c.nextSibling) {\r\n if (c.nodeType == NodeType.Text) {\r\n if (c.nodeValue?.length === 0 || isPreviousText) {\r\n continue;\r\n }\r\n\r\n isPreviousText = true;\r\n } else {\r\n isPreviousText = false;\r\n }\r\n\r\n offset++;\r\n }\r\n\r\n result.unshift(offset);\r\n node = parent;\r\n parent = parent?.parentNode || null;\r\n } while (node && node != rootNode);\r\n\r\n return result;\r\n}\r\n","import contains from '../utils/contains';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport isNodeEmpty from '../utils/isNodeEmpty';\r\nimport { NodePosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Check if this position is at beginning of the given node.\r\n * This will return true if all nodes between the beginning of target node and the position are empty.\r\n * @param position The position to check\r\n * @param targetNode The node to check\r\n * @returns True if position is at beginning of the node, otherwise false\r\n */\r\nexport default function isPositionAtBeginningOf(position: NodePosition, targetNode: Node | null) {\r\n if (position) {\r\n position = position.normalize();\r\n let node: Node | null = position.node;\r\n const offset = position.offset;\r\n if (offset == 0) {\r\n while (node && contains(targetNode, node) && areAllPreviousNodesEmpty(node)) {\r\n node = node?.parentNode || null;\r\n }\r\n\r\n return node == targetNode;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction areAllPreviousNodesEmpty(node: Node): boolean {\r\n while (node.previousSibling) {\r\n node = node.previousSibling;\r\n if (getTagOfNode(node) == 'BR' || !isNodeEmpty(node)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","import createRange from './createRange';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport validate from '../metadata/validate';\r\nimport {\r\n createArrayDefinition,\r\n createBooleanDefinition,\r\n createNumberDefinition,\r\n createObjectDefinition,\r\n createStringDefinition,\r\n} from '../metadata/definitionCreators';\r\nimport {\r\n ContentMetadata,\r\n SelectionRangeTypes,\r\n TrustedHTMLHandler,\r\n ImageContentMetadata,\r\n NormalContentMetadata,\r\n TableContentMetadata,\r\n Coordinates,\r\n} from 'roosterjs-editor-types';\r\nconst NumberArrayDefinition = createArrayDefinition(createNumberDefinition());\r\n\r\nconst CoordinatesDefinition = createObjectDefinition({\r\n x: createNumberDefinition(),\r\n y: createNumberDefinition(),\r\n});\r\n\r\nconst IsDarkModeDefinition = createBooleanDefinition(true /*isOptional*/);\r\n\r\nconst NormalContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(true /*isOptional*/, SelectionRangeTypes.Normal),\r\n isDarkMode: IsDarkModeDefinition,\r\n start: NumberArrayDefinition,\r\n end: NumberArrayDefinition,\r\n});\r\n\r\nconst TableContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(false /*isOptional*/, SelectionRangeTypes.TableSelection),\r\n isDarkMode: IsDarkModeDefinition,\r\n tableId: createStringDefinition(),\r\n firstCell: CoordinatesDefinition,\r\n lastCell: CoordinatesDefinition,\r\n});\r\n\r\nconst ImageContentMetadataDefinition = createObjectDefinition({\r\n type: createNumberDefinition(false /*isOptional*/, SelectionRangeTypes.ImageSelection),\r\n isDarkMode: IsDarkModeDefinition,\r\n imageId: createStringDefinition(),\r\n});\r\n\r\n/**\r\n * @deprecated Use setHtmlWithMetadata instead\r\n * Restore inner HTML of a root element from given html string. If the string contains selection path,\r\n * remove the selection path and return a range represented by the path\r\n * @param root The root element\r\n * @param html The HTML to restore\r\n * @param trustedHTMLHandler An optional trusted HTML handler to convert HTML string to security string\r\n * @returns A selection range if the html contains a valid selection path, otherwise null\r\n */\r\nexport default function setHtmlWithSelectionPath(\r\n rootNode: HTMLElement,\r\n html: string,\r\n trustedHTMLHandler?: TrustedHTMLHandler\r\n): Range | null {\r\n const metadata = setHtmlWithMetadata(rootNode, html, trustedHTMLHandler);\r\n return metadata?.type == SelectionRangeTypes.Normal\r\n ? createRange(rootNode, metadata.start, metadata.end)\r\n : null;\r\n}\r\n\r\n/**\r\n * Restore inner HTML of a root element from given html string. If the string contains metadata,\r\n * remove it from DOM tree and return the metadata\r\n * @param root The root element\r\n * @param html The HTML to restore\r\n * @param trustedHTMLHandler An optional trusted HTML handler to convert HTML string to security string\r\n * @returns Content metadata if any, or undefined\r\n */\r\nexport function setHtmlWithMetadata(\r\n rootNode: HTMLElement,\r\n html: string,\r\n trustedHTMLHandler?: TrustedHTMLHandler\r\n): ContentMetadata | undefined {\r\n if (!rootNode) {\r\n return undefined;\r\n }\r\n\r\n html = html || '';\r\n rootNode.innerHTML = trustedHTMLHandler?.(html) || html;\r\n\r\n return extractContentMetadata(rootNode);\r\n}\r\n\r\n/**\r\n * Extract content metadata from DOM tree\r\n * @param rootNode Root of the DOM tree\r\n * @returns If there is a valid content metadata node in the give DOM tree, return this metadata object, otherwise undefined\r\n */\r\nexport function extractContentMetadata(rootNode: HTMLElement): ContentMetadata | undefined {\r\n const potentialMetadataComment = rootNode.lastChild;\r\n\r\n if (safeInstanceOf(potentialMetadataComment, 'Comment')) {\r\n try {\r\n const obj = JSON.parse(potentialMetadataComment.nodeValue || '');\r\n\r\n if (\r\n validate(obj, NormalContentMetadataDefinition) ||\r\n validate(obj, TableContentMetadataDefinition) ||\r\n validate(obj, ImageContentMetadataDefinition)\r\n ) {\r\n rootNode.removeChild(potentialMetadataComment);\r\n obj.type = typeof obj.type === 'undefined' ? SelectionRangeTypes.Normal : obj.type;\r\n obj.isDarkMode = obj.isDarkMode || false;\r\n\r\n return obj;\r\n }\r\n } catch {}\r\n }\r\n\r\n return undefined;\r\n}\r\n","import clearProceedingSnapshots from './clearProceedingSnapshots';\r\nimport { Snapshot, Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param html The snapshot HTML to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n */\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n html: string,\r\n isAutoCompleteSnapshot: boolean\r\n): void;\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param snapshot The generic snapshot object to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n * @param getLength A callback function to calculate length of the snapshot\r\n * @param isSame A callback function to check if the given snapshots are the same\r\n */\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n snapshot: T,\r\n isAutoCompleteSnapshot: boolean,\r\n getLength: (snapshot: T) => number,\r\n isSame: (snapshot1: T, snapshot2: T) => boolean\r\n): void;\r\n\r\nexport default function addSnapshot(\r\n snapshots: Snapshots,\r\n snapshot: T,\r\n isAutoCompleteSnapshot: boolean,\r\n getLength?: (snapshot: T) => number,\r\n compare?: (snapshot1: T, snapshot2: T) => boolean\r\n) {\r\n getLength = getLength || (str => ((str))?.length || 0);\r\n compare = compare || defaultCompare;\r\n\r\n const currentSnapshot = snapshots.snapshots[snapshots.currentIndex];\r\n const isSameSnapshot = currentSnapshot && compare(currentSnapshot, snapshot);\r\n\r\n if (snapshots.currentIndex < 0 || !currentSnapshot || !isSameSnapshot) {\r\n clearProceedingSnapshots(snapshots, getLength);\r\n snapshots.snapshots.push(snapshot);\r\n snapshots.currentIndex++;\r\n snapshots.totalSize += getLength(snapshot);\r\n\r\n let removeCount = 0;\r\n while (\r\n removeCount < snapshots.snapshots.length &&\r\n snapshots.totalSize > snapshots.maxSize\r\n ) {\r\n snapshots.totalSize -= getLength(snapshots.snapshots[removeCount]);\r\n removeCount++;\r\n }\r\n\r\n if (removeCount > 0) {\r\n snapshots.snapshots.splice(0, removeCount);\r\n snapshots.currentIndex -= removeCount;\r\n snapshots.autoCompleteIndex -= removeCount;\r\n }\r\n\r\n if (isAutoCompleteSnapshot) {\r\n snapshots.autoCompleteIndex = snapshots.currentIndex;\r\n }\r\n } else if (isSameSnapshot) {\r\n // replace the currentSnapshot's metadata so the selection is updated\r\n snapshots.snapshots.splice(snapshots.currentIndex, 1, snapshot);\r\n }\r\n}\r\n\r\n/**\r\n * Add a new snapshot to the given snapshots data structure\r\n * @param snapshots The snapshots data structure to add new snapshot into\r\n * @param snapshot The snapshot object to add\r\n * @param isAutoCompleteSnapshot Whether this is a snapshot before auto complete action\r\n */\r\nexport function addSnapshotV2(\r\n snapshots: Snapshots,\r\n snapshot: Snapshot,\r\n isAutoCompleteSnapshot: boolean\r\n) {\r\n addSnapshot(\r\n snapshots,\r\n snapshot,\r\n isAutoCompleteSnapshot,\r\n s => s.html?.length || 0,\r\n compareSnapshots\r\n );\r\n}\r\n\r\nfunction compareSnapshots(s1: Snapshot, s2: Snapshot) {\r\n return s1.html == s2.html && !s1.entityStates && !s2.entityStates;\r\n}\r\n\r\nfunction defaultCompare(s1: T, s2: T) {\r\n return s1 == s2;\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Check whether can move current snapshot with the given step\r\n * @param snapshots The snapshots data structure to check\r\n * @param step The step to check, can be positive, negative or 0\r\n * @returns True if can move current snapshot with the given step, otherwise false\r\n */\r\nexport default function canMoveCurrentSnapshot(\r\n snapshots: Snapshots,\r\n step: number\r\n): boolean {\r\n let newIndex = snapshots.currentIndex + step;\r\n return newIndex >= 0 && newIndex < snapshots.snapshots.length;\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\n\n/**\n * Whether there is a snapshot added before auto complete and it can be undone now\n */\nexport default function canUndoAutoComplete(snapshots: Snapshots): boolean {\n return (\n snapshots.autoCompleteIndex >= 0 &&\n snapshots.currentIndex - snapshots.autoCompleteIndex == 1\n );\n}\n","import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';\r\nimport { Snapshot, Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(snapshots: Snapshots): void;\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(\r\n snapshots: Snapshots,\r\n getLength: (snapshot: T) => number\r\n): void;\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport default function clearProceedingSnapshots(\r\n snapshots: Snapshots,\r\n getLength?: (snapshot: T) => number\r\n) {\r\n getLength = getLength || (str => ((str))?.length || 0);\r\n if (canMoveCurrentSnapshot(snapshots, 1)) {\r\n let removedSize = 0;\r\n for (let i = snapshots.currentIndex + 1; i < snapshots.snapshots.length; i++) {\r\n removedSize += getLength(snapshots.snapshots[i]);\r\n }\r\n snapshots.snapshots.splice(snapshots.currentIndex + 1);\r\n snapshots.totalSize -= removedSize;\r\n snapshots.autoCompleteIndex = -1;\r\n }\r\n}\r\n\r\n/**\r\n * Clear all snapshots after the current one\r\n * @param snapshots The snapshots data structure to clear\r\n */\r\nexport function clearProceedingSnapshotsV2(snapshots: Snapshots) {\r\n clearProceedingSnapshots(snapshots, s => s.html?.length || 0);\r\n}\r\n","import { Snapshots } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Create initial snapshots\r\n * @param maxSize max size of all snapshots\r\n */\r\nexport default function createSnapshots(maxSize: number): Snapshots {\r\n return {\r\n snapshots: [],\r\n totalSize: 0,\r\n currentIndex: -1,\r\n autoCompleteIndex: -1,\r\n maxSize,\r\n };\r\n}\r\n","import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';\nimport { Snapshots } from 'roosterjs-editor-types';\n\n/**\n * Move current snapshot with the given step if can move this step. Otherwise no action and return null\n * @param snapshots The snapshots data structure to move\n * @param step The step to move\n * @returns If can move with the given step, returns the snapshot after move, otherwise null\n */\nexport default function moveCurrentSnapshot(\n snapshots: Snapshots,\n step: number\n): T | null {\n if (canMoveCurrentSnapshot(snapshots, step)) {\n snapshots.currentIndex += step;\n snapshots.autoCompleteIndex = -1;\n return snapshots.snapshots[snapshots.currentIndex];\n } else {\n return null;\n }\n}\n\n/**\n * @deprecated\n * For backward compatibility only\n */\nexport const moveCurrentSnapsnot = moveCurrentSnapshot;\n","/**\n * Get CSS styles of a given element in name-value pair format\n * @param element The element to get styles from\n */\nexport default function getStyles(element: HTMLElement): Record {\n const result: Record = {};\n const style = element?.getAttribute('style') || '';\n style.split(';').forEach(pair => {\n const valueIndex = pair.indexOf(':');\n const name = pair.slice(0, valueIndex);\n const value = pair.slice(valueIndex + 1);\n if (name && value) {\n result[name.trim()] = value.trim();\n }\n });\n return result;\n}\n","/**\n * Remove a css rule style from a style sheet\n * @param doc The document object\n * @param styleId the ID of the style tag\n */\n\nexport default function removeGlobalCssStyle(doc: Document, styleId: string) {\n const styleTag = doc.getElementById(styleId) as HTMLStyleElement;\n if (styleTag) {\n styleTag.parentNode?.removeChild(styleTag);\n }\n}\n","import getStyles from './getStyles';\nimport setStyles from './setStyles';\n\n/**\n * Removes the css important rule from some css properties\n * @param element The HTMLElement\n * @param styleProperties The css properties that important must be removed. Ex: ['background-color', 'background']\n */\n\nexport default function removeImportantStyleRule(element: HTMLElement, styleProperties: string[]) {\n const styles = getStyles(element);\n let modifiedStyles = 0;\n styleProperties.forEach(style => {\n if (styles[style]?.indexOf('!important') > -1) {\n const index = styles[style].indexOf('!');\n styles[style] = styles[style].substring(0, index);\n modifiedStyles++;\n }\n });\n if (modifiedStyles > 0) {\n setStyles(element, styles);\n }\n}\n","/**\n * Add global css styles\n * @param doc The document object\n * @param cssRule The css rule that must added to the selection\n * @param styleId The id of the style tag\n */\n\nexport default function setGlobalCssStyles(doc: Document, cssRule: string, styleId: string) {\n if (cssRule) {\n let styleTag = doc.getElementById(styleId) as HTMLStyleElement;\n if (!styleTag) {\n styleTag = doc.createElement('style');\n styleTag.id = styleId;\n doc.head.appendChild(styleTag);\n }\n styleTag.sheet?.insertRule(cssRule);\n }\n}\n","import getObjectKeys from '../jsUtils/getObjectKeys';\n\n/**\n * Set styles to an HTML element. If styles are empty, remove 'style' attribute\n * @param element The element to set styles\n * @param styles The styles to set, in name-value pair format\n */\nexport default function setStyles(element: HTMLElement, styles: Record) {\n if (element) {\n const style = getObjectKeys(styles || {})\n .map(name => {\n const value: string | null = styles[name];\n const trimmedName = name ? name.trim() : null;\n const trimmedValue = value ? value.trim() : null;\n return trimmedName && trimmedValue ? `${trimmedName}:${trimmedValue}` : null;\n })\n .filter(x => x)\n .join(';');\n if (style) {\n element.setAttribute('style', style);\n } else {\n element.removeAttribute('style');\n }\n }\n}\n","import applyTableFormat from './applyTableFormat';\r\nimport getTagOfNode from '../utils/getTagOfNode';\r\nimport moveChildNodes from '../utils/moveChildNodes';\r\nimport normalizeRect from '../utils/normalizeRect';\r\nimport safeInstanceOf from '../utils/safeInstanceOf';\r\nimport toArray from '../jsUtils/toArray';\r\nimport { getTableCellMetadata, saveTableCellMetadata } from './tableCellInfo';\r\nimport { getTableFormatInfo, saveTableInfo } from './tableFormatInfo';\r\nimport { removeMetadata } from '../metadata/metadata';\r\nimport {\r\n SizeTransformer,\r\n TableBorderFormat,\r\n TableFormat,\r\n TableOperation,\r\n TableSelection,\r\n VCell,\r\n DarkColorHandler,\r\n} from 'roosterjs-editor-types';\r\nimport type { CompatibleTableOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\nconst DEFAULT_FORMAT: Required = {\r\n topBorderColor: '#ABABAB',\r\n bottomBorderColor: '#ABABAB',\r\n verticalBorderColor: '#ABABAB',\r\n hasHeaderRow: false,\r\n hasFirstColumn: false,\r\n hasBandedRows: false,\r\n hasBandedColumns: false,\r\n bgColorEven: null,\r\n bgColorOdd: '#ABABAB20',\r\n headerRowColor: '#ABABAB',\r\n tableBorderFormat: TableBorderFormat.DEFAULT,\r\n keepCellShade: false,\r\n verticalAlign: null,\r\n};\r\n\r\n/**\r\n * A virtual table class, represent an HTML table, by expand all merged cells to each separated cells\r\n */\r\nexport default class VTable {\r\n /**\r\n * The HTML table object\r\n */\r\n table: HTMLTableElement;\r\n\r\n /**\r\n * Virtual cells\r\n */\r\n cells: VCell[][] | null = null;\r\n\r\n /**\r\n * Current row index\r\n */\r\n row: number | undefined;\r\n\r\n /**\r\n * Current column index\r\n */\r\n col: number | undefined;\r\n\r\n /**\r\n * Current format of the table\r\n */\r\n formatInfo: Required | null = null;\r\n\r\n private trs: HTMLTableRowElement[] = [];\r\n\r\n private tableSelection: TableSelection | null = null;\r\n\r\n /**\r\n * Create a new instance of VTable object using HTML TABLE or TD node\r\n * @param node The HTML Table or TD node\r\n * @param normalizeSize Whether table size needs to be normalized\r\n * @param zoomScale When the table is under a zoomed container, pass in the zoom scale here\r\n */\r\n constructor(\r\n node: HTMLTableElement | HTMLTableCellElement,\r\n normalizeSize?: boolean,\r\n zoomScale?: number | SizeTransformer\r\n ) {\r\n this.table = safeInstanceOf(node, 'HTMLTableElement') ? node : getTableFromTd(node);\r\n if (this.table) {\r\n let currentTd = safeInstanceOf(node, 'HTMLTableElement') ? null : node;\r\n let trs = toArray(this.table.rows);\r\n this.cells = trs.map(row => []);\r\n trs.forEach((tr, rowIndex) => {\r\n this.trs[rowIndex % 2] = tr;\r\n for (let sourceCol = 0, targetCol = 0; sourceCol < tr.cells.length; sourceCol++) {\r\n // Skip the cells which already initialized\r\n for (; this.cells![rowIndex][targetCol]; targetCol++) {}\r\n let td = tr.cells[sourceCol];\r\n\r\n if (td == currentTd) {\r\n this.col = targetCol;\r\n this.row = rowIndex;\r\n }\r\n\r\n for (let colSpan = 0; colSpan < td.colSpan; colSpan++, targetCol++) {\r\n for (let rowSpan = 0; rowSpan < td.rowSpan; rowSpan++) {\r\n const hasTd: boolean = colSpan + rowSpan == 0;\r\n const rect = td.getBoundingClientRect();\r\n if (this.cells?.[rowIndex + rowSpan]) {\r\n this.cells[rowIndex + rowSpan][targetCol] = {\r\n td: hasTd ? td : null,\r\n spanLeft: colSpan > 0,\r\n spanAbove: rowSpan > 0,\r\n width: hasTd ? rect.width : undefined,\r\n height: hasTd ? rect.height : undefined,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n for (let col = 0; col < this.cells![rowIndex].length; col++) {\r\n if (!this.cells![rowIndex][col]) {\r\n this.cells![rowIndex][col] = {\r\n td: null,\r\n spanLeft: false,\r\n spanAbove: false,\r\n width: undefined,\r\n height: undefined,\r\n };\r\n }\r\n }\r\n });\r\n this.formatInfo = getTableFormatInfo(this.table);\r\n if (normalizeSize) {\r\n this.normalizeSize(typeof zoomScale == 'number' ? n => n / zoomScale : zoomScale);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Selected range of cells with the coordinates of the first and last cell selected.\r\n */\r\n public get selection(): TableSelection | null {\r\n return this.tableSelection || null;\r\n }\r\n\r\n public set selection(value: TableSelection | null) {\r\n if (value) {\r\n const { firstCell } = value;\r\n this.row = firstCell?.y;\r\n this.col = firstCell?.x;\r\n }\r\n this.tableSelection = value;\r\n }\r\n\r\n /**\r\n * Write the virtual table back to DOM tree to represent the change of VTable\r\n * @param skipApplyFormat Do not reapply table format when write back. Only use this parameter when you are pretty sure there is no format or table structure change during the process.\r\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\r\n */\r\n writeBack(skipApplyFormat?: boolean, darkColorHandler?: DarkColorHandler | null) {\r\n if (this.cells) {\r\n moveChildNodes(this.table);\r\n this.cells.forEach((row, r) => {\r\n let tr = cloneNode(this.trs[r % 2] || this.trs[0]);\r\n\r\n if (tr) {\r\n this.table.appendChild(tr);\r\n row.forEach((cell, c) => {\r\n if (cell.td) {\r\n this.recalculateSpans(r, c);\r\n this.recalculateCellHeight(cell.td);\r\n tr!.appendChild(cell.td);\r\n }\r\n });\r\n }\r\n });\r\n if (this.formatInfo && !skipApplyFormat) {\r\n saveTableInfo(this.table, this.formatInfo);\r\n applyTableFormat(this.table, this.cells, this.formatInfo, darkColorHandler);\r\n }\r\n } else if (this.table) {\r\n this.table.parentNode?.removeChild(this.table);\r\n }\r\n }\r\n\r\n private recalculateCellHeight(td: HTMLTableCellElement) {\r\n if (this.isEmptyCell(td) && td.rowSpan > 1) {\r\n for (let i = 1; i < td.rowSpan; i++) {\r\n const br = document.createElement('br');\r\n td.appendChild(br);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply the given table format to this virtual table\r\n * @param format Table format to apply\r\n */\r\n applyFormat(format: Partial) {\r\n if (!this.table) {\r\n return;\r\n }\r\n this.formatInfo = {\r\n ...DEFAULT_FORMAT,\r\n ...(this.formatInfo || {}),\r\n ...(format || {}),\r\n };\r\n if (!this.formatInfo.keepCellShade) {\r\n this.deleteCellShadeDataset(this.cells);\r\n }\r\n }\r\n\r\n /**\r\n * Remove the cellShade dataset to apply a new style format at the cell.\r\n * @param cells\r\n */\r\n private deleteCellShadeDataset(cells: VCell[][] | null) {\r\n cells?.forEach(row => {\r\n row.forEach(cell => {\r\n if (cell.td) {\r\n removeMetadata(cell.td, 'bgColorOverride');\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Edit table with given operation.\r\n * @param operation Table operation\r\n */\r\n edit(operation: TableOperation | CompatibleTableOperation) {\r\n if (!this.table || !this.cells || this.row === undefined || this.col == undefined) {\r\n return;\r\n }\r\n\r\n let currentRow = this.cells[this.row];\r\n let currentCell = currentRow[this.col];\r\n const firstRow = this.selection ? this.selection.firstCell.y : this.row;\r\n const lastRow = this.selection ? this.selection.lastCell.y : this.row;\r\n const firstColumn = this.selection ? this.selection.firstCell.x : this.col;\r\n const lastColumn = this.selection ? this.selection.lastCell.x : this.col;\r\n switch (operation) {\r\n case TableOperation.InsertAbove:\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n this.cells.splice(firstRow, 0, currentRow.map(cloneCell));\r\n }\r\n break;\r\n case TableOperation.InsertBelow:\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n let newRow = lastRow + this.countSpanAbove(lastRow, this.col);\r\n this.cells.splice(\r\n newRow,\r\n 0,\r\n this.cells[newRow - 1].map((cell, colIndex) => {\r\n let nextCell = this.getCell(newRow, colIndex);\r\n\r\n if (nextCell.spanAbove) {\r\n return cloneCell(nextCell);\r\n } else if (cell.spanLeft) {\r\n let newCell = cloneCell(cell);\r\n newCell.spanAbove = false;\r\n return newCell;\r\n } else {\r\n return {\r\n td: cloneNode(this.getTd(this.row!, colIndex)),\r\n };\r\n }\r\n })\r\n );\r\n }\r\n\r\n break;\r\n\r\n case TableOperation.InsertLeft:\r\n for (let i = firstColumn; i <= lastColumn; i++) {\r\n this.forEachCellOfCurrentColumn((cell, row) => {\r\n row.splice(i, 0, cloneCell(cell));\r\n });\r\n }\r\n\r\n break;\r\n case TableOperation.InsertRight:\r\n for (let i = firstColumn; i <= lastColumn; i++) {\r\n let newCol = lastColumn + this.countSpanLeft(this.row, lastColumn);\r\n this.forEachCellOfColumn(newCol - 1, (cell, row, i) => {\r\n let nextCell = this.getCell(i, newCol);\r\n let newCell: VCell;\r\n if (nextCell.spanLeft) {\r\n newCell = cloneCell(nextCell);\r\n } else if (cell.spanAbove) {\r\n newCell = cloneCell(cell);\r\n newCell.spanLeft = false;\r\n } else {\r\n newCell = {\r\n td: cloneNode(this.getTd(i, this.col!)),\r\n };\r\n }\r\n\r\n row.splice(newCol, 0, newCell);\r\n });\r\n }\r\n\r\n break;\r\n\r\n case TableOperation.DeleteRow:\r\n for (let rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\r\n this.forEachCellOfRow(rowIndex, (cell: VCell, i: number) => {\r\n let nextCell = this.getCell(rowIndex + 1, i);\r\n if (cell.td && cell.td.rowSpan > 1 && nextCell.spanAbove) {\r\n nextCell.td = cell.td;\r\n }\r\n });\r\n }\r\n const removedRows = this.selection\r\n ? this.selection.lastCell.y - this.selection.firstCell.y\r\n : 0;\r\n this.cells.splice(firstRow, removedRows + 1);\r\n if (this.cells.length === 0) {\r\n this.cells = null;\r\n }\r\n\r\n break;\r\n case TableOperation.DeleteColumn:\r\n let deletedColumns = 0;\r\n for (let colIndex = firstColumn; colIndex <= lastColumn; colIndex++) {\r\n this.forEachCellOfColumn(colIndex, (cell, row, i) => {\r\n let nextCell = this.getCell(i, colIndex + 1);\r\n if (cell.td && cell.td.colSpan > 1 && nextCell.spanLeft) {\r\n nextCell.td = cell.td;\r\n }\r\n const removedColumns = this.selection\r\n ? colIndex - deletedColumns\r\n : this.col!;\r\n row.splice(removedColumns, 1);\r\n });\r\n deletedColumns++;\r\n }\r\n if (this.cells?.length === 0 || this.cells?.every(row => row.length === 0)) {\r\n this.cells = null;\r\n }\r\n break;\r\n\r\n case TableOperation.MergeAbove:\r\n case TableOperation.MergeBelow:\r\n let rowStep = operation == TableOperation.MergeAbove ? -1 : 1;\r\n for (\r\n let rowIndex = this.row + rowStep;\r\n rowIndex >= 0 && rowIndex < this.cells.length;\r\n rowIndex += rowStep\r\n ) {\r\n let cell = this.getCell(rowIndex, this.col);\r\n if (cell.td && !cell.spanAbove) {\r\n let aboveCell = rowIndex < this.row ? cell : currentCell;\r\n let belowCell = rowIndex < this.row ? currentCell : cell;\r\n this.mergeCells(aboveCell, belowCell);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case TableOperation.MergeLeft:\r\n case TableOperation.MergeRight:\r\n let colStep = operation == TableOperation.MergeLeft ? -1 : 1;\r\n for (\r\n let colIndex = this.col + colStep;\r\n colIndex >= 0 && colIndex < this.cells[this.row].length;\r\n colIndex += colStep\r\n ) {\r\n let cell = this.getCell(this.row, colIndex);\r\n if (cell.td && !cell.spanLeft) {\r\n let leftCell = colIndex < this.col ? cell : currentCell;\r\n let rightCell = colIndex < this.col ? currentCell : cell;\r\n this.mergeCells(leftCell, rightCell, true /** horizontally */);\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case TableOperation.MergeCells:\r\n for (let colIndex = firstColumn; colIndex <= lastColumn; colIndex++) {\r\n for (let rowIndex = firstRow + 1; rowIndex <= lastRow; rowIndex++) {\r\n let cell = this.getCell(firstRow, colIndex);\r\n let nextCellBelow = this.getCell(rowIndex, colIndex);\r\n this.mergeCells(cell, nextCellBelow);\r\n }\r\n }\r\n for (let colIndex = firstColumn + 1; colIndex <= lastColumn; colIndex++) {\r\n let cell = this.getCell(firstRow, firstColumn);\r\n let nextCellRight = this.getCell(firstRow, colIndex);\r\n this.mergeCells(cell, nextCellRight, true /** horizontally */);\r\n }\r\n\r\n break;\r\n case TableOperation.DeleteTable:\r\n this.cells = null;\r\n break;\r\n\r\n case TableOperation.SplitVertically:\r\n if (currentCell.td && currentCell.td.rowSpan > 1) {\r\n this.getCell(this.row + 1, this.col).td = cloneNode(currentCell.td);\r\n } else {\r\n let splitRow = currentRow.map(cell => {\r\n return {\r\n td: cell == currentCell ? cloneNode(cell.td) : null,\r\n spanAbove: cell != currentCell,\r\n spanLeft: cell.spanLeft,\r\n };\r\n });\r\n this.cells.splice(this.row + 1, 0, splitRow);\r\n }\r\n break;\r\n\r\n case TableOperation.SplitHorizontally:\r\n if (currentCell.td && currentCell.td.colSpan > 1) {\r\n this.getCell(this.row, this.col + 1).td = cloneNode(currentCell.td);\r\n } else {\r\n this.forEachCellOfCurrentColumn((cell, row) => {\r\n row.splice(this.col! + 1, 0, {\r\n td: row == currentRow ? cloneNode(cell.td) : null,\r\n spanAbove: cell.spanAbove,\r\n spanLeft: row != currentRow,\r\n });\r\n });\r\n }\r\n break;\r\n case TableOperation.AlignCenter:\r\n this.table.style.marginLeft = 'auto';\r\n this.table.style.marginRight = 'auto';\r\n break;\r\n case TableOperation.AlignLeft:\r\n this.table.style.marginLeft = '';\r\n this.table.style.marginRight = 'auto';\r\n break;\r\n case TableOperation.AlignRight:\r\n this.table.style.marginLeft = 'auto';\r\n this.table.style.marginRight = '';\r\n break;\r\n case TableOperation.AlignCellCenter:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'center'\r\n );\r\n break;\r\n case TableOperation.AlignCellLeft:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'left'\r\n );\r\n break;\r\n case TableOperation.AlignCellRight:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'right'\r\n );\r\n break;\r\n case TableOperation.AlignCellTop:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'top',\r\n true /** isVertical */\r\n );\r\n break;\r\n case TableOperation.AlignCellMiddle:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'middle',\r\n true /** isVertical */\r\n );\r\n break;\r\n case TableOperation.AlignCellBottom:\r\n this.setAlignmentToSelectedCells(\r\n firstRow,\r\n lastRow,\r\n firstColumn,\r\n lastColumn,\r\n 'bottom',\r\n true /** isVertical */\r\n );\r\n break;\r\n }\r\n }\r\n\r\n setAlignmentToSelectedCells(\r\n firstRow: number,\r\n lastRow: number,\r\n firstColumn: number,\r\n lastColumn: number,\r\n alignmentType: string,\r\n isVertical?: boolean\r\n ) {\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n for (let j = firstColumn; j <= lastColumn; j++) {\r\n if (this.cells) {\r\n const cell = this.cells[i][j].td;\r\n if (isVertical && cell) {\r\n cell.style?.setProperty('vertical-align', alignmentType);\r\n const meta = getTableCellMetadata(cell);\r\n saveTableCellMetadata(cell, { ...meta, vAlignOverride: true });\r\n } else if (cell) {\r\n cell.style?.setProperty('text-align', alignmentType);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private mergeCells(cell: VCell, nextCell: VCell, horizontally?: boolean) {\r\n const checkSpans = horizontally\r\n ? cell.td?.rowSpan === nextCell.td?.rowSpan && !cell.spanLeft\r\n : cell.td?.colSpan === nextCell.td?.colSpan && !cell.spanAbove;\r\n if (cell.td && nextCell.td && checkSpans) {\r\n this.mergeCellContents(cell.td, nextCell.td);\r\n nextCell.td = null;\r\n if (horizontally) {\r\n nextCell.spanLeft = true;\r\n } else {\r\n nextCell.spanAbove = true;\r\n }\r\n }\r\n }\r\n\r\n private isEmptyCell(td: HTMLTableCellElement) {\r\n return td.childElementCount === 1 && getTagOfNode(td.firstChild) === 'BR';\r\n }\r\n\r\n private mergeCellContents(cellTd: HTMLTableCellElement, nextCellTd: HTMLTableCellElement) {\r\n if (this.isEmptyCell(nextCellTd)) {\r\n moveChildNodes(cellTd, nextCellTd, false /*keepExistingChildren*/);\r\n } else {\r\n const br = document.createElement('br');\r\n cellTd.appendChild(br);\r\n moveChildNodes(cellTd, nextCellTd, true /*keepExistingChildren*/);\r\n }\r\n }\r\n\r\n /**\r\n * Loop each cell of current column and invoke a callback function\r\n * @param callback The callback function to invoke\r\n */\r\n forEachCellOfCurrentColumn(callback: (cell: VCell, row: VCell[], i: number) => any) {\r\n this.forEachCellOfColumn(this.col, callback);\r\n }\r\n\r\n /**\r\n * Loop each table cell and get all the cells that share the same border from one side\r\n * The result is an array of table cell elements\r\n * @param borderPos The position of the border\r\n * @param getLeftCells Get left-hand-side or right-hand-side cells of the border\r\n *\r\n * Example, consider having a 3 by 4 table as below with merged and split cells\r\n *\r\n * | 1 | 4 | 7 | 8 |\r\n * | 5 | 9 |\r\n * | 3 | 10 |\r\n *\r\n * input => borderPos: the 3rd border, getLeftCells: true\r\n * output => [4, 5, 3]\r\n *\r\n * input => borderPos: the 3rd border, getLeftCells: false\r\n * output => [7, 9, 10]\r\n *\r\n * input => borderPos: the 2nd border, getLeftCells: true\r\n * output => [1]\r\n *\r\n * input => borderPos: the 2nd border, getLeftCells: false\r\n * output => [4]\r\n */\r\n getCellsWithBorder(borderPos: number, getLeftCells: boolean): HTMLTableCellElement[] {\r\n const cells: HTMLTableCellElement[] = [];\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n for (let j = 0; j < this.cells[i].length; j++) {\r\n const cell = this.getCell(i, j);\r\n if (cell.td) {\r\n const cellRect = normalizeRect(cell.td.getBoundingClientRect());\r\n\r\n if (cellRect) {\r\n let found: boolean = false;\r\n if (getLeftCells) {\r\n if (cellRect.right == borderPos) {\r\n found = true;\r\n cells.push(cell.td);\r\n } else if (found) {\r\n break;\r\n }\r\n } else {\r\n if (cellRect.left == borderPos) {\r\n found = true;\r\n cells.push(cell.td);\r\n } else if (found) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return cells;\r\n }\r\n\r\n /**\r\n * Loop each cell of current row and invoke a callback function\r\n * @param callback The callback function to invoke\r\n */\r\n forEachCellOfCurrentRow(callback: (cell: VCell, i: number) => any) {\r\n this.forEachCellOfRow(this.row, callback);\r\n }\r\n\r\n /**\r\n * Get a table cell using its row and column index. This function will always return an object\r\n * even if the given indexes don't exist in table.\r\n * @param row The row index\r\n * @param col The column index\r\n */\r\n getCell(row: number, col: number): VCell {\r\n return (this.cells && this.cells[row] && this.cells[row][col]) || {};\r\n }\r\n\r\n /**\r\n * Get current HTML table cell object. If the current table cell is a virtual expanded cell, return its root cell\r\n */\r\n getCurrentTd(): HTMLTableCellElement | null {\r\n return this.getTd(this.row, this.col);\r\n }\r\n\r\n /**\r\n * Get the Table Cell in a provided coordinate\r\n * @param row row of the cell\r\n * @param col column of the cell\r\n */\r\n getTd(row: number | undefined, col: number | undefined) {\r\n if (this.cells && row !== undefined && col !== undefined) {\r\n row = Math.min(this.cells.length - 1, row);\r\n col = this.cells[row] ? Math.min(this.cells[row].length - 1, col) : col;\r\n if (!isNaN(row) && !isNaN(col)) {\r\n while (row >= 0 && col >= 0) {\r\n let cell = this.getCell(row, col);\r\n if (cell.td) {\r\n return cell.td;\r\n } else if (cell.spanLeft) {\r\n col--;\r\n } else if (cell.spanAbove) {\r\n row--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private forEachCellOfColumn(\r\n col: number | undefined,\r\n callback: (cell: VCell, row: VCell[], i: number) => any\r\n ) {\r\n if (col !== undefined) {\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n callback(this.getCell(i, col), this.cells[i], i);\r\n }\r\n }\r\n }\r\n\r\n private forEachCellOfRow(row: number | undefined, callback: (cell: VCell, i: number) => any) {\r\n if (row !== undefined) {\r\n for (let i = 0; this.cells && i < this.cells[row].length; i++) {\r\n callback(this.getCell(row, i), i);\r\n }\r\n }\r\n }\r\n\r\n private recalculateSpans(row: number, col: number) {\r\n let td = this.getCell(row, col).td;\r\n if (td) {\r\n td.colSpan = this.countSpanLeft(row, col);\r\n td.rowSpan = this.countSpanAbove(row, col);\r\n if (td.colSpan == 1) {\r\n td.removeAttribute('colSpan');\r\n }\r\n if (td.rowSpan == 1) {\r\n td.removeAttribute('rowSpan');\r\n }\r\n }\r\n }\r\n\r\n private countSpanLeft(row: number, col: number) {\r\n let result = 1;\r\n for (let i = col + 1; this.cells && i < this.cells[row].length; i++) {\r\n let cell = this.getCell(row, i);\r\n if (cell.td || !cell.spanLeft) {\r\n break;\r\n }\r\n result++;\r\n }\r\n return result;\r\n }\r\n\r\n private countSpanAbove(row: number, col: number) {\r\n let result = 1;\r\n for (let i = row + 1; this.cells && i < this.cells.length; i++) {\r\n let cell = this.getCell(i, col);\r\n if (cell.td || !cell.spanAbove) {\r\n break;\r\n }\r\n result++;\r\n }\r\n return result;\r\n }\r\n\r\n private normalizeEmptyTableCells() {\r\n for (let i = 0, row; (row = this.table.rows[i]); i++) {\r\n for (let j = 0, cell; (cell = row.cells[j]); j++) {\r\n if (cell) {\r\n if (!cell.innerHTML || !cell.innerHTML.trim()) {\r\n cell.appendChild(document.createElement('br'));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* normalize width/height for each cell in the table */\r\n public normalizeTableCellSize(zoomScale?: number | SizeTransformer) {\r\n // remove width/height for each row\r\n for (let i = 0, row; (row = this.table.rows[i]); i++) {\r\n row.removeAttribute('width');\r\n row.style.setProperty('width', null);\r\n row.removeAttribute('height');\r\n row.style.setProperty('height', null);\r\n }\r\n\r\n // set width/height for each cell\r\n for (let i = 0; this.cells && i < this.cells.length; i++) {\r\n for (let j = 0; j < this.cells[i].length; j++) {\r\n const cell = this.cells[i][j];\r\n if (cell) {\r\n const func =\r\n typeof zoomScale == 'number' ? (n: number) => n / zoomScale : zoomScale;\r\n const width = cell.width || 0;\r\n const height = cell.height || 0;\r\n\r\n setHTMLElementSizeInPx(\r\n cell.td,\r\n func?.(width) || width,\r\n func?.(height) || height\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private normalizeSize(sizeTransformer: SizeTransformer | undefined) {\r\n this.normalizeEmptyTableCells();\r\n this.normalizeTableCellSize(sizeTransformer);\r\n\r\n const rect = this.table.getBoundingClientRect();\r\n\r\n // Make sure table width/height is fixed to avoid shifting effect\r\n setHTMLElementSizeInPx(\r\n this.table,\r\n sizeTransformer?.(rect.width) || rect.width,\r\n sizeTransformer?.(rect.height) || rect.height\r\n );\r\n }\r\n}\r\n\r\nfunction setHTMLElementSizeInPx(\r\n element: HTMLElement | null | undefined,\r\n newWidth: number,\r\n newHeight: number\r\n) {\r\n if (!!element) {\r\n element.removeAttribute('width');\r\n element.removeAttribute('height');\r\n element.style.boxSizing = 'border-box';\r\n element.style.width = `${newWidth}px`;\r\n element.style.height = `${newHeight}px`;\r\n }\r\n}\r\n\r\nfunction getTableFromTd(td: HTMLTableCellElement) {\r\n let result: Element | null = td;\r\n for (; result && result.tagName != 'TABLE'; result = result.parentElement) {}\r\n return result;\r\n}\r\n\r\n/**\r\n * Clone a table cell\r\n * @param cell The cell to clone\r\n */\r\nfunction cloneCell(cell: VCell): VCell {\r\n return {\r\n td: cloneNode(cell.td),\r\n spanAbove: cell.spanAbove,\r\n spanLeft: cell.spanLeft,\r\n };\r\n}\r\n\r\n/**\r\n * Clone a node without its children.\r\n * @param node The node to clone\r\n */\r\nfunction cloneNode(node: T | null | undefined): T | null {\r\n let newNode = node ? node.cloneNode(false /*deep*/) : null;\r\n if (safeInstanceOf(newNode, 'HTMLTableCellElement')) {\r\n newNode.removeAttribute('id');\r\n if (!newNode.firstChild) {\r\n newNode.appendChild(node!.ownerDocument!.createElement('br'));\r\n }\r\n }\r\n return newNode;\r\n}\r\n","import changeElementTag from '../utils/changeElementTag';\nimport setColor from '../utils/setColor';\nimport { DarkColorHandler, TableBorderFormat, TableFormat, VCell } from 'roosterjs-editor-types';\nimport { getTableCellMetadata } from './tableCellInfo';\nconst TRANSPARENT = 'transparent';\nconst TABLE_CELL_TAG_NAME = 'TD';\nconst TABLE_HEADER_TAG_NAME = 'TH';\n\n/**\n * @internal\n * Apply the given table format to this virtual table\n * @param format Table format to apply\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n */\nexport default function applyTableFormat(\n table: HTMLTableElement,\n cells: VCell[][],\n format: Required,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!format) {\n return;\n }\n table.style.borderCollapse = 'collapse';\n setBordersType(cells, format);\n setCellFormat(cells, format, darkColorHandler);\n setFirstColumnFormat(cells, format);\n setHeaderRowFormat(cells, format, darkColorHandler);\n}\n\n/**\n * Check if the cell has shade\n * @param cell\n * @returns\n */\nfunction hasCellShade(cell: VCell) {\n if (!cell.td) {\n return false;\n }\n\n return !!getTableCellMetadata(cell.td)?.bgColorOverride;\n}\n\n/**\n * Check if the cell has vertical align\n * @param cell\n * @returns\n */\nfunction hasValign(cell: VCell) {\n if (!cell.td) {\n return false;\n }\n\n return !!getTableCellMetadata(cell.td)?.vAlignOverride;\n}\n\n/**\n * Set color and vertical align to the table\n * @param format the format that must be applied\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n */\nfunction setCellFormat(\n cells: VCell[][],\n format: TableFormat,\n darkColorHandler?: DarkColorHandler | null\n) {\n const color = (index: number) => (index % 2 === 0 ? format.bgColorEven : format.bgColorOdd);\n const { hasBandedRows, hasBandedColumns, bgColorOdd, bgColorEven } = format;\n const shouldColorWholeTable = !hasBandedRows && bgColorOdd === bgColorEven ? true : false;\n cells.forEach((row, index) => {\n row.forEach(cell => {\n if (cell.td) {\n // Set cell color\n if (!hasCellShade(cell)) {\n if (hasBandedRows) {\n const backgroundColor = color(index);\n setColor(\n cell.td,\n backgroundColor || TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n } else if (shouldColorWholeTable) {\n setColor(\n cell.td,\n format.bgColorOdd || TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n } else {\n setColor(\n cell.td,\n TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n }\n // Set cell vertical align\n if (format.verticalAlign && !hasValign(cell)) {\n cell.td.style.verticalAlign = format.verticalAlign;\n }\n }\n });\n });\n if (hasBandedColumns) {\n cells.forEach(row => {\n row.forEach((cell, index) => {\n const backgroundColor = color(index);\n if (cell.td && backgroundColor && !hasCellShade(cell)) {\n setColor(\n cell.td,\n backgroundColor,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n });\n });\n }\n}\n\n/**\n * Set color to borders of an table\n * @param format\n * @returns\n */\nfunction setBorderColors(td: HTMLTableCellElement, format: Partial) {\n td.style.borderTop = getBorderStyle(format.topBorderColor);\n td.style.borderLeft = getBorderStyle(format.verticalBorderColor);\n td.style.borderRight = getBorderStyle(format.verticalBorderColor);\n td.style.borderBottom = getBorderStyle(format.bottomBorderColor);\n}\n\n/**\n * Format the border type\n * @returns\n */\nfunction formatBorders(\n format: TableFormat,\n td: HTMLTableCellElement,\n isFirstRow: boolean,\n isLastRow: boolean,\n isFirstColumn: boolean,\n isLastColumn: boolean\n) {\n setBorderColors(td, format);\n switch (format.tableBorderFormat) {\n case TableBorderFormat.DEFAULT:\n return;\n case TableBorderFormat.LIST_WITH_SIDE_BORDERS:\n if (!isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (!isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.FIRST_COLUMN_HEADER_EXTERNAL:\n if (!isFirstRow) {\n td.style.borderTopColor = TRANSPARENT;\n }\n\n if (!isLastRow && !isFirstRow) {\n td.style.borderBottomColor = TRANSPARENT;\n }\n if (!isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (!isLastColumn && !isFirstColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstColumn && isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.NO_HEADER_BORDERS:\n if (isFirstRow) {\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n break;\n case TableBorderFormat.NO_SIDE_BORDERS:\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isLastColumn) {\n td.style.borderRightColor = TRANSPARENT;\n }\n break;\n case TableBorderFormat.ESPECIAL_TYPE_1:\n if (isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderLeftColor = format.verticalBorderColor || TRANSPARENT;\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n td.style.borderTopColor = format.topBorderColor || TRANSPARENT;\n }\n break;\n case TableBorderFormat.ESPECIAL_TYPE_2:\n if (isFirstRow) {\n td.style.borderRightColor = TRANSPARENT;\n td.style.borderLeftColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderLeftColor = format.verticalBorderColor || TRANSPARENT;\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n td.style.borderTopColor = format.topBorderColor || TRANSPARENT;\n }\n if (!isFirstRow && !isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n\n break;\n case TableBorderFormat.ESPECIAL_TYPE_3:\n if (isFirstRow) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n }\n if (!isFirstRow && !isFirstColumn) {\n td.style.borderLeftColor = TRANSPARENT;\n td.style.borderBottomColor = TRANSPARENT;\n td.style.borderTopColor = TRANSPARENT;\n td.style.borderRightColor = TRANSPARENT;\n }\n if (isFirstRow && isFirstColumn) {\n td.style.borderBottomColor = format.bottomBorderColor || TRANSPARENT;\n }\n break;\n }\n}\n\n/**\n * Organize the borders of table according to a border type\n * @param format\n * @returns\n */\nfunction setBordersType(cells: VCell[][], format: TableFormat) {\n cells.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (cell.td) {\n formatBorders(\n format,\n cell.td,\n rowIndex === 0,\n rowIndex === cells.length - 1,\n cellIndex === 0,\n cellIndex === row.length - 1\n );\n }\n });\n });\n}\n\n/**\n * Apply custom design to the first table column\n * @param format\n * @returns\n */\nfunction setFirstColumnFormat(cells: VCell[][], format: Partial) {\n if (!format.hasFirstColumn) {\n cells.forEach(row => {\n row.forEach((cell, cellIndex) => {\n if (cell.td && cellIndex === 0) {\n cell.td = changeElementTag(\n cell.td,\n TABLE_CELL_TAG_NAME\n ) as HTMLTableCellElement;\n cell.td.scope = '';\n }\n });\n });\n return;\n }\n cells.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (cell.td && cellIndex === 0) {\n if (rowIndex !== 0 && !hasCellShade(cell)) {\n cell.td.style.borderTopColor = TRANSPARENT;\n setColor(\n cell.td,\n TRANSPARENT,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */\n );\n }\n if (rowIndex !== cells.length - 1 && rowIndex !== 0) {\n cell.td.style.borderBottomColor = TRANSPARENT;\n }\n cell.td = changeElementTag(cell.td, TABLE_HEADER_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = 'col';\n }\n });\n });\n}\n\n/**\n * Apply custom design to the Header Row\n * @param format\n * @param darkColorHandler An object to handle dark background colors, if not passed the cell background color will not be set\n * @returns\n */\nfunction setHeaderRowFormat(\n cells: VCell[][],\n format: TableFormat,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!format.hasHeaderRow) {\n cells[0]?.forEach(cell => {\n if (cell.td) {\n cell.td = changeElementTag(cell.td, TABLE_CELL_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = '';\n }\n });\n return;\n }\n cells[0]?.forEach(cell => {\n if (cell.td && format.headerRowColor) {\n if (!hasCellShade(cell)) {\n setColor(\n cell.td,\n format.headerRowColor,\n true /** isBackgroundColor*/,\n undefined /** isDarkMode **/,\n true /** shouldAdaptFontColor */,\n darkColorHandler\n );\n }\n cell.td.style.borderRightColor = format.headerRowColor;\n cell.td.style.borderLeftColor = format.headerRowColor;\n cell.td.style.borderTopColor = format.headerRowColor;\n cell.td = changeElementTag(cell.td, TABLE_HEADER_TAG_NAME) as HTMLTableCellElement;\n cell.td.scope = 'row';\n }\n });\n}\n\nfunction getBorderStyle(style?: string | null) {\n const color = style ? style : 'transparent';\n return 'solid 1px ' + color;\n}\n","import { getTableCellMetadata, saveTableCellMetadata } from './tableCellInfo';\n/**\n * Clone css styles from a element an set to another.\n * @param cell cell that will receive the styles\n * @param styledCell cell where the styles will be clone\n */\n\nexport default function cloneCellStyles(\n cell: HTMLTableCellElement,\n styledCell: HTMLTableCellElement\n) {\n const styles = styledCell.getAttribute('style');\n if (styles) {\n cell.setAttribute('style', styles);\n const meta = getTableCellMetadata(styledCell);\n if (meta) {\n saveTableCellMetadata(cell, { ...meta });\n }\n }\n}\n","import VTable from './VTable';\nimport { TableSelection } from 'roosterjs-editor-types';\n\n/**\n * Check if the whole table is selected\n * @param vTable VTable to check whether all cells are selected\n * @param selection Table selection with first cell selected and last cell selected coordinates.\n * @returns\n */\nexport default function isWholeTableSelected(vTable: VTable, selection: TableSelection) {\n if (!selection || !vTable.cells) {\n return false;\n }\n const { firstCell, lastCell } = selection;\n const rowsLength = vTable.cells.length - 1;\n const rowCells = vTable.cells[rowsLength];\n if (!rowCells) {\n return false;\n }\n const colIndex = rowCells.length - 1;\n const firstX = firstCell.x;\n const firstY = firstCell.y;\n const lastX = lastCell.x;\n const lastY = lastCell.y;\n return firstX == 0 && firstY == 0 && lastX == colIndex && lastY == rowsLength;\n}\n","import cloneCellStyles from './cloneCellStyles';\nimport moveChildNodes from '../utils/moveChildNodes';\nimport VTable from './VTable';\nimport { NodePosition, TableOperation } from 'roosterjs-editor-types';\n\n/**\n *\n * Pastes a table inside another, modifying the original to create a merged one\n * @param currentTd The cell where the cursor is in the table to paste into\n * @param rootNodeToInsert A Node containing the table to be inserted\n * @param position The position to paste the table\n * @param range The selected range of the table\n *\n * Position and range are here for when table selection allows to move pivot point\n */\nexport default function pasteTable(\n currentTd: HTMLTableCellElement,\n rootNodeToInsert: HTMLTableElement,\n position?: NodePosition,\n range?: Range\n) {\n // This is the table on the clipboard\n let newTable = new VTable(rootNodeToInsert);\n // This table is already on the editor\n let currentTable = new VTable(currentTd);\n\n // Which cell in the currentTable is the cursor placed\n let cursorRow = currentTable.row!;\n let cursorCol = currentTable.col!;\n\n // Total rows and columns of the final table\n let rows = cursorRow + newTable.cells?.length! ?? 0;\n let columns = cursorCol + newTable.cells?.[0].length! ?? 0;\n\n // Add new rows\n currentTable.row = currentTable.cells!.length! - 1;\n while (currentTable.cells!.length! < rows) {\n currentTable.edit(TableOperation.InsertBelow);\n }\n\n // Add new columns\n currentTable.col = currentTable.cells![0].length! - 1;\n while (currentTable.cells![0].length! < columns) {\n currentTable.edit(TableOperation.InsertRight);\n }\n\n // Create final table\n for (let i = cursorRow; i < rows; i++) {\n for (let j = cursorCol; j < columns; j++) {\n let cell = currentTable.getCell(i, j);\n let newCell = newTable.getTd(i - cursorRow, j - cursorCol);\n if (cell.td && newCell) {\n moveChildNodes(cell.td, newCell);\n cloneCellStyles(cell.td, newCell);\n } else {\n cell.td = document.createElement('td');\n }\n }\n }\n\n currentTable.writeBack();\n}\n","import { createBooleanDefinition, createObjectDefinition } from '../metadata/definitionCreators';\nimport { getMetadata, setMetadata } from '../metadata/metadata';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\n\nconst BooleanDefinition = createBooleanDefinition(\n true /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst TableCellFormatMetadata = createObjectDefinition>(\n {\n bgColorOverride: BooleanDefinition,\n vAlignOverride: BooleanDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * @internal\n * Get the format info of a table cell\n * @param cell The table cell to use\n */\nexport function getTableCellMetadata(cell: HTMLTableCellElement) {\n return getMetadata(cell, TableCellFormatMetadata);\n}\n\n/**\n * Add metadata to a cell\n * @param cell The table cell to add the metadata\n * @param format The format of the table\n */\nexport function saveTableCellMetadata(cell: HTMLTableCellElement, format: TableCellMetadataFormat) {\n if (cell && format) {\n setMetadata(cell, format, TableCellFormatMetadata);\n }\n}\n","import { getMetadata, setMetadata } from '../metadata/metadata';\nimport { TableBorderFormat, TableFormat } from 'roosterjs-editor-types';\nimport {\n createBooleanDefinition,\n createNumberDefinition,\n createObjectDefinition,\n createStringDefinition,\n} from '../metadata/definitionCreators';\n\nconst NullStringDefinition = createStringDefinition(\n false /** isOptional */,\n undefined /** value */,\n true /** allowNull */\n);\n\nconst BooleanDefinition = createBooleanDefinition(false /** isOptional */);\n\nconst TableFormatMetadata = createObjectDefinition>(\n {\n topBorderColor: NullStringDefinition,\n bottomBorderColor: NullStringDefinition,\n verticalBorderColor: NullStringDefinition,\n hasHeaderRow: BooleanDefinition,\n headerRowColor: NullStringDefinition,\n hasFirstColumn: BooleanDefinition,\n hasBandedColumns: BooleanDefinition,\n hasBandedRows: BooleanDefinition,\n bgColorEven: NullStringDefinition,\n bgColorOdd: NullStringDefinition,\n tableBorderFormat: createNumberDefinition(\n false /** isOptional */,\n undefined /* value */,\n TableBorderFormat.DEFAULT /* first table border format, TODO: Use Min/Max to specify valid values */,\n TableBorderFormat.CLEAR /* last table border format, , TODO: Use Min/Max to specify valid values */\n ),\n keepCellShade: createBooleanDefinition(true /** isOptional */),\n verticalAlign: NullStringDefinition,\n },\n false /* isOptional */,\n true /** allowNull */\n);\n\n/**\n * Get the format info of a table\n * If the table does not have a info saved, it will be retrieved from the css styles\n * @param table The table that has the info\n */\nexport function getTableFormatInfo(table: HTMLTableElement) {\n return getMetadata(table, TableFormatMetadata);\n}\n\n/**\n * @internal\n * Save the format info of a table\n * @param table The table the info will be saved\n * @param format The format of the table\n */\nexport function saveTableInfo(table: HTMLTableElement, format: TableFormat) {\n if (table && format) {\n setMetadata(table, format, TableFormatMetadata);\n }\n}\n","import { BrowserInfo } from 'roosterjs-editor-types';\r\n\r\nconst isAndroidRegex = /android/i;\r\n\r\n/**\r\n * Get current browser information from user agent string\r\n * @param userAgent The userAgent string of a browser\r\n * @param appVersion The appVersion string of a browser\r\n * @param vendor The vendor string of a browser\r\n * @returns The BrowserInfo object calculated from the given userAgent and appVersion\r\n */\r\nexport function getBrowserInfo(\r\n userAgent: string,\r\n appVersion: string,\r\n vendor?: string\r\n): BrowserInfo {\r\n // checks whether the browser is running in IE\r\n // IE11 will use rv in UA instead of MSIE. Unfortunately Firefox also uses this. We should also look for \"Trident\" to confirm this.\r\n // There have been cases where companies using older version of IE and custom UserAgents have broken this logic (e.g. IE 10 and KellyServices)\r\n // therefore we should check that the Trident/rv combo is not just from an older IE browser\r\n let isIE11OrGreater = userAgent.indexOf('rv:') != -1 && userAgent.indexOf('Trident') != -1;\r\n let isIE = userAgent.indexOf('MSIE') != -1 || isIE11OrGreater;\r\n\r\n // IE11+ may also have 'Chrome', 'Firefox' and 'Safari' in user agent. But it will have 'trident' as well\r\n let isChrome = false;\r\n let isFirefox = false;\r\n let isSafari = false;\r\n let isEdge = false;\r\n let isWebKit = userAgent.indexOf('WebKit') != -1;\r\n let isMobileOrTablet = false;\r\n\r\n // Reference: http://detectmobilebrowsers.com/\r\n // The default regex on the website doesn't consider tablet.\r\n // To support tablet, add |android|ipad|playbook|silk to the first regex according to the info in /about page\r\n ((userAgentOrVendor: string) => {\r\n if (\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\r\n userAgentOrVendor\r\n ) ||\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n userAgentOrVendor.substr(0, 4)\r\n )\r\n ) {\r\n isMobileOrTablet = true;\r\n }\r\n })(userAgent || vendor || '');\r\n\r\n if (!isIE) {\r\n isChrome = userAgent.indexOf('Chrome') != -1;\r\n isFirefox = userAgent.indexOf('Firefox') != -1;\r\n if (userAgent.indexOf('Safari') != -1) {\r\n // Android and Chrome have Safari in the user string\r\n isSafari = userAgent.indexOf('Chrome') == -1 && userAgent.indexOf('Android') == -1;\r\n }\r\n\r\n // Sample Edge UA: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10121\r\n isEdge = userAgent.indexOf('Edge') != -1;\r\n\r\n // When it is edge, it should not be chrome or firefox. and it is also not webkit\r\n if (isEdge) {\r\n isWebKit = isChrome = isFirefox = false;\r\n }\r\n }\r\n\r\n let isMac = appVersion.indexOf('Mac') != -1;\r\n let isWin = appVersion.indexOf('Win') != -1 || appVersion.indexOf('NT') != -1;\r\n let isAndroid = isAndroidRegex.test(userAgent);\r\n\r\n return {\r\n isMac,\r\n isWin,\r\n isWebKit,\r\n isIE,\r\n isIE11OrGreater,\r\n isSafari,\r\n isChrome,\r\n isFirefox,\r\n isEdge,\r\n isIEOrEdge: isIE || isEdge,\r\n isAndroid,\r\n isMobileOrTablet,\r\n };\r\n}\r\n\r\n/**\r\n * Browser object contains browser and operating system information of current environment\r\n */\r\nexport const Browser =\r\n typeof window !== 'undefined' && window\r\n ? getBrowserInfo(\r\n window.navigator.userAgent,\r\n window.navigator.appVersion,\r\n window.navigator.vendor\r\n )\r\n : {};\r\n","import setColor from './setColor';\r\nimport { DarkColorHandler, DefaultFormat } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Apply format to an HTML element\r\n * @param element The HTML element to apply format to\r\n * @param format The format to apply\r\n * @param isDarkMode Whether the content should be formatted in dark mode\r\n * @param darkColorHandler An optional dark color handler object. When it is passed, we will use this handler to do variable-based dark color instead of original dataset base dark color\r\n */\r\nexport default function applyFormat(\r\n element: HTMLElement,\r\n format: DefaultFormat,\r\n isDarkMode?: boolean,\r\n darkColorHandler?: DarkColorHandler | null\r\n) {\r\n if (format) {\r\n let elementStyle = element.style;\r\n let {\r\n fontFamily,\r\n fontSize,\r\n textColor,\r\n textColors,\r\n backgroundColor,\r\n backgroundColors,\r\n bold,\r\n italic,\r\n underline,\r\n } = format;\r\n\r\n if (fontFamily) {\r\n elementStyle.fontFamily = fontFamily;\r\n }\r\n if (fontSize) {\r\n elementStyle.fontSize = fontSize;\r\n }\r\n\r\n if (textColors) {\r\n setColor(\r\n element,\r\n textColors,\r\n false /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n } else if (textColor) {\r\n setColor(\r\n element,\r\n textColor,\r\n false /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n }\r\n\r\n if (backgroundColors) {\r\n setColor(\r\n element,\r\n backgroundColors,\r\n true /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n } else if (backgroundColor) {\r\n setColor(\r\n element,\r\n backgroundColor,\r\n true /*isBackground*/,\r\n isDarkMode,\r\n false /*shouldAdaptFontColor*/,\r\n darkColorHandler\r\n );\r\n }\r\n\r\n if (bold) {\r\n elementStyle.fontWeight = 'bold';\r\n }\r\n if (italic) {\r\n elementStyle.fontStyle = 'italic';\r\n }\r\n if (underline) {\r\n elementStyle.textDecoration = 'underline';\r\n }\r\n }\r\n}\r\n","import getComputedStyles from './getComputedStyles';\r\nimport getTagOfNode from './getTagOfNode';\r\nimport moveChildNodes from './moveChildNodes';\r\n\r\n/**\r\n * Change tag of an HTML Element to a new one, and replace it from DOM tree\r\n * @param element The element to change tag\r\n * @param newTag New tag to change to\r\n * @returns The new element with new tag\r\n */\r\nexport default function changeElementTag(\r\n element: HTMLElement,\r\n newTag: K\r\n): HTMLElementTagNameMap[K];\r\n\r\n/**\r\n * Change tag of an HTML Element to a new one, and replace it from DOM tree\r\n * @param element The element to change tag\r\n * @param newTag New tag to change to\r\n * @returns The new element with new tag\r\n */\r\nexport default function changeElementTag(element: HTMLElement, newTag: string): HTMLElement | null;\r\n\r\nexport default function changeElementTag(element: HTMLElement, newTag: string): HTMLElement | null {\r\n if (!element || !newTag) {\r\n return null;\r\n }\r\n\r\n const origianlTag = getTagOfNode(element);\r\n\r\n if (origianlTag == newTag.toUpperCase()) {\r\n // Already in the target tag, no need to change\r\n return element;\r\n }\r\n\r\n let newElement = element.ownerDocument.createElement(newTag);\r\n\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n let attr = element.attributes[i];\r\n newElement.setAttribute(attr.name, attr.value);\r\n }\r\n\r\n moveChildNodes(newElement, element);\r\n\r\n if (origianlTag == 'P' || getTagOfNode(newElement) == 'P') {\r\n [newElement.style.marginTop, newElement.style.marginBottom] = getComputedStyles(element, [\r\n 'margin-top',\r\n 'margin-bottom',\r\n ]);\r\n }\r\n\r\n if (element.parentNode) {\r\n element.parentNode.replaceChild(newElement, element);\r\n }\r\n\r\n return newElement;\r\n}\r\n","import contains from './contains';\r\nimport splitParentNode from './splitParentNode';\r\nimport toArray from '../jsUtils/toArray';\r\n\r\n/**\r\n * Collapse nodes within the given start and end nodes to their common ancestor node,\r\n * split parent nodes if necessary\r\n * @param root The root node of the scope\r\n * @param start The start node\r\n * @param end The end node\r\n * @param canSplitParent True to allow split parent node there are nodes before start or after end under the same parent\r\n * and the returned nodes will be all nodes from start through end after splitting\r\n * False to disallow split parent\r\n * @returns When canSplitParent is true, returns all node from start through end after splitting,\r\n * otherwise just return start and end\r\n */\r\nexport default function collapseNodes(\r\n root: Node,\r\n start: Node,\r\n end: Node,\r\n canSplitParent: boolean\r\n): Node[] {\r\n if (!contains(root, start) || !contains(root, end)) {\r\n return [];\r\n }\r\n\r\n start = collapse(root, start, end, true /*isStart*/, canSplitParent);\r\n end = collapse(root, end, start, false /*isStart*/, canSplitParent);\r\n\r\n if (contains(start, end, true /*treatSameNodeAsContain*/)) {\r\n return [start];\r\n } else if (contains(end, start)) {\r\n return [end];\r\n } else if (start.parentNode == end.parentNode) {\r\n let nodes: Node[] = start.parentNode ? toArray(start.parentNode?.childNodes) : [];\r\n let startIndex = nodes.indexOf(start);\r\n let endIndex = nodes.indexOf(end);\r\n return nodes.slice(startIndex, endIndex + 1);\r\n } else {\r\n return [start, end];\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * Collapse a node by traversing its parent nodes until we get the common ancestor node of node and ref node\r\n * @param root Root node, traversing will be limited under this scope\r\n * @param node The node to collapse\r\n * @param ref Ref node. The result will be the nearest common ancestor node of the given node and this ref node\r\n * @param isStart Whether the given node is start of the sequence of nodes to collapse\r\n * @param canSplitParent Whether splitting parent node is allowed\r\n * @returns The common ancestor node of the given node ref node\r\n */\r\nexport function collapse(\r\n root: Node,\r\n node: Node,\r\n ref: Node,\r\n isStart: boolean,\r\n canSplitParent: boolean\r\n): Node {\r\n while (node.parentNode != root && !contains(node.parentNode, ref)) {\r\n if ((isStart && node.previousSibling) || (!isStart && node.nextSibling)) {\r\n if (!canSplitParent) {\r\n break;\r\n }\r\n splitParentNode(node, isStart);\r\n }\r\n\r\n if (!node.parentNode) {\r\n break;\r\n }\r\n\r\n node = node.parentNode;\r\n }\r\n return node;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Test if a node contains another node\r\n * @param container The container node\r\n * @param contained The node to check if it is inside container\r\n * @param treatSameNodeAsContain When container and contained are the same node,\r\n * return true if this param is set to true, otherwise return false. Default value is false\r\n * @returns True if contained is inside container, or they are the same node when treatSameNodeAsContain is true.\r\n * Otherwise false.\r\n */\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Node | null | undefined,\r\n treatSameNodeAsContain?: boolean\r\n): boolean;\r\n\r\n/**\r\n * Test if a node contains a given range\r\n * @param container The container node\r\n * @param contained The range to check if it is inside container\r\n * @returns True if contained is inside container, otherwise false\r\n */\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Range | null | undefined\r\n): boolean;\r\n\r\nexport default function contains(\r\n container: Node | null | undefined,\r\n contained: Node | Range | null | undefined,\r\n treatSameNodeAsContain?: boolean\r\n): boolean {\r\n if (!container || !contained) {\r\n return false;\r\n }\r\n\r\n if (treatSameNodeAsContain && container == contained) {\r\n return true;\r\n }\r\n\r\n if (safeInstanceOf(contained, 'Range')) {\r\n contained = contained && contained.commonAncestorContainer;\r\n treatSameNodeAsContain = true;\r\n }\r\n\r\n if (contained && contained.nodeType == NodeType.Text) {\r\n contained = contained.parentNode;\r\n treatSameNodeAsContain = true;\r\n }\r\n\r\n if (container.nodeType != NodeType.Element && container.nodeType != NodeType.DocumentFragment) {\r\n return !!treatSameNodeAsContain && container == contained;\r\n }\r\n\r\n return (\r\n !!(treatSameNodeAsContain || container != contained) &&\r\n internalContains(container, contained)\r\n );\r\n}\r\n\r\nfunction internalContains(container: Node, contained: Node | null): boolean {\r\n if (container.contains) {\r\n return container.contains(contained);\r\n } else {\r\n while (contained) {\r\n if (contained == container) {\r\n return true;\r\n }\r\n\r\n contained = contained.parentNode;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\nimport safeInstanceOf from './safeInstanceOf';\nimport { Browser } from './Browser';\nimport { CreateElementData, KnownCreateElementDataIndex } from 'roosterjs-editor-types';\nimport type { CompatibleKnownCreateElementDataIndex } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * All known CreateElementData used by roosterjs to create elements\n */\nexport const KnownCreateElementData: Record = {\n [KnownCreateElementDataIndex.None]: { tag: '' },\n\n // Edge can sometimes lose current format when Enter to new line.\n // So here we add an extra SPAN for Edge to workaround this bug\n [KnownCreateElementDataIndex.EmptyLine]: Browser.isEdge\n ? { tag: 'div', children: [{ tag: 'span', children: [{ tag: 'br' }] }] }\n : { tag: 'div', children: [{ tag: 'br' }] },\n [KnownCreateElementDataIndex.BlockquoteWrapper]: {\n tag: 'blockquote',\n style: 'margin-top:0;margin-bottom:0',\n },\n [KnownCreateElementDataIndex.CopyPasteTempDiv]: {\n tag: 'div',\n style:\n 'width: 600px; height: 1px; overflow: hidden; position: fixed; top: 0; left; 0; -webkit-user-select: text',\n attributes: {\n contenteditable: 'true',\n },\n },\n [KnownCreateElementDataIndex.BlockListItem]: { tag: 'li', style: 'display:block' },\n [KnownCreateElementDataIndex.ContextMenuWrapper]: {\n tag: 'div',\n style: 'position: fixed; width: 0; height: 0',\n },\n [KnownCreateElementDataIndex.ImageEditWrapper]: {\n tag: 'span',\n style: 'max-width:100%;position:relative',\n children: [\n {\n tag: 'div',\n style: 'width:100%;height:100%;position:relative;overflow:hidden',\n },\n ],\n },\n [KnownCreateElementDataIndex.TableHorizontalResizer]: {\n tag: 'div',\n style: 'position: fixed; cursor: row-resize; user-select: none',\n },\n [KnownCreateElementDataIndex.TableVerticalResizer]: {\n tag: 'div',\n style: 'position: fixed; cursor: col-resize; user-select: none',\n },\n [KnownCreateElementDataIndex.TableResizerLTR]: {\n tag: 'div',\n style: 'position: fixed; cursor: nw-resize; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.TableResizerRTL]: {\n tag: 'div',\n style: 'position: fixed; cursor: ne-resize; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.TableSelector]: {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n },\n [KnownCreateElementDataIndex.EmptyLineFormatInSpan]: {\n tag: 'div',\n children: [{ tag: 'span', children: [{ tag: 'br' }] }],\n },\n};\n\n/**\n * Create DOM element from the given CreateElementData\n * @param elementData The CreateElementData or an index of a known CreateElementData used for creating this element\n * @param document The document to create the element from\n * @returns The root DOM element just created\n */\nexport default function createElement(\n elementData:\n | CreateElementData\n | KnownCreateElementDataIndex\n | CompatibleKnownCreateElementDataIndex,\n document: Document\n): Element | null {\n if (typeof elementData == 'number') {\n elementData = KnownCreateElementData[elementData];\n }\n\n if (!elementData || !elementData.tag) {\n return null;\n }\n\n const { tag, namespace, className, style, dataset, attributes, children } = elementData;\n const result = namespace\n ? document.createElementNS(namespace, tag)\n : document.createElement(tag);\n\n if (style) {\n result.setAttribute('style', style);\n }\n\n if (className) {\n result.className = className;\n }\n\n if (dataset && safeInstanceOf(result, 'HTMLElement')) {\n getObjectKeys(dataset).forEach(datasetName => {\n result.dataset[datasetName] = dataset[datasetName];\n });\n }\n\n if (attributes) {\n getObjectKeys(attributes).forEach(attrName => {\n result.setAttribute(attrName, attributes[attrName]);\n });\n }\n\n if (children) {\n children.forEach(child => {\n if (typeof child === 'string') {\n result.appendChild(document.createTextNode(child));\n } else if (child) {\n const childElement = createElement(child, document);\n if (childElement) {\n result.appendChild(childElement);\n }\n }\n });\n }\n\n return result;\n}\n","import contains from './contains';\r\nimport matchesSelector from './matchesSelector';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Find closest element ancestor start from the given node which matches the given selector\r\n * @param node Find ancestor start from this node\r\n * @param root Root node where the search should stop at. The return value can never be this node\r\n * @param selector The expected selector. If null, return the first HTML Element found from start node\r\n * @returns An HTML element which matches the given selector. If the given start node matches the selector,\r\n * returns the given node\r\n */\r\nexport default function findClosestElementAncestor(\r\n node: Node | null,\r\n root?: Node,\r\n selector?: string\r\n): HTMLElement | null {\r\n node = !node ? null : node.nodeType == NodeType.Element ? node : node.parentNode;\r\n let element = node && node.nodeType == NodeType.Element ? node : null;\r\n\r\n if (element && selector) {\r\n if (element.closest) {\r\n element = element.closest(selector) as HTMLElement;\r\n } else {\r\n while (element && element != root && !matchesSelector(element, selector)) {\r\n element = element.parentElement;\r\n }\r\n }\r\n }\r\n\r\n return !root || contains(root, element) ? element : null;\r\n}\r\n","import toArray from '../jsUtils/toArray';\r\n\r\n/**\r\n * @deprecated\r\n * Creates an HTML node array from html\r\n * @param html the html string to create HTML elements from\r\n * @param ownerDocument Owner document of the result HTML elements\r\n * @returns An HTML node array to represent the given html string\r\n */\r\nexport default function fromHtml(html: string, ownerDocument: HTMLDocument): Node[] {\r\n let element = ownerDocument.createElement('DIV');\r\n element.innerHTML = html;\r\n\r\n return toArray(element.childNodes);\r\n}\r\n","import findClosestElementAncestor from './findClosestElementAncestor';\r\n\r\n/**\r\n * Get computed styles of a node\r\n * @param node The node to get computed styles from\r\n * @param styleNames Names of style to get, can be a single name or an array.\r\n * Default value is font-family, font-size, color, background-color\r\n * @returns An array of the computed styles\r\n */\r\nexport default function getComputedStyles(\r\n node: Node,\r\n styleNames: string | string[] = ['font-family', 'font-size', 'color', 'background-color']\r\n): string[] {\r\n let element = findClosestElementAncestor(node);\r\n let result: string[] = [];\r\n styleNames = Array.isArray(styleNames) ? styleNames : [styleNames];\r\n if (element) {\r\n let win = element.ownerDocument.defaultView || window;\r\n let styles = win.getComputedStyle(element);\r\n\r\n if (styles) {\r\n for (let style of styleNames) {\r\n let value = styles.getPropertyValue(style) || '';\r\n value = style != 'font-family' ? value.toLowerCase() : value;\r\n value = style == 'font-size' ? px2Pt(value) : value;\r\n result.push(value);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * A shortcut for getComputedStyles() when only one style is to be retrieved\r\n * @param node The node to get style from\r\n * @param styleName The style name\r\n * @returns The style value\r\n */\r\nexport function getComputedStyle(node: Node, styleName: string): string {\r\n return getComputedStyles(node, styleName)[0] || '';\r\n}\r\n\r\nfunction px2Pt(px: string) {\r\n if (px && px.indexOf('px') == px.length - 2) {\r\n // Edge may not handle the floating computing well which causes the calculated value is a little less than actual value\r\n // So add 0.05 to fix it\r\n return Math.round(parseFloat(px) * 75 + 0.05) / 100 + 'pt';\r\n }\r\n return px;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\n\n/**\n * Get innerHTML of the given node\n * @param node The DOM node to get innerHTML from\n */\nexport default function getInnerHTML(node: HTMLElement | DocumentFragment) {\n if (safeInstanceOf(node, 'HTMLElement')) {\n return node.innerHTML;\n } else if (node) {\n const tempNode = node.ownerDocument.createElement('span');\n tempNode.appendChild(node.cloneNode(true /*deep*/));\n return tempNode.innerHTML;\n } else {\n return '';\n }\n}\n","import normalizeRect from './normalizeRect';\nimport { Rect } from 'roosterjs-editor-types';\n\n/**\n * Get the intersected Rect of elements provided\n *\n * @example\n * The result of the following Elements Rects would be:\n {\n top: Element2.top,\n bottom: Element1.bottom,\n left: Element2.left,\n right: Element2.right\n }\n +-------------------------+\n | Element 1 |\n | +-----------------+ |\n | | Element2 | |\n | | | |\n | | | |\n +-------------------------+\n | |\n +-----------------+\n\n * @param elements Elements to use.\n * @param additionalRects additional rects to use\n * @returns If the Rect is valid return the rect, if not, return null.\n */\nexport default function getIntersectedRect(\n elements: HTMLElement[],\n additionalRects: Rect[] = []\n): Rect | null {\n const rects = elements\n .map(element => normalizeRect(element.getBoundingClientRect()))\n .concat(additionalRects)\n .filter(element => !!element) as Rect[];\n\n const result: Rect = {\n top: Math.max(...rects.map(r => r.top)),\n bottom: Math.min(...rects.map(r => r.bottom)),\n left: Math.max(...rects.map(r => r.left)),\n right: Math.min(...rects.map(r => r.right)),\n };\n\n return result.top < result.bottom && result.left < result.right ? result : null;\n}\n","import shouldSkipNode from './shouldSkipNode';\r\nimport { getLeafSibling } from './getLeafSibling';\r\n\r\n/**\r\n * Get first/last leaf node of the given root node.\r\n * @param rootNode Root node to get leaf node from\r\n * @param isFirst True to get first leaf node, false to get last leaf node\r\n */\r\nfunction getLeafNode(rootNode: Node, isFirst: boolean): Node | null {\r\n let getChild = (node: Node): Node | null => (isFirst ? node.firstChild : node.lastChild);\r\n let result = getChild(rootNode);\r\n while (result && getChild(result)) {\r\n result = getChild(result);\r\n }\r\n\r\n if (result && shouldSkipNode(result)) {\r\n result = getLeafSibling(rootNode, result, isFirst);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get the first meaningful leaf node\r\n * @param rootNode Root node to get leaf node from\r\n */\r\nexport function getFirstLeafNode(rootNode: Node): Node | null {\r\n return getLeafNode(rootNode, true /*isFirst*/);\r\n}\r\n\r\n/**\r\n * Get the last meaningful leaf node\r\n * @param rootNode Root node to get leaf node from\r\n */\r\nexport function getLastLeafNode(rootNode: Node): Node | null {\r\n return getLeafNode(rootNode, false /*isFirst*/);\r\n}\r\n","import contains from './contains';\r\nimport getTagOfNode from './getTagOfNode';\r\nimport shouldSkipNode from './shouldSkipNode';\r\n\r\n/**\r\n * @internal\r\n * This walks forwards/backwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param isNext True to get next leaf sibling node, false to get previous leaf sibling node\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n * @param ignoreSpace (Optional) Ignore pure space text node when check if the node should be skipped\r\n */\r\nexport function getLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n isNext: boolean,\r\n skipTags?: string[],\r\n ignoreSpace?: boolean\r\n): Node | null {\r\n let result = null;\r\n let getSibling = isNext\r\n ? (node: Node | null) => node?.nextSibling || null\r\n : (node: Node | null) => node?.previousSibling || null;\r\n let getChild = isNext ? (node: Node) => node.firstChild : (node: Node) => node.lastChild;\r\n if (contains(rootNode, startNode)) {\r\n let curNode: Node | null = startNode;\r\n let shouldContinue: boolean = true;\r\n\r\n while (shouldContinue) {\r\n // Find next/previous node, starting from next/previous sibling, then one level up to find next/previous sibling from parent\r\n // till a non-null nextSibling/previousSibling is found or the ceiling is encountered (rootNode)\r\n let parentNode = curNode?.parentNode || null;\r\n curNode = getSibling(curNode);\r\n while (!curNode && parentNode != rootNode) {\r\n curNode = getSibling(parentNode);\r\n parentNode = parentNode?.parentNode || null;\r\n }\r\n\r\n // Now traverse down to get first/last child\r\n while (\r\n curNode &&\r\n (!skipTags || skipTags.indexOf(getTagOfNode(curNode)) < 0) &&\r\n getChild(curNode)\r\n ) {\r\n curNode = getChild(curNode);\r\n }\r\n\r\n // Check special nodes (i.e. node that has a display:none etc.) and continue looping if so\r\n shouldContinue = !!curNode && shouldSkipNode(curNode, ignoreSpace);\r\n if (!shouldContinue) {\r\n // Found a good leaf node, assign and exit\r\n result = curNode;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * This walks forwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\nexport function getNextLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n skipTags?: string[]\r\n): Node | null {\r\n return getLeafSibling(rootNode, startNode, true /*isNext*/, skipTags);\r\n}\r\n\r\n/**\r\n * This walks backwards DOM tree to get next meaningful node\r\n * @param rootNode Root node to scope the leaf sibling node\r\n * @param startNode current node to get sibling node from\r\n * @param skipTags (Optional) tags that child elements will be skipped\r\n */\r\nexport function getPreviousLeafSibling(\r\n rootNode: Node,\r\n startNode: Node,\r\n skipTags?: string[]\r\n): Node | null {\r\n return getLeafSibling(rootNode, startNode, false /*isNext*/, skipTags);\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\r\nimport { DocumentCommand, PendableFormatState } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Names of Pendable formats\r\n */\r\nexport type PendableFormatNames = keyof PendableFormatState;\r\n\r\n/**\r\n * A map from pendable format name to document command\r\n */\r\nexport const PendableFormatCommandMap: { [key in PendableFormatNames]: DocumentCommand } = {\r\n /**\r\n * Bold\r\n */\r\n isBold: DocumentCommand.Bold,\r\n\r\n /**\r\n * Italic\r\n */\r\n isItalic: DocumentCommand.Italic,\r\n\r\n /**\r\n * Underline\r\n */\r\n isUnderline: DocumentCommand.Underline,\r\n\r\n /**\r\n * StrikeThrough\r\n */\r\n isStrikeThrough: DocumentCommand.StrikeThrough,\r\n\r\n /**\r\n * Subscript\r\n */\r\n isSubscript: DocumentCommand.Subscript,\r\n\r\n /**\r\n * Superscript\r\n */\r\n isSuperscript: DocumentCommand.Superscript,\r\n};\r\n\r\n/**\r\n * Get Pendable Format State at cursor.\r\n * @param document The HTML Document to get format state from\r\n * @returns A PendableFormatState object which contains the values of pendable format states\r\n */\r\nexport default function getPendableFormatState(document: Document): PendableFormatState {\r\n let keys = getObjectKeys(PendableFormatCommandMap);\r\n\r\n return keys.reduce((state, key) => {\r\n state[key] = document.queryCommandState(PendableFormatCommandMap[key]);\r\n return state;\r\n }, {});\r\n}\r\n","import { NodeType } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Get the html tag of a node, or empty if it is not an element\r\n * @param node The node to get tag of\r\n * @returns Tag name in upper case if the given node is an Element, or empty string otherwise\r\n */\r\nexport default function getTagOfNode(node: Node | null): string {\r\n return node && node.nodeType == NodeType.Element ? (node).tagName.toUpperCase() : '';\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\n\r\nconst BLOCK_ELEMENT_TAGS = 'ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CANVAS,DD,DIV,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HR,LI,MAIN,NAV,NOSCRIPT,OL,OUTPUT,P,PRE,SECTION,TABLE,TD,TH,TFOOT,UL,VIDEO'.split(\r\n ','\r\n);\r\nconst BLOCK_DISPLAY_STYLES = ['block', 'list-item', 'table-cell'];\r\n\r\n/**\r\n * Checks if the node is a block like element. Block like element are usually those P, DIV, LI, TD etc.\r\n * @param node The node to check\r\n * @returns True if the node is a block element, otherwise false\r\n */\r\nexport default function isBlockElement(node: Node): node is HTMLElement {\r\n let tag = getTagOfNode(node);\r\n return !!(\r\n tag &&\r\n (BLOCK_DISPLAY_STYLES.indexOf((node).style.display) >= 0 ||\r\n BLOCK_ELEMENT_TAGS.indexOf(tag) >= 0)\r\n );\r\n}\r\n","import { DocumentPosition } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * Checks if node1 is after node2\r\n * @param node1 The node to check if it is after another node\r\n * @param node2 The node to check if another node is after this one\r\n * @returns True if node1 is after node2, otherwise false\r\n */\r\nexport default function isNodeAfter(node1: Node, node2: Node): boolean {\r\n return !!(\r\n node1 &&\r\n node2 &&\r\n (node2.compareDocumentPosition(node1) & DocumentPosition.Following) ==\r\n DocumentPosition.Following\r\n );\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\nconst VISIBLE_ELEMENT_TAGS = ['IMG'];\r\nconst VISIBLE_CHILD_ELEMENT_SELECTOR = ['TABLE', 'IMG', 'LI'].join(',');\r\nconst ZERO_WIDTH_SPACE = /\\u200b/g;\r\n\r\n/**\r\n * Check if a given node has no visible content\r\n * @param node The node to check\r\n * @param trimContent Whether trim the text content so that spaces will be treated as empty.\r\n * Default value is false\r\n * @returns True if there isn't any visible element inside node, otherwise false\r\n */\r\nexport default function isNodeEmpty(\r\n node: Node,\r\n trimContent?: boolean,\r\n shouldCountBrAsVisible?: boolean\r\n) {\r\n if (!node) {\r\n return false;\r\n } else if (node.nodeType == NodeType.Text) {\r\n return trim(node.nodeValue || '', trimContent) == '';\r\n } else if (node.nodeType == NodeType.Element) {\r\n let element = node as Element;\r\n let textContent = trim(element.textContent || '', trimContent);\r\n const visibleSelector = shouldCountBrAsVisible\r\n ? `${VISIBLE_CHILD_ELEMENT_SELECTOR},BR`\r\n : VISIBLE_CHILD_ELEMENT_SELECTOR;\r\n if (\r\n textContent != '' ||\r\n VISIBLE_ELEMENT_TAGS.indexOf(getTagOfNode(element)) >= 0 ||\r\n element.querySelectorAll(visibleSelector)[0]\r\n ) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction trim(s: string, trim: boolean | undefined) {\r\n s = s.replace(ZERO_WIDTH_SPACE, '');\r\n return trim ? s.trim() : s;\r\n}\r\n","import getTagOfNode from './getTagOfNode';\r\n\r\n/**\r\n * HTML void elements\r\n * Per https://www.w3.org/TR/html/syntax.html#syntax-elements, cannot have child nodes\r\n * This regex is used when we move focus to very begin of editor. We should avoid putting focus inside\r\n * void elements so users don't accidentally create child nodes in them\r\n */\r\nconst HTML_VOID_ELEMENTS = 'AREA,BASE,BR,COL,COMMAND,EMBED,HR,IMG,INPUT,KEYGEN,LINK,META,PARAM,SOURCE,TRACK,WBR'.split(\r\n ','\r\n);\r\n\r\n/**\r\n * Check if the given node is html void element. Void element cannot have children\r\n * @param node The node to check\r\n */\r\nexport default function isVoidHtmlElement(node: Node): boolean {\r\n return !!node && HTML_VOID_ELEMENTS.indexOf(getTagOfNode(node)) >= 0;\r\n}\r\n","import getObjectKeys from '../jsUtils/getObjectKeys';\r\nimport { LinkData } from 'roosterjs-editor-types';\r\n\r\ninterface LinkMatchRule {\r\n match: RegExp;\r\n except?: RegExp;\r\n normalizeUrl?: (url: string) => string;\r\n}\r\n\r\n// http exclude matching regex\r\n// invalid URL example (in particular on IE and Edge):\r\n// - http://www.bing.com%00, %00 before ? (question mark) is considered invalid. IE/Edge throws invalid argument exception\r\n// - http://www.bing.com%1, %1 is invalid\r\n// - http://www.bing.com%g, %g is invalid (IE and Edge expects a two hex value after a %)\r\n// - http://www.bing.com%, % as ending is invalid (IE and Edge expects a two hex value after a %)\r\n// All above % cases if they're after ? (question mark) is then considered valid again\r\n// Similar for @, it needs to be after / (forward slash), or ? (question mark). Otherwise IE/Edge will throw security exception\r\n// - http://www.bing.com@name, @name before ? (question mark) is considered invalid\r\n// - http://www.bing.com/@name, is valid sine it is after / (forward slash)\r\n// - http://www.bing.com?@name, is also valid since it is after ? (question mark)\r\n// The regex below is essentially a break down of:\r\n// ^[^?]+%[^0-9a-f]+ => to exclude URL like www.bing.com%%\r\n// ^[^?]+%[0-9a-f][^0-9a-f]+ => to exclude URL like www.bing.com%1\r\n// ^[^?]+%00 => to exclude URL like www.bing.com%00\r\n// ^[^?]+%$ => to exclude URL like www.bing.com%\r\n// ^https?:\\/\\/[^?\\/]+@ => to exclude URL like http://www.bing.com@name\r\n// ^www\\.[^?\\/]+@ => to exclude URL like www.bing.com@name\r\n// , => to exclude url like www.bing,,com\r\nconst httpExcludeRegEx = /^[^?]+%[^0-9a-f]+|^[^?]+%[0-9a-f][^0-9a-f]+|^[^?]+%00|^[^?]+%$|^https?:\\/\\/[^?\\/]+@|^www\\.[^?\\/]+@/i;\r\n\r\n// via https://tools.ietf.org/html/rfc1035 Page 7\r\nconst labelRegEx = '[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'; // We're using case insensitive regexps below so don't bother including A-Z\r\nconst domainNameRegEx = `(?:${labelRegEx}\\\\.)*${labelRegEx}`;\r\nconst domainPortRegEx = `${domainNameRegEx}(?:\\\\:[0-9]+)?`;\r\nconst domainPortWithUrlRegEx = `${domainPortRegEx}(?:[\\\\/\\\\?]\\\\S*)?`;\r\n\r\nconst linkMatchRules: Record = {\r\n http: {\r\n match: new RegExp(\r\n `^(?:microsoft-edge:)?http:\\\\/\\\\/${domainPortWithUrlRegEx}|www\\\\.${domainPortWithUrlRegEx}`,\r\n 'i'\r\n ),\r\n except: httpExcludeRegEx,\r\n normalizeUrl: url =>\r\n new RegExp('^(?:microsoft-edge:)?http:\\\\/\\\\/', 'i').test(url) ? url : 'http://' + url,\r\n },\r\n https: {\r\n match: new RegExp(`^(?:microsoft-edge:)?https:\\\\/\\\\/${domainPortWithUrlRegEx}`, 'i'),\r\n except: httpExcludeRegEx,\r\n },\r\n mailto: { match: new RegExp('^mailto:\\\\S+@\\\\S+\\\\.\\\\S+', 'i') },\r\n notes: { match: new RegExp('^notes:\\\\/\\\\/\\\\S+', 'i') },\r\n file: { match: new RegExp('^file:\\\\/\\\\/\\\\/?\\\\S+', 'i') },\r\n unc: { match: new RegExp('^\\\\\\\\\\\\\\\\\\\\S+', 'i') },\r\n ftp: {\r\n match: new RegExp(\r\n `^ftp:\\\\/\\\\/${domainPortWithUrlRegEx}|ftp\\\\.${domainPortWithUrlRegEx}`,\r\n 'i'\r\n ),\r\n normalizeUrl: url => (new RegExp('^ftp:\\\\/\\\\/', 'i').test(url) ? url : 'ftp://' + url),\r\n },\r\n news: { match: new RegExp(`^news:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n telnet: { match: new RegExp(`^telnet:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n gopher: { match: new RegExp(`^gopher:\\\\/\\\\/${domainPortWithUrlRegEx}`, 'i') },\r\n wais: { match: new RegExp(`^wais:(\\\\/\\\\/)?${domainPortWithUrlRegEx}`, 'i') },\r\n};\r\n\r\n/**\r\n * Try to match a given string with link match rules, return matched link\r\n * @param url Input url to match\r\n * @param option Link match option, exact or partial. If it is exact match, we need\r\n * to check the length of matched link and url\r\n * @param rules Optional link match rules, if not passed, only the default link match\r\n * rules will be applied\r\n * @returns The matched link data, or null if no match found.\r\n * The link data includes an original url and a normalized url\r\n */\r\nexport default function matchLink(url: string): LinkData | null {\r\n if (url) {\r\n for (let schema of getObjectKeys(linkMatchRules)) {\r\n let rule = linkMatchRules[schema];\r\n let matches = url.match(rule.match);\r\n if (matches && matches[0] == url && (!rule.except || !rule.except.test(url))) {\r\n return {\r\n scheme: schema,\r\n originalUrl: url,\r\n normalizedUrl: rule.normalizeUrl ? rule.normalizeUrl(url) : url,\r\n };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import safeInstanceOf from './safeInstanceOf';\n\n/**\n * Type definition of HTMLElement interface for IE\n */\ninterface HTMLElementForIE extends HTMLElement {\n /**\n * IE implementation of Element.matches() function\n *\n */\n msMatchesSelector: (selector: string) => boolean;\n}\n\n/**\n * A wrapper function of Element.matches\n * @param element The element to match\n * @param selector The selector to match\n */\nexport default function matchesSelector(element: Node, selector: string): boolean {\n return (\n safeInstanceOf(element, 'HTMLElement') &&\n (element.matches || (element).msMatchesSelector).call(element, selector)\n );\n}\n","/**\n * Replace all child nodes of the given target node to the child nodes of source node.\n * @param target Target node, all child nodes of this node will be removed if keepExistingChildren is not set to true\n * @param source (Optional) source node, all child nodes of this node will be move to target node\n * @param keepExistingChildren (Optional) When set to true, all existing child nodes of target will be kept\n */\nexport default function moveChildNodes(\n target: Node,\n source?: Node,\n keepExistingChildren?: boolean\n) {\n if (!target) {\n return;\n }\n\n while (!keepExistingChildren && target.firstChild) {\n target.removeChild(target.firstChild);\n }\n\n while (source?.firstChild) {\n target.appendChild(source.firstChild);\n }\n}\n","import { Rect } from 'roosterjs-editor-types';\r\n\r\n/**\r\n * A ClientRect of all 0 is possible. i.e. chrome returns a ClientRect of 0 when the cursor is on an empty p\r\n * We validate that and only return a rect when the passed in ClientRect is valid\r\n */\r\nexport default function normalizeRect(clientRect: DOMRect): Rect | null {\r\n let { left, right, top, bottom } =\r\n clientRect || { left: 0, right: 0, top: 0, bottom: 0 };\r\n return left === 0 && right === 0 && top === 0 && bottom === 0\r\n ? null\r\n : {\r\n left: Math.round(left),\r\n right: Math.round(right),\r\n top: Math.round(top),\r\n bottom: Math.round(bottom),\r\n };\r\n}\r\n","const HEX3_REGEX = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/;\nconst HEX6_REGEX = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/;\nconst RGB_REGEX = /^rgb\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)$/;\nconst RGBA_REGEX = /^rgba\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)$/;\n\n/**\n * Parse color string to r/g/b value.\n * If the given color is not in a recognized format, return null\n */\nexport default function parseColor(color: string): [number, number, number] | null {\n color = (color || '').trim();\n\n let match: RegExpMatchArray | null;\n if ((match = color.match(HEX3_REGEX))) {\n return [\n parseInt(match[1] + match[1], 16),\n parseInt(match[2] + match[2], 16),\n parseInt(match[3] + match[3], 16),\n ];\n } else if ((match = color.match(HEX6_REGEX))) {\n return [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16)];\n } else if ((match = color.match(RGB_REGEX) || color.match(RGBA_REGEX))) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n } else {\n // CSS color names such as red, green is not included for now.\n // If need, we can add those colors from https://www.w3.org/wiki/CSS/Properties/color/keywords\n return null;\n }\n}\n","import toArray from '../jsUtils/toArray';\r\nimport { DocumentPosition, NodeType, QueryScope } from 'roosterjs-editor-types';\r\nimport type { CompatibleQueryScope } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Query HTML elements in the container by a selector string\r\n * @param container Container element to query from\r\n * @param selector Selector string to query\r\n * @param forEachCallback An optional callback to be invoked on each node in query result\r\n * @param scope The scope of the query, default value is QueryScope.Body\r\n * @param range The selection range to query with. This is required when scope is not Body\r\n * @returns HTML Element array of the query result\r\n */\r\nexport default function queryElements(\r\n container: ParentNode,\r\n selector: string,\r\n forEachCallback?: ((node: HTMLElement) => any) | null,\r\n scope: QueryScope | CompatibleQueryScope = QueryScope.Body,\r\n range?: Range\r\n): HTMLElement[] {\r\n if (!container || !selector) {\r\n return [];\r\n }\r\n\r\n let elements = toArray(container.querySelectorAll(selector));\r\n\r\n if (scope != QueryScope.Body && range) {\r\n let { startContainer, startOffset, endContainer, endOffset } = range;\r\n if (startContainer.nodeType == NodeType.Element && startContainer.firstChild) {\r\n const child = startContainer.childNodes[startOffset];\r\n\r\n // range.startOffset can give a value of child.length+1 when selection is after the last child\r\n // In that case we will use the last child instead\r\n startContainer = child || startContainer.lastChild;\r\n }\r\n\r\n endContainer =\r\n endContainer.nodeType == NodeType.Element && endContainer.firstChild && endOffset > 0\r\n ? endContainer.childNodes[endOffset - 1]\r\n : endContainer;\r\n\r\n elements = elements.filter(element =>\r\n isIntersectWithNodeRange(\r\n element,\r\n startContainer,\r\n endContainer,\r\n scope == QueryScope.InSelection\r\n )\r\n );\r\n }\r\n\r\n if (forEachCallback) {\r\n elements.forEach(forEachCallback);\r\n }\r\n return elements;\r\n}\r\n\r\nfunction isIntersectWithNodeRange(\r\n node: Node,\r\n startNode: Node,\r\n endNode: Node,\r\n nodeContainedByRangeOnly: boolean\r\n): boolean {\r\n let startPosition = node.compareDocumentPosition(startNode);\r\n let endPosition = node.compareDocumentPosition(endNode);\r\n let targetPositions = [DocumentPosition.Same, DocumentPosition.Contains];\r\n\r\n if (!nodeContainedByRangeOnly) {\r\n targetPositions.push(DocumentPosition.ContainedBy);\r\n }\r\n\r\n return (\r\n checkPosition(startPosition, targetPositions) || // intersectStart\r\n checkPosition(endPosition, targetPositions) || // intersectEnd\r\n (checkPosition(startPosition, [DocumentPosition.Preceding]) && // Contains\r\n checkPosition(endPosition, [DocumentPosition.Following]) &&\r\n !checkPosition(endPosition, [DocumentPosition.ContainedBy]))\r\n );\r\n}\r\n\r\nfunction checkPosition(position: DocumentPosition, targets: DocumentPosition[]): boolean {\r\n return targets.some(target =>\r\n target == DocumentPosition.Same\r\n ? position == DocumentPosition.Same\r\n : (position & target) == target\r\n );\r\n}\r\n","/**\n * Read a file object and invoke a callback function with the data url of this file\n * @param file The file to read\n * @param callback the callback to invoke with data url of the file.\n * If fail to read, dataUrl will be null\n */\nexport default function readFile(file: File, callback: (dataUrl: string | null) => void) {\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n callback(reader.result as string);\n };\n reader.onerror = () => {\n callback(null);\n };\n reader.readAsDataURL(file);\n }\n}\n","import { TargetWindow } from 'roosterjs-editor-types';\n\n// NOTE: Type TargetWindow is an auto-generated type.\n// Run node ./tools/generateTargetWindow.js to generate it.\n\n/**\n * @internal Export for test only\n * Try get window from the given node or range\n * @param node Source node to get window from\n */\nexport function getTargetWindow(node: Node): T {\n const document =\n node &&\n (node.ownerDocument ||\n (Object.prototype.toString.apply(node) == '[object HTMLDocument]'\n ? node\n : null));\n\n // If document exists but document.defaultView doesn't exist, it is a detached object, just use current window instead\n const targetWindow = document && ((document.defaultView || window) as any);\n return targetWindow as T;\n}\n\n/**\n * Check if the given object is instance of the target type\n * @param obj Object to check\n * @param typeName Target type name\n */\nexport default function safeInstanceOf(\n obj: any,\n typeName: T\n): obj is W[T] {\n if (typeName == 'Range') {\n return (\n Object.prototype.toString.apply(obj) == '[object Range]' &&\n !!(obj)?.commonAncestorContainer\n );\n }\n\n const targetWindow = getTargetWindow(obj);\n const targetType = targetWindow && (targetWindow[typeName] as any);\n const mainWindow = (window as any) as W;\n const mainWindowType = mainWindow && (mainWindow[typeName] as any);\n return (\n (mainWindowType && obj instanceof mainWindowType) ||\n (targetType && obj instanceof targetType)\n );\n}\n","import parseColor from './parseColor';\nimport { DarkColorHandler, ModeIndependentColor } from 'roosterjs-editor-types';\n\nconst WHITE = '#ffffff';\nconst GRAY = '#333333';\nconst BLACK = '#000000';\nconst TRANSPARENT = 'transparent';\nconst enum ColorTones {\n BRIGHT,\n DARK,\n NONE,\n}\n\n//Using the HSL (hue, saturation and lightness) representation for RGB color values, if the value of the lightness is less than 20, the color is dark\nconst DARK_COLORS_LIGHTNESS = 20;\n//If the value of the lightness is more than 80, the color is bright\nconst BRIGHT_COLORS_LIGHTNESS = 80;\n\n/**\n * Set text color or background color to the given element\n * @param element The element to set color to\n * @param color The color to set, it can be a string of color name/value or a ModeIndependentColor object\n * @param isBackgroundColor Whether set background color or text color\n * @param isDarkMode Whether current mode is dark mode. @default false\n * @param shouldAdaptTheFontColor Whether the font color needs to be adapted to be visible in a dark or bright background color. @default false\n * @param darkColorHandler A dark color handler object. This is now required.\n * We keep it optional only for backward compatibility. If it is not passed, color will not be set.\n */\nexport default function setColor(\n element: HTMLElement,\n color: string | ModeIndependentColor,\n isBackgroundColor: boolean,\n isDarkMode?: boolean,\n shouldAdaptTheFontColor?: boolean,\n darkColorHandler?: DarkColorHandler | null\n) {\n const colorString = typeof color === 'string' ? color.trim() : '';\n const modeIndependentColor = typeof color === 'string' ? null : color;\n const cssName = isBackgroundColor ? 'background-color' : 'color';\n\n if (colorString || modeIndependentColor) {\n if (darkColorHandler) {\n const colorValue = darkColorHandler.registerColor(\n modeIndependentColor?.lightModeColor || colorString,\n !!isDarkMode,\n modeIndependentColor?.darkModeColor\n );\n\n element.style.setProperty(cssName, colorValue);\n }\n\n if (isBackgroundColor && shouldAdaptTheFontColor) {\n adaptFontColorToBackgroundColor(\n element,\n modeIndependentColor?.lightModeColor || colorString,\n isDarkMode,\n darkColorHandler\n );\n }\n }\n}\n\n/**\n * Change the font color to white or some other color, so the text can be visible with a darker background\n * @param element The element that contains text.\n * @param lightModeBackgroundColor Existing background color in light mode\n * @param isDarkMode Whether the content is in dark mode\n * @param darkColorHandler A dark color handler object. This is now required.\n * We keep it optional only for backward compatibility. If it is not passed, color will not be set.\n */\nfunction adaptFontColorToBackgroundColor(\n element: HTMLElement,\n lightModeBackgroundColor: string,\n isDarkMode?: boolean,\n darkColorHandler?: DarkColorHandler | null\n) {\n if (!lightModeBackgroundColor || lightModeBackgroundColor === TRANSPARENT) {\n return;\n }\n\n const isADarkOrBrightOrNone = isADarkOrBrightColor(lightModeBackgroundColor!);\n\n switch (isADarkOrBrightOrNone) {\n case ColorTones.DARK:\n const fontForDark: ModeIndependentColor = {\n lightModeColor: WHITE,\n darkModeColor: GRAY,\n };\n setColor(\n element,\n fontForDark,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n break;\n case ColorTones.BRIGHT:\n const fontForLight: ModeIndependentColor = {\n lightModeColor: BLACK,\n darkModeColor: WHITE,\n };\n setColor(\n element,\n fontForLight,\n false /*isBackground*/,\n isDarkMode,\n false /*shouldAdaptFontColor*/,\n darkColorHandler\n );\n break;\n }\n}\n\nfunction isADarkOrBrightColor(color: string): ColorTones {\n let lightness = calculateLightness(color);\n if (lightness < DARK_COLORS_LIGHTNESS) {\n return ColorTones.DARK;\n } else if (lightness > BRIGHT_COLORS_LIGHTNESS) {\n return ColorTones.BRIGHT;\n }\n\n return ColorTones.NONE;\n}\n\n/**\n * Calculate the lightness of HSL (hue, saturation and lightness) representation\n * @param color a RBG or RGBA COLOR\n * @returns\n */\nfunction calculateLightness(color: string) {\n const colorValues = parseColor(color);\n\n // Use the values of r,g,b to calculate the lightness in the HSl representation\n //First calculate the fraction of the light in each color, since in css the value of r,g,b is in the interval of [0,255], we have\n if (colorValues) {\n const red = colorValues[0] / 255;\n const green = colorValues[1] / 255;\n const blue = colorValues[2] / 255;\n\n //Then the lightness in the HSL representation is the average between maximum fraction of r,g,b and the minimum fraction\n return (Math.max(red, green, blue) + Math.min(red, green, blue)) * 50;\n } else {\n return 255;\n }\n}\n","import getTagOfNode from './getTagOfNode';\r\nimport { getComputedStyle } from './getComputedStyles';\r\nimport { NodeType } from 'roosterjs-editor-types';\r\n\r\nconst CRLF = /^[\\r\\n]+$/g;\r\nconst CRLF_SPACE = /[\\t\\r\\n\\u0020\\u200B]/gm; // We should only find new line, real space or ZeroWidthSpace (TAB, %20, but not  )\r\n\r\n/**\r\n * @internal\r\n * Skip a node when any of following conditions are true\r\n * - it is neither Element nor Text\r\n * - it is a text node but is empty\r\n * - it is a text node but contains just CRLF (noisy text node that often comes in-between elements)\r\n * - has a display:none\r\n * - it is just
                            \r\n * @param node The node to check\r\n * @param ignoreSpace (Optional) True to ignore pure space text node of the node when check.\r\n * If the value of a node value is only space, set this to true will treat this node can be skipped.\r\n * Default value is false\r\n */\r\nexport default function shouldSkipNode(node: Node, ignoreSpace?: boolean): boolean {\r\n if (node.nodeType == NodeType.Text) {\r\n if (!node.nodeValue || node.textContent == '' || CRLF.test(node.nodeValue)) {\r\n return true;\r\n } else if (ignoreSpace && node.nodeValue.replace(CRLF_SPACE, '') == '') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else if (node.nodeType == NodeType.Element) {\r\n if (getComputedStyle(node, 'display') == 'none') {\r\n return true;\r\n }\r\n\r\n const tag = getTagOfNode(node);\r\n\r\n if (tag == 'DIV' || tag == 'SPAN') {\r\n // Empty SPAN/DIV or SPAN/DIV with only meaningless children is meaningless,\r\n // because it can render nothing. If we keep them here, there may be unexpected\r\n // LI elements added for those meaningless nodes.\r\n for (let child = node.firstChild; !!child; child = child.nextSibling) {\r\n if (!shouldSkipNode(child, ignoreSpace)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else {\r\n // There may still be other cases that the node is not meaningful.\r\n // We can add those cases here once we hit them.\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n}\r\n","import isNodeAfter from './isNodeAfter';\r\n\r\n/**\r\n * Split parent node of the given node before/after the given node.\r\n * When a parent node contains [A,B,C] and pass B as the given node,\r\n * If split before, the new nodes will be [A][B,C] and returns [A];\r\n * otherwise, it will be [A,B][C] and returns [C].\r\n * @param node The node to split before/after\r\n * @param splitBefore Whether split before or after\r\n * @param removeEmptyNewNode If the new node is empty (even then only child is space or ZER_WIDTH_SPACE),\r\n * we remove it. @default false\r\n * @returns The new parent node\r\n */\r\nexport default function splitParentNode(node: Node, splitBefore: boolean): Node | null {\r\n if (!node || !node.parentNode) {\r\n return null;\r\n }\r\n\r\n let parentNode = node.parentNode;\r\n let newParent: HTMLElement | null = parentNode.cloneNode(false /*deep*/) as HTMLElement;\r\n newParent.removeAttribute('id');\r\n if (splitBefore) {\r\n while (parentNode.firstChild && parentNode.firstChild != node) {\r\n newParent.appendChild(parentNode.firstChild);\r\n }\r\n } else {\r\n while (node.nextSibling) {\r\n newParent.appendChild(node.nextSibling);\r\n }\r\n }\r\n\r\n // When the only child of new parent is ZERO_WIDTH_SPACE, we can still prevent keeping it by set removeEmptyNewNode to true\r\n if (newParent.firstChild && newParent.innerHTML != '') {\r\n parentNode.parentNode?.insertBefore(\r\n newParent,\r\n splitBefore ? parentNode : parentNode.nextSibling\r\n );\r\n } else {\r\n newParent = null;\r\n }\r\n\r\n return newParent;\r\n}\r\n\r\n/**\r\n * Split parent node by a balanced node range\r\n * @param nodes The nodes to split from. If only one node is passed, split it from all its siblings.\r\n * If two or nodes are passed, will split before the first one and after the last one, all other nodes will be ignored\r\n * @returns The parent node of the given node range if the given nodes are balanced, otherwise null\r\n */\r\nexport function splitBalancedNodeRange(nodes: Node | Node[]): Node | null {\r\n let start = Array.isArray(nodes) ? nodes[0] : nodes;\r\n let end = Array.isArray(nodes) ? nodes[nodes.length - 1] : nodes;\r\n const parentNode = start && end && start.parentNode == end.parentNode ? start.parentNode : null;\r\n if (parentNode) {\r\n if (isNodeAfter(start, end)) {\r\n let temp = end;\r\n end = start;\r\n start = temp;\r\n }\r\n splitParentNode(start, true /*splitBefore*/);\r\n splitParentNode(end, false /*splitBefore*/);\r\n }\r\n\r\n return parentNode;\r\n}\r\n","/**\r\n * Split a text node into two parts by an offset number, and return one of them\r\n * @param textNode The text node to split\r\n * @param offset The offset number to split at\r\n * @param returnFirstPart True to return the first part, then the passed in textNode will become the second part.\r\n * Otherwise return the second part, and the passed in textNode will become the first part\r\n */\r\nexport default function splitTextNode(textNode: Text, offset: number, returnFirstPart: boolean) {\r\n const firstPart = textNode.nodeValue?.substring(0, offset) || '';\r\n const secondPart = textNode.nodeValue?.substring(offset) || '';\r\n const newNode = textNode.ownerDocument.createTextNode(returnFirstPart ? firstPart : secondPart);\r\n textNode.nodeValue = returnFirstPart ? secondPart : firstPart;\r\n textNode.parentNode?.insertBefore(newNode, returnFirstPart ? textNode : textNode.nextSibling);\r\n return newNode;\r\n}\r\n","/**\r\n * Removes the node and keep all children in place, return the parentNode where the children are attached\r\n * @param node the node to remove\r\n */\r\nexport default function unwrap(node: Node): Node | null {\r\n // Unwrap requires a parentNode\r\n let parentNode = node ? node.parentNode : null;\r\n if (!parentNode) {\r\n return null;\r\n }\r\n\r\n while (node.firstChild) {\r\n parentNode.insertBefore(node.firstChild, node);\r\n }\r\n\r\n parentNode.removeChild(node);\r\n return parentNode;\r\n}\r\n","import createElement from './createElement';\r\nimport fromHtml from './fromHtml';\r\nimport safeInstanceOf from './safeInstanceOf';\r\nimport { CreateElementData, KnownCreateElementDataIndex } from 'roosterjs-editor-types';\r\nimport type { CompatibleKnownCreateElementDataIndex } from 'roosterjs-editor-types/lib/compatibleTypes';\r\n\r\n/**\r\n * Wrap all the node with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML tag name\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?: T\r\n): HTMLElementTagNameMap[T];\r\n\r\n/**\r\n * @deprecated\r\n * Wrap all the nodes with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML string, default value is DIV\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(nodes: Node | Node[], wrapper?: string): HTMLElement;\r\n\r\n/**\r\n * Wrap all the nodes with html and return the wrapped node, and put the wrapper node under the parent of the first node\r\n * @param nodes The node or node array to wrap\r\n * @param wrapper The wrapper HTML element, default value is a new DIV element\r\n * @returns The wrapper element\r\n */\r\nexport default function wrap(nodes: Node | Node[], wrapper?: HTMLElement): HTMLElement;\r\n\r\n/**\r\n * Wraps all the nodes with CreateElementData or an index of a known CreateElementData\r\n * @param nodes The nodes to wrap\r\n * @param wrapper The CreateElementData or an index of a known CreateElementData\r\n */\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?:\r\n | CreateElementData\r\n | KnownCreateElementDataIndex\r\n | CompatibleKnownCreateElementDataIndex\r\n): HTMLElement;\r\n\r\nexport default function wrap(\r\n nodes: Node | Node[],\r\n wrapper?:\r\n | string\r\n | HTMLElement\r\n | CreateElementData\r\n | KnownCreateElementDataIndex\r\n | CompatibleKnownCreateElementDataIndex\r\n): HTMLElement | null {\r\n nodes = !nodes ? [] : safeInstanceOf(nodes, 'Node') ? [nodes] : nodes;\r\n if (nodes.length == 0 || !nodes[0] || !nodes[0].ownerDocument) {\r\n return null;\r\n }\r\n\r\n if (!wrapper) {\r\n wrapper = 'div';\r\n }\r\n\r\n if (!safeInstanceOf(wrapper, 'HTMLElement')) {\r\n let document = nodes[0].ownerDocument;\r\n\r\n if (typeof wrapper === 'string') {\r\n wrapper = /^\\w+$/.test(wrapper)\r\n ? document.createElement(wrapper)\r\n : (fromHtml(wrapper, document)[0] as HTMLElement); // This will be removed in next major release\r\n } else {\r\n wrapper = createElement(wrapper, document) as HTMLElement;\r\n }\r\n }\r\n\r\n let parentNode = nodes[0].parentNode;\r\n\r\n if (parentNode) {\r\n parentNode.insertBefore(wrapper, nodes[0]);\r\n }\r\n\r\n for (let node of nodes) {\r\n wrapper.appendChild(node);\r\n }\r\n\r\n return wrapper;\r\n}\r\n","export * from './plugins/AutoFormat/index';\n","export * from './plugins/ContentEdit/index';\n","export * from './plugins/ContextMenu/index';\n","export * from './plugins/CustomReplace/index';\n","export * from './plugins/CutPasteListChain/index';\n","export * from './plugins/HyperLink/index';\n","export * from './plugins/ImageEdit/index';\n","export * from './plugins/ImageResize/index';\n","export * from './plugins/Paste/index';\n","export * from './plugins/Picker/index';\n","export * from './plugins/TableCellSelection/index';\n","export * from './plugins/TableResize/index';\n","export * from './plugins/Watermark/index';\n","export * from './ContentEdit';\r\nexport * from './ContextMenu';\r\nexport * from './CustomReplace';\r\nexport * from './CutPasteListChain';\r\nexport * from './HyperLink';\r\nexport * from './ImageEdit';\r\nexport * from './ImageResize';\r\nexport * from './Paste';\r\nexport * from './Picker';\r\nexport * from './TableResize';\r\nexport * from './Watermark';\r\nexport * from './TableCellSelection';\r\nexport * from './AutoFormat';\r\n","import Disposable from './Disposable';\nimport DragAndDropHandler from './DragAndDropHandler';\nimport { Browser } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n */\ninterface MouseEventMoves {\n MOUSEDOWN: string;\n MOUSEMOVE: string;\n MOUSEUP: string;\n}\n\n/**\n * @internal\n */\ninterface MouseEventInfo extends MouseEventMoves {\n getPageXY: (e: MouseEvent) => number[];\n}\n\n/**\n * @internal\n * Compatible mouse event names for different platform\n */\ninterface TouchEventInfo extends MouseEventMoves {\n getPageXY: (e: TouchEvent) => number[];\n}\n\n/**\n * Generate event names and getXY function based on different platforms to be compatible with desktop and mobile browsers\n */\nconst MOUSE_EVENT_INFO_DESKTOP: MouseEventInfo = (() => {\n return {\n MOUSEDOWN: 'mousedown',\n MOUSEMOVE: 'mousemove',\n MOUSEUP: 'mouseup',\n getPageXY: getMouseEventPageXY,\n };\n})();\n\nconst MOUSE_EVENT_INFO_MOBILE: TouchEventInfo = (() => {\n return {\n MOUSEDOWN: 'touchstart',\n MOUSEMOVE: 'touchmove',\n MOUSEUP: 'touchend',\n getPageXY: getTouchEventPageXY,\n };\n})();\n\nfunction getMouseEventPageXY(e: MouseEvent): [number, number] {\n return [e.pageX, e.pageY];\n}\n\nfunction getTouchEventPageXY(e: TouchEvent): [number, number] {\n let pageX = 0;\n let pageY = 0;\n if (e.targetTouches && e.targetTouches.length > 0) {\n const touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n }\n return [pageX, pageY];\n}\n\n/**\n * @internal\n * A helper class to help manage drag and drop to an HTML element\n */\nexport default class DragAndDropHelper implements Disposable {\n private initX: number = 0;\n private initY: number = 0;\n private initValue: TInitValue | undefined = undefined;\n private dndMouse: MouseEventInfo | TouchEventInfo;\n\n /**\n * Create a new instance of DragAndDropHelper class\n * @param trigger The trigger element. When user start drag on this element,\n * events will be fired to the handler object\n * @param context Context object that will be passed to handler function when event is fired,\n * so that the handler object knows which element it is triggered from.\n * @param onSubmit A callback that will be invoked when event handler in handler object returns true\n * @param handler The event handler object, see DragAndDropHandler interface for more information\n * @param zoomScale The zoom scale of the editor\n * @param forceMobile A boolean to force the use of touch controls for the helper\n */\n constructor(\n private trigger: HTMLElement,\n private context: TContext,\n private onSubmit: (context: TContext, trigger: HTMLElement) => void,\n private handler: DragAndDropHandler,\n private zoomScale: number,\n forceMobile?: boolean\n ) {\n this.dndMouse =\n forceMobile || Browser.isMobileOrTablet\n ? MOUSE_EVENT_INFO_MOBILE\n : MOUSE_EVENT_INFO_DESKTOP;\n trigger.addEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);\n }\n\n /**\n * Dispose this object, remove all event listeners that has been attached\n */\n dispose() {\n this.trigger.removeEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);\n this.removeDocumentEvents();\n }\n\n public get mouseType(): string {\n return this.dndMouse == MOUSE_EVENT_INFO_MOBILE ? 'touch' : 'mouse';\n }\n\n private addDocumentEvents() {\n const doc = this.trigger.ownerDocument;\n doc.addEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);\n doc.addEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);\n }\n\n private removeDocumentEvents() {\n const doc = this.trigger.ownerDocument;\n doc.removeEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);\n doc.removeEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);\n }\n\n private onMouseDown = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n this.addDocumentEvents();\n [this.initX, this.initY] = this.dndMouse.getPageXY(e as MouseEvent & TouchEvent);\n this.initValue = this.handler.onDragStart?.(this.context, e as MouseEvent);\n };\n\n private onMouseMove = (e: Event) => {\n e.preventDefault();\n const [pageX, pageY] = this.dndMouse.getPageXY(e as MouseEvent & TouchEvent);\n const deltaX = (pageX - this.initX) / this.zoomScale;\n const deltaY = (pageY - this.initY) / this.zoomScale;\n if (\n this.initValue &&\n this.handler.onDragging?.(this.context, e as MouseEvent, this.initValue, deltaX, deltaY)\n ) {\n this.onSubmit?.(this.context, this.trigger);\n }\n };\n\n private onMouseUp = (e: Event) => {\n e.preventDefault();\n this.removeDocumentEvents();\n if (this.handler.onDragEnd?.(this.context, e as MouseEvent, this.initValue)) {\n this.onSubmit?.(this.context, this.trigger);\n }\n };\n}\n","import {\n ChangeSource,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst specialCharacters = /[`!@#$%^&*()_+\\=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\n\n/**\n * Automatically transform -- into hyphen, if typed between two words.\n */\nexport default class AutoFormat implements EditorPlugin {\n private editor: IEditor | null = null;\n private lastKeyTyped: string | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'AutoFormat';\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 this.lastKeyTyped = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n if (\n event.eventType === PluginEventType.ContentChanged ||\n event.eventType === PluginEventType.MouseDown ||\n event.eventType === PluginEventType.MouseUp\n ) {\n this.lastKeyTyped = '';\n }\n\n if (event.eventType === PluginEventType.KeyPress) {\n const keyTyped = event.rawEvent.key;\n\n if (keyTyped && keyTyped.length > 1) {\n this.lastKeyTyped = '';\n }\n\n if (\n this.lastKeyTyped === '-' &&\n !specialCharacters.test(keyTyped) &&\n keyTyped !== ' ' &&\n keyTyped !== '-'\n ) {\n const searcher = this.editor.getContentSearcherOfCursor(event);\n const textBeforeCursor = searcher?.getSubStringBefore(3);\n const dashes = searcher?.getSubStringBefore(2);\n const isPrecededByADash = textBeforeCursor?.[0] === '-';\n const isPrecededByASpace = textBeforeCursor?.[0] === ' ';\n if (\n isPrecededByADash ||\n isPrecededByASpace ||\n (typeof textBeforeCursor === 'string' &&\n specialCharacters.test(textBeforeCursor[0])) ||\n dashes !== '--'\n ) {\n return;\n }\n\n const textRange = searcher?.getRangeFromText(dashes, true /* exactMatch */);\n const nodeHyphen = document.createTextNode('—');\n this.editor.addUndoSnapshot(\n () => {\n if (textRange) {\n textRange.deleteContents();\n textRange.insertNode(nodeHyphen);\n this.editor!.select(nodeHyphen, PositionType.End);\n }\n },\n ChangeSource.Format /*changeSource*/,\n true /*canUndoByBackspace*/,\n { formatApiName: 'autoHyphen' }\n );\n\n //After the substitution the last key typed needs to be cleaned\n this.lastKeyTyped = null;\n } else {\n this.lastKeyTyped = keyTyped;\n }\n }\n }\n}\n","export { default as AutoFormat } from './AutoFormat';\n","import getAllFeatures from './getAllFeatures';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport {\n ContentEditFeatureSettings,\n EditorPlugin,\n GenericContentEditFeature,\n IEditor,\n PluginEvent,\n} from 'roosterjs-editor-types';\n\n/**\n * An editor plugin to handle content edit event.\n * The following cases are included:\n * 1. Auto increase/decrease indentation on Tab, Shift+tab\n * 2. Enter, Backspace on empty list item\n * 3. Enter, Backspace on empty blockquote line\n * 4. Auto bullet/numbering\n * 5. Auto link\n * 6. Tab in table\n * 7. Up/Down in table\n * 8. Manage list style\n */\nexport default class ContentEdit implements EditorPlugin {\n private editor: IEditor | undefined = undefined;\n private features: GenericContentEditFeature[] = [];\n /**\n * Create instance of ContentEdit plugin\n * @param settingsOverride An optional feature set to override default feature settings\n * @param additionalFeatures Optional. More features to add\n */\n constructor(\n private settingsOverride?: Partial,\n private additionalFeatures?: GenericContentEditFeature[]\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContentEdit';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor): void {\n this.editor = editor;\n const allFeatures = getAllFeatures();\n getObjectKeys(allFeatures).forEach(key => {\n const feature = allFeatures[key];\n const hasSettingForKey =\n this.settingsOverride && this.settingsOverride[key] !== undefined;\n\n if (\n (hasSettingForKey && this.settingsOverride?.[key]) ||\n (!hasSettingForKey && !feature.defaultDisabled)\n ) {\n this.features.push(feature);\n }\n });\n this.features = this.features.concat(this.additionalFeatures || []);\n this.features.forEach(feature => this.editor?.addContentEditFeature(feature));\n }\n\n private disposeFeatures() {\n if (this.editor) {\n this.features.forEach(feature => this.editor!.removeContentEditFeature(feature));\n }\n this.features = [];\n }\n\n /**\n * Dispose this plugin\n */\n dispose(): void {\n this.disposeFeatures();\n this.editor = undefined;\n }\n}\n","import { removeLink, replaceWithNode } from 'roosterjs-editor-api';\nimport {\n AutoLinkFeatureSettings,\n BuildInEditFeature,\n ChangeSource,\n ClipboardData,\n IEditor,\n Keys,\n LinkData,\n PluginEvent,\n PluginEventType,\n PluginKeyboardEvent,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n clearEventDataCache,\n LinkInlineElement,\n matchLink,\n} from 'roosterjs-editor-dom';\n\n/**\n * When user type, they may end a link with a punctuation, i.e. www.bing.com;\n * we need to trim off the trailing punctuation before turning it to link match\n */\nconst TRAILING_PUNCTUATION_REGEX = /[.+=\\s:;\"',>]+$/i;\nconst MINIMUM_LENGTH = 5;\n\n/**\n * AutoLink edit feature, provides the ability to automatically convert text user typed or pasted\n * in hyperlink format into a real hyperlink\n */\nconst AutoLink: BuildInEditFeature = {\n keys: [Keys.ENTER, Keys.SPACE, Keys.CONTENTCHANGED],\n shouldHandleEvent: cacheGetLinkData,\n handleEvent: autoLink,\n};\n\n/**\n * UnlinkWhenBackspaceAfterLink edit feature, provides the ability to convert a hyperlink back into text\n * if user presses BACKSPACE right after a hyperlink\n */\nconst UnlinkWhenBackspaceAfterLink: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: hasLinkBeforeCursor,\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n removeLink(editor);\n },\n defaultDisabled: true,\n};\n\nfunction cacheGetLinkData(event: PluginEvent, editor: IEditor): LinkData | null {\n return event.eventType == PluginEventType.KeyDown ||\n (event.eventType == PluginEventType.ContentChanged && event.source == ChangeSource.Paste)\n ? cacheGetEventData(event, 'LINK_DATA', () => {\n // First try to match link from the whole paste string from the plain text in clipboard.\n // This helps when we paste a link next to some existing character, and the text we got\n // from clipboard will only contain what we pasted, any existing characters will not\n // be included.\n let clipboardData =\n (event.eventType == PluginEventType.ContentChanged &&\n event.source == ChangeSource.Paste &&\n (event.data as ClipboardData)) ||\n null;\n let link = matchLink((clipboardData?.text || '').trim());\n let searcher = editor.getContentSearcherOfCursor(event);\n\n // In case the matched link is already inside a
                            tag, we do a range search.\n // getRangeFromText will return null if the given text is already in a LinkInlineElement\n if (link && searcher?.getRangeFromText(link.originalUrl, false /*exactMatch*/)) {\n return link;\n }\n\n let word = searcher && searcher.getWordBefore();\n if (word && word.length > MINIMUM_LENGTH) {\n // Check for trailing punctuation\n let trailingPunctuations = word.match(TRAILING_PUNCTUATION_REGEX);\n let trailingPunctuation = (trailingPunctuations || [])[0] || '';\n let candidate = word.substring(0, word.length - trailingPunctuation.length);\n\n // Do special handling for ')', '}', ']'\n ['()', '{}', '[]'].forEach(str => {\n if (\n candidate[candidate.length - 1] == str[1] &&\n candidate.indexOf(str[0]) < 0\n ) {\n candidate = candidate.substr(0, candidate.length - 1);\n }\n });\n\n // Match and replace in editor\n return matchLink(candidate);\n }\n return null;\n })\n : null;\n}\n\nfunction hasLinkBeforeCursor(event: PluginKeyboardEvent, editor: IEditor): boolean {\n let contentSearcher = editor.getContentSearcherOfCursor(event);\n let inline = contentSearcher?.getInlineElementBefore();\n return inline instanceof LinkInlineElement;\n}\n\nfunction autoLink(event: PluginEvent, editor: IEditor) {\n const linkData = cacheGetLinkData(event, editor);\n if (!linkData) {\n return;\n }\n let anchor = editor.getDocument().createElement('a');\n // Need to get searcher before we enter the async callback since the callback can happen when cursor is moved to next line\n // and at that time a new searcher won't be able to find the link text to replace\n let searcher = editor.getContentSearcherOfCursor();\n anchor.textContent = linkData.originalUrl;\n anchor.href = linkData.normalizedUrl;\n\n editor.runAsync(editor => {\n editor.addUndoSnapshot(\n () => {\n replaceWithNode(\n editor,\n linkData.originalUrl,\n anchor,\n false /* exactMatch */,\n searcher ?? undefined\n );\n\n // The content at cursor has changed. Should also clear the cursor data cache\n clearEventDataCache(event);\n return anchor;\n },\n ChangeSource.AutoLink,\n true /*canUndoByBackspace*/\n );\n });\n}\n\n/**\n * @internal\n */\nexport const AutoLinkFeatures: Record<\n keyof AutoLinkFeatureSettings,\n BuildInEditFeature\n> = {\n autoLink: AutoLink,\n unlinkWhenBackspaceAfterLink: UnlinkWhenBackspaceAfterLink as BuildInEditFeature,\n};\n","import {\n isNodeEmpty,\n cacheGetEventData,\n safeInstanceOf,\n splitBalancedNodeRange,\n unwrap,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n PluginKeyboardEvent,\n Keys,\n IEditor,\n PositionType,\n CodeFeatureSettings,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst RemoveCodeWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n const childOfCode = cacheGetCodeChild(event, editor);\n return childOfCode && isNodeEmpty(childOfCode);\n },\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n splitCode(event, editor);\n },\n undefined /* changeSource */,\n true /* canUndoByBackspace */\n );\n },\n};\n\nconst RemoveCodeWhenBackspaceOnEmptyFirstLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n const childOfCode = cacheGetCodeChild(event, editor);\n return childOfCode && isNodeEmpty(childOfCode) && !childOfCode.previousSibling;\n },\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(() => splitCode(event, editor));\n },\n};\n\nfunction cacheGetCodeChild(event: PluginKeyboardEvent, editor: IEditor): Node | null {\n return cacheGetEventData(event, 'CODE_CHILD', () => {\n const codeElement =\n editor.getElementAtCursor('code') ??\n editor.queryElements('code', QueryScope.OnSelection)[0];\n if (codeElement) {\n const pos = editor.getFocusedPosition();\n const block = pos && editor.getBlockElementAtNode(pos.normalize().node);\n if (block) {\n const node =\n block.getStartNode() == codeElement.parentNode\n ? block.getStartNode()\n : block.collapseToSingleElement();\n return isNodeEmpty(node) ? node : null;\n }\n }\n\n return null;\n });\n}\n\nfunction splitCode(event: PluginKeyboardEvent, editor: IEditor) {\n const currentContainer = cacheGetCodeChild(event, editor);\n if (!safeInstanceOf(currentContainer, 'HTMLElement')) {\n return;\n }\n const codeChild = currentContainer.querySelector('code');\n if (!codeChild) {\n const codeParent = splitBalancedNodeRange(currentContainer);\n if (codeParent) {\n unwrap(codeParent);\n }\n if (safeInstanceOf(currentContainer.parentElement, 'HTMLPreElement')) {\n const preParent = splitBalancedNodeRange(currentContainer);\n if (preParent) {\n unwrap(preParent);\n }\n }\n } else {\n //Content model\n unwrap(codeChild);\n }\n editor.select(currentContainer, PositionType.Begin);\n}\n\nexport const CodeFeatures: Record<\n keyof CodeFeatureSettings,\n BuildInEditFeature\n> = {\n removeCodeWhenEnterOnEmptyLine: RemoveCodeWhenEnterOnEmptyLine,\n removeCodeWhenBackspaceOnEmptyFirstLine: RemoveCodeWhenBackspaceOnEmptyFirstLine,\n};\n","import { Browser, getComputedStyle, Position } from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n CursorFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n} from 'roosterjs-editor-types';\n\nconst NoCycleCursorMove: BuildInEditFeature = {\n keys: [Keys.LEFT, Keys.RIGHT],\n allowFunctionKeys: true,\n shouldHandleEvent: (event, editor, ctrlOrMeta) => {\n let range: Range | null = null;\n let position: Position;\n\n if (\n !ctrlOrMeta ||\n !(range = editor.getSelectionRange()) ||\n !range.collapsed ||\n !(position = Position.getStart(range)) ||\n !editor.isPositionAtBeginning(position)\n ) {\n return false;\n }\n\n let rtl = getComputedStyle(position.element, 'direction') == 'rtl';\n let rawEvent = event.rawEvent;\n\n return (!rtl && rawEvent.which == Keys.LEFT) || (rtl && rawEvent.which == Keys.RIGHT);\n },\n handleEvent: event => {\n event.rawEvent.preventDefault();\n },\n defaultDisabled: !Browser.isChrome,\n};\n\n/**\n * @internal\n */\nexport const CursorFeatures: Record<\n keyof CursorFeatureSettings,\n BuildInEditFeature\n> = {\n noCycleCursorMove: NoCycleCursorMove,\n};\n","import { ContentTraverser } from 'roosterjs-editor-dom';\nimport {\n addDelimiters,\n cacheGetEventData,\n createRange,\n getComputedStyle,\n getDelimiterFromElement,\n getEntityFromElement,\n getEntitySelector,\n isBlockElement,\n matchesSelector,\n Position,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n EntityFeatureSettings,\n EntityOperation,\n IEditor,\n Keys,\n PluginKeyboardEvent,\n PositionType,\n PluginEventType,\n DelimiterClasses,\n PluginEvent,\n NodeType,\n ExperimentalFeatures,\n Entity,\n IContentTraverser,\n InlineElement,\n} from 'roosterjs-editor-types';\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"Click\" when user\n * clicks on a readonly entity.\n */\nconst ClickOnEntityFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => cacheGetReadonlyEntityElement(event, editor),\n handleEvent: (event, editor) => {\n cacheGetReadonlyEntityElement(event, editor, EntityOperation.Click);\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"Escape\" when user\n * presses ESC on a readonly entity.\n */\nconst EscapeFromEntityFeature: BuildInEditFeature = {\n keys: [Keys.ESCAPE],\n shouldHandleEvent: (event, editor) => cacheGetReadonlyEntityElement(event, editor),\n handleEvent: (event, editor) => {\n cacheGetReadonlyEntityElement(event, editor, EntityOperation.Escape);\n },\n};\n\nfunction cacheGetReadonlyEntityElement(\n event: PluginKeyboardEvent,\n editor: IEditor,\n operation?: EntityOperation\n) {\n const element = cacheGetEventData(event, 'READONLY_ENTITY_ELEMENT', () => {\n const node = event.rawEvent.target as Node;\n const entityElement = node && editor.getElementAtCursor(getEntitySelector(), node);\n return entityElement && !entityElement.isContentEditable ? entityElement : null;\n });\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n if (entity) {\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent: event.rawEvent,\n entity,\n });\n }\n }\n\n return element;\n}\n\n/**\n * A content edit feature to split current line into two lines at the cursor when user presses\n * ENTER right before a readonly entity.\n * Browser's default behavior will insert an extra BR tag before the entity which causes an extra\n * empty line. So we override the default behavior here.\n */\nconst EnterBeforeReadonlyEntityFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, true /*isNext*/, false /*collapseOnly*/),\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n\n const range = editor.getSelectionRange();\n if (!range) {\n return;\n }\n\n const node = Position.getEnd(range).normalize().node;\n const br = editor.getDocument().createElement('BR');\n node.parentNode?.insertBefore(br, node.nextSibling);\n\n const block = editor.getBlockElementAtNode(node);\n let newContainer: HTMLElement | undefined;\n\n if (block) {\n newContainer = block.collapseToSingleElement();\n br.parentNode?.removeChild(br);\n }\n\n editor.getSelectionRange()?.deleteContents();\n\n if (newContainer?.nextSibling) {\n editor.select(newContainer.nextSibling, PositionType.Begin);\n }\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"RemoveFromEnd\" when user\n * press BACKSPACE right after an entity\n */\nconst BackspaceAfterEntityFeature: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, false /*isNext*/, true /*collapseOnly*/),\n handleEvent: (event, editor) => {\n cacheGetNeighborEntityElement(\n event,\n editor,\n false /*isNext*/,\n true /*collapseOnly*/,\n EntityOperation.RemoveFromEnd\n );\n },\n};\n\n/**\n * A content edit feature to trigger EntityOperation event with operation \"RemoveFromStart\" when user\n * press DELETE right after an entity\n */\nconst DeleteBeforeEntityFeature: BuildInEditFeature = {\n keys: [Keys.DELETE],\n shouldHandleEvent: (event, editor) =>\n cacheGetNeighborEntityElement(event, editor, true /*isNext*/, true /*collapseOnly*/),\n handleEvent: (event, editor) => {\n cacheGetNeighborEntityElement(\n event,\n editor,\n true /*isNext*/,\n true /*collapseOnly*/,\n EntityOperation.RemoveFromStart\n );\n },\n};\n\nfunction cacheGetNeighborEntityElement(\n event: PluginKeyboardEvent,\n editor: IEditor,\n isNext: boolean,\n collapseOnly: boolean,\n operation?: EntityOperation\n): HTMLElement | null {\n const element = cacheGetEventData(\n event,\n 'NEIGHBOR_ENTITY_ELEMENT_' + isNext + '_' + collapseOnly,\n () => {\n const range = editor.getSelectionRange();\n\n if (!range || (collapseOnly && !range.collapsed)) {\n return null;\n }\n\n const regions = editor.getSelectedRegions();\n const regionRoot = regions[0]?.rootNode;\n\n range.commonAncestorContainer.normalize();\n const pos = Position.getEnd(range).normalize();\n const isAtBeginOrEnd = pos.offset == 0 || pos.isAtEnd;\n let entityNode: HTMLElement | null = null;\n\n if (isAtBeginOrEnd && regionRoot) {\n const traverser = ContentTraverser.createBodyTraverser(regionRoot, pos.node);\n const sibling = isNext\n ? pos.offset == 0\n ? traverser.currentInlineElement\n : traverser.getNextInlineElement()\n : pos.isAtEnd\n ? traverser.currentInlineElement\n : traverser.getPreviousInlineElement();\n let node = sibling && sibling.getContainerNode();\n\n if (!collapseOnly) {\n const block = editor.getBlockElementAtNode(pos.node);\n if (!block || (node && !block.contains(node))) {\n node = null;\n }\n }\n\n entityNode = node && editor.getElementAtCursor(getEntitySelector(), node);\n }\n\n return entityNode;\n }\n );\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n if (entity) {\n triggerOperation(entity, editor, operation, event);\n }\n }\n\n return element;\n}\n\n/**\n * @requires ExperimentalFeatures.InlineEntityReadOnlyDelimiters to be enabled\n * Content edit feature to move the cursor from Delimiters around Entities when using Right or Left Arrow Keys\n */\nconst MoveBetweenDelimitersFeature: BuildInEditFeature = {\n keys: [Keys.RIGHT, Keys.LEFT],\n allowFunctionKeys: true,\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) => {\n if (\n event.rawEvent.altKey ||\n !editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n return false;\n }\n\n const element = editor.getElementAtCursor();\n if (!element) {\n return false;\n }\n\n const isRTL = getComputedStyle(element, 'direction') === 'rtl';\n const shouldCheckBefore = isRTL == (event.rawEvent.which === Keys.LEFT);\n\n return getIsDelimiterAtCursor(event, editor, shouldCheckBefore);\n },\n handleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n const checkBefore = cacheGetCheckBefore(event);\n const delimiter = cacheDelimiter(event, checkBefore);\n\n if (!delimiter) {\n return;\n }\n\n const { delimiterPair, entity } = getRelatedElements(delimiter, checkBefore, editor);\n\n if (delimiterPair && entity && matchesSelector(entity, getEntitySelector())) {\n event.rawEvent.preventDefault();\n editor.runAsync(() => {\n const positionType = checkBefore\n ? event.rawEvent.shiftKey\n ? PositionType.After\n : PositionType.End\n : PositionType.Before;\n const position = new Position(delimiterPair, positionType);\n if (event.rawEvent.shiftKey) {\n const selection = delimiterPair.ownerDocument.getSelection();\n selection?.extend(position.node, position.offset);\n } else {\n editor.select(position);\n }\n });\n }\n },\n};\n\n/**\n * @requires ExperimentalFeatures.InlineEntityReadOnlyDelimiters to be enabled\n * Content edit Feature to trigger a Delete Entity Operation when one of the Delimiter is about to be removed with DELETE or Backspace\n */\nconst RemoveEntityBetweenDelimitersFeature: BuildInEditFeature = {\n keys: [Keys.BACKSPACE, Keys.DELETE],\n shouldHandleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n if (!editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)) {\n return false;\n }\n\n const range = editor.getSelectionRange();\n if (!range?.collapsed) {\n return false;\n }\n const checkBefore = event.rawEvent.which === Keys.DELETE;\n const isDelimiter = getIsDelimiterAtCursor(event, editor, checkBefore);\n\n if (isDelimiter) {\n const delimiter = cacheDelimiter(event, checkBefore);\n const entityElement = checkBefore\n ? delimiter?.nextElementSibling\n : delimiter?.previousElementSibling;\n\n return !!cacheEntityBetweenDelimiter(event, editor, checkBefore, entityElement);\n }\n\n return false;\n },\n handleEvent(event: PluginKeyboardEvent, editor: IEditor) {\n const checkBefore = event.rawEvent.which === Keys.DELETE;\n cacheEntityBetweenDelimiter(\n event,\n editor,\n checkBefore,\n null,\n checkBefore ? EntityOperation.RemoveFromStart : EntityOperation.RemoveFromEnd\n );\n },\n};\n\nfunction getIsDelimiterAtCursor(event: PluginKeyboardEvent, editor: IEditor, checkBefore: boolean) {\n const position = editor.getFocusedPosition()?.normalize();\n cacheGetCheckBefore(event, checkBefore);\n\n if (!position) {\n return false;\n }\n\n const focusedElement =\n position.node.nodeType == NodeType.Text\n ? position.node\n : position.node == position.element\n ? position.element.childNodes.item(position.offset)\n : position.element;\n\n const data = checkBefore\n ? {\n class: DelimiterClasses.DELIMITER_BEFORE,\n pairClass: DelimiterClasses.DELIMITER_AFTER,\n isAtEndOrBeginning: position.isAtEnd,\n }\n : {\n class: DelimiterClasses.DELIMITER_AFTER,\n pairClass: DelimiterClasses.DELIMITER_BEFORE,\n isAtEndOrBeginning: position.offset == 0,\n };\n\n const sibling = getNextSibling(editor, focusedElement, checkBefore);\n if (data.isAtEndOrBeginning && sibling) {\n const elAtCursor = editor.getElementAtCursor('.' + data.class, sibling);\n\n if (elAtCursor && !!shouldHandle(elAtCursor)) {\n return true;\n }\n }\n\n const entityAtCursor =\n focusedElement && editor.getElementAtCursor('.' + data.class, focusedElement);\n return !!shouldHandle(entityAtCursor);\n\n function shouldHandle(element: HTMLElement | null | undefined) {\n if (!element) {\n return false;\n }\n\n const { delimiterPair } = getRelatedElements(element, checkBefore, editor);\n\n return (\n delimiterPair &&\n (delimiterPair.className || '').indexOf(data.pairClass) > -1 &&\n cacheDelimiter(event, checkBefore, element)\n );\n }\n}\n\nfunction getNextSibling(editor: IEditor, element: Node, checkBefore: boolean) {\n const traverser = getBlockTraverser(editor, element);\n if (!traverser) {\n return undefined;\n }\n\n const traverseFn = (t: IContentTraverser) =>\n checkBefore ? t.getNextInlineElement() : t.getPreviousInlineElement();\n\n let currentInline = traverser.currentInlineElement;\n while (currentInline && currentInline.getContainerNode() === element) {\n currentInline = traverseFn(traverser);\n }\n return currentInline?.getContainerNode();\n}\n\nfunction getBlockTraverser(editor: IEditor, element: Node | null | undefined) {\n if (!element) {\n return undefined;\n }\n const blockElement = editor.getBlockElementAtNode(element)?.getStartNode();\n if (!blockElement || !isBlockElement(blockElement)) {\n return undefined;\n }\n return ContentTraverser.createBodyTraverser(blockElement, element);\n}\n\nfunction cacheDelimiter(event: PluginEvent, checkBefore: boolean, delimiter?: HTMLElement | null) {\n return cacheGetEventData(event, 'delimiter_cache_key_' + checkBefore, () => delimiter);\n}\n\nfunction cacheEntityBetweenDelimiter(\n event: PluginKeyboardEvent,\n editor: IEditor,\n checkBefore: boolean,\n entity?: Element | null,\n operation?: EntityOperation\n) {\n const element = cacheGetEventData(\n event,\n 'entity_delimiter_cache_key_' + checkBefore,\n () => entity && editor.getElementAtCursor(getEntitySelector(), entity)\n );\n\n if (element && operation !== undefined) {\n const entity = getEntityFromElement(element);\n\n if (entity) {\n triggerOperation(entity, editor, operation, event);\n }\n }\n\n return element;\n}\n\nfunction triggerOperation(\n entity: Entity,\n editor: IEditor,\n operation: EntityOperation,\n event: PluginKeyboardEvent\n) {\n const { nextElementSibling, previousElementSibling } = entity.wrapper;\n editor.triggerPluginEvent(PluginEventType.EntityOperation, {\n operation,\n rawEvent: event.rawEvent,\n entity,\n });\n\n if (\n entity.isReadonly &&\n !isBlockElement(entity.wrapper) &&\n editor.isFeatureEnabled(ExperimentalFeatures.InlineEntityReadOnlyDelimiters)\n ) {\n if (event.rawEvent.defaultPrevented) {\n editor.runAsync(() => {\n if (!editor.contains(entity.wrapper)) {\n removeDelimiters(nextElementSibling, previousElementSibling);\n } else {\n const [delimiterAfter] = addDelimiters(entity.wrapper);\n if (delimiterAfter) {\n editor.select(delimiterAfter, PositionType.After);\n }\n }\n });\n } else if (\n getDelimiterFromElement(nextElementSibling) &&\n getDelimiterFromElement(previousElementSibling)\n ) {\n editor.select(createRange(previousElementSibling, nextElementSibling));\n }\n }\n}\n\nfunction removeDelimiters(\n nextElementSibling: Element | null,\n previousElementSibling: Element | null\n) {\n [nextElementSibling, previousElementSibling].forEach(sibling => {\n if (getDelimiterFromElement(sibling)) {\n sibling?.parentElement?.removeChild(sibling);\n }\n });\n}\n\nfunction cacheGetCheckBefore(event: PluginKeyboardEvent, checkBefore?: boolean): boolean {\n return !!cacheGetEventData(event, 'Check_Before', () => checkBefore);\n}\n\nfunction getRelatedElements(delimiter: HTMLElement, checkBefore: boolean, editor: IEditor) {\n let entity: Element | null = null;\n let delimiterPair: Element | null = null;\n const traverser = getBlockTraverser(editor, delimiter);\n if (!traverser) {\n return { delimiterPair, entity };\n }\n\n const selector = `.${\n checkBefore ? DelimiterClasses.DELIMITER_AFTER : DelimiterClasses.DELIMITER_BEFORE\n }`;\n const traverseFn = (t: IContentTraverser) =>\n checkBefore ? t.getNextInlineElement() : t.getPreviousInlineElement();\n const getElementFromInline = (element: InlineElement, selector: string) => {\n const node = element?.getContainerNode();\n return (node && editor.getElementAtCursor(selector, node)) ?? null;\n };\n const entitySelector = getEntitySelector();\n\n let current = traverser.currentInlineElement;\n while (current && (!entity || !delimiterPair)) {\n entity = entity || getElementFromInline(current, entitySelector);\n delimiterPair = delimiterPair || getElementFromInline(current, selector);\n\n // If we found the entity but the next inline after the entity is not a delimiter,\n // it means that the delimiter pair got removed or is invalid, return null instead.\n if (entity && !delimiterPair && !getElementFromInline(current, entitySelector)) {\n delimiterPair = null;\n break;\n }\n current = traverseFn(traverser);\n }\n\n return { entity, delimiterPair };\n}\n\n/**\n * @internal\n */\nexport const EntityFeatures: Record<\n keyof EntityFeatureSettings,\n BuildInEditFeature\n> = {\n clickOnEntity: ClickOnEntityFeature,\n escapeFromEntity: EscapeFromEntityFeature,\n enterBeforeReadonlyEntity: EnterBeforeReadonlyEntityFeature,\n backspaceAfterEntity: BackspaceAfterEntityFeature,\n deleteBeforeEntity: DeleteBeforeEntityFeature,\n moveBetweenDelimitersFeature: MoveBetweenDelimitersFeature,\n removeEntityBetweenDelimiters: RemoveEntityBetweenDelimitersFeature,\n};\n","import getAutoBulletListStyle from '../utils/getAutoBulletListStyle';\nimport getAutoNumberingListStyle from '../utils/getAutoNumberingListStyle';\nimport {\n blockFormat,\n commitListChains,\n setIndentation,\n toggleBullet,\n toggleNumbering,\n toggleListType,\n} from 'roosterjs-editor-api';\nimport {\n Browser,\n getTagOfNode,\n isNodeEmpty,\n isPositionAtBeginningOf,\n Position,\n VListChain,\n createVListFromRegion,\n isBlockElement,\n cacheGetEventData,\n safeInstanceOf,\n VList,\n createObjectDefinition,\n createNumberDefinition,\n getMetadata,\n findClosestElementAncestor,\n getComputedStyle,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n IEditor,\n Indentation,\n ListFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n QueryScope,\n RegionBase,\n ListType,\n ExperimentalFeatures,\n PositionType,\n NumberingListType,\n BulletListType,\n IPositionContentSearcher,\n} from 'roosterjs-editor-types';\n\nconst PREVIOUS_BLOCK_CACHE_KEY = 'previousBlock';\nconst NEXT_BLOCK_CACHE_KEY = 'nextBlock';\n\ninterface ListStyleMetadata {\n orderedStyleType?: NumberingListType;\n unorderedStyleType?: BulletListType;\n}\n\nconst ListStyleDefinitionMetadata = createObjectDefinition(\n {\n orderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n NumberingListType.Min,\n NumberingListType.Max\n ),\n unorderedStyleType: createNumberDefinition(\n true /** isOptional */,\n undefined /** value **/,\n BulletListType.Min,\n BulletListType.Max\n ),\n },\n true /** isOptional */,\n true /** allowNull */\n);\n\nconst shouldHandleIndentationEvent = (indenting: boolean) => (\n event: PluginKeyboardEvent,\n editor: IEditor\n) => {\n const { keyCode, altKey, shiftKey, ctrlKey, metaKey } = event.rawEvent;\n return (\n !ctrlKey &&\n !metaKey &&\n (keyCode === Keys.TAB\n ? !altKey && shiftKey === !indenting\n : shiftKey && altKey && keyCode === (indenting ? Keys.RIGHT : Keys.LEFT)) &&\n cacheGetListElement(event, editor)\n );\n};\n\nconst handleIndentationEvent = (indenting: boolean) => (\n event: PluginKeyboardEvent,\n editor: IEditor\n) => {\n let currentElement: Node | null = null;\n const isRTL =\n event.rawEvent.keyCode !== Keys.TAB &&\n (currentElement = editor.getElementAtCursor()) &&\n getComputedStyle(currentElement, 'direction') == 'rtl';\n setIndentation(editor, isRTL == indenting ? Indentation.Decrease : Indentation.Increase);\n event.rawEvent.preventDefault();\n};\n\n/**\n * IndentWhenTab edit feature, provides the ability to indent current list when user press TAB\n */\nconst IndentWhenTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: shouldHandleIndentationEvent(true),\n handleEvent: handleIndentationEvent(true),\n};\n\n/**\n * OutdentWhenShiftTab edit feature, provides the ability to outdent current list when user press Shift+TAB\n */\nconst OutdentWhenShiftTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: shouldHandleIndentationEvent(false),\n handleEvent: handleIndentationEvent(false),\n allowFunctionKeys: true,\n};\n\n/**\n * indentWhenAltShiftRight edit feature, provides the ability to indent or outdent current list when user press Alt+shift+Right\n */\nconst IndentWhenAltShiftRight: BuildInEditFeature = {\n keys: [Keys.RIGHT],\n shouldHandleEvent: shouldHandleIndentationEvent(true),\n handleEvent: handleIndentationEvent(true),\n allowFunctionKeys: true,\n defaultDisabled: Browser.isMac,\n};\n\n/**\n * outdentWhenAltShiftLeft edit feature, provides the ability to indent or outdent current list when user press Alt+shift+Left\n */\nconst OutdentWhenAltShiftLeft: BuildInEditFeature = {\n keys: [Keys.LEFT],\n shouldHandleEvent: shouldHandleIndentationEvent(false),\n handleEvent: handleIndentationEvent(false),\n allowFunctionKeys: true,\n defaultDisabled: Browser.isMac,\n};\n\n/**\n * MergeInNewLine edit feature, provides the ability to merge current line into a new line when user press\n * BACKSPACE at beginning of a list item\n */\nconst MergeInNewLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n let range = editor.getSelectionRange();\n return li && range?.collapsed && isPositionAtBeginningOf(Position.getStart(range), li);\n },\n handleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n if (li?.previousSibling) {\n blockFormat(editor, (region, start, end) => {\n const vList = createVListFromRegion(\n region,\n false /*includeSiblingList*/,\n li ?? undefined\n );\n if (vList && start && end) {\n vList.setIndentation(start, end, Indentation.Decrease, true /*softOutdent*/);\n vList.writeBack(\n editor.isFeatureEnabled(ExperimentalFeatures.ReuseAllAncestorListElements),\n editor.isFeatureEnabled(ExperimentalFeatures.DisableListChain)\n );\n event.rawEvent.preventDefault();\n }\n });\n } else {\n toggleListAndPreventDefault(event, editor);\n }\n },\n defaultDisabled: true,\n};\n\n/**\n * OutdentWhenBackOn1stEmptyLine edit feature, provides the ability to outdent current item if user press\n * BACKSPACE at the first and empty line of a list\n */\nconst OutdentWhenBackOn1stEmptyLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n return (\n li &&\n isNodeEmpty(li) &&\n !li.previousSibling &&\n !li.getElementsByTagName('blockquote').length\n );\n },\n handleEvent: toggleListAndPreventDefault,\n};\n\n/**\n * MaintainListChainWhenDelete edit feature, provides the ability to indent the list if user press\n * DELETE before the first item of a list\n */\nconst MaintainListChainWhenDelete: BuildInEditFeature = {\n keys: [Keys.DELETE],\n shouldHandleEvent: (event, editor) => {\n const li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n const range = editor.getSelectionRange();\n if (li || !range) {\n return false;\n }\n const isAtEnd = Position.getEnd(range).isAtEnd;\n const nextSibling = isAtEnd ? getCacheNextSibling(event, editor) : undefined;\n const isAtEndAndBeforeLI = editor.getElementAtCursor('LI', nextSibling, event);\n return isAtEndAndBeforeLI;\n },\n handleEvent: (event, editor) => {\n const chains = getListChains(editor);\n editor.runAsync(editor => commitListChains(editor, chains));\n },\n};\n\n/**\n * OutdentWhenEnterOnEmptyLine edit feature, provides the ability to outdent current item if user press\n * ENTER at the beginning of an empty line of a list\n */\nconst OutdentWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n let li = editor.getElementAtCursor('LI', undefined /*startFrom*/, event);\n return !event.rawEvent.shiftKey && li && isNodeEmpty(li);\n },\n handleEvent: (event, editor) => {\n editor.addUndoSnapshot(\n () => toggleListAndPreventDefault(event, editor, false /* includeSiblingLists */),\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n defaultDisabled: !Browser.isIE && !Browser.isChrome,\n};\n\n/**\n * Validate if a block of text is considered a list pattern\n * The regex expression will look for patterns of the form:\n * 1. 1> 1) 1- (1)\n * @returns if a text is considered a list pattern\n */\nfunction isAListPattern(textBeforeCursor: string) {\n const REGEX: RegExp = /^(\\*|-|[0-9]{1,2}\\.|[0-9]{1,2}\\>|[0-9]{1,2}\\)|[0-9]{1,2}\\-|\\([0-9]{1,2}\\))$/;\n return REGEX.test(textBeforeCursor);\n}\n\n/**\n * AutoBullet edit feature, provides the ability to automatically convert current line into a list.\n * When user input \"1. \", convert into a numbering list\n * When user input \"- \" or \"* \", convert into a bullet list\n */\nconst AutoBullet: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n let searcher: IPositionContentSearcher | null;\n if (\n !cacheGetListElement(event, editor) &&\n !editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList) &&\n (searcher = editor.getContentSearcherOfCursor(event))\n ) {\n let textBeforeCursor = searcher.getSubStringBefore(4);\n\n // Auto list is triggered if:\n // 1. Text before cursor exactly matches '*', '-' or '1.'\n // 2. There's no non-text inline entities before cursor\n return isAListPattern(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n let regions: RegionBase[];\n let searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n let textBeforeCursor = searcher.getSubStringBefore(4);\n let textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n\n if (!textRange) {\n // no op if the range can't be found\n } else if (\n textBeforeCursor.indexOf('*') == 0 ||\n textBeforeCursor.indexOf('-') == 0\n ) {\n prepareAutoBullet(editor, textRange);\n toggleBullet(editor);\n } else if (isAListPattern(textBeforeCursor)) {\n prepareAutoBullet(editor, textRange);\n toggleNumbering(editor);\n } else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {\n const num = parseInt(textBeforeCursor);\n prepareAutoBullet(editor, textRange);\n toggleNumbering(editor, num);\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.AutoFormatList to be enabled\n * AutoBulletList edit feature, provides the ability to automatically convert current line into a bullet list.\n */\nconst AutoBulletList: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n if (\n !cacheGetListElement(event, editor) &&\n editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)\n ) {\n return shouldTriggerList(event, editor, getAutoBulletListStyle, ListType.Unordered);\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n let searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n let textBeforeCursor = searcher.getSubStringBefore(5);\n let textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n const listStyle = getAutoBulletListStyle(textBeforeCursor);\n\n if (textRange) {\n prepareAutoBullet(editor, textRange);\n toggleBullet(\n editor,\n listStyle ?? undefined,\n 'autoToggleList' /** apiNameOverride */\n );\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.AutoFormatList to be enabled\n * AutoNumberingList edit feature, provides the ability to automatically convert current line into a numbering list.\n */\nconst AutoNumberingList: BuildInEditFeature = {\n keys: [Keys.SPACE],\n shouldHandleEvent: (event, editor) => {\n if (\n !cacheGetListElement(event, editor) &&\n editor.isFeatureEnabled(ExperimentalFeatures.AutoFormatList)\n ) {\n return shouldTriggerList(event, editor, getAutoNumberingListStyle, ListType.Ordered);\n }\n return false;\n },\n handleEvent: (event, editor) => {\n editor.insertContent(' ');\n event.rawEvent.preventDefault();\n editor.addUndoSnapshot(\n () => {\n const searcher = editor.getContentSearcherOfCursor();\n if (!searcher) {\n return;\n }\n const textBeforeCursor = searcher.getSubStringBefore(5);\n const textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n\n if (textRange) {\n const number = isFirstItemOfAList(textBeforeCursor)\n ? 1\n : parseInt(textBeforeCursor);\n\n const isLi = getPreviousListItem(editor, textRange);\n const listStyle = getAutoNumberingListStyle(textBeforeCursor) ?? undefined;\n prepareAutoBullet(editor, textRange);\n toggleNumbering(\n editor,\n isLi && number !== 1 ? undefined : number /** startNumber */,\n listStyle,\n 'autoToggleList' /** apiNameOverride */\n );\n }\n searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)?.deleteContents();\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n },\n};\n\nconst getPreviousListItem = (editor: IEditor, textRange: Range) => {\n const blockElement = editor\n .getBodyTraverser(textRange?.startContainer)\n .getPreviousBlockElement();\n const previousNode = blockElement?.getEndNode() ?? null;\n return getTagOfNode(previousNode) === 'LI' ? previousNode : undefined;\n};\n\nconst getPreviousListType = (editor: IEditor, textRange: Range, listType: ListType) => {\n const type = listType === ListType.Ordered ? 'orderedStyleType' : 'unorderedStyleType';\n const listItem = getPreviousListItem(editor, textRange);\n const list = listItem\n ? findClosestElementAncestor(\n listItem,\n undefined /** root*/,\n listType === ListType.Ordered ? 'ol' : 'ul'\n )\n : null;\n const metadata = list ? getMetadata(list, ListStyleDefinitionMetadata) : null;\n return metadata ? metadata[type] : null;\n};\n\nconst isFirstItemOfAList = (item: string) => {\n const number = parseInt(item);\n if (number && number === 1) {\n return 1;\n } else {\n const letter = item.replace(/\\(|\\)|\\-|\\./g, '').trim();\n return letter.length === 1 && ['i', 'a', 'I', 'A'].indexOf(letter) > -1 ? 1 : undefined;\n }\n};\n\n/**\n * Maintain the list numbers in list chain\n * e.g. we have two lists:\n * 1, 2, 3 and 4, 5, 6\n * Now we delete list item 2, so the first one becomes \"1, 2\".\n * This edit feature can maintain the list number of the second list to become \"3, 4, 5\"\n */\nconst MaintainListChain: BuildInEditFeature = {\n keys: [Keys.ENTER, Keys.TAB, Keys.DELETE, Keys.BACKSPACE, Keys.RANGE],\n shouldHandleEvent: (event, editor) =>\n editor\n .queryElements('li', QueryScope.OnSelection)\n .filter(li => !li.getElementsByTagName('blockquote').length).length > 0,\n handleEvent: (event, editor) => {\n const chains = getListChains(editor);\n editor.runAsync(editor => commitListChains(editor, chains));\n },\n};\n\nfunction getListChains(editor: IEditor) {\n return VListChain.createListChains(editor.getSelectedRegions());\n}\n\nfunction getCacheNextSibling(event: PluginKeyboardEvent, editor: IEditor): Node | undefined {\n const element = cacheGetEventData(event, 'nextSibling', () => {\n const range = editor.getSelectionRange();\n const pos = range && Position.getEnd(range).normalize();\n const traverser = pos && editor.getBodyTraverser(pos.node);\n return traverser?.getNextBlockElement()?.getStartNode();\n });\n return element;\n}\n\nfunction prepareAutoBullet(editor: IEditor, range: Range) {\n const block = editor.getBlockElementAtNode(range.startContainer);\n const endNode = block?.getEndNode();\n if (endNode && getTagOfNode(endNode) != 'BR') {\n const br = editor.getDocument().createElement('BR');\n if (isBlockElement(endNode)) {\n endNode.appendChild(br);\n } else {\n endNode.parentNode?.insertBefore(br, endNode.nextSibling);\n }\n editor.select(range.startContainer, range.startOffset);\n }\n}\n\nfunction toggleListAndPreventDefault(\n event: PluginKeyboardEvent,\n editor: IEditor,\n includeSiblingLists: boolean = true\n) {\n let listInfo = cacheGetListElement(event, editor);\n if (listInfo) {\n let listElement = listInfo[0];\n let tag = getTagOfNode(listElement);\n\n if (tag == 'UL' || tag == 'OL') {\n toggleListType(\n editor,\n tag == 'UL' ? ListType.Unordered : ListType.Ordered,\n undefined /* startNumber */,\n includeSiblingLists\n );\n }\n\n editor.focus();\n event.rawEvent.preventDefault();\n }\n}\n\nfunction cacheGetListElement(event: PluginKeyboardEvent, editor: IEditor) {\n let li = editor.getElementAtCursor('LI,TABLE', undefined /*startFrom*/, event);\n let listElement = li && getTagOfNode(li) == 'LI' && editor.getElementAtCursor('UL,OL', li);\n return listElement ? [listElement, li] : null;\n}\n\nfunction shouldTriggerList<\n T extends ListType,\n K extends T extends ListType.Ordered ? NumberingListType : BulletListType\n>(\n event: PluginKeyboardEvent,\n editor: IEditor,\n getListStyle: (\n text: string,\n previousListChain?: VListChain[],\n previousListStyle?: K\n ) => K | null,\n listType: T\n) {\n const searcher = editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return false;\n }\n const textBeforeCursor = searcher.getSubStringBefore(4);\n const traverser = editor.getBlockTraverser();\n const text =\n traverser && traverser.currentBlockElement\n ? traverser.currentBlockElement.getTextContent().slice(0, textBeforeCursor.length)\n : null;\n const isATheBeginning = text && text === textBeforeCursor;\n const listChains = getListChains(editor);\n const textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);\n const previousListType =\n textRange && getPreviousListType(editor, textRange, listType);\n const isFirstItem = isFirstItemOfAList(textBeforeCursor);\n const listStyle = getListStyle(textBeforeCursor, listChains, previousListType ?? undefined);\n const shouldTriggerNewListStyle =\n isFirstItem ||\n !previousListType ||\n previousListType === listStyle ||\n listType === ListType.Unordered;\n\n return (\n isATheBeginning &&\n !searcher.getNearestNonTextInlineElement() &&\n listStyle &&\n shouldTriggerNewListStyle\n );\n}\n\n/**\n * MergeListOnBackspaceAfterList edit feature, provides the ability to merge list on backspace on block after a list.\n */\nconst MergeListOnBackspaceAfterList: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n const target = editor.getElementAtCursor();\n if (target) {\n const cursorBlock = editor.getBlockElementAtNode(target)?.getStartNode() as HTMLElement;\n const previousBlock = cursorBlock?.previousElementSibling ?? null;\n\n if (isList(previousBlock)) {\n const range = editor.getSelectionRange();\n const searcher = editor.getContentSearcherOfCursor(event);\n const textBeforeCursor = searcher?.getSubStringBefore(4);\n const nearestInline = searcher?.getNearestNonTextInlineElement();\n\n if (range && range.collapsed && textBeforeCursor === '' && !nearestInline) {\n const tempBlock = cursorBlock?.nextElementSibling;\n const nextBlock = isList(tempBlock) ? tempBlock : tempBlock?.firstChild;\n\n if (\n isList(nextBlock) &&\n getTagOfNode(previousBlock) == getTagOfNode(nextBlock)\n ) {\n const element = cacheGetEventData(\n event,\n PREVIOUS_BLOCK_CACHE_KEY,\n () => previousBlock\n );\n const nextElement = cacheGetEventData(\n event,\n NEXT_BLOCK_CACHE_KEY,\n () => nextBlock\n );\n\n return !!element && !!nextElement;\n }\n }\n }\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n editor.runAsync(editor => {\n const previousList = cacheGetEventData(\n event,\n PREVIOUS_BLOCK_CACHE_KEY,\n () => null\n );\n const targetBlock = cacheGetEventData(\n event,\n NEXT_BLOCK_CACHE_KEY,\n () => null\n );\n\n const rangeBeforeWriteBack = editor.getSelectionRange();\n\n if (previousList && targetBlock && rangeBeforeWriteBack) {\n const fvList = new VList(previousList);\n fvList.mergeVList(new VList(targetBlock));\n\n let span = editor.getDocument().createElement('span');\n span.id = 'restoreRange';\n rangeBeforeWriteBack.insertNode(span);\n\n fvList.writeBack();\n\n span = editor.queryElements('#restoreRange')[0];\n\n if (span.parentElement) {\n editor.select(new Position(span, PositionType.After));\n span.parentElement.removeChild(span);\n }\n }\n });\n },\n};\n\n/**\n * @internal\n */\nexport const ListFeatures: Record<\n keyof ListFeatureSettings,\n BuildInEditFeature\n> = {\n autoBullet: AutoBullet,\n indentWhenTab: IndentWhenTab,\n outdentWhenShiftTab: OutdentWhenShiftTab,\n outdentWhenBackspaceOnEmptyFirstLine: OutdentWhenBackOn1stEmptyLine,\n outdentWhenEnterOnEmptyLine: OutdentWhenEnterOnEmptyLine,\n mergeInNewLineWhenBackspaceOnFirstChar: MergeInNewLine,\n maintainListChain: MaintainListChain,\n maintainListChainWhenDelete: MaintainListChainWhenDelete,\n autoNumberingList: AutoNumberingList,\n autoBulletList: AutoBulletList,\n mergeListOnBackspaceAfterList: MergeListOnBackspaceAfterList,\n outdentWhenAltShiftLeft: OutdentWhenAltShiftLeft,\n indentWhenAltShiftRight: IndentWhenAltShiftRight,\n};\n\nfunction isList(element: Node | null | undefined): element is HTMLOListElement | HTMLOListElement {\n return (\n !!element &&\n (safeInstanceOf(element, 'HTMLOListElement') || safeInstanceOf(element, 'HTMLUListElement'))\n );\n}\n","import { cacheGetEventData, createRange, Position, wrap } from 'roosterjs-editor-dom';\nimport type { CompatibleKeys } from 'roosterjs-editor-types/lib/compatibleTypes';\nimport {\n BuildInEditFeature,\n ChangeSource,\n IEditor,\n Keys,\n MarkdownFeatureSettings,\n NodePosition,\n PluginKeyboardEvent,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\nfunction generateBasicMarkdownFeature(\n key: Keys | CompatibleKeys,\n triggerCharacter: string,\n elementTag: string,\n useShiftKey: boolean\n): BuildInEditFeature {\n return {\n keys: [key],\n shouldHandleEvent: (event, editor) =>\n event.rawEvent.shiftKey === useShiftKey &&\n !!cacheGetRangeForMarkdownOperation(event, editor, triggerCharacter),\n handleEvent: (event, editor) => {\n // runAsync is here to allow the event to complete so autocomplete will present the trigger character.\n editor.runAsync(editor => {\n handleMarkdownEvent(event, editor, triggerCharacter, elementTag);\n });\n },\n };\n}\n\nfunction cacheGetRangeForMarkdownOperation(\n event: PluginKeyboardEvent,\n editor: IEditor,\n triggerCharacter: string\n): Range | null {\n return cacheGetEventData(event, 'MARKDOWN_RANGE', (): Range | null => {\n const searcher = editor.getContentSearcherOfCursor(event);\n\n let startPosition: NodePosition | null = null;\n let endPosition: NodePosition | null = null;\n searcher?.forEachTextInlineElement(textInlineElement => {\n if (endPosition && startPosition) {\n return true;\n }\n const inlineTextContent = textInlineElement.getTextContent();\n\n // special case for immediately preceding character being whitespace\n if (inlineTextContent[inlineTextContent.length - 1].trim().length == 0) {\n return false;\n }\n\n //if the text is pasted, it might create a inner element inside the text element,\n // then is necessary to check the parent block to get whole text\n const parentBlockText = textInlineElement.getParentBlock().getTextContent();\n\n // special case for consecutive trigger characters\n // check parent block in case of pasted text\n if (parentBlockText[parentBlockText.length - 1].trim() === triggerCharacter) {\n return false;\n }\n\n if (!endPosition) {\n endPosition = textInlineElement.getStartPosition().move(inlineTextContent.length);\n }\n if (inlineTextContent[0] == triggerCharacter) {\n startPosition = textInlineElement.getStartPosition();\n } else {\n let contentIndex = inlineTextContent.length - 1;\n for (; contentIndex > 0; contentIndex--) {\n if (startPosition) {\n return true;\n }\n if (\n inlineTextContent[contentIndex] == triggerCharacter &&\n inlineTextContent[contentIndex - 1].trim().length == 0\n ) {\n startPosition = textInlineElement.getStartPosition().move(contentIndex);\n return true;\n }\n }\n }\n });\n return startPosition && endPosition && createRange(startPosition, endPosition);\n });\n}\n\nfunction handleMarkdownEvent(\n event: PluginKeyboardEvent,\n editor: IEditor,\n triggerCharacter: string,\n elementTag: string\n) {\n editor.addUndoSnapshot(\n () => {\n const range = cacheGetRangeForMarkdownOperation(event, editor, triggerCharacter);\n if (!range) {\n return;\n }\n const lastTypedTriggerPosition = new Position(range.endContainer, PositionType.End);\n const hasLastTypedTrigger = range.endOffset + 1 <= lastTypedTriggerPosition.offset;\n if (!!range && hasLastTypedTrigger) {\n // get the text content range\n const textContentRange = range.cloneRange();\n textContentRange.setStart(\n textContentRange.startContainer,\n textContentRange.startOffset + 1\n );\n\n const text = textContentRange.extractContents().textContent;\n const textNode = editor.getDocument().createTextNode(text ?? '');\n\n // extract content and put it into a new element.\n const elementToWrap = wrap(textNode, elementTag);\n //include last typed character\n range.setEnd(range.endContainer, range.endOffset + 1);\n range.deleteContents();\n\n // ZWS here ensures we don't end up inside the newly created node.\n const nonPrintedSpaceTextNode = editor\n .getDocument()\n .createTextNode(ZERO_WIDTH_SPACE);\n range.insertNode(nonPrintedSpaceTextNode);\n range.insertNode(elementToWrap);\n\n editor.select(nonPrintedSpaceTextNode, PositionType.End);\n }\n },\n ChangeSource.Format,\n true /*canUndoByBackspace*/\n );\n}\n\n/**\n * Markdown bold feature. Make bold text with markdown shortcuts.\n */\nconst MarkdownBold: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.EIGHT_ASTERISK,\n '*',\n 'b',\n true /* useShiftKey */\n);\n\n/**\n * Markdown italics feature. Make italic text with markdown shortcuts.\n */\nconst MarkdownItalic: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.DASH_UNDERSCORE,\n '_',\n 'i',\n true /* useShiftKey */\n);\n\n/**\n * Markdown strikethrough feature. MAke strikethrough text with markdown shortcuts.\n */\nconst MarkdownStrikethrough: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.GRAVE_TILDE,\n '~',\n 's',\n true /* useShiftKey */\n);\n\n/**\n * Markdown inline code feature. Marks specific text as inline code with markdown shortcuts.\n */\nconst MarkdownInlineCode: BuildInEditFeature = generateBasicMarkdownFeature(\n Keys.GRAVE_TILDE,\n '`',\n 'code',\n false /* useShiftKey */\n);\n\n/**\n * @internal\n */\nexport const MarkdownFeatures: Record<\n keyof MarkdownFeatureSettings,\n BuildInEditFeature\n> = {\n markdownBold: MarkdownBold,\n markdownItalic: MarkdownItalic,\n markdownStrikethru: MarkdownStrikethrough,\n markdownInlineCode: MarkdownInlineCode,\n};\n","import { clearFormat } from 'roosterjs-editor-api';\nimport {\n BuildInEditFeature,\n IEditor,\n Keys,\n PluginKeyboardEvent,\n PositionType,\n QuoteFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n getTagOfNode,\n isNodeEmpty,\n safeInstanceOf,\n splitBalancedNodeRange,\n toArray,\n unwrap,\n wrap,\n} from 'roosterjs-editor-dom';\n\nconst QUOTE_TAG = 'BLOCKQUOTE';\nconst STRUCTURED_TAGS = [QUOTE_TAG, 'LI', 'TD', 'TH'].join(',');\n\n/**\n * UnquoteWhenBackOnEmpty1stLine edit feature, provides the ability to Unquote current line when\n * user press BACKSPACE on first and empty line of a BLOCKQUOTE\n */\nconst UnquoteWhenBackOnEmpty1stLine: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event, editor) => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n return childOfQuote && isNodeEmpty(childOfQuote) && !childOfQuote.previousSibling;\n },\n handleEvent: splitQuote,\n};\n\n/**\n * UnquoteWhenEnterOnEmptyLine edit feature, provides the ability to Unquote current line when\n * user press ENTER on an empty line of a BLOCKQUOTE\n */\nconst UnquoteWhenEnterOnEmptyLine: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: (event, editor) => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n let shift = event.rawEvent.shiftKey;\n return !shift && childOfQuote && isNodeEmpty(childOfQuote);\n },\n handleEvent: (event, editor) =>\n editor.addUndoSnapshot(\n () => splitQuote(event, editor),\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n ),\n};\n\nfunction cacheGetQuoteChild(event: PluginKeyboardEvent, editor: IEditor): Node | null {\n return cacheGetEventData(event, 'QUOTE_CHILD', () => {\n let quote = editor.getElementAtCursor(STRUCTURED_TAGS);\n if (quote && getTagOfNode(quote) == QUOTE_TAG) {\n let pos = editor.getFocusedPosition();\n let block = pos && editor.getBlockElementAtNode(pos.normalize().node);\n if (block) {\n let node =\n block.getStartNode() == quote\n ? block.getStartNode()\n : block.collapseToSingleElement();\n return isNodeEmpty(node) ? node : null;\n }\n }\n\n return null;\n });\n}\n\nfunction splitQuote(event: PluginKeyboardEvent, editor: IEditor) {\n editor.addUndoSnapshot(() => {\n let childOfQuote = cacheGetQuoteChild(event, editor);\n if (!childOfQuote) {\n return;\n }\n if (getTagOfNode(childOfQuote) == QUOTE_TAG) {\n childOfQuote = wrap(toArray(childOfQuote.childNodes));\n }\n const parent = splitBalancedNodeRange(childOfQuote);\n const shouldClearFormat = !!parent && isStyledBlockquote(parent);\n const newParent = parent && unwrap(parent);\n editor.select(childOfQuote, PositionType.Begin);\n\n if (shouldClearFormat) {\n if (safeInstanceOf(newParent, 'HTMLLIElement')) {\n newParent.style.removeProperty('color');\n }\n clearFormat(editor);\n }\n });\n event.rawEvent.preventDefault();\n}\n\nconst isStyledBlockquote = (element: Node) => {\n if (\n element &&\n safeInstanceOf(element, 'HTMLQuoteElement') &&\n element.style.borderLeft &&\n element.style.borderColor &&\n element.style.paddingLeft &&\n element.style.color\n ) {\n return true;\n }\n return false;\n};\n\n/**\n * @internal\n */\nexport const QuoteFeatures: Record<\n keyof QuoteFeatureSettings,\n BuildInEditFeature\n> = {\n unquoteWhenBackspaceOnEmptyFirstLine: UnquoteWhenBackOnEmpty1stLine,\n unquoteWhenEnterOnEmptyLine: UnquoteWhenEnterOnEmptyLine,\n};\n","import { Browser, cacheGetEventData } from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n FontSizeChange,\n IEditor,\n Keys,\n PluginEventType,\n PluginKeyboardEvent,\n ShortcutFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n changeFontSize,\n toggleBold,\n toggleItalic,\n toggleUnderline,\n toggleBullet,\n toggleNumbering,\n clearFormat,\n} from 'roosterjs-editor-api';\n\ninterface ShortcutCommand {\n winKey: number;\n macKey: number;\n action: (editor: IEditor) => any;\n}\n\nfunction createCommand(\n winKey: number,\n macKey: number,\n action: (editor: IEditor) => any,\n disabled: boolean = false\n) {\n if (disabled) {\n return null;\n }\n return {\n winKey,\n macKey,\n action,\n };\n}\n\nconst commands: ShortcutCommand[] = [\n createCommand(Keys.Ctrl | Keys.B, Keys.Meta | Keys.B, toggleBold),\n createCommand(Keys.Ctrl | Keys.I, Keys.Meta | Keys.I, toggleItalic),\n createCommand(Keys.Ctrl | Keys.U, Keys.Meta | Keys.U, toggleUnderline),\n createCommand(Keys.Ctrl | Keys.SPACE, Keys.Meta | Keys.SPACE, clearFormat),\n createCommand(Keys.Ctrl | Keys.Z, Keys.Meta | Keys.Z, editor => editor.undo()),\n createCommand(\n Keys.ALT | Keys.BACKSPACE,\n Keys.ALT | Keys.BACKSPACE,\n editor => editor.undo(),\n Browser.isMac /* Option+Backspace to be handled by browsers on Mac */\n ),\n createCommand(Keys.Ctrl | Keys.Y, Keys.Meta | Keys.Shift | Keys.Z, editor => editor.redo()),\n createCommand(Keys.Ctrl | Keys.PERIOD, Keys.Meta | Keys.PERIOD, toggleBullet),\n createCommand(Keys.Ctrl | Keys.FORWARD_SLASH, Keys.Meta | Keys.FORWARD_SLASH, toggleNumbering),\n createCommand(\n Keys.Ctrl | Keys.Shift | Keys.PERIOD,\n Keys.Meta | Keys.Shift | Keys.PERIOD,\n editor => changeFontSize(editor, FontSizeChange.Increase)\n ),\n createCommand(\n Keys.Ctrl | Keys.Shift | Keys.COMMA,\n Keys.Meta | Keys.Shift | Keys.COMMA,\n editor => changeFontSize(editor, FontSizeChange.Decrease)\n ),\n].filter((command): command is ShortcutCommand => !!command);\n\n/**\n * DefaultShortcut edit feature, provides shortcuts for the following features:\n * Ctrl/Meta+B: toggle bold style\n * Ctrl/Meta+I: toggle italic style\n * Ctrl/Meta+U: toggle underline style\n * Ctrl/Meta+Space: clear formatting\n * Alt+Backspace: undo\n * Ctrl/Meta+Z: undo\n * Ctrl+Y/Meta+Shift+Z: redo\n * Ctrl/Meta+PERIOD: toggle bullet list\n * Ctrl/Meta+/: toggle numbering list\n * Ctrl/Meta+Shift+>: increase font size\n * Ctrl/Meta+Shift+<: decrease font size\n */\nconst DefaultShortcut: BuildInEditFeature = {\n allowFunctionKeys: true,\n keys: [\n Keys.B,\n Keys.I,\n Keys.U,\n Keys.Y,\n Keys.Z,\n Keys.COMMA,\n Keys.PERIOD,\n Keys.FORWARD_SLASH,\n Keys.SPACE,\n Keys.BACKSPACE,\n ],\n shouldHandleEvent: cacheGetCommand,\n handleEvent: (event, editor) => {\n let command = cacheGetCommand(event);\n if (command) {\n command.action(editor);\n event.rawEvent.preventDefault();\n event.rawEvent.stopPropagation();\n }\n },\n};\n\nfunction cacheGetCommand(event: PluginKeyboardEvent) {\n return cacheGetEventData(event, 'DEFAULT_SHORT_COMMAND', () => {\n let e = event.rawEvent;\n let key =\n // Need to check AltGraph isn't being pressed since some languages (e.g. Polski) use AltGr\n // to input some special characters. In that case, ctrlKey and altKey are both true in Edge,\n // but we should not trigger any shortcut function here. However, we still want to capture\n // the ALT+BACKSPACE combination.\n event.eventType == PluginEventType.KeyDown && !e.getModifierState('AltGraph')\n ? e.which |\n ((e.metaKey && Keys.Meta)) |\n ((e.shiftKey && Keys.Shift)) |\n ((e.ctrlKey && Keys.Ctrl)) |\n ((e.altKey && Keys.ALT))\n : 0;\n return key && commands.filter(cmd => (Browser.isMac ? cmd.macKey : cmd.winKey) == key)[0];\n });\n}\n\n/**\n * @internal\n */\nexport const ShortcutFeatures: Record<\n keyof ShortcutFeatureSettings,\n BuildInEditFeature\n> = {\n defaultShortcut: DefaultShortcut,\n};\n","import {\n BuildInEditFeature,\n IEditor,\n Keys,\n KnownCreateElementDataIndex,\n PluginKeyboardEvent,\n PositionType,\n StructuredNodeFeatureSettings,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n isPositionAtBeginningOf,\n Position,\n getTagOfNode,\n createElement,\n getObjectKeys,\n} from 'roosterjs-editor-dom';\n\nconst CHILD_PARENT_TAG_MAP: { [childTag: string]: string } = {\n TD: 'TABLE',\n TH: 'TABLE',\n LI: 'OL,UL',\n};\nconst CHILD_SELECTOR = getObjectKeys(CHILD_PARENT_TAG_MAP).join(',');\n\n/**\n * InsertLineBeforeStructuredNode edit feature, provides the ability to insert an empty line before\n * a structured element (bullet/numbering list, blockquote, table) if the element is at beginning of\n * document\n */\nconst InsertLineBeforeStructuredNodeFeature: BuildInEditFeature = {\n keys: [Keys.ENTER],\n shouldHandleEvent: cacheGetStructuredElement,\n handleEvent: (event, editor) => {\n let element = cacheGetStructuredElement(event, editor);\n let div = createElement(\n KnownCreateElementDataIndex.EmptyLine,\n editor.getDocument()\n ) as HTMLElement;\n editor.addUndoSnapshot(() => {\n element?.parentNode?.insertBefore(div, element);\n // Select the new line when we are in table. This is the same behavior with Word\n if (getTagOfNode(element) == 'TABLE') {\n editor.select(new Position(div, PositionType.Begin).normalize());\n }\n });\n event.rawEvent.preventDefault();\n },\n defaultDisabled: true,\n};\n\nfunction cacheGetStructuredElement(event: PluginKeyboardEvent, editor: IEditor) {\n return cacheGetEventData(event, 'FIRST_STRUCTURE', () => {\n // Provide a chance to keep browser default behavior by pressing SHIFT\n let element = event.rawEvent.shiftKey ? null : editor.getElementAtCursor(CHILD_SELECTOR);\n\n if (element) {\n let range = editor.getSelectionRange();\n if (\n range &&\n range.collapsed &&\n isPositionAtBeginningOf(Position.getStart(range), element) &&\n !editor.getBodyTraverser(element).getPreviousBlockElement()\n ) {\n return editor.getElementAtCursor(CHILD_PARENT_TAG_MAP[getTagOfNode(element)]);\n }\n }\n\n return null;\n });\n}\n\n/**\n * @internal\n */\nexport const StructuredNodeFeatures: Record<\n keyof StructuredNodeFeatureSettings,\n BuildInEditFeature\n> = {\n insertLineBeforeStructuredNodeFeature: InsertLineBeforeStructuredNodeFeature,\n};\n","import { editTable, setIndentation } from 'roosterjs-editor-api';\nimport {\n BuildInEditFeature,\n IEditor,\n Keys,\n NodeType,\n PluginEvent,\n PositionType,\n TableFeatureSettings,\n TableOperation,\n PluginKeyboardEvent,\n SelectionRangeTypes,\n TableSelectionRange,\n Indentation,\n ExperimentalFeatures,\n} from 'roosterjs-editor-types';\nimport {\n cacheGetEventData,\n contains,\n getTagOfNode,\n isVoidHtmlElement,\n isWholeTableSelected,\n Position,\n VTable,\n} from 'roosterjs-editor-dom';\n\n/**\n * TabInTable edit feature, provides the ability to jump between cells when user press TAB in table\n */\nconst TabInTable: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && !cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n let shift = event.rawEvent.shiftKey;\n let td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n let vtable = cacheVTable(event, td);\n\n for (\n let step = shift ? -1 : 1, row = vtable.row ?? 0, col = (vtable.col ?? 0) + step;\n ;\n col += step\n ) {\n const tableCells = vtable.cells ?? [];\n if (col < 0 || col >= tableCells[row].length) {\n row += step;\n if (row < 0) {\n editor.select(vtable.table, PositionType.Before);\n break;\n } else if (row >= tableCells.length) {\n editTable(editor, TableOperation.InsertBelow);\n break;\n }\n col = shift ? tableCells[row].length - 1 : 0;\n }\n let cell = vtable.getCell(row, col);\n if (cell.td) {\n const newPos = new Position(cell.td, PositionType.Begin).normalize();\n editor.select(newPos);\n break;\n }\n }\n event.rawEvent.preventDefault();\n },\n};\n\n/**\n * IndentTableOnTab edit feature, provides the ability to indent the table if it is all cells are selected.\n */\nconst IndentTableOnTab: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n event.rawEvent.preventDefault();\n\n editor.addUndoSnapshot(() => {\n let shift = event.rawEvent.shiftKey;\n let selection = editor.getSelectionRangeEx() as TableSelectionRange;\n let td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n let vtable = cacheVTable(event, td);\n\n if (shift && editor.getElementAtCursor('blockquote', vtable.table, event)) {\n setIndentation(editor, Indentation.Decrease);\n } else if (!shift) {\n setIndentation(editor, Indentation.Increase);\n }\n\n if (selection.coordinates) {\n editor.select(selection.table, selection.coordinates);\n }\n });\n },\n};\n\n/**\n * UpDownInTable edit feature, provides the ability to jump to cell above/below when user press UP/DOWN\n * in table\n */\nconst UpDownInTable: BuildInEditFeature = {\n keys: [Keys.UP, Keys.DOWN],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n cacheGetTableCell(event, editor) && !cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n const vtable = new VTable(td);\n const isUp = event.rawEvent.which == Keys.UP;\n const step = isUp ? -1 : 1;\n const hasShiftKey = event.rawEvent.shiftKey;\n const selection = editor.getDocument().defaultView?.getSelection();\n let targetTd: HTMLTableCellElement | null = null;\n\n if (selection) {\n let { anchorNode, anchorOffset } = selection;\n\n for (\n let row = vtable.row ?? 0;\n row >= 0 && vtable.cells && row < vtable.cells.length;\n row += step\n ) {\n let cell = vtable.getCell(row, vtable.col ?? 0);\n if (cell.td && cell.td != td) {\n targetTd = cell.td;\n break;\n }\n }\n\n editor.runAsync(editor => {\n let newContainer = editor.getElementAtCursor();\n if (\n contains(vtable.table, newContainer) &&\n !contains(td, newContainer, true /*treatSameNodeAsContain*/)\n ) {\n let newPos = targetTd\n ? new Position(targetTd, PositionType.Begin)\n : new Position(\n vtable.table,\n isUp ? PositionType.Before : PositionType.After\n );\n if (hasShiftKey) {\n newPos =\n newPos.node.nodeType == NodeType.Element &&\n isVoidHtmlElement(newPos.node)\n ? new Position(\n newPos.node,\n newPos.isAtEnd ? PositionType.After : PositionType.Before\n )\n : newPos;\n const selection = editor.getDocument().defaultView?.getSelection();\n if (anchorNode) {\n selection?.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n newPos.node,\n newPos.offset\n );\n }\n } else {\n editor.select(newPos.normalize());\n }\n }\n });\n }\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.DeleteTableWithBackspace\n * Delete a table selected with the table selector pressing Backspace key\n */\nconst DeleteTableWithBackspace: BuildInEditFeature = {\n keys: [Keys.BACKSPACE],\n shouldHandleEvent: (event: PluginKeyboardEvent, editor: IEditor) =>\n editor.isFeatureEnabled(ExperimentalFeatures.DeleteTableWithBackspace) &&\n cacheIsWholeTableSelected(event, editor),\n handleEvent: (event, editor) => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return;\n }\n const vtable = new VTable(td);\n vtable.edit(TableOperation.DeleteTable);\n vtable.writeBack();\n },\n};\n\nfunction cacheGetTableCell(event: PluginEvent, editor: IEditor): HTMLTableCellElement | null {\n return cacheGetEventData(event, 'TABLE_CELL_FOR_TABLE_FEATURES', () => {\n let pos = editor.getFocusedPosition();\n let firstTd = pos && editor.getElementAtCursor('TD,TH,LI', pos.node);\n return (\n firstTd && (getTagOfNode(firstTd) == 'LI' ? null : (firstTd as HTMLTableCellElement))\n );\n });\n}\n\nfunction cacheIsWholeTableSelected(event: PluginEvent, editor: IEditor) {\n return cacheGetEventData(event, 'WHOLE_TABLE_SELECTED_FOR_FEATURES', () => {\n const td = cacheGetTableCell(event, editor);\n if (!td) {\n return false;\n }\n let vtable = cacheVTable(event, td);\n let selection = editor.getSelectionRangeEx();\n return (\n selection.type == SelectionRangeTypes.TableSelection &&\n selection.coordinates &&\n isWholeTableSelected(vtable, selection.coordinates)\n );\n });\n}\n\nfunction cacheVTable(event: PluginEvent, td: HTMLTableCellElement) {\n return cacheGetEventData(event, 'VTABLE_FOR_TABLE_FEATURES', () => {\n return new VTable(td);\n });\n}\n\n/**\n * @internal\n */\nexport const TableFeatures: Record<\n keyof TableFeatureSettings,\n BuildInEditFeature\n> = {\n tabInTable: TabInTable,\n upDownInTable: UpDownInTable,\n indentTableOnTab: IndentTableOnTab,\n deleteTableWithBackspace: DeleteTableWithBackspace,\n};\n","import { setIndentation } from 'roosterjs-editor-api';\nimport {\n createRange,\n getEntitySelector,\n getTagOfNode,\n Position,\n queryElements,\n} from 'roosterjs-editor-dom';\nimport {\n BuildInEditFeature,\n IEditor,\n Indentation,\n TextFeatureSettings,\n Keys,\n PluginKeyboardEvent,\n SelectionRangeTypes,\n ContentPosition,\n PositionType,\n ExperimentalFeatures,\n NodePosition,\n QueryScope,\n} from 'roosterjs-editor-types';\n\nconst TAB_SPACES = 6;\n\n/**\n * Requires @see ExperimentalFeatures.TabKeyTextFeatures to be enabled\n * Provides additional functionality when press Tab:\n * If Whole Paragraph selected, indent paragraph,\n * If range is collapsed, add tab spaces\n * If range is not collapsed but not all the paragraph is selected, replace selection with Tab spaces\n * If there are more than one block in the selection, indent all selection\n */\nconst IndentWhenTabText: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event, editor) => {\n if (\n editor.isFeatureEnabled(ExperimentalFeatures.TabKeyTextFeatures) &&\n !event.rawEvent.shiftKey\n ) {\n let activeElement = editor.getDocument().activeElement as HTMLElement;\n const listOrTable = editor.getElementAtCursor(\n 'LI,TABLE',\n undefined /*startFrom*/,\n event\n );\n const entity = editor.getElementAtCursor(\n getEntitySelector(),\n undefined /*startFrom*/,\n event\n );\n\n return (\n !listOrTable &&\n (entity ? entity.isContentEditable : activeElement.isContentEditable)\n );\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.Normal) {\n editor.addUndoSnapshot(() => {\n if (selection.areAllCollapsed) {\n insertTab(editor, event);\n } else {\n const { ranges } = selection;\n const range = ranges[0];\n if (shouldSetIndentation(editor, range)) {\n setIndentation(editor, Indentation.Increase);\n } else {\n const tempRange = createRange(range.startContainer, range.startOffset);\n ranges.forEach(range => range.deleteContents());\n editor.select(tempRange);\n insertTab(editor, event);\n }\n }\n });\n\n event.rawEvent.preventDefault();\n }\n },\n};\n\n/**\n * Requires @see ExperimentalFeatures.TabKeyTextFeatures to be enabled\n * If Whole Paragraph selected, outdent paragraph on Tab press\n */\nconst OutdentWhenTabText: BuildInEditFeature = {\n keys: [Keys.TAB],\n shouldHandleEvent: (event, editor) => {\n if (\n event.rawEvent.shiftKey &&\n editor.isFeatureEnabled(ExperimentalFeatures.TabKeyTextFeatures)\n ) {\n const selection = editor.getSelectionRangeEx();\n\n return (\n selection.type == SelectionRangeTypes.Normal &&\n !selection.areAllCollapsed &&\n editor.getElementAtCursor('blockquote', undefined, event) &&\n !editor.getElementAtCursor('LI,TABLE', undefined /*startFrom*/, event) &&\n shouldSetIndentation(editor, selection.ranges[0])\n );\n }\n\n return false;\n },\n handleEvent: (event, editor) => {\n editor.addUndoSnapshot(() => setIndentation(editor, Indentation.Decrease));\n\n event.rawEvent.preventDefault();\n },\n};\n\n/**\n * @deprecated\n * Automatically transform -- into hyphen, if typed between two words.\n */\nconst AutoHyphen: BuildInEditFeature = {\n keys: [],\n shouldHandleEvent: (event, editor) => {\n return false;\n },\n handleEvent: (event, editor) => {\n return false;\n },\n defaultDisabled: true,\n};\n\n/**\n * @internal\n */\nexport const TextFeatures: Record<\n keyof TextFeatureSettings,\n BuildInEditFeature\n> = {\n indentWhenTabText: IndentWhenTabText,\n outdentWhenTabText: OutdentWhenTabText,\n autoHyphen: AutoHyphen,\n};\n\nfunction shouldSetIndentation(editor: IEditor, range: Range): boolean {\n let result: boolean = false;\n\n const startPosition: NodePosition = Position.getStart(range);\n const endPosition: NodePosition = Position.getEnd(range);\n const firstBlock = editor.getBlockElementAtNode(startPosition.node);\n const lastBlock = editor.getBlockElementAtNode(endPosition.node);\n\n if (!firstBlock || !lastBlock) {\n return false;\n }\n\n if (!firstBlock.equals(lastBlock)) {\n //If the selections has more than one block, we indent all the blocks in the selection\n return true;\n } else {\n //We only indent a single block if all the block is selected.\n const blockStart = new Position(firstBlock.getStartNode(), PositionType.Begin);\n const blockEnd = new Position(firstBlock.getEndNode(), PositionType.End);\n\n const rangeBefore = createRange(blockStart, Position.getStart(range));\n const rangeAfter = createRange(Position.getEnd(range), blockEnd);\n\n if (!result && isRangeEmpty(rangeBefore) && isRangeEmpty(rangeAfter)) {\n result = true;\n }\n\n return result;\n }\n}\n\nfunction isRangeEmpty(range: Range) {\n return (\n range.toString() == '' &&\n queryElements(\n range.commonAncestorContainer as ParentNode,\n 'img,table,ul,ol',\n null,\n QueryScope.InSelection,\n range\n ).length == 0\n );\n}\n\nfunction insertTab(editor: IEditor, event: PluginKeyboardEvent) {\n const span = editor.getDocument().createElement('span');\n let searcher = editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return;\n }\n const charsBefore = searcher.getSubStringBefore(Number.MAX_SAFE_INTEGER);\n const numberOfChars = TAB_SPACES - (charsBefore.length % TAB_SPACES);\n let span2: HTMLSpanElement | null = null;\n\n let textContent = '';\n for (let index = 0; index < numberOfChars; index++) {\n textContent += ' ';\n }\n editor.insertNode(span);\n if (span.nextElementSibling && getTagOfNode(span.nextElementSibling) == 'A') {\n span2 = editor.getDocument().createElement('span');\n span2.textContent = ' ';\n editor.insertNode(span2);\n editor.select(createRange(span2, PositionType.Before));\n }\n editor.insertContent(textContent, {\n position: ContentPosition.Range,\n range: createRange(span, PositionType.Begin),\n updateCursor: false,\n });\n editor.select(createRange(span, PositionType.After));\n if (span2) {\n editor.deleteNode(span2);\n }\n}\n","import { AutoLinkFeatures } from './features/autoLinkFeatures';\nimport { CursorFeatures } from './features/cursorFeatures';\nimport { EntityFeatures } from './features/entityFeatures';\nimport { ListFeatures } from './features/listFeatures';\nimport { MarkdownFeatures } from './features/markdownFeatures';\nimport { QuoteFeatures } from './features/quoteFeatures';\nimport { ShortcutFeatures } from './features/shortcutFeatures';\nimport { StructuredNodeFeatures } from './features/structuredNodeFeatures';\nimport { TableFeatures } from './features/tableFeatures';\nimport { TextFeatures } from './features/textFeatures';\nimport { CodeFeatures } from './features/codeFeatures';\nimport {\n BuildInEditFeature,\n ContentEditFeatureSettings,\n PluginEvent,\n} from 'roosterjs-editor-types';\n\nconst allFeatures = {\n ...ListFeatures,\n ...QuoteFeatures,\n ...TableFeatures,\n ...StructuredNodeFeatures,\n ...AutoLinkFeatures,\n ...ShortcutFeatures,\n ...CursorFeatures,\n ...MarkdownFeatures,\n ...EntityFeatures,\n ...TextFeatures,\n ...CodeFeatures,\n};\n\n/**\n * Get all content edit features provided by roosterjs\n */\nexport default function getAllFeatures() {\n return allFeatures as Record>;\n}\n","export { default as ContentEdit } from './ContentEdit';\nexport { default as getAllFeatures } from './getAllFeatures';\n","/**\n * @internal\n * Convert english alphabet numbers into decimal numbers\n * @param letter The letter that needs to be converted\n * @returns\n */\nexport default function convertAlphaToDecimals(letter: string): number | null {\n const alpha = letter.toLocaleLowerCase();\n if (alpha) {\n const size = alpha.length - 1;\n const number = 26 * size + alpha.charCodeAt(size) - 96;\n return number;\n }\n return null;\n}\n","import { BulletListType } from 'roosterjs-editor-types';\n\nconst bulletListType: Record = {\n '*': BulletListType.Disc,\n '-': BulletListType.Dash,\n '--': BulletListType.Square,\n '->': BulletListType.LongArrow,\n '-->': BulletListType.DoubleLongArrow,\n '=>': BulletListType.UnfilledArrow,\n '>': BulletListType.ShortArrow,\n '—': BulletListType.Hyphen,\n};\n\nconst identifyBulletListType = (bullet: string): BulletListType | null => {\n return bulletListType[bullet] || null;\n};\n\n/**\n * @internal\n * @param textBeforeCursor The trigger character\n * @returns The style of a bullet list triggered by a string\n */\nexport default function getAutoBulletListStyle(textBeforeCursor: string): BulletListType | null {\n const trigger = textBeforeCursor.trim();\n const bulletType = identifyBulletListType(trigger);\n return bulletType;\n}\n","import convertAlphaToDecimals from './convertAlphaToDecimals';\nimport { NumberingListType } from 'roosterjs-editor-types';\nimport { VListChain } from 'roosterjs-editor-dom';\n\nconst enum NumberingTypes {\n Decimal = 1,\n LowerAlpha = 2,\n UpperAlpha = 3,\n LowerRoman = 4,\n UpperRoman = 5,\n}\n\nconst enum Character {\n Dot = 1,\n Dash = 2,\n Parenthesis = 3,\n DoubleParenthesis = 4,\n}\n\nconst characters: Record = {\n '.': Character.Dot,\n '-': Character.Dash,\n ')': Character.Parenthesis,\n};\n\nconst lowerRomanTypes = [\n NumberingListType.LowerRoman,\n NumberingListType.LowerRomanDash,\n NumberingListType.LowerRomanDoubleParenthesis,\n NumberingListType.LowerRomanParenthesis,\n];\nconst upperRomanTypes = [\n NumberingListType.UpperRoman,\n NumberingListType.UpperRomanDash,\n NumberingListType.UpperRomanDoubleParenthesis,\n NumberingListType.UpperRomanParenthesis,\n];\nconst numberingTriggers = ['1', 'a', 'A', 'I', 'i'];\nconst lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];\nconst upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];\n\nconst identifyNumberingType = (text: string, previousListStyle?: NumberingListType) => {\n if (!isNaN(parseInt(text))) {\n return NumberingTypes.Decimal;\n } else if (/[a-z]+/g.test(text)) {\n if (\n (previousListStyle != undefined &&\n lowerRomanTypes.indexOf(previousListStyle) > -1 &&\n lowerRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'i')\n ) {\n return NumberingTypes.LowerRoman;\n } else if (previousListStyle || (!previousListStyle && text === 'a')) {\n return NumberingTypes.LowerAlpha;\n }\n } else if (/[A-Z]+/g.test(text)) {\n if (\n (previousListStyle != undefined &&\n upperRomanTypes.indexOf(previousListStyle) > -1 &&\n upperRomanNumbers.indexOf(text[0]) > -1) ||\n (!previousListStyle && text === 'I')\n ) {\n return NumberingTypes.UpperRoman;\n } else if (previousListStyle || (!previousListStyle && text === 'A')) {\n return NumberingTypes.UpperAlpha;\n }\n }\n};\n\nconst numberingListTypes: Record number | null> = {\n [NumberingTypes.Decimal]: char => DecimalsTypes[char] || null,\n [NumberingTypes.LowerAlpha]: char => LowerAlphaTypes[char] || null,\n [NumberingTypes.UpperAlpha]: char => UpperAlphaTypes[char] || null,\n [NumberingTypes.LowerRoman]: char => LowerRomanTypes[char] || null,\n [NumberingTypes.UpperRoman]: char => UpperRomanTypes[char] || null,\n};\n\nconst UpperRomanTypes: Record = {\n [Character.Dot]: NumberingListType.UpperRoman,\n [Character.Dash]: NumberingListType.UpperRomanDash,\n [Character.Parenthesis]: NumberingListType.UpperRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperRomanDoubleParenthesis,\n};\n\nconst LowerRomanTypes: Record = {\n [Character.Dot]: NumberingListType.LowerRoman,\n [Character.Dash]: NumberingListType.LowerRomanDash,\n [Character.Parenthesis]: NumberingListType.LowerRomanParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerRomanDoubleParenthesis,\n};\n\nconst UpperAlphaTypes: Record = {\n [Character.Dot]: NumberingListType.UpperAlpha,\n [Character.Dash]: NumberingListType.UpperAlphaDash,\n [Character.Parenthesis]: NumberingListType.UpperAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.UpperAlphaDoubleParenthesis,\n};\n\nconst LowerAlphaTypes: Record = {\n [Character.Dot]: NumberingListType.LowerAlpha,\n [Character.Dash]: NumberingListType.LowerAlphaDash,\n [Character.Parenthesis]: NumberingListType.LowerAlphaParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.LowerAlphaDoubleParenthesis,\n};\n\nconst DecimalsTypes: Record = {\n [Character.Dot]: NumberingListType.Decimal,\n [Character.Dash]: NumberingListType.DecimalDash,\n [Character.Parenthesis]: NumberingListType.DecimalParenthesis,\n [Character.DoubleParenthesis]: NumberingListType.DecimalDoubleParenthesis,\n};\n\nconst identifyNumberingListType = (\n numbering: string,\n isDoubleParenthesis: boolean,\n previousListStyle?: NumberingListType\n): NumberingListType | null => {\n const separatorCharacter = isDoubleParenthesis\n ? Character.DoubleParenthesis\n : characters[numbering[numbering.length - 1]];\n // if separator is not valid, no need to check if the number is valid.\n if (separatorCharacter) {\n const number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);\n const numberingType = identifyNumberingType(number, previousListStyle);\n return numberingType ? numberingListTypes[numberingType](separatorCharacter) : null;\n }\n return null;\n};\n\n/**\n * @internal\n * @param textBeforeCursor The trigger character\n * @param previousListChain @optional This parameters is used to keep the list chain, if the is not a new list\n * @param previousListStyle @optional The list style of the previous list\n * @returns The style of a numbering list triggered by a string\n */\nexport default function getAutoNumberingListStyle(\n textBeforeCursor: string,\n previousListChain?: VListChain[],\n previousListStyle?: NumberingListType\n): NumberingListType | null {\n const trigger = textBeforeCursor.trim();\n const isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';\n //Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.\n //The index is always the characters before the last character\n const listIndex = isDoubleParenthesis ? trigger.slice(1, -1) : trigger.slice(0, -1);\n\n const indexNumber = parseInt(listIndex);\n let index = !isNaN(indexNumber) ? indexNumber : convertAlphaToDecimals(listIndex);\n\n if (!index || index < 1) {\n return null;\n }\n\n if (previousListChain && index > 1) {\n if (\n (previousListChain.length < 1 && numberingTriggers.indexOf(listIndex) < 0) ||\n (previousListChain?.length > 0 &&\n !previousListChain[previousListChain.length - 1]?.canAppendAtCursor(index))\n ) {\n return null;\n }\n }\n\n const numberingType = isValidNumbering(listIndex)\n ? identifyNumberingListType(trigger, isDoubleParenthesis, previousListStyle)\n : null;\n return numberingType;\n}\n\n/**\n * Check if index has only numbers or only letters to avoid sequence of character such 1:1. trigger a list.\n * @param index\n * @returns\n */\nfunction isValidNumbering(index: string) {\n return Number(index) || /^[A-Za-z\\s]*$/.test(index);\n}\n","import { createElement } from 'roosterjs-editor-dom';\nimport {\n EditorPlugin,\n IEditor,\n KnownCreateElementDataIndex,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * Context Menu options for ContextMenu plugin\n */\nexport interface ContextMenuOptions {\n /**\n * Render function for the context menu\n * @param container The container HTML element, it will be located at the mouse click position,\n * so the callback just need to render menu content into this container\n * @param onDismiss The onDismiss callback, some menu render need to know this callback so that\n * it can handle the dismiss event\n */\n render: (container: HTMLElement, items: (T | null)[], onDismiss: () => void) => void;\n\n /**\n * Dismiss function for the context menu, it will be called when user wants to dismiss this context menu\n * e.g. user click away so the menu should be dismissed\n * @param container The container HTML element\n */\n dismiss?: (container: HTMLElement) => void;\n\n /**\n * Whether the default context menu is allowed. @default false\n */\n allowDefaultMenu?: boolean;\n}\n\n/**\n * An editor plugin that support showing a context menu using render() function from options parameter\n */\nexport default class ContextMenu implements EditorPlugin {\n private container: HTMLElement | null = null;\n private editor: IEditor | null = null;\n private isMenuShowing: boolean = false;\n\n /**\n * Create a new instance of ContextMenu class\n * @param options An options object to determine how to show/hide the context menu\n */\n constructor(private options: ContextMenuOptions) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ContextMenu';\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.onDismiss();\n\n if (this.container?.parentNode) {\n this.container.parentNode.removeChild(this.container);\n this.container = null;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (event.eventType == PluginEventType.ContextMenu && event.items.length > 0) {\n const { rawEvent, items } = event;\n\n this.onDismiss();\n\n if (!this.options.allowDefaultMenu) {\n rawEvent.preventDefault();\n }\n\n if (this.initContainer(rawEvent.pageX, rawEvent.pageY)) {\n this.options.render(this.container!, items as T[], this.onDismiss);\n this.isMenuShowing = true;\n }\n }\n }\n\n private initContainer(x: number, y: number) {\n if (!this.container && this.editor) {\n this.container = createElement(\n KnownCreateElementDataIndex.ContextMenuWrapper,\n this.editor.getDocument()\n ) as HTMLElement;\n this.editor.getDocument().body.appendChild(this.container);\n }\n this.container?.style.setProperty('left', x + 'px');\n this.container?.style.setProperty('top', y + 'px');\n return !!this.container;\n }\n\n private onDismiss = () => {\n if (this.container && this.isMenuShowing) {\n this.options.dismiss?.(this.container);\n this.isMenuShowing = false;\n }\n };\n}\n","export { default as ContextMenu, ContextMenuOptions } from './ContextMenu';\n","import {\n CustomReplacement,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n PositionType,\n} from 'roosterjs-editor-types';\n\nconst makeReplacement = (\n sourceString: string,\n replacementHTML: string,\n matchSourceCaseSensitive: boolean,\n shouldReplace?: (\n replacement: CustomReplacement,\n content: string,\n sourceEditor?: IEditor\n ) => boolean\n): CustomReplacement => ({\n sourceString,\n replacementHTML,\n matchSourceCaseSensitive,\n shouldReplace,\n});\n\nconst defaultReplacements: CustomReplacement[] = [\n makeReplacement(':)', '🙂', true),\n makeReplacement(';)', '😉', true),\n makeReplacement(':O', '😲', true),\n makeReplacement(':o', '😯', true),\n makeReplacement('<3', '❤️', true),\n];\n\n/**\n * Wrapper for CustomReplaceContentEditFeature that provides an API for updating the\n * content edit feature\n */\nexport default class CustomReplacePlugin implements EditorPlugin {\n private longestReplacementLength: number | null = null;\n private editor: IEditor | null = null;\n private replacements: CustomReplacement[] | null = null;\n private replacementEndCharacters: Set | null = null;\n\n /**\n * Create instance of CustomReplace plugin\n * @param replacements Replacement rules. If not passed, a default replacement rule set will be applied\n */\n constructor(replacements: CustomReplacement[] = defaultReplacements) {\n this.updateReplacements(replacements);\n }\n\n /**\n * Set the replacements that this plugin is looking for.\n * @param newReplacements new set of replacements for this plugin\n */\n updateReplacements(newReplacements: CustomReplacement[]) {\n this.replacements = newReplacements;\n this.longestReplacementLength = getLongestReplacementSourceLength(this.replacements);\n this.replacementEndCharacters = getReplacementEndCharacters(this.replacements);\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CustomReplace';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n public initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n public dispose(): void {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent) {\n if (event.eventType != PluginEventType.Input || !this.editor || this.editor.isInIME()) {\n return;\n }\n\n // Exit early on input events that do not insert a replacement's final character.\n if (!event.rawEvent.data || !this.replacementEndCharacters?.has(event.rawEvent.data)) {\n return;\n }\n\n // Get the matching replacement\n const searcher = this.editor.getContentSearcherOfCursor(event);\n if (!searcher || this.longestReplacementLength == null) {\n return;\n }\n const stringToSearch = searcher.getSubStringBefore(this.longestReplacementLength);\n\n const replacement = this.getMatchingReplacement(stringToSearch);\n\n if (\n !replacement ||\n (replacement.shouldReplace &&\n searcher &&\n !replacement.shouldReplace(replacement, searcher.getWordBefore(), this.editor))\n ) {\n return;\n }\n\n // Reconstruct a selection of the text on the document that matches the\n // replacement we selected.\n const matchingText = searcher.getSubStringBefore(replacement.sourceString.length);\n const matchingRange = searcher.getRangeFromText(matchingText, true /* exactMatch */);\n\n // parse the html string off the dom and inline the resulting element.\n const document = this.editor.getDocument();\n const parsingSpan = document.createElement('span');\n parsingSpan.innerHTML = this.editor.getTrustedHTMLHandler()(replacement.replacementHTML);\n const nodeToInsert =\n parsingSpan.childNodes.length == 1 ? parsingSpan.childNodes[0] : parsingSpan;\n\n // Switch the node for the selection range\n if (matchingRange) {\n this.editor.addUndoSnapshot(\n () => {\n matchingRange.deleteContents();\n matchingRange.insertNode(nodeToInsert);\n this.editor?.select(nodeToInsert, PositionType.End);\n },\n undefined /*changeSource*/,\n true /*canUndoByBackspace*/\n );\n }\n }\n\n private getMatchingReplacement(stringToSearch: string): CustomReplacement | null {\n if (stringToSearch.length == 0 || !this.replacements) {\n return null;\n }\n const originalStringToSearch = stringToSearch.replace(/\\s/g, ' ');\n const lowerCaseStringToSearch = originalStringToSearch.toLocaleLowerCase();\n for (const replacement of this.replacements) {\n const [sourceMatch, replacementMatch] = replacement.matchSourceCaseSensitive\n ? [originalStringToSearch, replacement.sourceString]\n : [lowerCaseStringToSearch, replacement.sourceString.toLocaleLowerCase()];\n\n if (\n sourceMatch.substring(sourceMatch.length - replacementMatch.length) ==\n replacementMatch\n ) {\n return replacement;\n }\n }\n return null;\n }\n}\n\nfunction getLongestReplacementSourceLength(replacements: CustomReplacement[]): number {\n return Math.max.apply(\n null,\n replacements.map(replacement => replacement.sourceString.length)\n );\n}\n\nfunction getReplacementEndCharacters(replacements: CustomReplacement[]): Set {\n const endChars = new Set();\n for (let replacement of replacements) {\n const sourceString = replacement.sourceString;\n if (sourceString.length == 0) {\n continue;\n }\n const lastChar = sourceString[sourceString.length - 1];\n if (!replacement.matchSourceCaseSensitive) {\n endChars.add(lastChar.toLocaleLowerCase());\n endChars.add(lastChar.toLocaleUpperCase());\n } else {\n endChars.add(lastChar);\n }\n }\n return endChars;\n}\n","export { default as CustomReplace } from './CustomReplace';\n","import { commitListChains } from 'roosterjs-editor-api';\nimport { VListChain } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\nimport type { CompatibleChangeSource } from 'roosterjs-editor-types/lib/compatibleTypes';\n\n/**\n * Maintain list numbers of list chain when content is modified by cut/paste/drag&drop\n */\nexport default class CutPasteListChain implements EditorPlugin {\n private chains: VListChain[] | null = null;\n private expectedChangeSource: ChangeSource | CompatibleChangeSource | null = null;\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'CutPasteListChain';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.disposer = this.editor.addDomEventHandler('drop', this.onDrop);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.disposer?.();\n this.disposer = null;\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 PluginEventType.BeforeCutCopy:\n if (event.isCut) {\n this.cacheListChains(ChangeSource.Cut);\n }\n break;\n\n case PluginEventType.BeforePaste:\n this.cacheListChains(ChangeSource.Paste);\n break;\n\n case PluginEventType.ContentChanged:\n if (\n this.chains &&\n this.chains.length > 0 &&\n this.expectedChangeSource == event.source &&\n this.editor\n ) {\n commitListChains(this.editor, this.chains);\n this.chains = null;\n this.expectedChangeSource = null;\n }\n break;\n }\n }\n\n private onDrop = () => {\n this.cacheListChains(ChangeSource.Drop);\n };\n\n private cacheListChains(source: ChangeSource) {\n const selectedRegions = this.editor?.getSelectedRegions();\n if (selectedRegions) {\n this.chains = VListChain.createListChains(selectedRegions);\n this.expectedChangeSource = source;\n }\n }\n}\n","export { default as CutPasteListChain } from './CutPasteListChain';\n","import { isCharacterValue, isCtrlOrMetaPressed, matchLink } from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n DOMEventHandler,\n EditorPlugin,\n IEditor,\n Keys,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\n/**\n * An editor plugin that show a tooltip for existing link\n */\nexport default class HyperLink implements EditorPlugin {\n private originalHref: string | null = null;\n private trackedLink: HTMLAnchorElement | null = null;\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n\n /**\n * Create a new instance of HyperLink class\n * @param getTooltipCallback A callback function to get tooltip text for an existing hyperlink.\n * Default value is to return the href itself. If null, there will be no tooltip text.\n * @param target (Optional) Target window name for hyperlink. If null, will use \"_blank\"\n * @param onLinkClick (Optional) Open link callback (return false to use default behavior)\n */\n constructor(\n private getTooltipCallback: (href: string, a: HTMLAnchorElement) => string = href => href,\n private target?: string,\n private onLinkClick?: (anchor: HTMLAnchorElement, mouseEvent: MouseEvent) => boolean | void\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Hyperlink';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n public initialize(editor: IEditor): void {\n this.editor = editor;\n this.disposer = editor.addDomEventHandler({\n mouseover: this.onMouse,\n mouseout: this.onMouse,\n blur: this.onBlur,\n });\n }\n\n protected onMouse = (e: MouseEvent) => {\n const a = this.editor?.getElementAtCursor(\n 'a[href]',\n e.target\n ) as HTMLAnchorElement | null;\n const href = a && this.tryGetHref(a);\n\n if (href) {\n this.editor?.setEditorDomAttribute(\n 'title',\n e.type == 'mouseover' ? this.getTooltipCallback(href, a) : null\n );\n }\n };\n\n protected onBlur = (e: FocusEvent) => {\n if (this.trackedLink) {\n this.updateLinkHrefIfShouldUpdate();\n }\n\n this.resetLinkTracking();\n };\n\n /**\n * Dispose this plugin\n */\n public dispose(): void {\n if (this.disposer) {\n this.disposer();\n this.disposer = null;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent): void {\n if (\n event.eventType == PluginEventType.MouseUp ||\n (event.eventType == PluginEventType.KeyUp &&\n (!this.isContentEditValue(event.rawEvent) || event.rawEvent.which == Keys.SPACE)) ||\n event.eventType == PluginEventType.ContentChanged\n ) {\n const anchor = this.editor?.getElementAtCursor(\n 'A[href]',\n undefined /*startFrom*/,\n event\n ) as HTMLAnchorElement | null;\n\n const shouldCheckUpdateLink =\n (anchor && anchor !== this.trackedLink) ||\n event.eventType == PluginEventType.KeyUp ||\n event.eventType == PluginEventType.ContentChanged;\n\n if (\n event.eventType == PluginEventType.ContentChanged &&\n event.source == ChangeSource.Keyboard &&\n this.trackedLink != anchor &&\n anchor\n ) {\n // For Keyboard event that causes content change (mostly come from Content Model), this tracked list may be staled.\n // So we need to get an up-to-date link element\n // TODO: This is a temporary solution. Later when Content Model can fully take over this behavior, we can remove this code.\n this.trackedLink = anchor;\n }\n\n if (\n this.trackedLink &&\n (shouldCheckUpdateLink || this.tryGetHref(this.trackedLink) !== this.originalHref)\n ) {\n // If cursor has moved out of previously tracked link\n // update link href if display text doesn't match href anymore.\n if (shouldCheckUpdateLink) {\n this.updateLinkHrefIfShouldUpdate();\n }\n\n // If the link's href value was edited, or the cursor has moved out of the\n // previously tracked link, stop tracking the link.\n this.resetLinkTracking();\n }\n\n // Cache link and href value if its href attribute currently matches its display text\n if (!this.trackedLink && anchor && this.doesLinkDisplayMatchHref(anchor)) {\n this.trackedLink = anchor;\n this.originalHref = this.tryGetHref(anchor);\n }\n }\n\n if (event.eventType == PluginEventType.MouseUp) {\n const anchor = this.editor?.getElementAtCursor(\n 'A',\n event.rawEvent.srcElement\n ) as HTMLAnchorElement | null;\n\n if (anchor) {\n if (this.onLinkClick && this.onLinkClick(anchor, event.rawEvent) !== false) {\n return;\n }\n\n let href: string | null;\n if (\n (href = this.tryGetHref(anchor)) &&\n isCtrlOrMetaPressed(event.rawEvent) &&\n event.rawEvent.button === 0\n ) {\n event.rawEvent.preventDefault();\n try {\n const target = this.target || '_blank';\n const window = this.editor?.getDocument().defaultView;\n window?.open(href, target);\n } catch {}\n }\n }\n }\n }\n\n /**\n * Try get href from an anchor element\n * The reason this is put in a try-catch is that\n * it has been seen that accessing href may throw an exception, in particular on IE/Edge\n */\n private tryGetHref(anchor: HTMLAnchorElement): string | null {\n try {\n return anchor ? anchor.href : null;\n } catch {\n return null;\n }\n }\n\n /**\n * Determines if KeyboardEvent is meant to edit content\n */\n private isContentEditValue(event: KeyboardEvent): boolean {\n return (\n isCharacterValue(event) || event.which == Keys.BACKSPACE || event.which == Keys.DELETE\n );\n }\n\n /**\n * Updates the href of the tracked link if the display text doesn't match href anymore\n */\n private updateLinkHrefIfShouldUpdate() {\n if (this.trackedLink && !this.doesLinkDisplayMatchHref(this.trackedLink)) {\n this.updateLinkHref();\n }\n }\n\n /**\n * Clears the tracked link and its original href value so that it's back to default state\n */\n private resetLinkTracking() {\n this.trackedLink = null;\n this.originalHref = '';\n }\n\n /**\n * Compares the normalized URL of inner text of element to its href to see if they match.\n */\n private doesLinkDisplayMatchHref(element: HTMLAnchorElement): boolean {\n if (element) {\n let display = element.innerText.trim();\n\n // We first escape the display text so that any text passed into the regex is not\n // treated as a special character.\n let escapedDisplay = display.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n let rule = new RegExp(`^(?:https?:\\\\/\\\\/)?${escapedDisplay}\\\\/?`, 'i');\n let href = this.tryGetHref(element);\n if (href !== null) {\n return rule.test(href);\n }\n }\n\n return false;\n }\n\n /**\n * Update href of an element in place to new display text if it's a valid URL\n */\n private updateLinkHref() {\n if (this.trackedLink) {\n let linkData = matchLink(this.trackedLink.innerText.trim());\n if (linkData !== null) {\n this.editor?.addUndoSnapshot(() => {\n this.trackedLink!.href = linkData!.normalizedUrl;\n });\n }\n }\n }\n}\n","export { default as HyperLink } from './HyperLink';\n","import applyChange from './editInfoUtils/applyChange';\nimport canRegenerateImage from './api/canRegenerateImage';\nimport DragAndDropContext, { DNDDirectionX, DnDDirectionY } from './types/DragAndDropContext';\nimport DragAndDropHandler from '../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../pluginUtils/DragAndDropHelper';\nimport getGeneratedImageSize from './editInfoUtils/getGeneratedImageSize';\nimport ImageEditInfo from './types/ImageEditInfo';\nimport ImageHtmlOptions from './types/ImageHtmlOptions';\nimport { Cropper, getCropHTML } from './imageEditors/Cropper';\nimport { deleteEditInfo, getEditInfoFromImage } from './editInfoUtils/editInfo';\nimport { getRotateHTML, Rotator, updateRotateHandleState } from './imageEditors/Rotator';\nimport { ImageEditElementClass } from './types/ImageEditElementClass';\nimport { MIN_HEIGHT_WIDTH } from './constants/constants';\nimport { tryToConvertGifToPng } from './editInfoUtils/tryToConvertGifToPng';\nimport {\n arrayPush,\n Browser,\n createElement,\n getComputedStyle,\n getObjectKeys,\n safeInstanceOf,\n toArray,\n unwrap,\n wrap,\n} from 'roosterjs-editor-dom';\nimport {\n Resizer,\n doubleCheckResize,\n getSideResizeHTML,\n getCornerResizeHTML,\n OnShowResizeHandle,\n getResizeBordersHTML,\n} from './imageEditors/Resizer';\nimport {\n ImageEditOperation,\n ImageEditOptions,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n CreateElementData,\n KnownCreateElementDataIndex,\n ModeIndependentColor,\n SelectionRangeTypes,\n ChangeSource,\n} from 'roosterjs-editor-types';\nimport type { CompatibleImageEditOperation } from 'roosterjs-editor-types/lib/compatibleTypes';\n\nconst PI = Math.PI;\nconst DIRECTIONS = 8;\nconst DirectionRad = (PI * 2) / DIRECTIONS;\nconst DirectionOrder = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n\n/**\n * Default image edit options\n */\nconst DefaultOptions: Required = {\n borderColor: '#DB626C',\n minWidth: 10,\n minHeight: 10,\n preserveRatio: false,\n minRotateDeg: 5,\n imageSelector: 'img',\n rotateIconHTML: '',\n disableCrop: false,\n disableRotate: false,\n disableSideResize: false,\n onSelectState: ImageEditOperation.ResizeAndRotate,\n};\n\n/**\n * Map the image edit operation to a function that returns editing elements HTML to help\n * build image editing UI\n */\nconst ImageEditHTMLMap = {\n [ImageEditOperation.CornerResize]: getCornerResizeHTML,\n [ImageEditOperation.SideResize]: getSideResizeHTML,\n [ImageEditOperation.Rotate]: getRotateHTML,\n [ImageEditOperation.Crop]: getCropHTML,\n};\n\n/**\n * Default background colors for rotate handle\n */\nconst LIGHT_MODE_BGCOLOR = 'white';\nconst DARK_MODE_BGCOLOR = '#333';\n\n/**\n * ImageEdit plugin provides the ability to edit an inline image in editor, including image resizing, rotation and cropping\n */\nexport default class ImageEdit implements EditorPlugin {\n protected editor: IEditor | null = null;\n protected options: ImageEditOptions;\n private disposer: (() => void) | null = null;\n\n // Allowed editing operations\n private allowedOperations: ImageEditOperation;\n\n // Current editing image\n private image: HTMLImageElement | null = null;\n\n // Image cloned from the current editing image\n private clonedImage: HTMLImageElement | null = null;\n\n // The image wrapper\n private wrapper: HTMLSpanElement | null = null;\n\n // Current edit info of the image. All changes user made will be stored in this object.\n // We use this object to update the editing UI, and finally we will use this object to generate\n // the new image if necessary\n private editInfo: ImageEditInfo | null = null;\n\n // Src of the image before current editing\n private lastSrc: string | null = null;\n\n // Drag and drop helper objects\n private dndHelpers: DragAndDropHelper[] = [];\n\n /**\n * Identify if the image was resized by the user.\n */\n private wasResized: boolean = false;\n\n /**\n * The span element that wraps the image and opens shadow dom\n */\n private shadowSpan: HTMLSpanElement | null = null;\n\n /**\n * The span element that wraps the image and opens shadow dom\n */\n private isCropping: boolean = false;\n\n /**\n * If the image is a gif, this is the png source of the gif image\n */\n private pngSource: string | null = null;\n\n /**\n * Create a new instance of ImageEdit\n * @param options Image editing options\n * @param onShowResizeHandle An optional callback to allow customize resize handle element of image resizing.\n * To customize the resize handle element, add this callback and change the attributes of elementData then it\n * will be picked up by ImageEdit code\n */\n constructor(options?: ImageEditOptions, private onShowResizeHandle?: OnShowResizeHandle) {\n this.options = {\n ...DefaultOptions,\n ...(options || {}),\n };\n\n this.allowedOperations =\n ImageEditOperation.CornerResize |\n (this.options.disableCrop ? 0 : ImageEditOperation.Crop) |\n (this.options.disableRotate ? 0 : ImageEditOperation.Rotate) |\n (this.options.disableSideResize ? 0 : ImageEditOperation.SideResize);\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'ImageEdit';\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 this.disposer = editor.addDomEventHandler({\n blur: () => this.onBlur(),\n dragstart: e => {\n if (this.image) {\n e.preventDefault();\n }\n },\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.clearDndHelpers();\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param e PluginEvent object\n */\n onPluginEvent(e: PluginEvent) {\n switch (e.eventType) {\n case PluginEventType.SelectionChanged:\n if (\n e.selectionRangeEx &&\n e.selectionRangeEx.type === SelectionRangeTypes.ImageSelection &&\n this.options &&\n this.options.onSelectState !== undefined\n ) {\n this.setEditingImage(e.selectionRangeEx.image, this.options.onSelectState);\n }\n\n break;\n case PluginEventType.MouseDown:\n // When left click in a image that already in editing mode, do not quit edit mode\n const mouseTarget = e.rawEvent.target;\n const button = e.rawEvent.button;\n if (\n this.shadowSpan !== mouseTarget ||\n (this.shadowSpan === mouseTarget && button !== 0) ||\n this.isCropping\n ) {\n this.setEditingImage(null);\n }\n break;\n case PluginEventType.MouseUp:\n // When mouse up, if the image and the shadow span exists, the editing mode is on.\n // To make sure the selection did not jump to the shadow root, reselect the image.\n if (this.image && this.shadowSpan) {\n this.editor?.select(this.image);\n }\n break;\n case PluginEventType.KeyDown:\n this.setEditingImage(null);\n break;\n case PluginEventType.ContentChanged:\n //After contentChanged event, the current image wrapper may not be valid any more, remove all of them if any\n this.removeWrapper();\n break;\n\n case PluginEventType.ExtractContentWithDom:\n // When extract content, remove all image info since they may not be valid when load the content again\n if (this.options?.imageSelector) {\n toArray(e.clonedRoot.querySelectorAll(this.options.imageSelector)).forEach(\n img => {\n deleteEditInfo(img as HTMLImageElement);\n }\n );\n }\n break;\n case PluginEventType.BeforeDispose:\n this.removeWrapper();\n break;\n }\n }\n\n /**\n * Check if the given image edit operation is allowed by this plugin\n * @param operation The image edit operation to check\n * @returns True means it is allowed, otherwise false\n */\n isOperationAllowed(operation: ImageEditOperation): boolean {\n return !!(this.allowedOperations & operation);\n }\n\n /**\n * Set current image for edit. If there is already image in editing, it will quit editing mode and any pending editing\n * operation will be submitted\n * @param image The image to edit\n * @param operation The editing operation\n */\n setEditingImage(\n image: HTMLImageElement,\n operation: ImageEditOperation | CompatibleImageEditOperation\n ): void;\n\n /**\n * Stop editing image. If there is already image in editing, it will quit editing mode and any pending editing\n * operation will be submitted\n * @param image The image to edit\n * @param selectImage True to select this image after quit editing mode\n */\n setEditingImage(image: null, selectImage?: boolean): void;\n\n setEditingImage(\n image: HTMLImageElement | null,\n operationOrSelect?: ImageEditOperation | CompatibleImageEditOperation | boolean\n ) {\n let operation =\n typeof operationOrSelect === 'number' ? operationOrSelect : ImageEditOperation.None;\n const selectImage = typeof operationOrSelect === 'number' ? false : !!operationOrSelect;\n\n if (\n !image &&\n this.image &&\n this.editor &&\n this.editInfo &&\n this.lastSrc &&\n this.clonedImage\n ) {\n // When there is image in editing, clean up any cached objects and elements\n this.clearDndHelpers();\n\n // If the image is a gif we change the editing image to a new png image, then we need to change the\n // image source to the original gif image\n if (this.pngSource) {\n this.clonedImage.src = this.editInfo.src;\n }\n\n // Apply the changes, and add undo snapshot if necessary\n applyChange(\n this.editor,\n this.image,\n this.editInfo,\n this.lastSrc,\n this.wasResized || this.isCropping,\n this.clonedImage\n );\n\n // Remove editing wrapper\n this.removeWrapper();\n\n this.editor.addUndoSnapshot(() => this.image, ChangeSource.ImageResize);\n\n if (selectImage) {\n this.editor.select(this.image);\n }\n\n this.pngSource = null;\n this.image = null;\n this.editInfo = null;\n this.lastSrc = null;\n this.clonedImage = null;\n this.isCropping = false;\n }\n\n if (!this.image && image?.isContentEditable && this.editor) {\n // If there is new image to edit, enter editing mode for this image\n this.editor.addUndoSnapshot();\n this.image = image;\n\n // Get initial edit info\n this.editInfo = getEditInfoFromImage(image);\n\n //Check if the image is a gif and convert it to a png\n this.pngSource = tryToConvertGifToPng(this.editInfo);\n\n //Check if the image was resized by the user\n this.wasResized = checkIfImageWasResized(this.image);\n\n operation =\n (canRegenerateImage(image) ? operation : ImageEditOperation.Resize) &\n this.allowedOperations;\n\n // Create and update editing wrapper and elements\n this.createWrapper(operation);\n this.updateWrapper();\n\n // Init drag and drop\n this.dndHelpers = [\n ...this.createDndHelpers(ImageEditElementClass.ResizeHandle, Resizer),\n ...this.createDndHelpers(ImageEditElementClass.RotateHandle, Rotator),\n ...this.createDndHelpers(ImageEditElementClass.CropHandle, Cropper),\n ...this.createDndHelpers(ImageEditElementClass.CropContainer, Cropper),\n ];\n\n this.editor.select(this.image);\n }\n }\n\n /**\n * Flip the image.\n * @param image The image to be flipped\n * @param direction\n */\n public flipImage(image: HTMLImageElement, direction: 'vertical' | 'horizontal') {\n this.image = image;\n this.editInfo = getEditInfoFromImage(image);\n const { angleRad } = this.editInfo;\n const isInVerticalPostion =\n (angleRad >= Math.PI / 2 && angleRad < (3 * Math.PI) / 4) ||\n (angleRad <= -Math.PI / 2 && angleRad > (-3 * Math.PI) / 4);\n if (isInVerticalPostion) {\n if (direction === 'horizontal') {\n this.editInfo.flippedVertical = !this.editInfo.flippedVertical;\n } else {\n this.editInfo.flippedHorizontal = !this.editInfo.flippedHorizontal;\n }\n } else {\n if (direction === 'vertical') {\n this.editInfo.flippedVertical = !this.editInfo.flippedVertical;\n } else {\n this.editInfo.flippedHorizontal = !this.editInfo.flippedHorizontal;\n }\n }\n this.createWrapper(ImageEditOperation.Rotate);\n this.updateWrapper();\n this.setEditingImage(null);\n this.editor?.select(image);\n }\n\n /**\n * Rotate the image in radian angle.\n * @param image The image to be rotated\n * @param angleRad The angle in radian that the image must be rotated.\n */\n public rotateImage(image: HTMLImageElement, angleRad: number) {\n this.image = image;\n this.editInfo = getEditInfoFromImage(image);\n this.editInfo.angleRad = this.editInfo.angleRad + angleRad;\n this.createWrapper(ImageEditOperation.Rotate);\n this.updateWrapper();\n this.setEditingImage(null);\n this.editor?.select(image);\n }\n\n /**\n * quit editing mode when editor lose focus\n */\n private onBlur = () => {\n this.setEditingImage(null, false /* selectImage */);\n };\n /**\n * Create editing wrapper for the image\n */\n private createWrapper(operation: ImageEditOperation | CompatibleImageEditOperation) {\n if (this.image && this.editor && this.options && this.editInfo) {\n //Clone the image and insert the clone in a entity\n this.clonedImage = this.image.cloneNode(true) as HTMLImageElement;\n this.clonedImage.removeAttribute('id');\n this.clonedImage.style.removeProperty('max-width');\n this.clonedImage.style.width = this.editInfo.widthPx + 'px';\n this.clonedImage.style.height = this.editInfo.heightPx + 'px';\n this.wrapper = createElement(\n KnownCreateElementDataIndex.ImageEditWrapper,\n this.image.ownerDocument\n ) as HTMLSpanElement;\n this.wrapper?.firstChild?.appendChild(this.clonedImage);\n this.wrapper.style.display = Browser.isSafari ? 'inline-block' : 'inline-flex';\n\n // Cache current src so that we can compare it after edit see if src is changed\n this.lastSrc = this.image.getAttribute('src');\n\n // Set image src to original src to help show editing UI, also it will be used when regenerate image dataURL after editing\n if (this.clonedImage) {\n this.clonedImage.src = this.pngSource ?? this.editInfo.src;\n this.clonedImage.style.position = 'absolute';\n }\n\n // Get HTML for all edit elements (resize handle, rotate handle, crop handle and overlay, ...) and create HTML element\n const options: ImageHtmlOptions = {\n borderColor: getColorString(this.options.borderColor!, this.editor.isDarkMode()),\n rotateIconHTML: this.options.rotateIconHTML!,\n rotateHandleBackColor: this.editor.isDarkMode()\n ? DARK_MODE_BGCOLOR\n : LIGHT_MODE_BGCOLOR,\n isSmallImage: isASmallImage(this.editInfo.widthPx, this.editInfo.heightPx),\n };\n const htmlData: CreateElementData[] = [getResizeBordersHTML(options)];\n\n getObjectKeys(ImageEditHTMLMap).forEach(thisOperation => {\n const element = ImageEditHTMLMap[thisOperation](options, this.onShowResizeHandle);\n if ((operation & thisOperation) == thisOperation && element) {\n arrayPush(htmlData, element);\n }\n });\n\n htmlData.forEach(data => {\n const element = createElement(data, this.image!.ownerDocument);\n if (element && this.wrapper) {\n this.wrapper.appendChild(element);\n }\n });\n this.insertImageWrapper(this.wrapper);\n }\n }\n\n private insertImageWrapper(wrapper: HTMLSpanElement) {\n if (this.image) {\n this.shadowSpan = wrap(this.image, 'span');\n if (this.shadowSpan) {\n const shadowRoot = this.shadowSpan.attachShadow({\n mode: 'open',\n });\n\n this.shadowSpan.style.verticalAlign = 'bottom';\n this.shadowSpan.style.fontSize = '24px';\n\n shadowRoot.appendChild(wrapper);\n }\n }\n }\n\n /**\n * Remove the temp wrapper of the image\n */\n private removeWrapper = () => {\n if (this.shadowSpan) {\n unwrap(this.shadowSpan);\n }\n this.wrapper = null;\n this.shadowSpan = null;\n };\n\n /**\n * Update image edit elements to reflect current editing result\n * @param context\n */\n private updateWrapper = (context?: DragAndDropContext) => {\n const wrapper = this.wrapper;\n if (\n wrapper &&\n this.editInfo &&\n this.image &&\n this.clonedImage &&\n this.options &&\n this.shadowSpan?.parentElement\n ) {\n // Prepare: get related editing elements\n const cropContainers = getEditElements(wrapper, ImageEditElementClass.CropContainer);\n const cropOverlays = getEditElements(wrapper, ImageEditElementClass.CropOverlay);\n const resizeHandles = getEditElements(wrapper, ImageEditElementClass.ResizeHandle);\n const rotateCenter = getEditElements(wrapper, ImageEditElementClass.RotateCenter)[0];\n const rotateHandle = getEditElements(wrapper, ImageEditElementClass.RotateHandle)[0];\n const cropHandles = getEditElements(wrapper, ImageEditElementClass.CropHandle);\n\n // Cropping and resizing will show different UI, so check if it is cropping here first\n this.isCropping = cropContainers.length == 1 && cropOverlays.length == 4;\n const {\n angleRad,\n bottomPercent,\n leftPercent,\n rightPercent,\n topPercent,\n flippedHorizontal,\n flippedVertical,\n } = this.editInfo;\n\n // Width/height of the image\n const {\n targetWidth,\n targetHeight,\n originalWidth,\n originalHeight,\n visibleWidth,\n visibleHeight,\n } = getGeneratedImageSize(this.editInfo, this.isCropping);\n\n const marginHorizontal = (targetWidth - visibleWidth) / 2;\n const marginVertical = (targetHeight - visibleHeight) / 2;\n const cropLeftPx = originalWidth * leftPercent;\n const cropRightPx = originalWidth * rightPercent;\n const cropTopPx = originalHeight * topPercent;\n const cropBottomPx = originalHeight * bottomPercent;\n\n // Update size and margin of the wrapper\n wrapper.style.margin = `${marginVertical}px ${marginHorizontal}px`;\n wrapper.style.transform = `rotate(${angleRad}rad)`;\n setWrapperSizeDimensions(wrapper, this.image, visibleWidth, visibleHeight);\n\n // Update the text-alignment to avoid the image to overflow if the parent element have align center or right\n // or if the direction is Right To Left\n wrapper.style.textAlign = isRtl(this.shadowSpan.parentElement) ? 'right' : 'left';\n\n // Update size of the image\n this.clonedImage.style.width = getPx(originalWidth);\n this.clonedImage.style.height = getPx(originalHeight);\n\n //Update flip direction\n setFlipped(this.clonedImage.parentElement, flippedHorizontal, flippedVertical);\n\n if (this.isCropping) {\n // For crop, we also need to set position of the overlays\n setSize(\n cropContainers[0],\n cropLeftPx,\n cropTopPx,\n cropRightPx,\n cropBottomPx,\n undefined,\n undefined\n );\n setSize(cropOverlays[0], 0, 0, cropRightPx, undefined, undefined, cropTopPx);\n setSize(cropOverlays[1], undefined, 0, 0, cropBottomPx, cropRightPx, undefined);\n setSize(cropOverlays[2], cropLeftPx, undefined, 0, 0, undefined, cropBottomPx);\n setSize(cropOverlays[3], 0, cropTopPx, undefined, 0, cropLeftPx, undefined);\n\n updateHandleCursor(cropHandles, angleRad);\n } else {\n // For rotate/resize, set the margin of the image so that cropped part won't be visible\n this.clonedImage.style.margin = `${-cropTopPx}px 0 0 ${-cropLeftPx}px`;\n\n // Double check resize\n if (context?.elementClass == ImageEditElementClass.ResizeHandle) {\n const clientWidth = wrapper.clientWidth;\n const clientHeight = wrapper.clientHeight;\n this.wasResized = true;\n doubleCheckResize(\n this.editInfo,\n this.options.preserveRatio || false,\n clientWidth,\n clientHeight\n );\n\n this.updateWrapper();\n }\n\n const viewport = this.editor?.getVisibleViewport();\n const isSmall = isASmallImage(targetWidth, targetHeight);\n if (rotateHandle && rotateCenter && viewport) {\n updateRotateHandleState(\n viewport,\n angleRad,\n wrapper,\n rotateCenter,\n rotateHandle,\n isSmall\n );\n }\n\n updateSideHandlesVisibility(resizeHandles, isSmall);\n\n updateHandleCursor(resizeHandles, angleRad);\n }\n }\n };\n\n /**\n * Create drag and drop helpers\n * @param wrapper\n * @param elementClass\n * @param dragAndDrop\n */\n private createDndHelpers(\n elementClass: ImageEditElementClass,\n dragAndDrop: DragAndDropHandler\n ): DragAndDropHelper[] {\n const wrapper = this.wrapper;\n return wrapper && this.editInfo\n ? getEditElements(wrapper, elementClass).map(\n element =>\n new DragAndDropHelper(\n element,\n {\n editInfo: this.editInfo!,\n options: this.options,\n elementClass,\n x: element.dataset.x as DNDDirectionX,\n y: element.dataset.y as DnDDirectionY,\n },\n this.updateWrapper,\n dragAndDrop,\n this.editor ? this.editor.getZoomScale() : 1\n )\n )\n : [];\n }\n\n /**\n * Clean up drag and drop helpers\n */\n private clearDndHelpers() {\n this.dndHelpers?.forEach(helper => helper.dispose());\n this.dndHelpers = [];\n }\n}\n\nfunction setSize(\n element: HTMLElement,\n left: number | undefined,\n top: number | undefined,\n right: number | undefined,\n bottom: number | undefined,\n width: number | undefined,\n height: number | undefined\n) {\n element.style.left = left !== undefined ? getPx(left) : element.style.left;\n element.style.top = top !== undefined ? getPx(top) : element.style.top;\n element.style.right = right !== undefined ? getPx(right) : element.style.right;\n element.style.bottom = bottom !== undefined ? getPx(bottom) : element.style.bottom;\n element.style.width = width !== undefined ? getPx(width) : element.style.width;\n element.style.height = height !== undefined ? getPx(height) : element.style.height;\n}\n\nfunction setWrapperSizeDimensions(\n wrapper: HTMLElement,\n image: HTMLImageElement,\n width: number,\n height: number\n) {\n const hasBorder = image.style.borderStyle;\n if (hasBorder) {\n const borderWidth = image.style.borderWidth ? 2 * parseInt(image.style.borderWidth) : 2;\n wrapper.style.width = getPx(width + borderWidth);\n wrapper.style.height = getPx(height + borderWidth);\n return;\n }\n wrapper.style.width = getPx(width);\n wrapper.style.height = getPx(height);\n}\n\nfunction getPx(value: number): string {\n return value + 'px';\n}\n\nfunction getEditElements(wrapper: HTMLElement, elementClass: ImageEditElementClass): HTMLElement[] {\n return toArray(wrapper.querySelectorAll('.' + elementClass)) as HTMLElement[];\n}\n\nfunction isRtl(element: Node): boolean {\n return safeInstanceOf(element, 'HTMLElement')\n ? getComputedStyle(element, 'direction') == 'rtl'\n : false;\n}\n\nfunction handleRadIndexCalculator(angleRad: number): number {\n let idx = Math.round(angleRad / DirectionRad) % DIRECTIONS;\n return idx < 0 ? idx + DIRECTIONS : idx;\n}\n\nfunction rotateHandles(angleRad: number, y: string = '', x: string = ''): string {\n const radIndex = handleRadIndexCalculator(angleRad);\n const originalDirection = y + x;\n const originalIndex = DirectionOrder.indexOf(originalDirection);\n const rotatedIndex = originalIndex >= 0 && originalIndex + radIndex;\n return rotatedIndex ? DirectionOrder[rotatedIndex % DIRECTIONS] : '';\n}\n\n/**\n * Rotate the resizer and cropper handles according to the image position.\n * @param handles The resizer handles.\n * @param angleRad The angle that the image was rotated.\n */\nfunction updateHandleCursor(handles: HTMLElement[], angleRad: number) {\n handles.forEach(handle => {\n const { y, x } = handle.dataset;\n handle.style.cursor = `${rotateHandles(angleRad, y, x)}-resize`;\n });\n}\n\nfunction updateSideHandlesVisibility(handles: HTMLElement[], isSmall: boolean) {\n handles.forEach(handle => {\n const { y, x } = handle.dataset;\n const coordinate = (y ?? '') + (x ?? '');\n const directions = ['n', 's', 'e', 'w'];\n const isSideHandle = directions.indexOf(coordinate) > -1;\n handle.style.display = isSideHandle && isSmall ? 'none' : '';\n });\n}\n\n/**\n * Check if the current image was resized by the user\n * @param image the current image\n * @returns if the user resized the image, returns true, otherwise, returns false\n */\nfunction checkIfImageWasResized(image: HTMLImageElement): boolean {\n const { width, height, style } = image;\n const isMaxWidthInitial =\n style.maxWidth === '' || style.maxWidth === 'initial' || style.maxWidth === 'auto';\n if (\n isMaxWidthInitial &&\n (isFixedNumberValue(style.height) ||\n isFixedNumberValue(style.width) ||\n isFixedNumberValue(width) ||\n isFixedNumberValue(height))\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction isFixedNumberValue(value: string | number) {\n const numberValue = typeof value === 'string' ? parseInt(value) : value;\n return !isNaN(numberValue);\n}\n\nfunction isASmallImage(widthPx: number, heightPx: number): boolean {\n return widthPx && heightPx && (widthPx < MIN_HEIGHT_WIDTH || heightPx < MIN_HEIGHT_WIDTH)\n ? true\n : false;\n}\n\nfunction getColorString(color: string | ModeIndependentColor, isDarkMode: boolean): string {\n if (typeof color === 'string') {\n return color.trim();\n }\n return isDarkMode ? color.darkModeColor.trim() : color.lightModeColor.trim();\n}\n\nfunction setFlipped(\n element: HTMLElement | null,\n flippedHorizontally?: boolean,\n flippedVertically?: boolean\n) {\n if (element) {\n element.style.transform = `scale(${flippedHorizontally ? -1 : 1}, ${\n flippedVertically ? -1 : 1\n })`;\n }\n}\n","/**\n * Check if we can regenerate edited image from the source image.\n * An image can't regenerate result when there is CORS issue of the source content.\n * @param img The image element to test\n * @returns True when we can regenerate the edited image, otherwise false\n */\nexport default function canRegenerateImage(img: HTMLImageElement): boolean {\n if (!img) {\n return false;\n }\n\n try {\n const canvas = img.ownerDocument.createElement('canvas');\n canvas.width = 10;\n canvas.height = 10;\n const context = canvas.getContext('2d');\n if (context) {\n context.drawImage(img, 0, 0);\n context.getImageData(0, 0, 1, 1);\n return true;\n }\n\n return false;\n } catch {\n return false;\n }\n}\n","import getTargetSizeByPercentage from '../editInfoUtils/getTargetSizeByPercentage';\nimport { getEditInfoFromImage } from '../editInfoUtils/editInfo';\n\n/**\n * Check if the image is already resized to the given percentage\n * @param image The image to check\n * @param percentage The percentage to check\n */\nexport default function isResizedTo(image: HTMLImageElement, percentage: number): boolean {\n const editInfo = getEditInfoFromImage(image);\n if (editInfo) {\n const { width, height } = getTargetSizeByPercentage(editInfo, percentage);\n return (\n Math.round(width) == Math.round(editInfo.widthPx) &&\n Math.round(height) == Math.round(editInfo.heightPx)\n );\n }\n return false;\n}\n","import { ChangeSource, IEditor } from 'roosterjs-editor-types';\nimport { deleteEditInfo } from '../editInfoUtils/editInfo';\n\n/**\n * Remove explicit width & height attributes on the image element.\n * @param editor The editor that contains the image\n * @param image The image to remove w/h from\n */\nexport default function resetImage(editor: IEditor, image: HTMLImageElement) {\n editor.addUndoSnapshot(() => {\n image.style.width = '';\n image.style.height = '';\n image.style.maxWidth = '100%';\n image.removeAttribute('width');\n image.removeAttribute('height');\n deleteEditInfo(image);\n }, ChangeSource.ImageResize);\n}\n","import applyChange from '../editInfoUtils/applyChange';\nimport getTargetSizeByPercentage from '../editInfoUtils/getTargetSizeByPercentage';\nimport isResizedTo from './isResizedTo';\nimport { ChangeSource, IEditor } from 'roosterjs-editor-types';\nimport { getEditInfoFromImage } from '../editInfoUtils/editInfo';\n\n/**\n * Resize the image by percentage of its natural size. If the image is cropped or rotated,\n * the final size will also calculated with crop and rotate info.\n * @param editor The editor that contains the image\n * @param image The image to resize\n * @param percentage Percentage to resize to\n * @param minWidth Minimum width\n * @param minHeight Minimum height\n */\nexport default function resizeByPercentage(\n editor: IEditor,\n image: HTMLImageElement,\n percentage: number,\n minWidth: number,\n minHeight: number\n) {\n const editInfo = getEditInfoFromImage(image);\n\n if (!isResizedTo(image, percentage)) {\n loadImage(image, image.src, () => {\n if (!editor.isDisposed() && editor.contains(image) && editInfo) {\n const lastSrc = image.getAttribute('src');\n const { width, height } = getTargetSizeByPercentage(editInfo, percentage);\n editInfo.widthPx = Math.max(width, minWidth);\n editInfo.heightPx = Math.max(height, minHeight);\n\n editor.addUndoSnapshot(() => {\n applyChange(editor, image, editInfo, lastSrc || '', true /*wasResized*/);\n }, ChangeSource.ImageResize);\n editor.select(image);\n }\n });\n }\n}\n\nfunction loadImage(img: HTMLImageElement, src: string, callback: () => void) {\n img.onload = () => {\n img.onload = null;\n img.onerror = null;\n callback();\n };\n img.onerror = () => {\n img.onload = null;\n img.onerror = null;\n callback();\n };\n img.src = src;\n}\n","import { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\n\nexport const RESIZE_HANDLE_SIZE = 10;\nexport const RESIZE_HANDLE_MARGIN = 6;\n\nexport const ROTATE_SIZE = 32;\nexport const ROTATE_GAP = 15;\nexport const DEG_PER_RAD = 180 / Math.PI;\nexport const DEFAULT_ROTATE_HANDLE_HEIGHT = ROTATE_SIZE / 2 + ROTATE_GAP;\nexport const ROTATE_ICON_MARGIN = 8;\nexport const ROTATION: Record = {\n sw: 0,\n nw: 90,\n ne: 180,\n se: 270,\n};\nexport const Xs: DNDDirectionX[] = ['w', '', 'e'];\nexport const Ys: DnDDirectionY[] = ['s', '', 'n'];\n\nexport const ROTATE_WIDTH = 1;\nexport const ROTATE_HANDLE_TOP = ROTATE_GAP + RESIZE_HANDLE_MARGIN;\nexport const CROP_HANDLE_SIZE = 22;\nexport const CROP_HANDLE_WIDTH = 7;\nexport const XS_CROP: DNDDirectionX[] = ['w', 'e'];\nexport const YS_CROP: DnDDirectionY[] = ['s', 'n'];\n\nexport const MIN_HEIGHT_WIDTH = 3 * RESIZE_HANDLE_SIZE + 2 * RESIZE_HANDLE_MARGIN;\n","import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';\nimport generateDataURL from './generateDataURL';\nimport getGeneratedImageSize from './getGeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\nimport { deleteEditInfo, getEditInfoFromImage, saveEditInfo } from './editInfo';\nimport { IEditor, PluginEventType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Apply changes from the edit info of an image, write result to the image\n * @param editor The editor object that contains the image\n * @param image The image to apply the change\n * @param editInfo Edit info that contains the changed information of the image\n * @param previousSrc Last src value of the image before the change was made\n * @param wasResizedOrCropped if the image was resized or cropped apply the new image dimensions\n * @param editingImage (optional) Image in editing state\n */\nexport default function applyChange(\n editor: IEditor,\n image: HTMLImageElement,\n editInfo: ImageEditInfo,\n previousSrc: string,\n wasResizedOrCropped: boolean,\n editingImage?: HTMLImageElement\n) {\n let newSrc = '';\n\n const initEditInfo = getEditInfoFromImage(editingImage ?? image);\n const state = checkEditInfoState(editInfo, initEditInfo);\n\n switch (state) {\n case ImageEditInfoState.ResizeOnly:\n // For resize only case, no need to generate a new image, just reuse the original one\n newSrc = editInfo.src;\n break;\n case ImageEditInfoState.SameWithLast:\n // For SameWithLast case, image may be resized but the content is still the same with last one,\n // so no need to create a new image, but just reuse last one\n newSrc = previousSrc;\n break;\n case ImageEditInfoState.FullyChanged:\n // For other cases (cropped, rotated, ...) we need to create a new image to reflect the change\n newSrc = generateDataURL(editingImage ?? image, editInfo);\n break;\n }\n\n const srcChanged = newSrc != previousSrc;\n\n if (srcChanged) {\n // If the src is changed, fire an EditImage event so that plugins knows that a new image is used, and can\n // replace the new src with some other string and it will be used and set to the image\n const event = editor.triggerPluginEvent(PluginEventType.EditImage, {\n image: image,\n originalSrc: editInfo.src,\n previousSrc,\n newSrc,\n });\n newSrc = event.newSrc;\n }\n\n if (newSrc == editInfo.src) {\n // If newSrc is the same with original one, it means there is only size change, but no rotation, no cropping,\n // so we don't need to keep edit info, we can delete it\n deleteEditInfo(image);\n } else {\n // Otherwise, save the new edit info to the image so that next time when we edit the same image, we know\n // the edit info\n saveEditInfo(image, editInfo);\n }\n\n // Write back the change to image, and set its new size\n const { targetWidth, targetHeight } = getGeneratedImageSize(editInfo);\n image.src = newSrc;\n\n if (wasResizedOrCropped || state == ImageEditInfoState.FullyChanged) {\n image.width = targetWidth;\n image.height = targetHeight;\n // Remove width/height style so that it won't affect the image size, since style width/height has higher priority\n image.style.removeProperty('width');\n image.style.removeProperty('height');\n image.style.removeProperty('max-width');\n }\n}\n","import ImageEditInfo, { CropInfo, ResizeInfo, RotateInfo } from '../types/ImageEditInfo';\n\nconst RESIZE_KEYS: (keyof ResizeInfo)[] = ['widthPx', 'heightPx'];\nconst ROTATE_KEYS: (keyof RotateInfo)[] = ['angleRad'];\nconst CROP_KEYS: (keyof CropInfo)[] = [\n 'leftPercent',\n 'rightPercent',\n 'topPercent',\n 'bottomPercent',\n];\nconst ROTATE_CROP_KEYS: (keyof RotateInfo | keyof CropInfo)[] = [...ROTATE_KEYS, ...CROP_KEYS];\nconst ALL_KEYS = [...ROTATE_CROP_KEYS, ...RESIZE_KEYS];\n\n/**\n * @internal\n * State of an edit info object for image editing.\n * It is returned by checkEditInfoState() function\n */\nexport const enum ImageEditInfoState {\n /**\n * Invalid edit info. It means the given edit info object is either null,\n * or not all its member are of correct type\n */\n Invalid,\n\n /**\n * The edit info shows that it is only potentially edited by resizing action.\n * Image is not rotated or cropped, or event not changed at all.\n */\n ResizeOnly,\n\n /**\n * When compare with another edit info, this value can be returned when both current\n * edit info and the other one are not been rotated, and they have same cropping\n * percentages. So that they can share the same image src, only width and height\n * need to be adjusted.\n */\n SameWithLast,\n\n /**\n * When this value is returned, it means the image is edited by either cropping or\n * rotation, or both. Image source can't be reused, need to generate a new image src\n * data uri.\n */\n FullyChanged,\n}\n\n/**\n * @internal\n * Check the state of an edit info\n * @param editInfo The edit info to check\n * @param compareTo An optional edit info to compare to\n * @returns If the source edit info is not valid (wrong type, missing field, ...), returns Invalid.\n * If the source edit info doesn't contain any rotation or cropping, returns ResizeOnly\n * If the compare edit info exists, and both of them don't contain rotation, and the have same cropping values,\n * returns SameWithLast. Otherwise, returns FullyChanged\n */\nexport default function checkEditInfoState(\n editInfo: ImageEditInfo,\n compareTo?: ImageEditInfo\n): ImageEditInfoState {\n if (!editInfo || !editInfo.src || ALL_KEYS.some(key => !isNumber(editInfo[key]))) {\n return ImageEditInfoState.Invalid;\n } else if (\n ROTATE_CROP_KEYS.every(key => areSameNumber(editInfo[key], 0)) &&\n !editInfo.flippedHorizontal &&\n !editInfo.flippedVertical &&\n (!compareTo || (compareTo && editInfo.angleRad === compareTo.angleRad))\n ) {\n return ImageEditInfoState.ResizeOnly;\n } else if (\n compareTo &&\n ROTATE_KEYS.every(key => areSameNumber(editInfo[key], 0)) &&\n ROTATE_KEYS.every(key => areSameNumber(compareTo[key], 0)) &&\n CROP_KEYS.every(key => areSameNumber(editInfo[key], compareTo[key])) &&\n compareTo.flippedHorizontal === editInfo.flippedHorizontal &&\n compareTo.flippedVertical === editInfo.flippedVertical\n ) {\n return ImageEditInfoState.SameWithLast;\n } else {\n return ImageEditInfoState.FullyChanged;\n }\n}\n\nfunction isNumber(o: any): o is number {\n return typeof o === 'number';\n}\n\nfunction areSameNumber(n1: number, n2: number) {\n return Math.abs(n1 - n2) < 1e-3;\n}\n","import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';\nimport ImageEditInfo from '../types/ImageEditInfo';\nimport { getMetadata, removeMetadata, setMetadata } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Save edit info to image\n * @param image The image to save edit info to\n * @param editInfo The edit info to save\n */\nexport function saveEditInfo(image: HTMLImageElement, editInfo: ImageEditInfo) {\n if (image) {\n setMetadata(image, editInfo);\n }\n}\n\n/**\n * @internal\n * Delete edit info of an image if any\n * @param image The image to delete edit info from\n */\nexport function deleteEditInfo(image: HTMLImageElement) {\n if (image) {\n removeMetadata(image);\n }\n}\n\n/**\n * @internal\n * Get image edit info from an image. If the image doesn't have edit info, create one from this image.\n * When create new edit info, it will have width/height set to the image's current client width/height, and\n * natural width/height set to the image's natural width/height, src set to its current src, and all\n * other fields set to 0.\n * @param image The image to get edit info from\n */\nexport function getEditInfoFromImage(image: HTMLImageElement): ImageEditInfo {\n const obj = getMetadata(image);\n return !obj || checkEditInfoState(obj) == ImageEditInfoState.Invalid\n ? getInitialEditInfo(image)\n : obj;\n}\n\nfunction getInitialEditInfo(image: HTMLImageElement): ImageEditInfo {\n return {\n src: image.getAttribute('src') || '',\n widthPx: image.clientWidth,\n heightPx: image.clientHeight,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n}\n","import getGeneratedImageSize from './getGeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Generate new dataURL from an image and edit info\n * @param image The image to generate data URL from. It is supposed to have original src loaded\n * @param editInfo Edit info of the image\n * @returns A BASE64 encoded string with image prefix that represents the content of the generated image.\n * If there are rotate/crop/resize info in the edit info, the generated image will also reflect the result.\n * It is possible to throw exception since the original image may not be able to read its content from\n * the code, so better check canRegenerateImage() of the image first.\n * @throws Exception when fail to generate dataURL from canvas\n */\nexport default function generateDataURL(image: HTMLImageElement, editInfo: ImageEditInfo): string {\n const {\n angleRad: angle,\n widthPx: width,\n heightPx: height,\n bottomPercent: bottom,\n leftPercent: left,\n rightPercent: right,\n topPercent: top,\n naturalWidth,\n naturalHeight,\n } = editInfo;\n const imageWidth = naturalWidth * (1 - left - right);\n const imageHeight = naturalHeight * (1 - top - bottom);\n\n // Adjust the canvas size and scaling for high display resolution\n const devicePixelRatio = window.devicePixelRatio || 1;\n const canvas = document.createElement('canvas');\n const { targetWidth, targetHeight } = getGeneratedImageSize(editInfo);\n canvas.width = targetWidth * devicePixelRatio;\n canvas.height = targetHeight * devicePixelRatio;\n\n const context = canvas.getContext('2d');\n if (context) {\n context.scale(devicePixelRatio, devicePixelRatio);\n context.translate(targetWidth / 2, targetHeight / 2);\n context.rotate(angle);\n context.scale(editInfo.flippedHorizontal ? -1 : 1, editInfo.flippedVertical ? -1 : 1);\n context.drawImage(\n image,\n naturalWidth * left,\n naturalHeight * top,\n imageWidth,\n imageHeight,\n -width / 2,\n -height / 2,\n width,\n height\n );\n }\n\n return canvas.toDataURL('image/png', 1.0);\n}\n","import GeneratedImageSize from '../types/GeneratedImageSize';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Calculate the target size of an image.\n * For image that is not rotated, target size is the same with resizing/cropping size.\n * For image that is rotated, target size is calculated from resizing/cropping size and its rotate angle\n * Say an image is resized to 100w*100h, cropped 25% on each side, then rotated 45deg, so that cropped size\n * will be (both height and width) 100*(1-0.25-0,25) = 50px, then final image size will be 50*sqrt(2) = 71px\n * @param editInfo The edit info to calculate size from\n * @param beforeCrop True to calculate the full size of original image before crop, false to calculate the size\n * after crop\n * @returns A GeneratedImageSize object which contains original, visible and target target width and height of the image\n */\nexport default function getGeneratedImageSize(\n editInfo: ImageEditInfo,\n beforeCrop?: boolean\n): GeneratedImageSize {\n const {\n widthPx: width,\n heightPx: height,\n angleRad: angle,\n leftPercent: left,\n rightPercent: right,\n topPercent: top,\n bottomPercent: bottom,\n } = editInfo;\n\n // Original image size before crop and rotate\n const originalWidth = width / (1 - left - right);\n const originalHeight = height / (1 - top - bottom);\n\n // Visible size\n const visibleWidth = beforeCrop ? originalWidth : width;\n const visibleHeight = beforeCrop ? originalHeight : height;\n\n // Target size after crop and rotate\n const targetWidth =\n Math.abs(visibleWidth * Math.cos(angle)) + Math.abs(visibleHeight * Math.sin(angle));\n const targetHeight =\n Math.abs(visibleWidth * Math.sin(angle)) + Math.abs(visibleHeight * Math.cos(angle));\n\n return {\n targetWidth,\n targetHeight,\n originalWidth,\n originalHeight,\n visibleWidth,\n visibleHeight,\n };\n}\n","import ImageEditInfo from '../types/ImageEditInfo';\nimport ImageSize from '../types/ImageSize';\n\n/**\n * @internal\n * Get target size of an image with a percentage\n * @param editInfo\n * @param percentage\n * @returns [width, height] array\n */\nexport default function getTargetSizeByPercentage(\n editInfo: ImageEditInfo,\n percentage: number\n): ImageSize {\n const {\n naturalWidth,\n naturalHeight,\n leftPercent: left,\n topPercent: top,\n rightPercent: right,\n bottomPercent: bottom,\n } = editInfo;\n const width = naturalWidth * (1 - left - right) * percentage;\n const height = naturalHeight * (1 - top - bottom) * percentage;\n return { width, height };\n}\n","import generateDataURL from './generateDataURL';\nimport ImageEditInfo from '../types/ImageEditInfo';\n\n/**\n * @internal\n * Check if the image is a gif, if true, use canvas to convert it to a png.\n * If the image is not a gif, return null.\n * @param image to be converted\n * @returns the converted image data url or null, if the image is not a gif\n */\nexport function tryToConvertGifToPng(editInfo: ImageEditInfo) {\n const { src, widthPx, heightPx, naturalHeight, naturalWidth } = editInfo;\n if (src.indexOf('.gif') > -1 || src.indexOf('image/gif') > -1) {\n try {\n const image = document.createElement('img');\n image.src = src;\n const newEditInfo = {\n src: src,\n widthPx: widthPx,\n heightPx: heightPx,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n return generateDataURL(image, newEditInfo);\n } catch {\n return null;\n }\n }\n return null;\n}\n","import DragAndDropContext, { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport { CreateElementData } from 'roosterjs-editor-types';\nimport { CropInfo } from '../types/ImageEditInfo';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { rotateCoordinate } from './Resizer';\nimport {\n CROP_HANDLE_SIZE,\n CROP_HANDLE_WIDTH,\n ROTATION,\n XS_CROP,\n YS_CROP,\n} from '../constants/constants';\n\n/**\n * @internal\n * Crop handle for DragAndDropHelper\n */\nexport const Cropper: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ editInfo, x, y, options }, e, base, dx, dy) => {\n [dx, dy] = rotateCoordinate(dx, dy, editInfo.angleRad);\n\n const {\n widthPx,\n heightPx,\n leftPercent,\n rightPercent,\n topPercent,\n bottomPercent,\n } = editInfo;\n const { minWidth, minHeight } = options;\n const widthPercent = 1 - leftPercent - rightPercent;\n const heightPercent = 1 - topPercent - bottomPercent;\n\n if (\n widthPercent > 0 &&\n heightPercent > 0 &&\n minWidth !== undefined &&\n minHeight !== undefined\n ) {\n const fullWidth = widthPx / widthPercent;\n const fullHeight = heightPx / heightPercent;\n const newLeft =\n x != 'e'\n ? crop(base.leftPercent, dx, fullWidth, rightPercent, minWidth)\n : leftPercent;\n const newRight =\n x != 'w'\n ? crop(base.rightPercent, -dx, fullWidth, leftPercent, minWidth)\n : rightPercent;\n const newTop =\n y != 's'\n ? crop(base.topPercent, dy, fullHeight, bottomPercent, minHeight)\n : topPercent;\n const newBottom =\n y != 'n'\n ? crop(base.bottomPercent, -dy, fullHeight, topPercent, minHeight)\n : bottomPercent;\n\n editInfo.leftPercent = newLeft;\n editInfo.rightPercent = newRight;\n editInfo.topPercent = newTop;\n editInfo.bottomPercent = newBottom;\n editInfo.widthPx = fullWidth * (1 - newLeft - newRight);\n editInfo.heightPx = fullHeight * (1 - newTop - newBottom);\n\n return true;\n } else {\n return false;\n }\n },\n};\n\nfunction crop(\n basePercentage: number,\n deltaValue: number,\n fullValue: number,\n currentPercentage: number,\n minValue: number\n): number {\n const maxValue = fullValue * (1 - currentPercentage) - minValue;\n const newValue = fullValue * basePercentage + deltaValue;\n const validValue = Math.max(Math.min(newValue, maxValue), 0);\n return validValue / fullValue;\n}\n\n/**\n * @internal\n * Get HTML for crop elements, including 4 overlays (to show dark shadow), 1 container and 4 crop handles\n */\nexport function getCropHTML(): CreateElementData[] {\n const overlayHTML: CreateElementData = {\n tag: 'div',\n style: 'position:absolute;background-color:rgb(0,0,0,0.5);pointer-events:none',\n className: ImageEditElementClass.CropOverlay,\n };\n const containerHTML: CreateElementData = {\n tag: 'div',\n style: 'position:absolute;overflow:hidden',\n className: ImageEditElementClass.CropContainer,\n children: [],\n };\n if (containerHTML) {\n XS_CROP.forEach(x =>\n YS_CROP.forEach(y => containerHTML.children?.push(getCropHTMLInternal(x, y)))\n );\n }\n return [containerHTML, overlayHTML, overlayHTML, overlayHTML, overlayHTML];\n}\n\nfunction getCropHTMLInternal(x: DNDDirectionX, y: DnDDirectionY): CreateElementData {\n const leftOrRight = x == 'w' ? 'left' : 'right';\n const topOrBottom = y == 'n' ? 'top' : 'bottom';\n const rotation = ROTATION[y + x];\n\n return {\n tag: 'div',\n className: ImageEditElementClass.CropHandle,\n style: `position:absolute;pointer-events:auto;cursor:${y}${x}-resize;${leftOrRight}:0;${topOrBottom}:0;width:${CROP_HANDLE_SIZE}px;height:${CROP_HANDLE_SIZE}px;transform:rotate(${rotation}deg)`,\n dataset: { x, y },\n children: getCropHandleHTML(),\n };\n}\n\nfunction getCropHandleHTML(): CreateElementData[] {\n const result: CreateElementData[] = [];\n [0, 1].forEach(layer =>\n [0, 1].forEach(dir => {\n result.push(getCropHandleHTMLInternal(layer, dir));\n })\n );\n return result;\n}\n\nfunction getCropHandleHTMLInternal(layer: number, dir: number): CreateElementData {\n const position =\n dir == 0\n ? `right:${layer}px;height:${CROP_HANDLE_WIDTH - layer * 2}px;`\n : `top:${layer}px;width:${CROP_HANDLE_WIDTH - layer * 2}px;`;\n const bgColor = layer == 0 ? 'white' : 'black';\n\n return {\n tag: 'div',\n style: `position:absolute;left:${layer}px;bottom:${layer}px;${position};background-color:${bgColor}`,\n };\n}\n","import DragAndDropContext, { DNDDirectionX, DnDDirectionY } from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport ImageEditInfo, { ResizeInfo } from '../types/ImageEditInfo';\nimport ImageHtmlOptions from '../types/ImageHtmlOptions';\nimport { CreateElementData } from 'roosterjs-editor-types';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { RESIZE_HANDLE_MARGIN, RESIZE_HANDLE_SIZE, Xs, Ys } from '../constants/constants';\n\n/**\n * An optional callback to allow customize resize handle element of image resizing.\n * To customize the resize handle element, add this callback and change the attributes of elementData then it\n * will be picked up by ImageEdit code\n */\nexport interface OnShowResizeHandle {\n (elementData: CreateElementData, x: DNDDirectionX, y: DnDDirectionY): void;\n}\n\nconst enum HandleTypes {\n SquareHandles,\n CircularHandlesCorner,\n}\n\n/**\n * @internal\n * The resize drag and drop handler\n */\nexport const Resizer: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ x, y, editInfo, options }, e, base, deltaX, deltaY) => {\n const ratio =\n base.widthPx > 0 && base.heightPx > 0 ? (base.widthPx * 1.0) / base.heightPx : 0;\n\n [deltaX, deltaY] = rotateCoordinate(deltaX, deltaY, editInfo.angleRad);\n if (options.minWidth !== undefined && options.minHeight !== undefined) {\n const horizontalOnly = x == '';\n const verticalOnly = y == '';\n const shouldPreserveRatio =\n !(horizontalOnly || verticalOnly) && (options.preserveRatio || e.shiftKey);\n let newWidth = horizontalOnly\n ? base.widthPx\n : Math.max(base.widthPx + deltaX * (x == 'w' ? -1 : 1), options.minWidth);\n let newHeight = verticalOnly\n ? base.heightPx\n : Math.max(base.heightPx + deltaY * (y == 'n' ? -1 : 1), options.minHeight);\n\n if (shouldPreserveRatio && ratio > 0) {\n if (ratio > 1) {\n // first sure newHeight is right,calculate newWidth\n newWidth = newHeight * ratio;\n if (newWidth < options.minWidth) {\n newWidth = options.minWidth;\n newHeight = newWidth / ratio;\n }\n } else {\n // first sure newWidth is right,calculate newHeight\n newHeight = newWidth / ratio;\n if (newHeight < options.minHeight) {\n newHeight = options.minHeight;\n newWidth = newHeight * ratio;\n }\n }\n }\n editInfo.widthPx = newWidth;\n editInfo.heightPx = newHeight;\n return true;\n } else {\n return false;\n }\n },\n};\n\n/**\n * @internal Calculate the rotated x and y distance for mouse moving\n * @param x Original x distance\n * @param y Original y distance\n * @param angle Rotated angle, in radian\n * @returns rotated x and y distances\n */\nexport function rotateCoordinate(x: number, y: number, angle: number): [number, number] {\n if (x == 0 && y == 0) {\n return [0, 0];\n }\n const hypotenuse = Math.sqrt(x * x + y * y);\n angle = Math.atan2(y, x) - angle;\n return [hypotenuse * Math.cos(angle), hypotenuse * Math.sin(angle)];\n}\n\n/**\n * @internal\n * Double check if the changed size can satisfy current width of container.\n * When resize an image and preserve ratio, its size can be limited by the size of container.\n * So we need to check the actual size and calculate the size again\n * @param editInfo Edit info of the image\n * @param preserveRatio Whether w/h ratio need to be preserved\n * @param actualWidth Actual width of the image after resize\n * @param actualHeight Actual height of the image after resize\n */\nexport function doubleCheckResize(\n editInfo: ImageEditInfo,\n preserveRatio: boolean,\n actualWidth: number,\n actualHeight: number\n) {\n let { widthPx, heightPx } = editInfo;\n const ratio = heightPx > 0 ? widthPx / heightPx : 0;\n\n actualWidth = Math.floor(actualWidth);\n actualHeight = Math.floor(actualHeight);\n widthPx = Math.floor(widthPx);\n heightPx = Math.floor(heightPx);\n\n editInfo.widthPx = actualWidth;\n editInfo.heightPx = actualHeight;\n\n if (preserveRatio && ratio > 0 && (widthPx !== actualWidth || heightPx !== actualHeight)) {\n if (actualWidth < widthPx) {\n editInfo.heightPx = actualWidth / ratio;\n } else {\n editInfo.widthPx = actualHeight * ratio;\n }\n }\n}\n\n/**\n * @internal\n * Get HTML for resize handles at the corners\n */\nexport function getCornerResizeHTML(\n { borderColor: resizeBorderColor }: ImageHtmlOptions,\n onShowResizeHandle?: OnShowResizeHandle\n): CreateElementData[] {\n const result: CreateElementData[] = [];\n\n Xs.forEach(x =>\n Ys.forEach(y => {\n let elementData =\n (x == '') == (y == '')\n ? getResizeHandleHTML(\n x,\n y,\n resizeBorderColor,\n HandleTypes.CircularHandlesCorner\n )\n : null;\n if (onShowResizeHandle && elementData) {\n onShowResizeHandle(elementData, x, y);\n }\n if (elementData) {\n result.push(elementData);\n }\n })\n );\n return result;\n}\n\n/**\n * @internal\n * Get HTML for resize handles on the sides\n */\nexport function getSideResizeHTML(\n { borderColor: resizeBorderColor }: ImageHtmlOptions,\n onShowResizeHandle?: OnShowResizeHandle\n): CreateElementData[] {\n const result: CreateElementData[] = [];\n Xs.forEach(x =>\n Ys.forEach(y => {\n let elementData =\n (x == '') != (y == '')\n ? getResizeHandleHTML(\n x,\n y,\n resizeBorderColor,\n HandleTypes.CircularHandlesCorner\n )\n : null;\n if (onShowResizeHandle && elementData) {\n onShowResizeHandle(elementData, x, y);\n }\n if (elementData) {\n result.push(elementData);\n }\n })\n );\n return result;\n}\n\n/**\n * @internal\n * Get HTML for resize borders\n */\nexport function getResizeBordersHTML({\n borderColor: resizeBorderColor,\n}: ImageHtmlOptions): CreateElementData {\n return {\n tag: 'div',\n style: `position:absolute;left:0;right:0;top:0;bottom:0;border:solid 2px ${resizeBorderColor};pointer-events:none;`,\n };\n}\n\nfunction getResizeHandleHTML(\n x: DNDDirectionX,\n y: DnDDirectionY,\n borderColor: string,\n handleTypes: HandleTypes\n): CreateElementData | null {\n const leftOrRight = x == 'w' ? 'left' : 'right';\n const topOrBottom = y == 'n' ? 'top' : 'bottom';\n const leftOrRightValue = x == '' ? '50%' : '0px';\n const topOrBottomValue = y == '' ? '50%' : '0px';\n const direction = y + x;\n return x == '' && y == ''\n ? null\n : {\n tag: 'div',\n style: `position:absolute;${leftOrRight}:${leftOrRightValue};${topOrBottom}:${topOrBottomValue}`,\n children: [\n {\n tag: 'div',\n style: setHandleStyle[handleTypes](\n direction,\n topOrBottom,\n leftOrRight,\n borderColor\n ),\n className: ImageEditElementClass.ResizeHandle,\n dataset: { x, y },\n },\n ],\n };\n}\n\nconst setHandleStyle: Record<\n HandleTypes,\n (direction: string, topOrBottom: string, leftOrRight: string, borderColor: string) => string\n> = {\n 0: (direction, leftOrRight, topOrBottom, borderColor) =>\n `position:relative;width:${RESIZE_HANDLE_SIZE}px;height:${RESIZE_HANDLE_SIZE}px;background-color: ${borderColor};cursor:${direction}-resize;${topOrBottom}:-${RESIZE_HANDLE_MARGIN}px;${leftOrRight}:-${RESIZE_HANDLE_MARGIN}px;`,\n 1: (direction, leftOrRight, topOrBottom) =>\n `position:relative;width:${RESIZE_HANDLE_SIZE}px;height:${RESIZE_HANDLE_SIZE}px;background-color: #FFFFFF;cursor:${direction}-resize;${topOrBottom}:-${RESIZE_HANDLE_MARGIN}px;${leftOrRight}:-${RESIZE_HANDLE_MARGIN}px;border-radius:100%;border: 2px solid #bfbfbf;box-shadow: 0px 0.36316px 1.36185px rgba(100, 100, 100, 0.25);`,\n};\n","import DragAndDropContext from '../types/DragAndDropContext';\nimport DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport ImageHtmlOptions from '../types/ImageHtmlOptions';\nimport { CreateElementData, Rect } from 'roosterjs-editor-types';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { RotateInfo } from '../types/ImageEditInfo';\nimport {\n DEFAULT_ROTATE_HANDLE_HEIGHT,\n DEG_PER_RAD,\n RESIZE_HANDLE_MARGIN,\n ROTATE_GAP,\n ROTATE_HANDLE_TOP,\n ROTATE_ICON_MARGIN,\n ROTATE_SIZE,\n ROTATE_WIDTH,\n} from '../constants/constants';\n\n/**\n * @internal\n * The rotate drag and drop handler\n */\nexport const Rotator: DragAndDropHandler = {\n onDragStart: ({ editInfo }) => ({ ...editInfo }),\n onDragging: ({ editInfo, options }, e, base, deltaX, deltaY) => {\n const distance = editInfo.heightPx / 2 + DEFAULT_ROTATE_HANDLE_HEIGHT;\n const newX = distance * Math.sin(base.angleRad) + deltaX;\n const newY = distance * Math.cos(base.angleRad) - deltaY;\n let angleInRad = Math.atan2(newX, newY);\n\n if (!e.altKey && options && options.minRotateDeg !== undefined) {\n const angleInDeg = angleInRad * DEG_PER_RAD;\n const adjustedAngleInDeg =\n Math.round(angleInDeg / options.minRotateDeg) * options.minRotateDeg;\n angleInRad = adjustedAngleInDeg / DEG_PER_RAD;\n }\n\n if (editInfo.angleRad != angleInRad) {\n editInfo.angleRad = angleInRad;\n return true;\n } else {\n return false;\n }\n },\n};\n\n/**\n * @internal\n * Move rotate handle. When image is very close to the border of editor, rotate handle may not be visible.\n * Fix it by reduce the distance from image to rotate handle\n */\nexport function updateRotateHandleState(\n editorRect: Rect,\n angleRad: number,\n wrapper: HTMLElement,\n rotateCenter: HTMLElement,\n rotateHandle: HTMLElement,\n isSmallImage: boolean\n) {\n if (isSmallImage) {\n rotateCenter.style.display = 'none';\n rotateHandle.style.display = 'none';\n return;\n } else {\n rotateCenter.style.display = '';\n rotateHandle.style.display = '';\n const rotateHandleRect = rotateHandle.getBoundingClientRect();\n const wrapperRect = wrapper.getBoundingClientRect();\n\n if (rotateHandleRect && wrapperRect) {\n let adjustedDistance = Number.MAX_SAFE_INTEGER;\n const angle = angleRad * DEG_PER_RAD;\n\n if (angle < 45 && angle > -45 && wrapperRect.top - editorRect.top < ROTATE_GAP) {\n const top = rotateHandleRect.top - editorRect.top;\n adjustedDistance = top;\n } else if (\n angle <= -80 &&\n angle >= -100 &&\n wrapperRect.left - editorRect.left < ROTATE_GAP\n ) {\n const left = rotateHandleRect.left - editorRect.left;\n adjustedDistance = left;\n } else if (\n angle >= 80 &&\n angle <= 100 &&\n editorRect.right - wrapperRect.right < ROTATE_GAP\n ) {\n const right = rotateHandleRect.right - editorRect.right;\n adjustedDistance = Math.min(editorRect.right - wrapperRect.right, right);\n } else if (\n (angle <= -160 || angle >= 160) &&\n editorRect.bottom - wrapperRect.bottom < ROTATE_GAP\n ) {\n const bottom = rotateHandleRect.bottom - editorRect.bottom;\n adjustedDistance = Math.min(editorRect.bottom - wrapperRect.bottom, bottom);\n }\n\n const rotateGap = Math.max(Math.min(ROTATE_GAP, adjustedDistance), 0);\n const rotateTop = Math.max(Math.min(ROTATE_SIZE, adjustedDistance - rotateGap), 0);\n rotateCenter.style.top = -rotateGap - RESIZE_HANDLE_MARGIN + 'px';\n rotateCenter.style.height = rotateGap + 'px';\n rotateHandle.style.top = -rotateTop + 'px';\n }\n }\n}\n\n/**\n * @internal\n * Get HTML for rotate elements, including the rotate handle with icon, and a line between the handle and the image\n */\nexport function getRotateHTML({\n borderColor,\n rotateHandleBackColor,\n}: ImageHtmlOptions): CreateElementData[] {\n const handleLeft = ROTATE_SIZE / 2;\n return [\n {\n tag: 'div',\n className: ImageEditElementClass.RotateCenter,\n style: `position:absolute;left:50%;width:1px;background-color:${borderColor};top:${-ROTATE_HANDLE_TOP}px;height:${ROTATE_GAP}px;margin-left:${-ROTATE_WIDTH}px;`,\n children: [\n {\n tag: 'div',\n className: ImageEditElementClass.RotateHandle,\n style: `position:absolute;background-color:${rotateHandleBackColor};border:solid 1px ${borderColor};border-radius:50%;width:${ROTATE_SIZE}px;height:${ROTATE_SIZE}px;left:-${\n handleLeft + ROTATE_WIDTH\n }px;cursor:move;top:${-ROTATE_SIZE}px;`,\n children: [getRotateIconHTML(borderColor)],\n },\n ],\n },\n ];\n}\n\nfunction getRotateIconHTML(borderColor: string): CreateElementData {\n return {\n tag: 'svg',\n namespace: 'http://www.w3.org/2000/svg',\n style: `width:16px;height:16px;margin: ${ROTATE_ICON_MARGIN}px ${ROTATE_ICON_MARGIN}px`,\n children: [\n {\n tag: 'path',\n namespace: 'http://www.w3.org/2000/svg',\n attributes: {\n d: 'M 10.5,10.0 A 3.8,3.8 0 1 1 6.7,6.3',\n transform: 'matrix(1.1 1.1 -1.1 1.1 11.6 -10.8)',\n ['fill-opacity']: '0',\n stroke: borderColor,\n },\n },\n {\n tag: 'path',\n namespace: 'http://www.w3.org/2000/svg',\n attributes: {\n d: 'M12.0 3.648l.884-.884.53 2.298-2.298-.53z',\n stroke: borderColor,\n },\n },\n ],\n };\n}\n","export { default as ImageEdit } from './ImageEdit';\nexport { default as canRegenerateImage } from './api/canRegenerateImage';\nexport { default as resizeByPercentage } from './api/resizeByPercentage';\nexport { default as isResizedTo } from './api/isResizedTo';\nexport { default as resetImage } from './api/resetImage';\nexport { OnShowResizeHandle } from './imageEditors/Resizer';\nexport { DNDDirectionX, DnDDirectionY } from './types/DragAndDropContext';\n","import ImageEdit from '../ImageEdit/ImageEdit';\nimport { ImageEditOperation } from 'roosterjs-editor-types';\n\n/**\n * @deprecated Use ImageEdit plugin instead\n */\nexport default class ImageResize extends ImageEdit {\n /**\n * Create a new instance of ImageResize\n * @param minWidth Minimum width of image when resize in pixel, default value is 10\n * @param minHeight Minimum height of image when resize in pixel, default value is 10\n * @param selectionBorderColor Color of resize border and handles, default value is #DB626C\n * @param forcePreserveRatio Whether always preserve width/height ratio when resize, default value is false\n * @param resizableImageSelector Selector for picking which image is resizable (e.g. for all images not placeholders), note\n * that the tag must be IMG regardless what the selector is\n */\n constructor(\n minWidth: number = 10,\n minHeight: number = 10,\n selectionBorderColor: string = '#DB626C',\n forcePreserveRatio: boolean = false,\n resizableImageSelector: string = 'img'\n ) {\n super({\n minHeight,\n minWidth,\n borderColor: selectionBorderColor,\n preserveRatio: forcePreserveRatio,\n imageSelector: resizableImageSelector,\n });\n }\n\n /**\n * @deprecated\n */\n showResizeHandle(img: HTMLImageElement) {\n this.setEditingImage(img, ImageEditOperation.Resize);\n }\n\n /**\n * @deprecated\n */\n hideResizeHandle(selectImageAfterUnSelect?: boolean) {\n this.setEditingImage(null /*image*/, selectImageAfterUnSelect);\n }\n}\n","export { default as ImageResize } from './ImageResize';\n","import convertPasteContentForSingleImage from './imageConverter/convertPasteContentForSingleImage';\nimport convertPastedContentForLI from './commonConverter/convertPastedContentForLI';\nimport convertPastedContentFromExcel from './excelConverter/convertPastedContentFromExcel';\nimport convertPastedContentFromOfficeOnline from './officeOnlineConverter/convertPastedContentFromOfficeOnline';\nimport convertPastedContentFromPowerPoint from './pptConverter/convertPastedContentFromPowerPoint';\nimport convertPastedContentFromWord from './wordConverter/convertPastedContentFromWord';\nimport handleLineMerge from './lineMerge/handleLineMerge';\nimport sanitizeHtmlColorsFromPastedContent from './sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent';\nimport sanitizeLinks from './sanitizeLinks/sanitizeLinks';\nimport { chainSanitizerCallback, getPasteSource } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions, KnownPasteSourceType } from 'roosterjs-editor-types';\nimport {\n EditorPlugin,\n IEditor,\n PasteType,\n PluginEvent,\n PluginEventType,\n} from 'roosterjs-editor-types';\n\nconst GOOGLE_SHEET_NODE_NAME = 'google-sheets-html-origin';\n\n/**\n * Paste plugin, handles BeforePaste event and reformat some special content, including:\n * 1. Content copied from Word\n * 2. Content copied from Excel\n * 3. Content copied from Word Online or OneNote Online\n */\nexport default class Paste implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Construct a new instance of Paste class\n * @param unknownTagReplacement Replace solution of unknown tags, default behavior is to replace with SPAN\n * @param convertSingleImageBody When enabled, if clipboard HTML contains a single image, we reuse the image without modifying the src attribute.\n * When disabled, pasted image src attribute will use the dataUri from clipboard data -- By Default disabled.\n */\n constructor(\n private unknownTagReplacement: string = 'SPAN',\n private convertSingleImageBody: boolean = false\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Paste';\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 /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == PluginEventType.BeforePaste) {\n const { fragment, sanitizingOption } = event;\n const trustedHTMLHandler = this.editor.getTrustedHTMLHandler();\n\n switch (getPasteSource(event, this.convertSingleImageBody)) {\n case KnownPasteSourceType.WordDesktop:\n // Handle HTML copied from Word\n convertPastedContentFromWord(event);\n break;\n case KnownPasteSourceType.ExcelDesktop:\n case KnownPasteSourceType.ExcelOnline:\n if (\n event.pasteType === PasteType.Normal ||\n event.pasteType === PasteType.MergeFormat\n ) {\n // Handle HTML copied from Excel\n convertPastedContentFromExcel(event, trustedHTMLHandler);\n }\n break;\n case KnownPasteSourceType.PowerPointDesktop:\n convertPastedContentFromPowerPoint(event, trustedHTMLHandler);\n break;\n case KnownPasteSourceType.WacComponents:\n convertPastedContentFromOfficeOnline(fragment, sanitizingOption);\n break;\n case KnownPasteSourceType.GoogleSheets:\n sanitizingOption.additionalTagReplacements[GOOGLE_SHEET_NODE_NAME] = '*';\n break;\n case KnownPasteSourceType.SingleImage:\n convertPasteContentForSingleImage(event, trustedHTMLHandler);\n break;\n case KnownPasteSourceType.Default:\n convertPastedContentForLI(fragment);\n handleLineMerge(fragment);\n break;\n }\n sanitizeLinks(sanitizingOption);\n sanitizeHtmlColorsFromPastedContent(sanitizingOption);\n sanitizeBlockStyles(sanitizingOption);\n\n // Replace unknown tags with SPAN\n sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;\n }\n }\n}\n\nfunction sanitizeBlockStyles(sanitizingOption: Required) {\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'display', (value: string) => {\n return value != 'flex'; // return whether we keep the style\n });\n}\n","import {\n changeElementTag,\n getTagOfNode,\n toArray,\n wrap,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert content copied from Teams to be well-formed\n */\nexport default function convertPastedContentForLI(fragment: DocumentFragment) {\n // Sometimes it is possible that we get LI nodes directly under DIV.\n // In that case we need to convert DIV to UL. It is also possible to be OL, but we don't know it.\n // So always assume it is UL here, and later user can change it.\n if (isPureLiNode(fragment)) {\n wrap(toArray(fragment.childNodes), 'UL');\n } else if (\n safeInstanceOf(fragment.firstChild, 'HTMLElement') &&\n isPureLiNode(fragment.firstChild)\n ) {\n changeElementTag(fragment.firstChild as HTMLElement, 'UL');\n }\n}\n\nfunction isPureLiNode(node: ParentNode & Node) {\n if (node && !node.nextSibling && ['OL', 'UL', 'MENU'].indexOf(getTagOfNode(node)) < 0) {\n let hasLi = false;\n if (\n toArray(node.childNodes).every(childNode => {\n if (safeInstanceOf(childNode, 'Text') && !childNode.nodeValue?.trim()) {\n return true;\n } else if (getTagOfNode(childNode) == 'LI') {\n hasLi = true;\n return true;\n } else {\n return false;\n }\n }) &&\n hasLi\n ) {\n return true;\n }\n }\n return false;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { chainSanitizerCallback, getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\n\nconst LAST_TD_END_REGEX = /<\\/\\s*td\\s*>((?!<\\/\\s*tr\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_END_REGEX = /<\\/\\s*tr\\s*>((?!<\\/\\s*table\\s*>)[\\s\\S])*$/i;\nconst LAST_TR_REGEX = /]*>[^<]*/i;\nconst LAST_TABLE_REGEX = /]*>[^<]*/i;\nconst DEFAULT_BORDER_STYLE = 'solid 1px #d4d4d4';\n\n/**\n * @internal\n * Convert pasted content from Excel, add borders when source doc doesn't have a border\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromExcel(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, sanitizingOption, htmlBefore, clipboardData } = event;\n const html = clipboardData.html ? excelHandler(clipboardData.html, htmlBefore) : undefined;\n\n if (html && clipboardData.html != html) {\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n\n // For Excel Online\n const firstChild = fragment.firstChild;\n if (firstChild && firstChild.childNodes.length > 0 && getTagOfNode(firstChild) == 'DIV') {\n const tableFound = Array.from(firstChild.childNodes).every((child: Node) => {\n // Tables pasted from Excel Online should be of the format: 0 to N META tags and 1 TABLE tag\n return getTagOfNode(child) == 'META'\n ? true\n : getTagOfNode(child) == 'TABLE' && child == firstChild.lastChild;\n });\n\n // Extract Table from Div\n if (tableFound && firstChild.lastChild) {\n event.fragment.replaceChildren(firstChild.lastChild);\n }\n }\n\n chainSanitizerCallback(sanitizingOption.elementCallbacks, 'TD', element => {\n if (element.style.borderStyle == 'none') {\n element.style.border = DEFAULT_BORDER_STYLE;\n }\n return true;\n });\n}\n\n/**\n * @internal Export for test only\n * @param html Source html\n */\nexport function excelHandler(html: string, htmlBefore: string): string {\n if (html.match(LAST_TD_END_REGEX)) {\n const trMatch = htmlBefore.match(LAST_TR_REGEX);\n const tr = trMatch ? trMatch[0] : '';\n html = tr + html + '';\n }\n if (html.match(LAST_TR_END_REGEX)) {\n let tableMatch = htmlBefore.match(LAST_TABLE_REGEX);\n let table = tableMatch ? tableMatch[0] : '';\n html = table + html + '
                            ';\n }\n\n return html;\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content if there are HTML and Image data in the Clipboard\n * @param event The BeforePaste event\n */\nexport default function convertPasteContentForSingleImage(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n const { html, image } = clipboardData;\n\n if (html && image) {\n //If there are Html in the clipboard, and the html body only have one img children, use the HTML\n const doc = new DOMParser().parseFromString(trustedHTMLHandler(html), 'text/html');\n moveChildNodes(fragment, doc?.body);\n }\n}\n","export { default as Paste } from './Paste';\n","import {\n changeElementTag,\n ContentTraverser,\n findClosestElementAncestor,\n getBlockElementAtNode,\n getNextLeafSibling,\n getPreviousLeafSibling,\n getTagOfNode,\n} from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Process pasted content, if there are multiple blocks that are not wrapped by a shared ancestor node,\n * change the tag of first and last node to be SPAN so that it will be merged into current block\n * @param root Root node of content to process\n */\nexport default function handleLineMerge(root: Node) {\n const traverser = ContentTraverser.createBodyTraverser(root);\n const blocks: { start: Node; end: Node }[] = [];\n\n for (\n let block = traverser?.currentBlockElement;\n block;\n block = traverser.getNextBlockElement()\n ) {\n blocks.push({\n start: block.getStartNode(),\n end: block.getEndNode(),\n });\n }\n\n if (blocks.length > 0) {\n const blocksLength = blocks.length - 1;\n processBlock(blocks[0]);\n processBlock(blocks[blocksLength]);\n checkAndAddBr(root, blocks[0], true /*isFirst*/);\n checkAndAddBr(root, blocks[blocksLength], false /*isFirst*/, blocks[0]);\n }\n}\n\nfunction processBlock(block: { start: Node; end: Node }) {\n const { start, end } = block;\n\n if (start == end && getTagOfNode(start) == 'DIV') {\n const node = changeElementTag(start as HTMLElement, 'SPAN') as Node;\n block.start = node;\n block.end = node;\n\n if (node && node.lastChild && getTagOfNode(node.lastChild) == 'BR') {\n node.removeChild(node.lastChild);\n }\n } else if (getTagOfNode(end) == 'BR') {\n const node = end.ownerDocument?.createTextNode('');\n if (node) {\n end.parentNode?.insertBefore(node, end);\n block.end = node;\n end.parentNode?.removeChild(end);\n }\n }\n}\n\nfunction checkAndAddBr(\n root: Node,\n block: { start: Node; end: Node },\n isFirst: boolean,\n firstBlock?: { start: Node; end: Node }\n) {\n const blockElement = getBlockElementAtNode(root, block.start);\n const sibling = isFirst\n ? getNextLeafSibling(root, block.end)\n : getPreviousLeafSibling(root, block.start);\n\n if (!sibling) {\n return;\n }\n\n if (blockElement?.contains(sibling)) {\n const br = block.start.ownerDocument?.createElement('br');\n if (br) {\n const blockToUse = isFirst ? block.end : block.start;\n blockToUse.parentNode?.insertBefore(br, isFirst ? block.end.nextSibling : block.start);\n }\n } else if (\n firstBlock &&\n firstBlock.end == firstBlock.start &&\n getTagOfNode(firstBlock.end) == 'SPAN'\n ) {\n // If the first block and the last block are Siblings, add a BR before so the only two\n // lines that are being pasted are not merged.\n const previousSibling = getPreviousLeafSibling(root, block.start);\n if (\n firstBlock.end.contains(previousSibling) &&\n !findClosestElementAncestor(block.start, root, 'li')\n ) {\n const br = block.start.ownerDocument?.createElement('br');\n if (br) {\n block.start.parentNode?.insertBefore(br, block.start);\n }\n }\n }\n}\n","/**\n * @internal\n * Type that holds all the info of a consecutive list item block.\n */\nexport default interface ListItemBlock {\n /**\n * The first element in block of list item from pasted word online document.\n */\n startElement: Element | null;\n\n /**\n * The last element in block of list item from pasted word online document.\n */\n endElement: Element | null;\n\n /**\n * The position where the processed bulleted list should be inserted.\n */\n insertPositionNode: Node | null;\n\n /**\n * The list of containers that wraps each list item.\n */\n listItemContainers: Element[];\n}\n\n/**\n * @internal\n * Initialize an empty ListItemBlock\n */\nexport function createListItemBlock(listItem: Element | null = null): ListItemBlock {\n return {\n startElement: listItem,\n endElement: listItem,\n insertPositionNode: null,\n listItemContainers: listItem ? [listItem] : [],\n };\n}\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\nimport convertPastedContentFromWordOnline, {\n isWordOnlineWithList,\n} from './convertPastedContentFromWordOnline';\n\nconst WAC_IDENTIFY_SELECTOR =\n 'ul[class^=\"BulletListStyle\"]>.OutlineElement,ol[class^=\"NumberListStyle\"]>.OutlineElement,span.WACImageContainer';\nconst TABLE_TEMP_ELEMENTS_QUERY = [\n 'TableInsertRowGapBlank',\n 'TableColumnResizeHandle',\n 'TableCellTopBorderHandle',\n 'TableCellLeftBorderHandle',\n 'TableHoverColumnHandle',\n 'TableHoverRowHandle',\n]\n .map(className => `.${className}`)\n .join(',');\n/**\n * @internal\n * Convert pasted content from Office Online\n * Once it is known that the document is from WAC\n * We need to remove the display property and margin from all the list item\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromOfficeOnline(\n fragment: DocumentFragment,\n sanitizingOption: Required\n) {\n fragment.querySelectorAll(WAC_IDENTIFY_SELECTOR).forEach((el: Element) => {\n const element = el as HTMLElement;\n element.style.removeProperty('display');\n element.style.removeProperty('margin');\n });\n // call conversion function if the pasted content is from word online and\n // has list element in the pasted content.\n if (isWordOnlineWithList(fragment)) {\n convertPastedContentFromWordOnline(fragment);\n }\n\n // Remove \"border:none\" for image to fix image resize behavior\n // We found a problem that when paste an image with \"border:none\" then the resize border will be\n // displayed incorrectly when resize it. So we need to drop this style\n chainSanitizerCallback(\n sanitizingOption.cssStyleCallbacks,\n 'border',\n (value, element) => element.tagName != 'IMG' || value != 'none'\n );\n\n fragment\n .querySelectorAll(TABLE_TEMP_ELEMENTS_QUERY)\n .forEach(node => node.parentElement?.removeChild(node));\n}\n","import ListItemBlock, { createListItemBlock } from './ListItemBlock';\n\nimport {\n splitParentNode,\n getNextLeafSibling,\n getFirstLeafNode,\n getTagOfNode,\n collapseNodes,\n unwrap,\n toArray,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst WORD_ONLINE_IDENTIFYING_SELECTOR =\n 'div.ListContainerWrapper>ul[class^=\"BulletListStyle\"],div.ListContainerWrapper>ol[class^=\"NumberListStyle\"],span.WACImageContainer > img';\nconst LIST_CONTAINER_ELEMENT_CLASS_NAME = 'ListContainerWrapper';\nconst IMAGE_CONTAINER_ELEMENT_CLASS_NAME = 'WACImageContainer';\n\n//When the list style is a symbol and the value is not in the clipboard, WordOnline\nconst VALID_LIST_STYLE_CHAR_CODES = [\n '111', //'o'\n '9643', //'▫'\n '9830', //'♦'\n];\n\n/**\n * @internal\n */\nexport function isWordOnlineWithList(fragment: DocumentFragment): boolean {\n return !!(fragment && fragment.querySelector(WORD_ONLINE_IDENTIFYING_SELECTOR));\n}\n\n// Word Online pasted content DOM structure as of July 12th 2019\n//\n// \n//
                            ----------> this layer may exist depend on the content user paste\n//
                            ----------> text content\n//

                            \n//
                            \n//
                            ----------> list items: for unordered list, all the items on the same level is under the same wrapper\n//
                              list items in the same list can be divided into different ListItemWrapper\n//
                            • list items in the same list can also be divided into different Outline Group;\n//
                            • \n//
                            \n//
                            \n//
                            \n//
                            \n//
                            ----------> list items: for ordered list, each items has it's own wrapper\n//
                              \n//
                            1. \n//
                            \n//
                            \n//
                            \n//
                              \n//
                            1. \n//
                            \n//
                            \n//
                            \n// \n//\n//\n\n/**\n * @internal\n * Convert text copied from word online into text that's workable with rooster editor\n * @param fragment Document fragment that is being pasted into editor.\n */\nexport default function convertPastedContentFromWordOnline(fragment: DocumentFragment) {\n sanitizeListItemContainer(fragment);\n const listItemBlocks: ListItemBlock[] = getListItemBlocks(fragment);\n\n listItemBlocks.forEach(itemBlock => {\n // There are cases where consecutive List Elements are separated into different nodes:\n //
                            \n //
                            \n //
                              \n //
                              \n //
                              \n //
                                \n //
                                \n //
                                \n //
                                \n //
                                \n //
                                  \n //
                                  \n //
                                  \n // in the above case we want to collapse the two root level div into one and unwrap the list item nodes.\n // after the following flattening the list will become following:\n //\n //
                                  \n //
                                    \n //
                                    \n //
                                    \n //
                                      \n //
                                      \n //
                                      \n //
                                        \n //
                                        \n // Then we are start processing.\n flattenListBlock(fragment, itemBlock);\n\n // Find the node to insertBefore, which is next sibling node of the end of a listItemBlock.\n itemBlock.insertPositionNode = itemBlock.endElement?.nextSibling ?? null;\n\n let convertedListElement: Element | undefined = undefined;\n const doc = fragment.ownerDocument;\n\n itemBlock.listItemContainers.forEach(listItemContainer => {\n let listType: 'OL' | 'UL' | null = getContainerListType(listItemContainer); // list type that is contained by iterator.\n if (listType) {\n // Initialize processed element with proper listType if this is the first element\n if (!convertedListElement) {\n convertedListElement = createNewList(listItemContainer, doc, listType);\n }\n\n // Get all list items(
                                      1. ) in the current iterator element.\n const currentListItems = toArray(listItemContainer.querySelectorAll('li'));\n currentListItems.forEach(item => {\n // If item is in root level and the type of list changes then\n // insert the current list into body and then reinitialize the convertedListElement\n // Word Online is using data-aria-level to determine the the depth of the list item.\n const itemLevel = parseInt(item.getAttribute('data-aria-level') ?? '');\n // In first level list, there are cases where a consecutive list item DIV may have different list type\n // When that happens we need to insert the processed elements into the document, then change the list type\n // and keep the processing going.\n if (\n convertedListElement &&\n getTagOfNode(convertedListElement) != listType &&\n itemLevel == 1 &&\n listType\n ) {\n insertConvertedListToDoc(convertedListElement, fragment, itemBlock);\n convertedListElement = createNewList(listItemContainer, doc, listType);\n }\n if (convertedListElement && listType) {\n insertListItem(convertedListElement, item, listType, doc);\n }\n });\n }\n });\n if (convertedListElement) {\n insertConvertedListToDoc(convertedListElement, fragment, itemBlock);\n }\n\n // Once we finish the process the list items and put them into a list.\n // After inserting the processed element,\n // we need to remove all the non processed node from the parent node.\n const parentContainer = itemBlock.startElement?.parentNode;\n if (parentContainer) {\n itemBlock.listItemContainers.forEach(listItemContainer => {\n parentContainer.removeChild(listItemContainer);\n });\n }\n });\n\n const imageNodes = getImageNodes(fragment);\n imageNodes.forEach(node => {\n // Structure when pasting Word Wac Image as of 10/22/2021\n // \n // \n // \n // \n // \n //\n // Since the second span inside of WACImageContainer have style display block it displays an additional space at the bottom of the image.\n // Removing the nodes that are not img will resolve the additional space\n if (safeInstanceOf(node, 'HTMLSpanElement')) {\n node.childNodes.forEach(childNode => {\n if (getTagOfNode(childNode) != 'IMG') {\n childNode.parentElement?.removeChild(childNode);\n }\n });\n }\n });\n}\n\nfunction createNewList(listItemContainer: Element, doc: Document, tag: 'OL' | 'UL') {\n const newList = doc.createElement(tag);\n const startAttribute = listItemContainer.firstElementChild?.getAttribute('start');\n if (startAttribute) {\n newList.setAttribute('start', startAttribute);\n }\n return newList;\n}\n\n/**\n * The node processing is based on the premise of only ol/ul is in ListContainerWrapper class\n * However the html might be malformed, this function is to split all the other elements out of ListContainerWrapper\n * @param fragment pasted document that contains all the list element.\n */\nfunction sanitizeListItemContainer(fragment: DocumentFragment) {\n const listItemContainerListEl = toArray(\n fragment.querySelectorAll(WORD_ONLINE_IDENTIFYING_SELECTOR)\n );\n listItemContainerListEl.forEach(el => {\n const replaceRegex = new RegExp(`\\\\b${LIST_CONTAINER_ELEMENT_CLASS_NAME}\\\\b`, 'g');\n if (el.previousSibling) {\n const prevParent = splitParentNode(el, true) as HTMLElement;\n prevParent.className = prevParent.className.replace(replaceRegex, '');\n }\n if (el.nextSibling) {\n const nextParent = splitParentNode(el, false) as HTMLElement;\n nextParent.className = nextParent.className.replace(replaceRegex, '');\n }\n });\n}\n\n/**\n * Take all the list items in the document, and group the consecutive list times in a list block;\n * @param fragment pasted document that contains all the list element.\n */\nfunction getListItemBlocks(fragment: DocumentFragment): ListItemBlock[] {\n const listElements = fragment.querySelectorAll('.' + LIST_CONTAINER_ELEMENT_CLASS_NAME);\n const result: ListItemBlock[] = [];\n let curListItemBlock: ListItemBlock | null = null;\n for (let i = 0; i < listElements.length; i++) {\n let curItem = listElements[i];\n if (!curListItemBlock) {\n curListItemBlock = createListItemBlock(curItem);\n } else {\n const { listItemContainers } = curListItemBlock;\n const lastItemInCurBlock = listItemContainers[listItemContainers.length - 1];\n if (\n curItem == lastItemInCurBlock.nextSibling ||\n (lastItemInCurBlock.parentNode &&\n getFirstLeafNode(curItem) ==\n getNextLeafSibling(lastItemInCurBlock.parentNode, lastItemInCurBlock))\n ) {\n listItemContainers.push(curItem);\n curListItemBlock.endElement = curItem;\n } else {\n curListItemBlock.endElement = lastItemInCurBlock;\n result.push(curListItemBlock);\n curListItemBlock = createListItemBlock(curItem);\n }\n }\n }\n\n if (curListItemBlock && curListItemBlock.listItemContainers.length > 0) {\n result.push(curListItemBlock);\n }\n\n return result;\n}\n\n/**\n * Flatten the list items, so that all the consecutive list items are under the same parent.\n * @param fragment Root element of that contains the element.\n * @param listItemBlock The list item block needed to be flattened.\n */\nfunction flattenListBlock(fragment: DocumentFragment, listItemBlock: ListItemBlock) {\n if (listItemBlock.startElement && listItemBlock.endElement) {\n const collapsedListItemSections = collapseNodes(\n fragment,\n listItemBlock.startElement,\n listItemBlock.endElement,\n true\n );\n collapsedListItemSections.forEach(section => {\n if (getTagOfNode(section.firstChild) == 'DIV') {\n unwrap(section);\n }\n });\n }\n}\n\n/**\n * Get the list type that the container contains. If there is no list in the container\n * return null;\n * @param listItemContainer Container that contains a list\n */\nfunction getContainerListType(listItemContainer: Element): 'OL' | 'UL' | null {\n const tag = getTagOfNode(listItemContainer.firstChild);\n return tag == 'UL' || tag == 'OL' ? tag : null;\n}\n\n/**\n * Insert list item into the correct position of a list\n * @param listRootElement Root element of the list that is accepting a coming element.\n * @param itemToInsert List item that needed to be inserted.\n * @param listType Type of list(ul/ol)\n */\nfunction insertListItem(\n listRootElement: Element,\n itemToInsert: HTMLElement,\n listType: 'UL' | 'OL',\n doc: HTMLDocument\n): void {\n if (!listType) {\n return;\n }\n // Get item level from 'data-aria-level' attribute\n let itemLevel = parseInt(itemToInsert.getAttribute('data-aria-level') ?? '');\n\n // Try to reuse the List Marker\n let style = itemToInsert.getAttribute('data-leveltext');\n if (\n listType == 'UL' &&\n style &&\n VALID_LIST_STYLE_CHAR_CODES.indexOf(style.charCodeAt(0).toString()) > -1\n ) {\n itemToInsert.style.listStyleType = `\"${style} \"`;\n }\n\n let curListLevel = listRootElement; // Level iterator to find the correct place for the current element.\n // if the itemLevel is 1 it means the level iterator is at the correct place.\n while (itemLevel > 1) {\n if (!curListLevel.firstChild) {\n // If the current level is empty, create empty list within the current level\n // then move the level iterator into the next level.\n curListLevel.appendChild(doc.createElement(listType));\n if (curListLevel.firstElementChild) {\n curListLevel = curListLevel.firstElementChild;\n }\n } else {\n // If the current level is not empty, the last item in the needs to be a UL or OL\n // and the level iterator should move to the UL/OL at the last position.\n let lastChild = curListLevel.lastElementChild;\n let lastChildTag = getTagOfNode(lastChild);\n if (lastChild && (lastChildTag == 'UL' || lastChildTag == 'OL')) {\n // If the last child is a list(UL/OL), then move the level iterator to last child.\n curListLevel = lastChild;\n } else {\n // If the last child is not a list, then append a new list to the level\n // and move the level iterator to the new level.\n curListLevel.appendChild(doc.createElement(listType));\n if (curListLevel.lastElementChild) {\n curListLevel = curListLevel.lastElementChild;\n }\n }\n }\n itemLevel--;\n }\n\n // Once the level iterator is at the right place, then append the list item in the level.\n curListLevel.appendChild(itemToInsert);\n}\n\n/**\n * Insert the converted list item into the correct place.\n * @param convertedListElement List element that is converted from list item block\n * @param fragment Root element of that contains the converted listItemBlock\n * @param listItemBlock List item block that was converted.\n */\nfunction insertConvertedListToDoc(\n convertedListElement: Element,\n fragment: DocumentFragment,\n listItemBlock: ListItemBlock\n) {\n if (!convertedListElement) {\n return;\n }\n\n const { insertPositionNode } = listItemBlock;\n if (insertPositionNode) {\n const parentNode = insertPositionNode.parentNode;\n if (parentNode) {\n parentNode.insertBefore(convertedListElement, insertPositionNode);\n }\n } else {\n const parentNode = listItemBlock.startElement?.parentNode;\n if (parentNode) {\n parentNode.appendChild(convertedListElement);\n } else {\n fragment.appendChild(convertedListElement);\n }\n }\n}\n\nfunction getImageNodes(fragment: DocumentFragment) {\n return fragment.querySelectorAll('.' + IMAGE_CONTAINER_ELEMENT_CLASS_NAME);\n}\n","import { BeforePasteEvent, TrustedHTMLHandler } from 'roosterjs-editor-types';\nimport { moveChildNodes } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Convert pasted content from PowerPoint\n * @param event The BeforePaste event\n */\nexport default function convertPastedContentFromPowerPoint(\n event: BeforePasteEvent,\n trustedHTMLHandler: TrustedHTMLHandler\n) {\n const { fragment, clipboardData } = event;\n\n if (clipboardData.html && !clipboardData.text && clipboardData.image) {\n // It is possible that PowerPoint copied both image and HTML but not plain text.\n // We always prefer HTML if any.\n const doc = new DOMParser().parseFromString(\n trustedHTMLHandler(clipboardData.html),\n 'text/html'\n );\n\n moveChildNodes(fragment, doc?.body);\n }\n}\n","/**\n * @internal\n * List of deprecated colors that should be removed\n */\n\nexport const DeprecatedColorList: string[] = [\n 'activeborder',\n 'activecaption',\n 'appworkspace',\n 'background',\n 'buttonhighlight',\n 'buttonshadow',\n 'captiontext',\n 'inactiveborder',\n 'inactivecaption',\n 'inactivecaptiontext',\n 'infobackground',\n 'infotext',\n 'menu',\n 'menutext',\n 'scrollbar',\n 'threeddarkshadow',\n 'threedface',\n 'threedhighlight',\n 'threedlightshadow',\n 'threedfhadow',\n 'window',\n 'windowframe',\n 'windowtext',\n];\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { DeprecatedColorList } from './deprecatedColorList';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Remove the deprecated colors from pasted content\n * @param sanitizingOption the sanitizingOption of BeforePasteEvent\n * */\nexport default function sanitizeHtmlColorsFromPastedContent(\n sanitizingOption: Required\n) {\n ['color', 'background-color'].forEach(property => {\n chainSanitizerCallback(\n sanitizingOption.cssStyleCallbacks,\n property,\n (value: string) => DeprecatedColorList.indexOf(value) < 0\n );\n });\n}\n","import { chainSanitizerCallback } from 'roosterjs-editor-dom';\nimport { HtmlSanitizerOptions } from 'roosterjs-editor-types';\n\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];\n\n/**\n * @internal\n * Clear local paths and remove link\n * @param sanitizingOption the sanitizingOption of BeforePasteEvent\n * */\nexport default function sanitizeLinks(sanitizingOption: Required) {\n chainSanitizerCallback(\n sanitizingOption.attributeCallbacks,\n 'href',\n (value: string, element: HTMLElement) => validateLink(value, element)\n );\n}\n\nfunction validateLink(link: string, htmlElement: HTMLElement) {\n let url;\n try {\n url = new URL(link);\n } catch {\n url = undefined;\n }\n\n /* whitelist supported protocols */\n if (url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) > -1) {\n return link;\n }\n htmlElement.removeAttribute('href');\n return '';\n}\n","import ListMetadata from './ListMetadata';\n\n/**\n * @internal\n * Holds the ids for the lists already seen for a specified level\n */\nexport default interface LevelLists {\n /**\n * The metadata for the lists seen at this level\n * key: word list id, value: list metadata\n */\n listsMetadata: { [key: string]: ListMetadata };\n\n /** Unique id of the list currently at this level */\n currentUniqueListId: number;\n}\n\n/**\n * @internal\n * create an empty LevelLists\n */\nexport function createLevelLists(): LevelLists {\n return {\n listsMetadata: {},\n currentUniqueListId: -1,\n };\n}\n","import LevelLists, { createLevelLists } from './LevelLists';\nimport ListItemMetadata from './ListItemMetadata';\nimport ListMetadata from './ListMetadata';\n\n/**\n * @internal\n * Contains the state of the WordConverter when called back after yielding\n */\nexport default interface WordConverterArguments {\n /** The list of element nodes being processed */\n nodes: NodeListOf;\n\n /** The index of the element currently being processed */\n currentIndex: number;\n\n /**\n * Holds the metadata for all the lists we have found\n * key: unique list id, value: list metadata\n */\n lists: { [key: string]: ListMetadata };\n\n /**\n * Stores the list item meta data of the items we\n * have found that need to be converted\n */\n listItems: ListItemMetadata[];\n\n /**\n * This array holds the list id of the lists we are processing\n * that are next to each other.. This list will be used to determine\n * if list items are next to each other or if they are separated...\n * Separated items are ignored from the conversion\n */\n\n currentListIdsByLevels: LevelLists[];\n\n /** Remembers the item that was last processed */\n lastProcessedItem: HTMLElement | null;\n}\n\n/**\n * @internal\n * create an empty WordConverterArguments\n */\nexport function createWordConverterArguments(\n nodes: NodeListOf\n): WordConverterArguments {\n return {\n nodes: nodes,\n currentIndex: 0,\n lists: {},\n listItems: [],\n currentListIdsByLevels: [createLevelLists()],\n lastProcessedItem: null,\n };\n}\n","import { NodeType } from 'roosterjs-editor-types';\n\n/** NodeId attribute */\nconst NODE_ID_ATTRIBUTE_NAME = 'NodeId';\n\n/**\n * @internal\n * Custom data for dom elements\n */\nexport default interface WordCustomData {\n /** The dict storing custom data, key is element Id, value is dictionary */\n dict: { [key: string]: { [key: string]: number } };\n\n /** Next node Id to use */\n nextNodeId: number;\n}\n\n/**\n * @internal\n * Create an empty WordCustomData\n */\nexport function createCustomData(): WordCustomData {\n return {\n dict: {},\n nextNodeId: 1,\n };\n}\n\n/**\n * @internal\n * Sets the specified object data\n */\nexport function setObject(wordCustomData: WordCustomData, element: Node, key: string, value: any) {\n // Get the id for the element\n if (element.nodeType == NodeType.Element) {\n let id = getAndSetNodeId(wordCustomData, element as HTMLElement);\n if (id != '') {\n // Get the values for the element\n if (!wordCustomData.dict[id]) {\n // First time dictionary creation\n wordCustomData.dict[id] = {};\n }\n wordCustomData.dict[id][key] = value;\n }\n }\n}\n\n/**\n * @internal\n * Reads the specified object data\n */\nexport function getObject(wordCustomData: WordCustomData, element: Node, key: string): any {\n if (element.nodeType == NodeType.Element) {\n let id = getAndSetNodeId(wordCustomData, element as HTMLElement);\n if (id != '') {\n return wordCustomData.dict[id] && wordCustomData.dict[id][key];\n }\n }\n\n return null;\n}\n\n/**\n * Get the unique id for the specified node...\n */\nfunction getAndSetNodeId(wordCustomData: WordCustomData, element: HTMLElement): string {\n let id = element.getAttribute(NODE_ID_ATTRIBUTE_NAME);\n if (!id) {\n id = wordCustomData.nextNodeId.toString();\n wordCustomData.nextNodeId++;\n element.setAttribute(NODE_ID_ATTRIBUTE_NAME, id);\n }\n return id;\n}\n","import { CssStyleCallbackMap, ElementCallbackMap } from 'roosterjs-editor-types';\nimport {\n chainSanitizerCallback,\n getStyles,\n moveChildNodes,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst MSO_COMMENT_PARENT = 'mso-comment-parent';\nconst MSO_COMMENT_REFERENCE = 'mso-comment-reference';\nconst MSO_COMMENT_DATE = 'mso-comment-date';\nconst MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;\nconst MSO_SPECIAL_CHARACTER = 'mso-special-character';\nconst MSO_SPECIAL_CHARACTER_COMMENT = 'comment';\nconst MSO_COMMENT_CONTINUATION = 'mso-comment-continuation';\nconst MSO_ELEMENT = 'mso-element';\nconst MSO_ELEMENT_COMMENT_LIST = 'comment-list';\nconst MSO_COMMENT_DONE = 'mso-comment-done';\n\n/**\n * @internal\n * Removes comments when pasting Word content.\n */\nexport default function commentsRemoval(\n elementCallbacks: ElementCallbackMap,\n styleCallbacks: CssStyleCallbackMap\n) {\n // 1st Step, Remove SPAN elements added after each comment.\n // Word adds multiple elements for comments as SPAN elements.\n // In this step we remove these elements:\n // Structure as of 4/18/2022\n // 1.  \n // 2. \n // \n // \n // [RS2]\n //  \n // \n // \n // \n chainSanitizerCallback(elementCallbacks, 'SPAN', element => {\n const styles = getStyles(element);\n if (styles[MSO_SPECIAL_CHARACTER] == MSO_SPECIAL_CHARACTER_COMMENT) {\n element.parentElement?.removeChild(element);\n }\n return true;\n });\n\n // 2nd Step, Modify Anchor elements.\n // 1. When the element was selected to add a comment in Word, the selection is converted to\n // an anchor element, so we change the tag to span.\n // 2. Word also adds some Anchor elements with the following structure:\n // Structure as of 4/18/2022\n // [SS3]\n // In this step we remove this Anchor elements.\n chainSanitizerCallback(elementCallbacks, 'A', element => {\n if (\n safeInstanceOf(element, 'HTMLAnchorElement') &&\n MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)\n ) {\n element.parentElement?.removeChild(element);\n }\n return true;\n });\n\n // 3rd Step, remove List of comments.\n // When the document have a long thread of comments, these comments are appended\n // at the end of the copied fragment, we also need to remove it.\n // Structure as of 4/18/2022\n //\n //
                                        \n //
                                        \n //
                                        ...
                                        \n //
                                        ...
                                        \n //
                                        ...
                                        \n //
                                        \n //
                                      2. \n chainSanitizerCallback(elementCallbacks, 'DIV', element => {\n const styles = getStyles(element);\n if (styles[MSO_ELEMENT] == MSO_ELEMENT_COMMENT_LIST) {\n moveChildNodes(element);\n }\n return true;\n });\n\n /**\n * Remove styles related to Office Comments that can cause unwanted behaviors\n * depending on the user client\n */\n [\n MSO_COMMENT_REFERENCE,\n MSO_COMMENT_DATE,\n MSO_COMMENT_PARENT,\n MSO_COMMENT_CONTINUATION,\n MSO_COMMENT_DONE,\n ].forEach(style => chainSanitizerCallback(styleCallbacks, style, () => false));\n}\n","import commentsRemoval from './commentsRemoval';\nimport { BeforePasteEvent } from 'roosterjs-editor-types';\nimport { chainSanitizerCallback, moveChildNodes } from 'roosterjs-editor-dom';\nimport { createWordConverter } from './wordConverter';\nimport { createWordConverterArguments } from './WordConverterArguments';\nimport { processNodeConvert, processNodesDiscovery } from './converterUtils';\n\nconst PERCENTAGE_REGEX = /%/;\nconst DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 120;\nconst LIST_ELEMENTS_SELECTOR = 'p,h1,h2,h3,h4,h5,h6';\n\n/**\n * @internal\n * Converts all the Word generated list items in the specified node into standard HTML UL and OL tags\n */\nexport default function convertPastedContentFromWord(event: BeforePasteEvent) {\n const { sanitizingOption, fragment } = event;\n\n // Preserve when its innerHTML is \" \" to avoid dropping an empty line\n chainSanitizerCallback(sanitizingOption.elementCallbacks, 'O:P', element => {\n moveChildNodes(element);\n element.appendChild(element.ownerDocument.createTextNode('\\u00A0')); //  \n return true;\n });\n\n let wordConverter = createWordConverter();\n\n // First find all the nodes that we need to check for list item information\n // This call will return all the p and heading elements under the root node.. These are the elements that\n // Word uses a list items, so we'll only process them and avoid walking the whole tree.\n let elements = fragment.querySelectorAll(LIST_ELEMENTS_SELECTOR) as NodeListOf;\n if (elements.length > 0) {\n wordConverter.wordConverterArgs = createWordConverterArguments(elements);\n if (processNodesDiscovery(wordConverter)) {\n processNodeConvert(wordConverter);\n }\n }\n\n // If the List style contains marginBottom = 0in, the space after the list is going to be too narrow.\n // Remove this style so the list displays correctly.\n ['OL', 'UL'].forEach(tag => {\n chainSanitizerCallback(sanitizingOption.elementCallbacks, tag, element => {\n if (element.style.marginBottom == '0in') {\n element.style.marginBottom = '';\n }\n\n return true;\n });\n });\n\n //If the line height is less than the browser default line height, line between the text is going to be too narrow\n chainSanitizerCallback(sanitizingOption.cssStyleCallbacks, 'line-height', (value: string) => {\n let parsedLineHeight: number;\n if (\n PERCENTAGE_REGEX.test(value) &&\n !isNaN((parsedLineHeight = parseInt(value))) &&\n parsedLineHeight < DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE\n ) {\n return false;\n }\n return true;\n });\n\n commentsRemoval(sanitizingOption.elementCallbacks, sanitizingOption.cssStyleCallbacks);\n}\n","import ListItemMetadata from './ListItemMetadata';\nimport ListMetadata from './ListMetadata';\nimport WordConverter from './wordConverter';\nimport WordConverterArguments from './WordConverterArguments';\nimport { createLevelLists } from './LevelLists';\nimport { getObject, setObject } from './WordCustomData';\nimport { getStyles, getTagOfNode, moveChildNodes } from 'roosterjs-editor-dom';\nimport { NodeType } from 'roosterjs-editor-types';\n\n/** Word list metadata style name */\nconst LOOKUP_DEPTH = 5;\n\n/** Name for the word list id property in the custom data */\nconst UNIQUE_LIST_ID_CUSTOM_DATA = 'UniqueListId';\n\n/** Word list metadata style name */\nconst MSO_LIST_STYLE_NAME = 'mso-list';\n\n/** Regular expression to match line breaks */\nconst LINE_BREAKS = /[\\n|\\r]/gi;\n\n/**\n * @internal\n * Handles the pass 1: Discovery\n * During discovery, we'll parse the metadata out of the elements and store it in the list items dictionary.\n * We'll detect cases where the list items for a particular ordered list are not next to each other. Word does these\n * for numbered headers, and we don't want to convert those, because the numbering would be completely wrong.\n */\nexport function processNodesDiscovery(wordConverter: WordConverter): boolean {\n let args = wordConverter.wordConverterArgs;\n if (!args) {\n return false;\n }\n while (args.currentIndex < args.nodes.length) {\n let node = args.nodes.item(args.currentIndex);\n\n // Try to get the list metadata for the specified node\n let itemMetadata = getListItemMetadata(node);\n if (itemMetadata) {\n let levelInfo =\n args.currentListIdsByLevels[itemMetadata.level - 1] || createLevelLists();\n args.currentListIdsByLevels[itemMetadata.level - 1] = levelInfo;\n\n // We need to drop some list information if this is not an item next to another\n if (args.lastProcessedItem && getRealPreviousSibling(node) != args.lastProcessedItem) {\n // This list item is not next to the previous one. This means that there is some content in between them\n // so we need to reset our list of list ids per level\n resetCurrentLists(args);\n }\n\n // Get the list metadata for the list that will hold this item\n let listMetadata = levelInfo.listsMetadata[itemMetadata.wordListId];\n if (!listMetadata) {\n // Get the first item fake bullet.. This will be used later to check what is the right type of list\n let firstFakeBullet = getFakeBulletText(node, LOOKUP_DEPTH);\n\n // This is a the first item of a list.. We'll create the list metadata using the information\n // we already have from this first item\n listMetadata = {\n numberOfItems: 0,\n uniqueListId: wordConverter.nextUniqueId++,\n firstFakeBullet: firstFakeBullet,\n\n // If the bullet we got is empty or not found, we ignore the list out.. this means\n // that this is not an item we need to convert of that the format doesn't match what\n // we are expecting\n ignore: !firstFakeBullet || firstFakeBullet.length == 0,\n\n // We'll use the first fake bullet to try to figure out which type of list we create. If this list has a second\n // item, we'll perform a better comparison, but for one item lists, this will be check that will determine the list type\n tagName: getFakeBulletTagName(firstFakeBullet),\n };\n levelInfo.listsMetadata[itemMetadata.wordListId] = listMetadata;\n args.lists[listMetadata.uniqueListId.toString()] = listMetadata;\n } else if (!listMetadata.ignore && listMetadata.numberOfItems == 1) {\n // This is the second item we've seen for this list.. we'll compare the 2 fake bullet\n // items we have an decide if we create ordered or unordered lists based on this.\n // This is the best way we can do this since we cannot read the metadata that Word\n // puts in the head of the HTML...\n let secondFakeBullet = getFakeBulletText(node, LOOKUP_DEPTH);\n listMetadata.tagName =\n listMetadata.firstFakeBullet == secondFakeBullet ? 'UL' : 'OL';\n }\n\n // Set the unique id to the list\n itemMetadata.uniqueListId = listMetadata.uniqueListId;\n\n // Check if we need to ignore this list... we'll either know already that we need to ignore\n // it, or we'll know it because the previous list items are not next to this one\n if (\n listMetadata.ignore ||\n (listMetadata.tagName == 'OL' &&\n listMetadata.numberOfItems > 0 &&\n levelInfo.currentUniqueListId != itemMetadata.uniqueListId)\n ) {\n // We need to ignore this item... and we also need to forget about the lists that\n // are not at the root level\n listMetadata.ignore = true;\n args.currentListIdsByLevels[0].currentUniqueListId = -1;\n args.currentListIdsByLevels = args.currentListIdsByLevels.slice(0, 1);\n } else {\n // This is an item we don't need to ignore... If added lists deep under this one before\n // we'll drop their ids from the list of ids per level.. this is because this list item\n // breaks the deeper lists.\n if (args.currentListIdsByLevels.length > itemMetadata.level) {\n args.currentListIdsByLevels = args.currentListIdsByLevels.slice(\n 0,\n itemMetadata.level\n );\n }\n\n levelInfo.currentUniqueListId = itemMetadata.uniqueListId;\n\n // Add the list item into the list of items to be processed\n args.listItems.push(itemMetadata);\n listMetadata.numberOfItems++;\n }\n\n args.lastProcessedItem = node;\n } else {\n // Here, we know that this is not a list item, but we'll want to check if it is one \"no bullet\" list items...\n // these can be created by creating a bullet and hitting delete on it it... The content will continue to be indented, but there will\n // be no bullet and the list will continue correctly after that. Visually, it looks like the previous item has multiple lines, but\n // the HTML generated has multiple paragraphs with the same class. We'll merge these when we find them, so the logic doesn't skips\n // the list conversion thinking that the list items are not together...\n let last = args.lastProcessedItem;\n if (\n last &&\n getRealPreviousSibling(node) == last &&\n node.tagName == last.tagName &&\n node.className == last.className\n ) {\n // Add 2 line breaks and move all the nodes to the last item\n last.appendChild(last.ownerDocument.createElement('br'));\n last.appendChild(last.ownerDocument.createElement('br'));\n moveChildNodes(last, node, true /*keepExistingChildren*/);\n\n // Remove the item that we don't need anymore\n node.parentNode?.removeChild(node);\n }\n }\n\n // Move to the next element are return true if more elements need to be processed\n args.currentIndex++;\n }\n return args.listItems.length > 0;\n}\n\n/**\n * @internal\n * Handles the pass 2: Conversion\n * During conversion, we'll go over the elements that belong to a list that we've marked as a list to convert, and we'll perform the\n * conversion needed\n */\nexport function processNodeConvert(wordConverter: WordConverter): boolean {\n let args = wordConverter.wordConverterArgs;\n if (args) {\n args.currentIndex = 0;\n\n while (args.currentIndex < args.listItems.length) {\n let metadata = args.listItems[args.currentIndex];\n let node = metadata.originalNode;\n let listMetadata = args.lists[metadata.uniqueListId.toString()];\n if (!listMetadata.ignore) {\n // We have a list item that we need to convert, get or create the list\n // that hold this item out\n let list = getOrCreateListForNode(wordConverter, node, metadata, listMetadata);\n if (list) {\n // Clean the element out.. this call gets rid of the fake bullet and unneeded nodes\n cleanupListIgnore(node, LOOKUP_DEPTH);\n\n // Create a new list item and transfer the children\n let li = node.ownerDocument.createElement('LI');\n if (getTagOfNode(node).startsWith('H')) {\n const clone = node.cloneNode(true /* deep */) as HTMLHeadingElement;\n clone.style.textIndent = '';\n clone.style.marginLeft = '';\n clone.style.marginRight = '';\n li.appendChild(clone);\n } else {\n moveChildNodes(li, node);\n }\n\n // Append the list item into the list\n list.appendChild(li);\n\n // Remove the node we just converted\n node.parentNode?.removeChild(node);\n\n if (listMetadata.tagName == 'UL') {\n wordConverter.numBulletsConverted++;\n } else {\n wordConverter.numNumberedConverted++;\n }\n }\n }\n args.currentIndex++;\n }\n }\n return wordConverter.numBulletsConverted > 0 || wordConverter.numNumberedConverted > 0;\n}\n\n/**\n * Gets or creates the list (UL or OL) that holds this item out based on the\n * items content and the specified metadata\n */\nfunction getOrCreateListForNode(\n wordConverter: WordConverter,\n node: HTMLElement,\n metadata: ListItemMetadata,\n listMetadata: ListMetadata\n): Node {\n // First get the last list next to this node under the specified level. This code\n // path will return the list or will create lists if needed\n let list = recurringGetOrCreateListAtNode(node, metadata.level, listMetadata);\n\n // Here use the unique list ID to detect if we have the right list...\n // it is possible to have 2 different lists next to each other with different formats, so\n // we want to detect this an create separate lists for those cases\n let listId = getObject(wordConverter.wordCustomData, list, UNIQUE_LIST_ID_CUSTOM_DATA);\n\n // If we have a list with and ID, but the ID is different than the ID for this list item, this\n // is a completely new list, so we'll append a new list for that\n if ((listId && listId != metadata.uniqueListId) || (!listId && list.firstChild)) {\n let newList = node.ownerDocument.createElement(listMetadata.tagName);\n list.parentNode?.insertBefore(newList, list.nextSibling);\n list = newList;\n }\n\n // Set the list id into the custom data\n setObject(\n wordConverter.wordCustomData,\n list,\n UNIQUE_LIST_ID_CUSTOM_DATA,\n metadata.uniqueListId\n );\n\n // This call will convert the list if needed to the right type of list required. This can happen\n // on the cases where the first list item for this list is located after a deeper list. for that\n // case, we will have created a UL for it, and we may need to convert it\n return convertListIfNeeded(wordConverter, list, listMetadata);\n}\n\n/**\n * Converts the list between UL and OL if needed, by using the fake bullet and\n * information already stored in the list itself\n */\nfunction convertListIfNeeded(\n wordConverter: WordConverter,\n list: Node,\n listMetadata: ListMetadata\n): Node {\n // Check if we need to convert the list out\n if (listMetadata.tagName != getTagOfNode(list)) {\n // We have the wrong list type.. convert it, set the id again and transfer all the children\n let newList = list.ownerDocument?.createElement(listMetadata.tagName);\n if (newList) {\n setObject(\n wordConverter.wordCustomData,\n newList,\n UNIQUE_LIST_ID_CUSTOM_DATA,\n getObject(wordConverter.wordCustomData, list, UNIQUE_LIST_ID_CUSTOM_DATA)\n );\n moveChildNodes(newList, list);\n\n list.parentNode?.insertBefore(newList, list);\n list.parentNode?.removeChild(list);\n list = newList;\n }\n }\n\n return list;\n}\n\n/**\n * Gets or creates the specified list\n */\nfunction recurringGetOrCreateListAtNode(\n node: HTMLElement,\n level: number,\n listMetadata: ListMetadata | null\n): Node {\n let parent: Node | null = null;\n let possibleList: Node | null = null;\n if (level == 1) {\n // Root case, we'll check if the list is the previous sibling of the node\n possibleList = getRealPreviousSibling(node);\n } else {\n // If we get here, we are looking for level 2 or deeper... get the upper list\n // and check if the last element is a list\n parent = recurringGetOrCreateListAtNode(node, level - 1, null);\n if (parent.lastChild) {\n possibleList = parent.lastChild;\n }\n }\n\n // Check the element that we got and verify that it is a list\n if (possibleList && possibleList.nodeType == NodeType.Element) {\n let tag = getTagOfNode(possibleList);\n if (tag == 'UL' || tag == 'OL') {\n // We have a list.. use it\n return possibleList;\n }\n }\n\n // If we get here, it means we don't have a list and we need to create one\n // this code path will always create new lists as UL lists\n let newList = node.ownerDocument?.createElement(listMetadata ? listMetadata.tagName : 'UL');\n if (level == 1) {\n // For level 1, we'll insert the list before the node\n node.parentNode?.insertBefore(newList, node);\n } else {\n // Any level 2 or above, we insert the list as the last\n // child of the upper level list\n parent?.appendChild(newList);\n }\n\n return newList;\n}\n\n/**\n * Cleans up the node children by removing the children marked as mso-list: Ignore.\n * This nodes hold the fake bullet information that Word puts in and when\n * conversion is happening, we want to get rid of these elements\n */\nfunction cleanupListIgnore(node: Node, levels: number) {\n let nodesToRemove: Node[] = [];\n\n for (let child: Node | null = node.firstChild; child; child = child.nextSibling) {\n if (child) {\n // Clean up the item internally first if we need to based on the number of levels\n if (child && child.nodeType == NodeType.Element && levels > 1) {\n cleanupListIgnore(child, levels - 1);\n }\n\n // Try to convert word comments into ignore elements if we haven't done so for this element\n child = fixWordListComments(child, true /*removeComments*/);\n\n // Check if we can remove this item out\n if (isEmptySpan(child) || isIgnoreNode(child)) {\n nodesToRemove.push(child);\n }\n }\n }\n\n nodesToRemove.forEach(child => node.removeChild(child));\n}\n\n/**\n * Reads the word list meta dada out of the specified node. If the node\n * is not a Word list item, it returns null.\n */\nfunction getListItemMetadata(node: HTMLElement): ListItemMetadata | null {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyleValue(node, MSO_LIST_STYLE_NAME);\n if (listAttribute && listAttribute.length > 0) {\n try {\n // Word mso-list property holds 3 space separated values in the following format: lst1 level1 lfo0\n // Where:\n // (0) List identified for the metadata in the <head> of the document. We cannot read the <head> meta data\n // (1) Level of the list. This also maps to the <head> metadata that we cannot read, but\n // for almost all cases, it maps to the list indentation (or level). We'll use it as the\n // list indentation value\n // (2) Contains a specific list identifier.\n // Example value: \"l0 level1 lfo1\"\n let listProps = listAttribute.split(' ');\n if (listProps.length == 3) {\n return {\n level: parseInt(listProps[1].substr('level'.length)),\n wordListId: listAttribute,\n originalNode: node,\n uniqueListId: 0,\n };\n }\n } catch (e) {}\n }\n }\n return null;\n}\n\nfunction isFakeBullet(fakeBullet: string): boolean {\n return ['o', '·', '§', '-'].indexOf(fakeBullet) >= 0;\n}\n\n/** Given a fake bullet text, returns the type of list that should be used for it */\nfunction getFakeBulletTagName(fakeBullet: string): string {\n return isFakeBullet(fakeBullet) ? 'UL' : 'OL';\n}\n\n/**\n * Finds the fake bullet text out of the specified node and returns it. For images, it will return\n * a bullet string. If not found, it returns null...\n */\nfunction getFakeBulletText(node: Node, levels: number): string {\n // Word uses the following format for their bullets:\n // <p style=\"mso-list:l1 level1 lfo2\">\n // <span style=\"...\">\n // <span style=\"mso-list:Ignore\">1.<span style=\"...\">      </span></span>\n // </span>\n // Content here...\n // </p>\n //\n // Basically, we need to locate the mso-list:Ignore SPAN, which holds either one text or image node. That\n // text or image node will be the fake bullet we are looking for\n let result: string = '';\n let child: Node | null = node.firstChild;\n while (!result && child) {\n // First, check if we need to convert the Word list comments into real elements\n child = fixWordListComments(child, true /*removeComments*/);\n\n // Check if this is the node that holds the fake bullets (mso-list: Ignore)\n if (isIgnoreNode(child)) {\n // Yes... this is the node that holds either the text or image data\n result = child.textContent?.trim() ?? '';\n\n // This is the case for image case\n if (result.length == 0) {\n result = 'o';\n }\n } else if (child.nodeType == NodeType.Element && levels > 1) {\n // If this is an element and we are not in the last level, try to get the fake bullet\n // out of the child\n result = getFakeBulletText(child, levels - 1);\n }\n\n child = child.nextSibling;\n }\n\n return result;\n}\n\n/**\n * If the specified element is a Word List comments, this code verifies and fixes\n * the markup when needed to ensure that Chrome bullet conversions work as expected\n * -----\n * We'll convert <!--[if !supportLists]--> and <!--[endif]--> comments into\n * <span style=\"mso-list:Ignore\"></span>... Chrome has a bug where it drops the\n * styles of the span, but we'll use these comments to recreate them out\n */\nfunction fixWordListComments(child: Node, removeComments: boolean): Node {\n if (child.nodeType == NodeType.Comment) {\n let value = (child as Comment).data;\n if (value && value.trim().toLowerCase() == '[if !supportlists]') {\n // We have a list ignore start, find the end.. We know is not more than\n // 3 nodes away, so we'll optimize our checks\n let nextElement: Node | null = child;\n let endComment: Node | null = null;\n for (let j = 0; j < 4; j++) {\n nextElement = getRealNextSibling(nextElement);\n if (!nextElement) {\n break;\n }\n if (nextElement.nodeType == NodeType.Comment) {\n value = (nextElement as Comment).data;\n if (value && value.trim().toLowerCase() == '[endif]') {\n endComment = nextElement;\n break;\n }\n }\n }\n\n // if we found the end node, wrap everything out\n if (endComment) {\n let newSpan = child.ownerDocument?.createElement('span');\n newSpan?.setAttribute('style', 'mso-list: ignore');\n\n nextElement = getRealNextSibling(child);\n while (nextElement != endComment) {\n nextElement = nextElement?.nextSibling as HTMLElement;\n if (nextElement.previousSibling) {\n newSpan?.appendChild(nextElement.previousSibling);\n }\n }\n\n // Insert the element out and use that one as the current child\n if (newSpan) {\n endComment.parentNode?.insertBefore(newSpan, endComment);\n }\n\n // Remove the comments out if the call specified it out\n if (removeComments) {\n child.parentNode?.removeChild(child);\n endComment.parentNode?.removeChild(endComment);\n }\n\n // Last, make sure we return the new element out instead of the comment\n if (newSpan) {\n child = newSpan;\n }\n }\n }\n }\n\n return child;\n}\n\n/** Finds the real previous sibling, ignoring empty text nodes */\nfunction getRealPreviousSibling(node: Node): Node | null {\n let prevSibling: Node | null = node;\n do {\n prevSibling = prevSibling.previousSibling;\n } while (prevSibling && isEmptyTextNode(prevSibling));\n return prevSibling;\n}\n\n/** Finds the real next sibling, ignoring empty text nodes */\nfunction getRealNextSibling(node: Node): Node | null {\n let nextSibling: Node | null = node;\n do {\n nextSibling = nextSibling.nextSibling;\n } while (nextSibling && isEmptyTextNode(nextSibling));\n\n return nextSibling;\n}\n\n/**\n * Checks if the specified node is marked as a mso-list: Ignore. These\n * nodes need to be ignored when a list item is converted into standard\n * HTML lists\n */\nfunction isIgnoreNode(node: Node): boolean {\n if (node.nodeType == NodeType.Element) {\n let listAttribute = getStyleValue(node as HTMLElement, MSO_LIST_STYLE_NAME);\n if (\n listAttribute &&\n listAttribute.length > 0 &&\n listAttribute.trim().toLowerCase() == 'ignore'\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/** Checks if the specified node is an empty span. */\nfunction isEmptySpan(node: Node): boolean {\n return getTagOfNode(node) == 'SPAN' && !node.firstChild;\n}\n\n/** Reads the specified style value from the node */\nfunction getStyleValue(node: HTMLElement, styleName: string): string | null {\n // Word uses non-standard names for the metadata that puts in the style of the element...\n // Most browsers will not provide the information for those nonstandard values through the node.style\n // property, so the only reliable way to read them is to get the attribute directly and do\n // the required parsing..\n return getStyles(node)[styleName] || null;\n}\n\n/** Checks if the node is an empty text node that can be ignored */\nfunction isEmptyTextNode(node: Node): boolean {\n // No node is empty\n if (!node) {\n return true;\n }\n\n // Empty text node is empty\n if (node.nodeType == NodeType.Text) {\n let value = node.nodeValue;\n value = value?.replace(LINE_BREAKS, '') ?? '';\n return value?.trim().length == 0;\n }\n\n // Span or Font with an empty child node is empty\n let tagName = getTagOfNode(node);\n if (\n node.firstChild &&\n node.firstChild == node.lastChild &&\n (tagName == 'SPAN' || tagName == 'FONT')\n ) {\n return isEmptyTextNode(node.firstChild);\n }\n\n // If not found, then this is not empty\n return false;\n}\n\n/** Resets the list */\nfunction resetCurrentLists(args: WordConverterArguments) {\n for (let i = 0; i < args.currentListIdsByLevels.length; i++) {\n let ll = args.currentListIdsByLevels[i];\n if (ll) {\n ll.currentUniqueListId = -1;\n }\n }\n}\n","import WordConverterArguments from './WordConverterArguments';\nimport WordCustomData, { createCustomData } from './WordCustomData';\n\n/**\n * @internal\n * Processes HTML generated by Word, converting Word Lists into standard HTML UL and OL tags\n */\nexport default interface WordConverter {\n /** Next unique id to be assigned to a list */\n nextUniqueId: number;\n\n /** Number of bullets converted */\n numBulletsConverted: number;\n\n /** Number of numbering converted */\n numNumberedConverted: number;\n\n /** The structure that records the status of the conversion */\n wordConverterArgs: WordConverterArguments | null;\n\n /** Custom data storage for list items */\n wordCustomData: WordCustomData;\n}\n\n/**\n * @internal\n * create an empty WordConverter\n */\nexport function createWordConverter(): WordConverter {\n return {\n nextUniqueId: 1,\n numBulletsConverted: 0,\n numNumberedConverted: 0,\n wordConverterArgs: null,\n wordCustomData: createCustomData(),\n };\n}\n","import { replaceWithNode } from 'roosterjs-editor-api';\nimport {\n Browser,\n createRange,\n isCharacterValue,\n isModifierKey,\n PartialInlineElement,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n EditorPlugin,\n IEditor,\n NodePosition,\n PickerDataProvider,\n PickerPluginOptions,\n PluginDomEvent,\n PluginEvent,\n PluginEventType,\n PluginInputEvent,\n PluginKeyboardEvent,\n PositionType,\n} from 'roosterjs-editor-types';\n\n// Character codes.\n// IE11 uses different character codes. which are noted below.\n// If adding a new key, test in IE to figure out what the code is.\nconst BACKSPACE_CHAR_CODE = 'Backspace';\nconst TAB_CHAR_CODE = 'Tab';\nconst ENTER_CHAR_CODE = 'Enter';\nconst ESC_CHAR_CODE = !Browser.isIE ? 'Escape' : 'Esc';\nconst LEFT_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowLeft' : 'Left';\nconst UP_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowUp' : 'Up';\nconst RIGHT_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowRight' : 'Right';\nconst DOWN_ARROW_CHAR_CODE = !Browser.isIE ? 'ArrowDown' : 'Down';\nconst DELETE_CHAR_CODE = !Browser.isIE ? 'Delete' : 'Del';\n\n// Input event input types.\nconst DELETE_CONTENT_BACKWARDS_INPUT_TYPE = 'deleteContentBackwards';\n\n// Unidentified key, the code for Android keyboard events.\nconst UNIDENTIFIED_KEY = 'Unidentified';\n// the char code for Android keyboard events on Webview below 51.\nconst UNIDENTIFIED_CODE = [0, 229];\n\n/**\n * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including\n * - Show picker when special trigger key is pressed\n * - Hide picker\n * - Change selection in picker by Up/Down/Left/Right\n * - Apply selected item in picker\n *\n * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.\n */\nexport default class PickerPlugin\n implements EditorPlugin {\n private editor: IEditor | null = null;\n private eventHandledOnKeyDown: boolean = false;\n private blockSuggestions: boolean = false;\n private isSuggesting: boolean = false;\n private lastKnownRange: Range | null = null;\n\n // For detecting backspace in Android\n private isPendingInputEventHandling: boolean = false;\n private currentInputLength: number = 0;\n private newInputLength: number = 0;\n\n constructor(public readonly dataProvider: T, private pickerOptions: PickerPluginOptions) {}\n\n /**\n * Get a friendly name\n */\n getName() {\n return 'Picker';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n public initialize(editor: IEditor) {\n this.editor = editor;\n this.dataProvider.onInitalize(\n (htmlNode: Node) => {\n if (this.editor) {\n this.editor.focus();\n\n let wordToReplace = this.getWord(null);\n\n // Safari drops our focus out so we get an empty word to replace when we call getWord.\n // We fall back to using the lastKnownRange to try to get around this.\n if ((!wordToReplace || wordToReplace.length == 0) && this.lastKnownRange) {\n this.editor.select(this.lastKnownRange);\n wordToReplace = this.getWord(null);\n }\n\n let insertNode = () => {\n if (wordToReplace && this.editor) {\n replaceWithNode(\n this.editor,\n wordToReplace,\n htmlNode,\n true /* exactMatch */\n );\n } else {\n this.editor?.insertNode(htmlNode);\n }\n this.setIsSuggesting(false);\n };\n\n this.editor.addUndoSnapshot(\n insertNode,\n this.pickerOptions.changeSource,\n this.pickerOptions.handleAutoComplete\n );\n }\n },\n (isSuggesting: boolean) => {\n this.setIsSuggesting(isSuggesting);\n },\n editor\n );\n }\n\n /**\n * Dispose this plugin\n */\n public dispose() {\n this.editor = null;\n this.isSuggesting = false;\n this.blockSuggestions = false;\n this.eventHandledOnKeyDown = false;\n this.lastKnownRange = null;\n this.isPendingInputEventHandling = false;\n this.currentInputLength = 0;\n this.newInputLength = 0;\n this.dataProvider.onDispose();\n }\n\n /**\n * Check if the plugin should handle the given event exclusively.\n * Handle an event exclusively means other plugin will not receive this event in\n * onPluginEvent method.\n * If two plugins will return true in willHandleEventExclusively() for the same event,\n * the final result depends on the order of the plugins are added into editor\n * @param event The event to check\n */\n public willHandleEventExclusively(event: PluginEvent) {\n return (\n this.isSuggesting &&\n (event.eventType == PluginEventType.KeyDown ||\n event.eventType == PluginEventType.KeyUp ||\n event.eventType == PluginEventType.Input)\n );\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n public onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case PluginEventType.ContentChanged:\n if (event.source == ChangeSource.SetContent && this.dataProvider.onContentChanged) {\n // Stop suggesting since content is fully changed\n if (this.isSuggesting) {\n this.setIsSuggesting(false);\n }\n\n // Undo and other major changes to document content fire this type of event.\n // Inform the data provider of the current picker placed elements in the body.\n let elementIds: string[] = [];\n this.editor?.queryElements(\n \"[id^='\" + this.pickerOptions.elementIdPrefix + \"']\",\n element => {\n if (element.id) {\n elementIds.push(element.id);\n }\n }\n );\n this.dataProvider.onContentChanged(elementIds);\n }\n break;\n\n case PluginEventType.KeyDown:\n this.eventHandledOnKeyDown = false;\n if (this.isAndroidKeyboardEvent(event)) {\n // On Android, the key for KeyboardEvent is \"Unidentified\" or undefined,\n // so handling should be done using the input rather than key down event\n // Since the key down event happens right before the input event, calculate the input\n // length here in preparation for onAndroidInputEvent\n this.currentInputLength = this.calcInputLength(event);\n this.isPendingInputEventHandling = true;\n } else {\n this.onKeyDownEvent(event);\n this.isPendingInputEventHandling = false;\n }\n break;\n\n case PluginEventType.Input:\n if (this.isPendingInputEventHandling) {\n this.onAndroidInputEvent(event);\n }\n break;\n\n case PluginEventType.KeyUp:\n if (!this.eventHandledOnKeyDown && this.shouldHandleKeyUpEvent(event)) {\n this.onKeyUpDomEvent(event);\n this.isPendingInputEventHandling = false;\n }\n break;\n\n case PluginEventType.MouseUp:\n if (this.isSuggesting) {\n this.setIsSuggesting(false);\n }\n break;\n\n case PluginEventType.Scroll:\n if (this.dataProvider.onScroll) {\n // Dispatch scroll event to data provider\n this.dataProvider.onScroll(event.scrollContainer);\n }\n break;\n }\n }\n\n private setLastKnownRange(range: Range | null) {\n this.lastKnownRange = range;\n }\n\n private setIsSuggesting(isSuggesting: boolean) {\n this.isSuggesting = isSuggesting;\n\n if (!isSuggesting) {\n this.setLastKnownRange(null);\n }\n this.dataProvider.onIsSuggestingChanged(isSuggesting);\n\n this.setAriaOwns(isSuggesting);\n this.setAriaActiveDescendant(isSuggesting ? 0 : null);\n }\n\n private cancelDefaultKeyDownEvent(event: PluginKeyboardEvent) {\n this.eventHandledOnKeyDown = true;\n event.rawEvent.preventDefault();\n event.rawEvent.stopImmediatePropagation();\n }\n\n private getIdValue(node: Node): string | null {\n if (safeInstanceOf(node, 'HTMLElement')) {\n const attribute = node.attributes.getNamedItem('id');\n return attribute ? (attribute.value as string) : null;\n } else {\n return null;\n }\n }\n\n private getWordBeforeCursor(event: PluginKeyboardEvent | null): string | null {\n let searcher = this.editor?.getContentSearcherOfCursor(event);\n return searcher ? searcher.getWordBefore() : null;\n }\n\n private replaceNode(currentNode: Node | null, replacementNode: Node | null) {\n if (currentNode) {\n this.editor?.deleteNode(currentNode);\n }\n if (replacementNode) {\n this.editor?.insertNode(replacementNode);\n }\n }\n\n private getRangeUntilAt(event: PluginKeyboardEvent | null): Range | null {\n let positionContentSearcher = this.editor?.getContentSearcherOfCursor(event);\n let startPos: NodePosition | undefined = undefined;\n let endPos: NodePosition | undefined = undefined;\n positionContentSearcher?.forEachTextInlineElement(textInline => {\n let hasMatched = false;\n let nodeContent = textInline.getTextContent();\n let nodeIndex = nodeContent ? nodeContent.length : -1;\n while (nodeIndex >= 0) {\n if (nodeContent[nodeIndex] == this.pickerOptions.triggerCharacter) {\n startPos = textInline.getStartPosition().move(nodeIndex);\n hasMatched = true;\n break;\n }\n nodeIndex--;\n }\n\n if (hasMatched) {\n endPos = textInline.getEndPosition();\n }\n\n return hasMatched;\n });\n return startPos\n ? createRange(startPos, endPos)\n : this.editor?.getDocument().createRange() ?? null;\n }\n\n private shouldHandleKeyUpEvent(event: PluginKeyboardEvent) {\n // onKeyUpDomEvent should only be called when a key that produces a character value is pressed\n // This check will always fail on Android since the KeyboardEvent's key is \"Unidentified\" or undefined\n // However, we don't need to check for modifier events on mobile, so can ignore this check\n return (\n this.isAndroidKeyboardEvent(event) ||\n isCharacterValue(event.rawEvent) ||\n (this.isSuggesting && !isModifierKey(event.rawEvent))\n );\n }\n\n private onKeyUpDomEvent(event: PluginKeyboardEvent) {\n if (this.editor) {\n if (this.isSuggesting) {\n // Word before cursor represents the text prior to the cursor, up to and including the trigger symbol.\n const wordBeforeCursor = this.getWord(event);\n if (wordBeforeCursor !== null) {\n const wordBeforeCursorWithoutTriggerChar = wordBeforeCursor.substring(1);\n const trimmedWordBeforeCursor = wordBeforeCursorWithoutTriggerChar.trim();\n\n // If we hit a case where wordBeforeCursor is just the trigger character,\n // that means we've gotten a onKeyUp event right after it's been typed.\n // Otherwise, update the query string when:\n // 1. There's an actual value\n // 2. That actual value isn't just pure whitespace\n // 3. That actual value isn't more than 4 words long (at which point we assume the person kept typing)\n // Otherwise, we want to dismiss the picker plugin's UX.\n if (\n wordBeforeCursor == this.pickerOptions.triggerCharacter ||\n (trimmedWordBeforeCursor &&\n trimmedWordBeforeCursor.length > 0 &&\n trimmedWordBeforeCursor.split(' ').length <= 4)\n ) {\n this.dataProvider.queryStringUpdated(\n trimmedWordBeforeCursor,\n wordBeforeCursorWithoutTriggerChar == trimmedWordBeforeCursor\n );\n this.setLastKnownRange(this.editor.getSelectionRange() ?? null);\n } else {\n this.setIsSuggesting(false);\n }\n }\n } else {\n let wordBeforeCursor = this.getWordBeforeCursor(event);\n if (!this.blockSuggestions) {\n if (\n wordBeforeCursor != null &&\n wordBeforeCursor.split(' ').length <= 4 &&\n wordBeforeCursor[0] == this.pickerOptions.triggerCharacter\n ) {\n this.setIsSuggesting(true);\n const wordBeforeCursorWithoutTriggerChar = wordBeforeCursor.substring(1);\n let trimmedWordBeforeCursor = wordBeforeCursorWithoutTriggerChar.trim();\n this.dataProvider.queryStringUpdated(\n trimmedWordBeforeCursor,\n wordBeforeCursorWithoutTriggerChar == trimmedWordBeforeCursor\n );\n this.setLastKnownRange(this.editor.getSelectionRange() ?? null);\n if (this.dataProvider.setCursorPoint) {\n // Determine the bounding rectangle for the @mention\n let searcher = this.editor.getContentSearcherOfCursor(event);\n let rangeNode = this.editor.getDocument().createRange();\n\n if (rangeNode) {\n let nodeBeforeCursor =\n searcher?.getInlineElementBefore()?.getContainerNode() ?? null;\n\n let rangeStartSuccessfullySet = this.setRangeStart(\n rangeNode,\n nodeBeforeCursor,\n wordBeforeCursor\n );\n if (!rangeStartSuccessfullySet) {\n // VSO 24891: Out of range error is occurring because nodeBeforeCursor\n // is not including the trigger character. In this case, the node before\n // the node before cursor is the trigger character, and this is where the range should start.\n let nodeBeforeNodeBeforeCursor =\n nodeBeforeCursor?.previousSibling ?? null;\n this.setRangeStart(\n rangeNode,\n nodeBeforeNodeBeforeCursor,\n this.pickerOptions.triggerCharacter\n );\n }\n let rect = rangeNode.getBoundingClientRect();\n\n // Safari's support for range.getBoundingClientRect is incomplete.\n // We perform this check to fall back to getClientRects in case it's at the page origin.\n if (rect.left == 0 && rect.bottom == 0 && rect.top == 0) {\n rect = rangeNode.getClientRects()[0];\n }\n\n if (rect) {\n rangeNode.detach();\n\n // Display the @mention popup in the correct place\n let targetPoint = {\n x: rect.left,\n y: (rect.bottom + rect.top) / 2,\n };\n let bufferZone = (rect.bottom - rect.top) / 2;\n this.dataProvider.setCursorPoint(targetPoint, bufferZone);\n }\n }\n }\n }\n } else {\n if (\n wordBeforeCursor != null &&\n wordBeforeCursor[0] != this.pickerOptions.triggerCharacter\n ) {\n this.blockSuggestions = false;\n }\n }\n }\n }\n }\n\n private onKeyDownEvent(event: PluginKeyboardEvent) {\n let keyboardEvent = event.rawEvent;\n if (this.isSuggesting) {\n if (keyboardEvent.key == ESC_CHAR_CODE) {\n this.setIsSuggesting(false);\n this.blockSuggestions = true;\n this.cancelDefaultKeyDownEvent(event);\n } else if (keyboardEvent.key == BACKSPACE_CHAR_CODE) {\n // #483: If we are backspacing over the trigger character that triggered this Picker\n // then we need to hide the Picker\n const wordBeforeCursor = this.getWord(event);\n if (wordBeforeCursor == this.pickerOptions.triggerCharacter) {\n this.setIsSuggesting(false);\n }\n } else if (\n this.dataProvider.shiftHighlight &&\n (this.pickerOptions.isHorizontal\n ? keyboardEvent.key == LEFT_ARROW_CHAR_CODE ||\n keyboardEvent.key == RIGHT_ARROW_CHAR_CODE\n : keyboardEvent.key == UP_ARROW_CHAR_CODE ||\n keyboardEvent.key == DOWN_ARROW_CHAR_CODE)\n ) {\n this.dataProvider.shiftHighlight(\n this.pickerOptions.isHorizontal\n ? keyboardEvent.key == RIGHT_ARROW_CHAR_CODE\n : keyboardEvent.key == DOWN_ARROW_CHAR_CODE\n );\n\n if (this.dataProvider.getSelectedIndex) {\n this.setAriaActiveDescendant(this.dataProvider.getSelectedIndex());\n }\n\n this.cancelDefaultKeyDownEvent(event);\n } else if (\n this.dataProvider.selectOption &&\n (keyboardEvent.key == ENTER_CHAR_CODE || keyboardEvent.key == TAB_CHAR_CODE)\n ) {\n this.dataProvider.selectOption();\n this.cancelDefaultKeyDownEvent(event);\n } else {\n // Currently no op.\n }\n } else {\n if (keyboardEvent.key == BACKSPACE_CHAR_CODE) {\n const nodeRemoved = this.tryRemoveNode(event);\n if (nodeRemoved) {\n this.cancelDefaultKeyDownEvent(event);\n }\n } else if (keyboardEvent.key == DELETE_CHAR_CODE) {\n let searcher = this.editor?.getContentSearcherOfCursor(event);\n if (searcher) {\n let nodeAfterCursor = searcher.getInlineElementAfter()\n ? searcher.getInlineElementAfter()?.getContainerNode()\n : null;\n let nodeId = nodeAfterCursor ? this.getIdValue(nodeAfterCursor) : null;\n if (\n nodeId &&\n nodeId.indexOf(this.pickerOptions.elementIdPrefix) == 0 &&\n nodeAfterCursor\n ) {\n let replacementNode = this.dataProvider.onRemove(nodeAfterCursor, false);\n this.replaceNode(nodeAfterCursor, replacementNode);\n this.cancelDefaultKeyDownEvent(event);\n }\n }\n }\n }\n }\n\n private onAndroidInputEvent(event: PluginInputEvent) {\n this.newInputLength = this.calcInputLength(event);\n\n if (\n this.newInputLength < this.currentInputLength ||\n (event.rawEvent as any).inputType === DELETE_CONTENT_BACKWARDS_INPUT_TYPE\n ) {\n const nodeRemoved = this.tryRemoveNode(event);\n if (nodeRemoved) {\n this.eventHandledOnKeyDown = true;\n }\n }\n }\n\n private calcInputLength(event: PluginEvent) {\n const wordBeforeCursor = this.getInlineElementBeforeCursor(event);\n return wordBeforeCursor ? wordBeforeCursor.length : 0;\n }\n\n private tryRemoveNode(event: PluginDomEvent): boolean {\n if (!this.editor) {\n return false;\n }\n\n const searcher = this.editor.getContentSearcherOfCursor(event);\n if (!searcher) {\n return false;\n }\n\n const inlineElementBefore = searcher.getInlineElementBefore();\n const nodeBeforeCursor = inlineElementBefore\n ? inlineElementBefore.getContainerNode()\n : null;\n const nodeId = nodeBeforeCursor ? this.getIdValue(nodeBeforeCursor) : null;\n const inlineElementAfter = searcher.getInlineElementAfter();\n\n if (\n nodeBeforeCursor &&\n nodeId &&\n nodeId.indexOf(this.pickerOptions.elementIdPrefix) == 0 &&\n (inlineElementAfter == null || !(inlineElementAfter instanceof PartialInlineElement))\n ) {\n const replacementNode = this.dataProvider.onRemove(nodeBeforeCursor, true);\n if (replacementNode) {\n this.replaceNode(nodeBeforeCursor, replacementNode);\n if (this.isPendingInputEventHandling) {\n this.editor.runAsync(editor => {\n editor.select(replacementNode, PositionType.After);\n });\n } else {\n this.editor.select(replacementNode, PositionType.After);\n }\n\n return true;\n } else {\n // Select the node then let browser delete it\n this.editor.select(nodeBeforeCursor);\n return false;\n }\n }\n return false;\n }\n\n private getWord(event: PluginKeyboardEvent | null) {\n let wordFromRange = this.getRangeUntilAt(event)?.toString() ?? '';\n let wordFromCache = this.getWordBeforeCursor(event);\n // VSO 24891: In picker, trigger and mention are separated into two nodes.\n // In this case, wordFromRange is the trigger character while wordFromCache is the whole string,\n // so wordFromCache is what we want to return.\n if (\n wordFromRange == this.pickerOptions.triggerCharacter &&\n wordFromRange != wordFromCache\n ) {\n return wordFromCache;\n }\n return wordFromRange;\n }\n\n private setRangeStart(rangeNode: Range, node: Node | null, target: string) {\n let nodeOffset = node?.textContent ? node.textContent.lastIndexOf(target) : -1;\n if (node && nodeOffset > -1) {\n rangeNode.setStart(node, nodeOffset);\n return true;\n }\n return false;\n }\n\n private setAriaOwns(isSuggesting: boolean) {\n this.editor?.setEditorDomAttribute(\n 'aria-owns',\n isSuggesting && this.pickerOptions.suggestionsLabel\n ? this.pickerOptions.suggestionsLabel\n : null\n );\n }\n\n private setAriaActiveDescendant(selectedIndex: number | null) {\n this.editor?.setEditorDomAttribute(\n 'aria-activedescendant',\n selectedIndex != null && this.pickerOptions.suggestionLabelPrefix\n ? this.pickerOptions.suggestionLabelPrefix + selectedIndex.toString()\n : null\n );\n }\n\n private getInlineElementBeforeCursor(event: PluginEvent): string | null {\n const searcher = this.editor?.getContentSearcherOfCursor(event);\n const element = searcher ? searcher.getInlineElementBefore() : null;\n return element ? element.getTextContent() : null;\n }\n\n private isAndroidKeyboardEvent(event: PluginKeyboardEvent): boolean {\n // Check keyboard events on Android for further handling.\n // On Android Webview later 51, the KeyboardEvent's key is \"Unidentified\".\n // On Android Webview below 51, the KeyboardEvent's key is not supported and always returns undefined,\n // so using the charCode property, which is 0 or 229.\n return (\n event.rawEvent.key == UNIDENTIFIED_KEY ||\n (event.rawEvent.key == undefined &&\n UNIDENTIFIED_CODE.indexOf(event.rawEvent.charCode) > -1)\n );\n }\n}\n","export { default as PickerPlugin } from './PickerPlugin';\n","import { clearState } from './utils/clearState';\nimport { DeleteTableContents } from './features/DeleteTableContents';\nimport { handleKeyDownEvent } from './keyUtils/handleKeyDownEvent';\nimport { handleKeyUpEvent } from './keyUtils/handleKeyUpEvent';\nimport { handleMouseDownEvent } from './mouseUtils/handleMouseDownEvent';\nimport { handleScrollEvent } from './mouseUtils/handleScrollEvent';\nimport { TableCellSelectionState } from './TableCellSelectionState';\nimport {\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n SelectionRangeTypes,\n TableSelection,\n} from 'roosterjs-editor-types';\n\n/**\n * TableCellSelectionPlugin help highlight table cells\n */\nexport default class TableCellSelection implements EditorPlugin {\n private editor: IEditor | null = null;\n private state: TableCellSelectionState | null;\n private shadowEditCoordinatesBackup: TableSelection | null = null;\n\n constructor() {\n this.state = {\n firstTable: null,\n lastTarget: null,\n firstTarget: null,\n preventKeyUp: false,\n startedSelection: false,\n tableSelection: false,\n targetTable: null,\n vTable: null,\n mouseMoveDisposer: null,\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TableCellSelection';\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 this.editor.addContentEditFeature(DeleteTableContents);\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n clearState(this.state, this.editor);\n this.state = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (this.editor && this.state) {\n switch (event.eventType) {\n case PluginEventType.EnteredShadowEdit:\n this.handleEnteredShadowEdit(this.state, this.editor);\n break;\n case PluginEventType.LeavingShadowEdit:\n this.handleLeavingShadowEdit(this.state, this.editor);\n break;\n case PluginEventType.MouseDown:\n if (!this.state.startedSelection) {\n handleMouseDownEvent(event, this.state, this.editor);\n }\n break;\n case PluginEventType.KeyDown:\n if (!this.state.startedSelection) {\n handleKeyDownEvent(event, this.state, this.editor);\n } else {\n event.rawEvent.preventDefault();\n }\n break;\n case PluginEventType.KeyUp:\n if (!this.state.startedSelection) {\n handleKeyUpEvent(event, this.state, this.editor);\n } else {\n event.rawEvent.preventDefault();\n }\n break;\n case PluginEventType.Scroll:\n if (this.state.startedSelection) {\n handleScrollEvent(this.state, this.editor);\n }\n break;\n case PluginEventType.BeforeSetContent:\n this.state.firstTable = null;\n this.state.tableSelection = false;\n this.editor.select(null);\n break;\n }\n }\n }\n\n private handleLeavingShadowEdit(state: TableCellSelectionState, editor: IEditor) {\n if (state.firstTable && state.tableSelection && state.firstTable) {\n const table = editor.queryElements('#' + state.firstTable.id);\n if (table.length == 1) {\n state.firstTable = table[0] as HTMLTableElement;\n editor.select(state.firstTable, this.shadowEditCoordinatesBackup);\n this.shadowEditCoordinatesBackup = null;\n }\n }\n }\n\n private handleEnteredShadowEdit(state: TableCellSelectionState, editor: IEditor) {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.TableSelection) {\n this.shadowEditCoordinatesBackup = selection.coordinates ?? null;\n state.firstTable = selection.table;\n state.tableSelection = true;\n editor.select(selection.table, null);\n }\n }\n}\n","/**\n * @internal\n * Table cell query selector\n */\nexport const TABLE_CELL_SELECTOR = 'td,th';\n","import { safeInstanceOf } from 'roosterjs-editor-dom';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport {\n GenericContentEditFeature,\n IEditor,\n Keys,\n PluginEvent,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Feature that when Backspace is pressed and there is Table Selection, delete the contents inside of the selection\n */\nexport const DeleteTableContents: GenericContentEditFeature = {\n keys: [Keys.DELETE, Keys.BACKSPACE],\n shouldHandleEvent: (_, editor: IEditor) => {\n const selection = editor.getSelectionRangeEx();\n return selection.type == SelectionRangeTypes.TableSelection;\n },\n handleEvent: (_, editor) => {\n const selection = editor.getSelectionRangeEx();\n if (selection.type == SelectionRangeTypes.TableSelection) {\n editor.addUndoSnapshot(() => {\n if (selection.isWholeTableSelected) {\n selection.table\n .querySelectorAll(TABLE_CELL_SELECTOR)\n .forEach(td => deleteNodeContents(td, editor));\n } else {\n editor\n .getSelectedRegions()\n .forEach(region => deleteNodeContents(region.rootNode, editor));\n }\n });\n }\n },\n};\n\nfunction deleteNodeContents(element: Node, editor: IEditor) {\n if (safeInstanceOf(element, 'HTMLTableCellElement')) {\n const range = new Range();\n range.selectNodeContents(element);\n range.deleteContents();\n element.appendChild(editor.getDocument().createElement('br'));\n }\n}\n","export { default as TableCellSelection } from './TableCellSelection';\n","import { getCellAtCursor } from '../utils/getCellAtCursor';\nimport { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { isAfter } from '../utils/isAfter';\nimport { prepareSelection } from '../utils/prepareSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\nimport {\n contains,\n createRange,\n isCtrlOrMetaPressed,\n Position,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n Coordinates,\n IEditor,\n Keys,\n PluginKeyDownEvent,\n PositionType,\n SelectionRangeTypes,\n} from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function handleKeyDownEvent(\n event: PluginKeyDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { shiftKey, ctrlKey, metaKey, which, defaultPrevented } = event.rawEvent;\n if ((shiftKey && (ctrlKey || metaKey)) || which == Keys.SHIFT || defaultPrevented) {\n state.preventKeyUp = defaultPrevented;\n return;\n }\n\n const range = editor.getSelectionRangeEx();\n if (shiftKey) {\n if (!state.firstTarget) {\n const pos = editor.getFocusedPosition();\n const cell = pos && getCellAtCursor(editor, pos.node);\n\n state.firstTarget = cell;\n }\n\n //If first target is not a table cell, we should ignore this plugin\n if (!safeInstanceOf(state.firstTarget, 'HTMLTableCellElement')) {\n return;\n }\n editor.runAsync(editor => {\n const pos = editor.getFocusedPosition();\n const newTarget = state.tableSelection ? state.lastTarget : pos?.node;\n if (newTarget) {\n setData(newTarget, state, editor);\n }\n\n if (state.firstTable! == state.targetTable!) {\n if (!shouldConvertToTableSelection(state, editor) && !state.tableSelection) {\n return;\n }\n //When selection start and end is inside of the same table\n handleKeySelectionInsideTable(event, state, editor);\n } else if (state.tableSelection) {\n if (state.firstTable) {\n editor.select(state.firstTable, null /* coordinates */);\n }\n state.tableSelection = false;\n }\n });\n } else if (\n range?.type == SelectionRangeTypes.TableSelection &&\n (!isCtrlOrMetaPressed(event.rawEvent) || which == Keys.HOME || which == Keys.END)\n ) {\n // Select all content in the first cell\n const row = range.ranges[0];\n const firstCell = row.startContainer.childNodes[row.startOffset];\n const children = firstCell.childNodes;\n const contentRange = createRange(children[0], children[children.length - 1]);\n editor.select(contentRange);\n }\n}\n\n/**\n * @internal\n */\nfunction handleKeySelectionInsideTable(\n event: PluginKeyDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n state.firstTarget = getCellAtCursor(editor, state.firstTarget);\n state.lastTarget = getCellAtCursor(editor, state.lastTarget);\n\n updateSelection(editor, state.firstTarget, 0);\n state.vTable = state.vTable || new VTable(state.firstTable as HTMLTableElement);\n\n const firstCell = getCellCoordinates(state.vTable, state.firstTarget as Element);\n const lastCell = getNextTD(event, editor, state);\n\n if (!firstCell || !lastCell) {\n return;\n }\n state.vTable.selection = {\n firstCell,\n lastCell,\n };\n\n const { selection } = state.vTable;\n\n if (\n !selection.lastCell ||\n (state.vTable.cells && selection.lastCell.y > state.vTable.cells.length - 1) ||\n selection.lastCell.y == -1\n ) {\n //When selection is moving from inside of a table to outside\n state.lastTarget = editor.getElementAtCursor(\n TABLE_CELL_SELECTOR + ',div',\n state.firstTable ?? undefined\n );\n if (safeInstanceOf(state.lastTarget, 'HTMLTableCellElement')) {\n prepareSelection(state, editor);\n } else {\n const position =\n state.targetTable &&\n new Position(\n state.targetTable,\n selection.lastCell.y == null || selection.lastCell.y == -1\n ? PositionType.Before\n : PositionType.After\n );\n\n const sel = editor.getDocument().defaultView?.getSelection();\n const { anchorNode, anchorOffset } = sel || {};\n if (\n sel &&\n anchorNode &&\n anchorOffset != undefined &&\n anchorOffset != null &&\n position\n ) {\n editor.select(sel.getRangeAt(0));\n sel.setBaseAndExtent(anchorNode, anchorOffset, position.node, position.offset);\n state.lastTarget = position.node;\n event.rawEvent.preventDefault();\n return;\n }\n }\n }\n\n selectTable(editor, state);\n\n const isBeginAboveEnd = isAfter(state.firstTarget, state.lastTarget);\n if (state.lastTarget) {\n const targetPosition = new Position(\n state.lastTarget,\n isBeginAboveEnd ? PositionType.Begin : PositionType.End\n );\n updateSelection(editor, targetPosition.node, targetPosition.offset);\n }\n\n state.tableSelection = true;\n event.rawEvent.preventDefault();\n}\n\nfunction getNextTD(\n event: PluginKeyDownEvent,\n editor: IEditor,\n state: TableCellSelectionState\n): Coordinates | undefined {\n state.lastTarget =\n state.lastTarget && editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.lastTarget);\n\n if (safeInstanceOf(state.lastTarget, 'HTMLTableCellElement') && state.vTable?.cells) {\n let coordinates = getCellCoordinates(state.vTable, state.lastTarget);\n\n if (state.tableSelection && coordinates) {\n switch (event.rawEvent.which) {\n case Keys.RIGHT:\n coordinates.x += state.lastTarget.colSpan;\n if (state.vTable.cells[coordinates.y][coordinates.x] == null) {\n coordinates.x = state.vTable.cells[coordinates.y].length - 1;\n coordinates.y++;\n }\n break;\n case Keys.LEFT:\n if (coordinates.x == 0) {\n coordinates.y--;\n } else {\n coordinates.x--;\n }\n break;\n case Keys.UP:\n coordinates.y--;\n break;\n case Keys.DOWN:\n coordinates.y++;\n break;\n }\n }\n\n if (coordinates && coordinates.y >= 0 && coordinates.x >= 0) {\n state.lastTarget = state.vTable.getTd(coordinates.y, coordinates.x);\n }\n return coordinates;\n }\n return undefined;\n}\n\nfunction shouldConvertToTableSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.firstTable || !editor) {\n return false;\n }\n const regions = editor.getSelectedRegions();\n if (regions.length == 1) {\n return false;\n }\n\n let result = true;\n\n regions.forEach(value => {\n if (!contains(state.firstTable, value.rootNode)) {\n result = false;\n }\n });\n\n return result;\n}\n","import { clearState } from '../utils/clearState';\nimport { IEditor, Keys, PluginKeyUpEvent } from 'roosterjs-editor-types';\nimport { isCharacterValue } from 'roosterjs-editor-dom';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\nconst IGNORE_KEY_UP_KEYS = [\n Keys.SHIFT,\n Keys.ALT,\n Keys.META_LEFT,\n Keys.CTRL_LEFT,\n Keys.PRINT_SCREEN,\n];\n\n/**\n * @internal\n */\nexport function handleKeyUpEvent(\n event: PluginKeyUpEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { shiftKey, which, ctrlKey } = event.rawEvent;\n if (\n !shiftKey &&\n !ctrlKey &&\n state.firstTarget &&\n !state.preventKeyUp &&\n IGNORE_KEY_UP_KEYS.indexOf(which) == -1\n ) {\n if (isCharacterValue(event.rawEvent)) {\n editor.addUndoSnapshot();\n }\n clearState(state, editor);\n }\n state.preventKeyUp = false;\n}\n","import normalizeTableSelection from '../utils/normalizeTableSelection';\nimport { clearState } from '../utils/clearState';\nimport { contains, getTagOfNode, safeInstanceOf, VTable } from 'roosterjs-editor-dom';\nimport { getCellAtCursor } from '../utils/getCellAtCursor';\nimport { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { getTableAtCursor } from '../utils/getTableAtCursor';\nimport { IEditor, PluginMouseDownEvent } from 'roosterjs-editor-types';\nimport { prepareSelection } from '../utils/prepareSelection';\nimport { restoreSelection } from '../utils/restoreSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\n\nconst LEFT_CLICK = 1;\nconst RIGHT_CLICK = 3;\n\n/**\n * @internal\n */\nexport function handleMouseDownEvent(\n event: PluginMouseDownEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n const { which, shiftKey, target, detail } = event.rawEvent;\n const table = editor.getElementAtCursor('table', target as Node, event);\n const tripleClick = detail >= 3;\n\n if (table && !table.isContentEditable) {\n return;\n }\n\n const td = editor.getElementAtCursor(TABLE_CELL_SELECTOR);\n if (which == RIGHT_CLICK && state.tableSelection && state.vTable && td) {\n //If the user is right clicking To open context menu\n const coord = getCellCoordinates(state.vTable, td);\n if (coord) {\n const { firstCell, lastCell } = normalizeTableSelection(state.vTable) || {};\n if (\n firstCell &&\n lastCell &&\n coord.y >= firstCell.y &&\n coord.y <= lastCell.y &&\n coord.x >= firstCell.x &&\n coord.x <= lastCell.x\n ) {\n state.firstTarget = state.vTable.getCell(firstCell.y, firstCell.x).td;\n state.lastTarget = state.vTable.getCell(lastCell.y, lastCell.x).td;\n\n if (state.firstTarget && state.lastTarget) {\n const selection = editor.getDocument().defaultView?.getSelection();\n selection?.setBaseAndExtent(state.firstTarget, 0, state.lastTarget, 0);\n selectTable(editor, state);\n }\n\n return;\n }\n }\n }\n if (which == LEFT_CLICK) {\n if (!shiftKey && !tripleClick) {\n clearState(state, editor);\n\n if (getTableAtCursor(editor, event.rawEvent.target)) {\n const doc = editor.getDocument() || document;\n\n const mouseUpListener = getOnMouseUp(state);\n const mouseMoveListener = onMouseMove(state, editor);\n doc.addEventListener('mouseup', mouseUpListener, true /*setCapture*/);\n doc.addEventListener('mousemove', mouseMoveListener, true /*setCapture*/);\n\n state.mouseMoveDisposer = () => {\n doc.removeEventListener('mouseup', mouseUpListener, true /*setCapture*/);\n doc.removeEventListener('mousemove', mouseMoveListener, true /*setCapture*/);\n };\n\n state.startedSelection = true;\n }\n }\n\n if (shiftKey || tripleClick) {\n editor.runAsync(editor => {\n const sel = editor.getDocument().defaultView?.getSelection();\n const first = getCellAtCursor(editor, sel?.anchorNode);\n // Triple clicking a cell will select that cell only\n // Assign last the same as first to make sure we can select the cell\n const last = tripleClick ? first : getCellAtCursor(editor, sel?.focusNode);\n const firstTable = getTableAtCursor(editor, first);\n if (\n firstTable &&\n safeInstanceOf(first, 'HTMLTableCellElement') &&\n safeInstanceOf(last, 'HTMLTableCellElement')\n ) {\n state.vTable = new VTable(first);\n const firstCord = getCellCoordinates(state.vTable, first);\n const lastCord = getCellCoordinates(state.vTable, last);\n\n if (!firstCord || !lastCord) {\n return;\n }\n state.vTable.selection = {\n firstCell: firstCord,\n lastCell: lastCord,\n };\n\n state.firstTarget = first;\n state.lastTarget = last;\n selectTable(editor, state);\n\n state.tableSelection = true;\n state.firstTable = firstTable as HTMLTableElement;\n state.targetTable = firstTable;\n updateSelection(editor, first, 0);\n }\n });\n }\n }\n}\n\nfunction getOnMouseUp(state: TableCellSelectionState) {\n return () => {\n removeMouseUpEventListener(state);\n };\n}\n\nfunction onMouseMove(state: TableCellSelectionState, editor: IEditor) {\n return (event: MouseEvent) => {\n if (!editor.contains(event.target as Node)) {\n return;\n }\n\n //If already in table selection and the new target is contained in the last target cell, no need to\n //Apply selection styles again.\n if (\n state.tableSelection &&\n state.firstTarget &&\n contains(state.lastTarget, event.target as Node, true)\n ) {\n updateSelection(editor, state.firstTarget, 0);\n event.preventDefault();\n return;\n }\n\n if (getTagOfNode(event.target as Node) == 'TABLE') {\n event.preventDefault();\n return;\n }\n\n setData(event.target as Node, state, editor);\n\n // If there is a first target, but is not inside a table, no more actions to perform.\n if (state.firstTarget && !state.firstTable) {\n return;\n }\n\n //Ignore if\n // Is a DIV that only contains a Table\n // If the event target is not contained in the editor.\n if (\n state.lastTarget &&\n ((state.lastTarget.lastChild == state.lastTarget.firstChild &&\n getTagOfNode(state.lastTarget.lastChild) == 'TABLE' &&\n getTagOfNode(state.lastTarget) == 'DIV') ||\n !editor.contains(state.lastTarget))\n ) {\n event.preventDefault();\n return;\n }\n\n prepareSelection(state, editor);\n const isNewTDContainingFirstTable = safeInstanceOf(state.lastTarget, 'HTMLTableCellElement')\n ? contains(state.lastTarget, state.firstTable)\n : false;\n\n if (\n (state.firstTable && state.firstTable == state.targetTable) ||\n isNewTDContainingFirstTable\n ) {\n //When starting selection inside of a table and ends inside of the same table.\n selectionInsideTableMouseMove(event, state, editor);\n } else if (state.tableSelection) {\n restoreSelection(state, editor);\n }\n\n if (state.tableSelection && state.firstTarget) {\n updateSelection(editor, state.firstTarget, 0);\n event.preventDefault();\n }\n };\n}\n\n/**\n * @internal\n */\nexport function selectionInsideTableMouseMove(\n event: MouseEvent,\n state: TableCellSelectionState,\n editor: IEditor\n) {\n if (\n state.firstTarget &&\n state.firstTable &&\n state.lastTarget != state.firstTarget &&\n state.lastTarget\n ) {\n updateSelection(editor, state.firstTarget, 0);\n if (\n state.firstTable != state.targetTable &&\n state.targetTable?.contains(state.firstTable)\n ) {\n //If selection started in a table that is inside of another table and moves to parent table\n //Make the firstTarget the TD of the parent table.\n state.firstTarget = editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.lastTarget);\n }\n\n if (state.firstTable && state.firstTarget) {\n state.tableSelection = true;\n\n state.vTable = state.vTable || new VTable(state.firstTable);\n\n const firstCell = getCellCoordinates(state.vTable, state.firstTarget);\n const lastCell = getCellCoordinates(state.vTable, state.lastTarget);\n\n if (!firstCell || !lastCell) {\n return;\n }\n\n state.vTable.selection = {\n firstCell,\n lastCell,\n };\n selectTable(editor, state);\n }\n\n event.preventDefault();\n } else if (\n state.lastTarget == state.firstTarget &&\n state.tableSelection &&\n state.firstTable &&\n state.firstTarget\n ) {\n state.vTable = new VTable(state.firstTable);\n const cell = getCellCoordinates(state.vTable, state.firstTarget);\n if (cell) {\n state.vTable.selection = {\n firstCell: cell,\n lastCell: cell,\n };\n }\n\n selectTable(editor, state);\n }\n}\n\nfunction removeMouseUpEventListener(state: TableCellSelectionState): void {\n if (state.startedSelection) {\n state.startedSelection = false;\n state.mouseMoveDisposer?.();\n }\n}\n","import { getCellCoordinates } from '../utils/getCellCoordinates';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { restoreSelection } from '../utils/restoreSelection';\nimport { selectTable } from '../utils/selectTable';\nimport { setData } from '../utils/setData';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from '../utils/updateSelection';\n\n/**\n * Handle Scroll Event and mantains the selection range,\n * Since when we scroll the cursor does not trigger the on Mouse Move event\n * The table selection gets removed.\n */\nexport function handleScrollEvent(state: TableCellSelectionState, editor: IEditor) {\n const eventTarget = editor.getElementAtCursor();\n if (!eventTarget) {\n return;\n }\n setData(eventTarget, state, editor);\n if (\n state.firstTable == state.targetTable &&\n state.firstTarget &&\n state.vTable?.selection &&\n state.lastTarget &&\n state.tableSelection\n ) {\n const newCell = getCellCoordinates(state.vTable, state.lastTarget);\n if (newCell) {\n state.vTable.selection.lastCell = newCell;\n selectTable(editor, state);\n updateSelection(editor, state.firstTarget, 0);\n }\n } else if (state.tableSelection) {\n restoreSelection(state, editor);\n }\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function clearState(state: TableCellSelectionState | null, editor: IEditor | null): void {\n editor?.select(null);\n if (state) {\n state.vTable = null;\n state.firstTarget = null;\n state.lastTarget = null;\n state.tableSelection = false;\n state.firstTable = null;\n state.targetTable = null;\n state.mouseMoveDisposer?.();\n state.mouseMoveDisposer = null;\n }\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { Nullable } from '../TableCellSelectionState';\nimport { TABLE_CELL_SELECTOR } from '../constants';\n\n/**\n * @internal\n */\nexport function getCellAtCursor(editor: IEditor, node: Nullable): HTMLElement {\n if (editor) {\n return (\n editor.getElementAtCursor(TABLE_CELL_SELECTOR, node ?? undefined) ||\n (node as HTMLElement)\n );\n }\n return node as HTMLElement;\n}\n","import { Coordinates } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Gets the coordinates of a cell\n * @param cellInput The cell the to find the coordinates\n * @returns Coordinates of the cell, null if not found\n */\nexport function getCellCoordinates(vTable: VTable, cellInput: Node): Coordinates | undefined {\n let result: Coordinates | undefined;\n if (vTable?.cells) {\n for (let indexY = 0; indexY < vTable.cells.length; indexY++) {\n for (let indexX = 0; indexX < vTable.cells[indexY].length; indexX++) {\n if (cellInput == vTable.cells[indexY][indexX].td) {\n result = {\n x: indexX,\n y: indexY,\n };\n }\n }\n }\n }\n\n return result;\n}\n","import { IEditor } from 'roosterjs-editor-types';\nimport { Nullable } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function getTableAtCursor(\n editor: IEditor,\n node: Nullable\n): HTMLTableElement | null {\n if (editor) {\n return editor.getElementAtCursor('table', node as Node) as HTMLTableElement;\n }\n return null;\n}\n","import { Nullable } from '../TableCellSelectionState';\nimport { Position } from 'roosterjs-editor-dom';\nimport { PositionType } from 'roosterjs-editor-types';\n\n/**\n * @internal\n */\nexport function isAfter(node1: Nullable, node2: Nullable) {\n if (node1 && node2) {\n if (node2.contains(node1)) {\n const r1 = (node1 as Element).getBoundingClientRect?.();\n const r2 = (node2 as Element).getBoundingClientRect?.();\n if (r1 && r2) {\n return r1.top > r2.top && r1.bottom < r2.bottom;\n }\n }\n\n const position = new Position(node1, PositionType.End);\n return position.isAfter(new Position(node2, PositionType.End));\n }\n return false;\n}\n","import { Coordinates, TableSelection } from 'roosterjs-editor-types';\nimport { VTable } from 'roosterjs-editor-dom';\n\n/**\n * @internal\n * Make the first Cell of a table selection always be on top of the last cell.\n * @param input Table selection\n * @returns Table Selection where the first cell is always going to be first selected in the table\n * and the last cell always going to be last selected in the table.\n */\nexport default function normalizeTableSelection(vTable: VTable): TableSelection | null {\n const { firstCell, lastCell } = vTable?.selection || {};\n if (!vTable?.cells || !vTable.selection || !firstCell || !lastCell) {\n return null;\n }\n\n const cells = vTable.cells;\n\n let newFirst = {\n x: Math.min(firstCell.x, lastCell.x),\n y: Math.min(firstCell.y, lastCell.y),\n };\n let newLast = {\n x: Math.max(firstCell.x, lastCell.x),\n y: Math.max(firstCell.y, lastCell.y),\n };\n\n const fixCoordinates = (coord: Coordinates) => {\n if (coord.x < 0) {\n coord.x = 0;\n }\n if (coord.y < 0) {\n coord.y = 0;\n }\n\n if (coord.y >= cells.length) {\n coord.y = cells.length - 1;\n }\n\n const rowsCells = cells[coord.y].length;\n if (coord.x >= rowsCells) {\n coord.x = rowsCells - 1;\n }\n };\n\n fixCoordinates(newFirst);\n fixCoordinates(newLast);\n\n return { firstCell: newFirst, lastCell: newLast };\n}\n","import { findClosestElementAncestor } from 'roosterjs-editor-dom';\nimport { getTableAtCursor } from './getTableAtCursor';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n * Check if the selection started in a inner table.\n */\nexport function prepareSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.firstTable || !state.targetTable) {\n return;\n }\n let isNewTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.firstTable?.contains(\n findClosestElementAncestor(state.targetTable, state.firstTable, TABLE_CELL_SELECTOR)\n );\n\n if (isNewTargetTableContained && state.tableSelection) {\n while (isNewTargetTableContained) {\n state.lastTarget = findClosestElementAncestor(\n state.targetTable,\n state.firstTable,\n TABLE_CELL_SELECTOR\n );\n state.targetTable = getTableAtCursor(editor, state.lastTarget);\n isNewTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.firstTable?.contains(\n findClosestElementAncestor(\n state.targetTable,\n state.firstTable,\n TABLE_CELL_SELECTOR\n )\n );\n }\n }\n\n let isFirstTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.targetTable?.contains(\n findClosestElementAncestor(state.firstTable, state.targetTable, TABLE_CELL_SELECTOR)\n );\n\n if (isFirstTargetTableContained && state.tableSelection && state.targetTable) {\n while (isFirstTargetTableContained) {\n state.firstTarget = findClosestElementAncestor(\n state.firstTable,\n state.targetTable,\n TABLE_CELL_SELECTOR\n );\n if (!state.firstTarget) {\n return;\n }\n state.firstTable = getTableAtCursor(editor, state.firstTarget);\n isFirstTargetTableContained =\n state.lastTarget != state.firstTarget &&\n state.targetTable?.contains(\n findClosestElementAncestor(\n state.firstTable,\n state.targetTable,\n TABLE_CELL_SELECTOR\n )\n );\n }\n }\n}\n","import { IEditor, PositionType } from 'roosterjs-editor-types';\nimport { isAfter } from './isAfter';\nimport { Position } from 'roosterjs-editor-dom';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\nimport { updateSelection } from './updateSelection';\n\n/**\n * @internal\n */\nexport function restoreSelection(state: TableCellSelectionState, editor: IEditor) {\n if (!state.lastTarget || !state.firstTarget) {\n return;\n }\n\n if (state.firstTable) {\n editor.select(state.firstTable, null /* coordinates */);\n }\n state.tableSelection = false;\n const isBeginAboveEnd = isAfter(state.firstTarget, state.lastTarget);\n const targetPosition = new Position(\n state.lastTarget,\n isBeginAboveEnd ? PositionType.End : PositionType.Begin\n );\n\n const firstTargetRange = new Range();\n if (state.firstTarget) {\n firstTargetRange.selectNodeContents(state.firstTarget);\n }\n updateSelection(\n editor,\n state.firstTarget,\n isBeginAboveEnd\n ? Position.getEnd(firstTargetRange).offset\n : Position.getStart(firstTargetRange).offset,\n targetPosition.element,\n targetPosition.offset\n );\n}\n","import normalizeTableSelection from './normalizeTableSelection';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function selectTable(editor: IEditor, state: TableCellSelectionState) {\n if (editor && state.vTable) {\n editor?.select(state.vTable.table, normalizeTableSelection(state.vTable));\n }\n}\n","import { getCellAtCursor } from './getCellAtCursor';\nimport { getTableAtCursor } from './getTableAtCursor';\nimport { IEditor } from 'roosterjs-editor-types';\nimport { TABLE_CELL_SELECTOR } from '../constants';\nimport { TableCellSelectionState } from '../TableCellSelectionState';\n\n/**\n * @internal\n */\nexport function setData(eventTarget: Node, state: TableCellSelectionState, editor: IEditor) {\n const pos = editor.getFocusedPosition();\n if (pos) {\n state.firstTarget = state.firstTarget || getCellAtCursor(editor, pos.node);\n\n if (state.firstTarget.nodeType == Node.TEXT_NODE) {\n state.firstTarget = editor.getElementAtCursor(TABLE_CELL_SELECTOR, state.firstTarget);\n }\n if (!editor.contains(state.firstTarget) && state.lastTarget) {\n state.firstTarget = state.lastTarget;\n }\n }\n\n state.firstTable = getTableAtCursor(editor, state.firstTarget) as HTMLTableElement;\n state.lastTarget = getCellAtCursor(editor, eventTarget as Node);\n state.targetTable = getTableAtCursor(editor, state.lastTarget);\n}\n","import { IEditor } from 'roosterjs-editor-types';\n\n/**\n * @internal\n * Use SetBaseAndExtend to update the selection without losing the order that was used in the selection.\n * Using editor.select may lose the order of the selection if the start of the selection is After\n * the end container of the selection.\n */\nexport function updateSelection(\n editor: IEditor,\n start: Node,\n offset: number,\n end?: Node,\n endOffset?: number\n) {\n const selection = editor.getDocument().defaultView?.getSelection();\n if (selection) {\n end = end || start;\n endOffset = endOffset || offset;\n selection.setBaseAndExtent(start, offset, end, endOffset);\n }\n}\n","import TableEditor from './editors/TableEditor';\nimport { normalizeRect, safeInstanceOf } from 'roosterjs-editor-dom';\nimport {\n CreateElementData,\n EditorPlugin,\n IEditor,\n PluginEvent,\n PluginEventType,\n Rect,\n} from 'roosterjs-editor-types';\n\nconst TABLE_RESIZER_LENGTH = 12;\n\n/**\n * TableResize plugin, provides the ability to resize a table by drag-and-drop\n */\nexport default class TableResize implements EditorPlugin {\n private editor: IEditor | null = null;\n private onMouseMoveDisposer: (() => void) | null = null;\n private tableRectMap: { table: HTMLTableElement; rect: Rect }[] | null = null;\n private tableEditor: TableEditor | null = null;\n\n /**\n * Construct a new instance of TableResize plugin\n * @param onShowHelperElement An optional callback to allow customize helper element of table resizing.\n * To customize the helper element, add this callback and change the attributes of elementData then it\n * will be picked up by TableResize code\n * @param anchorContainerSelector An optional selector string to specify the container to host the plugin.\n * The container must not be affected by transform: scale(), otherwise the position calculation will be wrong.\n * If not specified, the plugin will be inserted in document.body\n */\n constructor(\n private onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n private anchorContainerSelector?: string\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'TableResize';\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 this.onMouseMoveDisposer = this.editor.addDomEventHandler({\n mousemove: this.onMouseMove,\n mouseout: e => this.onMouseOut(e),\n });\n }\n\n private onMouseOut = (ev: Event) => {\n if (\n isMouseEvent(ev) &&\n safeInstanceOf(ev.relatedTarget, 'HTMLElement') &&\n this.tableEditor &&\n !this.tableEditor.isOwnedElement(ev.relatedTarget) &&\n !this.editor?.contains(ev.relatedTarget)\n ) {\n this.setTableEditor(null);\n }\n };\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.onMouseMoveDisposer?.();\n this.invalidateTableRects();\n this.disposeTableEditor();\n this.editor = null;\n this.onMouseMoveDisposer = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(e: PluginEvent) {\n switch (e.eventType) {\n case PluginEventType.Input:\n case PluginEventType.ContentChanged:\n case PluginEventType.Scroll:\n case PluginEventType.ZoomChanged:\n this.setTableEditor(null);\n this.invalidateTableRects();\n break;\n }\n }\n\n private onMouseMove = (event: Event) => {\n const e = event as MouseEvent;\n\n if (e.buttons > 0 || !this.editor) {\n return;\n }\n\n this.ensureTableRects();\n\n const editorWindow = this.editor.getDocument().defaultView || window;\n const x = e.pageX - editorWindow.scrollX;\n const y = e.pageY - editorWindow.scrollY;\n let currentTable: HTMLTableElement | null = null;\n\n if (this.tableRectMap) {\n for (let i = this.tableRectMap.length - 1; i >= 0; i--) {\n const { table, rect } = this.tableRectMap[i];\n\n if (\n x >= rect.left - TABLE_RESIZER_LENGTH &&\n x <= rect.right + TABLE_RESIZER_LENGTH &&\n y >= rect.top - TABLE_RESIZER_LENGTH &&\n y <= rect.bottom + TABLE_RESIZER_LENGTH\n ) {\n currentTable = table;\n break;\n }\n }\n }\n\n this.setTableEditor(currentTable, e);\n this.tableEditor?.onMouseMove(x, y);\n };\n\n private setTableEditor(table: HTMLTableElement | null, e?: MouseEvent) {\n if (this.tableEditor && !this.tableEditor.isEditing() && table != this.tableEditor.table) {\n this.disposeTableEditor();\n }\n\n if (!this.tableEditor && table && this.editor && table.rows.length > 0) {\n const container = this.anchorContainerSelector\n ? this.editor.getDocument().querySelector(this.anchorContainerSelector)\n : undefined;\n\n this.tableEditor = new TableEditor(\n this.editor,\n table,\n this.invalidateTableRects,\n this.onShowHelperElement,\n safeInstanceOf(container, 'HTMLElement') ? container : undefined,\n e?.currentTarget\n );\n }\n }\n\n private invalidateTableRects = () => {\n this.tableRectMap = null;\n };\n\n private disposeTableEditor() {\n this.tableEditor?.dispose();\n this.tableEditor = null;\n }\n\n private ensureTableRects() {\n if (!this.tableRectMap && this.editor) {\n this.tableRectMap = [];\n this.editor.queryElements('table', table => {\n if (table.isContentEditable) {\n const rect = normalizeRect(table.getBoundingClientRect());\n if (rect && this.tableRectMap) {\n this.tableRectMap.push({\n table,\n rect,\n });\n }\n }\n });\n }\n }\n}\n\nfunction isMouseEvent(e: Event): e is MouseEvent {\n return !!(e as MouseEvent).pageX;\n}\n","import DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditFeature from './TableEditorFeature';\nimport { createElement, normalizeRect, VTable } from 'roosterjs-editor-dom';\nimport { CreateElementData, Rect } from 'roosterjs-editor-types';\n\nconst CELL_RESIZER_WIDTH = 4;\nconst MIN_CELL_WIDTH = 30;\n\n/**\n * @internal\n */\nexport default function createCellResizer(\n td: HTMLTableCellElement,\n zoomScale: number,\n isRTL: boolean,\n isHorizontal: boolean,\n onStart: () => void,\n onEnd: () => false,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const document = td.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${isHorizontal ? 'row' : 'col'}-resize; user-select: none`,\n };\n\n onShowHelperElement?.(createElementData, 'CellResizer');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = { td, isRTL, zoomScale, onStart };\n const setPosition = isHorizontal ? setHorizontalPosition : setVerticalPosition;\n setPosition(context, div);\n\n const handler: DragAndDropHandler = {\n onDragStart,\n onDragging: isHorizontal ? onDraggingHorizontal : onDraggingVertical,\n onDragEnd: onEnd,\n };\n\n const featureHandler = new DragAndDropHelper(\n div,\n context,\n setPosition,\n handler,\n zoomScale\n );\n\n return { node: td, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n td: HTMLTableCellElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n}\n\ninterface DragAndDropInitValue {\n vTable: VTable;\n currentCells: HTMLTableCellElement[];\n nextCells: HTMLTableCellElement[];\n initialX: number;\n}\n\nfunction onDragStart(context: DragAndDropContext, event: MouseEvent): DragAndDropInitValue {\n const { td, isRTL, zoomScale, onStart } = context;\n const vTable = new VTable(td, true /*normalizeSize*/, zoomScale);\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n onStart();\n\n // calculate and retrieve the cells of the two columns shared by the current vertical resizer\n const currentCells = vTable.getCellsWithBorder(isRTL ? rect.left : rect.right, !isRTL);\n const nextCells = vTable.getCellsWithBorder(isRTL ? rect.left : rect.right, isRTL);\n\n return {\n vTable,\n currentCells,\n nextCells,\n initialX: event.pageX,\n };\n } else {\n return { vTable, currentCells: [], nextCells: [], initialX: 0 }; // Just a fallback\n }\n}\n\nfunction onDraggingHorizontal(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { td, zoomScale } = context;\n const { vTable } = initValue;\n\n vTable.table.removeAttribute('height');\n vTable.table.style.setProperty('height', null);\n vTable.forEachCellOfCurrentRow(cell => {\n if (cell.td) {\n cell.td.style.setProperty(\n 'height',\n cell.td == td ? `${(cell.height ?? 0) / zoomScale + deltaY}px` : null\n );\n }\n });\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n}\n\nfunction onDraggingVertical(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number\n) {\n const { isRTL, zoomScale } = context;\n const { vTable, nextCells, currentCells, initialX } = initValue;\n\n if (!canResizeColumns(event.pageX, currentCells, nextCells, isRTL, zoomScale)) {\n return false;\n }\n\n // Since we allow the user to resize the table width on adjusting the border of the last cell,\n // we need to make the table width resizable by setting it as null;\n // We also allow the user to resize the table width if Shift key is pressed\n const isLastCell = nextCells.length == 0;\n const isShiftPressed = event.shiftKey;\n\n if (isLastCell || isShiftPressed) {\n vTable.table.style.setProperty('width', null);\n }\n\n const newWidthList = new Map();\n currentCells.forEach(td => {\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n td.style.wordBreak = 'break-word';\n td.style.whiteSpace = 'normal';\n td.style.boxSizing = 'border-box';\n const newWidth = getHorizontalDistance(rect, event.pageX, !isRTL) / zoomScale;\n newWidthList.set(td, newWidth);\n }\n });\n newWidthList.forEach((newWidth, td) => {\n td.style.width = `${newWidth}px`;\n });\n if (!isShiftPressed) {\n nextCells.forEach(td => {\n const width = td.rowSpan > 1 ? 0 : td.getBoundingClientRect().right - initialX;\n td.style.wordBreak = 'break-word';\n td.style.whiteSpace = 'normal';\n td.style.boxSizing = 'border-box';\n td.style.width = td.rowSpan > 1 ? '' : width / zoomScale - deltaX + 'px';\n });\n }\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n}\n\nfunction getHorizontalDistance(rect: Rect, pos: number, toLeft: boolean): number {\n return toLeft ? pos - rect.left : rect.right - pos;\n}\n\nfunction setHorizontalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.style.top = rect.bottom - CELL_RESIZER_WIDTH + 'px';\n trigger.style.left = rect.left + 'px';\n trigger.style.width = rect.right - rect.left + 'px';\n trigger.style.height = CELL_RESIZER_WIDTH + 'px';\n }\n}\n\nfunction setVerticalPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { td, isRTL } = context;\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n trigger.style.top = rect.top + 'px';\n trigger.style.left = (isRTL ? rect.left : rect.right) - CELL_RESIZER_WIDTH + 1 + 'px';\n trigger.style.width = CELL_RESIZER_WIDTH + 'px';\n trigger.style.height = rect.bottom - rect.top + 'px';\n }\n}\n\n/**\n *\n * @param newPos The position to where we want to move the vertical border\n * @returns if the move is allowed, or, if any of the cells on either side of the vertical border is smaller than\n * the minimum width, such move is not allowed\n */\nfunction canResizeColumns(\n newPos: number,\n currentCells: HTMLTableCellElement[],\n nextCells: HTMLTableCellElement[],\n isRTL: boolean,\n zoomScale: number\n) {\n for (let i = 0; i < currentCells.length; i++) {\n const td = currentCells[i];\n const rect = normalizeRect(td.getBoundingClientRect());\n if (rect) {\n const width = getHorizontalDistance(rect, newPos, !isRTL) / zoomScale;\n if (width < MIN_CELL_WIDTH) {\n return false;\n }\n }\n }\n\n for (let i = 0; i < nextCells.length; i++) {\n const td = nextCells[i];\n let width: number = Number.MAX_SAFE_INTEGER;\n if (td) {\n const rect = normalizeRect(td.getBoundingClientRect());\n\n if (rect) {\n width = getHorizontalDistance(rect, newPos, isRTL) / zoomScale;\n }\n }\n\n if (width < MIN_CELL_WIDTH) {\n return false;\n }\n }\n\n return true;\n}\n","import createCellResizer from './CellResizer';\nimport createTableInserter from './TableInserter';\nimport createTableResizer from './TableResizer';\nimport createTableSelector from './TableSelector';\nimport TableEditFeature, { disposeTableEditFeature } from './TableEditorFeature';\nimport {\n contains,\n getComputedStyle,\n normalizeRect,\n Position,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\nimport {\n ChangeSource,\n IEditor,\n NodePosition,\n TableSelection,\n CreateElementData,\n} from 'roosterjs-editor-types';\n\nconst INSERTER_HOVER_OFFSET = 6;\nconst enum TOP_OR_SIDE {\n top = 0,\n side = 1,\n}\n/**\n * @internal\n *\n * A table has 6 hot areas to be resized/edited (take LTR example):\n *\n * [6] [ ]\n * +[ 1 ]+--------------------+\n * |[ ]| |\n * [ ] [ ] |\n * [ ] [ ] |\n * [2] [3] |\n * [ ] [ ] |\n * [ ][ 4 ]| |\n * +------------------+--------------------+\n * | | |\n * | | |\n * | | |\n * +------------------+--------------------+\n * [5]\n *\n * 1 - Hover area to show insert column button\n * 2 - Hover area to show insert row button\n * 3 - Hover area to show vertical resizing bar\n * 4 - Hover area to show horizontal resizing bar\n * 5 - Hover area to show whole table resize button\n * 6 - Hover area to show whole table selector button\n *\n * When set a different current table or change current TD, we need to update these areas\n */\nexport default class TableEditor {\n // 1, 2 - Insert a column or a row\n private horizontalInserter: TableEditFeature | null = null;\n private verticalInserter: TableEditFeature | null = null;\n\n // 3, 4 - Resize a column or a row from a cell\n private horizontalResizer: TableEditFeature | null = null;\n private verticalResizer: TableEditFeature | null = null;\n\n // 5 - Resize whole table\n private tableResizer: TableEditFeature | null = null;\n\n // 6 - Select whole table\n private tableSelector: TableEditFeature | null = null;\n\n private isRTL: boolean;\n private start: NodePosition | null = null;\n private end: NodePosition | null = null;\n private isCurrentlyEditing: boolean;\n\n constructor(\n private editor: IEditor,\n public readonly table: HTMLTableElement,\n private onChanged: () => void,\n private onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n private anchorContainer?: HTMLElement,\n private contentDiv?: EventTarget | null\n ) {\n this.isRTL = getComputedStyle(table, 'direction') == 'rtl';\n this.setEditorFeatures();\n this.isCurrentlyEditing = false;\n }\n\n dispose() {\n this.disposeTableResizer();\n this.disposeCellResizers();\n this.disposeTableInserter();\n this.disposeTableSelector();\n }\n\n isEditing(): boolean {\n return this.isCurrentlyEditing;\n }\n\n isOwnedElement(node: Node) {\n return [\n this.tableResizer,\n this.tableSelector,\n this.horizontalInserter,\n this.verticalInserter,\n this.horizontalResizer,\n this.verticalResizer,\n ]\n .filter(feature => !!feature?.div)\n .some(feature => contains(feature?.div, node, true /* treatSameNodeAsContain */));\n }\n\n onMouseMove(x: number, y: number) {\n //Get Cell [0,0]\n const firstCell = this.table.rows[0]?.cells[0];\n\n if (!firstCell) {\n return;\n }\n\n const firstCellRect = normalizeRect(firstCell.getBoundingClientRect());\n\n if (!firstCellRect) {\n return;\n }\n\n // Determine if cursor is on top or side\n const topOrSide =\n y <= firstCellRect.top + INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.top\n : this.isRTL\n ? x >= firstCellRect.right - INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.side\n : undefined\n : x <= firstCellRect.left + INSERTER_HOVER_OFFSET\n ? TOP_OR_SIDE.side\n : undefined;\n const topOrSideBinary = topOrSide ? 1 : 0;\n\n // Get whole table rect\n const tableRect = normalizeRect(this.table.getBoundingClientRect());\n // i is row index, j is column index\n for (let i = 0; i < this.table.rows.length; i++) {\n const tr = this.table.rows[i];\n let j = 0;\n for (; j < tr.cells.length; j++) {\n const td = tr.cells[j];\n const tdRect = normalizeRect(td.getBoundingClientRect());\n\n if (!tdRect || !tableRect) {\n continue;\n }\n\n // Determine the cell the cursor is in range of\n // Offset is only used for first row and column\n const lessThanBottom = y <= tdRect.bottom;\n const lessThanRight = this.isRTL\n ? x <= tdRect.right + INSERTER_HOVER_OFFSET * topOrSideBinary\n : x <= tdRect.right;\n const moreThanLeft = this.isRTL\n ? x >= tdRect.left\n : x >= tdRect.left - INSERTER_HOVER_OFFSET * topOrSideBinary;\n\n if (lessThanBottom && lessThanRight && moreThanLeft) {\n const isOnLeftOrRight = this.isRTL\n ? tdRect.right <= tableRect.right && tdRect.right >= tableRect.right - 1\n : tdRect.left >= tableRect.left && tdRect.left <= tableRect.left + 1;\n if (i === 0 && topOrSide == TOP_OR_SIDE.top) {\n const center = (tdRect.left + tdRect.right) / 2;\n const isOnRightHalf = this.isRTL ? x < center : x > center;\n this.setInserterTd(\n isOnRightHalf ? td : tr.cells[j - 1],\n false /*isHorizontal*/\n );\n } else if (j === 0 && topOrSide == TOP_OR_SIDE.side && isOnLeftOrRight) {\n const tdAbove = this.table.rows[i - 1]?.cells[0];\n const tdAboveRect = tdAbove\n ? normalizeRect(tdAbove.getBoundingClientRect())\n : null;\n\n const isTdNotAboveMerged = !tdAboveRect\n ? null\n : this.isRTL\n ? tdAboveRect.right === tdRect.right\n : tdAboveRect.left === tdRect.left;\n\n this.setInserterTd(\n y < (tdRect.top + tdRect.bottom) / 2 && isTdNotAboveMerged\n ? tdAbove\n : td,\n true /*isHorizontal*/\n );\n } else {\n this.setInserterTd(null);\n }\n\n this.setResizingTd(td);\n\n //Cell found\n break;\n }\n }\n\n if (j < tr.cells.length) {\n break;\n }\n }\n\n // Create Selector and Resizer\n this.setEditorFeatures();\n }\n\n private setEditorFeatures() {\n if (!this.tableSelector) {\n this.tableSelector = createTableSelector(\n this.table,\n this.editor,\n this.onSelect,\n this.getOnMouseOut,\n this.onShowHelperElement,\n this.contentDiv,\n this.anchorContainer\n );\n }\n\n if (!this.tableResizer) {\n this.tableResizer = createTableResizer(\n this.table,\n this.editor,\n this.onStartTableResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.contentDiv,\n this.anchorContainer\n );\n }\n }\n\n private setResizingTd(td: HTMLTableCellElement) {\n if (this.horizontalResizer && this.horizontalResizer.node != td) {\n this.disposeCellResizers();\n }\n\n if (!this.horizontalResizer && td) {\n const zoomScale = this.editor.getZoomScale();\n this.horizontalResizer = createCellResizer(\n td,\n zoomScale,\n this.isRTL,\n true /*isHorizontal*/,\n this.onStartCellResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.anchorContainer\n );\n this.verticalResizer = createCellResizer(\n td,\n zoomScale,\n this.isRTL,\n false /*isHorizontal*/,\n this.onStartCellResize,\n this.onFinishEditing,\n this.onShowHelperElement,\n this.anchorContainer\n );\n }\n }\n\n /**\n * create or remove TableInserter\n * @param td td to attach to, set this to null to remove inserters (both horizontal and vertical)\n */\n private setInserterTd(td: HTMLTableCellElement | null, isHorizontal?: boolean) {\n const inserter = isHorizontal ? this.horizontalInserter : this.verticalInserter;\n if (td === null || (inserter && inserter.node != td)) {\n this.disposeTableInserter();\n }\n\n if (!this.horizontalInserter && !this.verticalInserter && td) {\n const newInserter = createTableInserter(\n this.editor,\n td,\n this.isRTL,\n !!isHorizontal,\n this.onInserted,\n this.getOnMouseOut,\n this.onShowHelperElement,\n this.anchorContainer\n );\n if (isHorizontal) {\n this.horizontalInserter = newInserter;\n } else {\n this.verticalInserter = newInserter;\n }\n }\n }\n\n private disposeTableResizer() {\n if (this.tableResizer) {\n disposeTableEditFeature(this.tableResizer);\n this.tableResizer = null;\n }\n }\n\n private disposeTableInserter() {\n if (this.horizontalInserter) {\n disposeTableEditFeature(this.horizontalInserter);\n this.horizontalInserter = null;\n }\n if (this.verticalInserter) {\n disposeTableEditFeature(this.verticalInserter);\n this.verticalInserter = null;\n }\n }\n\n private disposeCellResizers() {\n if (this.horizontalResizer) {\n disposeTableEditFeature(this.horizontalResizer);\n this.horizontalResizer = null;\n }\n if (this.verticalResizer) {\n disposeTableEditFeature(this.verticalResizer);\n this.verticalResizer = null;\n }\n }\n\n private disposeTableSelector() {\n if (this.tableSelector) {\n disposeTableEditFeature(this.tableSelector);\n this.tableSelector = null;\n }\n }\n\n private onFinishEditing = (): false => {\n this.editor.focus();\n\n if (this.start && this.end) {\n this.editor.select(this.start, this.end);\n }\n\n this.editor.addUndoSnapshot(() => {}, ChangeSource.Format); // Pass in an empty callback to make sure ContentChangedEvent is triggered\n this.onChanged();\n this.isCurrentlyEditing = false;\n\n return false;\n };\n\n private onStartTableResize = () => {\n this.isCurrentlyEditing = true;\n this.onStartResize();\n };\n\n private onStartCellResize = () => {\n this.isCurrentlyEditing = true;\n this.disposeTableResizer();\n this.onStartResize();\n };\n\n private onStartResize() {\n this.isCurrentlyEditing = true;\n const range = this.editor.getSelectionRange();\n\n if (range) {\n this.start = Position.getStart(range);\n this.end = Position.getEnd(range);\n }\n\n this.editor.addUndoSnapshot();\n }\n\n private onInserted = (table: HTMLTableElement) => {\n this.editor.transformToDarkColor(table);\n this.disposeTableResizer();\n this.onFinishEditing();\n };\n\n /**\n * Public only for testing purposes\n * @param table the table to select\n */\n public onSelect = (table: HTMLTableElement) => {\n this.editor.focus();\n if (table) {\n const vTable = new VTable(table);\n if (vTable.cells) {\n const rows = vTable.cells.length - 1;\n let lastCellIndex: number = 0;\n vTable.cells[rows].forEach((cell, index) => {\n lastCellIndex = index;\n });\n\n const selection: TableSelection = {\n firstCell: {\n x: 0,\n y: 0,\n },\n lastCell: {\n y: rows,\n x: lastCellIndex,\n },\n };\n this.editor.select(table, selection);\n }\n }\n };\n\n private getOnMouseOut = (feature: HTMLElement) => {\n return (ev: MouseEvent) => {\n if (\n feature &&\n ev.relatedTarget != feature &&\n safeInstanceOf(this.contentDiv, 'HTMLElement') &&\n safeInstanceOf(ev.relatedTarget, 'HTMLElement') &&\n !contains(this.contentDiv, ev.relatedTarget, true /* treatSameNodeAsContain */)\n ) {\n this.dispose();\n }\n };\n };\n}\n","import Disposable from '../../../pluginUtils/Disposable';\n\n/**\n * @internal\n */\nexport default interface TableEditFeature {\n node: Node;\n div: HTMLDivElement | null;\n featureHandler: Disposable | null;\n}\n\n/**\n * @internal\n */\nexport function disposeTableEditFeature(resizer: TableEditFeature | null) {\n if (resizer) {\n resizer.div?.parentNode?.removeChild(resizer.div);\n resizer.div = null;\n resizer.featureHandler?.dispose();\n resizer.featureHandler = null;\n }\n}\n","import Disposable from '../../../pluginUtils/Disposable';\nimport TableEditFeature from './TableEditorFeature';\nimport { createElement, getIntersectedRect, normalizeRect, VTable } from 'roosterjs-editor-dom';\nimport { CreateElementData, IEditor, TableOperation } from 'roosterjs-editor-types';\n\nconst INSERTER_COLOR = '#4A4A4A';\nconst INSERTER_COLOR_DARK_MODE = 'white';\nconst INSERTER_SIDE_LENGTH = 12;\nconst INSERTER_BORDER_SIZE = 1;\n\n/**\n * @internal\n */\nexport default function createTableInserter(\n editor: IEditor,\n td: HTMLTableCellElement,\n isRTL: boolean,\n isHorizontal: boolean,\n onInsert: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const table = editor.getElementAtCursor('table', td);\n\n const tdRect = normalizeRect(td.getBoundingClientRect());\n const viewPort = editor.getVisibleViewport();\n const tableRect = table && viewPort ? getIntersectedRect([table], [viewPort]) : null;\n\n // set inserter position\n if (tdRect && tableRect) {\n const document = td.ownerDocument;\n const createElementData = getInsertElementData(\n isHorizontal,\n editor.isDarkMode(),\n isRTL,\n editor.getDefaultFormat().backgroundColor || 'white'\n );\n\n onShowHelperElement?.(createElementData, 'TableInserter');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n if (isHorizontal) {\n // tableRect.left/right is used because the Inserter is always intended to be on the side\n div.style.left = `${\n isRTL\n ? tableRect.right\n : tableRect.left - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n div.style.top = `${tdRect.bottom - 8}px`;\n (div.firstChild as HTMLElement).style.width = `${tableRect.right - tableRect.left}px`;\n } else {\n div.style.left = `${isRTL ? tdRect.left - 8 : tdRect.right - 8}px`;\n // tableRect.top is used because the Inserter is always intended to be on top\n div.style.top = `${\n tableRect.top - (INSERTER_SIDE_LENGTH - 1 + 2 * INSERTER_BORDER_SIZE)\n }px`;\n (div.firstChild as HTMLElement).style.height = `${tableRect.bottom - tableRect.top}px`;\n }\n\n (anchorContainer || document.body).appendChild(div);\n\n const handler = new TableInsertHandler(\n div,\n td,\n isHorizontal,\n editor,\n onInsert,\n getOnMouseOut\n );\n\n return { div, featureHandler: handler, node: td };\n }\n\n return null;\n}\n\nclass TableInsertHandler implements Disposable {\n private onMouseOutEvent: null | ((ev: MouseEvent) => void);\n constructor(\n private div: HTMLDivElement,\n private td: HTMLTableCellElement,\n private isHorizontal: boolean,\n private editor: IEditor,\n private onInsert: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void\n ) {\n this.div.addEventListener('click', this.insertTd);\n this.onMouseOutEvent = getOnMouseOut(div);\n this.div.addEventListener('mouseout', this.onMouseOutEvent);\n }\n\n dispose() {\n this.div.removeEventListener('click', this.insertTd);\n\n if (this.onMouseOutEvent) {\n this.div.removeEventListener('mouseout', this.onMouseOutEvent);\n }\n\n this.onMouseOutEvent = null;\n }\n\n private insertTd = () => {\n let vtable = new VTable(this.td);\n if (!this.isHorizontal) {\n vtable.normalizeTableCellSize(this.editor.getZoomScale());\n\n // Since adding new column will cause table width to change, we need to remove width properties\n vtable.table.removeAttribute('width');\n vtable.table.style.setProperty('width', null);\n }\n\n vtable.edit(this.isHorizontal ? TableOperation.InsertBelow : TableOperation.InsertRight);\n vtable.writeBack();\n\n this.onInsert(vtable.table);\n };\n}\n\nfunction getInsertElementData(\n isHorizontal: boolean,\n isDark: boolean,\n isRTL: boolean,\n backgroundColor: string\n): CreateElementData {\n const inserterColor = isDark ? INSERTER_COLOR_DARK_MODE : INSERTER_COLOR;\n const outerDivStyle = `position: fixed; width: ${INSERTER_SIDE_LENGTH}px; height: ${INSERTER_SIDE_LENGTH}px; font-size: 16px; color: black; line-height: 8px; vertical-align: middle; text-align: center; cursor: pointer; border: solid ${INSERTER_BORDER_SIZE}px ${inserterColor}; border-radius: 50%; background-color: ${backgroundColor}`;\n const leftOrRight = isRTL ? 'right' : 'left';\n const childBaseStyles = `position: absolute; box-sizing: border-box; background-color: ${backgroundColor};`;\n const childInfo: CreateElementData = {\n tag: 'div',\n style:\n childBaseStyles +\n (isHorizontal\n ? `${leftOrRight}: 12px; top: 5px; height: 3px; border-top: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-left: 0px;`\n : `left: 5px; top: 12px; width: 3px; border-left: 1px solid ${inserterColor}; border-right: 1px solid ${inserterColor}; border-bottom: 1px solid ${inserterColor}; border-top: 0px;`),\n };\n\n return {\n tag: 'div',\n style: outerDivStyle,\n children: [childInfo, '+'],\n };\n}\n","import DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditFeature from './TableEditorFeature';\nimport { CreateElementData, IEditor, Rect } from 'roosterjs-editor-types';\nimport {\n createElement,\n getComputedStyle,\n normalizeRect,\n safeInstanceOf,\n VTable,\n} from 'roosterjs-editor-dom';\n\nconst TABLE_RESIZER_LENGTH = 12;\nconst MIN_CELL_WIDTH = 30;\nconst MIN_CELL_HEIGHT = 20;\n\n/**\n * @internal\n */\nexport default function createTableResizer(\n table: HTMLTableElement,\n editor: IEditor,\n onStart: () => void,\n onEnd: () => false,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableBottomVisible(editor, rect, contentDiv)) {\n return null;\n }\n\n const document = table.ownerDocument;\n const isRTL = getComputedStyle(table, 'direction') == 'rtl';\n const zoomScale = editor.getZoomScale();\n const createElementData = {\n tag: 'div',\n style: `position: fixed; cursor: ${\n isRTL ? 'ne' : 'nw'\n }-resize; user-select: none; border: 1px solid #808080`,\n };\n\n onShowHelperElement?.(createElementData, 'TableResizer');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.style.width = `${TABLE_RESIZER_LENGTH}px`;\n div.style.height = `${TABLE_RESIZER_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: DragAndDropContext = {\n isRTL,\n table,\n zoomScale,\n onStart,\n onEnd,\n div,\n editor,\n contentDiv,\n };\n\n setDivPosition(context, div);\n\n const featureHandler = new DragAndDropHelper(\n div,\n context,\n hideResizer, // Resizer is hidden while dragging only\n {\n onDragStart,\n onDragging,\n onDragEnd,\n },\n zoomScale\n );\n\n return { node: table, div, featureHandler };\n}\n\ninterface DragAndDropContext {\n table: HTMLTableElement;\n isRTL: boolean;\n zoomScale: number;\n onStart: () => void;\n onEnd: () => false;\n div: HTMLDivElement;\n editor: IEditor;\n contentDiv?: EventTarget | null;\n}\n\ninterface DragAndDropInitValue {\n originalRect: DOMRect;\n vTable: VTable;\n}\n\nfunction onDragStart(context: DragAndDropContext) {\n context.onStart();\n\n return {\n originalRect: context.table.getBoundingClientRect(),\n vTable: new VTable(context.table, true /*normalizeTable*/, context.zoomScale),\n };\n}\n\nfunction onDragging(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue,\n deltaX: number,\n deltaY: number\n) {\n const { isRTL, zoomScale } = context;\n const { originalRect, vTable } = initValue;\n const ratioX = 1.0 + (deltaX / originalRect.width) * zoomScale * (isRTL ? -1 : 1);\n const ratioY = 1.0 + (deltaY / originalRect.height) * zoomScale;\n const shouldResizeX = Math.abs(ratioX - 1.0) > 1e-3;\n const shouldResizeY = Math.abs(ratioY - 1.0) > 1e-3;\n\n if (vTable.cells && (shouldResizeX || shouldResizeY)) {\n for (let i = 0; i < vTable.cells.length; i++) {\n for (let j = 0; j < vTable.cells[i].length; j++) {\n const cell = vTable.cells[i][j];\n if (cell.td) {\n if (shouldResizeX) {\n // the width of some external table is fixed, we need to make it resizable\n vTable.table.style.setProperty('width', null);\n const newWidth = ((cell.width ?? 0) * ratioX) / zoomScale;\n cell.td.style.boxSizing = 'border-box';\n if (newWidth >= MIN_CELL_WIDTH) {\n cell.td.style.wordBreak = 'break-word';\n cell.td.style.whiteSpace = 'normal';\n cell.td.style.width = `${newWidth}px`;\n }\n }\n\n if (shouldResizeY) {\n // the height of some external table is fixed, we need to make it resizable\n vTable.table.style.setProperty('height', null);\n if (j == 0) {\n const newHeight = ((cell.height ?? 0) * ratioY) / zoomScale;\n if (newHeight >= MIN_CELL_HEIGHT) {\n cell.td.style.height = `${newHeight}px`;\n }\n } else {\n cell.td.style.setProperty('height', null);\n }\n }\n }\n }\n }\n\n // To avoid apply format styles when the table is being resizing, the skipApplyFormat is set to true.\n vTable.writeBack(true /**skipApplyFormat*/);\n return true;\n } else {\n return false;\n }\n}\n\nfunction onDragEnd(\n context: DragAndDropContext,\n event: MouseEvent,\n initValue: DragAndDropInitValue | undefined\n) {\n if (\n isTableBottomVisible(\n context.editor,\n normalizeRect(context.table.getBoundingClientRect()),\n context.contentDiv\n )\n ) {\n context.div.style.visibility = 'visible';\n setDivPosition(context, context.div);\n }\n context.onEnd();\n return false;\n}\n\nfunction setDivPosition(context: DragAndDropContext, trigger: HTMLElement) {\n const { table, isRTL } = context;\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (rect) {\n trigger.style.top = `${rect.bottom}px`;\n trigger.style.left = isRTL\n ? `${rect.left - TABLE_RESIZER_LENGTH - 2}px`\n : `${rect.right}px`;\n }\n}\n\nfunction hideResizer(context: DragAndDropContext, trigger: HTMLElement) {\n trigger.style.visibility = 'hidden';\n}\n\nfunction isTableBottomVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: EventTarget | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (contentDiv && safeInstanceOf(contentDiv, 'HTMLElement') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return (\n !!containerRect &&\n containerRect.bottom >= rect.bottom &&\n visibleViewport.bottom >= rect.bottom\n );\n }\n\n return true;\n}\n","import DragAndDropHandler from '../../../pluginUtils/DragAndDropHandler';\nimport DragAndDropHelper from '../../../pluginUtils/DragAndDropHelper';\nimport TableEditorFeature from './TableEditorFeature';\nimport { CreateElementData, IEditor, Rect } from 'roosterjs-editor-types';\nimport {\n createElement,\n normalizeRect,\n safeInstanceOf,\n getComputedStyle,\n} from 'roosterjs-editor-dom';\n\nconst TABLE_SELECTOR_LENGTH = 12;\nconst TABLE_SELECTOR_ID = '_Table_Selector';\n\n/**\n * @internal\n */\nexport default function createTableSelector(\n table: HTMLTableElement,\n editor: IEditor,\n onFinishDragging: (table: HTMLTableElement) => void,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n onShowHelperElement?: (\n elementData: CreateElementData,\n helperType: 'CellResizer' | 'TableInserter' | 'TableResizer' | 'TableSelector'\n ) => void,\n contentDiv?: EventTarget | null,\n anchorContainer?: HTMLElement\n): TableEditorFeature | null {\n const rect = normalizeRect(table.getBoundingClientRect());\n\n if (!isTableTopVisible(editor, rect, contentDiv)) {\n return null;\n }\n\n const zoomScale = editor.getZoomScale();\n const document = table.ownerDocument;\n const createElementData = {\n tag: 'div',\n style: 'position: fixed; cursor: all-scroll; user-select: none; border: 1px solid #808080',\n };\n\n onShowHelperElement?.(createElementData, 'TableSelector');\n\n const div = createElement(createElementData, document) as HTMLDivElement;\n\n div.id = TABLE_SELECTOR_ID;\n div.style.width = `${TABLE_SELECTOR_LENGTH}px`;\n div.style.height = `${TABLE_SELECTOR_LENGTH}px`;\n\n (anchorContainer || document.body).appendChild(div);\n\n const context: TableSelectorContext = {\n table,\n zoomScale,\n rect,\n isRTL: getComputedStyle(table, 'direction') == 'rtl',\n };\n\n setDivPosition(context, div);\n\n const onDragEnd = (context: TableSelectorContext, event: MouseEvent): false => {\n if (event.target == div) {\n onFinishDragging(context.table);\n }\n return false;\n };\n\n const featureHandler = new TableSelectorFeature(\n div,\n context,\n setDivPosition,\n {\n onDragEnd,\n },\n context.zoomScale,\n getOnMouseOut\n );\n\n return { div, featureHandler, node: table };\n}\n\ninterface TableSelectorContext {\n table: HTMLTableElement;\n zoomScale: number;\n rect: Rect | null;\n isRTL: boolean;\n}\n\ninterface TableSelectorInitValue {\n event: MouseEvent;\n}\n\nclass TableSelectorFeature extends DragAndDropHelper {\n private onMouseOut: ((ev: MouseEvent) => void) | null;\n\n constructor(\n private div: HTMLElement,\n context: TableSelectorContext,\n onSubmit: (\n context: TableSelectorContext,\n trigger: HTMLElement,\n container?: HTMLElement\n ) => void,\n handler: DragAndDropHandler,\n zoomScale: number,\n getOnMouseOut: (feature: HTMLElement) => (ev: MouseEvent) => void,\n forceMobile?: boolean | undefined,\n container?: HTMLElement\n ) {\n super(div, context, onSubmit, handler, zoomScale, forceMobile);\n this.onMouseOut = getOnMouseOut(div);\n div.addEventListener('mouseout', this.onMouseOut);\n }\n\n dispose(): void {\n super.dispose();\n if (this.onMouseOut) {\n this.div.removeEventListener('mouseout', this.onMouseOut);\n }\n this.onMouseOut = null;\n }\n}\n\nfunction setDivPosition(context: TableSelectorContext, trigger: HTMLElement) {\n const { rect } = context;\n if (rect) {\n trigger.style.top = `${rect.top - TABLE_SELECTOR_LENGTH}px`;\n trigger.style.left = `${rect.left - TABLE_SELECTOR_LENGTH - 2}px`;\n }\n}\n\nfunction isTableTopVisible(\n editor: IEditor,\n rect: Rect | null,\n contentDiv?: EventTarget | null\n): boolean {\n const visibleViewport = editor.getVisibleViewport();\n if (contentDiv && safeInstanceOf(contentDiv, 'HTMLElement') && visibleViewport && rect) {\n const containerRect = normalizeRect(contentDiv.getBoundingClientRect());\n\n return !!containerRect && containerRect.top <= rect.top && visibleViewport.top <= rect.top;\n }\n\n return true;\n}\n","export { default as TableResize } from './TableResize';\n","import { applyFormat, getEntitySelector, getTagOfNode } from 'roosterjs-editor-dom';\nimport { insertEntity } from 'roosterjs-editor-api';\nimport {\n DefaultFormat,\n EditorPlugin,\n Entity,\n EntityOperation,\n IEditor,\n PluginEvent,\n PluginEventType,\n ContentPosition,\n} from 'roosterjs-editor-types';\n\nconst ENTITY_TYPE = 'WATERMARK_WRAPPER';\n\n/**\n * A watermark plugin to manage watermark string for roosterjs\n */\nexport default class Watermark implements EditorPlugin {\n private editor: IEditor | null = null;\n private disposer: (() => void) | null = null;\n private format: DefaultFormat;\n\n /**\n * Create an instance of Watermark plugin\n * @param watermark The watermark string\n */\n constructor(private watermark: string, format?: DefaultFormat, private customClass?: string) {\n this.format = format || {\n fontSize: '14px',\n textColors: {\n lightModeColor: '#AAAAAA',\n darkModeColor: '#6B6B6B',\n },\n };\n }\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Watermark';\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 this.disposer = this.editor.addDomEventHandler({\n focus: this.showHideWatermark,\n blur: this.showHideWatermark,\n });\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.disposer?.();\n this.disposer = null;\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (\n event.eventType == PluginEventType.EditorReady ||\n (event.eventType == PluginEventType.ContentChanged &&\n (event.data)?.type != ENTITY_TYPE)\n ) {\n this.showHideWatermark();\n } else if (\n event.eventType == PluginEventType.EntityOperation &&\n event.entity.type == ENTITY_TYPE &&\n this.editor\n ) {\n const {\n operation,\n entity: { wrapper },\n } = event;\n if (operation == EntityOperation.ReplaceTemporaryContent) {\n this.removeWatermark(wrapper);\n } else if (event.operation == EntityOperation.NewEntity) {\n applyFormat(\n wrapper,\n this.format,\n this.editor.isDarkMode(),\n this.editor.getDarkColorHandler()\n );\n wrapper.spellcheck = false;\n }\n }\n }\n\n private showHideWatermark = () => {\n if (!this.editor) {\n return;\n }\n const hasFocus = this.editor.hasFocus();\n const watermarks = this.editor.queryElements(getEntitySelector(ENTITY_TYPE));\n const isShowing = watermarks.length > 0;\n\n if (hasFocus && isShowing) {\n watermarks.forEach(this.removeWatermark);\n this.editor.focus();\n } else if (!hasFocus && !isShowing && this.editor.isEmpty()) {\n const newEntity = insertEntity(\n this.editor,\n ENTITY_TYPE,\n this.editor.getDocument().createTextNode(this.watermark),\n false /*isBlock*/,\n false /*isReadonly*/,\n ContentPosition.Begin\n );\n if (this.customClass) {\n newEntity.wrapper.classList.add(this.customClass);\n }\n }\n };\n\n private removeWatermark = (wrapper: HTMLElement) => {\n const parentNode = wrapper.parentNode;\n parentNode?.removeChild(wrapper);\n\n // After remove watermark node, if it leaves an empty DIV, append a BR node into it to make it a regular empty line\n if (\n parentNode &&\n this.editor?.contains(parentNode) &&\n getTagOfNode(parentNode) == 'DIV' &&\n !parentNode.firstChild\n ) {\n parentNode.appendChild(this.editor.getDocument().createElement('BR'));\n }\n };\n}\n","export { default as Watermark } from './Watermark';\n","export * from 'roosterjs-editor-types/lib/compatibleTypes';\n","/**\r\n * enum for setting block alignment, used by setAlignment API\r\n */\r\nexport enum CompatibleAlignment {\r\n\r\n /**\r\n * Align left\r\n */\r\n Left,\r\n\r\n /**\r\n * Align center\r\n */\r\n Center,\r\n\r\n /**\r\n * Align right\r\n */\r\n Right,\r\n}\r\n","/**\n * Enum used to control the different types of bullet list\n */\r\nexport enum CompatibleBulletListType {\r\n\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Bullet triggered by *\n */\n Disc = 1,\n\n /**\n * Bullet triggered by -\n */\n Dash = 2,\n\n /**\n * Bullet triggered by --\n */\n Square = 3,\n\n /**\n * Bullet triggered by >\n */\n ShortArrow = 4,\n\n /**\n * Bullet triggered by ->\n */\n LongArrow = 5,\n\n /**\n * Bullet triggered by =>\n */\n UnfilledArrow = 6,\n\n /**\n * Bullet triggered by —\n */\n Hyphen = 7,\n\n /**\n * Bullet triggered by -->\n */\n DoubleLongArrow = 8,\n\n /**\n * Bullet type circle\n */\n Circle = 9,\n\n /**\n * Maximum value of the enum\n */\n Max = 9,\n}\r\n","/**\n * The enum used for controlling the capitalization of text.\n * Used by changeCapitalization API\n */\r\nexport enum CompatibleCapitalization {\r\n\n /**\n * Transforms the first character after punctuation mark followed by space\n * to uppercase and the rest of characters to lowercase.\n */\n Sentence = 'sentence',\n\n /**\n * Transforms all characters to lowercase\n */\n Lowercase = 'lowercase',\n\n /**\n * Transforms all characters to uppercase\n */\n Uppercase = 'uppercase',\n\n /**\n * Transforms the first character of each word to uppercase\n */\n CapitalizeEachWord = 'capitalize',\n}\r\n","/**\r\n * Possible change sources. Here are the predefined sources.\r\n * It can also be other string if the change source can't fall into these sources.\r\n */\r\nexport enum CompatibleChangeSource {\r\n\r\n /**\r\n * Content changed by auto link\r\n */\r\n AutoLink = 'AutoLink',\r\n\r\n /**\r\n * Content changed by create link\r\n */\r\n CreateLink = 'CreateLink',\r\n\r\n /**\r\n * Content changed by format\r\n */\r\n Format = 'Format',\r\n\r\n /**\r\n * Content changed by image resize\r\n */\r\n ImageResize = 'ImageResize',\r\n\r\n /**\r\n * Content changed by paste\r\n */\r\n Paste = 'Paste',\r\n\r\n /**\r\n * Content changed by setContent API\r\n */\r\n SetContent = 'SetContent',\r\n\r\n /**\r\n * Content changed by cut operation\r\n */\r\n Cut = 'Cut',\r\n\r\n /**\r\n * Content changed by drag & drop operation\r\n */\r\n Drop = 'Drop',\r\n\r\n /**\r\n * Insert a new entity into editor\r\n */\r\n InsertEntity = 'InsertEntity',\r\n\r\n /**\r\n * Editor is switched to dark mode, content color is changed\r\n */\r\n SwitchToDarkMode = 'SwitchToDarkMode',\r\n\r\n /**\r\n * Editor is switched to light mode, content color is changed\r\n */\r\n SwitchToLightMode = 'SwitchToLightMode',\r\n\r\n /**\r\n * List chain reorganized numbers of lists\r\n */\r\n ListChain = 'ListChain',\r\n\r\n /**\r\n * Keyboard event, used by Content Model.\r\n * Data of this event will be the key code number\r\n */\r\n Keyboard = 'Keyboard',\r\n}\r\n","/**\n * Represents the strategy to clear the format of the current editor selection\n */\r\nexport enum CompatibleClearFormatMode {\r\n\n /**\n * Inline format. Remove text format.\n */\n Inline,\n\n /**\n * BLock format. Remove text and structure format of the block.\n */\n Block,\n\n /**\n * Detect Inline or Block format based on the current editor selector.\n */\n AutoDetect,\n}\r\n","/**\n * Represents the mode of color transformation\n */\r\nexport enum CompatibleColorTransformDirection {\r\n\n /**\n * Transform from light to dark\n */\n LightToDark = 0,\n\n /**\n * Transform from dark to light\n */\n DarkToLight = 1,\n}\r\n","/**\r\n * The position. Mostly used for content insertion and traversing\r\n * On insertion, we will need to specify where we want the content to be placed (begin, end, selection or outside)\r\n * On content traversing, we will need to specify the start position of traversing\r\n */\r\nexport enum CompatibleContentPosition {\r\n\r\n /**\r\n * Begin of the container\r\n */\r\n Begin,\r\n\r\n /**\r\n * End of the container\r\n */\r\n End,\r\n\r\n /**\r\n * End of the content div domain.\r\n */\r\n DomEnd,\r\n\r\n /**\r\n * Selection start\r\n */\r\n SelectionStart,\r\n\r\n /**\r\n * Outside of editor\r\n */\r\n Outside,\r\n\r\n /**\r\n * Manually defined range\r\n */\r\n Range,\r\n}\r\n","/**\n * Prefix of content types\n */\r\nexport enum CompatibleContentTypePrefix {\r\n\n /**\n * Text type prefix\n */\n Text = 'text/',\n\n /**\n * Image type prefix\n */\n Image = 'image/',\n}\r\n\r\n\n/**\n * Known content types\n */\r\nexport enum CompatibleContentType {\r\n\n /**\n * Plain text content type\n */\n PlainText = 'text/plain',\n\n /**\n * HTML content type\n */\n HTML = 'text/html',\n}\r\n","/**\n * @deprecated\n * Constants string for dataset names used by dark mode\n */\r\nexport enum CompatibleDarkModeDatasetNames {\r\n\n /**\n * Original style text color\n */\n OriginalStyleColor = 'ogsc',\n\n /**\n * Original style background color\n */\n OriginalStyleBackgroundColor = 'ogsb',\n\n /**\n * Original attribute text color\n */\n OriginalAttributeColor = 'ogac',\n\n /**\n * Original attribute background color\n */\n OriginalAttributeBackgroundColor = 'ogab',\n}\r\n","/**\n * Types of definitions, used by Definition type\n */\r\nexport enum CompatibleDefinitionType {\r\n\n /**\n * Boolean type definition, represents a boolean type value\n */\n Boolean,\n\n /**\n * Number type definition, represents a number type value\n */\n Number,\n\n /**\n * String type definition, represents a string type value\n */\n String,\n\n /**\n * Array type definition, represents an array with a given item type\n */\n Array,\n\n /**\n * Object type definition, represents an object with the given property types\n */\n Object,\n\n /**\n * Customize type definition, represents a customized type with a validator function\n */\n Customize,\n}\r\n","/**\n * Class names for Delimiter\n */\r\nexport enum CompatibleDelimiterClasses {\r\n\n /**\n * Class name to specify this delimiter is before an entity\n */\n DELIMITER_BEFORE = 'entityDelimiterBefore',\n\n /**\n * Class name to specify this delimiter is after an entity\n */\n DELIMITER_AFTER = 'entityDelimiterAfter',\n}\r\n","/**\r\n * enum for setting block direction, used by setDirection API\r\n */\r\nexport enum CompatibleDirection {\r\n\r\n /**\r\n * Left to right\r\n */\r\n LeftToRight,\r\n\r\n /**\r\n * Right to left\r\n */\r\n RightToLeft,\r\n}\r\n","/**\n * Command strings for Document.execCommand() API\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand\n */\r\nexport enum CompatibleDocumentCommand {\r\n\n /**\n * Changes the browser auto-link behavior (Internet Explorer only)\n */\n AutoUrlDetect = 'AutoUrlDetect',\n\n /**\n * Changes the document background color. In styleWithCss mode, it affects the background color of the containing block instead.\n * This requires a <color> value string to be passed in as a value argument. Note that Internet Explorer uses this to set the\n * text background color.\n */\n BackColor = 'backColor',\n\n /**\n * Toggles bold on/off for the selection or at the insertion point. Internet Explorer uses the <strong> tag instead of <b>.\n */\n Bold = 'bold',\n\n /**\n * Clears all authentication credentials from the cache.\n */\n ClearAuthenticationCache = 'ClearAuthenticationCache',\n\n /**\n * Makes the content document either read-only or editable. This requires a boolean true/false as the value argument.\n * (Not supported by Internet Explorer.)\n */\n ContentReadOnly = 'contentReadOnly',\n\n /**\n * Copies the current selection to the clipboard. Conditions of having this behavior enabled vary from one browser to another,\n * and have evolved over time. Check the compatibility table to determine if you can use it in your case.\n */\n Copy = 'copy',\n\n /**\n * Creates an hyperlink from the selection, but only if there is a selection. Requires a URI string as a value argument for the\n * hyperlink's href. The URI must contain at least a single character, which may be whitespace.\n * (Internet Explorer will create a link with a null value.)\n */\n CreateLink = 'createLink',\n\n /**\n * Removes the current selection and copies it to the clipboard. When this behavior is enabled varies between browsers,\n * and its conditions have evolved over time. Check the compatibility table for usage details.\n */\n Cut = 'cut',\n\n /**\n * Adds a <small> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n DecreaseFontSize = 'decreaseFontSize',\n\n /**\n * Changes the paragraph separator used when new paragraphs are created in editable text regions. See Differences in markup\n * generation for more details.\n */\n DefaultParagraphSeparator = 'defaultParagraphSeparator',\n\n /**\n * Deletes the current selection.\n */\n Delete = 'delete',\n\n /**\n * Enables or disables the table row/column insertion and deletion controls. (Not supported by Internet Explorer.)\n */\n EnableInlineTableEditing = 'enableInlineTableEditing',\n\n /**\n * Enables or disables the resize handles on images and other resizable objects. (Not supported by Internet Explorer.)\n */\n EnableObjectResizing = 'enableObjectResizing',\n\n /**\n * Changes the font name for the selection or at the insertion point. This requires a font name string (like \"Arial\")\n * as a value argument.\n */\n FontName = 'fontName',\n\n /**\n * Changes the font size for the selection or at the insertion point. This requires an integer from 1-7 as a value argument.\n */\n FontSize = 'fontSize',\n\n /**\n * Changes a font color for the selection or at the insertion point. This requires a hexadecimal color value string\n * as a value argument.\n */\n ForeColor = 'foreColor',\n\n /**\n * Adds an HTML block-level element around the line containing the current selection, replacing the block element containing\n * the line if one exists (in Firefox, <blockquote> is the exception — it will wrap any containing block element).\n * Requires a tag-name string as a value argument. Virtually all block-level elements can be used.\n * (Internet Explorer supports only heading tags H1–H6, ADDRESS, and PRE, which must be wrapped in angle brackets, such as \"<H1>\".)\n */\n FormatBlock = 'formatBlock',\n\n /**\n * Deletes the character ahead of the cursor's position, identical to hitting the Delete key on a Windows keyboard.\n */\n ForwardDelete = 'forwardDelete',\n\n /**\n * Adds a heading element around a selection or insertion point line. Requires the tag-name strings a value argument (i.e. \"H1\", \"H6\").\n * (Not supported by Internet Explorer and Safari.)\n */\n Heading = 'heading',\n\n /**\n * Changes the background color for the selection or at the insertion point. Requires a color value string as a value argument.\n * useCSS must be true for this to function. (Not supported by Internet Explorer.)\n */\n HiliteColor = 'hiliteColor',\n\n /**\n * Adds a <big> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n IncreaseFontSize = 'increaseFontSize',\n\n /**\n * Indents the line containing the selection or insertion point. In Firefox, if the selection spans multiple lines at different\n * levels of indentation, only the least indented lines in the selection will be indented.\n */\n Indent = 'indent',\n\n /**\n * Controls whether the Enter key inserts a <br> element, or splits the current block element into two.\n * (Not supported by Internet Explorer.)\n */\n InsertBrOnReturn = 'insertBrOnReturn',\n\n /**\n * Inserts a <hr> element at the insertion point, or replaces the selection with it.\n */\n InsertHorizontalRule = 'insertHorizontalRule',\n\n /**\n * Inserts an HTML string at the insertion point (deletes selection). Requires a valid HTML string as a value argument.\n * (Not supported by Internet Explorer.)\n */\n InsertHTML = 'insertHTML',\n\n /**\n * Inserts an image at the insertion point (deletes selection). Requires a URL string for the image's src as a value argument.\n * The requirements for this string are the same as createLink.\n */\n InsertImage = 'insertImage',\n\n /**\n * Creates a numbered ordered list for the selection or at the insertion point.\n */\n InsertOrderedList = 'insertOrderedList',\n\n /**\n * Creates a bulleted unordered list for the selection or at the insertion point.\n */\n InsertUnorderedList = 'insertUnorderedList',\n\n /**\n * Inserts a paragraph around the selection or the current line.\n * (Internet Explorer inserts a paragraph at the insertion point and deletes the selection.)\n */\n InsertParagraph = 'insertParagraph',\n\n /**\n * Inserts the given plain text at the insertion point (deletes selection).\n */\n InsertText = 'insertText',\n\n /**\n * Toggles italics on/off for the selection or at the insertion point.\n * (Internet Explorer uses the <em> element instead of <i>.)\n */\n Italic = 'italic',\n\n /**\n * Centers the selection or insertion point.\n */\n JustifyCenter = 'justifyCenter',\n\n /**\n * Justifies the selection or insertion point.\n */\n JustifyFull = 'justifyFull',\n\n /**\n * Justifies the selection or insertion point to the left.\n */\n JustifyLeft = 'justifyLeft',\n\n /**\n * Right-justifies the selection or the insertion point.\n */\n JustifyRight = 'justifyRight',\n\n /**\n * Outdents the line containing the selection or insertion point.\n */\n Outdent = 'outdent',\n\n /**\n * Pastes the clipboard contents at the insertion point (replaces current selection). Disabled for web content. See [1].\n */\n Paste = 'paste',\n\n /**\n * Redoes the previous undo command.\n */\n Redo = 'redo',\n\n /**\n * Removes all formatting from the current selection.\n */\n RemoveFormat = 'removeFormat',\n\n /**\n * Selects all of the content of the editable region.\n */\n SelectAll = 'selectAll',\n\n /**\n * Toggles strikethrough on/off for the selection or at the insertion point.\n */\n StrikeThrough = 'strikeThrough',\n\n /**\n * Toggles subscript on/off for the selection or at the insertion point.\n */\n Subscript = 'subscript',\n\n /**\n * Toggles superscript on/off for the selection or at the insertion point.\n */\n Superscript = 'superscript',\n\n /**\n * Toggles underline on/off for the selection or at the insertion point.\n */\n Underline = 'underline',\n\n /**\n * Undoes the last executed command.\n */\n Undo = 'undo',\n\n /**\n * Removes the anchor element from a selected hyperlink.\n */\n Unlink = 'unlink',\n\n /**\n * Replaces the useCSS command. true modifies/generates style attributes in markup, false generates presentational elements.\n */\n StyleWithCSS = 'styleWithCSS',\n}\r\n","/**\n * The is essentially an enum representing result from browser compareDocumentPosition API\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n */\r\nexport enum CompatibleDocumentPosition {\r\n\n /**\n * Same node\n */\n Same = 0,\n\n /**\n * Node is disconnected from document\n */\n Disconnected = 1,\n\n /**\n * Node is preceding the comparing node\n */\n Preceding = 2,\n\n /**\n * Node is following the comparing node\n */\n Following = 4,\n\n /**\n * Node contains the comparing node\n */\n Contains = 8,\n\n /**\n * Node is contained by the comparing node\n */\n ContainedBy = 16,\n}\r\n","/**\n * CSS Class names for Entity\n */\r\nexport enum CompatibleEntityClasses {\r\n\n /**\n * Class name to specify this is an entity\n */\n ENTITY_INFO_NAME = '_Entity',\n\n /**\n * Class name to specify the type of an entity\n */\n ENTITY_TYPE_PREFIX = '_EType_',\n\n /**\n * Class name to specify the ID of an entity\n */\n ENTITY_ID_PREFIX = '_EId_',\n\n /**\n * Class name to specify if the entity is readonly\n */\n ENTITY_READONLY_PREFIX = '_EReadonly_',\n}\r\n","/**\n * Define possible operations to an entity\n */\r\nexport enum CompatibleEntityOperation {\r\n\n /**\n * Notify plugins that there is a new plugin was added into editor.\n * Plugin can handle this event to entity hydration.\n * This event will be only fired once for each entity DOM node.\n * After undo, or copy/paste, since new DOM nodes were added, this event will be fired\n * for those entities represented by newly added nodes.\n */\n NewEntity,\n\n /**\n * Notify plugins that user is clicking target to an entity\n */\n Click,\n\n /**\n * Notify plugins that user is triggering context menu to an entity\n */\n ContextMenu,\n\n /**\n * Notify plugins that user is escaping from an entity by pressing ESC key\n */\n Escape,\n\n /**\n * Notify plugins that user is removing an entity from its start position using DELETE key\n */\n RemoveFromStart,\n\n /**\n * Notify plugins that user is remove an entity from its end position using BACKSPACE key\n */\n RemoveFromEnd,\n\n /**\n * Notify plugins that an entity is being overwritten.\n * This can be caused by key in, cut, paste, delete, backspace ... on a selection\n * which contains some entities.\n */\n Overwrite,\n\n /**\n * Notify plugins that an entity is being partially overwritten.\n * This happens when user selected part of the entity then do key press, or cut, paste, delete, backspace, ...\n */\n PartialOverwrite,\n\n /**\n * Notify plugins that editor is generating HTML content for save.\n * Plugin should use this event to remove any temporary content, and only leave DOM nodes that\n * should be saved as HTML string.\n * This event will provide a cloned DOM tree for each entity, do NOT compare the DOM nodes with cached nodes\n * because it will always return false.\n */\n ReplaceTemporaryContent,\n\n /**\n * @deprecated\n */\n AddShadowRoot,\n\n /**\n * @deprecated\n */\n RemoveShadowRoot,\n\n /**\n * Notify plugins that a new entity state need to be updated to an entity.\n * This is normally happened when user undo/redo the content with an entity snapshot added by a plugin that handles entity\n */\n UpdateEntityState,\n}\r\n","/**\n * Experimental feature flags\n */\r\nexport enum CompatibleExperimentalFeatures {\r\n\n // #region Graduated and deprecated features.\n // These features will be removed in next major release\n /**\n * @deprecated This feature is always enabled\n */\n NewIndentation = 'NewIndentation',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewBullet = 'NewBullet',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewNumbering = 'NewNumbering',\n\n /**\n * @deprecated This feature is always enabled\n */\n ListChain = 'ListChain',\n\n /**\n * @deprecated This feature is always enabled\n */\n MergePastedLine = 'MergePastedLine',\n\n /**\n * @deprecated This feature is always enabled\n */\n SingleDirectionResize = 'SingleDirectionResize',\n\n /**\n * @deprecated This feature is always enabled\n */\n PasteWithLinkPreview = 'PasteWithLinkPreview',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageRotate = 'ImageRotate',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageCrop = 'ImageCrop',\n\n /**\n * @deprecated This feature is always enabled\n * Check if the element has a style attribute, if not, apply the default format\n */\n AlwaysApplyDefaultFormat = 'AlwaysApplyDefaultFormat',\n\n /**\n * @deprecated This feature can be enabled/disabled using Paste Plugin contructor param\n * Paste the Html instead of the Img when the Html Body only have one IMG Child node\n */\n ConvertSingleImageBody = 'ConvertSingleImageBody',\n\n /**\n * @deprecated This feature is always enabled\n * Align table elements to left, center and right using setAlignment API\n */\n TableAlignment = 'TableAlignment',\n\n /**\n * @deprecated this feature is always enabled\n * Provide a circular resize handles that adaptive the number od handles to the size of the image\n */\n AdaptiveHandlesResizer = 'AdaptiveHandlesResizer',\n\n /**\n * @deprecated this feature is always disabled\n * Automatically transform -- into hyphen, if typed between two words.\n */\n AutoHyphen = 'AutoHyphen',\n\n /**\n * @deprecated this feature is always disabled\n * Use pending format strategy to do style based format, e.g. Font size, Color.\n * With this feature enabled, we don't need to insert temp ZeroWidthSpace character to hold pending format\n * when selection is collapsed. Instead, we will hold the pending format in memory and only apply it when type something\n */\n PendingStyleBasedFormat = 'PendingStyleBasedFormat',\n\n /**\n * @deprecated this feature is always disabled\n * Normalize list to make sure it can be displayed correctly in other client\n * e.g. We will move list items with \"display: block\" into previous list item and change tag to be DIV\n */\n NormalizeList = 'NormalizeList',\n\n /**\n * @deprecated this feature is always enabled\n * When a html image is selected, the selected image data will be stored by editor core.\n */\n ImageSelection = 'ImageSelection',\n\n /**\n * @deprecated this feature is always enabled\n * Use variable-based dark mode solution rather than dataset-based solution.\n * When enable this feature, need to pass in a DarkModelHandler object to each call of setColor and applyFormat\n * if you need them work for dark mode\n */\n VariableBasedDarkColor = 'VariableBasedDarkColor',\n\n /**\n * @deprecated this feature is always enabled\n * Align list elements elements to left, center and right using setAlignment API\n */\n ListItemAlignment = 'ListItemAlignment',\n\n /**\n * @deprecated\n */\n DefaultFormatInSpan = 'DefaultFormatInSpan',\n\n /**\n * @deprecated\n */\n DefaultFormatOnContainer = 'DefaultFormatOnContainer',\n\n /**\n * @deprecated This feature is always enabled\n * Reuse existing DOM structure if possible when convert Content Model back to DOM tree\n */\n ReusableContentModel = 'ReusableContentModel',\n\n /**\n * @deprecated This feature is always enabled\n * Handle keyboard editing event with Content Model\n */\n EditWithContentModel = 'EditWithContentModel',\n\n //#endregion\n\n /**\n * Provide additional Tab Key Features. Requires Text Features Content Editable Features\n */\n TabKeyTextFeatures = 'TabKeyTextFeatures',\n\n /**\n * Trigger formatting by a especial characters. Ex: (A), 1. i).\n */\n AutoFormatList = 'AutoFormatList',\n\n /**\n * With this feature enabled, when writing back a list item we will re-use all\n * ancestor list elements, even if they don't match the types currently in the\n * listTypes array for that item. The only list that we will ensure is correct\n * is the one closest to the item.\n */\n ReuseAllAncestorListElements = 'ReuseAllAncestorListElements',\n\n /**\n * Delete table with Backspace key with the whole was selected with table selector\n */\n DeleteTableWithBackspace = 'DeleteTableWithBackspace',\n\n /**\n * Add entities around a Read Only Inline entity to prevent cursor to be hidden when cursor is next of it.\n */\n InlineEntityReadOnlyDelimiters = 'InlineEntityReadOnlyDelimiters',\n\n /**\n * Paste with Content model\n */\n ContentModelPaste = 'ContentModelPaste',\n\n /**\n * Disable list chain functionality\n */\n DisableListChain = 'DisableListChain',\n}\r\n","/**\r\n * The enum used for increase or decrease font size\r\n * Used by setFontSize API\r\n */\r\nexport enum CompatibleFontSizeChange {\r\n\r\n /**\r\n * Increase font size\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease font size\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Represents a mode number to indicate what kind of content to retrieve when call Editor.getContent()\n */\r\nexport enum CompatibleGetContentMode {\r\n\n /**\n * The clean content without any temporary content only for editor.\n * This is the default value. Call to Editor.getContent() with trigger an ExtractContentWithDom event\n * so that plugins can remove their temporary content, and will return the HTML content\n * which is ready for save to storage.\n */\n CleanHTML = 0,\n\n /**\n * Retrieve the raw HTML string in current editor. Temporary content will be included.\n */\n RawHTMLOnly = 1,\n\n /**\n * Retrieve the raw HTML string in current editor with a selection marker. This can be used for\n * save current editor state and call to SetContent with this result can fully restore editor state\n * including current selection\n */\n RawHTMLWithSelection = 2,\n\n /**\n * Get plain text content only, all format will be ignored\n */\n PlainText,\n\n /**\n * A fast way to get plain text content, the line-end positions may not be exactly same with HTML content,\n * but the text content should be the same. This is used for quickly retrieve text content and check\n * text only\n */\n PlainTextFast,\n}\r\n","/**\n * Operation flags for ImageEdit plugin\n */\r\nexport enum CompatibleImageEditOperation {\r\n\n /**\n * No operation\n */\n None = 0,\n\n /**\n * Resize image from corner ( horizontal and vertical resize)\n */\n CornerResize = 1,\n\n /**\n * Resize image from side ( either horizontal or vertical resize)\n */\n SideResize = 2,\n\n /**\n * Image resize\n */\n Resize = CornerResize | SideResize,\n\n /**\n * Image rotate\n */\n Rotate = 4,\n\n /**\n * Image resize and rotate\n */\n ResizeAndRotate = Resize | Rotate,\n\n /**\n * Image crop\n */\n Crop = 8,\n\n /**\n * All operations\n */\n All = ResizeAndRotate | Crop,\n}\r\n","/**\r\n * The enum used for increase or decrease indentation of a block\r\n * Used by setIndentation API\r\n */\r\nexport enum CompatibleIndentation {\r\n\r\n /**\r\n * Increase indentation\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease indentation\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Key numbers common used keys\n */\r\nexport enum CompatibleKeys {\r\n\n NULL = 0,\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL_LEFT = 17,\n ALT = 18,\n ESCAPE = 27,\n SPACE = 32,\n PAGEUP = 33,\n END = 35,\n HOME = 36,\n LEFT = 37,\n UP = 38,\n RIGHT = 39,\n DOWN = 40,\n PRINT_SCREEN = 44,\n DELETE = 46,\n /**\n * @deprecated Just for backward compatibility\n */\n EIGHT_ASTIRISK = 56,\n EIGHT_ASTERISK = 56,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n META_LEFT = 91,\n COMMA = 188,\n DASH_UNDERSCORE = 189,\n PERIOD = 190,\n /**\n * @deprecated Just for backward compatibility\n */\n FORWARDSLASH = 191,\n FORWARD_SLASH = 191,\n GRAVE_TILDE = 192,\n\n /**\n * Keys below are non-standard, and should be used in ContentEditFeatures only\n */\n CONTENTCHANGED = 0x101,\n RANGE = 0x102,\n\n Ctrl = 0x1000,\n Meta = 0x2000,\n Shift = 0x4000,\n}\r\n","/**\n * Index of known CreateElementData used by createElement function\n */\r\nexport enum CompatibleKnownCreateElementDataIndex {\r\n\n /**\n * Set a none value to help createElement function ignore falsy value\n */\n None = 0,\n\n /**\n * An empty line without format\n */\n EmptyLine = 1,\n\n /**\n * Wrapper for blockquote\n */\n BlockquoteWrapper = 2,\n\n /**\n * Temp DIV for copy/paste\n */\n CopyPasteTempDiv = 3,\n\n /**\n * ListItem with block style\n */\n BlockListItem = 4,\n\n /**\n * Wrapper element for context menu\n */\n ContextMenuWrapper = 5,\n\n /**\n * Wrapper element for image edit\n */\n ImageEditWrapper = 6,\n\n /**\n * @deprecated\n */\n TableHorizontalResizer = 7,\n\n /**\n * @deprecated\n */\n TableVerticalResizer = 8,\n\n /**\n * @deprecated\n */\n TableResizerLTR = 9,\n\n /**\n * @deprecated\n */\n TableResizerRTL = 10,\n\n /**\n * @deprecated\n */\n TableSelector = 11,\n\n /**\n * @deprecated\n */\n EmptyLineFormatInSpan = 12,\n}\r\n","/**\n * Represent the types of sources to handle in the Paste Plugin\n */\r\nexport enum CompatibleKnownPasteSourceType {\r\n\n WordDesktop,\n ExcelDesktop,\n ExcelOnline,\n PowerPointDesktop,\n GoogleSheets,\n WacComponents,\n Default,\n SingleImage,\n}\r\n","/**\n * Type of list (numbering or bullet)\n */\r\nexport enum CompatibleListType {\r\n\n /**\n * None list type\n * It means this is not a list\n */\n None = 0,\n\n /**\n * Ordered List type (numbering list)\n * Represented by \"OL\" tag\n */\n Ordered = 1,\n\n /**\n * Unordered List type (bullet list)\n * Represented by \"UL\" tag\n */\n Unordered = 2,\n}\r\n","/**\n * The is essentially an enum represents the type of the node\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n * Values not listed here are deprecated.\n */\r\nexport enum CompatibleNodeType {\r\n\n /**\n * An Element node such as <p> or <div>.\n */\n Element = 1,\n\n /**\n * An Attribute node such as name=\"value\".\n */\n Attribute = 2,\n\n /**\n * The actual Text of Element or Attr.\n */\n Text = 3,\n\n /**\n * A ProcessingInstruction of an XML document such as <?xml-stylesheet ... ?> declaration.\n */\n ProcessingInstruction = 7,\n\n /**\n * A Comment node.\n */\n Comment = 8,\n\n /**\n * A Document node.\n */\n Document = 9,\n\n /**\n * A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents.\n */\n DocumentType = 10,\n\n /**\n * A DocumentFragment node.\n */\n DocumentFragment = 11,\n}\r\n","/**\n * Enum used to control the different types of numbering list\n */\r\nexport enum CompatibleNumberingListType {\r\n\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Numbering triggered by 1.\n */\n Decimal = 1,\n\n /**\n * Numbering triggered by 1-\n */\n DecimalDash = 2,\n\n /**\n * Numbering triggered by 1)\n */\n DecimalParenthesis = 3,\n\n /**\n * Numbering triggered by (1)\n */\n DecimalDoubleParenthesis = 4,\n\n /**\n * Numbering triggered by a.\n */\n LowerAlpha = 5,\n\n /**\n * Numbering triggered by a)\n */\n LowerAlphaParenthesis = 6,\n\n /**\n * Numbering triggered by (a)\n */\n LowerAlphaDoubleParenthesis = 7,\n\n /**\n * Numbering triggered by a-\n */\n LowerAlphaDash = 8,\n\n /**\n * Numbering triggered by A.\n */\n UpperAlpha = 9,\n\n /**\n * Numbering triggered by A)\n */\n UpperAlphaParenthesis = 10,\n\n /**\n * Numbering triggered by (A)\n */\n UpperAlphaDoubleParenthesis = 11,\n\n /**\n * Numbering triggered by A-\n */\n UpperAlphaDash = 12,\n\n /**\n * Numbering triggered by i.\n */\n LowerRoman = 13,\n\n /**\n * Numbering triggered by i)\n */\n LowerRomanParenthesis = 14,\n\n /**\n * Numbering triggered by (i)\n */\n LowerRomanDoubleParenthesis = 15,\n\n /**\n * Numbering triggered by i-\n */\n LowerRomanDash = 16,\n\n /**\n * Numbering triggered by I.\n */\n UpperRoman = 17,\n\n /**\n * Numbering triggered by I)\n */\n UpperRomanParenthesis = 18,\n\n /**\n * Numbering triggered by (I)\n */\n UpperRomanDoubleParenthesis = 19,\n\n /**\n * Numbering triggered by I-\n */\n UpperRomanDash = 20,\n\n /**\n * Maximum value of the enum\n */\n Max = 20,\n}\r\n","/**\n * Enum for paste options\n */\r\nexport enum CompatiblePasteType {\r\n\n /**\n * Default paste behavior\n */\n Normal,\n\n /**\n * Paste only the plain text\n */\n AsPlainText,\n\n /**\n * Apply the current style to pasted content\n */\n MergeFormat,\n\n /**\n * If there is a image uri in the clipboard, paste the content as image element\n */\n AsImage,\n}\r\n","/**\n * Editor plugin event type\n */\r\nexport enum CompatiblePluginEventType {\r\n\n /**\n * HTML KeyDown event\n */\n KeyDown = 0,\n\n /**\n * HTML KeyPress event\n */\n KeyPress = 1,\n\n /**\n * HTML KeyUp event\n */\n KeyUp = 2,\n\n /**\n * HTML Input / TextInput event\n */\n Input = 3,\n\n /**\n * HTML CompositionEnd event\n */\n CompositionEnd = 4,\n\n /**\n * HTML MouseDown event\n */\n MouseDown = 5,\n\n /**\n * HTML MouseUp event\n */\n MouseUp = 6,\n\n /**\n * Content changed event\n */\n ContentChanged = 7,\n\n /**\n * Extract Content with a DOM tree event\n * This event is triggered when getContent() is called with triggerExtractContentEvent = true\n * Plugin can handle this event to remove the UI only markups to return clean HTML\n * by operating on a cloned DOM tree\n */\n ExtractContentWithDom = 8,\n\n /**\n * Before Paste event, provide a chance to change copied content\n */\n BeforeCutCopy = 9,\n\n /**\n * Before Paste event, provide a chance to change paste content\n */\n BeforePaste = 10,\n\n /**\n * Let plugin know editor is ready now\n */\n EditorReady = 11,\n\n /**\n * Let plugin know editor is about to dispose\n */\n BeforeDispose = 12,\n\n /**\n * Pending format state (bold, italic, underline, ... with collapsed selection) is changed\n */\n PendingFormatStateChanged = 13,\n\n /**\n * Scroll event triggered by scroll container\n */\n Scroll = 14,\n\n /**\n * Operating on an entity. See enum EntityOperation for more details about each operation\n */\n EntityOperation = 15,\n\n /**\n * HTML ContextMenu event\n */\n ContextMenu = 16,\n\n /**\n * Editor has entered shadow edit mode\n */\n EnteredShadowEdit = 17,\n\n /**\n * Editor is about to leave shadow edit mode\n */\n LeavingShadowEdit = 18,\n\n /**\n * Content of image is being changed from client side\n */\n EditImage = 19,\n\n /**\n * Content of editor is about to be cleared by SetContent API, handle this event to cache anything you need\n * before it is gone\n */\n BeforeSetContent = 20,\n\n /**\n * Zoom scale value is changed, triggered by Editor.setZoomScale() when set a different scale number\n */\n ZoomChanged = 21,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor changed the selection.\n */\n SelectionChanged = 22,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor content is about to be changed by keyboard event.\n * This is only used by Content Model editing\n */\n BeforeKeyboardEditing = 23,\n}\r\n","/**\r\n * Represent the type of a position\r\n */\r\nexport enum CompatiblePositionType {\r\n\r\n /**\r\n * At the beginning of a node\r\n */\r\n Begin = 0,\r\n\r\n /**\r\n * At the end of a node\r\n */\r\n End = -1,\r\n\r\n /**\r\n * Before a node\r\n */\r\n Before = -2,\r\n\r\n /**\r\n * After a node\r\n */\r\n After = -3,\r\n}\r\n","/**\r\n * Query scope for queryElements() API\r\n */\r\nexport enum CompatibleQueryScope {\r\n\r\n /**\r\n * Query from the whole body of root node. This is default value.\r\n */\r\n Body,\r\n\r\n /**\r\n * Query elements on a given selection (intersect)\r\n * The result element can contain the selection, contain part of selection, or inside selection\r\n */\r\n OnSelection,\r\n\r\n /**\r\n * Query elements inside a given selection only\r\n */\r\n InSelection,\r\n}\r\n","/**\n * Type of all possible regions. Currently we only support region of Table\n */\r\nexport enum CompatibleRegionType {\r\n\n /**\n * Region split by Table\n */\n Table,\n}\r\n","/**\n * Types of Selection Ranges that the SelectionRangeEx can return\n */\r\nexport enum CompatibleSelectionRangeTypes {\r\n\n /**\n * Normal selection range provided by browser.\n */\n Normal,\n /**\n * Selection made inside of a single table.\n */\n TableSelection,\n /**\n * Selection made in a image.\n */\n ImageSelection,\n}\r\n","/**\n * Table format border\n */\r\nexport enum CompatibleTableBorderFormat {\r\n\n /**\n * All border of the table are displayed\n * __ __ __\n * |__|__|__|\n * |__|__|__|\n * |__|__|__|\n */\n DEFAULT,\n\n /**\n * Middle vertical border are not displayed\n * __ __ __\n * |__ __ __|\n * |__ __ __|\n * |__ __ __|\n */\n LIST_WITH_SIDE_BORDERS,\n\n /**\n * All borders except header rows borders are displayed\n * __ __ __\n * __|__|__\n * __|__|__\n */\n NO_HEADER_BORDERS,\n\n /**\n * The left and right border of the table are not displayed\n * __ __ __\n * __|__|__\n * __|__|__\n * __|__|__\n */\n NO_SIDE_BORDERS,\n\n /**\n * Only the borders that divides the header row, first column and externals are displayed\n * __ __ __\n * |__ __ __|\n * | | |\n * |__|__ __|\n */\n FIRST_COLUMN_HEADER_EXTERNAL,\n\n /**\n * The header row has no vertical border, except for the first one\n * The first column has no horizontal border, except for the first one\n * __ __ __\n * |__ __ __\n * | |__|__|\n * | |__|__|\n */\n ESPECIAL_TYPE_1,\n\n /**\n * The header row has no vertical border, except for the first one\n * The only horizontal border of the table is the top and bottom of header row\n * __ __ __\n * |__ __ __\n * | | |\n * | | |\n */\n ESPECIAL_TYPE_2,\n\n /**\n * The only borders are the bottom of header row and the right border of first column\n * __ __ __\n * |\n * |\n */\n ESPECIAL_TYPE_3,\n\n /**\n * No border\n */\n CLEAR,\n}\r\n","/**\r\n * Operations used by editTable() API\r\n */\r\nexport enum CompatibleTableOperation {\r\n\r\n /**\r\n * Insert a row above current row\r\n */\r\n InsertAbove,\r\n\r\n /**\r\n * Insert a row below current row\r\n */\r\n InsertBelow,\r\n\r\n /**\r\n * Insert a column on the left of current column\r\n */\r\n InsertLeft,\r\n\r\n /**\r\n * Insert a column on the right of current column\r\n */\r\n InsertRight,\r\n\r\n /**\r\n * Delete the whole table\r\n */\r\n DeleteTable,\r\n\r\n /**\r\n * Delete current column\r\n */\r\n DeleteColumn,\r\n\r\n /**\r\n * Delete current row\r\n */\r\n DeleteRow,\r\n\r\n /**\r\n * Merge current row with the row above\r\n */\r\n MergeAbove,\r\n\r\n /**\r\n * Merge current row with the row below\r\n */\r\n MergeBelow,\r\n\r\n /**\r\n * Merge current column with the column on the left\r\n */\r\n MergeLeft,\r\n\r\n /**\r\n * Merge current column with the column on the right\r\n */\r\n MergeRight,\r\n\r\n /**\r\n * Merge all selected cells\r\n */\r\n MergeCells,\r\n\r\n /**\r\n * Split current table cell horizontally\r\n */\r\n SplitHorizontally,\r\n\r\n /**\r\n * Split current table cell vertically\r\n */\r\n SplitVertically,\r\n\r\n /**\r\n * Align current table at the center\r\n */\r\n AlignCenter,\r\n\r\n /**\r\n * Align current table at the left\r\n */\r\n AlignLeft,\r\n\r\n /**\r\n * Align current table at the right\r\n */\r\n AlignRight,\r\n\r\n /**\r\n * Align current content table cell at the left\r\n */\r\n AlignCellLeft,\r\n\r\n /**\r\n * Align current content table cell at the center\r\n */\r\n AlignCellCenter,\r\n\r\n /**\r\n * Align current content table cell at the right\r\n */\r\n AlignCellRight,\r\n\r\n /**\r\n * Align current content table cell at the top\r\n */\r\n AlignCellTop,\r\n\r\n /**\r\n * Align current table cell at the middle\r\n */\r\n AlignCellMiddle,\r\n\r\n /**\r\n * Align current table cell at the bottom\r\n */\r\n AlignCellBottom,\r\n}\r\n","export { CompatibleAlignment } from './Alignment'\r\nexport { CompatibleBulletListType } from './BulletListType'\r\nexport { CompatibleCapitalization } from './Capitalization'\r\nexport { CompatibleChangeSource } from './ChangeSource'\r\nexport { CompatibleClearFormatMode } from './ClearFormatMode'\r\nexport { CompatibleColorTransformDirection } from './ColorTransformDirection'\r\nexport { CompatibleContentPosition } from './ContentPosition'\r\nexport { CompatibleContentTypePrefix, CompatibleContentType } from './ContentType'\r\nexport { CompatibleDarkModeDatasetNames } from './DarkModeDatasetNames'\r\nexport { CompatibleDefinitionType } from './DefinitionType'\r\nexport { CompatibleDelimiterClasses } from './DelimiterClasses'\r\nexport { CompatibleDirection } from './Direction'\r\nexport { CompatibleDocumentCommand } from './DocumentCommand'\r\nexport { CompatibleDocumentPosition } from './DocumentPosition'\r\nexport { CompatibleEntityClasses } from './EntityClasses'\r\nexport { CompatibleEntityOperation } from './EntityOperation'\r\nexport { CompatibleExperimentalFeatures } from './ExperimentalFeatures'\r\nexport { CompatibleFontSizeChange } from './FontSizeChange'\r\nexport { CompatibleGetContentMode } from './GetContentMode'\r\nexport { CompatibleImageEditOperation } from './ImageEditOperation'\r\nexport { CompatibleIndentation } from './Indentation'\r\nexport { CompatibleKeys } from './Keys'\r\nexport { CompatibleKnownCreateElementDataIndex } from './KnownCreateElementDataIndex'\r\nexport { CompatibleKnownPasteSourceType } from './KnownPasteSourceType'\r\nexport { CompatibleListType } from './ListType'\r\nexport { CompatibleNodeType } from './NodeType'\r\nexport { CompatibleNumberingListType } from './NumberingListType'\r\nexport { CompatiblePasteType } from './PasteType'\r\nexport { CompatiblePluginEventType } from './PluginEventType'\r\nexport { CompatiblePositionType } from './PositionType'\r\nexport { CompatibleQueryScope } from './QueryScope'\r\nexport { CompatibleRegionType } from './RegionType'\r\nexport { CompatibleSelectionRangeTypes } from './SelectionRangeTypes'\r\nexport { CompatibleTableBorderFormat } from './TableBorderFormat'\r\nexport { CompatibleTableOperation } from './TableOperation'\r\n","export * from './browser/index';\nexport * from './corePluginState/index';\nexport * from './compatibleEnum/index';\nexport * from './event/index';\nexport * from './interface/index';\nexport * from './type/index';\n","/**\r\n * enum for setting block alignment, used by setAlignment API\r\n */\r\nexport const enum Alignment {\r\n /**\r\n * Align left\r\n */\r\n Left,\r\n\r\n /**\r\n * Align center\r\n */\r\n Center,\r\n\r\n /**\r\n * Align right\r\n */\r\n Right,\r\n}\r\n","/**\n * Enum used to control the different types of bullet list\n */\nexport const enum BulletListType {\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Bullet triggered by *\n */\n Disc = 1,\n\n /**\n * Bullet triggered by -\n */\n Dash = 2,\n\n /**\n * Bullet triggered by --\n */\n Square = 3,\n\n /**\n * Bullet triggered by >\n */\n ShortArrow = 4,\n\n /**\n * Bullet triggered by ->\n */\n LongArrow = 5,\n\n /**\n * Bullet triggered by =>\n */\n UnfilledArrow = 6,\n\n /**\n * Bullet triggered by —\n */\n Hyphen = 7,\n\n /**\n * Bullet triggered by -->\n */\n DoubleLongArrow = 8,\n\n /**\n * Bullet type circle\n */\n Circle = 9,\n\n /**\n * Maximum value of the enum\n */\n Max = 9,\n}\n","/**\n * The enum used for controlling the capitalization of text.\n * Used by changeCapitalization API\n */\nexport const enum Capitalization {\n /**\n * Transforms the first character after punctuation mark followed by space\n * to uppercase and the rest of characters to lowercase.\n */\n Sentence = 'sentence',\n\n /**\n * Transforms all characters to lowercase\n */\n Lowercase = 'lowercase',\n\n /**\n * Transforms all characters to uppercase\n */\n Uppercase = 'uppercase',\n\n /**\n * Transforms the first character of each word to uppercase\n */\n CapitalizeEachWord = 'capitalize',\n}\n","/**\r\n * Possible change sources. Here are the predefined sources.\r\n * It can also be other string if the change source can't fall into these sources.\r\n */\r\nexport const enum ChangeSource {\r\n /**\r\n * Content changed by auto link\r\n */\r\n AutoLink = 'AutoLink',\r\n\r\n /**\r\n * Content changed by create link\r\n */\r\n CreateLink = 'CreateLink',\r\n\r\n /**\r\n * Content changed by format\r\n */\r\n Format = 'Format',\r\n\r\n /**\r\n * Content changed by image resize\r\n */\r\n ImageResize = 'ImageResize',\r\n\r\n /**\r\n * Content changed by paste\r\n */\r\n Paste = 'Paste',\r\n\r\n /**\r\n * Content changed by setContent API\r\n */\r\n SetContent = 'SetContent',\r\n\r\n /**\r\n * Content changed by cut operation\r\n */\r\n Cut = 'Cut',\r\n\r\n /**\r\n * Content changed by drag & drop operation\r\n */\r\n Drop = 'Drop',\r\n\r\n /**\r\n * Insert a new entity into editor\r\n */\r\n InsertEntity = 'InsertEntity',\r\n\r\n /**\r\n * Editor is switched to dark mode, content color is changed\r\n */\r\n SwitchToDarkMode = 'SwitchToDarkMode',\r\n\r\n /**\r\n * Editor is switched to light mode, content color is changed\r\n */\r\n SwitchToLightMode = 'SwitchToLightMode',\r\n\r\n /**\r\n * List chain reorganized numbers of lists\r\n */\r\n ListChain = 'ListChain',\r\n\r\n /**\r\n * Keyboard event, used by Content Model.\r\n * Data of this event will be the key code number\r\n */\r\n Keyboard = 'Keyboard',\r\n}\r\n","/**\n * Represents the strategy to clear the format of the current editor selection\n */\nexport const enum ClearFormatMode {\n /**\n * Inline format. Remove text format.\n */\n Inline,\n\n /**\n * BLock format. Remove text and structure format of the block.\n */\n Block,\n\n /**\n * Detect Inline or Block format based on the current editor selector.\n */\n AutoDetect,\n}\n","/**\n * Represents the mode of color transformation\n */\nexport const enum ColorTransformDirection {\n /**\n * Transform from light to dark\n */\n LightToDark = 0,\n\n /**\n * Transform from dark to light\n */\n DarkToLight = 1,\n}\n","/**\r\n * The position. Mostly used for content insertion and traversing\r\n * On insertion, we will need to specify where we want the content to be placed (begin, end, selection or outside)\r\n * On content traversing, we will need to specify the start position of traversing\r\n */\r\nexport const enum ContentPosition {\r\n /**\r\n * Begin of the container\r\n */\r\n Begin,\r\n\r\n /**\r\n * End of the container\r\n */\r\n End,\r\n\r\n /**\r\n * End of the content div domain.\r\n */\r\n DomEnd,\r\n\r\n /**\r\n * Selection start\r\n */\r\n SelectionStart,\r\n\r\n /**\r\n * Outside of editor\r\n */\r\n Outside,\r\n\r\n /**\r\n * Manually defined range\r\n */\r\n Range,\r\n}\r\n","/**\n * Prefix of content types\n */\nexport const enum ContentTypePrefix {\n /**\n * Text type prefix\n */\n Text = 'text/',\n\n /**\n * Image type prefix\n */\n Image = 'image/',\n}\n\n/**\n * Known content types\n */\nexport const enum ContentType {\n /**\n * Plain text content type\n */\n PlainText = 'text/plain',\n\n /**\n * HTML content type\n */\n HTML = 'text/html',\n}\n","/**\n * @deprecated\n * Constants string for dataset names used by dark mode\n */\nexport const enum DarkModeDatasetNames {\n /**\n * Original style text color\n */\n OriginalStyleColor = 'ogsc',\n\n /**\n * Original style background color\n */\n OriginalStyleBackgroundColor = 'ogsb',\n\n /**\n * Original attribute text color\n */\n OriginalAttributeColor = 'ogac',\n\n /**\n * Original attribute background color\n */\n OriginalAttributeBackgroundColor = 'ogab',\n}\n","/**\n * Types of definitions, used by Definition type\n */\nexport const enum DefinitionType {\n /**\n * Boolean type definition, represents a boolean type value\n */\n Boolean,\n\n /**\n * Number type definition, represents a number type value\n */\n Number,\n\n /**\n * String type definition, represents a string type value\n */\n String,\n\n /**\n * Array type definition, represents an array with a given item type\n */\n Array,\n\n /**\n * Object type definition, represents an object with the given property types\n */\n Object,\n\n /**\n * Customize type definition, represents a customized type with a validator function\n */\n Customize,\n}\n","/**\n * Class names for Delimiter\n */\nexport const enum DelimiterClasses {\n /**\n * Class name to specify this delimiter is before an entity\n */\n DELIMITER_BEFORE = 'entityDelimiterBefore',\n\n /**\n * Class name to specify this delimiter is after an entity\n */\n DELIMITER_AFTER = 'entityDelimiterAfter',\n}\n","/**\r\n * enum for setting block direction, used by setDirection API\r\n */\r\nexport const enum Direction {\r\n /**\r\n * Left to right\r\n */\r\n LeftToRight,\r\n\r\n /**\r\n * Right to left\r\n */\r\n RightToLeft,\r\n}\r\n","/**\n * Command strings for Document.execCommand() API\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand\n */\nexport const enum DocumentCommand {\n /**\n * Changes the browser auto-link behavior (Internet Explorer only)\n */\n AutoUrlDetect = 'AutoUrlDetect',\n\n /**\n * Changes the document background color. In styleWithCss mode, it affects the background color of the containing block instead.\n * This requires a <color> value string to be passed in as a value argument. Note that Internet Explorer uses this to set the\n * text background color.\n */\n BackColor = 'backColor',\n\n /**\n * Toggles bold on/off for the selection or at the insertion point. Internet Explorer uses the <strong> tag instead of <b>.\n */\n Bold = 'bold',\n\n /**\n * Clears all authentication credentials from the cache.\n */\n ClearAuthenticationCache = 'ClearAuthenticationCache',\n\n /**\n * Makes the content document either read-only or editable. This requires a boolean true/false as the value argument.\n * (Not supported by Internet Explorer.)\n */\n ContentReadOnly = 'contentReadOnly',\n\n /**\n * Copies the current selection to the clipboard. Conditions of having this behavior enabled vary from one browser to another,\n * and have evolved over time. Check the compatibility table to determine if you can use it in your case.\n */\n Copy = 'copy',\n\n /**\n * Creates an hyperlink from the selection, but only if there is a selection. Requires a URI string as a value argument for the\n * hyperlink's href. The URI must contain at least a single character, which may be whitespace.\n * (Internet Explorer will create a link with a null value.)\n */\n CreateLink = 'createLink',\n\n /**\n * Removes the current selection and copies it to the clipboard. When this behavior is enabled varies between browsers,\n * and its conditions have evolved over time. Check the compatibility table for usage details.\n */\n Cut = 'cut',\n\n /**\n * Adds a <small> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n DecreaseFontSize = 'decreaseFontSize',\n\n /**\n * Changes the paragraph separator used when new paragraphs are created in editable text regions. See Differences in markup\n * generation for more details.\n */\n DefaultParagraphSeparator = 'defaultParagraphSeparator',\n\n /**\n * Deletes the current selection.\n */\n Delete = 'delete',\n\n /**\n * Enables or disables the table row/column insertion and deletion controls. (Not supported by Internet Explorer.)\n */\n EnableInlineTableEditing = 'enableInlineTableEditing',\n\n /**\n * Enables or disables the resize handles on images and other resizable objects. (Not supported by Internet Explorer.)\n */\n EnableObjectResizing = 'enableObjectResizing',\n\n /**\n * Changes the font name for the selection or at the insertion point. This requires a font name string (like \"Arial\")\n * as a value argument.\n */\n FontName = 'fontName',\n\n /**\n * Changes the font size for the selection or at the insertion point. This requires an integer from 1-7 as a value argument.\n */\n FontSize = 'fontSize',\n\n /**\n * Changes a font color for the selection or at the insertion point. This requires a hexadecimal color value string\n * as a value argument.\n */\n ForeColor = 'foreColor',\n\n /**\n * Adds an HTML block-level element around the line containing the current selection, replacing the block element containing\n * the line if one exists (in Firefox, <blockquote> is the exception — it will wrap any containing block element).\n * Requires a tag-name string as a value argument. Virtually all block-level elements can be used.\n * (Internet Explorer supports only heading tags H1–H6, ADDRESS, and PRE, which must be wrapped in angle brackets, such as \"<H1>\".)\n */\n FormatBlock = 'formatBlock',\n\n /**\n * Deletes the character ahead of the cursor's position, identical to hitting the Delete key on a Windows keyboard.\n */\n ForwardDelete = 'forwardDelete',\n\n /**\n * Adds a heading element around a selection or insertion point line. Requires the tag-name strings a value argument (i.e. \"H1\", \"H6\").\n * (Not supported by Internet Explorer and Safari.)\n */\n Heading = 'heading',\n\n /**\n * Changes the background color for the selection or at the insertion point. Requires a color value string as a value argument.\n * useCSS must be true for this to function. (Not supported by Internet Explorer.)\n */\n HiliteColor = 'hiliteColor',\n\n /**\n * Adds a <big> tag around the selection or at the insertion point. (Not supported by Internet Explorer.)\n */\n IncreaseFontSize = 'increaseFontSize',\n\n /**\n * Indents the line containing the selection or insertion point. In Firefox, if the selection spans multiple lines at different\n * levels of indentation, only the least indented lines in the selection will be indented.\n */\n Indent = 'indent',\n\n /**\n * Controls whether the Enter key inserts a <br> element, or splits the current block element into two.\n * (Not supported by Internet Explorer.)\n */\n InsertBrOnReturn = 'insertBrOnReturn',\n\n /**\n * Inserts a <hr> element at the insertion point, or replaces the selection with it.\n */\n InsertHorizontalRule = 'insertHorizontalRule',\n\n /**\n * Inserts an HTML string at the insertion point (deletes selection). Requires a valid HTML string as a value argument.\n * (Not supported by Internet Explorer.)\n */\n InsertHTML = 'insertHTML',\n\n /**\n * Inserts an image at the insertion point (deletes selection). Requires a URL string for the image's src as a value argument.\n * The requirements for this string are the same as createLink.\n */\n InsertImage = 'insertImage',\n\n /**\n * Creates a numbered ordered list for the selection or at the insertion point.\n */\n InsertOrderedList = 'insertOrderedList',\n\n /**\n * Creates a bulleted unordered list for the selection or at the insertion point.\n */\n InsertUnorderedList = 'insertUnorderedList',\n\n /**\n * Inserts a paragraph around the selection or the current line.\n * (Internet Explorer inserts a paragraph at the insertion point and deletes the selection.)\n */\n InsertParagraph = 'insertParagraph',\n\n /**\n * Inserts the given plain text at the insertion point (deletes selection).\n */\n InsertText = 'insertText',\n\n /**\n * Toggles italics on/off for the selection or at the insertion point.\n * (Internet Explorer uses the <em> element instead of <i>.)\n */\n Italic = 'italic',\n\n /**\n * Centers the selection or insertion point.\n */\n JustifyCenter = 'justifyCenter',\n\n /**\n * Justifies the selection or insertion point.\n */\n JustifyFull = 'justifyFull',\n\n /**\n * Justifies the selection or insertion point to the left.\n */\n JustifyLeft = 'justifyLeft',\n\n /**\n * Right-justifies the selection or the insertion point.\n */\n JustifyRight = 'justifyRight',\n\n /**\n * Outdents the line containing the selection or insertion point.\n */\n Outdent = 'outdent',\n\n /**\n * Pastes the clipboard contents at the insertion point (replaces current selection). Disabled for web content. See [1].\n */\n Paste = 'paste',\n\n /**\n * Redoes the previous undo command.\n */\n Redo = 'redo',\n\n /**\n * Removes all formatting from the current selection.\n */\n RemoveFormat = 'removeFormat',\n\n /**\n * Selects all of the content of the editable region.\n */\n SelectAll = 'selectAll',\n\n /**\n * Toggles strikethrough on/off for the selection or at the insertion point.\n */\n StrikeThrough = 'strikeThrough',\n\n /**\n * Toggles subscript on/off for the selection or at the insertion point.\n */\n Subscript = 'subscript',\n\n /**\n * Toggles superscript on/off for the selection or at the insertion point.\n */\n Superscript = 'superscript',\n\n /**\n * Toggles underline on/off for the selection or at the insertion point.\n */\n Underline = 'underline',\n\n /**\n * Undoes the last executed command.\n */\n Undo = 'undo',\n\n /**\n * Removes the anchor element from a selected hyperlink.\n */\n Unlink = 'unlink',\n\n /**\n * Replaces the useCSS command. true modifies/generates style attributes in markup, false generates presentational elements.\n */\n StyleWithCSS = 'styleWithCSS',\n}\n","/**\n * The is essentially an enum representing result from browser compareDocumentPosition API\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n */\nexport const enum DocumentPosition {\n /**\n * Same node\n */\n Same = 0,\n\n /**\n * Node is disconnected from document\n */\n Disconnected = 1,\n\n /**\n * Node is preceding the comparing node\n */\n Preceding = 2,\n\n /**\n * Node is following the comparing node\n */\n Following = 4,\n\n /**\n * Node contains the comparing node\n */\n Contains = 8,\n\n /**\n * Node is contained by the comparing node\n */\n ContainedBy = 16,\n}\n","/**\n * CSS Class names for Entity\n */\nexport const enum EntityClasses {\n /**\n * Class name to specify this is an entity\n */\n ENTITY_INFO_NAME = '_Entity',\n\n /**\n * Class name to specify the type of an entity\n */\n ENTITY_TYPE_PREFIX = '_EType_',\n\n /**\n * Class name to specify the ID of an entity\n */\n ENTITY_ID_PREFIX = '_EId_',\n\n /**\n * Class name to specify if the entity is readonly\n */\n ENTITY_READONLY_PREFIX = '_EReadonly_',\n}\n","/**\n * Define possible operations to an entity\n */\nexport const enum EntityOperation {\n /**\n * Notify plugins that there is a new plugin was added into editor.\n * Plugin can handle this event to entity hydration.\n * This event will be only fired once for each entity DOM node.\n * After undo, or copy/paste, since new DOM nodes were added, this event will be fired\n * for those entities represented by newly added nodes.\n */\n NewEntity,\n\n /**\n * Notify plugins that user is clicking target to an entity\n */\n Click,\n\n /**\n * Notify plugins that user is triggering context menu to an entity\n */\n ContextMenu,\n\n /**\n * Notify plugins that user is escaping from an entity by pressing ESC key\n */\n Escape,\n\n /**\n * Notify plugins that user is removing an entity from its start position using DELETE key\n */\n RemoveFromStart,\n\n /**\n * Notify plugins that user is remove an entity from its end position using BACKSPACE key\n */\n RemoveFromEnd,\n\n /**\n * Notify plugins that an entity is being overwritten.\n * This can be caused by key in, cut, paste, delete, backspace ... on a selection\n * which contains some entities.\n */\n Overwrite,\n\n /**\n * Notify plugins that an entity is being partially overwritten.\n * This happens when user selected part of the entity then do key press, or cut, paste, delete, backspace, ...\n */\n PartialOverwrite,\n\n /**\n * Notify plugins that editor is generating HTML content for save.\n * Plugin should use this event to remove any temporary content, and only leave DOM nodes that\n * should be saved as HTML string.\n * This event will provide a cloned DOM tree for each entity, do NOT compare the DOM nodes with cached nodes\n * because it will always return false.\n */\n ReplaceTemporaryContent,\n\n /**\n * @deprecated\n */\n AddShadowRoot,\n\n /**\n * @deprecated\n */\n RemoveShadowRoot,\n\n /**\n * Notify plugins that a new entity state need to be updated to an entity.\n * This is normally happened when user undo/redo the content with an entity snapshot added by a plugin that handles entity\n */\n UpdateEntityState,\n}\n","/**\n * Experimental feature flags\n */\nexport const enum ExperimentalFeatures {\n // #region Graduated and deprecated features.\n // These features will be removed in next major release\n /**\n * @deprecated This feature is always enabled\n */\n NewIndentation = 'NewIndentation',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewBullet = 'NewBullet',\n\n /**\n * @deprecated This feature is always enabled\n */\n NewNumbering = 'NewNumbering',\n\n /**\n * @deprecated This feature is always enabled\n */\n ListChain = 'ListChain',\n\n /**\n * @deprecated This feature is always enabled\n */\n MergePastedLine = 'MergePastedLine',\n\n /**\n * @deprecated This feature is always enabled\n */\n SingleDirectionResize = 'SingleDirectionResize',\n\n /**\n * @deprecated This feature is always enabled\n */\n PasteWithLinkPreview = 'PasteWithLinkPreview',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageRotate = 'ImageRotate',\n\n /**\n * @deprecated This feature is always enabled\n */\n ImageCrop = 'ImageCrop',\n\n /**\n * @deprecated This feature is always enabled\n * Check if the element has a style attribute, if not, apply the default format\n */\n AlwaysApplyDefaultFormat = 'AlwaysApplyDefaultFormat',\n\n /**\n * @deprecated This feature can be enabled/disabled using Paste Plugin contructor param\n * Paste the Html instead of the Img when the Html Body only have one IMG Child node\n */\n ConvertSingleImageBody = 'ConvertSingleImageBody',\n\n /**\n * @deprecated This feature is always enabled\n * Align table elements to left, center and right using setAlignment API\n */\n TableAlignment = 'TableAlignment',\n\n /**\n * @deprecated this feature is always enabled\n * Provide a circular resize handles that adaptive the number od handles to the size of the image\n */\n AdaptiveHandlesResizer = 'AdaptiveHandlesResizer',\n\n /**\n * @deprecated this feature is always disabled\n * Automatically transform -- into hyphen, if typed between two words.\n */\n AutoHyphen = 'AutoHyphen',\n\n /**\n * @deprecated this feature is always disabled\n * Use pending format strategy to do style based format, e.g. Font size, Color.\n * With this feature enabled, we don't need to insert temp ZeroWidthSpace character to hold pending format\n * when selection is collapsed. Instead, we will hold the pending format in memory and only apply it when type something\n */\n PendingStyleBasedFormat = 'PendingStyleBasedFormat',\n\n /**\n * @deprecated this feature is always disabled\n * Normalize list to make sure it can be displayed correctly in other client\n * e.g. We will move list items with \"display: block\" into previous list item and change tag to be DIV\n */\n NormalizeList = 'NormalizeList',\n\n /**\n * @deprecated this feature is always enabled\n * When a html image is selected, the selected image data will be stored by editor core.\n */\n ImageSelection = 'ImageSelection',\n\n /**\n * @deprecated this feature is always enabled\n * Use variable-based dark mode solution rather than dataset-based solution.\n * When enable this feature, need to pass in a DarkModelHandler object to each call of setColor and applyFormat\n * if you need them work for dark mode\n */\n VariableBasedDarkColor = 'VariableBasedDarkColor',\n\n /**\n * @deprecated this feature is always enabled\n * Align list elements elements to left, center and right using setAlignment API\n */\n ListItemAlignment = 'ListItemAlignment',\n\n /**\n * @deprecated\n */\n DefaultFormatInSpan = 'DefaultFormatInSpan',\n\n /**\n * @deprecated\n */\n DefaultFormatOnContainer = 'DefaultFormatOnContainer',\n\n /**\n * @deprecated This feature is always enabled\n * Reuse existing DOM structure if possible when convert Content Model back to DOM tree\n */\n ReusableContentModel = 'ReusableContentModel',\n\n /**\n * @deprecated This feature is always enabled\n * Handle keyboard editing event with Content Model\n */\n EditWithContentModel = 'EditWithContentModel',\n\n //#endregion\n\n /**\n * Provide additional Tab Key Features. Requires Text Features Content Editable Features\n */\n TabKeyTextFeatures = 'TabKeyTextFeatures',\n\n /**\n * Trigger formatting by a especial characters. Ex: (A), 1. i).\n */\n AutoFormatList = 'AutoFormatList',\n\n /**\n * With this feature enabled, when writing back a list item we will re-use all\n * ancestor list elements, even if they don't match the types currently in the\n * listTypes array for that item. The only list that we will ensure is correct\n * is the one closest to the item.\n */\n ReuseAllAncestorListElements = 'ReuseAllAncestorListElements',\n\n /**\n * Delete table with Backspace key with the whole was selected with table selector\n */\n DeleteTableWithBackspace = 'DeleteTableWithBackspace',\n\n /**\n * Add entities around a Read Only Inline entity to prevent cursor to be hidden when cursor is next of it.\n */\n InlineEntityReadOnlyDelimiters = 'InlineEntityReadOnlyDelimiters',\n\n /**\n * Paste with Content model\n */\n ContentModelPaste = 'ContentModelPaste',\n\n /**\n * Disable list chain functionality\n */\n DisableListChain = 'DisableListChain',\n}\n","/**\r\n * The enum used for increase or decrease font size\r\n * Used by setFontSize API\r\n */\r\nexport const enum FontSizeChange {\r\n /**\r\n * Increase font size\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease font size\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Represents a mode number to indicate what kind of content to retrieve when call Editor.getContent()\n */\nexport const enum GetContentMode {\n /**\n * The clean content without any temporary content only for editor.\n * This is the default value. Call to Editor.getContent() with trigger an ExtractContentWithDom event\n * so that plugins can remove their temporary content, and will return the HTML content\n * which is ready for save to storage.\n */\n CleanHTML = 0,\n\n /**\n * Retrieve the raw HTML string in current editor. Temporary content will be included.\n */\n RawHTMLOnly = 1,\n\n /**\n * Retrieve the raw HTML string in current editor with a selection marker. This can be used for\n * save current editor state and call to SetContent with this result can fully restore editor state\n * including current selection\n */\n RawHTMLWithSelection = 2,\n\n /**\n * Get plain text content only, all format will be ignored\n */\n PlainText,\n\n /**\n * A fast way to get plain text content, the line-end positions may not be exactly same with HTML content,\n * but the text content should be the same. This is used for quickly retrieve text content and check\n * text only\n */\n PlainTextFast,\n}\n","/**\n * Operation flags for ImageEdit plugin\n */\nexport const enum ImageEditOperation {\n /**\n * No operation\n */\n None = 0,\n\n /**\n * Resize image from corner ( horizontal and vertical resize)\n */\n CornerResize = 1,\n\n /**\n * Resize image from side ( either horizontal or vertical resize)\n */\n SideResize = 2,\n\n /**\n * Image resize\n */\n Resize = CornerResize | SideResize,\n\n /**\n * Image rotate\n */\n Rotate = 4,\n\n /**\n * Image resize and rotate\n */\n ResizeAndRotate = Resize | Rotate,\n\n /**\n * Image crop\n */\n Crop = 8,\n\n /**\n * All operations\n */\n All = ResizeAndRotate | Crop,\n}\n","/**\r\n * The enum used for increase or decrease indentation of a block\r\n * Used by setIndentation API\r\n */\r\nexport const enum Indentation {\r\n /**\r\n * Increase indentation\r\n */\r\n Increase,\r\n\r\n /**\r\n * Decrease indentation\r\n */\r\n Decrease,\r\n}\r\n","/**\n * Key numbers common used keys\n */\nexport const enum Keys {\n NULL = 0,\n BACKSPACE = 8,\n TAB = 9,\n ENTER = 13,\n SHIFT = 16,\n CTRL_LEFT = 17,\n ALT = 18,\n ESCAPE = 27,\n SPACE = 32,\n PAGEUP = 33,\n END = 35,\n HOME = 36,\n LEFT = 37,\n UP = 38,\n RIGHT = 39,\n DOWN = 40,\n PRINT_SCREEN = 44,\n DELETE = 46,\n /**\n * @deprecated Just for backward compatibility\n */\n EIGHT_ASTIRISK = 56,\n EIGHT_ASTERISK = 56,\n B = 66,\n I = 73,\n U = 85,\n Y = 89,\n Z = 90,\n META_LEFT = 91,\n COMMA = 188,\n DASH_UNDERSCORE = 189,\n PERIOD = 190,\n /**\n * @deprecated Just for backward compatibility\n */\n FORWARDSLASH = 191,\n FORWARD_SLASH = 191,\n GRAVE_TILDE = 192,\n\n /**\n * Keys below are non-standard, and should be used in ContentEditFeatures only\n */\n CONTENTCHANGED = 0x101,\n RANGE = 0x102,\n\n Ctrl = 0x1000,\n Meta = 0x2000,\n Shift = 0x4000,\n}\n","/**\n * Index of known CreateElementData used by createElement function\n */\nexport const enum KnownCreateElementDataIndex {\n /**\n * Set a none value to help createElement function ignore falsy value\n */\n None = 0,\n\n /**\n * An empty line without format\n */\n EmptyLine = 1,\n\n /**\n * Wrapper for blockquote\n */\n BlockquoteWrapper = 2,\n\n /**\n * Temp DIV for copy/paste\n */\n CopyPasteTempDiv = 3,\n\n /**\n * ListItem with block style\n */\n BlockListItem = 4,\n\n /**\n * Wrapper element for context menu\n */\n ContextMenuWrapper = 5,\n\n /**\n * Wrapper element for image edit\n */\n ImageEditWrapper = 6,\n\n /**\n * @deprecated\n */\n TableHorizontalResizer = 7,\n\n /**\n * @deprecated\n */\n TableVerticalResizer = 8,\n\n /**\n * @deprecated\n */\n TableResizerLTR = 9,\n\n /**\n * @deprecated\n */\n TableResizerRTL = 10,\n\n /**\n * @deprecated\n */\n TableSelector = 11,\n\n /**\n * @deprecated\n */\n EmptyLineFormatInSpan = 12,\n}\n","/**\n * Represent the types of sources to handle in the Paste Plugin\n */\nexport const enum KnownPasteSourceType {\n WordDesktop,\n ExcelDesktop,\n ExcelOnline,\n PowerPointDesktop,\n GoogleSheets,\n WacComponents,\n Default,\n SingleImage,\n}\n","/**\n * Type of list (numbering or bullet)\n */\nexport const enum ListType {\n /**\n * None list type\n * It means this is not a list\n */\n None = 0,\n\n /**\n * Ordered List type (numbering list)\n * Represented by \"OL\" tag\n */\n Ordered = 1,\n\n /**\n * Unordered List type (bullet list)\n * Represented by \"UL\" tag\n */\n Unordered = 2,\n}\n","/**\n * The is essentially an enum represents the type of the node\n * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n * Values not listed here are deprecated.\n */\nexport const enum NodeType {\n /**\n * An Element node such as <p> or <div>.\n */\n Element = 1,\n\n /**\n * An Attribute node such as name=\"value\".\n */\n Attribute = 2,\n\n /**\n * The actual Text of Element or Attr.\n */\n Text = 3,\n\n /**\n * A ProcessingInstruction of an XML document such as <?xml-stylesheet ... ?> declaration.\n */\n ProcessingInstruction = 7,\n\n /**\n * A Comment node.\n */\n Comment = 8,\n\n /**\n * A Document node.\n */\n Document = 9,\n\n /**\n * A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents.\n */\n DocumentType = 10,\n\n /**\n * A DocumentFragment node.\n */\n DocumentFragment = 11,\n}\n","/**\n * Enum used to control the different types of numbering list\n */\nexport const enum NumberingListType {\n /**\n * Minimum value of the enum\n */\n Min = 1,\n\n /**\n * Numbering triggered by 1.\n */\n Decimal = 1,\n\n /**\n * Numbering triggered by 1-\n */\n DecimalDash = 2,\n\n /**\n * Numbering triggered by 1)\n */\n DecimalParenthesis = 3,\n\n /**\n * Numbering triggered by (1)\n */\n DecimalDoubleParenthesis = 4,\n\n /**\n * Numbering triggered by a.\n */\n LowerAlpha = 5,\n\n /**\n * Numbering triggered by a)\n */\n LowerAlphaParenthesis = 6,\n\n /**\n * Numbering triggered by (a)\n */\n LowerAlphaDoubleParenthesis = 7,\n\n /**\n * Numbering triggered by a-\n */\n LowerAlphaDash = 8,\n\n /**\n * Numbering triggered by A.\n */\n UpperAlpha = 9,\n\n /**\n * Numbering triggered by A)\n */\n UpperAlphaParenthesis = 10,\n\n /**\n * Numbering triggered by (A)\n */\n UpperAlphaDoubleParenthesis = 11,\n\n /**\n * Numbering triggered by A-\n */\n UpperAlphaDash = 12,\n\n /**\n * Numbering triggered by i.\n */\n LowerRoman = 13,\n\n /**\n * Numbering triggered by i)\n */\n LowerRomanParenthesis = 14,\n\n /**\n * Numbering triggered by (i)\n */\n LowerRomanDoubleParenthesis = 15,\n\n /**\n * Numbering triggered by i-\n */\n LowerRomanDash = 16,\n\n /**\n * Numbering triggered by I.\n */\n UpperRoman = 17,\n\n /**\n * Numbering triggered by I)\n */\n UpperRomanParenthesis = 18,\n\n /**\n * Numbering triggered by (I)\n */\n UpperRomanDoubleParenthesis = 19,\n\n /**\n * Numbering triggered by I-\n */\n UpperRomanDash = 20,\n\n /**\n * Maximum value of the enum\n */\n Max = 20,\n}\n","/**\n * Enum for paste options\n */\nexport const enum PasteType {\n /**\n * Default paste behavior\n */\n Normal,\n\n /**\n * Paste only the plain text\n */\n AsPlainText,\n\n /**\n * Apply the current style to pasted content\n */\n MergeFormat,\n\n /**\n * If there is a image uri in the clipboard, paste the content as image element\n */\n AsImage,\n}\n","/**\n * Editor plugin event type\n */\nexport const enum PluginEventType {\n /**\n * HTML KeyDown event\n */\n KeyDown = 0,\n\n /**\n * HTML KeyPress event\n */\n KeyPress = 1,\n\n /**\n * HTML KeyUp event\n */\n KeyUp = 2,\n\n /**\n * HTML Input / TextInput event\n */\n Input = 3,\n\n /**\n * HTML CompositionEnd event\n */\n CompositionEnd = 4,\n\n /**\n * HTML MouseDown event\n */\n MouseDown = 5,\n\n /**\n * HTML MouseUp event\n */\n MouseUp = 6,\n\n /**\n * Content changed event\n */\n ContentChanged = 7,\n\n /**\n * Extract Content with a DOM tree event\n * This event is triggered when getContent() is called with triggerExtractContentEvent = true\n * Plugin can handle this event to remove the UI only markups to return clean HTML\n * by operating on a cloned DOM tree\n */\n ExtractContentWithDom = 8,\n\n /**\n * Before Paste event, provide a chance to change copied content\n */\n BeforeCutCopy = 9,\n\n /**\n * Before Paste event, provide a chance to change paste content\n */\n BeforePaste = 10,\n\n /**\n * Let plugin know editor is ready now\n */\n EditorReady = 11,\n\n /**\n * Let plugin know editor is about to dispose\n */\n BeforeDispose = 12,\n\n /**\n * Pending format state (bold, italic, underline, ... with collapsed selection) is changed\n */\n PendingFormatStateChanged = 13,\n\n /**\n * Scroll event triggered by scroll container\n */\n Scroll = 14,\n\n /**\n * Operating on an entity. See enum EntityOperation for more details about each operation\n */\n EntityOperation = 15,\n\n /**\n * HTML ContextMenu event\n */\n ContextMenu = 16,\n\n /**\n * Editor has entered shadow edit mode\n */\n EnteredShadowEdit = 17,\n\n /**\n * Editor is about to leave shadow edit mode\n */\n LeavingShadowEdit = 18,\n\n /**\n * Content of image is being changed from client side\n */\n EditImage = 19,\n\n /**\n * Content of editor is about to be cleared by SetContent API, handle this event to cache anything you need\n * before it is gone\n */\n BeforeSetContent = 20,\n\n /**\n * Zoom scale value is changed, triggered by Editor.setZoomScale() when set a different scale number\n */\n ZoomChanged = 21,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor changed the selection.\n */\n SelectionChanged = 22,\n\n /**\n * EXPERIMENTAL FEATURE\n * Editor content is about to be changed by keyboard event.\n * This is only used by Content Model editing\n */\n BeforeKeyboardEditing = 23,\n}\n","/**\r\n * Represent the type of a position\r\n */\r\nexport const enum PositionType {\r\n /**\r\n * At the beginning of a node\r\n */\r\n Begin = 0,\r\n\r\n /**\r\n * At the end of a node\r\n */\r\n End = -1,\r\n\r\n /**\r\n * Before a node\r\n */\r\n Before = -2,\r\n\r\n /**\r\n * After a node\r\n */\r\n After = -3,\r\n}\r\n","/**\r\n * Query scope for queryElements() API\r\n */\r\nexport const enum QueryScope {\r\n /**\r\n * Query from the whole body of root node. This is default value.\r\n */\r\n Body,\r\n\r\n /**\r\n * Query elements on a given selection (intersect)\r\n * The result element can contain the selection, contain part of selection, or inside selection\r\n */\r\n OnSelection,\r\n\r\n /**\r\n * Query elements inside a given selection only\r\n */\r\n InSelection,\r\n}\r\n","/**\n * Type of all possible regions. Currently we only support region of Table\n */\nexport const enum RegionType {\n /**\n * Region split by Table\n */\n Table,\n}\n","/**\n * Types of Selection Ranges that the SelectionRangeEx can return\n */\nexport const enum SelectionRangeTypes {\n /**\n * Normal selection range provided by browser.\n */\n Normal,\n /**\n * Selection made inside of a single table.\n */\n TableSelection,\n /**\n * Selection made in a image.\n */\n ImageSelection,\n}\n","/**\n * Table format border\n */\nexport const enum TableBorderFormat {\n /**\n * All border of the table are displayed\n * __ __ __\n * |__|__|__|\n * |__|__|__|\n * |__|__|__|\n */\n DEFAULT,\n\n /**\n * Middle vertical border are not displayed\n * __ __ __\n * |__ __ __|\n * |__ __ __|\n * |__ __ __|\n */\n LIST_WITH_SIDE_BORDERS,\n\n /**\n * All borders except header rows borders are displayed\n * __ __ __\n * __|__|__\n * __|__|__\n */\n NO_HEADER_BORDERS,\n\n /**\n * The left and right border of the table are not displayed\n * __ __ __\n * __|__|__\n * __|__|__\n * __|__|__\n */\n NO_SIDE_BORDERS,\n\n /**\n * Only the borders that divides the header row, first column and externals are displayed\n * __ __ __\n * |__ __ __|\n * | | |\n * |__|__ __|\n */\n FIRST_COLUMN_HEADER_EXTERNAL,\n\n /**\n * The header row has no vertical border, except for the first one\n * The first column has no horizontal border, except for the first one\n * __ __ __\n * |__ __ __\n * | |__|__|\n * | |__|__|\n */\n ESPECIAL_TYPE_1,\n\n /**\n * The header row has no vertical border, except for the first one\n * The only horizontal border of the table is the top and bottom of header row\n * __ __ __\n * |__ __ __\n * | | |\n * | | |\n */\n ESPECIAL_TYPE_2,\n\n /**\n * The only borders are the bottom of header row and the right border of first column\n * __ __ __\n * |\n * |\n */\n ESPECIAL_TYPE_3,\n\n /**\n * No border\n */\n CLEAR,\n}\n","/**\r\n * Operations used by editTable() API\r\n */\r\nexport const enum TableOperation {\r\n /**\r\n * Insert a row above current row\r\n */\r\n InsertAbove,\r\n\r\n /**\r\n * Insert a row below current row\r\n */\r\n InsertBelow,\r\n\r\n /**\r\n * Insert a column on the left of current column\r\n */\r\n InsertLeft,\r\n\r\n /**\r\n * Insert a column on the right of current column\r\n */\r\n InsertRight,\r\n\r\n /**\r\n * Delete the whole table\r\n */\r\n DeleteTable,\r\n\r\n /**\r\n * Delete current column\r\n */\r\n DeleteColumn,\r\n\r\n /**\r\n * Delete current row\r\n */\r\n DeleteRow,\r\n\r\n /**\r\n * Merge current row with the row above\r\n */\r\n MergeAbove,\r\n\r\n /**\r\n * Merge current row with the row below\r\n */\r\n MergeBelow,\r\n\r\n /**\r\n * Merge current column with the column on the left\r\n */\r\n MergeLeft,\r\n\r\n /**\r\n * Merge current column with the column on the right\r\n */\r\n MergeRight,\r\n\r\n /**\r\n * Merge all selected cells\r\n */\r\n MergeCells,\r\n\r\n /**\r\n * Split current table cell horizontally\r\n */\r\n SplitHorizontally,\r\n\r\n /**\r\n * Split current table cell vertically\r\n */\r\n SplitVertically,\r\n\r\n /**\r\n * Align current table at the center\r\n */\r\n AlignCenter,\r\n\r\n /**\r\n * Align current table at the left\r\n */\r\n AlignLeft,\r\n\r\n /**\r\n * Align current table at the right\r\n */\r\n AlignRight,\r\n\r\n /**\r\n * Align current content table cell at the left\r\n */\r\n AlignCellLeft,\r\n\r\n /**\r\n * Align current content table cell at the center\r\n */\r\n AlignCellCenter,\r\n\r\n /**\r\n * Align current content table cell at the right\r\n */\r\n AlignCellRight,\r\n\r\n /**\r\n * Align current content table cell at the top\r\n */\r\n AlignCellTop,\r\n\r\n /**\r\n * Align current table cell at the middle\r\n */\r\n AlignCellMiddle,\r\n\r\n /**\r\n * Align current table cell at the bottom\r\n */\r\n AlignCellBottom,\r\n}\r\n","export { DocumentCommand } from './DocumentCommand';\nexport { DocumentPosition } from './DocumentPosition';\nexport { Keys } from './Keys';\nexport { NodeType } from './NodeType';\nexport { ContentTypePrefix, ContentType } from './ContentType';\nexport { Alignment } from './Alignment';\nexport { ChangeSource } from './ChangeSource';\nexport { ColorTransformDirection } from './ColorTransformDirection';\nexport { ContentPosition } from './ContentPosition';\nexport { DarkModeDatasetNames } from './DarkModeDatasetNames';\nexport { DelimiterClasses } from './DelimiterClasses';\nexport { Direction } from './Direction';\nexport { EntityClasses } from './EntityClasses';\nexport { EntityOperation } from './EntityOperation';\nexport { ExperimentalFeatures } from './ExperimentalFeatures';\nexport { FontSizeChange } from './FontSizeChange';\nexport { GetContentMode } from './GetContentMode';\nexport { Indentation } from './Indentation';\nexport { Capitalization } from './Capitalization';\nexport { ListType } from './ListType';\nexport { PositionType } from './PositionType';\nexport { QueryScope } from './QueryScope';\nexport { RegionType } from './RegionType';\nexport { TableOperation } from './TableOperation';\nexport { ImageEditOperation } from './ImageEditOperation';\nexport { ClearFormatMode } from './ClearFormatMode';\nexport { KnownCreateElementDataIndex } from './KnownCreateElementDataIndex';\nexport { KnownPasteSourceType } from './KnownPasteSourceType';\nexport { TableBorderFormat } from './TableBorderFormat';\nexport { PluginEventType } from './PluginEventType';\nexport { SelectionRangeTypes } from './SelectionRangeTypes';\nexport { NumberingListType } from './NumberingListType';\nexport { BulletListType } from './BulletListType';\nexport { DefinitionType } from './DefinitionType';\nexport { PasteType } from './PasteType';\n","export * from './browser/index';\r\nexport * from './corePluginState/index';\r\nexport * from './enum/index';\r\nexport * from './event/index';\r\nexport * from './interface/index';\r\nexport * from './type/index';\r\n","import { Editor } from 'roosterjs-editor-core';\r\nimport { EditorOptions, EditorPlugin, IEditor } from 'roosterjs-editor-types';\r\nimport { getDarkColor } from 'roosterjs-color-utils';\r\nimport { ContentEdit, HyperLink, Paste } from 'roosterjs-editor-plugins';\r\n\r\n/**\r\n * Create an editor instance with most common options\r\n * @param contentDiv The html div element needed for creating the editor\r\n * @param additionalPlugins The additional user defined plugins. Currently the default plugins that are already included are\r\n * ContentEdit, HyperLink and Paste, user don't need to add those.\r\n * @param initialContent The initial content to show in editor. It can't be removed by undo, user need to manually remove it if needed.\r\n * @returns The editor instance\r\n */\r\nexport default function createEditor(\r\n contentDiv: HTMLDivElement,\r\n additionalPlugins?: EditorPlugin[],\r\n initialContent?: string\r\n): IEditor {\r\n let plugins: EditorPlugin[] = [new HyperLink(), new Paste(), new ContentEdit()];\r\n\r\n if (additionalPlugins) {\r\n plugins = plugins.concat(additionalPlugins);\r\n }\r\n\r\n let options: EditorOptions = {\r\n plugins: plugins,\r\n initialContent: initialContent,\r\n getDarkColor: getDarkColor,\r\n defaultFormat: {\r\n fontFamily: 'Calibri,Arial,Helvetica,sans-serif',\r\n fontSize: '11pt',\r\n textColor: '#000000',\r\n },\r\n };\r\n return new Editor(contentDiv, options);\r\n}\r\n","export { default as createEditor } from './createEditor';\r\nexport * from 'roosterjs-editor-types';\r\nexport * from 'roosterjs-editor-types-compatible';\r\nexport * from 'roosterjs-editor-dom';\r\nexport * from 'roosterjs-editor-core';\r\nexport * from 'roosterjs-editor-api';\r\nexport * from 'roosterjs-editor-plugins';\r\nexport * from 'roosterjs-color-utils';\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(8608);\n"],"names":["cssKeywords","reverseKeywords","key","hasOwnProperty","convert","module","exports","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","Error","length","Object","defineProperty","value","h","l","r","g","b","min","Math","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","val","i","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","args","arguments","round","ansi","color","mult","rem","string","toString","toUpperCase","substring","match","colorString","split","map","char","join","integer","parseInt","hue","chroma","mg","pure","w","conversions","route","keys","forEach","fromModel","routes","toModel","fn","wrappedFn","Array","prototype","slice","call","result","len","conversion","wrapRounded","raw","wrapRaw","link","from","to","wrapConversion","graph","path","parent","cur","unshift","models","buildGraph","queue","current","pop","adjacents","adjacent","node","deriveBFS","colorNames","swizzle","reverseNames","name","cs","get","clamp","num","hexDouble","str","toLowerCase","hexAlpha","i2","parseFloat","alpha","isNaN","rgba","percent","hsla","hwba","_slice","skippedModels","hashedModelKeys","sort","limiters","Color","obj","this","valpha","newArr","zeroArray","splice","indexOf","hashedKeys","JSON","stringify","push","limit","freeze","getset","channel","modifier","isArray","maxfn","arr","toJSON","places","self","concat","percentString","array","object","unitArray","unitObject","Number","toFixed","roundTo","roundToPlace","red","green","blue","saturationl","lightness","saturationv","white","wblack","cyan","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","undefined","w1","w2","newAlpha","Function","getOwnPropertyDescriptor","constructor","isArrayish","results","arg","wrap","default","baseLValue","computedColor","colorLab","newLValue","editor","capitalization","language","getCapitalizedText","originalText","toLocaleLowerCase","toLocaleUpperCase","wordArray","charAt","regex","RegExp","replace","element","getFirstLeafNode","getNextLeafSibling","nodeType","textContent","FONT_SIZES","getNewFontSize","pt","changeBase","fontSizes","ceil","last","change","getComputedStyle","style","fontSize","lineHeight","STYLES_TO_REMOVE","TAGS_TO_UNWRAP","ATTRIBUTES_TO_PRESERVE","TAGS_TO_STOP_UNWRAP","clearNodeFormat","areAllChildrenBlock","toArray","childNodes","every","returnBlockElement","isBlockElement","tag","getTagOfNode","isVoidHtmlElement","unwrap","isTableCell","safeInstanceOf","isTable","attributes","attr","removeNonBorderStyles","removeNotTableDefaultStyles","removeAttribute","clearAttribute","updateStyles","callbackfn","styles","getStyles","getObjectKeys","setStyles","clearBlockFormat","region","blocks","getSelectedBlockElementsInRegion","nodes","collapseNodesInRegion","contains","rootNode","nonborderStyles","wrapper","parentNode","isNodeInRegion","balancedNodes","splitBalancedNodeRange","setDefaultFormat","defaultFormat","getDefaultFormat","isDefaultFormatEmpty","queryElements","removeStyles","cNode","fontFamily","textColor","shouldApplyInlineStyle","textColors","backgroundColor","backgroundColors","bold","fontWeight","setDefaultFontWeight","italic","underline","removeProperty","getAttribute","clearFormat","formatType","focus","addUndoSnapshot","clearInlineFormat","isMultiBlock","transverser","getSelectionTraverser","currentBlockElement","getNextBlockElement","isMultiBlockSelection","inlineElement","currentInlineElement","isPartial","PartialInlineElement","NodeInlineElement","currentNode","nextSibling","previousSibling","isNodeWholeBlock","getContainerNode","clearAutoDetectFormat","URI_REGEX","MAILTO_REGEX","FTP_REGEX","getAnchorNodeAtCursor","updateAnchorDisplayText","anchor","displayText","altText","target","url","sanitizer","HtmlSanitizer","document","createElement","href","sanitize","checkXss","trim","linkData","matchLink","normalizedUrl","prefix","search","applyLinkPrefix","originalUrl","selection","getSelectionRangeEx","type","range","ranges","collapsed","getDocument","insertNode","execCommand","traverser","currentInline","getNextInlineElement","deletionInlineList","deleteNode","image","title","updateAnchorTarget","getElementBasedFormatState","event","listTag","getElementAtCursor","getSelectionRange","multiline","startingBlock","getBlockElementAtNode","startContainer","endingBlock","endContainer","equals","headingTag","table","tableFormat","getTableFormatInfo","hasTableHeader","rows","cells","cell","headingLevel","isBullet","isNumbering","isMultilineSelection","headerLevel","canUnlink","canAddImageAltText","isBlockQuote","isCodeInline","isCodeBlock","isInTable","tableHasHeader","canMergeTableCell","getPendableFormatState","getStyleBasedFormatState","getUndoState","isDarkMode","zoomScale","getZoomScale","coordinates","firstCell","lastCell","contentNode","isBlock","isReadonly","position","insertToRegionRoot","focusAfterEntity","display","commitEntity","currentRange","contentPosition","normalize","existingEntity","getEntitySelector","Position","select","regions","getSelectedRegions","chains","VListChain","createListChains","updateCursor","insertOnNewLine","replaceSelection","entity","getEntityFromElement","newLine","insertBefore","applyFormat","getDarkColorHandler","br","querySelector","pos","isFeatureEnabled","addDelimiters","nextElementSibling","triggerContentChangedEvent","insertImageWithSrc","src","attribute","setAttribute","imageFileOrSrc","readFile","dataUrl","isDisposed","start","end","textOrRange","exactMatch","searcher","getContentSearcherOfCursor","getRangeFromText","backupRange","endOffset","startOffset","angle","transform","alignment","isATable","elementAtCursor","isWholeTableSelected","VTable","marginLeft","marginRight","alignTable","findClosestElementAncestor","startNode","getStartNode","vList","createVListFromRegion","setAlignment","alignList","align","command","elements","textAlign","alignText","isInnerNode","setColor","direction","fontName","setHeadingLevel","wrapped","heading","div","moveChildNodes","replaceNode","blockElement","cssStyleCallbacks","collapseToSingleElement","toggleHeader","outdent","quote","isFirstItem","items","getNode","getListItemIndex","getStart","shouldHandleWithBlockquotes","indentation","handler","quotesHandled","blockGroups","isTabKeyTextFeaturesEnabled","block","rootList","setIndentation","writeBack","group","separator","startNumber","DEFAULT_STYLER","borderLeft","borderColor","paddingLeft","styler","listStyle","apiNameOverride","CODE_TAG","SELECTOR","PRE_TAG","code","pre","experimentCommitListChains","meta","getTableCellMetadata","saveTableCellMetadata","bgColorOverride","isUndefined","operation","td","vtable","saveTableSelection","edit","transformToDarkColor","row","col","currentRow","currentCol","newRow","newCol","calculateCellToSelect","newTd","getCell","format","getTableCellWidth","columns","cellSpacing","cellPadding","tr","appendChild","j","width","verticalAlign","runAsync","callback","apiName","safeCallback","isContentEditable","areAllCollapsed","firstChild","triggerPluginEvent","formatState","formatCallback","firstNode","lastNode","contentTraverser","nextInlineElement","applyStyle","styleName","parentNodes","setListItemStyle","applyStyleToListItems","beforeRunCallback","wrapFunction","NodeTag","some","isEmptyBlockUnderTR","getEndNode","forEachCallback","commitListChains","getEnd","chain","commit","formatter","formatName","PendableFormatCommandMap","filter","needToSwitchSelection","formatApiName","isNodeRTL","el","marginInlineStart","marginInlineEnd","parentElement","listType","includeSiblingLists","orderedStyle","unorderedStyle","canAppendAtCursor","equalTo","createVListAtBlock","changeListType","setListStyleType","addUndoSnapshotInternal","core","canUndoByBackspace","entityStates","lifecycle","shadowEditFragment","rangeEx","api","metadata","root","tableId","id","imageId","getSelectionPath","createContentMetadata","contentDiv","undo","snapshotsService","addSnapshot","html","innerHTML","knownColors","darkColorHandler","getKnownColorsCopy","hasNewContent","changeSource","additionalData","data","undoState","isNested","getEntityState","eventType","source","triggerEvent","autoCompletePosition","attachDomEvent","eventMap","disposers","handlerObj","pluginEventType","beforeDispatch","eventName","onEvent","rawEvent","addEventListener","removeEventListener","coreApiMap","createPasteFragment","ensureTypeInContainer","getContent","hasFocus","restoreUndoSnapshot","selectRange","setContent","switchShadowEdit","transformColor","selectTable","selectImage","clipboardData","pasteAsText","applyCurrentStyle","pasteAsImage","pasteType","options","createDefaultHtmlSanitizerOptions","fragment","ownerDocument","createDocumentFragment","sanitizingOption","htmlBefore","htmlAfter","htmlAttributes","createBeforePasteEvent","getPasteType","rawHtml","text","imageDataUri","doc","DOMParser","parseFromString","trustedHTMLHandler","retrieveMetadataFromClipboard","handleImagePaste","body","pendableFormat","styleBasedFormat","isBold","isItalic","isUnderline","getCurrentFormat","applyTextStyle","handleTextPaste","sanitizePasteContent","createFragmentFromClipboardData","keyboardEvent","formatNode","isNodeEmpty","brEl","append","shouldSetNodeStyles","innerText","wasNodeJustCreatedByKeyboardEvent","createRange","domEvent","selectionRange","mode","clonedNode","content","triggerExtractContentEvent","includeSelectionMarker","getTextContent","clonedRoot","cloneNode","originalRange","shadowEditSelectionPath","getHtmlWithSelectionPath","forceGetStateFromDOM","cachedPendableFormatState","pendingFormatState","pendableFormatState","cachedPosition","pendableFormatPosition","currentPosition","isSamePosition","pendableKeys","PendableStyleCheckers","CssFalsyCheckers","queryCommandStateFromDOM","textDecoration","fontStyle","isSubscript","isSuperscript","isStrikeThrough","tryGetFromCache","defaultView","getSelection","rangeCount","getRangeAt","createNormalSelectionEx","checkAllCollapsed","shadowEditTableSelectionPath","shadowEditImageSelectionPath","shadowRange","tableSelectionRange","imageSelectionRange","override","pendableFormatSpan","styleTextColor","styleBackColor","getComputedStyles","getPropertyValue","parseColorValue","backColor","lightModeColor","darkModeColor","marginTop","marginBottom","activeElement","option","isBegin","getFirstLastBlockElement","refNode","insertedNode","rangeToRestore","cloneRange","getInitialRange","deleteContents","getRegionsFromRange","isAtEnd","splitTextNode","offset","splitParentNode","adjustInsertPositionRegionRoot","tempPos","adjustInsertPositionNewLine","adjustInsertPosition","nodeForCursor","lastChild","step","snapshot","move","isRestoring","registerColor","entityState","state","arg1","arg2","arg3","arg4","isSelectionRangeEx","isNodePosition","selectionRangeEx","STYLE_ID","unselect","removeImportantStyleRule","borderCSS","buildBorderCSS","setGlobalCssStyles","imageSelectionBorderColor","removeGlobalCssStyle","skipSameRange","addRangeToSelection","restorePendingFormatState","input","coordinate","isValidCoordinate","areValidCoordinates","contentDivSelector","selectors","vTable","isAllTableSelected","tableSelector","tableRange","Range","selectNode","handleAllTableSelected","tr1","td1","tr2","td2","firstSelected","lastSelected","tableChildren","cont","indexes","rowIndex","tdCount","midElement","ind","middleElSelector","cellIndex","removeImportant","selector","generateCssFromCell","elementsSelector","rowRange","setStartBefore","setEndAfter","handleTableSelected","cssRules","currentRules","shift","buildCss","css","item","isMergedCell","cellToSelect","cellTag","index","contentChanged","newContent","entities","entityMap","restoreContentWithEntityPlaceholder","metadataFromContent","extractContentMetadata","selectContentMetadata","isOn","shadowEditEntities","wasInShadowEdit","getShadowEditSelectionPath","selectionType","shadowEditSelection","moveContentWithEntityPlaceholders","selectionPath","tableElement","iterateElements","transformer","includeSelf","isHTMLElement","child","htmlElement","Node","ELEMENT_NODE","forceTransform","fromDarkMode","onExternalContentTransform","toDarkMode","transformElementColor","allowedEventsInShadowEdit","pluginEvent","broadcast","plugins","plugin","onPluginEvent","willHandleEventExclusively","handledExclusively","applyId","idPrefix","getElement","getElementById","querySelectorAll","disposer","onPaste","extractClipboardEvent","paste","allowedCustomPasteType","getTempDiv","removeTempDiv","cleanUpAndRestoreSelection","getName","initialize","addDomEventHandler","e","copy","onCutCopy","cut","dispose","getState","isCut","setHtmlWithMetadata","getTrustedHTMLHandler","newRange","createTableRange","deleteTableContent","deleteImage","deleteSelectedContent","forceInLightMode","getCustomData","tempDiv","removeChild","isCopy","restoreRange","Browser","isAndroid","collapse","clonedVTable","removeCellsOutsideSelection","selectedVTable","forEachSelectedCell","wholeTableSelected","isWholeColumnSelected","onDragStart","dragEvent","preventDefault","onDrop","onFocus","onKeyDownDocument","which","defaultPrevented","cacheSelection","onMouseDownDocument","onScroll","scrollContainer","onKeyboardEvent","isCharacterValue","stopPropagation","onInputEvent","onContextMenuEvent","allItems","elementBeforeCursor","getInlineElementBefore","eventTargetNode","button","contextMenuProviders","provider","getContextMenuItems","arrayPush","isInIME","stopPrintableKeyboardEventPropagation","allowKeyboardEventPropagation","isContextMenuProvider","eventHandlers","keypress","getEventHandler","keydown","keyup","mousedown","contextmenu","compositionstart","compositionend","dragstart","drop","isIE","isSafari","isIEOrEdge","beforedeactivate","blur","features","hasFunctionKey","ctrlOrMeta","isKeyDownEvent","isCtrlOrMetaPressed","altKey","feature","allowFunctionKeys","shouldHandleEvent","handleEvent","handledByEditFeature","ENTITY_ID_REGEX","ALLOWED_CSS_CLASSES","REMOVE_ENTITY_OPERATIONS","handleCutEvent","checkRemoveEntityForRange","handleMouseUpEvent","handleKeyDownEvent","handleBeforePasteEvent","handleContentChangedEvent","handleExtractContentWithDomEvent","handleContextMenuEvent","handleEntityOperationEvent","inlineEntityOnPluginEvent","entityElement","isClicking","workaroundSelectionIssueForIE","additionalAllowedCssClasses","shouldNormalizeDelimiters","isDeleted","getExistingEntities","ensureUniqueId","handleNewEntity","normalizeDelimitersInEditor","editableEntityElements","isFullyCovered","newItem","shouldPersist","canPersist","exec","baseId","substr","newId","workaroundButton","onblur","mouseTarget","mouseSelection","keyDownSelection","contextMenuTarget","actualSelection","CONTENT_EDITABLE_ATTRIBUTE_NAME","COMMANDS","isFirefox","DARK_MODE_DEFAULT_FORMAT","initializer","initialContent","contentEditable","userSelect","webkitUserSelect","adjustColor","doNotAdjustEditorColor","getDarkColor","customData","inDarkMode","experimentalFeatures","adjustBrowserBehavior","mouseUpEventListerAdded","mouseDownX","mouseDownY","onMouseUp","removeMouseUpEventListener","pageX","pageY","normalizeTables","normalizeTableFromEvent","shiftKey","li","prevElement","changeElementTag","tables","isChanged","isDOMChanged","tbody","colgroups","thead","colgroup","clear","getCurrentPosition","createPendingFormatSpan","span","currentStyle","createTextNode","setProperty","isRangeEmpty","styledAncestor","focusedPosition","getFocusedPosition","isMobileOrTablet","setTimeout","snapshots","service","lastKeyPress","undoMetadataSnapshotService","undoSnapshotService","canMove","isAutoCompleteSnapshot","clearRedo","canUndoAutoComplete","createSnapshots","canMoveCurrentSnapshot","moveCurrentSnapshot","addSnapshotV2","clearProceedingSnapshotsV2","ctrlKey","canUndo","canRedo","onKeyDown","onKeyPress","clearRedoForInput","onContentChanged","onBeforeKeyboardEditing","evt","metaKey","corePluginOverride","typeInContainer","_placeholder","typeAfterLink","mouseUp","copyPaste","imageSelection","normalizeTable","corePlugins","DELIMITER_SELECTOR","ZERO_WIDTH_SPACE","INLINE_ENTITY_SELECTOR","preventTypeInDelimiter","delimiter","textNode","nodeValue","className","setPosition","getDelimiterFromElement","sibling","classList","previousElementSibling","removeNode","removeDelimiterAttr","addDelimitersIfNeeded","isEntityElement","checkEntity","entitySibling","remove","cn","isAfter","getBlock","blockToCheck","delimiters","matchesSelector","handleCollapsedEnter","startElement","endElement","startUpdate","getPosition","endUpdate","aEditor","handleSelectionNotCollapsed","container","_","ColorAttributeEnum","VARIABLE_REGEX","ColorAttributeName","values","colorKey","parsedColor","reset","isInDarkMode","startsWith","findLightColorFromDarkColor","darkColor","rgbSearch","parseColor","find","rgbCurrent","names","createEditorCore","Editor","EditorBase","coreCreator","getCore","existingNode","toNode","transformColorForDarkMode","replaceChild","scopeOrCallback","scope","selectionEx","collapseNodes","canSplitParent","isEmpty","insertContent","allNodes","applyCurrentFormat","snapshotBeforePaste","sel","focusNode","focusOffset","startFrom","cacheGetEventData","isPositionAtBeginning","isPositionAtBeginningOf","nameOrMap","eventsToMap","redo","getScrollContainer","getter","getBodyTraverser","ContentTraverser","createBodyTraverser","createSelectionTraverser","getBlockTraverser","createBlockTraverser","PositionContentSearcher","win","window","handle","requestAnimationFrame","cancelAnimationFrame","setEditorDomAttribute","getEditorDomAttribute","getRelativeDistanceToEditor","addScroll","editorRect","getBoundingClientRect","elementRect","left","top","scrollLeft","scrollTop","addContentEditFeature","removeContentEditFeature","featureSet","setDarkModeState","nextDarkMode","startShadowEdit","stopShadowEdit","isInShadowEdit","getSizeTransformer","sizeTransformer","setZoomScale","scale","oldValue","oldZoomScale","newZoomScale","getVisibleViewport","pluginState","getPluginState","getIntersectedRect","coreApiOverride","originalApi","size","STRUCTURE_NODE_TAGS","endNode","getBlockContext","nodeContext","StartEndBlockElement","blockContext","newNode","findHeadTailLeafNode","containerBlockNode","isTail","headNode","tailNode","isFirst","rangeBeforePaste","dataTransfer","then","CLIPBOARD_HTML_HEADER_REGEX","OTHER_TEXT_TYPE","EDGE_LINK_PREVIEW","ContentHandlers","isEdge","headerValues","workaroundForEdge","customValues","linkPreview","parse","pasteNativeEvent","types","files","Promise","all","kind","resolve","file","getAsFile","textType","getAllowedCustomType","getAsString","getData","nextStep","img","maxWidth","transformTabCharacters","initialOffset","tIndex","line","lineBefore","lineAfter","tabCount","fill","lines","includes","processStyles","reduce","attrs","htmlFirstLevelChildTags","TEXT_NODE","nodeTag","COMMENT_NODE","head","additionalGlobalStyleNodes","startIndex","endIndex","lastIndexOf","START_FRAGMENT","END_FRAGMENT","convertGlobalCssToInlineCss","getStartBlockElement","getStartInlineElement","getFirstInlineElement","isBlockInScope","trimInlineElement","scoper","skipTags","currentBlock","getPreviousNextBlockElement","getPreviousBlockElement","isNext","leaf","getLeafSibling","newBlock","getPreviousNextInlineElement","getPreviousInlineElement","newInline","getInlineElementBeforeAfter","getStartPosition","getParentBlock","previousInlineElement","getNextPreviousInlineElement","WHITESPACE_REGEX","word","inlineBefore","inlineAfter","traversingComplete","inlineElements","nearestNonTextInlineElement","getWordBefore","traverse","getInlineElementAfter","getSubStringBefore","startPosition","endPosition","textIndex","forEachTextInlineElement","textInline","nodeContent","nodeIndex","charCodeAt","getNearestNonTextInlineElement","previousInline","isTextualInlineElement","matches","blockNode","getLastInlineElement","getFirstLastInlineElementFromBlockElement","startInline","startBlock","inScope","selStartBlock","selEndBlock","inline","getEndPosition","startPartial","endPartial","addDelimiterAfter","insertDelimiter","addDelimiterBefore","isDelimiter","delimiterClass","children","insertPosition","insertAdjacentElement","entityWrapper","delimiterAfter","delimiterBefore","NOT_EDITABLE_SELECTOR","adjustSteps","nodeToInsert","safeRemove","normalizedPosition","nextNode","splitter","rootNodeToInsert","isFragment","rootNodes","hasBrNextToRoot","listItem","listNode","tdNode","shouldInsertListAsText","inlineElementBefore","inlineElementAfter","adjustInsertPositionForNotEditableNode","nonEditableElement","lastNonEditableElement","posBefore","rangeToTraverse","nextBlockElement","tempRange","ensureBeforeAndAfter","isStart","nodeBefore","nodeAfter","emptyNode","nodesToDelete","nodesPairToMerge","regionRange","commonAncestorContainer","beforeEnd","afterEnd","beforeStart","afterStart","CONTENT_EDITABLE","removeUntil","nodeToStop","nodeToRemove","tryGetWrapperFromEntityPlaceholder","getPlaceholder","placeholder","entitySelector","next","nodeToAppend","insertClonedNode","isEntity","eventDataCache","isCtrlOrMetaPressedImpl","isMac","isCtrlKey","isAltKey","isMetaKey","elementCallbacks","cloneObject","styleCallbacks","getStyleCallbacks","attributeCallbacks","tagReplacements","getTagReplacement","additionalTagReplacements","allowedAttributes","getAllowedAttributes","additionalAllowedAttributes","allowedCssClassesRegex","getAllowedCssClassesRegex","defaultStyleValues","getDefaultStyleValues","additionalDefaultStyleValues","additionalPredefinedCssForElement","preserveHtmlComments","unknownTagReplacement","convertInlineCss","additionalStyleNodes","sanitizeHtml","currentStyles","currentElementOrStyle","convertCssOnly","processNode","styleNodes","styleSheets","reverse","sheet","styleSheet","styleRule","cssText","CSSRule","STYLE_RULE","selectorText","context","isElement","isText","isComment","shouldKeep","replacement","test","whiteSpace","thisStyle","processAttributes","preprocessCss","processCss","predefinedStyles","isInheritable","keep","isCssVariable","processCssVariable","newValue","processCssClass","originalValue","calculatedValue","originalClasses","calculatedClasses","newCallback","cloneObjectImpl","assign","existingObj","HTML_TAG_REPLACEMENT","abbr","address","area","article","aside","bdi","bdo","blockquote","canvas","caption","center","cite","datalist","dd","del","details","dfn","dialog","dir","dl","dt","em","fieldset","figcaption","figure","font","footer","h1","h2","h3","h4","h5","h6","header","hgroup","ins","kbd","label","legend","main","mark","menu","menuitem","meter","nav","ol","optgroup","output","picture","progress","rp","rt","ruby","samp","section","small","strike","strong","sub","summary","sup","textarea","tfoot","th","time","tt","u","ul","var","wbr","xmp","form","applet","audio","base","basefont","embed","frame","frameset","iframe","noscript","param","script","slot","template","track","video","ALLOWED_HTML_ATTRIBUTES","DEFAULT_STYLE_VALUES","overflow","padding","border","float","removeValue","removeWidthForLiAndDiv","tagName","additionalReplacements","replacements","additionalAttributes","additionalCssClasses","patterns","additionalDefaultStyles","callbacks","INHERITABLE_PROPERTIES","PREDEFINED_CSS_FOR_ELEMENT","B","EM","I","U","P","PRE","S","STRIKE","SUB","SUP","getBrowserInfo","getPreviousLeafSibling","getLastLeafNode","KnownCreateElementData","moveCurrentSnapsnot","createEntityPlaceholder","createNumberDefinition","createBooleanDefinition","createStringDefinition","createArrayDefinition","createObjectDefinition","getMetadata","setMetadata","removeMetadata","parentBlock","containerNode","getDecoratedInline","thisStart","otherEnd","previousNode","STYLET_AGS","callStylerWithInnerNode","formatNodes","fromPosition","toPosition","parentTag","newNodeValue","startingNode","nodeChain","resolveInlineElement","mainArray","itemsArray","apply","collection","moveChildNodesToLi","moveLiToList","populateItems","getLastItemNumber","getListType","getLevel","isDummy","shouldReuseAllAncestorListElements","disableListChain","lastList","listStack","newListStart","getNewListStart","topList","applyListStyle","setNewListStart","softOutdent","preventItemRemoval","shouldAddMargin","findListItems","setIsDummy","indent","addNegativeMargins","flexDirection","alignSelf","targetType","needChangeType","styleMetadata","orderedStyleType","getValidValue","unorderedStyleType","createListStyleMetadata","ListStyleDefinitionMetadata","appendItem","mergeVList","list","listIndex","listStartPos","listEndPos","listTypes","newListTypes","isListElement","currentItem","furtherNodes","CHAIN_DATASET_NAME","AFTER_CURSOR_DATASET_NAME","lastChainIndex","lastNumber","lastNumberBeforeCursor","nameGenerator","canAppendToTail","createListChainName","afterCurrentNode","applyChainName","lists","getLists","vlist","dataset","isAfterCurrentNode","orderListStyles","unorderedListStyles","NEGATIVE_MARGIN","stylesToInherit","attrsToInherit","dummy","isOrphanItem","canMerge","mergeItems","wrapIfNotBlockNode","margin","expectedLength","isFirstLevel","originalRoot","nextLevel","listStackEndIndex","stackLength","newList","createListElement","getDeepChildIndex","listStyleType","isLi","stylesToApply","attrValue","deepIndex","newRoot","checkFirst","checkLast","ALPHABET","decimal","isLowerCase","RomanValues","M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","romanValue","timesRomanCharAppear","repeat","ListSelector","tryIncludeSiblingNode","fullSelectionStart","fullSelectionEnd","nodeForItem","createVListFromItemNode","getListTypeFromNode","ancestor","marker","bulletListStyle","isDisc","isCssStyle","elementsStyles","styleValue","getInlineChildElementsStyle","styleValues","Set","MarkerTypes","numberingListStyle","markerSeparator","markerSecondSeparator","markerType","lowerCase","markerNumber","Roman","Alpha","Decimal","isOptional","minValue","maxValue","allowNull","itemDef","minLength","maxLength","propertyDef","MetadataDataSetName","definition","defaultValue","def","metadataKey","currentMetadata","validate","n1","n2","abs","validator","GOOGLE_SHEET_NODE_NAME","PROG_ID_NAME","EXCEL_DESKTOP_ATTRIBUTE_NAME","WAC_IDENTIFY_SELECTOR","props","getSourceFunctions","Map","shouldConvertSingleImage","func","nodesOrBlockElements","regionTypeData","outerSelector","innerSelector","getRegionCreator","fullRange","firstNodeOfRegion","lastNodeOfRegion","firstNodeValid","lastNodeValid","bothValid","areNodesValid","iterateNodes","creator","boundary","started","innerNode","ended","outerNode","boundaries","previousOuterNode","newRegions","boundaryTree","allBoundaries","inSelectionOuterNode","thisInnerNode","thisOuterNode","buildBoundaryTree","regionBase","createBlockIfEmpty","deprecated","isRegion","regionStart","regionEnd","compareDocumentPosition","targetNode","blockRoot","commonContainer","nodeToMerge","nodeOrPosition","offsetOrPosType","isFromEndOfRange","getIndexOfNode","getEndOffset","newOffset","needAddRange","removeAllRanges","addRange","getFocusablePosition","getPositionFromPath","setStart","setEnd","rect","rects","getClientRects","getPositionPath","isPreviousText","areAllPreviousNodesEmpty","NumberArrayDefinition","CoordinatesDefinition","IsDarkModeDefinition","NormalContentMetadataDefinition","TableContentMetadataDefinition","ImageContentMetadataDefinition","potentialMetadataComment","getLength","compare","defaultCompare","currentSnapshot","currentIndex","isSameSnapshot","totalSize","removeCount","maxSize","autoCompleteIndex","compareSnapshots","s1","s2","newIndex","clearProceedingSnapshots","removedSize","pair","valueIndex","styleId","styleTag","styleProperties","modifiedStyles","cssRule","insertRule","trimmedName","trimmedValue","DEFAULT_FORMAT","topBorderColor","bottomBorderColor","verticalBorderColor","hasHeaderRow","hasFirstColumn","hasBandedRows","hasBandedColumns","bgColorEven","bgColorOdd","headerRowColor","tableBorderFormat","keepCellShade","normalizeSize","formatInfo","trs","tableSelection","getTableFromTd","sourceCol","targetCol","colSpan","rowSpan","hasTd","spanLeft","spanAbove","height","skipApplyFormat","recalculateSpans","recalculateCellHeight","saveTableInfo","isEmptyCell","deleteCellShadeDataset","currentCell","firstRow","lastRow","firstColumn","lastColumn","cloneCell","countSpanAbove","colIndex","nextCell","newCell","getTd","forEachCellOfCurrentColumn","countSpanLeft","forEachCellOfColumn","forEachCellOfRow","removedRows","removedColumns","rowStep","aboveCell","belowCell","mergeCells","colStep","leftCell","rightCell","nextCellBelow","nextCellRight","splitRow","setAlignmentToSelectedCells","alignmentType","isVertical","vAlignOverride","horizontally","checkSpans","mergeCellContents","childElementCount","cellTd","nextCellTd","getCellsWithBorder","borderPos","getLeftCells","cellRect","found","right","forEachCellOfCurrentRow","getCurrentTd","normalizeEmptyTableCells","normalizeTableCellSize","setHTMLElementSizeInPx","newWidth","newHeight","boxSizing","TRANSPARENT","hasCellShade","getBorderStyle","borderCollapse","isFirstRow","isLastRow","isFirstColumn","isLastColumn","borderTop","borderRight","borderBottom","setBorderColors","borderLeftColor","borderRightColor","borderTopColor","borderBottomColor","formatBorders","setBordersType","shouldColorWholeTable","hasValign","setCellFormat","setFirstColumnFormat","setHeaderRowFormat","styledCell","rowsLength","rowCells","firstX","firstY","lastX","lastY","currentTd","newTable","currentTable","cursorRow","cursorCol","BooleanDefinition","TableCellFormatMetadata","NullStringDefinition","TableFormatMetadata","isAndroidRegex","userAgent","appVersion","vendor","userAgentOrVendor","isIE11OrGreater","isChrome","isWebKit","isWin","navigator","elementStyle","newTag","origianlTag","newElement","ref","contained","treatSameNodeAsContain","internalContains","contenteditable","elementData","namespace","createElementNS","datasetName","attrName","childElement","closest","styleNames","px","tempNode","additionalRects","bottom","getLeafNode","getChild","ignoreSpace","getSibling","curNode","shouldContinue","queryCommandState","BLOCK_ELEMENT_TAGS","BLOCK_DISPLAY_STYLES","node1","node2","VISIBLE_ELEMENT_TAGS","VISIBLE_CHILD_ELEMENT_SELECTOR","trimContent","shouldCountBrAsVisible","visibleSelector","HTML_VOID_ELEMENTS","httpExcludeRegEx","labelRegEx","domainPortWithUrlRegEx","domainPortRegEx","linkMatchRules","http","except","normalizeUrl","https","mailto","notes","unc","ftp","news","telnet","gopher","wais","schema","rule","scheme","msMatchesSelector","keepExistingChildren","clientRect","HEX3_REGEX","HEX6_REGEX","RGB_REGEX","RGBA_REGEX","checkPosition","targets","nodeContainedByRangeOnly","targetPositions","FileReader","onload","onerror","readAsDataURL","getTargetWindow","typeName","targetWindow","mainWindow","mainWindowType","ColorTones","WHITE","isBackgroundColor","shouldAdaptTheFontColor","modeIndependentColor","cssName","colorValue","lightModeBackgroundColor","colorValues","calculateLightness","isADarkOrBrightColor","adaptFontColorToBackgroundColor","CRLF","CRLF_SPACE","shouldSkipNode","splitBefore","newParent","temp","returnFirstPart","firstPart","secondPart","MOUSE_EVENT_INFO_DESKTOP","MOUSEDOWN","MOUSEMOVE","MOUSEUP","getPageXY","MOUSE_EVENT_INFO_MOBILE","targetTouches","touch","trigger","onSubmit","forceMobile","initX","initY","initValue","onMouseDown","addDocumentEvents","dndMouse","onMouseMove","deltaX","deltaY","onDragging","removeDocumentEvents","onDragEnd","specialCharacters","lastKeyTyped","keyTyped","textBeforeCursor","dashes","isPrecededByADash","isPrecededByASpace","settingsOverride","additionalFeatures","allFeatures","hasSettingForKey","defaultDisabled","disposeFeatures","TRAILING_PUNCTUATION_REGEX","AutoLink","cacheGetLinkData","replaceWithNode","clearEventDataCache","UnlinkWhenBackspaceAfterLink","contentSearcher","LinkInlineElement","removeLink","trailingPunctuation","AutoLinkFeatures","autoLink","unlinkWhenBackspaceAfterLink","RemoveCodeWhenEnterOnEmptyLine","childOfCode","cacheGetCodeChild","splitCode","RemoveCodeWhenBackspaceOnEmptyFirstLine","codeElement","currentContainer","codeChild","codeParent","preParent","CodeFeatures","removeCodeWhenEnterOnEmptyLine","removeCodeWhenBackspaceOnEmptyFirstLine","NoCycleCursorMove","rtl","CursorFeatures","noCycleCursorMove","ClickOnEntityFeature","cacheGetReadonlyEntityElement","EscapeFromEntityFeature","EnterBeforeReadonlyEntityFeature","cacheGetNeighborEntityElement","newContainer","BackspaceAfterEntityFeature","DeleteBeforeEntityFeature","collapseOnly","regionRoot","entityNode","triggerOperation","MoveBetweenDelimitersFeature","getIsDelimiterAtCursor","checkBefore","cacheGetCheckBefore","cacheDelimiter","getRelatedElements","delimiterPair","positionType","extend","RemoveEntityBetweenDelimitersFeature","cacheEntityBetweenDelimiter","focusedElement","class","pairClass","isAtEndOrBeginning","getNextSibling","elAtCursor","shouldHandle","removeDelimiters","getElementFromInline","EntityFeatures","clickOnEntity","escapeFromEntity","enterBeforeReadonlyEntity","backspaceAfterEntity","deleteBeforeEntity","moveBetweenDelimitersFeature","removeEntityBetweenDelimiters","PREVIOUS_BLOCK_CACHE_KEY","NEXT_BLOCK_CACHE_KEY","shouldHandleIndentationEvent","indenting","keyCode","cacheGetListElement","handleIndentationEvent","currentElement","isRTL","IndentWhenTab","OutdentWhenShiftTab","IndentWhenAltShiftRight","OutdentWhenAltShiftLeft","MergeInNewLine","blockFormat","toggleListAndPreventDefault","OutdentWhenBackOn1stEmptyLine","getElementsByTagName","MaintainListChainWhenDelete","getCacheNextSibling","getListChains","OutdentWhenEnterOnEmptyLine","isAListPattern","AutoBullet","textRange","prepareAutoBullet","toggleBullet","toggleNumbering","AutoBulletList","shouldTriggerList","AutoNumberingList","number","isFirstItemOfAList","getPreviousListItem","getPreviousListType","letter","MaintainListChain","listInfo","listElement","toggleListType","getListStyle","isATheBeginning","listChains","previousListType","shouldTriggerNewListStyle","MergeListOnBackspaceAfterList","cursorBlock","isList","nearestInline","tempBlock","nextElement","previousList","targetBlock","rangeBeforeWriteBack","fvList","VList","ListFeatures","autoBullet","indentWhenTab","outdentWhenShiftTab","outdentWhenBackspaceOnEmptyFirstLine","outdentWhenEnterOnEmptyLine","mergeInNewLineWhenBackspaceOnFirstChar","maintainListChain","maintainListChainWhenDelete","autoNumberingList","autoBulletList","mergeListOnBackspaceAfterList","outdentWhenAltShiftLeft","indentWhenAltShiftRight","generateBasicMarkdownFeature","triggerCharacter","elementTag","useShiftKey","cacheGetRangeForMarkdownOperation","lastTypedTriggerPosition","hasLastTypedTrigger","textContentRange","extractContents","elementToWrap","nonPrintedSpaceTextNode","handleMarkdownEvent","textInlineElement","inlineTextContent","parentBlockText","contentIndex","MarkdownBold","MarkdownItalic","MarkdownStrikethrough","MarkdownInlineCode","MarkdownFeatures","markdownBold","markdownItalic","markdownStrikethru","markdownInlineCode","QUOTE_TAG","STRUCTURED_TAGS","UnquoteWhenBackOnEmpty1stLine","childOfQuote","cacheGetQuoteChild","splitQuote","UnquoteWhenEnterOnEmptyLine","shouldClearFormat","isStyledBlockquote","QuoteFeatures","unquoteWhenBackspaceOnEmptyFirstLine","unquoteWhenEnterOnEmptyLine","createCommand","winKey","macKey","action","disabled","commands","toggleBold","toggleItalic","toggleUnderline","changeFontSize","DefaultShortcut","cacheGetCommand","getModifierState","cmd","ShortcutFeatures","defaultShortcut","CHILD_PARENT_TAG_MAP","TD","TH","LI","CHILD_SELECTOR","InsertLineBeforeStructuredNodeFeature","cacheGetStructuredElement","StructuredNodeFeatures","insertLineBeforeStructuredNodeFeature","TabInTable","cacheGetTableCell","cacheIsWholeTableSelected","cacheVTable","tableCells","editTable","newPos","IndentTableOnTab","UpDownInTable","isUp","hasShiftKey","targetTd","setBaseAndExtent","DeleteTableWithBackspace","firstTd","TableFeatures","tabInTable","upDownInTable","indentTableOnTab","deleteTableWithBackspace","IndentWhenTabText","listOrTable","insertTab","shouldSetIndentation","OutdentWhenTabText","firstBlock","lastBlock","blockStart","blockEnd","rangeBefore","rangeAfter","numberOfChars","MAX_SAFE_INTEGER","span2","TextFeatures","indentWhenTabText","outdentWhenTabText","autoHyphen","bulletListType","NumberingTypes","Character","characters","lowerRomanTypes","upperRomanTypes","numberingTriggers","lowerRomanNumbers","upperRomanNumbers","numberingListTypes","DecimalsTypes","LowerAlphaTypes","UpperAlphaTypes","LowerRomanTypes","UpperRomanTypes","previousListChain","previousListStyle","isDoubleParenthesis","indexNumber","isValidNumbering","numbering","separatorCharacter","numberingType","identifyNumberingType","identifyNumberingListType","isMenuShowing","onDismiss","dismiss","allowDefaultMenu","initContainer","render","makeReplacement","sourceString","replacementHTML","matchSourceCaseSensitive","shouldReplace","defaultReplacements","longestReplacementLength","replacementEndCharacters","updateReplacements","newReplacements","endChars","lastChar","add","getReplacementEndCharacters","has","stringToSearch","getMatchingReplacement","matchingText","matchingRange","parsingSpan","originalStringToSearch","lowerCaseStringToSearch","sourceMatch","replacementMatch","expectedChangeSource","cacheListChains","selectedRegions","getTooltipCallback","onLinkClick","originalHref","trackedLink","onMouse","tryGetHref","onBlur","updateLinkHrefIfShouldUpdate","resetLinkTracking","mouseover","mouseout","isContentEditValue","shouldCheckUpdateLink","doesLinkDisplayMatchHref","srcElement","open","updateLinkHref","escapedDisplay","DIRECTIONS","DirectionRad","DirectionOrder","DefaultOptions","minWidth","minHeight","preserveRatio","minRotateDeg","imageSelector","rotateIconHTML","disableCrop","disableRotate","disableSideResize","onSelectState","ImageEditHTMLMap","getCornerResizeHTML","getSideResizeHTML","getRotateHTML","getCropHTML","onShowResizeHandle","clonedImage","editInfo","lastSrc","dndHelpers","wasResized","shadowSpan","isCropping","pngSource","setEditingImage","removeWrapper","updateWrapper","cropContainers","getEditElements","cropOverlays","resizeHandles","rotateCenter","rotateHandle","cropHandles","angleRad","bottomPercent","leftPercent","rightPercent","topPercent","flippedHorizontal","flippedVertical","targetWidth","targetHeight","originalWidth","originalHeight","visibleWidth","visibleHeight","marginHorizontal","marginVertical","cropLeftPx","cropRightPx","cropTopPx","cropBottomPx","borderStyle","borderWidth","getPx","setWrapperSizeDimensions","flippedHorizontally","flippedVertically","setFlipped","setSize","updateHandleCursor","elementClass","clientWidth","clientHeight","doubleCheckResize","viewport","isSmall","isASmallImage","updateRotateHandleState","handles","isSideHandle","updateSideHandlesVisibility","allowedOperations","clearDndHelpers","deleteEditInfo","isOperationAllowed","operationOrSelect","getEditInfoFromImage","tryToConvertGifToPng","isFixedNumberValue","checkIfImageWasResized","createWrapper","createDndHelpers","Resizer","Rotator","Cropper","flipImage","rotateImage","widthPx","heightPx","rotateHandleBackColor","isSmallImage","getResizeBordersHTML","thisOperation","insertImageWrapper","shadowRoot","attachShadow","dragAndDrop","helper","cursor","radIndex","idx","handleRadIndexCalculator","originalDirection","originalIndex","rotatedIndex","rotateHandles","numberValue","MIN_HEIGHT_WIDTH","getContext","drawImage","getImageData","percentage","RESIZE_HANDLE_SIZE","RESIZE_HANDLE_MARGIN","ROTATE_SIZE","ROTATE_GAP","DEG_PER_RAD","DEFAULT_ROTATE_HANDLE_HEIGHT","ROTATE_ICON_MARGIN","ROTATION","sw","nw","ne","se","Xs","Ys","ROTATE_WIDTH","ROTATE_HANDLE_TOP","CROP_HANDLE_SIZE","CROP_HANDLE_WIDTH","XS_CROP","YS_CROP","previousSrc","wasResizedOrCropped","editingImage","newSrc","initEditInfo","originalSrc","saveEditInfo","ImageEditInfoState","ROTATE_KEYS","CROP_KEYS","ROTATE_CROP_KEYS","ALL_KEYS","areSameNumber","compareTo","naturalWidth","naturalHeight","getInitialEditInfo","imageWidth","imageHeight","devicePixelRatio","translate","toDataURL","beforeCrop","newEditInfo","crop","basePercentage","deltaValue","fullValue","currentPercentage","dx","dy","rotateCoordinate","widthPercent","heightPercent","fullWidth","fullHeight","newLeft","newRight","newTop","newBottom","overlayHTML","containerHTML","leftOrRight","topOrBottom","rotation","layer","getCropHandleHTMLInternal","getCropHTMLInternal","HandleTypes","hypotenuse","getResizeHandleHTML","handleTypes","setHandleStyle","horizontalOnly","verticalOnly","shouldPreserveRatio","actualWidth","actualHeight","resizeBorderColor","getRotateIconHTML","d","stroke","newX","newY","angleInRad","angleInDeg","rotateHandleRect","wrapperRect","adjustedDistance","rotateGap","rotateTop","handleLeft","selectionBorderColor","forcePreserveRatio","resizableImageSelector","showResizeHandle","hideResizeHandle","selectImageAfterUnSelect","convertSingleImageBody","getPasteSource","chainSanitizerCallback","sanitizeBlockStyles","isPureLiNode","childNode","LAST_TD_END_REGEX","LAST_TR_END_REGEX","LAST_TR_REGEX","LAST_TABLE_REGEX","excelHandler","trMatch","tableMatch","replaceChildren","processBlock","checkAndAddBr","blocksLength","insertPositionNode","listItemContainers","TABLE_TEMP_ELEMENTS_QUERY","isWordOnlineWithList","WORD_ONLINE_IDENTIFYING_SELECTOR","LIST_CONTAINER_ELEMENT_CLASS_NAME","VALID_LIST_STYLE_CHAR_CODES","createNewList","listItemContainer","startAttribute","firstElementChild","insertConvertedListToDoc","convertedListElement","listItemBlock","replaceRegex","prevParent","nextParent","sanitizeListItemContainer","listElements","curListItemBlock","curItem","lastItemInCurBlock","createListItemBlock","getListItemBlocks","itemBlock","flattenListBlock","getContainerListType","itemLevel","listRootElement","itemToInsert","curListLevel","lastElementChild","lastChildTag","insertListItem","parentContainer","getImageNodes","DeprecatedColorList","property","SUPPORTED_PROTOCOLS","URL","protocol","validateLink","listsMetadata","currentUniqueListId","listItems","currentListIdsByLevels","createLevelLists","lastProcessedItem","NODE_ID_ATTRIBUTE_NAME","getAndSetNodeId","wordCustomData","nextNodeId","dict","MSO_COMMENT_PARENT","MSO_COMMENT_REFERENCE","MSO_COMMENT_DATE","MSO_COMMENT_ANCHOR_HREF_REGEX","MSO_COMMENT_CONTINUATION","MSO_COMMENT_DONE","PERCENTAGE_REGEX","wordConverter","createWordConverter","wordConverterArgs","createWordConverterArguments","processNodesDiscovery","processNodeConvert","parsedLineHeight","UNIQUE_LIST_ID_CUSTOM_DATA","MSO_LIST_STYLE_NAME","LINE_BREAKS","getOrCreateListForNode","listMetadata","recurringGetOrCreateListAtNode","listId","getObject","uniqueListId","setObject","convertListIfNeeded","possibleList","getRealPreviousSibling","cleanupListIgnore","levels","nodesToRemove","isEmptySpan","fixWordListComments","isIgnoreNode","getListItemMetadata","listAttribute","getStyleValue","listProps","wordListId","originalNode","isFakeBullet","fakeBullet","getFakeBulletText","removeComments","endComment","getRealNextSibling","newSpan","prevSibling","isEmptyTextNode","resetCurrentLists","ll","itemMetadata","levelInfo","ignore","numberOfItems","secondFakeBullet","firstFakeBullet","nextUniqueId","clone","textIndent","numBulletsConverted","numNumberedConverted","createCustomData","BACKSPACE_CHAR_CODE","ESC_CHAR_CODE","LEFT_ARROW_CHAR_CODE","UP_ARROW_CHAR_CODE","RIGHT_ARROW_CHAR_CODE","DOWN_ARROW_CHAR_CODE","DELETE_CHAR_CODE","UNIDENTIFIED_CODE","dataProvider","pickerOptions","eventHandledOnKeyDown","blockSuggestions","isSuggesting","lastKnownRange","isPendingInputEventHandling","currentInputLength","newInputLength","onInitalize","htmlNode","getWord","setIsSuggesting","handleAutoComplete","onDispose","elementIdPrefix","isAndroidKeyboardEvent","calcInputLength","onKeyDownEvent","onAndroidInputEvent","shouldHandleKeyUpEvent","onKeyUpDomEvent","setLastKnownRange","onIsSuggestingChanged","setAriaOwns","setAriaActiveDescendant","cancelDefaultKeyDownEvent","stopImmediatePropagation","getIdValue","getNamedItem","getWordBeforeCursor","replacementNode","getRangeUntilAt","positionContentSearcher","startPos","endPos","hasMatched","isModifierKey","wordBeforeCursor","trimmedWordBeforeCursor","wordBeforeCursorWithoutTriggerChar","queryStringUpdated","setCursorPoint","rangeNode","nodeBeforeCursor","setRangeStart","nodeBeforeNodeBeforeCursor","detach","targetPoint","bufferZone","shiftHighlight","isHorizontal","getSelectedIndex","selectOption","tryRemoveNode","nodeAfterCursor","nodeId","onRemove","inputType","getInlineElementBeforeCursor","wordFromRange","wordFromCache","nodeOffset","suggestionsLabel","selectedIndex","suggestionLabelPrefix","charCode","shadowEditCoordinatesBackup","firstTable","lastTarget","firstTarget","preventKeyUp","startedSelection","targetTable","mouseMoveDisposer","DeleteTableContents","clearState","handleEnteredShadowEdit","handleLeavingShadowEdit","handleMouseDownEvent","handleKeyUpEvent","handleScrollEvent","TABLE_CELL_SELECTOR","deleteNodeContents","selectNodeContents","getCellAtCursor","newTarget","setData","shouldConvertToTableSelection","updateSelection","getCellCoordinates","getNextTD","prepareSelection","anchorNode","anchorOffset","isBeginAboveEnd","targetPosition","handleKeySelectionInsideTable","contentRange","IGNORE_KEY_UP_KEYS","selectionInsideTableMouseMove","detail","tripleClick","coord","getTableAtCursor","getOnMouseUp","isNewTDContainingFirstTable","restoreSelection","first","firstCord","lastCord","eventTarget","cellInput","indexY","indexX","r1","r2","newFirst","newLast","fixCoordinates","rowsCells","isNewTargetTableContained","isFirstTargetTableContained","firstTargetRange","onShowHelperElement","anchorContainerSelector","onMouseMoveDisposer","tableRectMap","tableEditor","onMouseOut","ev","relatedTarget","isOwnedElement","setTableEditor","buttons","ensureTableRects","editorWindow","scrollX","scrollY","invalidateTableRects","mousemove","disposeTableEditor","isEditing","currentTarget","normalizeRect","onStart","currentCells","nextCells","initialX","onDraggingHorizontal","onDraggingVertical","getHorizontalDistance","canResizeColumns","isLastCell","isShiftPressed","newWidthList","wordBreak","set","toLeft","setHorizontalPosition","CELL_RESIZER_WIDTH","setVerticalPosition","onEnd","anchorContainer","createElementData","featureHandler","TOP_OR_SIDE","onChanged","horizontalInserter","verticalInserter","horizontalResizer","verticalResizer","tableResizer","onFinishEditing","isCurrentlyEditing","onStartTableResize","onStartResize","onStartCellResize","disposeTableResizer","onInserted","onSelect","getOnMouseOut","setEditorFeatures","disposeCellResizers","disposeTableInserter","disposeTableSelector","firstCellRect","topOrSide","topOrSideBinary","tableRect","tdRect","lessThanBottom","lessThanRight","moreThanLeft","isOnLeftOrRight","isOnRightHalf","setInserterTd","tdAbove","tdAboveRect","isTdNotAboveMerged","setResizingTd","inserter","newInserter","disposeTableEditFeature","resizer","onInsert","viewPort","inserterColor","getInsertElementData","TableInsertHandler","insertTd","onMouseOutEvent","TABLE_RESIZER_LENGTH","originalRect","ratioX","ratioY","shouldResizeX","shouldResizeY","isTableBottomVisible","visibility","setDivPosition","hideResizer","visibleViewport","containerRect","onFinishDragging","isTableTopVisible","TABLE_SELECTOR_LENGTH","TableSelectorFeature","ENTITY_TYPE","watermark","customClass","showHideWatermark","watermarks","isShowing","removeWatermark","newEntity","insertEntity","spellcheck","CompatibleAlignment","CompatibleBulletListType","CompatibleCapitalization","CompatibleChangeSource","CompatibleClearFormatMode","CompatibleColorTransformDirection","CompatibleContentPosition","CompatibleContentType","CompatibleContentTypePrefix","CompatibleDarkModeDatasetNames","CompatibleDefinitionType","CompatibleDelimiterClasses","CompatibleDirection","CompatibleDocumentCommand","CompatibleDocumentPosition","CompatibleEntityClasses","CompatibleEntityOperation","CompatibleExperimentalFeatures","CompatibleFontSizeChange","CompatibleGetContentMode","CompatibleImageEditOperation","CompatibleIndentation","CompatibleKeys","CompatibleKnownCreateElementDataIndex","CompatibleKnownPasteSourceType","CompatibleListType","CompatibleNodeType","CompatibleNumberingListType","CompatiblePasteType","CompatiblePluginEventType","CompatiblePositionType","CompatibleQueryScope","CompatibleRegionType","CompatibleSelectionRangeTypes","CompatibleTableBorderFormat","CompatibleTableOperation","Alignment","BulletListType","Capitalization","ChangeSource","ClearFormatMode","ColorTransformDirection","ContentPosition","ContentType","ContentTypePrefix","DarkModeDatasetNames","DefinitionType","DelimiterClasses","Direction","DocumentCommand","DocumentPosition","EntityClasses","EntityOperation","ExperimentalFeatures","FontSizeChange","GetContentMode","ImageEditOperation","Indentation","Keys","KnownCreateElementDataIndex","KnownPasteSourceType","ListType","NodeType","NumberingListType","PasteType","PluginEventType","PositionType","QueryScope","RegionType","SelectionRangeTypes","TableBorderFormat","TableOperation","additionalPlugins","HyperLink","Paste","ContentEdit","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","String","__","create","__assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","Reflect","decorate","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","descriptor","done","access","addInitializer","init","__runInitializers","thisArg","useValue","__propKey","__setFunctionName","description","configurable","__metadata","metadataValue","__awaiter","_arguments","generator","reject","fulfilled","rejected","__generator","sent","trys","ops","verb","Symbol","iterator","op","__createBinding","o","k2","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","jl","__spreadArray","pack","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","__classPrivateFieldSet","__classPrivateFieldIn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","toStringTag","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file